dsh-plugin-codex-link:在 DSH 裏駕駛 Codex 會話

前言

在 DSH 裏編排智能體時,常見做法是隻在本機 DSH 會話裏調工具、讀日誌。若你同時在用 OpenAI Codex CLI 或桌面端,會話、回合和額度都在 Codex 側,DSH 默認拿不到「切換線程、發指令、看工具調用過程、派子任務只取結果」這一整條鏈路。手工在 Codex 窗口裏複製粘貼,既慢,也難和 DSH 的自動化對齊。

下面介紹社區插件 dsh-plugin-codex-link(GitHub 倉庫 CN-Mg/codex-link)。它通過 Codex 自帶的 codex app-server(JSON-RPC over stdio)和 codex exec --json,把會話控制暴露爲 DSH 工具;Codex 側不需要再裝任何插件。維護者 CN-Mg(npm 包作者字段爲 Bolin),npm 包名 dsh-plugin-codex-link,當前資料中版本 0.4.0,許可證 MIT。社區目錄 skillhub.cn 將其歸類爲「趣味換裝」,與功能無關時以 README 能力描述爲準。

這是什麼

一句話:DSH 與 Codex 之間的會話控制橋——切換 Codex 會話、發送指令、實時讀取過程、派遣子智能體,並在 DSH 設置頁用左側面板切換操作方式。

插件只依賴宿主提供的 ctx.tools / webServer,自身零 npm 依賴(僅用 Node 內置模塊)。Node 引擎要求 >= 22。DSH 兼容性在 package 中標註對 0.2.1-rc.3 爲 compatible。

三種操作方式

方式保存在 <DSH_HOME>/codex-link/ui.json,可在 設置 → Codex 聯動 隨時切換;codex_task 的 channel 可臨時覆蓋。

方式 說明 主要工具
直控會話 DSH 直接驅動已綁定的 Codex 會話,實時讀過程,可追加/中止 codex_send / codex_watch / codex_result
子智能體 每次任務起獨立 Codex 進程,只回最終結果,不佔用當前在看會話 codex_task(channel=isolated)
混合(默認) 有綁定會話走直控;無綁定或需隔離時走子智能體 兩者皆可

README 中的維護者默認示例:工作區 C:\Users\Bolin\Desktop\DSH\Wechat,默認會話名「微信工作區(DSH)」(不存在時自動創建)。你本地會以配置、設置頁或「當前 DSH 會話目錄 → 用戶主目錄」的自動規則爲準。

核心能力與工具一覽

需求 工具
查看/切換指定 Codex 會話 codex_threads / codex_use
發送指令、運行中追加或中止 codex_send(mode=auto/steer/interrupt)
派遣子智能體,只取最終結果 codex_task(channel=auto/isolated/session)
讀取運行過程 codex_watch(游標續讀)
取最終回答、耗時、token 用量 codex_result
查詢 5 小時 / 7 天額度 codex_usage
健康檢查 codex_status
把 Codex 窗口切到項目 codex_open_project

排查問題可先調用 codex_status,查看 app-server 連接、Codex 路徑與版本、默認工作區/會話、當前 DSH 綁定。

codex_use 綁定成功後寫入 <DSH_HOME>/codex-link/bindings.json,DSH 重啓後仍生效。codex_send 在其它客戶端佔用會話時會返回 BUSY_THREAD;配置 queueFallback: true(默認)時,可改用 Codex 官方 codex queue 投遞到桌面端正在寫的會話,過程改從 rollout JSONL 增量讀取。

安裝與啓用

裝完無需配置即可使用:工作區留空時優先「當前 DSH 會話目錄」,否則用戶主目錄;也可在 設置 → Codex 聯動 → 工作區 固定目錄(寫入 ui.json,優先級高於 cordis.patch.yml 裏的 workspaceRoot)。

Codex 側:已安裝並登錄 Codex CLI/桌面端即可,無需插件。

從 npm 安裝(CLI / Web profile)

# DSH CLI / Web profile
dsh plugin --profile web add dsh-plugin-codex-link

# 或從 GitHub 指定 tag
dsh plugin --profile web add "github:<owner>/dsh-plugin-codex-link#v0.3.0"

DSH 桌面端

Plugins 頁 → 安裝 → 輸入包名 dsh-plugin-codex-link → 重啓 DSH。

桌面 profile 由桌面端獨佔管理,不能用 dsh plugin --profile desktop add。本地開發時可在 Plugins → 安裝 → 填倉庫絕對路徑(或 file: spec)→ 重啓。

顯式配置可在 profile 的 cordis.patch.yml 覆蓋(注意 config 整塊替換,需寫全要保留的鍵):

- id: dsh-plugin-codex-link
  name: dsh-plugin-codex-link
  config:
    workspaceRoot: 'D:\your\project'   # 留空 = 自動
    defaultThreadName: '你的 Codex 會話名'
    codexPath: null

常用配置項包括:mode(direct/subagent/hybrid,默認 hybrid)、sandbox(默認 workspace-write)、approvalPolicy、networkAccess、approvals(默認拒絕審批並記錄)、maxParallelTasks(默認 2)等,完整表格見倉庫 README。

典型用法

經過上面的安裝,可按 README 推薦流程操作。

直控一條任務

  1. codex_threads(可選)列出會話;
  2. codex_use 綁定目標(支持完整 ID、前綴 ≥6 位、列表序號、標題片段;create=true 可在默認工作區新建);
  3. codex_send 發送指令;
  4. codex_watch 循環讀過程(cursor 續讀,waitMs 默認 8000,上限 20000);
  5. codex_result 取最終回答與用量;需中止用 codex_interrupt(queue 回退通道下不可用,請在 Codex 裏停止)。

子智能體一次拿結果

調用 codex_task,參數 task 必填;channel=isolated 時走 codex exec --json 獨立進程。返回的線程 id 可用 codex_use <threadId> 接管後再走直控看過程。

方式切換

打開 設置 → Codex 聯動,在三種操作方式卡片中點選;或對單次任務用 codex_task 的 channel=auto/isolated/session。

微信渠道建議:一輪任務最多 3 條進度 + 1 條最終結果,避免佔滿消息配額(README 說明)。

適用場景與注意

適合誰:已在用 DSH 編排對話或自動化,同時依賴 Codex CLI/桌面端做編碼回合;需要在 DSH 裏切換線程、旁觀工具調用、或派隔離子任務而不污染當前 Codex 窗口會話。

權限與安全:插件以當前 DSH 進程權限運行,安裝前請自行審閱 源碼 與 MIT 許可證。app-server 僅 stdio,不監聽端口。新建會話默認沙箱 workspace-write、審批策略偏保守;將 approvals 設爲 allow 會自動批准 Codex 審批請求,風險自負。

已知限制(節選):插件更新後需重啓 DSH 才能加載新 host/client;thread/list 不返回空會話;同一會話被桌面端與 DSH 同時直寫時會 BUSY_THREAD;線程級窗口聚焦無官方 API,v1 主要支持項目級 codex_open_project。

社區插件目錄與 DeepSeek / 幻方無官方從屬關係;星標等元數據以目錄頁爲準(資料中 GitHub 1 stars)。

結尾

dsh-plugin-codex-link 把 Codex 的 app-server 與 exec 能力封裝成 DSH 工具集,並用設置頁統一工作區、默認會話與三種操作方式,適合要把 Codex 回合納入 DSH 工作流的開發者。

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

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

小夜