Skip to content

13 插件高级实践

1. 插件加载模型(官方规范)

  • 项目插件目录:.opencode/plugins/
  • 全局插件目录:~/.config/opencode/plugins/
  • npm 插件:config 顶层 plugin 数组
  • 典型用途:通知、敏感文件保护、环境注入、日志、上下文管理

2. 护栏双层策略(推荐)

  1. permission 层:默认 deny/ask,最小授权
  2. 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-authopencode-openai-codex-auth
  • 记忆类:opencode-supermemoryopencode-mem
  • 通知/调度类:opencode-notifieropencode-scheduler
  • 会话管理类:opencode-dynamic-context-pruning

提醒:以上多为社区仓库,务必标注“非官方”,并做版本锁定与安全评估。

基于官方文档与 Schema 编写;示例不包含任何密钥