Oh My OpenAgent:为什么它不是另一个 Boilerplate

项目:https://github.com/code-yeongyu/oh-my-openagent
热度:Anthropic 因它封禁 OpenCode
核心定位:生产级多 Agent 编排引擎,不是模板
一、核心论断
这不是模板,是运行时编排引擎。
| 维度 | Boilerplate | Oh My OpenAgent |
|---|---|---|
| 本质 | 预配置模板(复制即用) | 运行时编排引擎(动态决策) |
| 模型选择 | 硬编码单模型 | Category 系统自动路由 |
| 编辑工具 | 标准 patch/replace | Hashline(行哈希校验) |
| Agent 协作 | 单 Agent | Sisyphus + 5+ 子 Agent 并行 |
| 状态追踪 | 无 | .sisyphus/ wisdom 积累 |
| MCP 管理 | 全局加载 | Skill-Embedded 按需启动 |
| LSP/AST | 无 | IDE 级精度 |
二、架构总览
层级关系图
┌─────────────────────────────────────────────────────────┐
│ Hermes Agent │
│ (上层编排器,管理终端/进程/会话) │
└─────────────────────┬───────────────────────────────────┘
│ terminal / process
↓
┌─────────────────────────────────────────────────────────┐
│ OpenCode CLI │
│ (基础 AI 编码代理,TUI + CLI,工具调用) │
└─────────────────────┬───────────────────────────────────┘
│ 插件系统
↓
┌─────────────────────────────────────────────────────────┐
│ Oh My OpenAgent (OmO) 插件 │
│ (多 Agent 编排层,Sisyphus/Prometheus/Atlas等) │
└─────────────────────────────────────────────────────────┘
定位说明
| 组件 | 定位 | 类比 |
|---|---|---|
| OpenCode | 基础执行引擎 | 单兵作战 |
| OmO | 编排插件 | 团队协作 |
| Hermes | 上层控制器 | 项目经理 |
三、OmO 内部架构流程图
用户请求 → IntentGate(意图识别)
↓
Sisyphus(永不停止的主编排器)
↓
┌─────────┼─────────┬─────────┐
↓ ↓ ↓ ↓
Prometheus Atlas Hephaestus Librarian
(规划师) (执行者) (深度工) (文档搜索)
↓ ↓ ↓ ↓
Metis Category 自主研究 Explore
(差距分析) Agents +验证
↓ ↓
Momus visual/deep/quick
(无情评审)
核心 Agent 角色
| Agent | 模型推荐 | 职责 |
|---|---|---|
| Sisyphus | GLM-5 / Claude Opus | 主编排器,永不停止 |
| Prometheus | GLM-5 / Kimi K2.5 | 战略规划,访谈澄清需求 |
| Atlas | Claude/GPT/Gemini | 执行 Prometheus 计划 |
| Hephaestus | GPT-5.4 xhigh | 自主深度工 |
| Metis | — | 规划前差距分析 |
| Momus | — | 无情评审计划 |
| Oracle | GLM-5 | 架构顾问(只读) |
| Librarian | MiniMax / Haiku | OSS 文档搜索 |
| Explore | 快模型 | 代码库 grep |
四、五大非 Boilerplate 特征
1. Hash-Anchored Edit Tool(解决 Harness Problem)
"Most agent failures aren't the model. It's the edit tool." — Can Bölük
问题根源:传统 edit tool 要求模型复现已读内容,模型做不到 → 用户怪模型。
OmO 解决方案(Hashline):
# 传统编辑(模型需复现内容)
patch(old="function hello() {", new="function greet() {")
# Hashline 编辑(引用哈希标签)
11#VK| function hello() {
22#XJ| return "world";
33#MB| }
# Agent 只需引用标签,不复现内容
edit(line=11, hash=VK, new_content="function greet() {")
机制:
- 每行带哈希标签 #VK
- Agent 编辑时引用标签
- 文件变更 → 哈希不匹配 → 编辑被拒绝
- 零 whitespace 复现错误,零 stale-line 错误
实测数据:Grok Code Fast 1 成功率 6.7% → 68.3%(仅换编辑工具)
2. Discipline Agents(永不停止的编排器)
Sisyphus = "永不停止"的主 Agent:
用户任务 → Sisyphus 接管
↓
监控子 Agent 进度
↓
阻塞 → 自动重试 → 换策略 → 再试
↓
任务完成才退出
效率对比
| 系统 | 完成时间 | 原因 |
|---|---|---|
| Human | 3 months | 手动迭代 |
| Claude Code | 7 days | 单 Agent,每步需确认 |
| Sisyphus | 1 hour | 多 Agent 并行,自动闭环 |
"If Claude Code does in 7 days what a human does in 3 months, Sisyphus does it in 1 hour." — B, Quant Researcher
3. Category-Based Model Routing(任务→模型自动映射)
Boilerplate 做法:硬编码 "model": "claude-opus-4"
OmO 做法:Agent 声明 category → Harness 自动选模型
| Category | 默认模型 | 适用场景 |
|---|---|---|
| visual-engineering | Gemini 3.1 Pro | 前端/UI/UX |
| ultrabrain | GPT-5.4 xhigh | 深度推理/架构 |
| deep | GPT-5.4 medium | 自主执行 |
| quick | GPT-5.4-mini | 单文件修改 |
| unspecified-high | Claude Opus 4.7 | 通用高投入 |
| writing | Kimi K2.5 | 文档/博客 |
动态优势:
- Agent 不需要知道模型名
- 模型成本下降 → 自动换更便宜的
- 新模型发布 → 更新映射表 → 无需改代码
4. Skill-Embedded MCPs(Context 预算管理)
传统 MCP 问题:全局加载所有 MCP servers → 吃掉 context window → 长任务失败
OmO 解决方案:
Skill 携带自己的 MCP server
↓
任务触发 Skill → MCP 按需启动
↓
Scoped 到任务
↓
任务结束 → MCP 关闭 → context 释放
| 方案 | Context 占用 | 适用场景 |
|---|---|---|
| 传统全局 MCP | 持续占用 | 短任务 |
| Skill-Embedded | 按需分配 | 长任务/多任务并行 |
5. LSP + AST-Grep(IDE 级精度)
传统 Agent 编辑:grep 找文本 → patch 替换 → whitespace 错误 → 破坏代码
OmO 工具集:
| 工具 | 功能 | 精度 |
|---|---|---|
| lsp_rename | Workspace 级重命名 | IDE 级(跨文件同步) |
| lsp_goto_definition | 跨文件跳转 | IDE 级(AST 解析) |
| lsp_diagnostics | 预构建诊断 | IDE 级(实时错误检测) |
| ast_grep | 25 语言 AST-aware 搜索 | AST 级(语义匹配) |
五、三种工作模式流程图
Mode 1: Ultrawork(懒人模式)
opencode run 'ulw add JWT auth to Express'
IntentGate 识别 ulw 关键词
↓
Sisyphus 启动编排
↓
Explore Agent 扫描代码库
↓
Librarian 搜索 JWT 最佳实践
↓
Category Agent (deep) 实现核心逻辑
↓
Category Agent (quick) 添加测试
↓
验证 → 发现问题 → 自动修复循环
↓
完成,无需用户干预
特点:一句话触发,自动完成全流程
Mode 2: Prometheus Planning(精确控制模式)
opencode # 启动 TUI
@plan migrate MongoDB to PostgreSQL # 进入规划
Prometheus 访谈用户
↓
生成详细计划 → .sisyphus/plans/migrate-db.md
↓
Metis 分析差距(缺失信息、风险)
↓
Momus 评审计划(拒绝不靠谱部分)
↓
/start-work
↓
Atlas 执行计划,记录 wisdom
↓
.sisyphus/notepads/migrate-db/
├── learnings.md
├── decisions.md
└── issues.md
特点:决策留痕,跨会话连续执行
Mode 3: Hephaestus Deep Work(深度推理模式)
opencode --agent hephaestus
Hephaestus (GPT-5.4 xhigh)
↓
自主探索代码库
↓
跨域综合、架构决策
↓
复杂调试、系统性重构
特点:最高推理能力,自主执行
六、状态持久化结构
OmO 创建 .sisyphus/ 目录追踪执行状态:
.sisyphus/ ├── plans/ │ └── migrate-db.md # Prometheus 计划文件 ├── boulder.json # Atlas 执行状态(进度、阻塞点) ├── notepads/ │ └── migrate-db/ │ ├── learnings.md # 成功经验、发现模式 │ ├── decisions.md # 架构决策记录 │ ├── issues.md # 遇到的问题、阻塞点 │ └── verification.md # 测试结果、验证步骤
作用:
- 跨会话恢复执行
- Wisdom 积累(成功经验复用)
- 问题追踪(阻塞点不丢失)
七、Anthropic 为什么封禁 OpenCode
"Anthropic blocked OpenCode because of us. They want you locked in."
核心冲突:
| 系统 | 立场 | 模型策略 |
|---|---|---|
| Claude Code | Anthropic 生态闭环 | 只推 Claude 模型 |
| OmO | 多供应商开放 | Claude/Kimi/GLM + GPT + Gemini |
技术洞察:
Claude Code = 精装修的监狱 OmO = 骑所有模型,不绑定供应商
作者将 Hephaestus 命名为 "The Legitimate Craftsman" —— 讽刺 Anthropic 的封锁行为。
八、真实用户证据
| 用户 | 评价 | 来源 |
|---|---|---|
| Arthur Guiot | "取消 Cursor订阅,开源太疯狂" | X |
| Jacob Ferrari | "一天消灭 8000 eslint warnings" | X |
| James Hargis | "45k 行 Tauri App → SaaS 一夜完成" | X |
| Henning Kilset | "应该拉进 core 并招募他" | 反馈 |
| mysticaltech | "hire 作者,他革命了 opencode" | X |
九、开发者动机
"I burned through $24K in LLM tokens on personal projects. Tried every tool. OpenCode won."
这不是为了卖模板,是解决自己的痛点:
| 问题 | OmO 答案 |
|---|---|
| 哪个模型逻辑最锐利? | GPT-5.4 xhigh |
| 谁是调试之神? | Hephaestus |
| 谁写散文最好? | Kimi K2.5 |
| 谁统治前端? | Gemini 3.1 Pro |
| 日常驾驶最快的? | GPT-5.4-mini |
OmO = 这些问题的答案集合,持续更新。
十、结论
三句话总结
- 不是模板,是引擎:runtime 决策,动态路由,自动恢复
- 解决 Harness Problem:Hashline 把编辑成功率从 6.7% 拉到 68.3%
- 多模型编排:Claude/Kimi/GLM 编排 + GPT 推理 + Gemini 前端,不绑定供应商
关键引用
"Anthropic blocked OpenCode because of us. That's why Hephaestus is called 'The Legitimate Craftsman.' The irony is intentional."
"If OpenCode is Debian/Arch, OmO is Ubuntu/Omarchy."