前言¶
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 已完成的工具調用,只記錄請求和最終回答。
前置條件¶
安裝前先確認三件事:
- Node.js
^22.19.0或>=24.0.0 - DeepSeek Harness
0.1.1-rc.2 - 本機已通過 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: {}
permissionMode:inherit(默認)、never、approve-for-me或dangerously-bypass-approvals-and-sandboxdisposeGraceMs:Codex app-server 進程樹終止寬限時間,單位爲毫秒env:顯式傳給 Codex 子進程的環境變量;原生登錄和賬號狀態仍由 Codex home 管理retryPolicy:DSH LLM provider 的失敗重試策略
permissionMode 的四個值行爲不同。inherit 按每個 DSH 會話的即時審批策略決定 Codex 權限:
- DSH 界面爲
ask時,Codex 使用workspace-write和approvalPolicy: on-request。命令沙箱提升、額外文件寫入與權限擴展請求會進入同一個 DSH 審批界面;單次允許只映射爲 Codex 的單次accept,不會靜默升級爲整場會話授權。這樣git commit創建.git/index.lock這類需要提升權限的操作可以由用戶批准。 - DSH 界面爲
never時,Codex 仍可在普通工作區內寫文件,但所有需要提升權限的操作都會被拒絕,也不會彈出審批。
其餘三個值是插件級覆蓋:never 固定拒絕提升權限;approve-for-me 交給 Codex 原生自動審查器;dangerously-bypass-approvals-and-sandbox 關閉沙箱與交互審批,風險最高,只應在已隔離且完全可信的工作區使用。
另外,session-title 和 compaction 輔助請求不繼承普通會話權限,始終強制使用 approvalPolicy: never 和 sandbox: 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/call和tool/result事件;DSH Session 記錄請求和最終回答,不記錄 Codex 私有軌跡。 temperature、maxTokens、stop和 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