前言¶
在 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 推荐流程操作。
直控一条任务
codex_threads(可选)列出会话;codex_use绑定目标(支持完整 ID、前缀 ≥6 位、列表序号、标题片段;create=true可在默认工作区新建);codex_send发送指令;codex_watch循环读过程(cursor续读,waitMs默认 8000,上限 20000);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 工作流的开发者。