dsh-coding-agents:在 DSH 里统一管理本机 Codex 与 Claude Code

前言

本地装了 Codex 和 Claude Code 的话,通常要在两套界面之间来回切换:一边翻会话历史、一边改配置,两边跑的任务状态也各自为政。DSH 的思路是「一切皆插件」,能不能把这两套工具纳入同一个入口,并在 DSH 的 Agent 里用同一套工具调用它们?

wilshi/dsh-coding-agents 就是做这件事的客户端插件:它不重写 agent 循环,而是通过 Codex / Claude Code 公开且稳定的本地接口,把会话、配置、运行状态集中到一个设置页,并额外暴露 6 个 coding_agent_* 工具给 DSH Agent。下面介绍它的功能边界、安装方式和典型用法,事实均来自仓库 README(中英文)与 package.json。

这是什么

一句话定位:DSH 的控制中心(control center),用来驱动本机已安装的 Codex 和 Claude Code。

  • 维护者:WilShi
  • 许可证:MIT
  • 版本:0.2.3(package.json)
  • 分类:客户端插件
  • 依赖:DSH 0.2.1-rc.5(Cordis 4.0.5),Node.js ^22.19.0 || ^24.0.0

插件只调用厂商公开的本地接口,不解析也不改写私有数据库。所有写操作要么走厂商官方配置协议,要么采用「先备份再原子替换」。它只驱动当前用户已安装并登录的 CLI,不会替用户安装或升级厂商工具。

核心功能

插件按引擎独立解析可用的 CLI,顺序为 config.codexCommand / config.claudeCommand → 系统 PATH(codex / claude)→ 插件自带包 → 都没有时给出可操作提示。状态页会报告来源(config / system / bundled)以及从 <cli> --version 读到的版本。

主要能力分四类:

  1. 会话检索:跨 Codex 与 Claude Code 搜索本机历史会话,分页读取超长记录。
  2. 运行控制:新建、继续或分叉原生会话,实时展示文本、工具调用与运行状态,支持取消运行。
  3. 会话管理:重命名、打标签、归档与取消归档、回滚、删除。某个引擎不支持的操作会被明确拒绝,而不是静默失败。
  4. 配置查看与有限写入:查看配置项的当前值、生效值与来源。HTTP 只允许写 Codex 的 model / model_reasoning_effort 和 Claude Code 的 permissions.defaultMode,其余键需要走 DSH 界面或手工编辑。

除了设置页,同样的能力以 6 个 coding_agent_* 工具的形式提供给 DSH Agent。

安装与启用

包里附带 cordis.patch.yml 与 dsh.bundle.patch,可以按 bundle 安装:

dsh plugin --profile <profile> add dsh-coding-agents

也可以在 profile 的 cordis.patch.yml 中插入一条 loader entry:

- insert:
    - id: dsh-coding-agents
      name: 'dsh-coding-agents'

重启该 profile 后,打开「设置 → 编程助手」即可看到入口。

厂商 CLI 是 optional peer,插件不绑定版本。推荐做法是自行全局安装:

npm i -g @openai/codex

也可以装进当前 profile:

dsh plugin --profile <name> add @openai/codex

要以某个特定构建为准时,在 profile 的 cordis.patch.yml 里显式指定路径:

- id: dsh-coding-agents
  config:
    codexCommand: /opt/homebrew/bin/codex
    claudeCommand: /Users/me/.local/bin/claude

没装 Claude Agent SDK 时插件照常加载,Codex 引擎继续工作,Claude Code 一行显示 unavailable 并附带 SDK 安装提示。

典型用法

设置页主要处理检索与管理。也可以用自然语言让 DSH Agent 代劳,README 给的示例包括:

  • 「列出 Codex 和 Claude Code 最近的会话。」
  • 「查一下包含登录故障的历史记录。」
  • 「继续这个 Codex 会话并跑测试。」
  • 「用 Claude Code 在当前工作区新建任务,修复构建错误。」
  • 「读取 Codex 当前配置。」

底层对应 coding_agent_* 系列工具,能力与设置页一致。

安全边界与适用场景

插件以当前 DSH 进程权限运行,因此它的防护集中在两处。

HTTP 层面,/coding-agents-api 拒绝 TCP 对端不是本机的请求、Origin 不匹配的浏览器请求、Sec-Fetch-Site: cross-site 的请求、非 application/json 的 POST 以及 CORS 预检 OPTIONS。接口权限只开放 read-only 与 workspace-write;full-access(Claude Code 的 bypassPermissions、Codex 的 danger-full-access)只能在 DSH 界面里由用户自己确认触发,模型工具 coding_agent_run 会直接拒绝。

工作目录层面,cwd 只有解析后落在 DSH 已注册的 workspace 内才被接受,宿主没有 workspace 注册表时带 cwd 的请求一律拒绝。子进程由宿主 subprocess 服务托管,环境变量经过清洗。

这决定了适用边界:适合本机已装好 Codex / Claude Code、希望在 DSH 里统一调度的个人开发环境。插件只驱动厂商 CLI,不实现 agent 循环;同时它按设计只接受回环 http://,TLS 或非回环部署会被拒绝而非降级。

需要注意两点。第一,插件以当前 DSH 进程权限运行,安装前应检查源码与许可证(MIT © WilShi),确认它触发的写操作范围符合预期。第二,随包附带的 CLI 体积较大,首次安装耗时取决于网络,直接使用全局安装的 CLI 可以避免这部分下载。

结尾

这个插件的价值在于把 Codex 和 Claude Code 的会话与配置收敛到一个入口,并保持「不接管厂商实现、只走公开接口」的边界,适合想少切几个窗口的本机开发场景。

  • 目录页:https://www.skillhub.cn/plugins/WilShi/dsh-coding-agents
  • GitHub:https://github.com/WilShi/dsh-coding-agents
羽毛球分组比赛记分
小程序二维码

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

小夜