昨晚十一点半,我坐在自己那台笔记本前,把收藏夹里躺了半个月的 opencode 插件一次性全装上了。重启,打开终端,干干净净。没有报错,没有提示,插件像是从来没存在过。
我第一反应是自己配置写错了。翻了半小时日志才反应过来,问题不在我这儿——这些插件是按 1.x 的写法写的,而 opencode 已经跑到 2.0。新版本不加载它们,也不吭一声。
21 万星的工具,用这么安静的方式,把插件生态整个掀了一遍。
摸清它的插件是怎么装进来的
opencode 是 Anomaly 团队维护的终端 AI 编程 agent,也就是原来做 SST 那拨人,MIT 协议,仓库在 anomalyco/opencode,以前那个 sst/opencode 现在 301 跳过去。到 10 月初,星标 21.1 万,接了 75 家以上的模型供应商,贡献者差不多 900 人。它有个我很喜欢的设计:plan 和 build 两个模式,Tab 键切换,一个负责想,一个负责动手。
插件这块也简单,三种装法:扔进项目里的 .opencode/plugins/,扔进全局的 ~/.config/opencode/plugins/,或者写进 opencode.json 的 plugin 数组里当 npm 包用。依赖由 Bun 自动装,缓存在 ~/.cache/opencode/node_modules/。
能挂的钩子给得很足:命令执行、文件编辑、文件监听、LSP 诊断、消息增删改、权限询问与回复、会话创建与压缩,基本你能想到的时机都有对应事件。这也是它插件生态能在半年里长这么快的原因——留给开发者的口子够多。
看懂 2.0 那一次静默失效
然后就是 2.0 干的这件事。
从 v2.0.22 开始,它把插件契约整个重写了。旧写法长这样:export default async (input, options) => ({ ...hooks })。新写法变成 export default Plugin.define({ id, setup(ctx) {...} })。钩子也跟着改名字:permission.ask 换成 ctx.permission.hook("evaluate"),tool.execute.before 换成 ctx.tool.hook("execute.before"),chat.headers 换成 ctx.session.hook("http.request")。npm 包名从 @opencode-ai/plugin 变成 @opencode/plugin,得 2.0.5 以上。
改就改了,问题是它不报错。插件加载失败,静默跳过,终端里一个字都不吐。对一个靠插件吃饭的工具来说,这个设计挺要命的——你以为自己在用,其实什么都没在跑。
更典型的是一个第三方插件的翻车记录。10 月 13 日,有人装上 v2.0.27,模型调用跑通,工具调用也跑通,看着一切正常,但审计日志一行都没有。查下去才发现,上游把安装器指回了 v1 的分支,装出来的和以为装的根本不是一套东西。十个小时后他退回 1.19.0,日志又绿了。
这段最该记住的,是"跑通了"和"跑对了"之间差着一整套看不见的验证。
翻一遍现在真在用的插件
说回现在能用的。我看了一圈最近一周的热度榜,按 OpenDock 10 月 17 到 23 日的口径,排在前面的基本都是解决具体麻烦的。
通知类的天花板是 @mohak34/opencode-notifier,12k,任务跑完给你推个信。后面的 opencode-notify-webhook、opencode-ntfy.sh、opencode-slack-bridge 是一路的,还有 opencode-feishu-plugin 直接推到飞书,5.8k。
省钱这块值得单独说。opencode-openai-codex-auth、opencode-gemini-auth 这一类,做的是把你已有的订阅接进来,绕开按量计费的 API 账单。opencode-dynamic-context-pruning 和 openrtk 走另一条路,压上下文、砍 token,后者官方自述能省 60% 到 90%。
真正让我多看了两眼的是 oh-my-opencode,一整套编排框架:主 agent 加一个规划、一个架构、一个检索,配 ultrawork 这种命令把多智能体直接拉起来,25 个以上内置钩子,还内置了 Exa、Context7 这些 MCP。
泼一盆冷水
但别急着全押上去。
插件生态越热,越容易踩两件事。一是 2.0 这个坎还没过完,你现在装的插件,上游明天再改一次契约,可能又静默失效,还是不告诉你。二是这个热度榜的数字我看不太懂口径,是下载量、收藏量还是别的,素材里没写清楚,所以它只能当参考顺序,不能当质量排名。
opencode 这轮插件潮,热闹的是插件数量,但我觉得真正的信息量在另一个地方:一个终端工具愿不愿意把控制权交出来。钩子给得多,生态就长得快;契约说改就改还不报错,生态就得跟着抖一次。这个取舍,比任何一个具体插件都值得看。
这波插件里,通知、省钱、编排三条线都有能打的东西,但 2.0 的静默失效还在,装之前最好自己验一遍。
如果这篇对你有用,点个赞、收藏一下,再顺手点个关注和星标,下一篇我接着拆它的插件契约到底该怎么写。
你现在装 opencode 插件,是先看热度榜,还是先翻源码?
热门跟贴