前言¶
在 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 切換。
典型用法¶
- 安裝並啓用插件,在插件頁選擇
api或claude-code-cli,通過前置檢查後 檢查並保存。 - 在會話裏先只讀討論需求、方案或讓 Claude Code 做
review;確認方案後用語義明確的執行口令(如「開始吧」)觸發 Codex 改倉。 - 在側欄後臺任務或 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 工作流裏。