DSH Use Codex:在 Harness 裏用一句話把任務交給本機 Codex CLI

前言

在 DeepSeek Harness(DSH)裏談需求、拆步驟、調工具,會話往往很長。若某一步更適合交給本機 OpenAI Codex CLI 在指定倉庫裏獨立跑完——例如一次性改代碼、查故障、掃目錄——常見做法是切終端、手寫 codex exec,再把輸出貼回對話。上下文容易斷,目錄與安全邊界也要自己記。

DSH Use Codex(dsh-use-codex)把這條鏈收成 DSH 裏的一句自然語言委派:宿主按需調用插件工具,在本機啓動非交互式 Codex,校驗工作目錄與白名單後執行,並把 stdout/stderr 摘要帶回當前會話。維護者爲 chaorenzeng,分類屬於工作流;倉庫標註爲 experimental,許可證 MIT。

插件定位

一句話:爲 DSH 註冊一組工具,把獨立任務委派給本機 Codex CLI,適合代碼修改、故障排查、倉庫分析和批量文件處理等一次性任務。

  • 倉庫:github.com/chaorenzeng/dsh-use-codex
  • 社區目錄:skillhub.cn 插件頁(獨立站點,與 DeepSeek / 幻方無從屬關係)
  • 當前版本(package.json):0.4.2
  • 運行:Node.js >= 20;DSH 需支持 Cordis bundle patch 與工具註冊(engines.dsh: >=0.2.1-rc.1 <0.3.0);Codex 需支持 codex exec、-C、-s、--ephemeral
  • 系統:README 寫明 macOS 或 Linux 可用,Windows 尚未驗證

README 中已驗證組合示例:DSH 0.2.1-rc.2、Node.js 22.x、Codex CLI 0.166.0。安裝前可在終端確認 Codex:

codex --version
codex login status

若使用自定義 OpenAI-compatible provider,login status 顯示未登錄不一定表示不可用;以能否實際執行 codex exec 爲準。

核心功能

下面只列資料中明確寫出的能力。

自然語言與四個工具

  • 在會話中說「讓 Codex 做……」或「交給 Codex 執行……」,由 DSH 模型按需調用 codex_run。
  • 四個內置工具:任務執行(codex_run)、狀態檢查(codex_status)、危險模式開關(codex_danger)、即時啓停(codex_switch)。

目錄與安全

  • 工作目錄白名單 allowedRoots:Codex 只能在顯式授權的真實目錄中運行;cwd 須爲絕對路徑,且解析軟鏈後仍須在白名單內。
  • 默認沙箱:默認使用 Codex 的 workspace-write;也可在調用時指定 read-only、workspace-write 或 danger-full-access。
  • 危險模式雙重授權:danger-full-access 要求 profile 中 allowDangerFullAccess: true,且運行時通過 codex_danger 打開;公共配置默認不允許。
  • 其它:任務正文作爲單個 argv 傳遞(無 shell 拼接);超時或取消時終止 Codex 進程組;stdout/stderr 有長度上限;狀態文件只記開關與更新時間,不保存任務、目錄或輸出。

插件自身除 @deepseek-ai/schemastery 外無額外運行時 npm 依賴(相對「零運行時依賴」表述,以 package.json 爲準)。

安裝與啓用

通過插件市場索引

在 DSH「發現 → 插件市場 → 添加索引源」中加入:

https://raw.githubusercontent.com/chaorenzeng/dsh-use-codex/main/market/index.json

搜索 DSH Use Codex 並安裝。索引固定到不可變 Git 提交,安裝來源仍指向上述倉庫。

Profile 依賴與 bundle

若採用本地 file 依賴方式,需在目標 profile 的 package.json 中保留已有配置,並增加依賴與 bundle,例如 ~/.dsh/profiles/web/package.json:

{
  "dependencies": {
    "dsh-use-codex": "file:/absolute/path/to/dsh-use-codex"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "dsh-use-codex"
      ]
    }
  }
}

在對應 profile 目錄執行依賴同步(示例爲 pnpm):

cd ~/.dsh/profiles/web
pnpm install

若 profile 使用其他包管理器,用其等價命令。

