Dropstone CLI

伺服器

透過 HTTP 與 dropstone 伺服器互動。

dropstone serve 指令會執行一個無頭 HTTP 伺服器,並公開一個 Dropstone 用戶端可以使用的 OpenAPI 端點。


使用方式

dropstone serve [--port <number>] [--hostname <string>] [--cors <origin>]

選項

旗標說明預設值
--port要監聽的連接埠4096
--hostname要監聽的主機名稱127.0.0.1
--mdns啟用 mDNS 探索false
--mdns-domainmDNS 服務的自訂網域名稱dropstone.local
--cors允許的其他瀏覽器來源[]

--cors 可以多次傳遞:

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

驗證

設定 DROPSTONE_SERVER_PASSWORD 以使用 HTTP 基本驗證保護伺服器。使用者名稱預設為 dropstone,或設定 DROPSTONE_SERVER_USERNAME 來覆寫它。這同時適用於 dropstone servedropstone web

DROPSTONE_SERVER_PASSWORD=your-password dropstone serve

Agent 憑證

DROPSTONE_SERVER_PASSWORD 保護伺服器本身。它不會告訴 agent 如何連線到 Dropstone。在無人值守的機器上,沒有已登入的帳戶可以繼承,因此請透過 provider 設定傳遞 API 金鑰:

{
  "provider": {
    "dropstone": {
      "options": {
        "apiKey": "dsk_live_...",
        "baseURL": "https://api.dropstone.io/api/v1"
      }
    }
  }
}

baseURL 很重要。API 金鑰在 /api/v1 被接受,而不是在 /v1,而且傳送到 /v1 的金鑰會被拒絕,並出現 403 Invalid token format. Please log in again. 的錯誤。請在此處設定它,而不是透過 DROPSTONE_BASE_URL,因為後者也用於建構帳戶、使用量和記憶體端點,如果你將它指向一個帶有版本的路徑,這些端點將會失效。

dropstone.io/dashboard/settings 產生金鑰。

Note

預設的 build agent 會在每次工具呼叫前詢問。這裡沒有任何東西可以回答該提示,因此請求會掛起而不是失敗。請傳送 "agent": "accept all" 或設定明確的權限允許清單。請參閱 權限


傳送提示

POST /session/:id/message 需要 agentmodel 兩者。省略 model 不會解析出預設值:該輪次會回傳 200,但 body 為空,且不會執行任何操作。

curl -X POST "http://127.0.0.1:4096/session/$SID/message?directory=$PWD" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": "build",
    "model": { "providerID": "dropstone", "modelID": "dropstone-pro" },
    "parts": [{ "type": "text", "text": "Add error handling to src/index.ts" }]
  }'

失敗的輪次仍然會回傳 200。原因在 data.info.error,而不是在傳輸層級,因此請檢查該欄位,而不是依賴狀態碼。


運作方式

dropstone serve 透過 OpenAPI 3.1 HTTP 端點公開 Dropstone 的功能。相同的端點也用於產生 SDK

當你想要以程式化方式驅動 Dropstone 時,請使用伺服器:從腳本、CI 管線或你自己的整合。互動式 session 和伺服器是獨立的。無論你是否已開啟互動式 session,執行 dropstone serve 都會啟動一個全新的獨立伺服器。

你可以使用 --hostname--port 旗標 覆寫綁定位址。


規格

伺服器會發布一個 OpenAPI 3.1 規格,可以在以下位置檢視:

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

例如,http://localhost:4096/doc。使用此規格來產生用戶端或檢查請求和回應型別。或者也可以在 Swagger 瀏覽器中檢視它。


API

dropstone 伺服器公開以下 API。


全域

方法路徑說明回應
GET/global/health取得伺服器健康狀態和版本{ healthy: true, version: string }
GET/global/event取得全域事件 (SSE 串流)事件串流

專案

方法路徑說明回應
GET/project列出所有專案Project[]
GET/project/current取得目前專案Project

路徑與 VCS

方法路徑說明回應
GET/path取得目前路徑Path
GET/vcs取得目前專案的 VCS 資訊VcsInfo

設定

方法路徑說明回應
GET/config取得設定資訊Config
PATCH/config更新設定Config

Sessions

方法路徑說明備註
GET/session列出所有 sessions回傳 Session[]
POST/session建立新的 sessionbody: { parentID?, title? }, 回傳 Session
GET/session/status取得所有 sessions 的 session 狀態回傳 { [sessionID: string]: SessionStatus }
GET/session/:id取得 session 詳細資料回傳 Session
DELETE/session/:id刪除 session 及其所有資料回傳 boolean
PATCH/session/:id更新 session 屬性body: { title? }, 回傳 Session
GET/session/:id/children取得 session 的子 sessions回傳 Session[]
GET/session/:id/todo取得 session 的待辦事項清單回傳 Todo[]
POST/session/:id/init分析應用程式並建立 AGENTS.mdbody: { messageID, providerID, modelID }, 回傳 boolean
POST/session/:id/fork在訊息處分叉現有 sessionbody: { messageID? }, 回傳 Session
POST/session/:id/abort中止執行中的 session回傳 boolean
GET/session/:id/diff取得此 session 的 diffquery: messageID?, 回傳 FileDiff[]
POST/session/:id/summarize總結 sessionbody: { providerID, modelID }, 回傳 boolean
POST/session/:id/revert還原訊息body: { messageID, partID? }, 回傳 boolean
POST/session/:id/unrevert還原所有已還原的訊息回傳 boolean
POST/session/:id/permissions/:permissionID回應權限請求body: { response, remember? }, 回傳 boolean

訊息

方法路徑說明備註
GET/session/:id/message列出 session 中的訊息query: limit?, 回傳 { info: Message, parts: Part[]}[]
POST/session/:id/message傳送訊息並等待回應body: { messageID?, model?, agent?, noReply?, system?, tools?, parts }, 回傳 { info: Message, parts: Part[]}
GET/session/:id/message/:messageID取得訊息詳細資料回傳 { info: Message, parts: Part[]}
POST/session/:id/prompt_async非同步傳送訊息 (不等待)body: 與 /session/:id/message 相同, 回傳 204 No Content
POST/session/:id/command執行斜線指令body: { messageID?, agent?, model?, command, arguments }, 回傳 { info: Message, parts: Part[]}
POST/session/:id/shell執行 shell 指令body: { agent, model?, command }, 回傳 { info: Message, parts: Part[]}

指令

方法路徑說明回應
GET/command列出所有指令Command[]

檔案

方法路徑說明回應
GET/find?pattern=<pat>在檔案中搜尋文字包含 pathlinesline_numberabsolute_offsetsubmatches 的相符物件陣列
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" 僅回傳檔案)

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列出所有可用的 agentsAgent[]

日誌

方法路徑說明回應
POST/log寫入日誌項目。Body: { service, level, message, extra? }boolean

驗證

方法路徑說明回應
PUT/auth/:id為指定的目標設定驗證憑證。boolean

事件

方法路徑說明回應
GET/event伺服器傳送事件串流。第一個事件是 server.connected,然後是匯流排事件伺服器傳送事件串流

文件

方法路徑說明回應
GET/docOpenAPI 3.1 規格包含 OpenAPI 規格的 HTML 頁面
Ctrl+I