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 服务器已启动');
});