oh-my-opencode:OpenCode 的多 Agent 编排层 —— 把开源工具变成工程团队

上篇讲 OpenCode 本身——一个 AI 程序员。这篇讲 oh-my-opencode——把它变成一个 AI 工程团队。更重要的是,它在多 Provider 之间做故障转移的能力,是商业产品做不到的。


核心架构

oh-my-opencode 在 OpenCode 之上构建了四个核心层:

┌─────────────────────────────────────────────┐
│           oh-my-opencode                    │
├─────────────────────────────────────────────┤
│  Agent 层                                   │
│  ├── Orchestrator:任务拆解和分配            │
│  ├── Coder:代码编写                         │
│  ├── Reviewer:代码审查                      │
│  ├── Tester:测试编写和执行                   │
│  └── DocWriter:文档生成                     │
├─────────────────────────────────────────────┤
│  执行模式层                                  │
│  ├── Team Mode:多 Agent 并行协作            │
│  ├── Autopilot:单 Agent 自主循环            │
│  └── Ultrawork:多 Agent + 自我纠错 + 优先级  │
├─────────────────────────────────────────────┤
│  Provider 层                                │
│  ├── 主 Provider:Claude / GPT / DeepSeek    │
│  ├── 备用 Provider:主 Provider 挂了自动切    │
│  └── 模型路由:按任务分配不同 Provider        │
├─────────────────────────────────────────────┤
│  配置层                                      │
│  ├── oh-my-opencode.json:多 Agent 配置      │
│  ├── opencode.json:OpenCode 基础配置        │
│  └── omo-switch-cli:多套配置快速切换        │
└─────────────────────────────────────────────┘

安装与配置

# 1. 确保 OpenCode 已安装
npm install -g @sst/opencode

# 2. 安装 oh-my-opencode
git clone https://github.com/community/oh-my-opencode ~/.opencode/plugins/oh-my-opencode

# 3. 创建配置
cp ~/.opencode/plugins/oh-my-opencode/oh-my-opencode.example.json \
   ~/.opencode/oh-my-opencode.json

配置文件结构

// ~/.opencode/oh-my-opencode.json
{
  "agent_system": {
    "mode": "team",           // team | autopilot | ultrawork
    "max_agents": 4,          // 最多同时运行的 Agent 数
    "agents": {
      "coder": {
        "model": "claude-sonnet-4-6",
        "worktree": true,     // 在独立 Worktree 中工作
        "auto_review": true   // 写完代码后自动触发 Reviewer
      },
      "reviewer": {
        "model": "claude-haiku-4-5",  // 审查用便宜模型即可
        "strictness": "high"
      },
      "tester": {
        "model": "claude-haiku-4-5",
        "auto_fix": true             // 测试失败自动修复
      },
      "docwriter": {
        "model": "deepseek-v4-flash", // 写文档用最便宜的
        "output_dir": "docs/api"
      }
    }
  },

  "provider_failover": {
    "primary": "anthropic",
    "fallback_chain": ["openai", "deepseek"],
    "health_check_interval": 30,      // 每 30 秒检查 Provider 健康
    "max_retries": 3
  },

  "ultrawork": {
    "max_iterations": 50,     // 最多循环 50 次
    "checkpoint_interval": 5, // 每 5 步保存一次进度
    "auto_rollback": true    // 出错了自动回滚到上一个 checkpoint
  }
}

omo-switch-cli:多套配置快速切换

这是 oh-my-opencode 最实用的功能之一——你在不同项目、不同场景需要不同的配置,一条命令切换:

# 列出所有配置预设
omo-switch list

# 输出:
#   default        → 日常开发(Claude Sonnet + 2 Agent)
#   budget         → 预算模式(DeepSeek + 1 Agent)
#   max-quality    → 极致质量(Claude Opus + 4 Agent)
#   offline        → 离线模式(本地 Ollama)

# 切换到预算模式
omo-switch use budget

# 创建自己的预设
omo-switch create my-preset \
  --model claude-sonnet-4-6 \
  --mode team \
  --agents 3

预设示例

// ~/.opencode/presets/budget.json
{
  "models": {
    "default": "deepseek-v4-pro"
  },
  "agent_system": {
    "mode": "autopilot",     // 预算模式只要单 Agent
    "max_agents": 1
  }
}

// ~/.opencode/presets/max-quality.json
{
  "models": {
    "default": "claude-opus-4-7"
  },
  "agent_system": {
    "mode": "ultrawork",
    "max_agents": 4,
    "agents": {
      "coder": { "model": "claude-opus-4-7" },
      "reviewer": { "model": "claude-sonnet-4-6" },
      "tester": { "model": "claude-sonnet-4-6" },
      "docwriter": { "model": "claude-haiku-4-5" }
    }
  }
}

// 切换
omo-switch use max-quality  // 重要项目
omo-switch use budget       // 个人项目
omo-switch use default      // 日常

Ultrawork 自主执行模式

Ultrawork 是 oh-my-opencode 的多 Agent 自主执行模式,对标 Codex 的 /goal:

Ultrawork 的执行循环:

1. 你给一个目标
   "重构用户模块的数据库层,从同步改异步,并写完整测试"

2. Orchestrator 拆解任务
   ├── 子任务 1:改造 User model(异步 session)
   ├── 子任务 2:改造 UserRepository(异步查询)
   ├── 子任务 3:改造 UserService(异步调用)
   ├── 子任务 4:更新所有调用方
   └── 子任务 5:写异步测试

3. 分配 Agent
   Coder → 子任务 1-4(串行,因为有依赖)
   Tester → 子任务 5(并行,不需要等 Coder 全部完成)

