Open-Agent架构全景解析NestJS GraphQL PostgreSQL Rust Electron的Monorepo设计深度剖析【免费下载链接】open-agentOpen-source alternative to Claude Agent SDK, ChatGPT Agents, and Manus.项目地址: https://gitcode.com/gh_mirrors/op/open-agentOpen-Agent 是一个开源的 Agentic AI 平台可作为 Claude Agent SDK、ChatGPT Agents 和 Manus 的开源替代品。它用 NestJS 搭建服务端、GraphQL 定义接口、PostgreSQL 存储数据、Rust 处理高性能任务、Electron 打包桌面端全部装进一个 Monorepo 中协同开发。下面带你用最短的篇幅看懂它的架构设计。一、项目定位一个可以自托管的开源 AI AgentOpen-source alternative to Claude Agent SDK, ChatGPT Agents, and Manus.Open-Agent 的核心能力是多智能体协作接入 OpenAI、Claude、Gemini 及开源模型多个 Agent 协同完成任务规范驱动决策通过 Spec 与上下文工程让 Agent 先规划、再评分、后给选项人保留最终决定权可自托管开源免费用 Docker Compose 三步即可部署一句话概括它不是聊天机器人而是一个能像人一样操作电脑、浏览器完成任务的智能体系统且代码完全开放给你修改。二、Monorepo 总览一个仓库五套技术栈打开根目录 package.json可以看到这是一个Yarn Berry workspaces管理的 monorepo工作空间覆盖了四大板块open-agent/ ├── blocksuite/ # 文档编辑器引擎TS/Lit 微前端 ├── packages/ │ ├── backend/ # 服务端server(NestJS) native(Rust) │ ├── common/ # 公共库graphql 类型、Rust 原生模块 │ └── frontend/ # 前端app(React) electron(桌面端) └── tools/ # 工程工具链cli、utils、changelogRust 部分则由根目录 Cargo.toml 统一为Cargo workspace管理packages/backend/native与packages/common/native两个 crate。这种Node 管工作空间、Cargo 管原生依赖的双 workspace 模式是该项目最值得学习的 Monorepo 设计之一——JS 与 Rust 各自独立编译又通过命名空间包如afk/server-native无缝互通。三、后端NestJS GraphQL PostgreSQL 的经典组合3.1 模块化架构的开关式组装后端位于 packages/backend/server/核心文件 app.module.ts 展示了教科书级的 NestJS 模块化设计基础能力模块Prisma、Redis、缓存、限流、Web socket、任务队列BullMQ、日志、指标采集统一注册为FunctionalityModules业务模块用户、鉴权、配额、邮件、版本管理useIf条件装配GraphQL 相关模块只在env.flavors.graphql为真时才加载同一套代码可跑成 GraphQL 服务或 CLI 脚本3.2 数据层Prisma PostgreSQL 向量扩展数据模型定义在 schema.prisma注意两个关键细节provider postgresql用户、会话、AI Job、文件文档全部结构化建模启用了pgvector扩展——这意味着 PostgreSQL 同时承担了向量数据库的角色AI 的记忆与检索不用再引入 Milvus 之类的额外组件配合 app.module.ts 中的ClsModule事务插件每个 HTTP/GraphQL 请求自动获得请求级上下文和事务隔离这是高并发 AI 服务稳定运行的基石。3.3 AI 核心copilot 插件真正的智能体逻辑在 plugins/copilot/ 下目录本身就是架构的缩影子目录职责providers/各大模型厂商适配器workflow/多智能体工作流编排tools/Agent 可调用的工具集embedding/向量化与语义检索workspace/智能体沙箱工作区transcript/对话过程记录与回放再加上e2b/code-interpreter云端代码执行等依赖构成了规划 → 执行 → 记录的完整 Agent 闭环。四、Rust 层把 CPU 密集型工作交给原生代码服务端 Node.js 擅长 I/O但文件解析、分词、内容抽取这类 CPU 密集任务交给了 Rust。两个 crate 各司其职packages/common/native/通用能力库内置tree-sitter全家桶C/C/Go/Java/Python/Rust/TS 等 11 种语言解析器、PDF/DOCX 解析pdf-extract、docx-parser、HTML 可读性提取readability让 Agent 能读懂用户上传的各种文档packages/backend/native/服务端专用模块包含tiktoken精确计算 Token 消耗、html_sanitizeHTML 安全清洗、hashcash防刷验证并配有 benchmark 性能基准测试Rust 通过N-API编译为 Node 原生模块JS 侧调用如同调用普通函数——这正是 Cargo.toml 中napi 3.0.0-beta.3的用武之地。五、前端React 应用 自研 BlockSuite 编辑引擎 Electron 壳前端由三层组成分工极其清晰5.1 应用层packages/frontend/app/React 19 React Router 7 Tailwind CSS 4 Zustand 构建的 Web 应用通过 packages/common/graphql/ 中代码生成codegen的 GraphQL 客户端与服务端通信——类型由 schema 自动生成前后端契约永远不会漂移。5.2 编辑引擎blocksuite/这是 Open-Agent 最重的资产一套完整的块级文档编辑器框架微包结构包括blocks/段落、表格、代码块、画板surface、嵌入文档等 21 种内容块framework/核心框架——store基于 Yjs 的协同数据模型、sync实时同步与 Blob 存储、std选择、命令、事件系统gfx/画布图形元素——刷笔、连接器、思维导图、形状Agent 产出的长文档、图表、表格都渲染在这套引擎里这也是 playground 测试卡片图这类渲染测试素材存在的原因。5.3 桌面端packages/frontend/electron/用 Electron Forge 打包 Win/macOS/Linux 安装包亮点是 scripts/ipc-generator/用 ts-morph 静态分析 IPC 处理函数自动生成类型定义文件ipc-api-types.gen.ts主进程与渲染进程的通信类型安全零手写。六、工程化为什么这个 Monorepo 值得借鉴一份依赖树Yarn workspaces resolutions锁定关键依赖版本50 子包共享一套 Node 环境统一工具链tools/cli/ 提供yarn oa统一入口dev/build/initvitest.workspace.ts 让yarn test一次跑通所有包质量门禁ESLint Prettier oxlint 三件套Husky lint-staged 在提交时自动格式化 TS 与 Rust 代码本地开发体验按 tools/public/dev.md 操作yarn Docker Compose 拉起 PostgreSQL/Redis再yarn dev一键同时启动前后端七、总结Open-Agent 的架构可以浓缩为一句话NestJS 管编排GraphQL 管契约PostgreSQL(pgvector) 管数据Rust 管性能BlockSuite 管呈现Electron 管分发——用双 workspace Monorepo 把它们拧成一股绳。如果你想深入源码建议按这条路径阅读app.module.ts服务组装→ plugins/copilot/智能体核心→ blocksuite/framework/store/数据模型→ packages/frontend/electron/src/entries/桌面端入口。掌握这四块你就拿到了整个项目的地图。【免费下载链接】open-agentOpen-source alternative to Claude Agent SDK, ChatGPT Agents, and Manus.项目地址: https://gitcode.com/gh_mirrors/op/open-agent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考