前言¶
在 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 對話¶
- 打開 dsh web 工作區
⋯菜單。 - 選擇「導入 Claude Code 對話」。
- 選擇本機 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