REST API
Daemon 僅綁定 127.0.0.1:17989——區網 client 無法連到。Port 固定,不可設定。
同一個 daemon 在 / 提供 web 儀表板。儀表板在編譯時內嵌進執行檔,因此 http://127.0.0.1:17989 就是全部介面——沒有託管在外的前端。開發時可用 AGENVOY_PAGE_DIR 把內嵌版本換成磁碟上的檔案(make dev)。
自 v1.0.1 起儀表板可離線運作。GET /sw.js 提供 service worker,把內嵌資產預先快取到帶版本號的 cache;GET /vendor/* 則從 ~/.config/agenvoy/vendor/ 提供第三方資產(QuickUI、Font Awesome、Material Symbols,以及 nanomd/voice 腳本),該目錄由 daemon 啟動時下載一次,執行檔版本變動時重新下載。頁面載入不會向 CDN 取任何東西。在 AGENVOY_PAGE_DIR 模式下 /sw.js 改為提供一支自我卸載的 worker,清掉自己的 cache 並解除註冊,避免開發版被舊快取蓋掉。
標記 local 的端點另外要求請求來自 127.0.0.1/::1(localhostOnly() 守門)。這些端點管理憑證、設定檔或行程生命週期,設計對象是同機儀表板,不是遠端 client。未匹配的路由也套用同一道守門:未知的 /v1/ 路徑回 JSON 404,其他未知路徑則回退到儀表板首頁。
Agent 執行
| Method | 路徑 | 說明 |
|---|---|---|
POST |
/v1/send |
執行一次 agent 請求 |
POST |
/v1/chat/completions |
無狀態、相容 OpenAI 的 chat completion |
GET |
/v1/info/version |
編譯時寫入的版本({version, dev});未打 tag 的組建 dev 為 true |
GET |
/v1/log |
SSE 串流。不帶 query 時只送 daemon slog 記錄(EventDaemonLog frame,source 即 level)——與 TUI 標題列同一路資料。其中包含新對話驗證碼,因此 daemon frame 只提供給 loopback 呼叫端。?sessions=a,b 在同一條連線附加這些 session 的事件;replay=0 跳過回補、daemon=0 去掉 daemon frame。遠端呼叫端必須帶 sessions |
GET |
/v1/daemon |
local — daemon.log 原始內容 |
GET |
/v1/system/update |
local — v1.0.11 新增。回 {version, latest, update_available};latest 以追蹤 GitHub releases/latest/download/x 轉址取得(查不到時回 502 並附目前執行中的 version) |
POST |
/v1/system/update |
local — v1.0.11 新增。開一個終端機視窗執行 agen update,回 202 {status:"opened"};更新本身跑在該終端機內,不在 daemon 內。macOS 用 Terminal.app、WSL 啟動 Windows 終端機、Linux 依序嘗試 xdg-terminal-exec、x-terminal-emulator、gnome-terminal、konsole、xfce4-terminal、kitty、alacritty、wezterm、xterm。找不到可用終端機回 501 |
GET |
/v1/mcp/tools |
列出已連線 MCP server 註冊進來的工具(mcp__*) |
POST /v1/send 語意
Body 為 {content, session_id?, sse?, model?, skill?, work_dir?, system_prompt?, exclude_tools?, persist?},content 必填。若 session 仍在執行中,新請求會以 steer 訊息附加到該次執行,而不是另起一次。
persist |
session_id |
結果 |
|---|---|---|
false(預設) |
空 | 建立 temp-<uuid>,30 分鐘無變動後刪除 |
true |
空 | 建立 chat-<uuid>,保留 |
| 任意 | 有給 | 使用指定的 session_id(忽略 persist) |
chat 旗標與 http- 前綴已於 v1.0.11 移除:以 HTTP 建立的持久 session 改用儀表板同樣的 chat- 前綴,所有非 CLI 的持久 session 統一成同一種前綴。既有的 http- session 仍可透過 session_id 指名繼續使用。
curl --fail-with-body -sS \
-H 'Content-Type: application/json' \
-d '{"content":"List the available tools","persist":false}' \
http://127.0.0.1:17989/v1/send
/v1/chat/completions 為無狀態:需要延續脈絡時,每次請求都要帶上先前訊息。reasoning_effort 接受 none low medium high xhigh max(以及別名 minimal extra ultra);省略或無法辨識的值會回退到該 session 的 reasoning 設定。