SDK 概述
OpenCode SDK 提供完整的客户端和服务器端功能,支持多种编程语言和平台。
@opencode-ai/sdk
核心 SDK 模块,包含所有基础功能
@opencode-ai/client
客户端库,用于连接到 OpenCode 服务器
@opencode-ai/server
服务器库,用于构建自定义服务器
@opencode-ai/v2
第二代 API,改进的性能和功能
客户端 API
创建 OpenCode 客户端并与服务器交互:
JavaScript
const { createOpencodeClient } = require('@opencode-ai/sdk');
const client = createOpencodeClient({
baseUrl: 'http://localhost:4096'
});
// 使用客户端
async function main() {
// 列出所有会话
const sessions = await client.session.list();
console.log(sessions);
// 读取会话详情
const sessionData = await client.session.export({
path: { id: sessionId }
});
// 搜索会话内容
const searchResults = await client.session.search({
query: '关键词',
session_id: 'session-id'
});
}
main();
服务器端 API
构建自定义 OpenCode 服务器:
JavaScript
const { createServer } = require('@opencode-ai/server');
const server = createServer({
port: 4096,
apiToken: 'your-api-token',
cors: true
});
// 注册自定义处理器
server.registerHandler('custom-command', async (input, context) => {
// 处理自定义命令
return { result: '处理结果' };
});
// 启动服务器
server.start();
会话管理 API
完整的会话管理功能,包括列出、读取、搜索和导出:
session.list()
读取
列出所有会话
from_date?: string
to_date?: string
limit?: number
session.export()
读取
导出会话数据
path.id: string
include_todos?: boolean
include_transcript?: boolean
session.search()
搜索
搜索会话内容
query: string
session_id?: string
case_sensitive?: boolean
session.info()
信息
获取会话元数据
session_id: string
MCP 服务器配置
配置 Model Context Protocol 服务器扩展功能:
JSON
{
"mcpServers": {
"lark-mcp": {
"command": "npx",
"args": [
"-y",
"@larksuiteoapi/lark-mcp",
"mcp",
"-a",
"cli_a6df563ced7b500b",
"-s",
"Ja150OSYplyPMhFOCRnl0dreuqViPtx6"
],
"disabled": false
}
}
}
MCP 配置文件位置:~/.config/opencode/mcp_servers.json
使用示例
基础使用
会话管理
自定义服务器
// 基础客户端使用
const { createOpencodeClient } = require('@opencode-ai/sdk');
const client = createOpencodeClient({
baseUrl: 'http://localhost:4096'
});
async function basicUsage() {
// 检查连接
const sessions = await client.session.list();
console.log('当前会话数:', sessions.data.length);
}
basicUsage();
// 会话管理示例
async function sessionManagement() {
// 列出所有会话
const sessions = await client.session.list({
limit: 10,
from_date: '2026-01-01'
});
// 读取特定会话
const session = await client.session.export({
path: { id: 'ses_abc123' },
include_todos: true,
include_transcript: true
});
// 搜索会话内容
const results = await client.session.search({
query: 'OpenCode',
case_sensitive: false
});
}
// 自定义服务器示例
const { createServer } = require('@opencode-ai/server');
const server = createServer({
port: 4096,
apiToken: process.env.OPENCODE_API_TOKEN,
cors: {
origin: true,
credentials: true
}
});
// 添加自定义中间件
server.use(async (req, res, next) => {
console.log(`${req.method} ${req.path}`);
await next();
});
// 启动服务器
server.start(() => {
console.log('OpenCode 服务器已启动');
});