前言¶
DeepSeek Harness (DSH) 默认只使用 DeepSeek 作为主循环。如果需要在同一工作流中切换到 Claude Code,同时保留 DSH 的界面和日志能力,就需要额外的方案。dsh-claude-code 插件正是为此设计,它不自己替换主循环,而是定义一个 claude-code 引擎,配合 dsh-engine-switch 实现无缝切换。主会话选择 Claude Code 时,工具、沙箱与人设都来自 Claude Code;子代理则继续使用 DeepSeek。
核心功能¶
-
一键接入 Claude Code
插件定义了一个claude-code引擎,配合dsh-engine-switch使用。预设列表中出现「Claude Code」选项后,选中即可切换,选择其它则使用 DeepSeek。 -
轨迹实时可见
文本、思考、工具调用与结果会实时流进 DSH 会话,每一步都实时显示在界面中。 -
上下文占用可见
Claude Code 的 token 用量与模型上下文窗口会写入 DSH 会话日志(TokenUsage+request/context),DSH 界面会据此显示上下文占用比例。 -
权限桥接
DSH 的沙箱模式与审批策略会映射到 Claude 的权限回调:工作区内写操作放行,区外操作触发审批。AskUserQuestion会使用 DSH 的选择题 UI 作答。 -
工具与沙箱
预设只当路由键,不把 DSH 的 persona 或工具透传过去。工具与沙箱都直接来自 Claude Code。 -
精确续接
通过旁路持久化 Claude 会话 id,续聊时可以接回同一个 Claude 会话,而不是开启新会话。 -
子代理照旧 DeepSeek
不管主会话选了谁,子代理都继续使用 DeepSeek。
安装¶
本插件依赖 dsh-engine-switch,安装前需先安装该依赖。
dsh plugin --profile web add github:Yuki-takuya-kun/dsh-engine-switch
dsh plugin --profile web add github:Yuki-takuya-kun/dsh-claude-code
安装要求:
* PATH 中包含 pnpm。
* 本机安装了 claude CLI(需已登录)或设置了 ANTHROPIC_API_KEY 环境变量。
配置与启用¶
编辑 ~/.dsh/profiles/web/cordis.patch.yml,启用 dsh-engine-switch 并配置 claude-code 引擎:
- id: dsh-engine-switch
config:
enabled: true
# 可选:claude-code 引擎的选项
engines:
claude-code:
executable: claude
# env: { ANTHROPIC_API_KEY: sk-... } # 未登录时使用
重启 web 应用。在预设列表中选择「Claude Code」即可切换模式,选择其它选项则继续使用 DeepSeek。
工作原理¶
本插件在 apply() 中通过 ctx.engineSwitch.register(claudeCodeEngine) 注册 claude-code 引擎。
每轮运行时,插件会调用 Claude Code 的 SDK,并将 SDK 产生的事件转换为 DSH 会话事件(turn / step / assistant / tool 等),实现实时流式输出。
权限控制通过 canUseTool 回调实现桥接:工作区内写操作放行,区外操作触发审批。AskUserQuestion 也会复用 DSH 的选择题 UI。
注意事项¶
- 本插件不自己替换主循环,只定义引擎。
- 需要配合
dsh-engine-switch使用。 - 第三方组件详情见
THIRD_PARTY_NOTICES.md。