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 工作流裏。

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

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

小夜