前言¶
在 DSH 桌面端做智能体开发时,模型提供方、工具循环、审批和会话界面通常都由 DSH 统一承担。若希望推理走本机已登录的 Codex App Server,又不愿换一套客户端或丢掉 DSH 的工具与审批链路,常见做法是单独接一层 LLM 提供方插件。社区里曾有 dsh-llm-codex-app-server 等实现,但在 DSH 0.2.0-rc.2 的桌面 profile 上,依赖 @deepseek-ai/* 的 Host 半插件往往无法解析这些包,加载会失败。
下面介绍维护者 alfredhuang211 发布的客户端类插件 dsh-codex-session:新建会话时可在「DSH 默认」与「Codex」之间选择;Codex 会话仍使用 DSH 的会话日志、工具循环、审批和完整桌面 UI,只有模型请求由本机 Codex App Server 提供。
这是什么¶
dsh-codex-session 是面向 DSH 桌面版(desktop profile)的插件。Codex 侧请求调用工具时,插件将其转成 DSH 的 tool-call,由 DSH 执行、审批并写入日志,再把结果交回同一 Codex turn。界面不新开窗口、不修改 DSH 包、不遮蔽内置插槽。
- 维护者:alfredhuang211
- 分类:客户端
- 仓库:https://github.com/alfredhuang211/dsh-codex-session
- 社区目录页:https://www.skillhub.cn/plugins/alfredhuang211/dsh-codex-session
- 许可证:MIT(见仓库
package.json) - 当前发布版本:0.1.0
插件仅使用 Node 内置模块,安装时无需再拉取 npm 依赖;实现上通过 Cordis 注入的服务访问 DSH,不 import DSH 包。
核心功能¶
会话类型与 Agent 预设¶
安装并重启 DSH 桌面 App 后,新建会话时输入框上方会出现「会话类型」选择器;Agent 预设里会多出 Codex。选择 Codex 后,该会话的模型路由钉在 codex-local 提供方上,由插件 spawn 本机 codex app-server,以 newline-delimited JSON-RPC 与 Codex 通信。
DSH 工具桥接¶
Codex 看到的是 DSH 侧的工具命名空间(如 deepseek_harness)。原生 Codex 能力中一批会绕过 DSH 直接动本机的项,插件默认通过 disabledFeatures 关闭(含 shell_tool、unified_exec 等),避免命令执行不出现在会话记录、不受沙箱与审批约束。需要恢复 Codex 原样时,可在配置里将 disabledFeatures 设为 [](需自行承担风险)。
模型发现¶
模型列表默认不向仓库写死,而是向本机 Codex 查询 model/list,结果缓存 5 分钟(modelCacheTtlMs 默认 300000)。也可在 cordis.patch.yml 中固定 model 或完整 models 列表。
界面扩展(Client 半)¶
conversation.input.dock:空白会话上的会话类型选择器;已开始的 Codex 会话显示后端标识。settings.plugins.tab:设置页「Codex 会话」相关入口。
安装与启用¶
前提:
- 已安装 DSH 桌面版,版本 ≥ 0.2.0-rc.2(
engines.dsh要求)。 codexCLI 在PATH上或~/.codex已完成登录;部分文档还要求codex login status通过,且~/.codex/config.toml中[model_providers.custom](或你使用的段)指向可用后端。- Node 版本满足
^22.19.0 || >=24.0.0。
推荐锁定插件版本安装:
dsh plugin --profile desktop add git+https://github.com/alfredhuang211/dsh-codex-session.git#v0.1.0
跟随 main 最新提交:
dsh plugin --profile desktop add git+https://github.com/alfredhuang211/dsh-codex-session.git
若已发布到 npm,也可:
dsh plugin --profile desktop add dsh-codex-session
装完后重启 DSH 桌面 App(Host 半的 bundle patch 在启动时读取)。
可选自检,列出本机 Codex 实际提供的模型:
cd ~/.dsh/profiles/desktop/node_modules/dsh-codex-session && npm run models-check
卸载:
dsh plugin --profile desktop remove dsh-codex-session
典型用法¶
- 按上一节安装并重启 App。
- 新建会话,在输入框上方选择会话类型(DSH 默认或 Codex),或在 Agent 预设中选择 Codex。
- 使用 DSH 原生模型选择器切换发现到的模型(列表来自本机 Codex,除非你在配置里写死了
models)。 - 正常对话;工具调用走 DSH 审批与日志,模型流由本机 Codex App Server 返回。
切换已有会话到 Codex 时走 agentPresets.select;若会话尚未就绪,界面会显示宿主返回的原因。「会话类型」选择器仅在空白会话上出现。
配置要点¶
在 cordis.patch.yml 的 codex-session 段可调整行为,常见项包括:
| 键 | 默认值 | 说明 |
|---|---|---|
preset |
codex |
触发钉模型的 Agent 预设 id |
provider |
codex-local |
对外暴露的提供方路由 |
model |
未设置 | 留空用本机 Codex 默认模型 |
modelProvider |
custom |
传给 thread/start 的 Codex 内部提供方 id,需与 ~/.codex/config.toml 的 [model_providers.*] 对应;官方登录时可改为 openai |
command |
codex |
Codex CLI 命令 |
timeoutMs |
300000 |
单 turn 与流式 JSON-RPC 请求上限 |
disabledFeatures |
见 README 列表 | 设为 [] 即恢复 Codex 原生能力 |
升级 Codex 或更换代理后,一般重启 App 即可让模型列表跟随变化;也可缩短 modelCacheTtlMs。
适用场景与注意¶
适合:已在本机登录 Codex,希望在 DSH 桌面里用同一套 UI、工具循环和审批跑 Codex 模型,并与「DSH 默认」会话并存。
限制与注意(来自仓库说明):
- 图片输入暂不支持,含图片的块会被替换为占位文本。
- Codex 预设的子插件列表复制自内置
standard,DSH 大版本升级后可能需要重新同步。 - Codex 侧沙箱为
read-only、审批never;改工作区须经由 DSH 工具。 - 会话级线程缓存在内存中,进程重启或空闲回收会冷启动新线程并重建历史。
安全:插件以当前 DSH 桌面进程权限运行,会启动本机 codex 子进程并与本机 Codex 配置交互。安装前请阅读仓库源码与 MIT 许可证,确认 disabledFeatures 与 modelProvider 符合你的环境策略。社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,属社区「一切皆插件」生态中的独立条目。
结尾¶
dsh-codex-session 把「新建会话选 DSH 默认还是 Codex」做成桌面端一等公民:模型走本机 Codex App Server,执行与可见性仍归 DSH。需要细节、验证命令与发布说明时,以 GitHub README 为准。