文档
技术栈
版本和职责取自工作区清单和运行时配置。
从英文自动翻译。 查看英文原文
运行时和服务框架
根清单选择 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、迁移资源、导出的移动包和签名的本机安装程序也是不同的输出。
固定版本
| 层 | 技术 | 版本(来自包清单) |
|---|---|---|
| 包管理器/运行时 | Bun | 1.4.4 (packageManager) |
| 服务架构 | Effect | 4.0.0-rc.112(所有工作区,具有相同版本的 platform-bun 和 opentelemetry) |
| 数据库 | 毛毛雨-orm / 毛毛雨套件, bun:sqlite | 1.0.0-测试版。22 |
| 桌面外壳 | Tauri | 2(生锈的板条箱和 @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-导入-js | 0.0.23 |
| 代码编辑器 | 摩纳哥编辑 | ^0.57.0 |
| 捆绑器 | Vite | ^7.0.0 |
| 人工智能 | ai (Vercel AI SDK)、@ai-sdk/anthropic、openai、网关、openai 兼容、@nikcli-ai/sdk-next | 7.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 预览。