跳转到内容

OpenCode V2 的 skill 开关。

一个原生插件:列出、诊断、停用、恢复 skill,只写一条权限规则,不碰任何 skill 文件。
opencode v2
$ opencode plugin add opencode-skill-management
$ opencode plugin list --builtin
skill_management <version> opencode-skill-management@<version>

上下文税

每装一个 skill,都在持续占用上下文。

OpenCode 会把 skill 的名称和描述注入模型上下文。装得多了,这份列表就不再是帮助:过时的条目挤占注意力,加载不了的 skill 不告诉你原因,而「删文件」这种停用方式,改回来还得凭记忆。

看见真实状态

list 按实际发起调用的 agent 求值,而不是把所有 agent 的规则混在一起。

停用但不删除

全局配置里的一条规则就能让它从列表消失、加载被拒。skill 文件一个字节都不动。

知道为什么被挡

inspect 贴出命中的规则、逐 agent 的差异,以及 id 是怎么来的。

精确地撤回

enable 只删那一条挡路的规则 —— 定位不唯一就拒绝,不猜。

四个动作

表面积很小,语义很硬。

list
列出所有已注册 skill 对调用者的有效状态,附配置与 sidecar 的一致性提示。只读。
inspect
单个 skill 的详情:结论、命中规则、逐 agent 结果、id 推导。只读。
disable
写一条全局 skill 权限规则。默认 deny,可用 ask 软停用,dryRun 预览。
enable
删掉挡路的那一条精确全局规则。规则有歧义或超出范围时拒绝执行。

载体

一条规则,同一个文件,没有副作用。

停用不是另建数据库,也不是改写 skill 文件。它就是全局 permissions 数组末尾的一条规则,行尾带一个来源标记,方便以后再找到它。缩进、键顺序、行尾风格与 BOM 都会保留。

{
"permissions": [
{ "action": "skill", "resource": "windows-shell", "effect": "deny" } // skill_management
]
}

之后 enable 删掉的也正是这一条。整个状态模型就这么大。

OpenCode V2 · 在 2.0.32 上完成 Windows / Linux 验收,2.2.0 上复核 · Node 18+ · 无第三方运行时依赖。

阅读文档 →