dsh-codex-control
Verified@sereinis/dsh-codex-control · v0.1.0 · MIT
让 DSH agent 直接遥控本机 Codex:列线程、续任意对话、在指定工作区跑任务(常驻 app-server,非一次性子 agent)。
Install
dsh plugin add @sereinis/dsh-codex-control Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
@sereinis/dsh-codex-control
让 DSH agent 直接遥控本机 Codex:列出所有对话线程、续任意已有对话、在指定工作区开新对话并拿回结果。常驻
codex app-server,不是一次性子 agent。
它是什么 / 不是什么
| 是 | 一个 DSH 插件(cordis plugin,npm 包 + dsh.bundle.patch) |
| 是 | agent 自己身上的三个工具:codex_threads / codex_send / codex_interrupt |
| 不是 | MCP server(不经过 MCP 协议,直连 Codex 的 app-server JSON-RPC) |
| 不是 | subagent_codex 那种子 agent(那个每次开一次性 ephemeral 线程、不回 threadId、不能续) |
DSH 自带的 subagent_codex 是"另起一个 agent 去干活";本插件是"让当前 agent 当遥控器,对着你机器上已有的 Codex 对话说话"。
安装
dsh plugin --profile <profile> add @sereinis/dsh-codex-control
包本身不带全局挂载行,工具只在你显式引用的 preset 里出现。在目标 preset 的 plugins 里加一行:
- id: codex-control
name: '@sereinis/dsh-codex-control'
然后重启该 profile。这样群聊 / 其它会话的工具面不会被污染。
工具
| 工具 | 作用 | 关键参数 |
|---|---|---|
codex_threads |
列出 Codex 本机线程(跨工作区) | cwd? search? limit? |
codex_send |
发一条任务并等这一轮跑完;给 threadId 就续对话,不给就新建 |
text(必填)cwd? threadId? effort? |
codex_interrupt |
打断某条线程正在跑的那一轮 | threadId |
codex_send 返回 threadId 和 Codex 的最终回答;过程中的推理、工具调用、stderr、diff 都不会回到你的上下文(结果另外限长 8000 字,超出截断)。
配置
在 preset 行里:
- id: codex-control
name: '@sereinis/dsh-codex-control'
config:
codexExecutable: 'C:\path\to\codex.exe' # 省略则自动找
allowedRoots: # 为空 = 不限制
- 'D:\projects'
defaultCwd: 'D:\projects\demo' # 省略则用当前会话工作目录
model: 'gpt-5-codex' # 省略用 Codex 原生配置
turnTimeoutMs: 600000
codexExecutable 的自动发现顺序:codex 环境变量 → Codex 桌面版 %LOCALAPPDATA%\OpenAI\Codex\bin\<最新 hash>\codex.exe → PATH 上的 codex。
典型用法
用户:把昨天那个项目接着做,先把 TODO 清一下
agent:→ codex_threads { cwd: 'D:\projects\web' }
← 01a1… | D:\projects\web | 重构登录流程 | 2026-10-21 18:30
→ codex_send { cwd: 'D:\projects\web', threadId: '01a1…', text: '把未完成的 TODO 清掉,跑一遍测试' }
← threadId: 01a1… / 已完成:改了 3 个文件,测试通过
安全与权限
- Codex 子进程以
approvalPolicy: never+danger-full-access启动,能读写它工作区里的任何文件、跑任何命令。 - 工具的作用域是"挂载它的 preset":只给可信的 agent 挂,别挂到群聊/多人会话上。
- 强烈建议配置
allowedRoots,把 cwd 限制在项目目录内。 - 本插件不创建账户、不登录、不改 Codex 配置;认证沿用你本机的
~/.codex。
已知限制
- 只在 Windows 上验证过(macOS/Linux 依赖
codexExecutable或 PATH 上的codex)。 - 需要本机已安装并登录 Codex(桌面版或 CLI 均可)。
ephemeral线程不会出现在codex_threads里。- 同一线程被 Codex 桌面端正在使用时,续对话可能冲突,建议先中断或等它空闲。
给插件作者的一个坑
第三方插件里 import { defineTool } from '@deepseek-ai/dsh-tools',必须在 package.json 的 peerDependencies 里声明它,否则 DSH 的 loader 会直接报 failed to import(宿主不会替你解析未声明的 @deepseek-ai/*)。本包已声明,可作参考。
卸载
dsh plugin --profile <profile> remove @sereinis/dsh-codex-control
并从 preset 里删掉那一行。
License
MIT