Skip to content

OpenCode 内置了一个 HTTP 服务器,运行 opencode serve 即可启动。服务器提供完整的 OpenAPI 3.1 接口,支持会话管理、消息发送、文件操作、LSP/格式化状态查询和 TUI 控制。可设置 Basic Auth 保护接口安全。

opencode serve 命令启动一个无头 HTTP 服务器,暴露 OpenAPI 接口供客户端使用。这与 OpenCode TUI 的工作方式相同——TUI 本质上就是这个服务器的一个客户端。


启动服务器

bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
参数说明默认值
--port监听端口4096
--hostname监听主机名127.0.0.1
--mdns启用 mDNS 发现false
--mdns-domainmDNS 自定义域名opencode.local
--cors允许的额外浏览器 origin[]

--cors 可以多次指定:

bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com

认证

设置 OPENCODE_SERVER_PASSWORD 启用 HTTP Basic Auth(用户名默认为 opencode,可通过 OPENCODE_SERVER_USERNAME 修改):

bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve

OpenAPI 规范

服务器在以下地址提供 OpenAPI 3.1 规范:

http://<hostname>:<port>/doc

可用于生成客户端代码或在 Swagger 界面中浏览 API。


连接到运行中的 TUI

TUI 启动时会随机分配端口。你可以通过固定端口让工具连接到 TUI:

bash
opencode --port 4096

然后通过 /tui 系列接口控制 TUI(如预填 Prompt、执行命令),这正是 IDE 插件的工作方式。


API 参考

全局

方法路径说明
GET/global/health服务器健康状态和版本
GET/global/event全局事件流(SSE)

项目

方法路径说明
GET/project列出所有项目
GET/project/current获取当前项目

路径与 VCS

方法路径说明
GET/path获取当前路径
GET/vcs获取 VCS 信息

配置

方法路径说明
GET/config获取配置信息
PATCH/config更新配置
GET/config/providers列出 Provider 和默认模型

Provider

方法路径说明
GET/provider列出所有 Provider
GET/provider/auth获取 Provider 认证方式
POST/provider/{id}/oauth/authorizeOAuth 认证
POST/provider/{id}/oauth/callbackOAuth 回调处理

会话

方法路径说明
GET/session列出所有会话
POST/session创建新会话
GET/session/status所有会话状态
GET/session/:id获取会话详情
DELETE/session/:id删除会话
PATCH/session/:id更新会话属性
GET/session/:id/children获取子会话
GET/session/:id/todo获取会话待办列表
POST/session/:id/init分析应用并创建 AGENTS.md
POST/session/:id/forkFork 会话
POST/session/:id/abort中止运行中的会话
POST/session/:id/share分享会话
DELETE/session/:id/share取消分享
GET/session/:id/diff获取会话的 diff
POST/session/:id/summarize摘要会话
POST/session/:id/revert回滚消息
POST/session/:id/unrevert恢复回滚的消息
POST/session/:id/permissions/:permissionID响应权限请求

消息

方法路径说明
GET/session/:id/message列出会话消息
POST/session/:id/message发送消息并等待响应
GET/session/:id/message/:messageID获取消息详情
POST/session/:id/prompt_async异步发送消息(不等待响应,204 响应)
POST/session/:id/command执行 Slash 命令
POST/session/:id/shell运行 Shell 命令

文件

方法路径说明
GET/find?pattern=<pat>搜索文件内容
GET/find/file?query=<q>按名称查找文件/目录
GET/find/symbol?query=<q>查找工作区符号
GET/file?path=<path>列出文件和目录
GET/file/content?path=<p>读取文件内容
GET/file/status获取跟踪文件状态

/find/file 查询参数:query(必须)、type(file/directory)、directorylimit(1-200)


LSP / Formatters / MCP

方法路径说明
GET/lspLSP 服务器状态
GET/formatter格式化器状态
GET/mcpMCP 服务器状态
POST/mcp动态添加 MCP 服务器

Agents

方法路径说明
GET/agent列出所有可用 Agent

TUI 控制

方法路径说明
POST/tui/append-prompt向提示框追加文本
POST/tui/open-help打开帮助对话框
POST/tui/open-sessions打开会话选择器
POST/tui/open-themes打开主题选择器
POST/tui/open-models打开模型选择器
POST/tui/submit-prompt提交当前 Prompt
POST/tui/clear-prompt清空 Prompt
POST/tui/execute-command执行命令
POST/tui/show-toast显示 Toast 通知
GET/tui/control/next等待下一个控制请求
POST/tui/control/response响应控制请求

认证 / 事件 / 工具

方法路径说明
PUT/auth/:id设置认证凭证
GET/eventSSE 事件流(首个事件为 server.connected)
POST/log写入日志
GET/experimental/tool/ids列出所有工具 ID
GET/experimental/tool列出工具及 JSON Schema
GET/docOpenAPI 3.1 规范(HTML)

常见问题

Q: opencode serve 和直接运行 opencode 有什么区别?

A: 直接运行 opencode 同时启动 TUI 和服务器,TUI 作为服务器的客户端。opencode serve 只启动服务器,没有 TUI,适合远程访问或程序化使用场景。

Q: 如何从外网访问 OpenCode 服务器?

A: 使用 --hostname 0.0.0.0 监听所有网络接口,并设置 OPENCODE_SERVER_PASSWORD 启用认证。注意做好网络安全配置。

Q: SSE 事件流包含哪些事件?

A: 订阅 /event 后首先收到 server.connected 事件,之后会接收所有内部总线事件,包括会话状态变化、消息更新、工具执行等。具体事件类型参见插件文档