dsh-claude-cli:把本機 Claude Code CLI 接成 DSH 的 LLM provider

前言

DSH 做 agent 時,通常需要一個可以持續調用的 LLM provider。如果你本機已經安裝了 Claude Code CLI,並且已經登錄可用,這個插件可以把本機 claude 直接接成 DSH 的 LLM provider。

它不額外要求 API key。插件把 claude 作爲子進程運行,並把 CLI 的輸出通過 harness 的 LLM seam 流回 DSH。DSH 仍然負責 agent 流程、會話歷史和工具執行,插件只負責把模型調用接過去。

這是什麼

  • 插件名:dsh-claude-cli
  • 維護者:katsos
  • 許可證:MIT
  • 倉庫地址:https://github.com/katsos/dsh-claude-cli
  • 運行依賴:PATH 中可用的 claude、Node ^22.19 || >=24、帶 @deepseek-ai/dsh-llm 的 harness

這個插件目前不在 npm 上,安裝時直接指向本倉庫目錄。

核心功能

這個插件解決的是一個很具體的問題:想用本機 Claude Code CLI 的模型能力,但不希望 CLI 自己跑 agent loop、自己管工具、自己讀設置、內存文件或 MCP servers。

它的主要行爲包括:

1、把本地 claude 作爲子進程啓動,並把輸出流回 DSH 的 LLM seam。

2、保持 DSH 作爲 agent。CLI 自己的 agent loop、tools、settings、memory files 和 MCP servers 都被關掉,只保留由 DSH 驅動的模型調用。

3、通過 bridge.mjs 把 harness 工具聲明爲 MCP server,並讓模型輸出真實的 tool_use blocks。

4、把模型返回的 tool_use blocks 轉成 harness 的 tool-call chunks。

5、工具執行仍然由 harness 負責。bridge.mjs 不執行工具。

6、模型名直接透傳給 CLI。CLI 接受的 alias,例如 fableopussonnethaiku,以及完整 id,例如 claude-sonnet-5,都可以傳入。

安裝與啓用

安裝前確認三件事:

  • claude 在 PATH 中可用;
  • Node 版本滿足 ^22.19 || >=24
  • 當前 harness 帶有 @deepseek-ai/dsh-llm

下面是官方給出的安裝命令:

dsh plugin --profile web add ../dsh-claude-cli

這裏的 ../dsh-claude-cli 是相對運行命令位置的倉庫路徑。因爲插件不在 npm 上,當前只能通過目錄安裝。

安裝後需要重啓 harness。原因是 profile 的 layer stack 在啓動時讀取,已經運行的 server 會繼續使用啓動時的組合。

重啓後,模型會出現在 model picker 的 Claude Code CLI 分組下。

如果你不確定當前 dsh 命令從哪裏來,可以按 harness 的安裝方式選擇:

  • Global:dsh …
  • Source checkout:pnpm dsh …
  • Neither:npx @deepseek-ai/dsh …

使用 npx 時要用 scoped 名稱 @deepseek-ai/dsh。npm 上未帶 scope 的 dsh 是一個不相關的 JavaScript shell。

典型用法

如果只是想臨時跑一次,不想改動某個 profile,可以用 --patch 方式加載插件目錄裏的 cordis.yml

dsh --profile headless --patch /absolute/path/to/dsh-claude-cli/cordis.yml "your task"

這裏的 patch 路徑需要寫成絕對路徑。這個方式適合快速驗證,或者用於不想直接修改 profile 配置的場景。

插件支持這些配置字段:

providers
executable
cwd
streamIdleTimeoutMs
unsupportedFields
defaultEffort
extraArgs

其中 extraArgs 適合傳插件自己沒有建模的 CLI flags,例如:

--betas

extraArgs 會在插件自己的 flags 之前傳入。如果某個條目命名了插件自己的 flags,插件加載時會拒絕。這樣設計是爲了避免參數順序影響 CLI 最終解析結果。

限制與注意

這個插件依賴本地 CLI,而不是 HTTP API,所以有一些明確限制。

  • 沒有跨輪 prompt caching。每次請求都會把 harness history 渲染成一個新 turn,然後發給 CLI。這會按 Claude usage limits 計數。
  • temperaturemaxTokensstop 不能被 CLI 原生支持。默認情況下它們會被報告爲 UNSUPPORTED。如果 agent preset 總是設置這些字段,可以把 unsupportedFields 設爲 ignore
  • 圖片不會被髮送。image block 會在 transcript 中顯示爲一個可見 placeholder。
  • 先前 reasoning 不會被重放。provider 會丟棄 history 中未簽名的 thinking。
  • 沒有 app-attribution header 可以覆蓋 CLI 自己發出的請求。
  • Rate limits 跟隨當前賬號。訂閱登錄會和 interactive Claude Code sessions 共享。

這個插件不會繞過認證。請求通過官方 CLI 發出,身份就是當前 claude 已登錄的身份。使用前應查看你的使用條款和 plan 限制。

對於無人值守、高吞吐或生產流量,更建議使用 API key 和 HTTP provider。這個插件更適合你本來就會手動在 Claude Code 中運行的本地工作。

另外需要注意:reselling access、爲其他人提供服務、以及評估模型以構建競爭性產品,都是被禁止的。

由於插件會在當前 dsh 進程可訪問的本地環境中啓動 claude 子進程,安裝前應檢查倉庫源碼和 MIT 許可證,確認你信任其中會執行的邏輯。

結尾

dsh-claude-cli 的價值在於:它把已有本機 Claude Code CLI 的登錄態,接成 DSH 可調用的一組模型 provider,同時保留 DSH 對 agent、工具和工具執行的控制權。

它適合本地調試、本地 agent 任務,或者不想再申請 API key 的臨時場景。對於生產或高流量任務,仍應優先選擇 API key 和 HTTP provider。

倉庫地址:https://github.com/katsos/dsh-claude-cli。當前給出的資料裏沒有目錄頁 URL,建議先查看 GitHub 倉庫確認最新文檔和配置。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