本機配置

在目標 profile 的 cordis.patch.yml 中覆蓋插件配置(路徑與憑據勿提交到公開倉庫):

- id: use-codex
  name: dsh-use-codex
  config:
    enabled: true
    bin: /absolute/path/to/codex
    defaultCwd: /absolute/path/to/workspace
    allowedRoots:
      - /absolute/path/to/workspace
    allowDangerFullAccess: false
    timeoutSec: 900
    maxOutputChars: 20000

公開倉庫中的 cordis.patch.yml 以 /tmp 爲佔位且默認 enabled: false;應在個人 profile patch 裏改爲真實值。

配置項 默認值 說明
enabled false 爲 true 時 DSH 啓動才註冊工具
bin codex Codex 可執行路徑,支持 ~
defaultCwd DSH 進程 cwd 未傳 cwd 時使用,須在白名單內
allowedRoots [defaultCwd] 允許工作的真實目錄列表
allowDangerFullAccess false 是否允許選用 danger-full-access
timeoutSec 900 單次超時上限(1–3600 秒)
maxOutputChars 20000 stdout/stderr 各自保留字符上限

環境變量可選:CODEX_BIN、USE_CODEX_STATE、DSH_HOME(狀態默認 ${DSH_HOME:-~/.dsh}/use-codex.json)。

重啓與驗證

重啓 DSH 宿主使 profile 加載插件;必須新建會話,舊會話不會自動獲得新工具。

在新建會話中發送:

讓 Codex 做:只回復 USE_CODEX_OK,不要讀取或修改任何文件。

返回 USE_CODEX_OK 表示插件、Codex CLI 與調用鏈正常。

典型用法

任務寫清目標、範圍、約束和驗收標準,便於 Codex 獨立完成。

自然語言委派:

讓 Codex 做:檢查當前倉庫爲什麼測試失敗,定位原因並修復;不要提交 commit。
交給 Codex 執行:分析 src 目錄中的重複代碼,先給出方案,不要直接修改。

指定目錄與沙箱:

讓 Codex 做:只讀取這個倉庫並總結架構。工作目錄使用 /absolute/path/to/repo,使用 read-only 沙箱。

狀態與開關:

檢查 Codex 委派的狀態。
關閉 Codex 委派。

關閉後 codex_run 會拒絕新任務;重新打開無需重啓 DSH。

結構化參數示例(codex_run):

{
  "task": "運行相關測試並修復失敗原因,不要提交 commit。",
  "cwd": "/absolute/path/to/repository",
  "sandbox": "workspace-write",
  "timeoutSec": 600
}

插件側等價於在非交互場景調用帶 -C、-s、--ephemeral 等的 codex exec;--ephemeral 表示不復用 Codex 會話,在 workspace-write 下仍可能修改允許目錄內的文件。

適用場景與注意

適合:已在本地安裝 Codex CLI、希望在 DSH 對話內完成「委派—執行—回傳」閉環的開發者;一次性倉庫級任務,且願意用白名單收窄可寫範圍。

務必注意:

  1. 插件允許 DSH 啓動本機會話內的 Codex,應把 DSH 視爲具備受控本機執行能力;只裝在可信本機,勿對不可信用戶暴露 DSH。
  2. Codex 子進程繼承 DSH 環境變量,可能含憑據;workspace-write 仍可改工作區,勿把敏感目錄加入 allowedRoots。
  3. 任務正文可能出現在 DSH 對話、宿主日誌或 Codex 日誌中;狀態文件不存任務正文,但對話記錄仍須自行管控。
  4. 除非宿主機另有隔離,不要開啓 allowDangerFullAccess;打開 codex_danger 後,下一次默認沙箱可爲無沙箱的 danger-full-access。
  5. 安裝與啓用前請閱讀倉庫 README、SECURITY.md 與 LICENSE,按自身合規要求審查源碼。

結尾

DSH Use Codex 把「在 Harness 裏說需求」和「在本機 Codex 裏落地執行」接到同一條會話裏,並用白名單、沙箱與輸出限長控制風險邊界。需要細節時查 GitHub 倉庫 與 SkillHub 目錄頁。

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

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

小夜