dsh-claude-delegate:在 DSH 中按次調用宿主機 Claude Code CLI

前言

在 DeepSeek Harness(DSH)裏做模型推理或複雜編碼任務時,常見做法是掛官方子代理包、固定 SDK 版本,或自己拼子進程。另一條路是直接把任務交給本機已安裝的 Claude Code 命令行:每次調用單獨起進程,按次選模型和 effort,不綁死 SDK 版本,由用戶自行 claude update 維護啓動器。

本文介紹社區插件 dsh-claude-delegate(維護者 lcf2212dev,分類:模型推理)。它以獨立 bundle 形式只暴露一個工具 claude_delegate,通過宿主機的 claude -p 啓動無人工值守的 Claude Code 會話,不依賴 @deepseek-ai/dsh-subagent-claude-code,也不依賴固定子代理實例或釘死的 SDK。

這是什麼

插件解決的是:在 DSH 會話裏需要「另開一個 Claude Code 幹活」時,如何用最少依賴、可調模型與 effort 的方式委派任務,且臨時目錄與鑑權行爲可預期。

核心功能

單次調用 = 一個子進程

每次工具調用等價於在宿主機執行一次 Claude Code 打印模式,大致形態如下(實際參數由插件組裝):

claude -p <task> --model <opus|sonnet|haiku> --effort <low|medium|high|xhigh|max> \
       --dangerously-skip-permissions --output-format json --no-session-persistence

要點(均來自 README):

  1. 默認放行權限:未設 readOnly 時使用 --dangerously-skip-permissions;readOnly: true 時改爲 --permission-mode plan(不編輯、不跑需審批的命令)。
  2. model / effort 可按調用覆蓋:未傳時用 profile 行配置裏的默認值。
  3. 鑑權:默認 isolateCredentials: true,會去掉環境中的 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、CLAUDE_CODE_OAUTH_TOKEN、CLAUDE_CODE_API_KEY,讓本機 OAuth 登錄優先生效;若要用 API Key,可設 isolateCredentials: false 並在 env 裏傳入。
  4. 獨立臨時目錄:設置 CLAUDE_CODE_TMPDIR(默認 ~/.cache/claude-delegate),減輕多用戶下 /tmp/claude-$UID 歸屬問題。
  5. 工作目錄:默認爲會話 workspace,也可在調用參數裏指定絕對路徑 cwd。
  6. 取消:可終止子進程樹(SIGTERM,約 3 秒後 SIGKILL)。
  7. 無內置超時:timeoutMs 爲 0 時不封頂;調用會阻塞直到子進程結束或被取消。

工具參數 claude_delegate

參數 說明
task 必填;自給自足的任務描述,子會話看不到父對話
model opus | sonnet | haiku
effort low | medium | high | xhigh | max(模型可能 clamp 不支持的檔位)
cwd 絕對路徑;省略則用會話 workspace
readOnly 默認 false;true 時只讀/規劃模式

明確不提供的功能

  • 單次執行:無續聊、resume、流式或父上下文帶入。
  • 父智能體需等待子進程結束(可在 UI 取消)。
  • 若 claude update 改了 CLI 旗標(如 --effort、--no-session-persistence),需自行改插件源碼中的參數數組(README 指向 index.js)。

安裝與啓用

官方 README 未提供 dsh plugin add github:... 一類命令;安裝方式爲在 profile 裏 link 本地包路徑 並加入 bundles。下面步驟照 README 原文。

  1. 在 profile 的 package.json(例如 ~/.dsh/profiles/desktop/package.json)中 link 包:
"@dsh-burn-plugins/dsh-claude-delegate": "link:/path/to/dsh-claude-delegate"

將 /path/to/dsh-claude-delegate 換成本地已有源碼目錄的實際路徑(非 git clone 步驟;你需自行取得代碼目錄)。

  1. 在 dsh.profile.bundles 中加入 @dsh-burn-plugins/dsh-claude-delegate。

  2. 在該 profile 下執行 pnpm install(會在 node_modules/@local 下創建 symlink)。

  3. HMR 會重組 profile,下一次模型請求時工具纔會出現。

依賴:peer 需要 @deepseek-ai/dsh-tools(>=0.2.2-rc.1)與 @deepseek-ai/schemastery(>=3.19.0 <4)。要求:宿主機已安裝 claude 並已登錄(訂閱),或在關閉憑證隔離後通過 env 提供密鑰;不要再裝 @deepseek-ai 子代理包。

配置(profile 行 claude-delegate)

在 profile patch(如 ~/.dsh/profiles/desktop/cordis.patch.yml)中覆蓋行配置即可,無需改插件倉庫。注意:config 整塊替換行配置,未寫字段回落到默認。

字段 默認 含義
command claude Claude Code 啓動器;若 PATH 上有 wrapper 建議寫絕對路徑
model opus 調用未傳 model 時的別名
effort high 調用未傳 effort 時的檔位
tmpDir 空則 ~/.cache/claude-delegate 導出爲 CLAUDE_CODE_TMPDIR
env {} 疊在宿主環境之上的額外環境變量
timeoutMs 0 聲明式單次上限;0 表示不限制
isolateCredentials true 去掉環境裏的 Ambient 憑證以走訂閱登錄

示例:

- id: claude-delegate
  name: "@dsh-burn-plugins/dsh-claude-delegate"
  config:
    command: /absolute/path/to/claude
    model: sonnet
    effort: medium

典型用法思路

DSH 模型在對話中調用 claude_delegate 時,傳入完整 task 字符串;需要省 token 或只讀摸底時設 readOnly: true;需要 Sonnet + 中等 effort 時在參數裏寫 model / effort,不必改全局配置。

子進程使用 JSON 輸出格式返回,父會話據此繼續編排。因無會話持久化與續聊,適合「一塊獨立子任務」(例如單獨目錄下的重構草案、只讀架構掃描),不適合替代同一會話裏多輪協作的 Claude Code 窗口。

適用場景與注意

適合:本機已用 Claude Code 訂閱/OAuth;希望在 DSH 裏按需把任務甩給 Claude,且每次可選 Opus/Sonnet/Haiku 與 effort;不想維護官方子代理 bundle 與 SDK 版本對齊。

注意:

  1. 插件以當前 DSH 進程的用戶與權限運行子進程;默認跳過權限確認,啓用前請閱讀倉庫源碼與 MIT 許可證,理解 --dangerously-skip-permissions 的風險。
  2. SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係;星標與傳播數據以站點爲準,安裝前自行覈對倉庫歸屬(lcf2212dev)。
  3. 阻塞式調用會佔用父智能體等待時間;長跑任務依賴 UI 取消或自行設置 timeoutMs(若配置生效語義以插件實現爲準)。
  4. 僅 link 安裝時,路徑與 patch 由你本地 profile 管理,團隊復現需共享同一套 profile 約定。

結尾

dsh-claude-delegate 把 DSH 裏的「委派給 Claude Code」收成 一個工具、一次進程、按次選模型與 effort,直連宿主 claude -p,避免釘死 SDK。若你的環境已經習慣本機 Claude Code 更新節奏,又要在 Harness 裏偶發 offload 子任務,可以按 README 的 link + bundles 方式接入。

  • 目錄頁:https://www.skillhub.cn/plugins/lcf2212dev/dsh-claude-delegate
  • GitHub:https://github.com/lcf2212dev/dsh-claude-delegate
羽毛球分组比赛记分
小程序二维码

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

小夜