4. 执行 + 自我纠错
   每完成一个子任务 → Reviewer 自动审查
   审查不通过 → Coder 修复 → 再审查
   测试不通过 → Tester 分析 → Coder 修复 → 再测试

5. Checkpoint
   每 5 步保存一次进度
   如果后续步骤出错 → Rollback 到上一个 Checkpoint → 换策略重试

6. 汇报
   全部子任务完成
   → Orchestrator 汇总结果
   → 输出报告:做了什么、改了哪些文件、有没有遗留问题

Ultrawork vs /goal

oh-my-opencode Ultrawork Codex /goal
模型要求 任意模型 仅 GPT-5.5/5.3-Codex
开源 ✅ MIT ❌ 闭源
自我纠错 ✅ Reviewer + Tester ✅ 内置审查
Rollback ✅ Checkpoint 机制 ❌ 无
多 Provider 故障转移
成熟度 较新(社区驱动) 成熟(官方维护)

Slim 单文件配置策略

oh-my-opencode 支持把所有配置合并到一个文件中,方便分享和版本管理:

// oh-my-opencode.slim.json —— 一个文件包含全部配置
{
  // OpenCode 基础配置(原 opencode.json)
  "opencode": {
    "models": {
      "default": "claude-sonnet-4-6",
      "providers": [...]
    }
  },

  // oh-my-opencode Agent 配置(原 oh-my-opencode.json)
  "omo": {
    "agent_system": { ... },
    "provider_failover": { ... },
    "ultrawork": { ... }
  },

  // 自定义 Tool(原 opencode.json tools.custom)
  "tools": {
    "run_tests": {
      "command": "pytest ${test_path:-tests/} -v",
      "parameters": { ... }
    }
  },

  // MCP Server 配置
  "mcp": {
    "mcpServers": {
      "github": { ... }
    }
  }
}

Slim 策略的好处

场景:新同事入职

传统方式:
  "你先装 OpenCode,然后配 opencode.json,
   然后装 oh-my-opencode,然后配 oh-my-opencode.json,
   然后配 MCP,然后配自定义 Tool..."
  → 6 个步骤,每个都可能出错

Slim 方式:
  "把这个文件放到 ~/.opencode/,运行 opencode"
  → 1 个步骤

团队把这一个文件放在项目仓库的 .opencode/ 目录下,新人 clone 项目后自动获得全套配置。


多 Provider 故障转移链

这是 oh-my-opencode 最独特的功能——商业产品做不到,因为它们只绑定自己的模型:

{
  "provider_failover": {
    "primary": "anthropic",
    "fallback_chain": ["openai", "deepseek", "ollama-local"],
    "health_check_interval": 30,
    "max_retries": 2
  }
}

故障转移的实际运行

正常情况:
  OpenCode → Anthropic API → Claude Sonnet → 正常响应

Anthropic API 挂了(确实发生过):
  OpenCode → Anthropic API → ❌ 超时
          → OpenAI API → GPT-5.3-Codex → 正常响应

OpenAI 也挂了(极其罕见但有可能):
  OpenCode → Anthropic API → ❌
          → OpenAI API → ❌
          → DeepSeek API → DeepSeek → 正常响应

所有云 API 都挂了(断网):
  OpenCode → ... → ❌
          → Ollama Local → 本地模型 → 正常响应(质量下降但能工作)

为什么这很重要

场景:你在赶一个周五下午截止的 PR

15:30 → Anthropic API 突然开始返回 500 错误
        Claude Code 用户:只能等 API 恢复,PR 延期
        oh-my-opencode 用户:自动切到 GPT,继续工作
        15:45 PR 按时提交

这不是假设场景。2025-2026 年 Anthropic 和 OpenAI
都出现过 30 分钟以上的 API 中断。

与 oh-my-claude 的功能对比

维度 oh-my-claude oh-my-opencode
底层工具 Claude Code(闭源) OpenCode(开源)
模型绑定 只支持 Claude 系列 75+ LLM 任意切换
Agent 数量 2-3 个(轻量) 可配置(1-5 个)
执行模式 Team / Autopilot / Ultrawork Team / Autopilot / Ultrawork
Provider 故障转移 ❌(只有一个 Provider) ✅ 多 Provider 链
配置切换 手改配置 omo-switch-cli 一键切换
配置分发 通过 Plugin Slim 单文件
成熟度 较成熟 较新,社区活跃
适合人群 Claude 生态的深度用户 多模型用户、预算敏感、需要私有化

选型建议

选 oh-my-claude 如果:
  ├── 你已经深度绑定 Claude Code 生态
  ├── 你不需要切换模型
  └── 你想要最稳定的体验

选 oh-my-opencode 如果:
  ├── 你需要对接多种模型(包括国产模型)
  ├── 你对成本敏感,想按任务分级用不同价格的模型
  ├── 你需要私有化部署
  ├── 你需要 Provider 故障转移的高可用性
  └── 你偏好开源方案

混用也可以:
  - 日常主力:Claude Code + oh-my-claude
  - 省钱/备份:OpenCode + oh-my-opencode(Slim 配置 ready)
  - 当前者挂了,后者无缝顶上

OpenCode 两部曲总结

上篇(第 18 篇):OpenCode 基础
  → 安装 + 75+ LLM 配置 + TUI + 自定义 Tool
  → 四大适用场景(省钱/私有化/多模型/定制)

下篇(本篇):oh-my-opencode 多 Agent 编排
  → Agent 系统架构
  → omo-switch-cli 一键切换配置
  → Ultrawork 自主执行 + Checkpoint
  → Slim 单文件分发
  → 多 Provider 故障转移链

至此,三大终端 Agent(Claude Code / Codex / OpenCode)全部深度覆盖完毕。接下来进入最后一部分——把它们放在一起横向对比,以及生产级实战。


延伸阅读

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