leonardoxr/dsh-harness-updater

dsh-harness-updater

Claude Code / Codex CLI update detection, prompting, and one-click channel updates for DeepSeek Harness

待分类anthropicclaude-codecodex

dsh-harness-updater

English | 简体中文

DeepSeek Harness 的代理工具更新器。 检测本地安装的 Claude Code 和 Codex CLI,将其与最新发布的版本进行比较, 在 DSH Web UI 中提示,并且仅在你明确点击后运行适用于对应渠道的正确升级命令。

灵感来自 T3 Code 的提供商维护模型。

功能

  1. 检测每个位于 PATH 中的代理工具(支持 Windows .cmd/.ps1 shim),并在 有限超时时间内探测 <harness> --version。
  2. 根据解析出的二进制文件路径判断安装渠道: 原生安装程序、npm / pnpm / bun 全局安装、Homebrew 或仅支持手动更新。
  3. 检查 npm(registry.npmjs.org/<pkg>/latest)中的最新版本,超时时间为 4 s,缓存时间为 1 h。离线时可通过设置完全禁用。
  4. 提示:DSH 设置的「插件」分区中会有一张常驻 Updates 卡片,列出 每个代理工具及其 current → latest 与内联的 Update 按钮。在 DSH Native 下运行时还会显示原生应用自身的自更新状态。
  5. 仅在点击时更新——绝不会静默更新。运行器按渠道锁串行执行, 强制执行硬超时并终止进程树,限制捕获的输出量,然后 重新探测以验证,并报告 succeeded、unchanged 或 failed。
检测到的渠道更新命令
Claude 原生 (~/.local/bin/claude*)claude update
npm 全局安装npm install -g <pkg>@latest
pnpm 全局安装pnpm add -g <pkg>@latest
bun 全局安装bun install -g <pkg>@latest
Homebrewbrew upgrade claude-code / brew upgrade --cask codex
其他任何渠道(WinGet、独立安装程序)手动更新:提供可复制的提示,不支持一键更新

更新器使用显式参数调用 npm,并允许安装 CLI 所需的 npm 生命周期脚本。

安全模型

  • 每个路由都受仅限回环地址 + 同源限制;更新是仅限 POST 的变更操作。
  • 每个代理工具一次只能进行一项更新;共享同一包管理器的更新会在 共享锁后排队,而不是相互竞争。
  • Harness 环境中的 DISABLE_UPDATES=1 会阻止所有自动更新路径。
  • 子进程超时时会以进程树为单位终止(Unix signals / taskkill /t /f)。
  • 如果没有用户点击,绝不会启动更新;任何更新都不会由定时器触发。

安装(本地开发)

在你的 DSH profile 中引用此插件:

// ~/.dsh/profiles/web/package.json
"dependencies": { "dsh-harness-updater": "link:C:/path/to/dsh-harness-updater" }

添加打包的 patch 条目(仓库中的 cordis.patch.yml 会插入该条目),在 profile 中运行 pnpm install,然后重启 DSH Web(host 部分)。

开发

pnpm install
pnpm check        # typecheck + build + test

配置

所有字段都可以在 DSH Settings → Plugins → Harness updater 中编辑(重启后生效):

字段默认值含义
enableUpdateCheckstrue查询 npm 中的最新版本
statusRefreshIntervalMs900000后台状态轮询间隔(最小值 60000)
hoverRefreshMinAgeMs30000允许强制刷新前的最小时间间隔(最小值 5000)
probeTimeoutMs5000每次 --version 探测的超时时间(最小值 1000)
latestTimeoutMs4000每次 registry 查询的超时时间(最小值 1000)
latestVersionTtlMs3600000registry 结果缓存生命周期(最小值 30000)
updateTimeoutMs300000更新命令的硬超时时间(最小值 30000)
claudeCommand / codexCommand / npmCommandclaude/codex/npm要使用的可执行文件

许可证

MIT