前言¶
在 DeepSeek Harness(DSH)裏,讓對話模型既拆任務又直接改倉庫,常見問題是:改動範圍容易漂、完成與否往往只靠模型自述。另一條路是把「寫代碼」交給專用 CLI,對話側只做規劃和核驗——但若缺少驗收標準、結構化彙報和任務臺賬,交接仍難復現。
下面介紹的 dsh-codex-conductor(維護者 xiaobaifly7)走後者:DSH 中的 agent 負責規劃與只讀覈驗;具體編碼由 WSL 內的 Codex CLI 在後臺執行。插件要求帶驗收標準派單,按條彙報結果,並通過工作區護欄把規劃端的寫操作擋在門外。當前版本 0.9.43(MIT 許可),歸類爲 工作流 插件;GitHub 星標爲 0。插件在 SkillHub 目錄 可檢索——該站點是社區插件目錄,與 DeepSeek / 幻方無官方從屬關係。
這是什麼¶
dsh-codex-conductor 是面向 Windows + WSL2 的 DSH 插件:Harness 通過 wsl.exe 調用隨包 Python runner(runner/codex_runner.py),在 WSL 裏啓動 Codex。規劃端用 codex_* 工具派活、查狀態、續接阻塞、獨立覈驗;Codex 側按 report.v2.schema.json 逐條對照驗收標準回報。DSH 版本要求 >=0.2.1-rc.2 <0.3.0;WSL 內需已安裝並登錄 Codex CLI,以及 Python 3.11+(runner 用 tomllib 讀取 Codex 配置)。
角色分工與核心能力¶
規劃端與執行端¶
README 的分工可以概括爲:
- 爲每個任務寫好驗收標準(
acceptance,至少 1 條,每條至少 4 個字符)。 - 用
codex_run派活,儘量給出scope(具體文件或目錄,不支持通配符)。 - 不把 Codex 的自報當作完成證據,用只讀檢查逐條覈驗。
- 未通過時先用
codex_review記錄證據,再用codex_continue在原權限下修正。
派活與臺賬工具¶
插件默認註冊十個 Codex 相關工具(配置 gemini 後額外註冊 gemini_write)。與日常流程關係最緊的有:
| 工具 | 作用概要 |
|---|---|
codex_run |
把任務交給 WSL Codex;登記後臺任務後返回任務號。必填 task、acceptance、write(改文件傳 true,只讀調查傳 false) |
codex_status / codex_output |
查詢進度;分頁讀取報告、結果 JSON、上下文或日誌 |
codex_continue |
回答阻塞或提交環境恢復依據,續接原線程,不重複派活 |
codex_review |
規劃端逐條獨立覈驗,結論爲 verified / needs_changes / accepted_deviations |
codex_jobs / codex_summary |
分頁查歷史任務;按線程彙總多輪結果與未閉環事項 |
codex_cancel / codex_watch |
取消 WSL 內 Codex 進程樹;安靜觀察後臺任務首次重要變化 |
若 agent preset 提供 DSH 後臺任務(jobs)服務,codex_run 啓動後會在任務表出現 Codex <job_id> 一行;結束時有摘要通知,完整內容可用 codex_output 或 job_output 讀取。任務在 WSL 後臺運行,Harness 側斷開等待不影響執行。
工作區護欄(可選)¶
默認不啓用護欄,只提供工具。在 cordis.patch.yml 裏配置 workspaces 後,對受保護工作區會拒絕 DSH agent 直接寫文件、跑任意代碼等工具調用,僅放行只讀覈驗類 shell 命令;結構化改寫仍應通過 codex_run 交給 Codex。README 還說明:若 agent 聲稱「已派 Codex」但本輪未調用 codex_* 且無後臺監控確認,插件會提醒補調或更正說法。
報告與覈驗¶
Codex 按驗收標準逐條彙報(met / not_met / blocked 等)。阻塞項在 v2 報告中有 blockers 字段(id / kind / message / question / resolution)。規劃端用 codex_review 寫 reviews.json,不改寫 Codex 原始 result.json。結果摘要示例形如:completed · 12 met / 1 blocked · 3 files · 148 s。
Gemini 文檔寫作(0.9.43,可選)¶
配置 gemini 後註冊 gemini_write:適合教程、文檔正文,源碼改動仍用 codex_run。需要本機已安裝並登錄 Antigravity CLI(agy.exe);未配置則不註冊該工具。
安裝與啓用¶
安裝前請自行閱讀 GitHub 倉庫 源碼與 MIT 許可證。插件隨 DSH 進程加載,以當前 DSH 權限運行;啓用 allowHostAccess 與 host_access=true 時 Codex 以 danger-full-access 運行,需審慎評估。
在 DSH「插件 → 添加插件」中填寫:
github:xiaobaifly7/dsh-codex-conductor
或用命令行(將 <profile> 換成實際 profile;桌面版建議用應用內插件頁安裝):
dsh plugin --profile <profile> add github:xiaobaifly7/dsh-codex-conductor
環境前提(摘自 README「要求」):
- Windows + WSL2,DSH 運行在 Windows 上。
- WSL 內 Codex CLI 已登錄,Python 3.11+ 可用。
- DSH
>=0.2.1-rc.2 <0.3.0。
維護者在 README 中記載的驗證環境包括 Windows 11、WSL Ubuntu 24.04、Codex CLI 0.154、DSH 桌面版 0.2.1-rc.2。
配置要點¶
在插件條目中按 id codex-conductor 覆蓋 config。最小示例如下(護欄 + 默認推理檔位):
- id: codex-conductor
config:
workspaces:
- 'D:\work\my-project'
- path: 'D:\work\monorepo'
cwd: 'D:\work\monorepo\app'
effort: high
readOnlyEffort: medium
serviceTier: fast
常用項包括:distro(WSL 發行版)、codexBin / codexHome、timeoutSeconds(默認 runner 每次嘗試 3600 秒)、idleTimeoutSeconds(默認 600)、retries(默認 2)、allowHostAccess(默認 false)、runnerHome、maxStorageMb、plannerPromptFile(規劃要求 Markdown,注入 agent 系統提示)、runtimeProfileFile(熱重載時指向實際 cordis.patch.yml 的 Windows 完整路徑)。
啓用 Gemini 時可在同一 id 下增加:
gemini:
command: 'C:\Users\apple\AppData\Local\agy\bin\agy.exe'
proxy: 'http://127.0.0.1:7890'
model: gemini-4-argon
effort: medium
timeoutSeconds: 600
command 必須是 agy 的絕對 Windows 路徑;素材與提示會發往 Google,需自行評估合規與網絡(無代理時須在配置中顯式填寫 proxy)。
典型用法¶
派單與續接¶
codex_run 調用時需至少包含自然語言 task、字符串數組 acceptance、布爾 write。可選 cwd、scope、writable_roots(沙箱內額外可寫目錄)、resume、effort、wait_seconds 等。只讀任務(write=false)以 ephemeral 運行,thread_id 通常爲 null;寫任務會對任務目錄加寫鎖,併發寫同一目錄時後續任務可能進入 lock_wait 排隊。
Codex 阻塞並拋出問題時,應先讓用戶在會話中作答,再調用續接。README 給出的形式如下:
codex_continue({"job_id":"J1","answers":[{"id":"choice","answer":"採用已確認的方案"}]})
環境恢復時在 resolution 中寫實際證據。續接不擴大 scope、不擅自增加寫權限。
覈驗與讀結果¶
作業結束後用 codex_output 按 job_id 分頁讀取(artifact 可選 report、result、context、review、stderr、events)。規劃端對照驗收標準做只讀檢查,再調用 codex_review 寫入獨立結論。需要同步等待時,對同一 job_id 調用 codex_status 並傳入正數 wait_seconds。
文檔章節(可選)¶
配置 gemini 後,可按 README 示例一章一章生成文檔:
gemini_write({"prompt":"根據素材寫第一章入門說明,事實不得超出素材。","sources":["notes.md"],"output":"chapter-01.md","cwd":"D:/work/course","max_chars":2500})
插件會讀迴文件、統計字數,並列出範圍外改動;同目錄有 Codex 寫任務在跑時會拒絕新的 Gemini 或可寫派單。
適用場景與注意¶
適合誰: 已在 Windows 上使用 DSH,並希望在 WSL 裏用 Codex CLI 做倉庫級改動;希望 Harness 側固定爲「拆任務 + 驗收」,且能接受驗收驅動、結構化 JSON 報告的工作流。
不太適合: 純 Linux 原生環境(package.json 的 os 爲 win32);沒有 WSL / Codex CLI 的團隊;期望規劃端在受保護工作區內直接改文件而不走 Codex 的場景(需關閉或縮小 workspaces 護欄範圍)。
運行中值得留意的行爲:
- WSL 橋接超時或
bridge_error時,應先codex_status再決定是否重派,避免重複作業。 - WSL 重啓後 runner 可能將舊任務標爲
worker_died;可寫任務會覈對驗收與已落盤產物後再決定是否補做。 - 默認不向 Codex 加載
config.toml中的 MCP 與 hooks(除非use_user_config=true)。 - 0.9.42 起,派單前無法連接 WSL 時會說明原因並保留原有寫入範圍與續接檢查。
結尾¶
dsh-codex-conductor 把 DSH 生態裏「一切皆插件」的思路落到一條清晰鏈路上:規劃與驗收留在 Harness,編碼與逐條彙報交給 WSL Codex,並可選用護欄約束規劃端權限。若你要在 Windows 上試裝,可從目錄頁與倉庫覈對版本與配置後再啓用。
- 目錄頁:https://www.skillhub.cn/plugins/xiaobaifly7/dsh-codex-conductor
- GitHub:https://github.com/xiaobaifly7/dsh-codex-conductor