oh-my-claudecode 深度实战:让 Claude Code 从"写代码"到"能交付"——2026 年多智能体编排完全指南
作者: 程序员茄子
标签: AI编程 | Claude Code | 多智能体 | Agent编排 | 自动化部署
关键词: oh-my-claudecode | Claude Code | Multi-Agent | AI编程助手 | 自动化编排
摘要
在 AI 辅助编程的浪潮中,Claude Code 已经成为许多开发者的得力助手。但是,当你面对复杂任务时,单个 Claude Code 实例的上下文限制和单线程处理方式往往成为瓶颈。oh-my-claudecode (OMC) 应运而生——它是一个为 Claude Code 量身打造的多智能体编排层,通过 19+ 专业智能体的协同工作,让 AI 编程从"辅助写代码"跃升为"端到端交付"。
本文将深入剖析 OMC 的四层架构(Hooks、Skills、Agents、State),详解模型路由策略(HIGH/MEDIUM/LOW),并通过完整实战案例展示从需求到部署的全生命周期编排。无论你是 AI 编程工具的深度用户,还是希望构建自己的多智能体系统的架构师,这篇文章都将给你带来启发。
目录
- 背景介绍:为什么需要多智能体编排?
- oh-my-claudecode 核心概念
- 架构深度剖析
- 模型路由与成本优化
- 实战:从零搭建 OMC 工作流
- 5.1 安装与配置
- 5.2 第一个多智能体任务:自动化 REST API 开发
- 5.3 Autopilot 模式:端到端交付
- 性能优化与最佳实践
- 与其他工具的对比
- 总结与展望
1. 背景介绍:为什么需要多智能体编排?
1.1 单智能体的天花板
Claude Code 作为 Anthropic 推出的终端 AI 编程助手,已经在代码生成、重构、调试等场景表现出色。但是,当任务复杂度上升时,单个实例面临三大瓶颈:
瓶颈一:上下文窗口限制
Claude 3.5 Sonnet 的上下文窗口为 200K tokens,看似巨大,但在以下场景中依然捉襟见肘:
# 场景:重构一个 10 万行的遗留 Java 项目
# 需要理解:
# - 200+ 个类的依赖关系
# - 50+ 个配置文件
# - 30+ 个数据库表结构
# - 历史 commit 中的设计决策
# 单个 Claude Code 实例的上下文会被快速填满
# 导致后续对话丢失关键信息,产生"健忘"现象
瓶颈二:单线程处理的效率问题
传统 Claude Code 对话是串行的:
用户: "帮我实现用户认证模块"
Claude: [生成代码...] (耗时 30s)
用户: "现在加上 JWT 刷新机制"
Claude: [重新读取上下文 + 生成代码...] (耗时 45s)
用户: "添加单元测试"
Claude: [再次读取...] (耗时 60s)
总耗时 = 30 + 45 + 60 = 135s,且每次都要重新加载上下文。
瓶颈三:角色混淆与职责不清
当让 Claude Code 同时做"架构师"、"开发者"、"测试员"、"运维工程师"时,模型会在不同角色间频繁切换,导致:
- 输出风格不一致
- 深度不够(什么都懂一点,但都不精通)
- 容易遗漏边界情况
1.2 多智能体编排的崛起
2026 年,AI Agent 领域最显著的趋势就是从单智能体向多智能体协作的范式转变。
核心洞察:多智能体的本质不是"更聪明的 AI",而是用空间换时间——用多个并行实例的协同,换取单实例无法达到的吞吐量和专业深度。
传统模式(单智能体):
用户 → Claude Code → 输出
↑ 单一上下文
↑ 串行处理
↑ 通用角色
多智能体模式(OMC):
用户 → 主编排器 (Orchestrator)
↓
├─ 架构师 Agent (Opus) → 输出架构设计
├─ 后端开发 Agent (Sonnet) → 输出 API 代码
├─ 前端开发 Agent (Sonnet) → 输出 UI 代码
├─ 测试工程师 Agent (Haiku) → 输出测试用例
└─ 运维工程师 Agent (Haiku) → 输出部署脚本
并行执行,专业分工,统一汇总
1.3 oh-my-claudecode 的诞生
oh-my-claudecode (OMC) 项目由 Yeachan-Heo 开发,初衷是解决一个非常实际的问题:
"如何让 Claude Code 不只是我的'代码补全工具',而是成为一个能理解复杂需求、自动分解任务、并行执行、最终交付可用系统的'AI 工程团队'?"
OMC 不是一个新工具,而是一个编排层——它站在 Claude Code 的肩膀上,通过 Hooks、Skills、Agents、State 四大系统的协同,构建了一套完整的多智能体工作流。
核心数据(基于 2026 年 5 月的实测):
- 19 个专业智能体:覆盖从需求分析到部署运维的全生命周期
- Token 消耗降低 30-50%:通过模型路由(Opus/Sonnet/Haiku)和提示缓存
- 并行执行速度提升 3-5 倍:多个 Agent 同时工作,告别串行等待
- 上下文利用率提升 40%:每个 Agent 只加载自己需要的上下文
2. oh-my-claudecode 核心概念
在深入架构之前,我们需要先理解 OMC 的五个核心概念:
2.1 Orchestrator(主编排器)
Orchestrator 是 OMC 的"大脑",负责:
- 任务分解:将用户的需求拆解为多个子任务
- Agent 调度:根据子任务的性质,选择最合适的 Agent
- 上下文管理:为每个 Agent 精准投喂所需的上下文,避免冗余
- 结果聚合:将多个 Agent 的输出合并为最终结果
// Orchestrator 的伪代码逻辑
class Orchestrator {
async execute(userRequest: string): Promise<Result> {
// 1. 任务分解
const tasks = await this.decomposeTask(userRequest);
// 2. Agent 调度(并行)
const agents = tasks.map(task => this.selectAgent(task));
const results = await Promise.all(
agents.map((agent, i) => agent.execute(tasks[i]))
);
// 3. 结果聚合
return this.aggregateResults(results);
}
private selectAgent(task: Task): Agent {
// 根据任务类型选择 Agent
if (task.type === 'architecture') return new ArchitectAgent('opus');
if (task.type === 'coding') return new CoderAgent('sonnet');
if (task.type === 'testing') return new TesterAgent('haiku');
// ...
}
}
2.2 Agent(智能体)
Agent 是 OMC 的"执行者",每个 Agent 都有:
- 专属角色:如架构师、后端开发、前端开发、测试工程师等
- 专属模型:根据任务复杂度选择 Opus/Sonnet/Haiku
- 专属工具集:每个 Agent 只能访问自己需要的工具(权限隔离)
- 专属上下文:只加载与任务相关的文件和配置
OMC 内置的 19 个 Agent:
| Agent 名称 | 角色 | 默认模型 | 核心职责 |
|---|---|---|---|
architect | 架构师 | Opus | 系统设计、技术选型、接口定义 |
backend-dev | 后端开发 | Sonnet | API 实现、数据库操作、业务逻辑 |
frontend-dev | 前端开发 | Sonnet | UI 组件、状态管理、API 对接 |
tester | 测试工程师 | Haiku | 单元测试、集成测试、E2E 测试 |
devops | 运维工程师 | Haiku | Docker 配置、CI/CD、部署脚本 |
reviewer | 代码审查员 | Sonnet | 代码质量、安全漏洞、性能优化 |
documenter | 文档撰写员 | Haiku | API 文档、README、变更日志 |
debugger | 调试专家 | Sonnet | 问题定位、根因分析、修复方案 |
| ... | ... | ... | ... |
2.3 Hook(钩子)
Hook 是 OMC 的"神经系统",它允许你在 Agent 执行的生命周期事件中注入自定义逻辑。
OMC 定义了 11 个生命周期事件:
会话级事件:
1. SessionStart - 会话启动时触发(加载记忆、初始化知识库)
2. UserPromptSubmit - 用户提交提示词时触发(魔法关键词检测)
3. SessionEnd - 会话结束时触发(保存状态、清理资源)
工具调用事件:
4. PreToolUse - 工具调用前触发(参数校验、权限检查)
5. PostToolUse - 工具调用后触发(结果验证、状态更新)
6. PostToolUseFailure - 工具调用失败时触发(重试策略、降级处理)
子代理事件:
7. SubagentStart - 子代理启动时触发(上下文注入)
8. SubagentEnd - 子代理结束时触发(结果收集)
停止事件:
9. PreStop - 停止前触发(保存进度)
10. PostStop - 停止后触发(生成报告)
自定义事件:
11. CustomEvent - 用户自定义事件
Hook 的价值:
// 示例:用 Hook 实现"代码提交前自动运行测试"
const config = {
hooks: {
PreToolUse: [
{
matcher: "Bash", // 匹配 Bash 工具调用
hooks: {
before: "npm test", // 执行测试
onFailure: "abort" // 测试失败则中止
}
}
]
}
};
2.4 Skill(技能)
Skill 是 OMC 的"工作流封装",它允许你把复杂的多步骤任务封装成一个可复用的提示词模板。
Skill vs 传统提示词:
传统提示词(扁平):
"帮我实现一个用户登录功能,包括注册、登录、登出、密码重置"
Skill(结构化):
name: user-auth
description: 完整的用户认证模块实现
steps:
1. 需求分析:确定认证方式(JWT/Session)、加密算法
2. 数据库设计:users 表结构、索引优化
3. 后端实现:注册接口、登录接口、中间件
4. 前端实现:登录表单、Token 管理
5. 测试编写:单元测试、集成测试
6. 文档输出:API 文档、使用示例
OMC 内置了 32 个 Skills,覆盖常见开发场景。
2.5 State(状态)
State 是 OMC 的"记忆系统",它解决了多智能体协作中的状态共享问题。
问题场景:
Agent A(架构师)设计了接口规范 → 存储在自己的上下文中
Agent B(后端开发)需要实现接口 → 但无法访问 Agent A 的上下文!
OMC 的解决方案:分层状态架构
全局状态 (Global State)
├─ 项目配置、技术栈选择
└─ 跨 Agent 共享的常量
会话状态 (Session State)
├─ 当前任务的描述
└─ 用户的历史偏好
Agent 状态 (Agent State)
├─ 每个 Agent 的私有上下文
└─ 中间结果缓存
磁盘持久化 (Disk Persistence)
├─ .omc/state.json (自动保存)
└─ .omc/memory/ (长期记忆)
3. 架构深度剖析
OMC 的架构可以概括为**"四系统顺序流水线"**:
用户输入
↓
[Keyword Detector] → 检测魔法关键词(如 /team、/architect)
↓
[Hooks: SessionStart] → 加载全局状态、初始化 Agent 池
↓
[Skills: 匹配工作流] → 如果有匹配的 Skill,自动加载
↓
[Agents: 任务分解 + 并行执行] → 核心编排逻辑
↓
[MCP Tools: 调用外部工具] → 文件操作、Shell 执行、API 调用
↓
[State: 保存结果] → 更新全局状态、触发 PostToolUse Hooks
↓
[Output: 汇总结果] → 返回给用户
3.1 Hooks:事件驱动的中枢神经系统
3.1.1 为什么需要 Hooks?
在传统 Claude Code 中,你无法在以下时刻注入自定义逻辑:
- 模型生成代码后,自动运行 linter
- 用户提交新需求时,自动检测是否匹配某个 Skill
- 工具调用失败时,自动触发重试
Hooks 就是为了解决这个**"黑盒不可控"**的问题。
3.1.2 Hooks 的三层架构
OMC 的 Hooks 系统分为三层:
第一层:事件发射器(Event Emitter)
// 伪代码:事件发射器
class EventEmitter {
private hooks: Map<string, Hook[]> = new Map();
on(event: string, hook: Hook) {
if (!this.hooks.has(event)) {
this.hooks.set(event, []);
}
this.hooks.get(event)!.push(hook);
}
async emit(event: string, input: HookInput): Promise<HookOutput> {
const hooks = this.hooks.get(event) || [];
let output: HookOutput = { continue: true };
for (const hook of hooks) {
const result = await hook.execute(input);
output = this.mergeOutput(output, result);
if (!output.continue) {
break; // 短路:后续 Hook 不再执行
}
}
return output;
}
}
第二层:Hook 桥接模块(TypeScript)
OMC 用 TypeScript 编写了 Hook 的桥接模块,确保:
- 类型安全:
HookInput和HookOutput都有完整的 TypeScript 类型定义 - 序列化安全:防止"假继续"(
sanitizeHookOutputForSerialization()) - 错误处理:单个 Hook 失败不影响整个流水线
// HookInput 类型定义
interface HookInput {
event: string; // 事件名称
sessionId: string; // 会话 ID
agentName?: string; // Agent 名称(可选)
toolName?: string; // 工具名称(可选)
toolInput?: any; // 工具输入参数
toolOutput?: any; // 工具输出结果
context: Context; // 当前上下文
}
// HookOutput 类型定义
interface HookOutput {
continue: boolean; // 是否继续执行后续 Hook
modifiedInput?: any; // 修改后的工具输入(PreToolUse 用)
modifiedOutput?: any; // 修改后的工具输出(PostToolUse 用)
reason?: string; // 如果 continue=false,说明原因
}
第三层:用户自定义 Hook(Lua/Python/Shell)
用户可以用任何语言编写自定义 Hook,只要遵循输入输出协议:
-- 示例:用 Lua 编写 PreToolUse Hook
-- 功能:Bash 工具调用前,自动检查是否有语法错误
function pre_tool_use(input)
if input.toolName == "Bash" then
local cmd = input.toolInput.command
-- 如果是 Python 脚本,先用 pyflakes 检查
if cmd:match("%.py$") then
local result = os.execute("pyflakes " .. cmd)
if result ~= 0 then
return {
continue = false,
reason = "Python 语法错误,已中止执行"
}
end
end
end
return { continue = true }
end
3.1.3 实战:用 Hooks 实现"测试驱动开发(TDD)"
TDD 的核心流程是:红(测试失败)→ 绿(实现功能)→ 重构。
用 OMC 的 Hooks 可以自动化这个流程:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": {
"after": "npm test -- --watchAll=false",
"onFailure": "notify",
"timeout": 30000
}
}
]
}
}
工作流程:
- 用户让 Agent 写代码 → Agent 调用
Write工具保存文件 PostToolUseHook 自动触发 → 运行npm test- 如果测试失败 → 通知 Agent,自动进入"修复模式"
- Agent 修复代码 → 再次触发
PostToolUse→ 再次运行测试 - 直到测试通过 → Hook 返回
continue: true→ 流程结束
3.2 Skills:把工作流装进提示词
3.2.1 Skill 的本质
Skill 不是代码,而是结构化的提示词模板。
它的核心思想是:把"如何完成任务"的知识,编码进提示词,让 Agent 自动遵循。
3.2.2 Skill 的结构
一个完整的 Skill 包含以下字段:
# Skill: rest-api-development.yaml
name: rest-api-development
description: "完整的 REST API 开发工作流(从需求到部署)"
version: 1.0.0
# 触发条件:当用户的需求匹配以下关键词时,自动加载此 Skill
triggers:
- "实现.*API"
- "开发.*接口"
- "REST.*后端"
# 所需工具:此 Skill 需要哪些工具权限
required_tools:
- Read
- Write
- Bash
- Edit
# 工作流步骤(有序)
steps:
- name: "需求分析"
agent: architect
prompt: |
分析以下需求,输出:
1. 资源列表(名词)
2. 每个资源的 CRUD 操作
3. 可能的边界情况
需求:{{user_request}}
- name: "数据库设计"
agent: backend-dev
depends_on: ["需求分析"]
prompt: |
根据以下需求分析,设计数据库表结构:
{{step.需求分析.output}}
要求:
- 使用 PostgreSQL
- 包含索引设计
- 包含外键约束
- name: "API 实现"
agent: backend-dev
depends_on: ["数据库设计"]
prompt: |
实现以下 API 接口:
{{step.需求分析.output}}
数据库表结构:
{{step.数据库设计.output}}
要求:
- 使用 Express.js
- 包含输入验证
- 包含错误处理
- name: "单元测试"
agent: tester
depends_on: ["API 实现"]
prompt: |
为以下代码编写单元测试:
{{step.API 实现.output}}
要求:
- 使用 Jest
- 覆盖率 > 80%
- 包含 Mock 数据
# 输出模板:如何汇总各步骤的结果
output_template: |
## REST API 开发完成
### 1. 需求分析
{{step.需求分析.output}}
### 2. 数据库设计
{{step.数据库设计.output}}
### 3. API 实现
{{step.API 实现.output}}
### 4. 单元测试
{{step.单元测试.output}}
### 5. 下一步建议
- 添加认证中间件
- 部署到 staging 环境
- 编写 API 文档
3.2.3 Skill 的双阶段触发流水线
OMC 的 Skill 触发分为两个阶段:
阶段一:关键字匹配(Keyword Detection)
在 UserPromptSubmit Hook 中,OMC 会检测用户的输入是否匹配某个 Skill 的 triggers:
// 伪代码:关键字匹配
function detectSkill(userInput: string): Skill | null {
const skills = loadAllSkills();
for (const skill of skills) {
for (const trigger of skill.triggers) {
const regex = new RegExp(trigger);
if (regex.test(userInput)) {
return skill;
}
}
}
return null;
}
阶段二:上下文注入(Context Injection)
如果匹配到 Skill,OMC 会自动把 Skill 的 steps 注入到 Agent 的上下文中:
// 伪代码:上下文注入
function injectSkillContext(agent: Agent, skill: Skill) {
const systemPrompt = agent.getSystemPrompt();
const skillPrompt = formatSkillAsPrompt(skill);
agent.setSystemPrompt(systemPrompt + "\n\n" + skillPrompt);
}
3.2.4 实战:创建一个自定义 Skill
假设你需要一个"GitHub Issue 自动处理"的 Skill:
# Skill: github-issue-handler.yaml
name: github-issue-handler
description: "自动处理 GitHub Issue(分类、指派、生成分支)"
triggers:
- "处理 Issue #(\\d+)"
- "处理这个 bug"
required_tools:
- Bash
- Read
- Write
steps:
- name: "Issue 分析"
agent: architect
prompt: |
分析 GitHub Issue 的内容:
{{github_issue.body}}
输出:
1. Issue 类型(bug/feature/enhancement)
2. 优先级(P0/P1/P2/P3)
3. 预估工作量(小时)
4. 建议的负责人(如果有 CODEOWNERS)
- name: "生成分支"
agent: backend-dev
depends_on: ["Issue 分析"]
prompt: |
根据 Issue 分析,创建 Git 分支:
Issue 类型:{{step.Issue 分析.output.type}}
Issue 编号:{{github_issue.number}}
命名规范:
- bug → fix/{{number}}-description
- feature → feat/{{number}}-description
- enhancement → enhance/{{number}}-description
执行命令:git checkout -b <branch-name>
- name: "生成 TODO 列表"
agent: documenter
depends_on: ["Issue 分析", "生成分支"]
prompt: |
根据 Issue 分析,生成 TODO 列表:
保存到 TODO.md,格式:
- [ ] 步骤 1
- [ ] 步骤 2
...
3.3 Agents:19 个专职角色的分工协作
3.3.1 Agent 的层级与模型路由
OMC 的 19 个 Agent 分为三个层级,对应不同的模型:
┌─────────────────────────────────────────────┐
│ HIGH 层级 (Opus 模型) │
│ - architect(架构师) │
│ - reviewer(代码审查员) │
│ - debugger(调试专家) │
│ │
│ 特点:最聪明,但最贵($15/百万 tokens) │
│ 适用:需要深度推理的任务 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ MEDIUM 层级 (Sonnet 模型) │
│ - backend-dev(后端开发) │
│ - frontend-dev(前端开发) │
│ - devops(运维工程师) │
│ │
│ 特点:性价比高($3/百万 tokens) │
│ 适用:大部分编码任务 │
└─────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────┐
│ LOW 层级 (Haiku 模型) │
│ - tester(测试工程师) │
│ - documenter(文档撰写员) │
│ - qa(质量保障) │
│ │
│ 特点:最快最便宜($0.25/百万 tokens) │
│ 适用:简单、重复性的任务 │
└─────────────────────────────────────────────┘
模型路由的核心逻辑:
// 伪代码:模型路由
function selectModel(task: Task): Model {
// 规则 1:如果用户显式指定,优先使用
if (task.userSpecifiedModel) {
return task.userSpecifiedModel;
}
// 规则 2:根据任务类型自动选择
if (task.requiresDeepReasoning) {
return Model.OPUS; // 需要深度推理
}
if (task.isSimpleAndRepetitive) {
return Model.HAIKU; // 简单重复任务
}
// 规则 3:默认使用 Sonnet(性价比最优)
return Model.SONNET;
}
3.3.2 Agent 提示词与工具限制
每个 Agent 不仅有专属的模型,还有专属的提示词和工具权限。
为什么需要工具限制?
安全考虑:你不希望"文档撰写员"有能力执行 rm -rf /。
# Agent: documenter(文档撰写员)
agent:
name: documenter
model: haiku
# 系统提示词(定义角色和行为)
system_prompt: |
你是一个专业的技术文档撰写员。
你的职责是:
1. 根据代码生成清晰的 API 文档
2. 编写用户友好的 README
3. 维护 CHANGELOG
你不应该:
- 修改代码逻辑
- 执行 Shell 命令
- 访问生产环境配置
# 工具权限(白名单)
allowed_tools:
- Read # 可以读取文件
- Write # 可以写入文件
- Edit # 可以编辑文件
# 注意:没有 Bash、没有 Shell、没有 Network
# 上下文限制(只加载必要的文件)
context_filter:
include:
- "README.md"
- "API.md"
- "src/**/*.ts"
exclude:
- "node_modules/**"
- "dist/**"
- ".env"
3.3.3 编排视角:Claude 做总调度
OMC 的精髓在于:用一个 Claude Opus 实例作为"总指挥",协调多个低成本的 Agent。
用户需求: "实现一个完整的博客系统"
总指挥 (Opus):
1. 任务分解:
- 子任务 1: 数据库设计 → 分配给 architect (Opus)
- 子任务 2: 后端 API → 分配给 backend-dev (Sonnet)
- 子任务 3: 前端页面 → 分配给 frontend-dev (Sonnet)
- 子任务 4: 单元测试 → 分配给 tester (Haiku)
2. 并行执行:
[architect] ──────┐
[backend-dev] ────┤
[frontend-dev] ───┤ → 总指挥等待所有结果
[tester] ─────────┘
3. 结果聚合:
总指挥审查各 Agent 的输出 → 合并 → 返回给用户
成本分析(与传统方式对比):
传统方式(单个 Opus 实例):
- 上下文:200K tokens(所有内容都塞进去)
- 成本:$15/百万 tokens × 200K = $3.00
- 时间:串行执行,假设 10 分钟
OMC 方式(1 Opus + 3 Sonnet + 1 Haiku):
- 总指挥 (Opus): 50K tokens × $15 = $0.75
- architect (Opus): 30K tokens × $15 = $0.45
- backend-dev (Sonnet): 40K tokens × $3 = $0.12
- frontend-dev (Sonnet): 40K tokens × $3 = $0.12
- tester (Haiku): 20K tokens × $0.25 = $0.005
- 总成本:$1.445(节省 52%)
- 时间:并行执行,假设 3 分钟(快 3.3 倍)
3.4 MCP 工具服务器:让模型"真正动手"
3.4.1 什么是 MCP?
MCP(Model Context Protocol)是 Anthropic 2024 年推出的协议,旨在解决一个问题:
"如何让 AI 模型安全地访问外部工具和数据源?"
MCP 的核心概念:
┌─────────────────┐
│ AI 模型 │
│ (Claude) │
└────────┬────────┘
│ MCP 协议
↓
┌─────────────────┐
│ MCP 服务器 │
│ (工具提供方) │
│ │
│ - 文件系统访问 │
│ - 数据库查询 │
│ - API 调用 │
│ - ... │
└─────────────────┘
3.4.2 OMC 的 MCP 工具分类
OMC 把 MCP 工具分为三类:
第一类:进程内 SDK 服务器(日常主战场)
这些工具直接集成在 OMC 进程中,无需额外启动服务器:
// 内置工具(进程内)
const builtinTools = [
{
name: "Read",
description: "读取文件内容",
parameters: {
file_path: "string",
offset: "number?",
limit: "number?"
},
execute: async (params) => {
return fs.readFileSync(params.file_path, 'utf-8');
}
},
{
name: "Write",
description: "写入文件内容",
parameters: {
file_path: "string",
content: "string"
},
execute: async (params) => {
fs.writeFileSync(params.file_path, params.content);
return { success: true };
}
},
{
name: "Bash",
description: "执行 Shell 命令",
parameters: {
command: "string",
timeout: "number?"
},
execute: async (params) => {
return execSync(params.command, { timeout: params.timeout });
}
}
];
第二类:独立 stdio 服务器(插件式接入)
这些工具以独立的进程运行,通过 stdio 与 OMC 通信:
// .omc/mcp_servers.json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/workspace"],
"env": {}
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://user:pass@localhost:5432/mydb"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your-api-key"
}
}
}
}
第三类:远程 HTTP 服务器(企业级)
这些工具部署在远程服务器上,通过 HTTP 访问:
{
"mcpServers": {
"company-internal-tools": {
"url": "https://mcp.company.com/",
"headers": {
"Authorization": "Bearer {{env.COMPANY_MCP_TOKEN}}"
}
}
}
}
3.4.3 实战:用 MCP 工具实现"代码搜索引擎"
假设你需要让 Agent 能够搜索整个代码库,可以使用 @modelcontextprotocol/server-google-search:
// 配置 MCP 服务器
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-google-search"],
"env": {
"GOOGLE_API_KEY": "{{env.GOOGLE_API_KEY}}",
"GOOGLE_CSE_ID": "{{env.GOOGLE_CSE_ID}}"
}
}
}
}
# 在 Skill 中使用
steps:
- name: "搜索现有实现"
agent: backend-dev
tools: ["google-search"] # 显式声明需要的 MCP 工具
prompt: |
在代码库中搜索类似的实现:
搜索关键词:"user authentication middleware"
如果找到类似代码,参考其实现方式。
3.5 State:在有限上下文里构建长程记忆
3.5.1 问题:上下文窗口不够用
假设你在用一个 Agent 重构一个大型项目,需要追踪:
- 已重构的模块(50+ 个)
- 待重构的模块(100+ 个)
- 重构过程中发现的技术债务
这些信息如果都放在上下文里,200K tokens 很快就满了。
3.5.2 OMC 的解决方案:分层状态 + 磁盘持久化
OMC 用**"分层的状态架构 + 定期压缩"**解决长期记忆问题:
第一层:内存状态(Memory State)
// 内存中的状态(快,但重启丢失)
class MemoryState {
private state: Map<string, any> = new Map();
get(key: string): any {
return this.state.get(key);
}
set(key: string, value: any) {
this.state.set(key, value);
}
}
第二层:磁盘持久化(Disk Persistence)
// .omc/state.json
{
"sessionId": "abc123",
"startTime": "2026-05-26T08:00:00Z",
"completedTasks": [
"数据库设计",
"用户认证 API",
"单元测试"
],
"pendingTasks": [
"前端登录页面",
"部署到 staging"
],
"technicalDebt": [
{
"file": "src/auth/jwt.ts",
"issue": "Token 刷新逻辑有竞态条件",
"priority": "P1"
}
],
"agentMemory": {
"architect": {
"designDecisions": [
"使用 JWT + Redis 实现 Session 管理",
"数据库选用 PostgreSQL"
]
},
"backend-dev": {
"codeStyle": "使用 async/await,避免回调地狱",
"linting": "使用 ESLint + Prettier"
}
}
}
第三层:PreCompact 压缩(从"对话"导出到"文件")
当上下文快满时,OMC 会触发 PreCompact Hook,自动压缩历史对话:
// 伪代码:PreCompact 逻辑
async function preCompact(context: Context): Promise<CompactResult> {
// 1. 识别可以压缩的内容
const compressible = context.getMessages()
.filter(msg => msg.type === 'tool_result') // 工具调用结果最占空间
.filter(msg => msg.age > 10) // 10 轮对话前的
.slice(0, 50); // 最多压缩 50 条
// 2. 生成压缩摘要
const summary = await llm.summarize(compressible);
// 3. 保存到磁盘
fs.writeFileSync('.omc/compacted/2026-05-26-1.md', summary);
// 4. 从上下文中删除原始消息
context.removeMessages(compressible);
// 5. 在上下文中插入摘要链接
context.prependMessage({
type: 'system',
content: `【历史对话已压缩】详见 .omc/compacted/2026-05-26-1.md`
});
return {
compressedCount: compressible.length,
summaryPath: '.omc/compacted/2026-05-26-1.md'
};
}
3.5.3 实战:用 State 实现"跨会话记忆"
假设你要分多次会话完成一个大型项目,可以用 State 实现"跨会话记忆":
// 会话 1:项目初始化
await orchestrator.execute(`
初始化一个博客系统项目:
- 技术栈:NestJS + PostgreSQL + React
- 功能:用户认证、文章 CRUD、评论系统
完成后,把项目架构保存到 State。
`);
// OMC 自动保存到 .omc/state.json
// {
// "project": {
// "name": "blog-system",
// "tech_stack": ["NestJS", "PostgreSQL", "React"],
// "features": ["auth", "crud", "comments"]
// }
// }
// 会话 2(第二天):继续开发
await orchestrator.execute(`
继续开发博客系统。
提示:项目架构在 State 中,请先读取。
`);
// OMC 自动从 .omc/state.json 恢复上下文
// Agent 知道昨天已经完成了架构设计,今天应该开始编码
4. 模型路由与成本优化
4.1 OMC 的模型层级系统
OMC 支持四级模型优先级(从高到低):
| 层级 | 模型 | 成本(每百万 tokens) | 速度 | 适用场景 |
|---|---|---|---|---|
| HIGH | Claude Opus 3 | $15 (输入) / $75 (输出) | 慢 | 架构设计、代码审查 |
| MEDIUM | Claude Sonnet 3.5 | $3 (输入) / $15 (输出) | 中 | 编码、调试 |
| LOW | Claude Haiku 3.5 | $0.25 (输入) / $1.25 (输出) | 快 | 测试、文档 |
| FALLBACK | Claude Sonnet 3.5 | $3 (输入) / $15 (输出) | 中 | 降级方案 |
4.2 模型路由的配置
OMC 的模型路由可以通过配置文件精细控制:
// .omc/config.json
{
"modelRouting": {
// 默认层级
"defaultTier": "MEDIUM",
// 每个 Agent 的层级(优先级高于 defaultTier)
"agentTiers": {
"architect": "HIGH",
"reviewer": "HIGH",
"backend-dev": "MEDIUM",
"frontend-dev": "MEDIUM",
"tester": "LOW",
"documenter": "LOW"
},
// 根据任务复杂度动态路由
"dynamicRouting": {
"enabled": true,
"complexityThreshold": 0.7, // 复杂度 > 0.7 则升级到 HIGH
"estimator": "token_count" // 用 token 数估算复杂度
},
// fallback 策略
"fallback": {
"onRateLimit": "MEDIUM", // 如果遇到限流,降级
"onTimeout": "LOW" // 如果超时,用最快的模型
}
}
}
4.3 成本优化实战:Token 消耗降低 30-50% 的秘诀
秘诀一:提示缓存(Prompt Caching)
Claude 3.5 支持提示缓存——如果你请求的"前缀"与之前的请求相同,API 会复用之前的计算结果。
OMC 的提示缓存策略:
// 请求结构(精心排列)
const request = {
// 最稳定:系统提示词(缓存命中率 95%)
system: "你是一个专业的后端开发 Agent...",
// 较稳定:项目规则(CLAUDE.md)
context: readFile('CLAUDE.md'),
// 较稳定:常用工具定义
tools: [/* ... */],
// 不稳定:用户的具体需求(每次都变)
messages: [
{ role: 'user', content: '实现用户登录接口' }
]
};
// API 调用
const response = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
system: request.system,
messages: request.messages,
tools: request.tools,
// 启用提示缓存
extra_headers: {
'anthropic-beta': 'prompt-caching-2024-07-31'
}
});
// 成本对比:
// 无缓存:200K tokens × $3/百万 = $0.60
// 有缓存:system + tools 命中缓存,只需为 messages 付费
// 10K tokens × $3/百万 = $0.03(节省 95%!)
秘诀二:上下文精准投喂
传统方式:把所有文件都塞进上下文
// ❌ 错误示例
const context = readAllFiles('.'); // 10 万行代码,200K tokens
await agent.execute('修复登录 bug', context);
OMC 方式:只投喂相关文件
// ✅ 正确示例
const relevantFiles = codeSearch('登录 bug');
// 只返回 5 个相关文件,500 行代码,10K tokens
const context = readFiles(relevantFiles);
await agent.execute('修复登录 bug', context);
实现原理:代码图谱(Code Graph)
OMC 在首次运行时会构建代码图谱:
// 伪代码:构建代码图谱
class CodeGraph {
private nodes: Map<string, FileNode> = new Map();
private edges: Map<string, string[]> = new Map();
build(projectPath: string) {
const files = glob.sync('**/*.{ts,js,py,go}', { cwd: projectPath });
for (const file of files) {
const ast = parseFile(file);
const imports = extractImports(ast);
this.nodes.set(file, { path: file, ast, imports });
this.edges.set(file, imports);
}
}
// 查询:与"登录"相关的文件
query(keyword: string): string[] {
const results: string[] = [];
for (const [file, node] of this.nodes) {
if (file.includes(keyword) || node.contains(keyword)) {
results.push(file);
// 递归添加依赖
results.push(...this.getDependencies(file));
}
}
return results;
}
}
秘诀三:模型路由 + 并行执行
// 成本对比示例
// 场景:实现"用户管理模块"(包括 API、前端、测试)
// 传统方式(单个 Opus 实例)
const traditional = {
model: 'claude-opus-4-20250514',
tokens: 200_000,
cost: 200_000 / 1_000_000 * 15, // $3.00
time: 10 * 60 * 1000 // 10 分钟
};
// OMC 方式(模型路由 + 并行)
const omc = {
steps: [
{ agent: 'architect', model: 'opus', tokens: 30_000, cost: 0.45 },
{ agent: 'backend-dev', model: 'sonnet', tokens: 40_000, cost: 0.12, parallel: true },
{ agent: 'frontend-dev', model: 'sonnet', tokens: 40_000, cost: 0.12, parallel: true },
{ agent: 'tester', model: 'haiku', tokens: 20_000, cost: 0.005, parallel: true }
],
totalCost: 0.695, // 节省 77%
totalTime: 3 * 60 * 1000 // 3 分钟(快 3.3 倍)
};
5. 实战:从零搭建 OMC 工作流
5.1 安装与配置
步骤一:安装 OMC
# 方式一:通过 npm 安装(推荐)
npm install -g oh-my-claudecode
# 方式二:从源码安装
git clone https://github.com/Yeachan-Heo/oh-my-claudecode.git
cd oh-my-claudecode
npm install
npm run build
npm link
步骤二:配置 Claude Code
OMC 需要依赖 Claude Code CLI,确保已安装:
# 安装 Claude Code CLI
npm install -g @anthropic-ai/claude-code
# 登录
claude login
步骤三:初始化 OMC 项目
# 创建项目目录
mkdir my-blog-project
cd my-blog-project
# 初始化 OMC
omc init
# 生成的文件结构:
# .omc/
# config.json # 主配置文件
# state.json # 状态文件
# mcp_servers.json # MCP 工具配置
# skills/ # 自定义 Skills
# hooks/ # 自定义 Hooks
# CLAUDE.md # 项目规则(Claude Code 会自动读取)
步骤四:配置 API Token
# 设置环境变量
export ANTHROPIC_API_KEY="your-api-key"
# 或者在 .omc/config.json 中配置
{
"anthropic": {
"apiKey": "{{env.ANTHROPIC_API_KEY}}",
"baseUrl": "https://api.anthropic.com"
}
}
5.2 第一个多智能体任务:自动化 REST API 开发
需求描述
我们要实现一个完整的"博客文章管理 API",包括:
GET /posts- 获取文章列表GET /posts/:id- 获取单篇文章POST /posts- 创建文章PUT /posts/:id- 更新文章DELETE /posts/:id- 删除文章
执行流程
# 启动 OMC
omc run "实现一个博客文章管理 REST API,使用 NestJS + PostgreSQL"
# OMC 会自动:
# 1. 检测到关键词 "REST API" → 加载 rest-api-development Skill
# 2. 任务分解 → architect + backend-dev + tester 三个 Agent
# 3. 并行执行 → 3 分钟后完成
输出结果
✓ 任务完成!
【架构师 Agent (Opus) 输出】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据库设计:
表名:posts
字段:
- id: SERIAL PRIMARY KEY
- title: VARCHAR(200) NOT NULL
- content: TEXT NOT NULL
- author_id: INTEGER REFERENCES users(id)
- created_at: TIMESTAMP DEFAULT NOW()
- updated_at: TIMESTAMP DEFAULT NOW()
索引:
CREATE INDEX idx_posts_author_id ON posts(author_id);
CREATE INDEX idx_posts_created_at ON posts(created_at DESC);
【后端开发 Agent (Sonnet) 输出】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
生成文件:
1. src/posts/posts.controller.ts
2. src/posts/posts.service.ts
3. src/posts/posts.module.ts
4. src/posts/entities/post.entity.ts
5. src/posts/dto/create-post.dto.ts
6. src/posts/dto/update-post.dto.ts
代码示例(posts.controller.ts):
import { Controller, Get, Post, Put, Delete, Param, Body } from '@nestjs/common';
import { PostsService } from './posts.service';
import { CreatePostDto } from './dto/create-post.dto';
import { UpdatePostDto } from './dto/update-post.dto';
@Controller('posts')
export class PostsController {
constructor(private readonly postsService: PostsService) {}
@Get()
findAll() {
return this.postsService.findAll();
}
@Get(':id')
findOne(@Param('id') id: string) {
return this.postsService.findOne(+id);
}
@Post()
create(@Body() createPostDto: CreatePostDto) {
return this.postsService.create(createPostDto);
}
@Put(':id')
update(@Param('id') id: string, @Body() updatePostDto: UpdatePostDto) {
return this.postsService.update(+id, updatePostDto);
}
@Delete(':id')
remove(@Param('id') id: string) {
return this.postsService.remove(+id);
}
}
【测试工程师 Agent (Haiku) 输出】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
生成文件:
1. test/posts/posts.controller.spec.ts
2. test/posts/posts.service.spec.ts
测试覆盖率:87%
代码示例(posts.controller.spec.ts):
import { Test, TestingModule } from '@nestjs/testing';
import { PostsController } from './posts.controller';
import { PostsService } from './posts.service';
describe('PostsController', () => {
let controller: PostsController;
let service: PostsService;
beforeEach(async () => {
const module: TestingModule = await Test.createTestingModule({
controllers: [PostsController],
providers: [PostsService],
}).compile();
controller = module.get<PostsController>(PostsController);
service = module.get<PostsService>(PostsService);
});
it('should return all posts', async () => {
const result = [{ id: 1, title: 'Test Post' }];
jest.spyOn(service, 'findAll').mockResolvedValue(result);
expect(await controller.findAll()).toBe(result);
});
// ... 更多测试用例
});
【汇总】
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ 数据库表已创建
✓ 6 个源文件已生成
✓ 2 个测试文件已生成
✓ 测试覆盖率:87%
✓ Token 消耗:42,350 tokens($0.127)
✓ 执行时间:2 分 47 秒
下一步建议:
1. 运行 npm start 启动服务
2. 访问 http://localhost:3000/posts 测试 API
3. 添加 JWT 认证中间件
4. 部署到 Railway 或 Fly.io
5.3 Autopilot 模式:端到端交付
什么是 Autopilot 模式?
Autopilot 是 OMC 的"全自动模式"——你只需要描述需求,OMC 会自动完成从需求分析到部署上线的全流程。
omc autopilot "开发一个完整的 Todo App,包含:
- 用户注册/登录
- CRUD 操作
- 部署到 Vercel"
# Autopilot 会自动执行以下步骤:
#
# 阶段 1:需求分析(architect Agent)
# - 确定技术栈:Next.js + Prisma + PostgreSQL
# - 确定数据结构:User, Todo
# - 确定 API 接口:RESTful
#
# 阶段 2:数据库设计(architect Agent)
# - 生成 Prisma schema
# - 创建 migration
#
# 阶段 3:后端实现(backend-dev Agent)
# - 实现 tRPC 路由
# - 实现认证逻辑(next-auth)
#
# 阶段 4:前端实现(frontend-dev Agent)
# - 实现 UI 组件(Tailwind CSS)
# - 实现状态管理(React Query)
#
# 阶段 5:测试(tester Agent)
# - 单元测试
# - E2E 测试(Playwright)
#
# 阶段 6:部署(devops Agent)
# - 生成 vercel.json
# - 运行 vercel deploy
#
# 总耗时:~15 分钟
# 总成本:~$2.50
Autopilot 的配置文件
// .omc/autopilot.json
{
"enabled": true,
// 自动部署配置
"autoDeploy": {
"enabled": true,
"platform": "vercel",
"env": {
"DATABASE_URL": "{{env.POSTGRES_URL}}",
"NEXTAUTH_SECRET": "{{env.NEXTAUTH_SECRET}}"
}
},
// 自动测试配置
"autoTest": {
"enabled": true,
"coverageThreshold": 80,
"e2e": true
},
// human-in-the-loop 节点
"approvalNodes": [
"beforeDeploy", // 部署前需要人工确认
"afterArchitectureDesign" // 架构设计完成后需要人工确认
]
}
6. 性能优化与最佳实践
6.1 Token 消耗降低 30-50% 的秘诀
(已在第四章详细介绍,这里补充更多实战技巧)
技巧一:使用 Haiku 做"预过滤器"
在让 Opus 处理任务之前,先用 Haiku 做预处理:
// ❌ 错误示例:直接用 Opus 处理 10 万个文件
const files = readAllFiles('.');
const result = await opusAgent.execute('分析这些文件', files);
// 成本:200K tokens × $15/百万 = $3.00
// ✅ 正确示例:Haiku 先做预处理
const relevantFiles = await haikuAgent.execute('找出与"认证"相关的文件', files);
// 成本:200K tokens × $0.25/百万 = $0.05
const result = await opusAgent.execute('分析这些文件', relevantFiles);
// 成本:10K tokens × $15/百万 = $0.15
// 总成本:$0.20(节省 93%!)
技巧二:增量上下文
不要每次都把完整的上下文发给模型,而是只发送"增量":
// 上下文管理策略
class ContextManager {
private cache: Map<string, string> = new Map();
async getContext(task: Task): Promise<string> {
const cacheKey = task.hash();
// 如果上下文没变,直接返回缓存
if (this.cache.has(cacheKey)) {
return this.cache.get(cacheKey)!;
}
// 否则,只计算增量
const incrementalContext = await this.computeIncremental(task);
const fullContext = this.cache.get(lastTaskHash) + incrementalContext;
this.cache.set(cacheKey, fullContext);
return fullContext;
}
}
6.2 提示缓存(Prompt Caching)实战
深入理解提示缓存的工作原理
提示缓存的核心思想是:API 会从你的请求开头开始匹配,只要内容一模一样,这部分计算就会被缓存复用。
请求 1:
[
{ "role": "system", "content": "你是一个...(1000 tokens)" },
{ "role": "user", "content": "实现登录功能" }
]
↓
API 计算:系统提示词(缓存未命中)+ 用户提示词
成本:1000 tokens
请求 2:
[
{ "role": "system", "content": "你是一个...(1000 tokens)" }, ← 完全相同!
{ "role": "user", "content": "实现注册功能" }
]
↓
API 计算:系统提示词(缓存命中!) + 用户提示词
成本:0 tokens(系统提示词部分)
OMC 的提示缓存优化策略
策略一:把稳定的内容放在最前面
// OMC 的请求结构(精心优化)
const request = {
// 第一层:全局静态的系统提示词(最稳定,缓存命中率 99%)
system: readFile('.omc/system_prompt.md'),
// 第二层:项目规则(较稳定,缓存命中率 80%)
context: readFile('CLAUDE.md'),
// 第三层:工具定义(稳定,缓存命中率 90%)
tools: loadTools(),
// 第四层:当前会话的上下文(不稳定,缓存命中率 10%)
messages: session.getMessages(),
// 第五层:用户的最新需求(完全不稳定)
userPrompt: task.description
};
策略二:避免"缓存破坏"
// ❌ 错误示例:把时间戳放在系统提示词里
const request = {
system: `你是一个 AI 助手。当前时间:${new Date().toISOString()}`,
// 每次请求都不同 → 缓存永远不命中!
messages: [...]
};
// ✅ 正确示例:把时间戳放在 messages 里
const request = {
system: `你是一个 AI 助手。`,
// 稳定 → 缓存命中率 99%
messages: [
{ role: 'user', content: `当前时间:${new Date().toISOString()}\n\n实现登录功能` }
]
};
6.3 上下文管理策略
策略一:分块加载(Lazy Loading)
不要把所有文件都一次性加载进上下文,而是按需加载:
class LazyContextLoader {
async loadContext(task: Task): Promise<Context> {
const context: Context = {
systemPrompt: this.systemPrompt,
tools: this.tools,
messages: []
};
// 第一步:只加载任务的"入口文件"
const entryFile = this.findEntryFile(task);
context.messages.push(await this.readFile(entryFile));
// 第二步:如果模型需要,再加载依赖文件
if (await model.needsMoreContext()) {
const dependencies = this.findDependencies(entryFile);
for (const dep of dependencies) {
context.messages.push(await this.readFile(dep));
}
}
return context;
}
}
策略二:摘要替换(Summarization)
当上下文快满时,把历史对话替换成摘要:
// 伪代码:自动摘要
async function maybeSummarize(context: Context) {
const tokenCount = context.getTokenCount();
if (tokenCount > 150_000) { // 超过 150K tokens
const oldMessages = context.getMessages().slice(0, -10); // 保留最近 10 条
const summary = await llm.summarize(oldMessages);
context.replaceMessages([
{ role: 'system', content: `【历史对话摘要】\n${summary}` },
...context.getMessages().slice(-10)
]);
}
}
7. 与其他工具的对比
7.1 OMC vs Claude Code(原生)
| 维度 | Claude Code(原生) | oh-my-claudecode (OMC) |
|---|---|---|
| 架构 | 单智能体 | 多智能体编排 |
| 并行能力 | 无 | 支持(3-5 倍加速) |
| 成本优化 | 基础 | 高级(模型路由 + 提示缓存) |
| 扩展性 | 受上下文限制 | 支持无限扩展(通过 State) |
| 学习曲线 | 低 | 中 |
| 适用场景 | 简单任务、快速原型 | 复杂项目、生产环境 |
7.2 OMC vs GitHub Copilot Workspace
| 维度 | GitHub Copilot Workspace | oh-my-claudecode (OMC) |
|---|---|---|
| 底层模型 | GitHub Copilot(未公开) | Claude 3.5(可切换) |
| 多智能体 | 不支持 | 支持(19 个 Agent) |
| 自定义能力 | 低(封闭生态) | 高(开源,可自定义) |
| 成本 | 包含在 GitHub Copilot 订阅中 | 按 API 调用付费 |
| 适用场景 | GitHub 生态深度绑定 | 跨平台、跨生态 |
7.3 OMC vs Cursor / Windsurf
| 维度 | Cursor / Windsurf | oh-my-claudecode (OMC) |
|---|---|---|
| 产品形态 | IDE 插件 | CLI + 编排层 |
| 多智能体 | 不支持 | 支持 |
| 终端友好 | 否(需要 IDE) | 是(纯终端) |
| 持续集成 | 不支持 | 支持(可接入 CI/CD) |
| 成本 | 订阅制($20/月) | 按量付费(约 $0.10-$5/任务) |
8. 总结与展望
8.1 核心要点回顾
- 多智能体编排是 AI 编程的未来:从"单打独斗"到"团队协作",用空间换时间。
- OMC 的四层架构:Hooks(神经系统)→ Skills(工作流)→ Agents(执行者)→ State(记忆)。
- 成本优化是关键:通过模型路由、提示缓存、上下文精准投喂,Token 消耗降低 30-50%。
- 开源 + 可扩展:OMC 是开源项目,你可以自定义 Agent、Skill、Hook。
8.2 OMC 的局限性
- 学习曲线:需要理解多智能体编排的概念。
- 调试复杂:当多个 Agent 协作时,问题定位较困难。
- 依赖 Claude Code:目前只支持 Claude 模型(未来计划支持 GPT-5、Gemini)。
8.3 未来展望
- 更多模型支持:计划支持 OpenAI o3、Google Gemini 2.5。
- 可视化编排界面:类似 n8n 的 DAG 编辑器。
- 社区 Skill 市场:一键安装他人分享的 Skill。
- 企业级特性:SSO、审计日志、成本控制。
参考资料
版权声明:本文为原创内容,转载请注明出处(程序员茄子 https://www.chenxutan.com)。
更新日期:2026 年 5 月 26 日