claude-in-dsh:把 dsh web 會話交給本機 Claude Code CLI 驅動

前言

在 DSH 插件生態裏,一個常見需求是:不想完全替換 dsh web 的會話界面,但希望某個會話由本機 Claude Code CLI 驅動。已有做法往往是在終端裏單獨跑 claude,再人工把輸出、審批和工具結果搬回 dsh web;這樣做會失去 dsh 的會話渲染、審批卡片和命令面板。

claude-in-dsh 針對這個場景:它把 DeepSeek Harness(dsh web)的一個會話交給本機 Claude Code CLI 驅動,同時繼續使用 dsh 原生會話渲染展示轉錄、工具卡片、審批和命令面板。下面介紹它的定位、能力、安裝方式和注意事項。

這是什麼

claude-in-dsh 是 GeekRicardo 維護的 dsh web 插件,許可證爲 MIT。它屬於 DSH 插件生態中的社區插件;社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

它的一句話定位是:把 dsh web 的一個會話交給本機 Claude Code CLI 驅動。agent 工作發生在本機 claude 中,dsh web 負責接收流,並用 dsh 原生 UI 展示結果。

核心能力

會話引擎選擇

插件提供 DSH | Claude Code 引擎選擇器,並按會話互斥切換。一個會話一旦由 DSH 或 Claude 跑過,就持續屬於該引擎;綁定關係從會話日誌推斷,重啓後不丟。

原生會話渲染

Claude 的流被寫成 dsh 持久會話事件,隨後使用 dsh 原生會話渲染展示轉錄、工具卡片、審批和命令面板。子 agent(Agent 工具)會渲染爲嵌套子調用。

權限檔與審批

切到 Claude 後,插件用 Claude 權限檔替換 dsh 訪問模式選擇器,權限檔包括:

manual / acceptEdits / auto / bypassPermissions / plan

Claude 的權限請求(can_use_tool)會橋接到 dsh 原生審批 UI。如果配置了 Claude 的 PermissionRequest hook,則完全遵循該 hook。

提問與計劃審覈

Claude 的 AskUserQuestion 會交給 dsh 提問服務,並以 dsh 原生提問卡片展示。提問一律問人,不受權限檔影響。

Claude 的 ExitPlanMode 用 dsh 計劃審覈卡片審覈。批准後退出計劃模式,並把權限檔落回監督檔;選擇繼續規劃時,反饋會原樣送回模型。

模型、命令與訂閱用量

插件提供 Claude 模型清單和 reasoning effort 選擇,並可通過 set_model 在運行中切換模型。

Claude 斜槓命令會併入 dsh 命令面板;/mcp/context/usage 等一次性命令帶外執行。

官方訂閱時,輸入框下方會顯示 5h/7d 用量與刷新倒計時。用量讀數會覆蓋 dsh-balance 的座位,切回 DSH 時自動還原。

進程託管與斷檔補播

Claude 進程由獨立 broker(setsid)託管,使插件熱更新或 dsh 重啓不中斷正在運行的輪次。dsh 重啓期間 Claude 已完成的輸出,也會補播到轉錄中。

只有真人發言會喚醒 Claude;dsh 插件系統注入的通知消息不會消耗一輪訂閱額度,內容會在下次真人發言時一併帶上。

前置要求

使用前需要滿足以下條件:

  • Node.js ≥ 20
  • pnpm
  • 已啓動過一次的 dsh web(存在 ~/.dsh/profiles/web
  • 本機已安裝並登錄 Claude Code CLI(2.1.x)

安裝與啓用

安裝

先執行官方安裝命令:

curl -fsSL https://raw.githubusercontent.com/GeekRicardo/claude-in-dsh/main/install.sh | bash

裝完需要重啓 dsh web,並硬刷新頁面。若使用 pm2,可以執行:

pm2 restart dsh-web

本地開發

如果使用本地工作區目錄,而不是 GitHub 快照,可以執行:

bash install.sh --link /path/to/claude-in-dsh --restart

安全重啓

直接 pm2 restart 會打斷正在跑的輪次,並會在該對話裏留下 TOOL_OUTCOME_UNKNOWN 紅卡。建議使用插件提供的安全重啓腳本:

bash scripts/safe-restart.sh

它會先確認沒有進行中的 Claude 輪次再重啓。

典型用法

導入本機 Claude Code 對話

  1. 打開 dsh web 工作區 菜單。
  2. 選擇「導入 Claude Code 對話」。
  3. 選擇本機 Claude 會話後預覽,並接着聊。

運行中的輸入

跑輪次時,可以使用不同按鍵控制輸入:

  • Ctrl/Cmd+Enter:插話,直接折進 Claude 當前輪。
  • 普通 Enter:沿用 dsh 排隊語義。

在 Claude 會話中粘貼圖片後,圖片會存爲 dsh 原生附件,並隨下一條消息發送給 Claude。

本地構建

改代碼只改 src/,然後執行:

pnpm build

或執行:

pnpm test

pnpm test 會先 build,再跑 bundle 冒煙測試。

運行時落點

下面是幾個常見運行時位置,便於排查:

/tmp/ccmode/<sessionId>/
~/.cache/ccmode/state.json

RPC 爲同源 POST /claude-in-dsh/rpc,僅迴環 + 同源,供本插件 client 半使用。

適用場景與注意

適合誰

適合希望把 dsh web 會話切到本機 Claude Code CLI 驅動,同時保留 dsh 原生渲染、審批、命令面板和附件展示的人。

注意

  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
  • 會話引擎綁定後,該會話持續屬於 DSH 或 Claude,不要在同一會話裏頻繁假設兩種引擎能力一致。
  • AskUserQuestion 一律問人,不受權限檔影響。
  • 官方訂閱用量讀數會覆蓋 dsh-balance 的座位,切回 DSH 時自動還原。
  • 重啓 dsh web 時優先使用 scripts/safe-restart.sh,避免打斷正在運行的輪次。

結尾

claude-in-dsh 的價值在於:不需要在 dsh web 和 Claude Code CLI 之間手動搬運行,而是讓一個 dsh 會話直接由本機 Claude 驅動,並繼續使用 dsh 的審批、提問、命令面板和原生渲染。

目錄頁可按插件名 claude-in-dsh 在社區目錄中檢索;具體 URL 以插件站點實際展示爲準。GitHub:

https://github.com/GeekRicardo/claude-in-dsh
羽毛球分组比赛记分
小程序二维码

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

小夜