13 插件高级实践
1. 插件加载模型(官方规范)
- 项目插件目录:
.opencode/plugins/ - 全局插件目录:
~/.config/opencode/plugins/ - npm 插件:config 顶层
plugin数组 - 典型用途:通知、敏感文件保护、环境注入、日志、上下文管理
2. 护栏双层策略(推荐)
permission层:默认 deny/ask,最小授权plugin层:tool.execute.before对关键路径做强拦截
为什么要双层:社区 issue 显示插件/子代理在边缘路径上可能有行为差异,双层能降低误配置风险。
3. 最小插件模板
ts
import type { Plugin } from '@opencode-ai/plugin';
const plugin: Plugin = async () => ({
tool: {
execute: {
before: async (input: unknown) => {
const text = JSON.stringify(input ?? {});
if (/\.env(\.|$)/i.test(text)) {
throw new Error('Blocked: sensitive file access');
}
}
}
}
});
export default plugin;4. 插件调试流程
- 第一步:最小插件(只打印日志)
- 第二步:单一规则(只拦截
.env) - 第三步:增加规则集并回归验证
- 第四步:写入故障手册(触发条件/回滚方式)
5. 推荐插件分类(生态参考)
- 认证类:
opencode-gemini-auth、opencode-openai-codex-auth - 记忆类:
opencode-supermemory、opencode-mem - 通知/调度类:
opencode-notifier、opencode-scheduler - 会话管理类:
opencode-dynamic-context-pruning
提醒:以上多为社区仓库,务必标注“非官方”,并做版本锁定与安全评估。