前言¶
在 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