dsh-claude-codex-mode:讨论只读、改仓交给 Codex

前言

在 DSH 里用同一个模型既聊方案又直接改仓库,常见问题是:讨论阶段误写文件、执行阶段缺少独立审查,或 Claude 与 Codex 各管一段时路由不清晰。社区插件 dsh-claude-codex-mode(目录名 hotheat/dsh-claude-codex-mode)把职责拆开:需求、架构、读代码和是否值得修留在只读讨论;对 Git 仓库内代码或配置的修改统一走 Codex CLI,并在你明确说「开始吧 / 做吧 / 执行」之后才动手。DSH 会在 Codex 跑完后自行查看 git status、git diff 和测试结果再汇报。

这是什么

讨论执行分工(英文界面 Discuss / Execute Split)是面向 DeepSeek Harness 的 bundle,由 hotheat 维护,分类为客户端。当前 package 版本为 0.7.0,许可证 MIT。社区目录页见 SkillHub,源码与说明在 GitHub。

两种讨论模式

在 DSH 插件页打开本插件表单即可切换模式,生效无需重启 DSH。

模式 讨论由谁完成 代码修改 挂载的 MCP
api(默认) DSH 主模型;需在模型页配置 Anthropic provider 并选用 Claude Codex 宿主工具 无
claude-code-cli DSH 主模型把讨论转发给 Claude Code CLI(只读 discuss / review,用订阅登录,无需 API key) 仍由 DSH 主模型调用 Codex 宿主工具 claude-code

api 模式面向按 Claude 设计的用法:请把 DSH 默认模型设为 Claude。claude-code-cli 模式下 Claude Code 看不到 DSH 会话,路由提示词要求主模型在每次 mcp__claude-code__claude_code_run 中带上用户原话与上下文,用 resumeSessionId 续话题,并如实转述 Claude Code 的结论。

claude_code_run 的 discuss(默认)与 review 均为只读,共用 --permission-mode plan --safe-mode --strict-mcp-config --tools Read,Glob,Grep;task 需显式传入 permissionMode。无论哪种,仓库代码改动仍按 bundle 规则交给 Codex。

写文件 guard 与 Codex 执行

写文件 guard 拦截四个结构化写文件工具(write、edit、str_replace_editor、apply_patch)对 Git 仓库内代码路径的写入,并提示模型改走 Codex。str_replace_editor 的 view 只读放行;部分文档后缀、非 Git 路径、根目录存在 .claude/direct-edit 等情形会放行,详见 README。

Codex 侧宿主注册 codex_cli_setup、codex_cli_run、codex_cli_review,与包内 mcp/codex-cli/server.mjs 备用 MCP 共用 schema。前台调用默认等待 timeoutMs(4 分钟);超时后进程继续,调用返回 jobId。可通过 DSH 的 job_output、job_list、job_kill 管理任务,用 resumeSessionId 续 Codex 会话。任务面板依赖 composition 中的 @deepseek-ai/dsh-jobs-local 与 @deepseek-ai/dsh-tool-jobs。

表单里 Codex 输出位置 可选 jobs(默认,用 dsh-better-sidebar 的后台任务抽屉)或 tab(独立 Codex 侧栏页,需 dsh-better-sidebar)。选项保存即生效,无需刷新。

前置检查

打开插件表单会检查当前模式;检查并保存 在保存前对目标模式跑同一套检查,任一阻断项失败则拒绝保存并保留原模式。

范围 检查项 级别
所有模式 Node.js ≥ 20 阻断
所有模式 codex --version 可用 阻断
所有模式 codex login status 已登录 阻断
所有模式 mcp/codex-cli/server.mjs 存在 阻断
api llm-pi-ai 已配置 anthropic provider 且至少一个模型 阻断
api provider 的 apiKeyEnv 对应凭据存在 阻断
api 默认模型不是 Claude 仅提示
claude-code-cli claude --version 可用 阻断
claude-code-cli claude auth status 为 loggedIn: true 阻断
claude-code-cli mcp/claude-code/server.mjs 存在 阻断

选中 API 卡片时表单只读展示 Anthropic 的 base URL、密钥变量名与来源、已配置模型;修改请走 设置 → 模型。测试连接 用当前密钥请求 GET /v1/models,不消耗 token,且拒绝重定向。

安装与启用

前提:DSH >=0.2.1-rc.2 <0.3.0,Node.js ≥ 20;Codex CLI 在 PATH 中且已 codex login。api 模式需配置 Anthropic;claude-code-cli 需 Claude Code 在 PATH 且已 claude auth login。可选环境变量 CODEX_CLI_PATH、CLAUDE_CODE_CLI_PATH 指定可执行文件路径。

官方安装命令如下:

dsh plugin --profile web add github:hotheat/dsh-claude-codex-mode

然后在插件页启用,列表显示为 讨论执行分工 (claude-codex-mode),无需构建。

api 模式下可在 profile patch(例如 ~/.dsh/profiles/web/cordis.patch.yml)中为 llm-pi-ai 增加 Anthropic provider,密钥只写环境变量名(如 ANTHROPIC_API_KEY),勿把密钥写进 patch;在模型页选择 Claude 并设为默认。已有会话需用 /model 切换。

典型用法

  1. 安装并启用插件,在插件页选择 api 或 claude-code-cli,通过前置检查后 检查并保存。
  2. 在会话里先只读讨论需求、方案或让 Claude Code 做 review;确认方案后用语义明确的执行口令(如「开始吧」)触发 Codex 改仓。
  3. 在侧栏后台任务或 Codex 标签页观察 Codex 输出;需要时用 job_kill 或面板停止任务。

本地克隆仓库后可用同一套检查做诊断(与插件页逻辑一致):

npm install
npm run doctor
npm run doctor -- --mode claude-code-cli --profile web

适用场景与注意

适合希望在 DSH 里固定「Claude(或 DSH 上的 Claude 模型)负责想、Codex 负责改 Git 仓库内代码」、并依赖表单 preflight 减少环境配错的情况。SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,安装前请自行阅读源码与 MIT 许可证;插件以当前 DSH 进程权限运行,会调用本机 codex、claude 等 CLI 并读取你配置的 API 凭据环境变量。

链接

  • 目录页:https://www.skillhub.cn/plugins/hotheat/dsh-claude-codex-mode
  • 仓库:https://github.com/hotheat/dsh-claude-codex-mode

上述 bundle 把讨论与改仓边界写进 guard 与路由,并在插件页用可切换模式与前置检查把 Claude API、Claude Code CLI 与 Codex 三条链路收拢到同一套 DSH 工作流里。

羽毛球分组比赛记分
小程序二维码

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

小夜