词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
💡 一句话总结:插件让你通过钩子机制扩展 OpenCode 的功能。

| 目录 | 作用域 |
|---|---|
.opencode/plugin/ | 项目级插件 |
~/.config/opencode/plugin/ | 全局插件 |
.js 和 .ts 文件会在启动时自动加载。// opencode.json
{
"$schema": "https://opencode.ai/config.json",
"plugin": [
"opencode-helicone-session",
"opencode-wakatime",
"@my-org/custom-plugin"
]
}@scope/package)。// opencode.json
{
"plugin": [
"/home/user/my-plugins/custom-tool/dist/index.js"
]
}.js 文件file:// 前缀| ❌ 错误写法 | ✅ 正确写法 |
|---|---|
"file:///home/user/my-plugin" | "/home/user/my-plugin/dist/index.js" |
"/home/user/my-plugin" | "/home/user/my-plugin/dist/index.js" |
"/home/user/my-plugin/dist" | "/home/user/my-plugin/dist/index.js" |
~/.cache/opencode/node_modules/package.json:// .opencode/package.json
{
"dependencies": {
"shescape": "^2.1.0"
}
}bun install 安装这些依赖。OPENCODE_DISABLE_DEFAULT_PLUGINS=1 禁用):| 插件 | 功能 |
|---|---|
opencode-copilot-auth | GitHub Copilot 认证 |
opencode-anthropic-auth | Anthropic 认证 |
~/.config/opencode/opencode.json)opencode.json)~/.config/opencode/plugin/).opencode/plugin/)export default 和命名导出重复)| 参数 | 类型 | 说明 |
|---|---|---|
project | Project | 当前项目信息 |
directory | string | 当前工作目录 |
worktree | string | Git 工作树路径 |
client | OpencodeClient | OpenCode SDK 客户端,用于与 AI 交互 |
$ | BunShell | Bun 的 shell API,用于执行命令 |
serverUrl | URL | OpenCode 服务器 URL(如 http://localhost:4096) |
// .opencode/plugin/my-plugin.ts
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree, serverUrl }) => {
return {
// 类型安全的钩子实现
}
}.opencode/node_modules/。// ✅ 正确:只导出 default
export default MyPlugin;
// ❌ 错误:同时导出其他内容
export default MyPlugin;
export { getConfig, DEFAULT_CONFIG }; // 会导致加载失败!ERROR: fn is not a function. (In 'fn(input)', 'fn' is an instance of Object)config 钩子动态注册如果你使用 OpenCode 桌面应用,它可以在响应就绪或会话出错时自动发送系统通知。
.env 文件:client.app.log() 替代 console.log 进行结构化日志记录:// .opencode/plugin/my-plugin.ts
export const MyPlugin = async ({ client }) => {
await client.app.log({
service: "my-plugin",
level: "info",
message: "Plugin initialized",
extra: { foo: "bar" },
})
return {}
}debug、info、warn、error。| 现象 | 原因 | 解决 |
|---|---|---|