oh-my-opencode-slim:轻量级 Agent 编排方案
适合读者: 个人开发者, 效率追求者, 预算敏感型用户, 想要快速上手 Agent 编排的新手
本文介绍 oh-my-opencode-slim 的轻量级 Agent 编排方案,帮助你理解其 Hub-and-Spoke 架构、关键特性以及与 oh-my-openagent 的对比选型策略。
背景
随着 Agent 编排概念的普及,社区出现了两种发展路径:一是 oh-my-openagent(OMO)这样功能完备的全能框架,二是 oh-my-opencode-slim 这样追求轻量高效的替代方案。
slim 由 alvinunreal 开发(6.5K⭐),定位是“预算敏感的轻量级 OpenCode 增强插件“。与 OMO 的“全都要“理念不同,slim 选择了一条截然不同的路——用预设驱动配置降低入门门槛,用 $30 Preset 控制使用成本,用 Hub-and-Spoke V2 架构简化 Agent 协作。
设计理念:简单即高效
slim 的核心设计原则可以概括为三个词:开箱即用、预算可控、够用就好。
Hub-and-Spoke V2
slim 采用 Hub-and-Spoke(轮毂-辐条)V2 架构,所有 Agent 围绕一个中心协调器工作:
flowchart TB
subgraph Preset["Preset 驱动层"]
P1[OpenAI Preset<br/>GPT-4o + GPT-4o-mini] --- P2[OpenCode Go Preset<br/>自定义 Provider]
end
subgraph Hub["Hub-and-Spoke V2 编排层"]
direction TB
S(Sisyphus<br/>协调器) --> E[Explorer<br/>代码探索]
S --> C[Coder<br/>代码编写]
S --> R[Reviewer<br/>代码审查]
S --> D[Debugger<br/>调试诊断]
end
subgraph BG["后台 Agent 层"]
direction LR
CO[Companion<br/>伴生监控] --- RF[Reflect<br/>反思总结]
end
subgraph Tool["基础能力层"]
direction LR
LS[LazySkills<br/>按需加载] --- CT[Council<br/>多模型共识] --- WT[Worktrees<br/>隔离执行]
end
Preset --> S
CO -.->|session:tick 驱动| S
RF -.->|任务后回顾| S
S --> LS
S --> CT
S --> WT
style S fill:#4A90D9,color:#fff
style E fill:#4A90D9,color:#fff
style C fill:#4A90D9,color:#fff
style R fill:#4A90D9,color:#fff
style D fill:#4A90D9,color:#fff
style CO fill:#50C878,color:#fff
style RF fill:#50C878,color:#fff
style P1 fill:#FF9F43,color:#fff
style P2 fill:#FF9F43,color:#fff
style LS fill:#A66CFF,color:#fff
style CT fill:#A66CFF,color:#fff
style WT fill:#A66CFF,color:#fff
7 个 Agent 的角色分工明确:
| Agent | 角色 | 职责 |
|---|---|---|
| Sisyphus(协调器) | 中心轮毂 | 任务分配、结果汇总、全局状态管理 |
| Explorer | 探索者 | 代码搜索、模式发现、代码库理解 |
| Coder | 实现者 | 代码编写、修改、重构 |
| Reviewer | 审查者 | 代码审查、质量检查、问题诊断 |
| Debugger | 调试者 | Bug 定位、根因分析、修复验证 |
| Companion | 伴生 Agent | 后台持续运行、监控文件变化、自动执行任务 |
| Reflect Agent | 反思 Agent | 回顾执行过程、提出改进建议、自我修正 |
这种架构的优点是:Agent 间通信路径短(所有 Agent 都通过中心协调器交互),协作复杂度随 Agent 数量线性增长(而非指数级),适合中小规模的编排场景。
预设驱动配置
slim 将配置复杂度封装为两个预设(Preset),用户只需要选择预设,无需逐项配置 Agent 参数:
| 预设 | 目标模型 | 成本上限 | 适合场景 |
|---|---|---|---|
| OpenAI Preset | GPT-4o / GPT-4o-mini | $30 | 需要最强模型能力,预算有上限的个人开发 |
| OpenCode Go Preset | 通过 OpenCode Provider 配置 | $30 | 使用其他模型供应商(Claude、国产模型等) |
每个预设内置了:
- Agent 角色到模型的映射(哪些 Agent 用强模型,哪些用轻量模型)
- Token 预算分配策略(按 Agent 类型设定上限)
- 重试和超时策略(失败自动重试、超时切换备用模型)
- Skill 加载策略(LazySkills 按需加载)
用户只需要在 opencode.json 中引入 Preset 即可:
{
"plugins": [
{
"name": "oh-my-opencode-slim",
"preset": "openai" // 或 "opencode-go"
}
]
}
$30 Preset:预算即架构
slim 最独特的设计是 $30 Preset——一个硬性的成本上限约束。这不是一个功能限制,而是一种架构选择。slim 的设计者认为,对个人开发者来说,每月 $30 是一个合理的 AI 编码工具预算。这个上限倒逼了 slim 在以下方面的优化:
- Token 预算按 Agent 类型差异化分配:Explorer 用轻量模型省钱,Coder 用强模型保证质量
- LazySkills:只在实际用到某个 Skill 时才加载其指令,避免上下文浪费
- 智能降级:某个模型达到预算上限后自动切换到备用模型,不中断工作流
关键特性
Background Agents(后台 Agent)
slim 支持在用户不主动交互时,Agent 在后台持续运行。例如:
- 你提交代码后,后台 Agent 自动运行测试并报告结果
- 你在写文档时,后台 Agent 自动检查当前分支的代码质量
- 你处理 A 任务时,后台 Agent 预加载 B 任务的上下文
与 OMO 的区别:OMO 的 Background Agent 需要通过 Ultrawork 或自定义工作流配置,slim 的 Background Agent 是内置特性,启用 Preset 后自动可用。
Companion Mode(伴生模式)
Companion 是 slim 最具特色的 Agent 角色之一。它不同于传统的“执行任务→返回结果“模式,而是:
- 长期驻留:在会话整个生命周期内持续存在
- 主动观察:监控文件变化、命令输出、Agent 行为模式
- 上下文记忆:记住之前的决策和偏好,在新任务中复用
- 低干扰介入:仅在关键节点触发提醒,不过度打断工作流
Companion 适合以下场景:
- 代码审查时,Companion 自动跟踪哪些文件被修改了
- 重构时,Companion 记住你之前的命名约定
- 调试时,Companion 记录你尝试过的方案和结果
Deepwork(深度工作模式)
Deepwork 在 slim 中指「无干扰的长时间专注执行」。Agent 进入 Deepwork 模式后:
- 关闭不必要的工具调用(MCP、文件读取等)
- 暂缓后台 Agent 的次要通知
- 聚焦单一目标直到完成,不主动切换上下文
- 在达到预设 Token 预算时自动停止并生成摘要
Reflect(反思机制)
slim 的 Reflect Agent 在每个任务阶段结束时自动回顾:
- 行为回顾:刚才的执行过程中,哪些决策是正确的?哪些是有问题的?
- 质量自评:输出结果的质量是否符合预期?是否有遗漏?
- 改进建议:下次遇到类似任务,应该怎么做更好?
- 模式积累:将有效的模式加入 Companion 的记忆,作为未来任务的参考
Reflect 的输出不打断主流程——它写入一个独立的日志,用户可以随时查看,也可以在需要时让 Reflect 主动提出修正建议。
Worktrees 集成
slim 原生支持 git worktree(工作树),为并行任务提供文件系统级的隔离:
- 每个 Agent 在自己的 worktree 中独立工作,互不干扰
- 任务完成后,PR 级别的变更合并只需要比较两个 worktree 的差异
- 避免多个 Agent 同时修改同一文件的冲突
LazySkills
传统 Skill 系统在会话启动时加载所有配置的 Skill,即使当前任务用不到。slim 的 LazySkills 机制改变了这一点:
- Skill 只在首次被调用时加载
- 加载后的 Skill 按使用频率缓存(高频 Skill 保持加载,低频 Skill 自动卸载)
- 上下文窗口压力大幅降低(实测约减少 30-40%)
Council(多模型共识)
slim 的 Council 机制允许多个不同模型的 Agent 对同一问题给出判断,通过投票或加权评分达成共识:
# Council 配置示例
council:
enabled: true
members:
- model: gpt-4o
weight: 1.0
- model: claude-3-5-sonnet
weight: 1.0
- model: gemini-pro
weight: 0.5
consensus: majority # majority | weighted | unanimous
apply_to: [code_review, architecture_decision]
Council 的生产力价值在于:对于高风险决策(架构选型、安全审计),多模型交叉验证比单模型更可靠。对于日常编码任务,Council 默认关闭以节省成本。
与 oh-my-openagent 对比
这是一份更全面的对比,覆盖两个项目的核心差异:
| 维度 | oh-my-openagent (OMO) | oh-my-opencode-slim |
|---|---|---|
| 架构 | 三层(规划→编排→执行) | Hub-and-Spoke V2(中心辐射) |
| Agent 数量 | 11(Sisyphus, Atlas, Atlas-Turbo 等) | 7(Sisyphus, Explorer, Coder, Reviewer, Debugger, Companion, Reflect) |
| 配置复杂度 | 中等偏高(需理解 Category、模型路由等) | 低(预设驱动,两行配置可用) |
| 工作流模式 | Ultrawork, Prometheus, Team Mode, 派生, 自定义 | Hub-and-Spoke 协作,Background Agents,Deepwork |
| 成本控制 | 手动配置 Token 预算 | 内置 $30 Preset |
| Plugin 扩展 | 60+ Hook 点,完整的 Plugin API | 有限扩展点,聚焦核心场景 |
| 多模型 | Category 路由 + 模型降级链 | Council 多模型共识(可选) |
| Skill | 标准 Skill 系统 | LazySkills(按需加载) |
| 并行协作 | Team Mode(同一进程多 Agent) | Worktrees 隔离(文件系统级) |
| ACP Agent | 需额外配置 | 内置 |
| 背景执行 | 通过 Ultrawork/自定工作流 | 内置 Background Agents |
| 学习曲线 | 1-3 天入门 | 30 分钟入门 |
| 社区 | 64.8K⭐ | 6.5K⭐ |
| GitHub | code-yeongyu/oh-my-openagent | alvinunreal/oh-my-opencode-slim |
何时选哪个
| 你的场景 | 推荐选择 | 理由 |
|---|---|---|
| 个人开发者,想体验 Agent 编排 | slim | 5 分钟配置完成,$30 预算即用 |
| 小团队协作开发 | slim | Background Agents + Companion 足够日常使用 |
| 需要完整的 CI/CD 工作流 | OMO | Ultrawork + Team Mode + 派生模式全覆盖 |
| 大型项目跨模块重构 | OMO | Prometheus 规划 + Team Mode 并行 + 派生模式分工 |
| 预算敏感,但需要编排能力 | slim | $30 Preset 内置成本控制 |
| 需要 60+ Hook 点扩展 | OMO | 完整的 Plugin API 生态 |
| 想在多种模型间智能路由 | OMO | Category 路由 + 模型降级链更成熟 |
| 需要多模型交叉验证 | slim | Council 机制轻量可用 |
| 希望 Agent 后台持续运行 | slim | Background Agents + Companion 内置支持 |
最佳实践
快速入门
-
安装 slim:
# 通过 OpenCode 插件安装 opencode plugin install oh-my-opencode-slim -
选择 Preset:
{ "plugins": [ { "name": "oh-my-opencode-slim", "preset": "openai" } ] } -
启动一次协作:在 OpenCode TUI 中直接描述需求,slim 自动按照 Hub-and-Spoke 模式调度 Agent 完成。
与 OMO 共存配置
slim 和 OMO 可以安装在同一个 opencode.json 中,但一次只能启用一个:
{
// 简单项目使用 slim
"plugins": [
{
"name": "oh-my-opencode-slim",
"preset": "opencode-go"
}
],
// 注释掉的 OMO 配置,复杂项目时启用
// "plugins": [
// "oh-my-openagent"
// ]
}
切换时只需要注释/取消注释插件配置,不需要卸载。slim 和 OMO 的运行时各自独立,不会冲突。
节省成本的配置建议
- 启用 Council 仅用于高风险决策(架构评审、安全审计),日常任务关闭以节省 Token
- 合理使用 LazySkills:只安装你真正需要的 Skill,避免加载冗余 Skill 影响上下文
- 调整 Token 预算:如果 $30 不够用,可以在 Preset 中调整上限
小结
oh-my-opencode-slim 提供了一条与 oh-my-openagent 截然不同的 Agent 编排路径——用预设降低复杂度,用 $30 Preset 控制成本,用 Hub-and-Spoke 架构简化协作。它不是 OMO 的替代品,而是互补选择:简单项目用 slim 快速启动,复杂项目用 OMO 全量编排。
对于还在观望 Agent 编排的个人开发者和小团队,slim 的轻量特性大幅降低了尝试门槛。对于已经使用 OMO 的团队,slim 可以作为简单任务场景的备选,形成「重轻搭配」的工具矩阵。
关联章节
- ← oh-my-openagent 集成 — OMO 的完整配置指南(含 slim 对比)
- ← 环境搭建 — 在 Ch3 选择适合你的搭建方案
- → 多 Agent 协作 — 传统多 Agent 协作模式与 slim 的 Hub-and-Spoke 对比
- → 自定义工作流 — 如果需要 slim 无法覆盖的场景,自定义工作流是进阶方向
- → OpenCode 生态参考 — 包含 slim 在 Plugin 生态中的详细定位