# Claude Code 供應商

透過本機已安裝的 `claude` CLI，以 Claude 訂閱執行模型。

`claude-code`（v1.1.0 起）把本機已安裝並登入的 `claude` CLI 當作模型後端，請求走 Claude 訂閱而非按量計費的 API key。預設關閉，定位為個人使用：以 `agen --enable-claude-code` 啟動即可啟用（需先 `agen stop` 停止 daemon），該 TUI 與它啟動的 daemon 皆生效。

| 面向 | 行為 |
|---|---|
| 傳輸 | 每個 session 與模型各一個 `claude -p` 行程，以 `stream-json` 溝通。CLI 自帶的工具與 MCP server 全部停用（`--tools ""`、`--strict-mcp-config`）；tool call 由 Agenvoy 依原本規則執行 |
| 工具 | 只送出工具名稱與完整的 `find_tools` schema；其餘 schema 經 `find_tools` 按需取得 |
| 模型 | 取自 `models.agenvoy.com`（與 `claude` 同一份目錄），不送出任何憑證 |
| 路由 | 同 tier 內 `claude-code` 模型排在所有其他供應商之前，其次 `codex`；同一基礎模型註冊於多個供應商時 `claude-code` 優先。v1.1.1 起請求指名的模型，或主題未變而沿用的上一個模型，不受此重排影響、維持在最前 |
| 額度 | 解析 `claude -p /usage` 的輸出——不呼叫 API——顯示於 `Shift+U` 與 `GET /v1/providers/quota` |
| 用量 | Input token 含 cache write，與 `claude` 相同 |
| Session | v1.1.1 起每個 session + 模型各自保有一個 Claude Code session：首輪以 `--session-id` 啟動 `claude`，之後沿用存活的 process；process 結束或 daemon 重啟後改以 `--resume` 接續，接續失敗則帶完整歷史開新 session。狀態存於 `sessions/<sid>/claude_code_<model>.json`。不帶工具或沒有 session 的呼叫仍以 `--no-session-persistence` 執行 |
| Prompt cache | v1.1.1 起 session 的模型或 reasoning 為 `auto`（以及一次性呼叫）時 `CLAUDE_CODE_PROMPT_CACHE_TTL` 為 `5m`，兩者皆固定時為 `1h`；TTL 改變會重啟 process |
| Tool call 格式 | `<tool_call name="...">` 區塊；v1.1.1 起也接受 `<invoke name="...">` 搭配 `<parameter name="...">` 子元素（含帶 namespace 的標籤）；回覆只剩空標籤加 tool call 時顯示為 `Processing...` |
| 未啟用時 | `/model add` 仍顯示該列，但已註冊的 `claude-code@` 模型會被 agent registry、路由、`/model` 清單與 dispatcher 選單略過；`GET /v1/providers` 將該列標為 `hidden` |
