Open Agents Monorepo 工程化指南:Bun + Turborepo + Ultracite 工具链完整解析

发布时间:2026/9/17 5:17:04
Open Agents Monorepo 工程化指南:Bun + Turborepo + Ultracite 工具链完整解析 Open Agents Monorepo 工程化指南Bun Turborepo Ultracite 工具链完整解析【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agentsOpen Agents 是一个开源的云端编码 Agent 参考应用本仓库采用Bun Turborepo Ultracite三大工具搭建 Monorepo 工程化体系。本文将带你快速看懂这套工具链是如何组织多个应用与共享包的以及一条命令跑通 lint、类型检查、测试与数据库校验的 CI 流程帮助你在自己的多包项目中直接复用这套最佳实践。️ 为什么选择 Monorepo 架构Open Agents 的核心架构是三层系统Web - Agent workflow - Sandbox VM。对应到代码仓库就是四个主要工作区工作区路径职责Web 应用apps/web/Next.js 应用认证、会话、聊天 UI、工作流编排Agent 运行时packages/agent/Agent 实现、工具集、子代理、技能系统沙箱抽象packages/sandbox/沙箱接口定义与 Vercel Sandbox 集成共享工具packages/shared/跨包复用的 hooks 与工具函数这种一个仓库、多个包的结构让 Agent 运行时和 Web 前端可以独立演进同时共享类型与工具代码。 Bun 工作区一次安装、统一版本根目录的 package.json 定义了 Bun 工作区配置工作区声明workspaces.packages指向apps/*和packages/*Bun 会自动把这两个目录下的所有包纳入同一个依赖树bun install一条命令装好全部依赖。版本目录catalog在catalog字段中统一声明ai、ai-sdk/anthropic、zod等核心库的版本号各子包通过zod: catalog:这样的写法引用避免同一依赖出现多个版本。包管理器锁定packageManager: bun1.2.14保证团队协作时使用一致的 Bun 版本。在 Web 应用的 apps/web/package.json 中可以看到跨包引用的标准写法open-agents/agent: workspace:*, open-agents/sandbox: workspace:*workspace:*协议表示永远指向本仓库内的包这是 Monorepo 内部依赖的最佳实践。⚡ Turborepo任务编排与增量构建Turbo任务配置要点说明builddependsOn: [^build]先构建依赖的上游包再构建自身声明了dist/**构建产物devcache: false, persistent: true开发服务器不缓存、常驻运行typecheckdependsOn: [^typecheck]按依赖顺序检查全部包类型lint/lint:fixdependsOn: [^lint]逐包执行 lint 与自动修复几个值得学习的细节^符号^build表示先执行所有依赖包的 build 任务这是保证packages/agent先于apps/web构建的关键。环境变量白名单build任务显式声明了POSTGRES_URL、REDIS_URL等 14 个环境变量让 Turborepo 能正确判断缓存是否失效。按包过滤执行日常开发可以只检查某个包例如turbo typecheck --filterweb。常用入口命令都聚合在根 package.json 的scripts中bun run dev启动全部开发服务器bun run build触发全量构建。 Ultraciteoxlint oxfmt 极速代码规范仓库用Ultracitev7.4.0统一管理代码风格与静态检查底层是 Rust 实现的oxlintlinteroxfmtformatter比传统 ESLint Prettier 快一个数量级。两条命令即可覆盖日常质量检查bun run check # 检查所有文件的 lint 与格式问题 bun run fix # 自动修复 lint 与格式问题配置文件各司其职Lint 规则.oxlintrc.json 继承 Ultracite 自带的 core / react / next 三套配置再叠加项目级豁免。可以看到典型的取舍思路——关闭no-console、max-lines等审美型规则但保留typescript/no-explicit-any: error和react/rules-of-hooks: error这类正确性型规则只豁免生成代码目录apps/web/components/ui/**。格式规则.oxfmtrc.jsonc 定义了 80 列宽、双引号、尾随逗号等统一风格并开启了experimentalSortPackageJson自动排序 package.json 字段。 共享 tsconfig严格模式统一收口TypeScript 配置同样走共享包模式。packages/tsconfig/ 发布了内部包open-agents/tsconfig包含两层base.json全仓库基础配置——strict: true、verbatimModuleSyntax、noUncheckedIndexedAccess、noFallthroughCasesInSwitch等严格选项。bun.json继承 base增加jsx: react-jsx与 Bun/Node 类型支持供含 React 的包使用。各子包只需extends: open-agents/tsconfig/bun.json一行就能继承整套严格类型规则无需各自维护compilerOptions。 一条命令的完整 CI 流程工程化的最终体现是根 package.json 中的ci脚本bun run ci # 依次执行check → typecheck → test:isolated → db:check它串联起四道质量关卡checkUltracite 全仓库 lint 格式检查typecheckTurborepo 按依赖顺序检查所有包test:isolated由 scripts/test-isolated.ts 独立进程运行全部bun test测试db:check在 Web 包内执行 scripts/check-migrations.ts校验 Drizzle 数据库迁移文件与 schema 是否同步。这套流程也对应仓库的 CI 配置 .github/workflows/ci.yml本地与云端执行同一套命令做到本地通过 CI 通过。 给新手的可复用清单如果你要把这套工程化方案搬到自己的项目按这个顺序落地即可用 Bun workspaces catalog统一管理依赖版本参考 package.json用workspace:*协议声明内部包依赖用 Turborepo 的^dependsOn声明跨包任务顺序并为dev任务关闭缓存抽一个共享 tsconfig 包把strict等选项收口到一处用 Ultraciteoxlint oxfmt替代 ESLint Prettier只保留正确性型规则把check typecheck test db:check聚合成一条ci命令本地与 CI 共用完整的环境变量说明见 README.md仓库架构文档见 docs/agents/architecture.md代码风格约定见 docs/agents/code-style.md。【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考