项目与系统 HTTP API
查询项目、配置、提供商、文件、工具状态,并驱动 TUI。
以下路径相对于 OpenCode 服务地址。先按服务端设置配置认证,并使用该实例的 /doc 核对请求/响应类型。
项目、路径与实例
| 方法和路径 | 用途 |
|---|---|
GET /project | 列出项目 |
GET /project/current | 当前项目 |
GET /path | 当前路径信息 |
GET /vcs | 当前项目的版本控制信息 |
POST /instance/dispose | 释放当前实例,返回 boolean |
先确认当前项目和路径,再调用文件或配置接口,避免把实例状态误认为客户端本地目录。
配置与提供商
| 方法和路径 | 用途 |
|---|---|
GET /config | 读取配置 |
PATCH /config | 更新配置 |
GET /config/providers | 提供商和默认模型映射 |
GET /provider | 全部提供商、默认模型与 connected ID 列表 |
GET /provider/auth | 按提供商 ID 返回认证方法 |
POST /provider/{id}/oauth/authorize | 开始 OAuth 授权 |
POST /provider/{id}/oauth/callback | 处理 OAuth 回调 |
PUT /auth/:id | 设置认证凭据,请求体必须符合该提供商 schema |
不能把所有认证都压成同一个 API Key 字段;具体方式见提供商认证。配置写入与登录是有状态操作。
文件与搜索
| 方法和路径 | 用途 |
|---|---|
GET /find?pattern=<pat> | 按文本模式搜索文件内容 |
GET /find/file?query=<q> | 按名称模糊查找文件/目录 |
GET /find/symbol?query=<q> | 查找 workspace symbol |
GET /file?path=<path> | 列出文件与目录 |
GET /file/content?path=<p> | 读取文件内容 |
GET /file/status | 获取受版本控制文件的状态 |
文本搜索结果包含 path、lines、line_number、absolute_offset、submatches。文件名称搜索返回路径数组,参数如下:
/find/file 查询参数 | 含义 |
|---|---|
query | 必填,模糊搜索字符串 |
type | 可选 file 或 directory |
directory | 覆盖本次搜索的项目根目录 |
limit | 最大返回数,范围 1–200 |
dirs | 旧兼容参数;"false" 只返回文件 |
工具、扩展与日志
| 方法和路径 | 用途 |
|---|---|
GET /command | 命令列表 |
GET /agent | 可用智能体 |
GET /lsp | LSP 服务状态 |
GET /formatter | formatter 状态 |
GET /mcp | 按名称返回 MCP 状态 |
POST /mcp | 动态添加 MCP;请求体 { name, config } |
GET /experimental/tool/ids | 实验接口,列出工具 ID |
GET /experimental/tool?provider=<p>&model=<m> | 实验接口,返回指定模型的工具及 JSON schema |
POST /log | 写日志;请求体 { service, level, message, extra? } |
实验工具端点与稳定接口分开管理,不能由其存在推断每个模型都能调用所有工具。
驱动 TUI
这些端点用于已有 TUI 的交互控制,IDE 插件也使用此类能力:
| 方法和路径 | 用途 |
|---|---|
POST /tui/append-prompt | 向输入框追加文本 |
POST /tui/submit-prompt | 提交当前输入 |
POST /tui/clear-prompt | 清空输入 |
POST /tui/open-help | 打开帮助 |
POST /tui/open-sessions | 打开会话选择 |
POST /tui/open-themes | 打开主题选择 |
POST /tui/open-models | 打开模型选择 |
POST /tui/execute-command | 执行命令,请求体含 command |
POST /tui/show-toast | 通知,请求体 { title?, message, variant } |
GET /tui/control/next | 等待下一个控制请求 |
POST /tui/control/response | 以 { body } 响应控制请求 |
直接提交 Agent 任务应使用会话与消息 API。附加到输入框和真正执行任务是不同阶段。