OpenCode 的 OMO Slim 插件配置记录
最近把 OpenCode 的插件换成了 oh-my-opencode-slim,也就是我这里简称的 OMO Slim。它主要做的事很简单:给 OpenCode 增加一套更像“项目经理 + 专门工种”的工作流,让不同任务交给不同角色去做。
你可以把它想象成一个有能力的领导,带着一群各有专精的下属。领导不一定亲自敲每一行代码,但他知道什么时候该让谁上,什么时候该自己拍板,什么时候该让查资料的人去查资料,什么时候该让写代码的人直接动手。
我用它不是为了搞一堆花里胡哨的“智能体宇宙”,而是为了让 OpenCode 干活更直接一点。以前很多 agent 框架喜欢搞 Council,也就是几个角色开会、互相评价、互相辩论,听上去很热闹,实际用起来经常是:问题没多复杂,会议先开半天,token 哗哗烧,方案改来改去,最后还不如一个靠谱模型直接敲板。
所以我现在这套 OMO Slim 的核心思路是:禁用 Council 会议角色,保留真正有用的专业角色。 我非常讨厌瞎开大会。AI 开大会给我的感觉也差不多:一群萝卜坐在一起开会,啥也讨论不出来,方案来回改,token 倒是烧得很快。
为什么禁用 Council
Council 这种东西并不是完全没用。遇到非常复杂的架构取舍、多系统重构、长期维护风险,找几个模型从不同角度评审一下,确实可能有价值。
但日常写代码不是天天在修三峡大坝。大部分任务就是:先找文件,再改代码,再跑测试。为了这种事开会,纯属给自己找麻烦。
我的感觉是,Council 最大的问题有两个:
- 慢。几个角色来回说话,哪怕结论正确,也要等它们把流程走完。
- 贵。每个角色都要消耗上下文和 token,最后很多内容只是重复包装。
这和现实里的会差不多。真正能解决问题的人,通常两句话就知道该干什么;解决不了问题的人,才喜欢把简单事情流程化、会议化、仪式化。AI agent 也一样,能直接派活就直接派活,别动不动搞“专家组会诊”。
所以 OMO Slim 里我把 Council 当成默认禁用,只在用户明确需要的时候再考虑打开。平时保留几个真正有用的角色:
orchestrator:调度任务,决定自己做还是派给别的角色。explorer:快速搜代码、找文件、梳理项目结构。fixer:执行明确的代码修改。librarian:查外部文档和 GitHub 示例。oracle:处理复杂判断、架构取舍、代码审查。这个角色不能去掉,尤其是代码审查不能丢给主代理自己负责。designer:专门管 UI/UX、布局、视觉和交互。这个角色大概率不是每次都用得上,但偶尔真有 UI 任务时还是得存在。
这样分工比较朴素,但也够用了。写代码不是拍电影,没必要每个角色都出场。
安装插件
OpenCode 的主配置里启用插件就行:
{ "$schema": "https://opencode.ai/config.json", "plugin": [ "oh-my-opencode-slim@latest" ]}我自己的 OpenCode 里还配置了 codegraph、chrome-devtools 这些 MCP,不过这些和 OMO Slim 本身不是一回事。插件只要在 plugin 里加上就能加载。
OMO Slim 配置文件
OMO Slim 的配置文件一般放在:
~/.config/opencode/oh-my-opencode-slim.jsonc我现在用的是一个自建模型池 preset。下面是删掉敏感信息、也把 provider 名字去掉之后的主要配置:
{ "$schema": "https://unpkg.com/oh-my-opencode-slim@latest/oh-my-opencode-slim.schema.json", "agents": { "council": { "model": "gpt-5.6-luna" }, "designer": { "model": "gpt-5.6-luna" }, "explorer": { "model": "gpt-5.6-luna" }, "fixer": { "model": "gpt-5.5", "variant": "high" }, "librarian": { "model": "gpt-5.6-luna" }, "oracle": { "model": "gpt-5.5", "variant": "high" }, "orchestrator": { "model": "gpt-5.5", "variant": "high" } }}这里不要把 apiKey、baseURL 之类的东西贴到博客或者公开仓库里,provider 名字也可以直接去掉。模型 provider 的配置应该放在 OpenCode 自己的配置里,写教程时最多写模型层级和角色分配,密钥一个字都别露。
这些角色怎么分模型
我的分配原则很简单:调度和判断用强一点的模型,搜索和查资料用便宜一点的模型,真正写代码的角色不能太弱。
orchestrator
"orchestrator": { "model": "gpt-5.5", "variant": "high"}orchestrator 是总调度,负责判断任务应该自己做,还是派给 explorer、fixer、librarian 这些角色。这个角色不能太弱,否则它会乱派活,或者该派不派、不该派乱派。
我这里给它用的是 gpt-5.5 的 high 档。调度器要负责判断任务路线,这个位置用太弱的模型,很容易变成该派不派、不该派乱派。
explorer
"explorer": { "model": "gpt-5.6-luna"}explorer 只负责在代码库里找东西。比如某个组件在哪、某个 API 从哪里进来、某个配置到底被谁读取。它不需要太强的推理能力,关键是快、便宜、能把结果压缩清楚。
fixer
"fixer": { "model": "gpt-5.5", "variant": "high"}fixer 是干活的。任务明确之后,让它去改文件、补测试、做机械实现。这个角色不能用太差的模型,因为它真的会动代码。省这点钱,后面让人收拾烂摊子,反而更亏。
librarian
"librarian": { "model": "gpt-5.6-luna"}librarian 专门查外部资料。比如某个库的新 API、某个框架版本变化、GitHub 上别人怎么写。
这类任务用小一点的模型就够了。查资料最重要的是来源靠谱,不是让模型在那儿凭空发挥。
oracle
"oracle": { "model": "gpt-5.5", "variant": "high"}oracle 是我保留下来的“高级判断”角色。它不是 Council,不负责开会,而是在真的需要时做架构判断、复杂 bug 分析、代码审查、简化方案。
这个角色尤其不能去掉。代码审查一旦没有独立角色,就很容易落到主代理身上,而这个事儿绝对不该交给主代理自己做。主代理本来就负责调度、整合和最终输出,再让它审查自己的路线,很容易把事情变得更复杂。以现有一些强推理模型的习惯来看,一旦让它参与最终决策,它可能会反复验证同一个结果,拼命烧 token,还特别纠结。审查角色单独存在,反而能把边界切清楚:该审就审,审完给结论,不要把整个任务重新搅一遍。
说白了,Council 是一群人开会,Oracle 是找一个靠谱的人拍板。后者更适合日常开发。
designer
"designer": { "model": "gpt-5.6-luna"}designer 专门做 UI/UX。只要涉及布局、层级、间距、响应式、交互手感,我就倾向让它处理,而不是让普通代码 agent 顺手改两行 CSS。
很多代码模型写 UI 的问题是“能用但很丑”。它们会把页面写成后台管理系统默认皮肤,所有东西都是卡片、圆角、阴影、渐变,像拿 Tailwind 模板批发出来的一样。把 UI 任务单独交给 designer,至少能减少这种味道。
一个比较舒服的使用方式
我的建议是,日常使用时不要上来就让 AI “全面分析、充分讨论、给出最佳方案”。这种提示词很容易把事情带偏,让它开始长篇大论。
可以更直接一点:
帮我找出这个报错的来源,修掉它,跑最小相关测试。或者:
这个页面的移动端布局不好看,让 designer 调整一下响应式和视觉层级。或者:
查一下这个库最新版本的写法,然后按官方推荐方式改。OMO Slim 的好处就在这里。你不需要自己手动说“先派 explorer,再派 librarian,再派 fixer”。正常情况下,调度器会自己判断。你只要把目标说清楚,它就应该用最短的路径干完,而不是围绕这个目标开一场座谈会。
总结
我现在用 OMO Slim 的核心配置可以概括成三句话:
- 禁用 Council,少开会,多干活。
- 角色分工保留,但每个角色只做自己该做的事。
- 强模型用在调度、执行和判断上,便宜模型用在搜索和资料整理上。
AI 编程工具现在最大的问题之一,就是喜欢把简单事情复杂化。套一堆 agent,起一堆名字,开一堆流程,最后改个按钮颜色都像在指挥诺曼底登陆。OMO Slim 这套配置对我来说最重要的价值,反而是把这些多余的东西砍掉。
工具嘛,能少废话把活干完,就已经很好了。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!




















