用途:指导开发者使用 @opencode-ai/plugin SDK 创建 OpenCode 插件,覆盖自定义工具、事件钩子、认证提供方、工具执行拦截等场景。
主要能力:可拦截或阻止工具调用、响应事件(文件编辑、会话完成等)、为 LLM 添加自定义工具、修改 LLM 参数(如 temperature)、实现自定义认证流程、定制会话压缩、显示状态消息(toast 或内联)。不可实现的功能包括修改 TUI 渲染或布局、添加内置工具、更改核心智能体行为或提示词、拦截流式响应、添加新快捷键或命令、修改内部文件读写、添加新权限类型;遇到此类需求应告知用户并建议改用 OC 核心贡献、MCP 工具或 shell 脚本。
使用方式:开发前必须运行 bun run .opencode/skill/create-opencode-plugin/scripts/extract-plugin-api.ts 重新生成 API 参考,确保准确性。插件可放在项目级 .opencode/plugin/<name>/index.ts 或全局 ~/.config/opencode/plugin/<name>/index.ts。基本结构为导出 Plugin 异步函数,返回钩子实现;上下文参数含 project、client、$、directory、worktree。复杂插件须采用模块化目录(index.ts、types.ts、utils.ts、hooks/、tools/),单文件不超过 150 行,禁止单文件堆砌。自定义工具使用 tool: { name: tool({...}) },而非 client.registerTool()。测试时创建含 opencode.json 的测试文件夹,配置 "plugin": ["file:///path/to/your/plugin/index.ts"],运行 opencode run hi 验证加载。发布可参考 npm 发布与版本更新提示流程。
适用场景:需要扩展 OpenCode 行为、添加工具或事件响应逻辑的开发者。
限制:仅覆盖 SDK 支持的钩子范围,无法触及核心渲染与内置功能;具体 API 签名、事件属性、Zod 模式等需查阅自动生成的参考文件,资料未提供完整细节。