dsh-codex-relay:在 DeepSeek Harness 中選用 Codex 模型的提供方插件

前言

DeepSeek Harness(下稱 DSH)的設計理念是「一切皆插件」,模型推理也由 provider 插件承擔。如果你本機已經登錄了 Codex CLI,希望在 DSH 會話裏直接選用 Codex 原生賬號公開的模型和推理強度,而不是在兩套工具之間手動搬運上下文,就需要一個橋接層。下面介紹的 @necokeine/dsh-codex-relay 就是做這件事的插件。

這是什麼

dsh-codex-relay 是 necokeine 維護的 DSH 模型提供方插件,屬於模型推理類別,當前版本 0.1.2,許可證爲 MIT。它通過本機 codex app-server --stdio 的 JSON-RPC 接口讀取當前 Codex 賬號可用的模型,並把每次模型請求交給 Codex 原生 agent loop。

一個關鍵設計:Codex 的工具調用、命令執行和文件修改都在原生 Codex turn 內完成。DSH 不向 Codex 發送自己的工具 schema,也不會重複執行 Codex 已完成的工具調用,只記錄請求和最終回答。

前置條件

安裝前先確認三件事:

  1. Node.js ^22.19.0>=24.0.0
  2. DeepSeek Harness 0.1.1-rc.2
  3. 本機已通過 Codex CLI 登錄

插件使用依賴包提供的 binary,不依賴 PATH 中的其他 codex 版本。

安裝與啓用

從 npm 安裝,先加插件,再確認配置,最後啓動:

dsh plugin --profile default add @necokeine/dsh-codex-relay
dsh --profile default --dump-config
dsh --profile default

第一條命令把插件加入 default profile;第二條 dump 配置,用來確認插件已正確加載;第三條啓動 DSH。

如果要從源碼安裝,先克隆倉庫並安裝依賴,再把本地目錄加入 profile:

git clone https://github.com/necokeine/dsh-codex-relay.git
cd dsh-codex-relay
pnpm install
dsh plugin --profile default add "$PWD"
dsh --profile default --dump-config
dsh --profile default

源碼安裝時本地目錄使用 pnpm link:,不會代替源碼目錄安裝依賴,prepare 腳本會同時生成 lib/。注意從 Git 倉庫安裝源碼時,pnpm 會要求顯式允許該包的 prepare 構建腳本;發佈到 npm 或使用 pnpm pack 生成的 tarball 攜帶預構建的 lib/,無需安裝時構建。

插件的 package.json 通過 dsh.bundle 聲明把 cordis.patch.yml 加入 profile。該層使用穩定行 ID llm-codex:若當前 DSH 版本內置了同名原型行,插件層會替換它;否則直接插入。

選擇模型

經過上面的步驟啓動 Web 界面後,在模型設置頁選擇 Codex,再選擇 Codex 原生賬號公開的模型和推理強度。會話中的模型選擇器也會出現 Codex 選項。

配置

插件設置保存在 dsh-codex-relay namespace,默認值如下:

dsh-codex-relay:
  permissionMode: inherit
  disposeGraceMs: 3000
  env: {}
  • permissionModeinherit(默認)、neverapprove-for-medangerously-bypass-approvals-and-sandbox
  • disposeGraceMs:Codex app-server 進程樹終止寬限時間,單位爲毫秒
  • env:顯式傳給 Codex 子進程的環境變量;原生登錄和賬號狀態仍由 Codex home 管理
  • retryPolicy:DSH LLM provider 的失敗重試策略

permissionMode 的四個值行爲不同。inherit 按每個 DSH 會話的即時審批策略決定 Codex 權限:

  • DSH 界面爲 ask 時,Codex 使用 workspace-writeapprovalPolicy: on-request。命令沙箱提升、額外文件寫入與權限擴展請求會進入同一個 DSH 審批界面;單次允許只映射爲 Codex 的單次 accept,不會靜默升級爲整場會話授權。這樣 git commit 創建 .git/index.lock 這類需要提升權限的操作可以由用戶批准。
  • DSH 界面爲 never 時,Codex 仍可在普通工作區內寫文件,但所有需要提升權限的操作都會被拒絕,也不會彈出審批。

其餘三個值是插件級覆蓋:never 固定拒絕提升權限;approve-for-me 交給 Codex 原生自動審查器;dangerously-bypass-approvals-and-sandbox 關閉沙箱與交互審批,風險最高,只應在已隔離且完全可信的工作區使用。

另外,session-titlecompaction 輔助請求不繼承普通會話權限,始終強制使用 approvalPolicy: neversandbox: read-only,並要求 Codex 不使用工具或修改外部狀態。

運行機制

每次目錄讀取或模型調用都會啓動一個臨時 app-server 進程。模型調用在當前 DSH Session 的工作目錄創建 ephemeral Codex thread,注入持久的 user/assistant 歷史,隨後執行一個原生 Codex turn。插件等待 terminal notification,只把 final answer 轉成一個 DSH text block;完成、失敗或取消後會終止並等待整個子進程樹退出。

插件使用固定的 bridge instruction:

You are running as the selected Codex model provider inside DeepSeek Harness. Use only your native Codex tools and agent loop. Do not emit DeepSeek Harness tool calls; the host records your final answer.

已知限制

使用前需要了解四點:

  • 當前只向 DSH 聲明文本輸入,圖片會在調用前投影爲穩定的省略提示。
  • 插件等待 Codex terminal notification 後一次性輸出最終文本,不投影增量文本或 token usage。
  • Codex 原生工具軌跡不會轉換爲 DSH tool/calltool/result 事件;DSH Session 記錄請求和最終回答,不記錄 Codex 私有軌跡。
  • temperaturemaxTokensstop 和 DSH 工具 schema 沒有映射到該集成。

如果需要 DSH 側的完整工具軌跡或流式輸出,這個插件目前不滿足。

適用場景與注意

這個插件適合已經登錄 Codex CLI、想在 DSH 中直接選用 Codex 模型和推理強度、並且能接受「工具調用留在 Codex 側、宿主只記錄最終回答」這種記錄方式的用戶。

需要注意:插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。社區目錄(skillhub.cn)是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,安裝任何第三方插件都建議先審閱代碼。另外,dangerously-bypass-approvals-and-sandbox 會關閉沙箱與交互審批,只應在已隔離且完全可信的工作區使用。

小結

dsh-codex-relay 把 Codex 原生賬號的模型能力以標準 provider 插件的形式接入 DSH:安裝後即可在模型設置頁選用,權限模型可以通過 permissionMode 精細控制,工具調用完全留在 Codex 原生 turn 內。代價是 DSH 側看不到工具軌跡和增量輸出,適合以最終回答爲主的用法。

  • 目錄頁:https://www.skillhub.cn/plugins/necokeine/dsh-codex-relay
  • GitHub:https://github.com/necokeine/dsh-codex-relay
羽毛球分组比赛记分
小程序二维码

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

小夜