前言¶
做智能體應用的開發者通常會遇到一個問題:harness 的界面、工具和歷史記錄都做好了,但模型通道還要自己接。接 Claude 有兩條路,一條是自己寫客戶端去讀訂閱憑據,另一條是不做客戶端,直接驅動用戶已經登錄過的 claude 二進制。clioo 維護的 dsh-claude-agent 選了後者。
它給 DeepSeek Harness(以下簡稱 DSH)增加了一個名爲 claude-agent 的模型 provider,實現方式沿用 opencode 自己的 claude-agent provider 設計:通過 Anthropic 官方 Claude Agent SDK 調用用戶本機安裝的 claude 程序。Claude Code 繼續使用自己的認證、客戶端和請求方式,插件只是在外面套上 harness 的 UI、工具和歷史。
這個做法的直接收益是提示緩存命中率。按作者測量,穩定狀態下緩存命中超過 90%,單輪工具調用中多數步驟在 96% 到 100% 之間。
下面介紹這個插件的定位、安裝方式和配置項。
定位:爲什麼不做第三方客戶端¶
插件的設計前提只有一句話:不要成爲訂閱憑據的第三方客戶端。
具體約束如下:
1、插件不讀取 ~/.claude/.credentials.json,不跑 OAuth 流程,沒有登錄界面。
2、每一個模型請求都由用戶自己安裝並登錄的 claude 程序在用戶機器上以用戶賬號發起。
3、插件不收集、不存儲、不代理、不重放任何內容,只傳遞 SDK 文檔中記錄的選項和環境變量。
4、claude 二進制不做修改,也不禁用任何認證方式;插件反而會清掉會跳過登錄的 CLAUDE_CODE_SIMPLE。
5、命名上遵循 Agent SDK 的品牌規範:產品名是 Claude Agent,不使用 Claude Code 作爲產品名。
依據是 Anthropic 當前的 Legal and compliance 頁面:OAuth token 只用於 Claude Code 和其他原生 Anthropic 應用的常規使用,開發者不得把 Claude.ai 登錄放進自己的應用,也不得替用戶用 Free、Pro、Max、Ultra 計劃憑據轉發請求,或收集、存儲、中間代存憑據與會話 token。同一份文檔明確允許終端用戶用自己的訂閱登錄未經修改的 Claude Code 二進制。插件實現的就是這後一種情況。
付費路徑也因此沒有被強制:訂閱、API key、Bedrock、Vertex、Foundry 或企業網關都可以,因爲插件不決定計費路由。如果要做一個向第三方提供 Claude 的託管產品,應該走 API key 或商業協議,那是另一種情況。
核心功能¶
以下能力均來自倉庫 README。
1、用自己的登錄使用 Claude 模型:Opus、Sonnet、Haiku,以及 Claude Code 運行時報告出來的顯式模型 id,運行時發現並緩存。
2、harness 工具通過 MCP 暴露:Claude Code 自帶工具被關閉,harness 的工具通過進程內 MCP server 暴露,JSON Schema 原樣發送。
3、工具輪次不丟進程:一個 Claude turn 停在工具邊界,等 harness 返回結果後恢復,而不是重啓進程重來。
4、歷史可恢復:harness 歷史是唯一事實來源,只發送 Claude 還沒看過的消息;Claude 的會話記錄在重啓後恢復。
5、隔離:不使用 Claude Code 的配置文件、hooks、skills、CLAUDE.md、MCP server、auto-memory、auto-compaction、advisor、tool search,也沒有非流式或拒答的回退路徑。
6、用量上報準確:按每次調用上報 token 用量,包含 cache reads 和 cache writes,harness 可以據此顯示真實的緩存命中率。
7、SDK 懶加載:SDK 在首次使用時加載,也可以換成 PATH 中的版本或配置指定的可執行文件。
運行要求¶
- DeepSeek Harness 0.2.1 或更高版本(該 provider 是 Host bundle)
- 已安裝並登錄的 Claude Code 2.1.248 或更高版本:
先確認本機環境:
claude --version
claude auth login
claude 二進制必須在 PATH 上,或者在插件配置裏顯式指定 executable。插件不會使用 SDK 自己下載的那份二進制,它運行的就是你自己裝的版本,CLI 版本和登錄狀態以你的爲準。
安裝與啓用¶
在 DeepSeek Harness Desktop 裏打開 Plugin Manager,從目錄頁安裝 bundle。bundle 只插入一行 claude-agent,不會禁用其他任何東西。
對於 Electron 不管理的 profile,使用命令行:
dsh plugin --profile <profile> add /path/to/dsh-claude-agent
替換文件後要重新加載插件或重啓 DSH,Host 纔會加載新的模塊生成結果。
然後在模型選擇器裏選 Claude Agent,或者直接設爲默認模型:
- id: agent-default-model
config:
provider: claude-agent
model: opus # 或者 sonnet、haiku、claude-opus-5-5 等
reasoningEffort: high
配置項¶
插件配置塊如下,未寫的項都有默認值:
- id: claude-agent
name: 'dsh-claude-agent'
config:
# 可選。默認使用 PATH 上的 claude。
executable: /usr/local/bin/claude
# 可選。Claude 進程的工作目錄。
cwd: /home/you/project
# 可選。輸出上限,對應 CLAUDE_CODE_MAX_OUTPUT_TOKENS。
maxOutputTokens: 32000
# 進程在多少分鐘無活動後停止(默認 5)。
idleMinutes: 5
# 一個處於等待狀態的工具輪次保留多少分鐘(默認 30)。
parkedMinutes: 30
# 連接設置,映射方式與 opencode 完全一致。
baseURL: https://api.anthropic.com
apiKey: sk-ant-...
# authToken、headerTimeout、chunkTimeout、headers、body
連接類配置項與 Claude Code 環境變量的對應關係:
| Plugin config | Claude Code setting |
|---|---|
baseURL |
ANTHROPIC_BASE_URL |
apiKey |
ANTHROPIC_API_KEY |
authToken |
ANTHROPIC_AUTH_TOKEN |
headerTimeout |
API_TIMEOUT_MS |
chunkTimeout |
CLAUDE_STREAM_IDLE_TIMEOUT_MS |
headers |
ANTHROPIC_CUSTOM_HEADERS |
body |
CLAUDE_CODE_EXTRA_BODY |
maxOutputTokens |
CLAUDE_CODE_MAX_OUTPUT_TOKENS |
不顯式配置連接項時,插件沿用當前環境,把決定權交給 claude 的登錄狀態。配置優先級高於 shell 環境。
提示緩存的實際表現¶
緩存命中率高不是靠調參,而是靠保持前綴穩定。README 裏列了四條機制:
1、每個 harness 會話只用一個長駐 claude 進程,工具輪次停在進程內等待,而非重啓。
2、系統提示、工具列表和連接設置會被哈希,只有其中某一項真正變化時才重啓進程。
3、harness 歷史被打指紋。只追加 Claude 還沒看過的消息;如果歷史本身變了(編輯、撤銷、切換模型),就發送一次 <conversation-checkpoint> 重建,而不是假裝舊前綴依然有效。
4、用量從每個 API 消息上報,不使用 SDK 的整輪彙總值,這樣命中率統計不會失真。
README 記錄了一個真實 turn 的逐步驟數據,模型爲 claude-haiku,Claude Code 2.1.317。完整 28 步的總量是 3,348,680 cached input、161,101 次 cache write、110 個未緩存輸入,整體命中率 95.4%,從第 6 步起穩定在 97% 到 99.8%。這些數字是作者單次會話的測量結果,不同負載下會有差異,但機制本身是可覈查的。
順帶一提,會話日誌裏記錄的 cached input 比逐消息彙總要大,原因是最後一個步驟攜帶了整輪的聚合值。這也是爲什麼要按消息上報而不是按 SDK 彙總。
適用場景與注意¶
適合的場景:你本人已經用 Claude 訂閱(或 API key、Bedrock、Vertex、Foundry、企業網關)登錄了本地 claude,想在 DSH 的界面、工具鏈和歷史管理下做開發,同時不想把憑據暴露給任何第三方客戶端。README 的完整分析見倉庫裏的 docs/opencode-approach.md。
不適合的場景:要做一個向第三方提供 Claude 能力的託管產品。那種情況應該用 API key 認證或商業協議,插件的本地登錄方案不適用。
需要留意的地方:
1、插件以當前 DSH 進程的權限運行,能讀到該進程能讀到的文件和環境。安裝前應先檢查源碼和許可證,倉庫根目錄有 LICENSE 與 SECURITY.md。
2、README 聲明插件與 Anthropic、opencode、DeepSeek 沒有隸屬、背書或贊助關係。
3、倉庫爲社區個人項目,包名爲 dsh-claude-agent,當前 package.json 版本 1.0.0,依賴 @anthropic-ai/claude-agent-sdk 0.3.318 與 @modelcontextprotocol/sdk 1.32.2,要求 Node.js 18.14.0 以上。目錄頁顯示星標 0,屬於很新的項目,接入前值得自己跑一遍冒煙測試。
4、配置裏的 idleMinutes 和 parkedMinutes 決定進程何時被回收,長任務場景需要留意默認值。
小結¶
這個插件的價值不在於多提供了一種模型,而在於換了一種接 Claude 的方式:不碰憑據、不重啓進程、保持前綴穩定,從而拿到穩定且可觀的緩存命中率,同時讓 harness 的工具鏈和歷史成爲事實來源。如果你本來就在用 Claude Code,想在 DSH 裏繼續用同一套登錄,這是目前實現上最省事的一條路徑。
- 目錄頁:https://www.skillhub.cn/plugins/clioo/dsh-claude-agent
- 源碼:https://github.com/clioo/dsh-claude-agent
(社區目錄是獨立站點,與 DeepSeek 無官方從屬關係。)