跳到內容

伺服器

通過 HTTP 與 opencode 服務器交互。

opencode serve 命令運行一個無頭 HTTP 服務器,該服務器公開opencode客戶端可以使用的 OpenAPI 端點。


用法

Terminal window
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]

選項

旗幟描述默認
--port監聽端口4096
--hostname監聽的主機名127.0.0.1
--mdns啟用 mDNS 發現false
--mdns-domainmDNS 服務的自定義域名opencode.local
--cors允許的其他瀏覽器來源[]

--cors 可以多次傳遞:

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

驗證

設置OPENCODE_SERVER_PASSWORD以使用HTTP基本身份驗證保護服務器。用戶名默認為opencode,或設置OPENCODE_SERVER_USERNAME來覆蓋它。這適用於opencode serveopencode web

Terminal window
OPENCODE_SERVER_PASSWORD=your-password opencode serve

它是如何運作的

當您運行 opencode 時,它會啟動 TUI 和服務器。 TUI 是哪裡 與服務器對話的客戶端。服務器公開 OpenAPI 3.1 規範 端點。該端點還用於生成軟件開發工具包

此架構讓 opencode 支持多個客戶端,並允許您以編程方式與 opencode 進行交互。

您可以運行 opencode serve 來啟動獨立服務器。如果您有 opencode TUI 運行,opencode serve 將啟動一個新服務器。


連接到現有服務器

當您啟動 TUI 時,它會隨機分配端口和主機名。您可以改為傳入--hostname--port 旗幟。然後使用它連接到其服務器。

/tui 端點可用於通過服務器驅動 TUI。例如,您可以預填充或運行提示。此設置由 opencode 集成開發環境 插件使用。


規格

服務器發布了 OpenAPI 3.1 規範,可以在以下位置查看:

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

例如,http://localhost:4096/doc。使用規範生成客戶端或檢查請求和響應類型。或者在 Swagger 瀏覽器中查看它。


蜜蜂

opencode 服務器公開以下 API。


全球的

方法路徑描述回應
GET/global/health獲取服務器運行狀況和版本{ healthy: true, version: string }
GET/global/event獲取全局事件(SSE 流)事件流

專案

方法路徑描述回應
GET/project列出所有項目項目[]
GET/project/current獲取當前項目項目

路徑和VCS

方法路徑描述回應
GET/path獲取當前路徑路徑
GET/vcs獲取當前項目的 VCS 信息VcsInfo

實例

方法路徑描述回應
POST/instance/dispose處置當前實例boolean

配置

方法路徑描述回應
GET/config獲取配置信息配置
PATCH/config更新配置配置
GET/config/providers列出提供商和默認模型{ providers: 提供商[], default: { [key: string]: string } }

提供者

方法路徑描述回應
GET/provider列出所有提供商{ all: 提供商[], default: {...}, connected: string[] }
GET/provider/auth獲取提供商身份驗證方法{ [providerID: string]: ProviderAuthMethod[] }
POST/provider/{id}/oauth/authorize使用 OAuth 授權提供商ProviderAuthAuthorization
POST/provider/{id}/oauth/callback處理提供商的 OAuth 回調boolean

會議

方法路徑描述筆記
GET/session列出所有會話返回 Session[]
POST/session創建新會話正文:{ parentID?, title? },返回 Session
GET/session/status獲取所有會話的會話狀態返回 { [sessionID: string]: SessionStatus }
GET/session/:id獲取會話詳細信息返回 Session
DELETE/session/:id刪除會話及其所有數據返回 boolean
PATCH/session/:id更新會話屬性正文:{ title? },返回 Session
GET/session/:id/children獲取會話的子會話返回 Session[]
GET/session/:id/todo獲取會話的待辦事項列表返回 Todo[]
POST/session/:id/init分析應用程式並創建AGENTS.md主體:{ messageID, providerID, modelID },返回boolean
POST/session/:id/fork在消息中分叉現有會話正文:{ messageID? },返回 Session
POST/session/:id/abort中止正在運行的會話返回 boolean
POST/session/:id/share分享會議返回 Session
DELETE/session/:id/share取消共享會話返回 Session
GET/session/:id/diff獲取本次會話的差異查詢:messageID?,返回 FileDiff[]
POST/session/:id/summarize會議總結主體:{ providerID, modelID },返回boolean
POST/session/:id/revert回复消息主體:{ messageID, partID? },返回boolean
POST/session/:id/unrevert恢復所有已恢復的消息返回 boolean
POST/session/:id/permissions/:permissionID回復權限請求主體:{ response, remember? },返回boolean

