跳到内容
CADCAMFUN
文档

文档

技术栈

版本和职责取自工作区清单和运行时配置。

从英文自动翻译。 查看英文原文

运行时和服务框架

根清单选择 bun@1.4.4 作为包管理器。 Bun 安装工作区并运行 bun:test,使用内置类型检查 bun check,服务 sidecar,提供 SQLite 和密码哈希 API,并编译 sidecar 二进制文件。桌面前端开发使用Vite,原生打包使用Rust和Tauri。

应用服务使用 effect@4.0.0-rc.112。在依赖于 Effect 的工作区中声明了相同的确切版本,包括 API、数据库、核心、桌面、工作流和 sidecar。根覆盖使节点平台包与该版本保持一致。 Effect 提供类型错误、模式、服务上下文、层、并发性和 HTTP API。

代码使用 v4 服务形式 Context.Service 和 HTTP 模块 effect/unstable。版本匹配的文档安装在 packages/db/node_modules/effect/ai-docs/src/。保持消费者之间的依赖升级协调。

数据库和合约

持久化用途 drizzle-orm@1.0.0-beta.22 和 bun:sqlite。数据库迁移生成使用匹配 drizzle-kit 发布。架构是 TypeScript;生成的迁移目录包含升级期间使用的 SQL 和迁移元数据。

Effect HttpApi 定义了 HTTP 契约。工作区代码生成器将该合同编译为 Promise 和 Effect 客户端输出。 Zod 还存在于 API 和 AI 依赖项中,用于需要它的集成;它不会取代 HttpApi 的边界模式。

桌面和图形

桌面使用 solid-js ^1.9.0, @solidjs/router ^0.15.0, vite ^7.0.0和 Tailwind CSS 3。工作台在相应功能需要的地方使用 Kobalte 控件、Lucide 图标、Monaco 编辑和 Chart.js。

视口使用 three ^0.180.0。核心几何体与渲染分离; three-csg-ts 和 occt-import-js 0.0.23 支持额外的桌面几何图形/导入路径。 Tauri v2 通过安装的插件提供本机 API 访问、对话框、shell 操作、日志记录、操作系统集成和更新程序集成。

人工智能运行时

@cadcamfun/ai 针脚 @nikcli-ai/sdk-next 1.428.0 和 ai 7.0.127。直接模型适配器包括 Anthropic、OpenAI、OpenAI 兼容提供程序和 AI SDK 网关。 sidecar默认选择嵌入式nikcli主机或者通过直接主机 CADCAMFUN_AI_HOST.

应用程序工具和操作模式位于提供商传输之上。更改提供者不会创建第二个操作目录。模型连接、凭证、取消和会话行为记录在 人工智能参考.

移动和文档

移动清单使用 Expo ~57.0.27, 反应 19.2.3, 反应本机 0.86.3,和世博路由器 ~57.0.25。它的自定义配套传输是一个本机模块。 NativeWind、Reanimated、Gesture Handler、SecureStore 和本地身份验证支持移动应用程序。

本网站使用Astro ^5.14.1 与 Cloudflare 适配器、MDX 和 Tailwind 集成。文档页面已预渲染; Assistant、Markdown、Studio 后备和工件路由在服务器上运行。本地 Studio API 运行在 Bun 中,因为它使用 bun:sqlite.

类型检查使用 Bun 的内置检查器, bun check,它读取每个工作区的 tsconfig.json 并报告相同的诊断 tsc。清单范围描述了允许的依赖版本;锁定文件记录安装的分辨率。

该文档网站将 Astro 5 与 Cloudflare 适配器、MDX 和 Tailwind (packages/web/package.json)。桌面 webview 通过以下方式到达本机代码 @tauri-apps/api v2.

每个环境中运行的内容

