OpenCode SDK 是一組開發工具與函式庫,讓開發者能夠建立自訂工具、外掛以及與 OpenCode 深度整合的應用程式。SDK 封裝了與 OpenCode 核心互動所需的所有底層細節,提供簡潔的 API 介面。
建立自訂工具並註冊到 OpenCode 中,讓代理能呼叫你的程式。
開發完整的外掛套件,包含多個工具、設定面板與生命週期管理。
將 OpenCode 以伺服器模式執行,提供 HTTP API 供外部應用整合。
訂閱 OpenCode 內部事件,在特定時機觸發自訂邏輯。
使用 npm 初始化 SDK 專案:
# 建立新專案
mkdir my-opencode-plugin
cd my-opencode-plugin
npm init -y
# 安裝 OpenCode SDK
npm install @opencode/sdk
# 建立基本工具
touch tools/my-tool.js
OpenCode 可以透過 opencode serve 指令以伺服器模式執行,提供 HTTP API 供外部應用程式呼叫。這使得 OpenCode 可以整合到 CI/CD 管線、Web 應用程式或其他自動化流程中。
# 啟動 OpenCode 伺服器(預設埠 3000)
opencode serve
# 指定埠號
opencode serve --port 8080
# 啟用 CORS(跨域請求)
opencode serve --cors
# 指定允許的來源
opencode serve --cors --origin https://myapp.example.com
// 透過 HTTP API 呼叫 OpenCode
const response = await fetch('http://localhost:3000/api/execute', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
task: 'Explain the architecture of this project',
context: {
files: ['src/index.ts', 'src/config.ts'],
directory: process.cwd()
}
})
});
const result = await response.json();
console.log(result.output);
Server Mode 讓 OpenCode 可以無縫整合到 CI/CD 流程中:
# GitHub Actions 範例
jobs:
code-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 啟動 OpenCode Review
run: |
opencode serve --port 3000 &
sleep 2
curl -X POST http://localhost:3000/api/execute \
-H "Content-Type: application/json" \
-d '{
"task": "Review this PR diff for bugs",
"context": { "git_diff": true }
}'
外掛(Plugin)是 OpenCode 生態系統的基礎單元。一個外掛可以包含多個工具、設定面板、生命週期掛鉤與資產檔案。
my-opencode-plugin/
├── package.json # 套件資訊與相依性
├── index.js # 外掛入口點
├── tools/ # 自訂工具
│ ├── tool-a.js
│ └── tool-b.js
├── hooks/ # 生命週期掛鉤
│ ├── before-task.js
│ └── on-error.js
├── assets/ # 靜態資源
│ └── icon.svg
├── config/ # 設定範本
│ └── defaults.json
└── README.md # 外掛文件
// index.js — 外掛入口點
const { Plugin } = require('@opencode/sdk');
class MyPlugin extends Plugin {
constructor() {
super({
name: 'my-plugin',
version: '1.0.0',
description: '我的第一個 OpenCode 外掛'
});
}
// 外掛初始化
async onActivate(context) {
console.log('外掛已啟動!');
// 註冊工具
this.registerTool('hello-world', {
description: '向使用者打招呼',
schema: {
type: 'object',
properties: {
name: { type: 'string', description: '你的名字' }
},
required: ['name']
},
handler: async (params) => {
return { message: `哈囉,${params.name}!歡迎使用 OpenCode!` };
}
});
// 註冊生命週期掛鉤
this.registerHook('beforeTask', async (task) => {
console.log(`即將執行任務:${task.name}`);
});
}
// 外掛停用
async onDeactivate() {
console.log('外掛已停用');
}
}
module.exports = MyPlugin;
外掛可以透過 opencode.json 註冊:
{
"plugins": [
{
"name": "my-plugin",
"path": "./plugins/my-plugin",
"enabled": true
},
{
"name": "community-formatter",
"version": "2.1.0",
"enabled": false
}
]
}
OpenCode 不僅僅是一個工具——它是一個正在成長的開發者生態系統。以下介紹生態系統的主要組成部分:
由社群維護的 Go 語言版本,保留了 OpenCode 的核心架構與工作流程概念。
精簡版 OpenCode,聚焦於核心編輯體驗,適合偏好極簡風格的開發者。
由全球開發者貢獻的外掛生態,涵蓋語言支援、工具整合、主題樣式等。
最活躍的 OpenCode 討論區,提供技術支援、功能討論與專案展示。
完整的 API 文件、教學指南與最佳實踐,涵蓋從入門到進階的所有主題。
原始碼託管在 GitHub,歡迎提交 Issue、功能請求與 Pull Request。
| 服務 | 整合方式 | 用途 |
|---|---|---|
| GitHub | MCP 伺服器 / CLI 整合 | 程式碼審查、Issue 管理、PR 建立 |
| GitLab | MCP 伺服器 | Merge Request、CI/CD 觸發 |
| Slack | 自訂工具 / Webhook | 通知發送、命令執行 |
| Jira | MCP 伺服器 | Issue 查詢、狀態更新 |
| Vercel | CLI 整合 | 部署觸發、環境管理 |
| Docker | bash 工具 | 容器管理、映像建構 |
OpenCode 提供了 opencode share 命令,讓開發者可以分享當前的會話狀態給團隊成員或社群:
# 分享當前會話
opencode share
# 分享並包含檔案變更
opencode share --include-diff
# 分享到特定平台
opencode share --platform discord
# 輸出為可攜式檔案
opencode share --output session.json
分享的會話包含:完整的對話歷史、所有工具呼叫記錄、檔案變更摘要與執行結果。這對於團隊協作、問題除錯與知識分享非常有價值。
OpenCode 是一個開源專案,歡迎各種形式的貢獻:
在 GitHub 提交 Issue,描述你遇到的問題、重現步驟與預期行為。附上日誌與設定檔會非常有幫助。
Fork 專案、建立功能分支、撰寫測試,然後提交 Pull Request。請務必遵循專案的程式碼風格與提交規範。
文件是專案與使用者之間的橋樑。修正錯字、補充範例、撰寫教學都是非常有價值的貢獻。
協助將 OpenCode 的使用者介面與文件翻譯成更多語言,讓全球開發者都能受益。
有新功能的點子?在 Discord 社群中討論,或在 GitHub 上提交功能請求。我們非常重視社群的意見。
透過 OpenCode SDK 開發外掛,解決特定領域的問題,並分享給整個社群使用。
good first issue 標籤開始,這些是特別為新手設計的入門任務。Discord 社群中也有 #contributors 頻道專門協助新貢獻者。
以下是參與 OpenCode 生態系統的重要連結與資源:
| 資源 | 網址 | 說明 |
|---|---|---|
| 官方網站 | opencode.dev |
最新消息、文件與下載 |
| GitHub | github.com/opencode |
原始碼、Issue 追蹤、討論 |
| Discord | discord.gg/opencode |
即時討論、技術支援、社群活動 |
| SDK 文件 | docs.opencode.dev/sdk |
完整的 SDK API 參考與教學 |
| 外掛市場 | plugins.opencode.dev |
瀏覽與發布社群外掛 |
| 部落格 | blog.opencode.dev |
技術文章、版本發布、案例研究 |
官方 SDK 目前提供 JavaScript/TypeScript 支援,因為 OpenCode 本身是以 Node.js 為基礎。不過,由於 MCP 協定是語言無關的,你可以使用任何語言開發工具與外掛——只要它們能夠透過標準輸入輸出或 HTTP 與 OpenCode 通訊即可。社群已經貢獻了 Python、Rust 與 Go 的非官方 SDK,可以在 GitHub 上找到。
發布外掛有幾種方式:(1) 上傳到 npm——SDK 建立的外掛可以發布為 npm 套件,使用者透過 npm install 安裝後在 opencode.json 中啟用即可。(2) 發布到 OpenCode 外掛市場——透過官方網站提交你的外掛,讓更多人發現它。(3) 直接分享 GitHub 倉庫——對於開源外掛,這是最常見的方式。發布前建議確認外掛有完整的 README 說明、使用範例與測試覆蓋。
是的,Server Mode 支援多種認證方式:(1) API Key——在啟動伺服器時指定,客戶端需要在請求標頭中帶入 X-API-Key。(2) Bearer Token——支援 JWT 格式的授權令牌。(3) 自訂認證——透過設定檔註冊認證處理器,實現與現有身分系統的整合。預設情況下,伺服器僅監聽本機位址(127.0.0.1),這本身已經提供了基本的網路隔離。