架构白皮书

基于 Model Context Protocol 构建的自进化多智能体编排引擎。

1. 执行摘要

Optimus Code 是一个多智能体编排引擎,能将任何 MCP 兼容的 AI 编码工具转化为协调的开发团队。支持 VS Code (GitHub Copilot)、Cursor、Windsurf、Claude Code、Goose、Roo Cline 及任何其他支持 Model Context Protocol 的客户端。

不再依赖单个 AI 助手处理所有任务 — 规划、编码、审查、测试 — Optimus 将工作分配给专业角色:产品经理、架构师、开发者、QA 工程师等。这些智能体不是预配置的,它们在系统遇到新任务类型时动态涌现,通过使用进化角色定义,并跨会话积累项目记忆。

结果是一个这样的系统:

Optimus 是 100% 编辑器无关的 — 纯 Node.js MCP 守护进程,不依赖 VS Code 扩展。

2. 大统一架构

仅扩展方案的问题

传统 AI 编码助手与特定编辑器紧密耦合。它们的编排逻辑嵌入在 VS Code 扩展、Cursor 插件或专有后端中。这造成了碎片化:如果你换编辑器,就会失去智能体基础设施。

架构决策:纯 Node.js MCP 守护进程

Optimus Code 遵循“大统一”架构。MCP 服务器(optimus-plugin/dist/mcp-server.js)是一个独立的 Node.js 守护进程,通过 stdio 传输通信。它对任何编辑器的扩展 API 零依赖。

┌──────────────────────────────────────────────┐
│ Any MCP Client (VS Code, Cursor, Claude, ..) │
└──────────────────────┬───────────────────────┘
                       │ stdio (JSON-RPC)
┌──────────────────────▼───────────────────────┐
│           Optimus MCP Server                 │
│  ┌─────────┬──────────┬───────────────────┐  │
│  │ Managers │ Adapters │ MCP Tool Handlers │  │
│  └─────────┴──────────┴───────────────────┘  │
│        Pure Node.js — No vscode namespace    │
└──────────────────────────────────────────────┘

代码库中强制执行的关键约束:

双代码库结构

仓库包含两个相互交织的代码库:

层级路径用途
宿主项目Root (src/, docs/, .optimus/)Optimus 自身的开发工作区
插件包optimus-plugin/发布给终端用户的 npm MCP 服务器

系统指令、技能或配置的更改必须评估是否需要同步到插件脚手架。T1 智能体实例、状态文件和报告不会包含在插件中。

适配器 / 引擎层

Optimus 通过适配器与外部 AI 编码智能体通信 — 这些适配器是 src/adapters/AgentAdapter 接口的可插拔实现。每个适配器将 Optimus 编排命令转换为特定智能体引擎所理解的通信协议。

适配器协议兼容的智能体
github-copilotCopilot CLI 文本解析GitHub Copilot
claude-codeClaude Code CLI 文本解析Claude Code
acpACP (Agent Client Protocol) — 基于 stdio 的 JSON-RPCClaude Code、GitHub Copilot (copilot --acp)、Kimi CLI、Qwen Code、Gemini CLI 及任何 ACP 兼容智能体

ACP 适配器src/adapters/AcpAdapter.ts)实现了 Agent Client Protocol — 一种通用的基于 stdio 的 JSON-RPC 协议,使用 LSP 风格的 Content-Length 帧格式。会话生命周期:initializesession/newsession/promptsession/update(流式)→ 响应。完整迁移路线图请参阅 Epic #319

3. 自进化智能体生命周期 (T3→T2→T1)

Optimus 使用一个自动进化的三层智能体层级结构。没有预装角色 — 系统从空白开始,通过使用有机生长。

三个层级

层级存储描述创建方式
T3(临时) 仅内存 零样本动态工作者,没有持久化文件。Master Agent 发明一个描述性角色名(例如 security-auditor),引擎即时生成工作者。 Master Agent 在委派时命名
T2(模板) .optimus/roles/<name>.md 带有角色指令、引擎/模型绑定和行为约束的角色模板。在首次 T3 使用时自动创建 — “沉淀”。 从 T3 自动沉淀;Master Agent 进化它
T1(实例) .optimus/agents/<name>_<hash>.md T2 角色在任务完成后的冻结快照,包含用于上下文连续性的 session ID。 任务完成并带有 session_id 时自动创建