环境它运行的代码相关限制
Bun 边车效果服务器/服务,毛毛雨, bun:sqlite、提供商客户端、工作流程和历史编排。浏览器或 Cloudflare Worker 无法直接替代 Bun 的 SQLite 运行时。
桌面网页视图SolidJS 状态和交互、核心几何、Three.js、API 客户端。原生操作需要 Tauri 命令;浏览器预览提供了不同的集成环境。
Rust壳Tauri 生命周期、本机窗口/菜单/托盘、安全命令、更新程序。成功的 Vite 构建不会构建或验证本机应用程序包。
展会申请React Native 屏幕和本机配套传输。Expo Go 缺少自定义固定模块; JavaScript 导出不会生成本机安装程序。
Cloudflare 文档工作人员Markdown、助理请求和指南工件的服务器路由。它没有对本地 sidecar 或 SQLite 文件的隐式访问;绑定和后端配置是显式的。
本地工作室流程Bun HTTP 服务器并通过选定的 Drizzle 表进行直接读取访问。配置的现有数据库和帐户会话独立于桌面发现。

使用与正在测试的环境相对应的构建工件。即使一个命令协调多个阶段,前端输出、已编译的 sidecar、迁移资源、导出的移动包和签名的本机安装程序也是不同的输出。

固定版本

层技术版本(来自包清单)
包管理器/运行时Bun1.4.4 (packageManager)
服务架构Effect4.0.0-rc.112(所有工作区,具有相同版本的 platform-bun 和 opentelemetry)
数据库毛毛雨-orm / 毛毛雨套件, bun:sqlite1.0.0-测试版。22
桌面外壳Tauri2(生锈的板条箱和 @tauri-apps/* ^2)
桌面用户界面SolidJS,@solidjs/路由器,Kobalte^1.9.0, ^0.15.0, ^0.13.0
3D三.js、三-csg-ts^0.180.0, ^3.2.0
步骤导入occt-导入-js0.0.23
代码编辑器摩纳哥编辑^0.57.0
捆绑器Vite^7.0.0
人工智能ai (Vercel AI SDK)、@ai-sdk/anthropic、openai、网关、openai 兼容、@nikcli-ai/sdk-next7.0.127, 4.0.71, 4.0.83, 4.0.103, 3.0.62, 1.428.0
验证(AI 工具)佐德^4.1.8
遥测OpenTelemetry SDK + OTLP/HTTP 导出器api 1.9.1,sdk 2.12.0,导出器 0.223.0
移动的博览会,反应本机,反应~57, 0.86.3, 19.2.3
文档Astro、Tailwind、Cloudflare 适配器、wrangler^5.14.1, ^3.4.17, ^12.0.0, 4.103.0
类型检查Bun bun check, TypeScript(仅编辑器支持)1.4.4, ^5.9.0
Monorepo 任务涡轮^2.11.7

桌面 shell 中的 Rust 箱

箱用于
tauri (托盘图标,macos-private-api)Windows、托盘、IPC
tauri-plugin-shell启动 sidecar 二进制文件
tauri-plugin-dialog, -fs, -opener文件选择器、文件访问、打开路径和 URL
tauri-plugin-updater已签名的应用内更新
tauri-plugin-log, -os日志记录、平台检测
tauri-plugin-single-instance, -window-state一个正在运行的应用程序;恢复窗口几何形状(桌面目标)
tauri-plugin-liquid-glass (选修的)带有活力回落的 macOS 玻璃效果
tokio, serde, thiserror, getrandom, log异步监督、IPC 有效负载、类型错误、启动令牌

为什么做出这些选择

  • Bun 运行测试、脚本和 sidecar,并将 sidecar 编译为一个本机二进制文件,因此桌面无需单独的 JavaScript 运行时。
  • Effect 给出每个服务的类型错误、作用域资源(数据库句柄和子进程在关闭时释放)以及服务器、客户端、生成的 SDK 和 API 参考使用的一个 HttpApi 定义。
  • SQLite 使每个安装保持独立:一个文件加一个 WAL,在每次模式升级之前进行备份。
  • Tauri 使用系统 webview 和一个小的 Rust shell,它拥有 sidecar 进程、本机菜单、更新程序和钥匙串。
  • three.js 渲染视口;同一个库在这些文档页面上绘制了 3D 预览。

在 3D

按依赖深度排列的堆栈 拖动进行轨道旋转·滚动进行缩放·右键拖动进行平移
来自 package.json 文件的所有 13 工作区包;每行都是一个工作区:* 依赖项(总共 17)。行是依赖项深度:前面没有工作区依赖项的包,后面是依赖于其中 8 的 sidecar。橙色框是应用程序。核心是其余部分构建的基础。