留言

方法路徑描述筆記
GET/session/:id/message列出會話中的消息查詢:limit?,返回{ info: 消息, parts: Part[]}[]
POST/session/:id/message發送消息並等待回复主體:{ messageID?, model?, agent?, noReply?, system?, tools?, parts },返回{ info: 消息, parts: 部分[]}
GET/session/:id/message/:messageID獲取消息詳情返回{ info: 消息, parts: 部分[]}
POST/session/:id/prompt_async異步發送消息(無需等待)body:與/session/:id/message相同,返回204 No Content
POST/session/:id/command執行斜杠命令主體:{ messageID?, agent?, model?, command, arguments },返回{ info: 消息, parts: 部分[]}
POST/session/:id/shell運行 shell 命令主體:{ agent, model?, command },返回{ info: 消息, parts: 部分[]}

命令

方法路徑描述回應
GET/command列出所有命令Command[]

文件

方法路徑描述回應
GET/find?pattern=<pat>搜索文件中的文本具有 path, lines, line_number, absolute_offset, submatches 的匹配對象陣列
GET/find/file?query=<q>按名稱查找文件和目錄string[](路徑)
GET/find/symbol?query=<q>查找工作區符號Symbol[]
GET/file?path=<path>列出文件和目錄FileNode[]
GET/file/content?path=<p>讀取文件FileContent
GET/file/status獲取跟蹤文件的狀態File[]

/find/file查詢參數

  • query(必需)- 搜索字符串(模糊匹配)
  • type(可選)- 將結果限制為"file""directory"
  • directory (可選) — 覆蓋搜索的項目根目錄
  • limit(可選)— 最大結果 (1–200)
  • dirs(可選)- 舊標誌("false" 僅返回文件)

工具(實驗)

方法路徑描述回應
GET/experimental/tool/ids列出所有工具 IDToolID
GET/experimental/tool?provider=<p>&model=<m>列出具有模型 JSON 架構的工具工具列表

LSP、格式化程序和 MCP

方法路徑描述回應
GET/lsp獲取LSP服務器狀態LSPStatus[]
GET/formatter獲取格式化程序狀態FormatterStatus[]
GET/mcp獲取 MCP 服務器狀態{ [name: string]: MCPStatus }
POST/mcp動態添加MCP服務器body: { name, config }, 返回 MCP 狀態對象

Agents

方法路徑描述回應
GET/agent列出所有可用的代理代理[]

記錄

方法路徑描述回應
POST/log寫入日誌條目。正文:{ service, level, message, extra? }boolean

TUI

方法路徑描述回應
POST/tui/append-prompt將文本附加到提示boolean
POST/tui/open-help打開幫助對話框boolean
POST/tui/open-sessions打開會話選擇器boolean
POST/tui/open-themes打開主題選擇器boolean
POST/tui/open-models打開模型選擇器boolean
POST/tui/submit-prompt提交當前提示boolean
POST/tui/clear-prompt清除提示boolean
POST/tui/execute-command執行命令({ command })boolean
POST/tui/show-toast顯示祝酒 ({ title?, message, variant })boolean
GET/tui/control/next等待下一個控制請求控制請求對象
POST/tui/control/response響應控制請求 ({ body })boolean

授權

方法路徑描述回應
PUT/auth/:id設置身份驗證憑據。正文必須與提供者架構匹配boolean

活動

方法路徑描述回應
GET/event服務器發送的事件流。第一個活動是server.connected,然後是巴士活動服務器發送的事件流

文件

方法路徑描述回應
GET/docOpenAPI 3.1 規範具有 OpenAPI 規範的 HTML 頁面