生命周期流程

First delegation (T3):
  Master invents role name → worker-spawner creates ephemeral agent
      ↓
  Task completes → T2 role template auto-created in .optimus/roles/
      ↓
  Session ID captured → T1 instance created in .optimus/agents/
      ↓
Next delegation (T1 reuse):
  Master provides agent_id → system resumes the T1 session

关键不变量

智能体退役与隔离

持续失败的智能体不会被删除 — 它们会被隔离quarantine_role MCP 工具将角色标记为不可分派。这在保留智能体历史记录以便调试的同时,防止级联故障。被隔离的智能体在修复后可以解除隔离。

T1 垃圾回收会删除在可配置时间窗口内未被引用的过期实例文件,防止磁盘无限增长。

4. Spartan Swarm 协议

Spartan Swarm 协议定义了 Master Agent 如何发现、选择和分配工作给专业智能体。

委派流水线

每次任务委派都遵循严格的 3 步流水线:

步骤 1 — 军营检阅(roster_check

Master Agent 调用 roster_check 获取当前兵力:

此步骤永不跳过 — 它防止 Master 幻想出不存在的角色。

步骤 2 — 兵力评估(角色选择)

Master 将任务与花名册匹配:

步骤 3 — 部署(delegate_task / delegate_task_async

Master 使用结构化参数进行分派:

参数用途
role调用哪个智能体
role_description该角色的功能(用于 T2 模板生成)
role_engine使用哪个引擎(例如 claude-codecopilot-cli
role_model使用哪个模型(例如 claude-opus-4.6-1m
task_description详细指令
context_files智能体必须在开始前读取的文件
required_skills智能体需要的技能(预检查)
parent_issue_number用于 Issue 谱系追踪
output_path结果写入位置

引擎/模型解析

当 Master 未指定引擎或模型时,系统按优先级解析:

  1. Master 提供的 role_engine / role_model(最高优先级)
  2. T2 角色前置元数据中的 engine / model
  3. available-agents.json(第一个非演示引擎 + 第一个模型)
  4. 硬编码后备:claude-code

无效的引擎或模型名称会在网关被拒绝,并返回可操作的错误信息,列出 available-agents.json 中的有效选项。

反模拟规则

Master Agent 必须在委派时物理调用 delegate_task MCP 工具。严格禁止在纯文本中模拟工作者的响应或编写临时脚本来扮演下属角色。这就是严格委派协议

5. Council 模式 (MapReduce)

当决策需要多个专家视角 — 架构审查、安全审计、设计评估 — Optimus 使用 Council 模式

工作原理

  1. 提案:编排器将提案文档写入 .optimus/proposals/PROPOSAL_<topic>.md
  2. 分派dispatch_council(或 dispatch_council_async)并行启动多个专家智能体,每个从各自专业角度审查同一提案。
  3. Map 阶段:每个委员写一份独立审查到 .optimus/reviews/<council_id>/<role>.md
  4. Reduce 阶段:系统生成 COUNCIL_SYNTHESIS.md,汇总发现、识别共识并呈现冲突。
  5. 仲裁:编排器读取综合报告。如果没有阻碍因素,则继续实施。如果存在致命冲突,则创建 .optimus/CONFLICTS.md 进行解决。

示例:架构审查 Council

dispatch_council({
  proposal_path: ".optimus/proposals/PROPOSAL_auth_refactor.md",
  roles: ["security-expert", "performance-expert", "code-architect"]
})

这会同时启动三个智能体。每个都从自己的专业角度阅读提案。安全专家关注认证漏洞,性能专家评估查询模式,架构师评估结构影响。

异步优先设计

Council 本质上是异步的。dispatch_council_async 立即返回任务 ID。编排器通过 check_task_status 轮询状态,并在所有成员完成后读取结果。

6. 技能系统

角色 vs. 技能架构

Optimus 将身份能力解耦:

角色和技能具有多对多关系,在运行时通过 delegate_task 中的 required_skills 参数绑定。单个角色(例如 senior-full-stack-builder)可以为不同任务配备不同的技能组合。

命名约定:角色使用身份名称(例如 product-manager)。技能使用能力名称(例如 feature-devgit-workflowcouncil-review)。技能永远不以角色命名。

技能预检查

required_skills 在委派中指定时,系统在智能体进程启动前验证每个技能文件是否存在于 .optimus/skills/<name>/SKILL.md。缺失的技能导致立即拒绝并给出可操作的错误 — Master 必须先创建它们。

预检查防止智能体接收它们没有装备的任务。

引导元技能

系统附带两个元技能来实现自进化:

技能用途
role-creator教 Master Agent 如何构建和进化团队(T3→T2→T1 生命周期、引擎选择、角色定义最佳实践)
skill-creator教智能体如何按正确格式编写新的 SKILL.md 文件

三个核心技能处理运营工作流:

技能用途
delegate-task异步优先的任务委派协议
council-review并行专家审查 (MapReduce)
git-workflow包含分支、PR 和合并的 Issue 驱动 SDLC

创建新技能

当技能不存在时,Master 委派给任何具有 required_skills: ["skill-creator"] 的智能体,描述新技能应该教什么。智能体读取 skill-creator SKILL.md,学习格式,然后编写新技能。然后可以重试原始委派。

7. 规划模式与关注点分离

问题

如果没有防护栏,编排器智能体(PM、架构师)倾向于自己编写代码而不是委派。这违反了关注点分离 — 定义需求的同一智能体不应该实现它们。

规划模式

编排器角色在其角色定义中以 mode: plan 运行。在规划模式下:

write_blackboard_artifact

此 MCP 工具允许规划模式智能体仅向 .optimus/ 写入文件。它强制执行两层路径验证:

  1. 词法检查startsWith(optimusRoot + path.sep) 防止 .. 遍历和兄弟目录逃逸。
  2. 符号链接检查fs.realpathSync() 对解析的路径前缀进行检查,防止基于符号链接的逃逸到 .optimus/ 外的目录。

内容验证使用 === undefined || === null(而非 !content)以允许合法的空字符串写入。

强制执行

规划模式是通过角色模板和技能指令强制执行的行为约束。编排器的提示明确声明它不能写代码且必须使用委派工具。这通过技能系统得到加强 — 编排器配备了规划技能(council-reviewfeature-dev),引导它们完成委派工作流。

8. Issue 驱动的 SDLC

Optimus 中的所有代码变更都遵循“Issue 优先”协议。没有跟踪工作项就不会编写代码。

完整工作流

1. Create Issue    → vcs_create_work_item (GitHub Issue or ADO Work Item)
2. Branch          → git checkout -b feature/issue-<ID>-<desc>
3. Implement       → Agent writes code, runs build, runs tests
4. PR              → vcs_create_pr with "Fixes #<ID>" in body
5. Merge           → vcs_merge_pr (squash merge for clean history)
6. Cleanup         → Auto-delete source branch, sync local master

Issue 谱系追踪

当智能体创建 GitHub Issue 然后委派子任务时,它将自己的 Issue 编号作为 parent_issue_number 传递给所有后续的 delegate_taskdispatch_council 调用。系统自动将 OPTIMUS_PARENT_ISSUE 注入子智能体进程,在工作流中的所有 Issue 之间维护父子树。

这实现了完整的可追溯性:从高层 Epic 到单个子任务 PR。

自动标签

所有通过 MCP 工具创建的 Issue 和 PR 都会自动标记:

受保护分支规则

禁止直接 git push 到 master/main。所有变更必须通过 vcs_merge_pr 的 PR 合并。这确保:

VCS 抽象层

vcs_* MCP 工具提供了对 GitHub 和 Azure DevOps 的统一抽象。无论仓库托管在哪个平台,相同的工作流都能正常工作。配置存储在 .optimus/config/vcs.json 中。

9. 记忆与反思

持续记忆

Optimus 在 .optimus/memory/continuous-memory.md 维护一个项目记忆。这是一个结构化的仅追加日志,记录经过验证的经验教训、架构决策、Bug 事后分析和工作流改进。

记忆条目通过 append_memory MCP 工具创建,带有分类元数据:

{
  category: "bug-postmortem",
  tags: ["upgrade", "config-wipe", "vcs.json"],
  content: "optimus upgrade force-overwrote vcs.json..."
}

在智能体启动时,项目记忆被自动注入到智能体的提示中。这意味着每个智能体 — 无论何时创建 — 都以所有过去会话积累的知识开始。

智能体自我反思协议

智能体可以在其输出报告中包含一个自我评估部分,包含:

自我评估是建议性的,非强制性的。智能体不能自主修改自己的角色模板或写入项目记忆 — PM 或 Master Agent 决定什么值得推广。这在仍然捕获改进信号的同时,防止了失控的自我修改。

三个层次的反思

  1. 指令级(已实现):嵌入在指令文件(.claude/CLAUDE.md.github/copilot-instructions.md)中的委派后检查清单和委派前自检。
  2. 记忆驱动(已实现):智能体在对话开始时读取项目记忆。过去的错误自动出现在上下文中。
  3. Root Master 自委派(未来):Root Master 委派给 master-orchestrator 角色,使自身与工作者智能体遵循相同的提示注入和反思协议。

10. 自主运维

Meta-Cron 引擎

Optimus 包含一个 Meta-Cron 系统,用于调度自主智能体操作。Cron 条目通过 register_meta_cron 注册,使用标准的 5 字段 cron 表达式。

每个 cron 条目指定:

示例用例:

异步任务架构

Optimus 中的所有委派都是异步优先的。delegate_task_asyncdispatch_council_async 立即返回任务 ID。check_task_status 工具轮询完成状态。这防止 Master Agent 在工作者执行时阻塞。

异步反馈通道(提案)

当智能体遇到模糊情况无法自主继续时,提议的工作流是:

  1. 智能体通过 vcs_add_comment 在其跟踪 Issue 上发布问题
  2. 智能体添加 needs-human-input 标签并将检查点写入 .optimus/reports/
  3. 智能体退出(即发即弃 — 无进程挂起)
  4. 人类通过 GitHub 评论按自己的时间安排回复
  5. Meta-Cron 巡逻检测到响应,并使用相同的 agent_id 启动延续任务以保持上下文连续性

这创建了一个完全异步的人在回路机制,无需任何实时通道。

11. 安全架构

网关层输入验证

所有 MCP 工具处理程序在任务创建、文件写入或进程启动之前验证输入:

委派深度控制

智能体委派上限为 3 个嵌套层MAX_DELEGATION_DEPTH = 3,定义在 src/constants.ts)。这防止了智能体无限递归委派给其他智能体。

路径遍历防护

提示注入防御

秘密保护

规划模式作为安全边界

规划模式防止编排器智能体写入任意文件。即使提示注入说服编排器“写一个配置文件”,write_blackboard_artifact 路径验证也会拒绝 .optimus/ 之外的任何目标。


附录:项目结构

.optimus/
├── agents/          # T1 frozen instance snapshots
├── config/          # vcs.json, available-agents.json, system-instructions.md
├── memory/          # continuous-memory.md
├── proposals/       # Council proposal documents
├── reports/         # Agent output reports
├── reviews/         # Council review outputs + synthesis
├── roles/           # T2 role templates
├── skills/          # Skill definitions (SKILL.md per skill)
├── state/           # task-manifest.json, t3-usage-log.json
└── system/          # System-level config

optimus-plugin/
├── bin/             # CLI entry points (init, serve, upgrade)
├── dist/            # Compiled MCP server
├── scaffold/        # Template files shipped to end-users
└── skills/          # Universal bootstrap skills

本文档描述 Optimus Code v0.4.0。最新更新请查看 CHANGELOG