前言¶
在 DeepSeek Harness(DSH)这类插件化工作区中,维护者常常要同时处理多类依赖:dsh 本体、随 DSH 发布的 bundle 包,以及各 profile 中安装的第三方插件。插件来源可能来自 npm 版本、git commit pin,也可能是本地 link: checkout;不同 profile、不同来源都会各自产生漂移。逐仓库手动检查成本高,而盲目自动更新又可能把未审核的第三方代码带入当前环境。
下面介绍的 dsh-update-copilot 走的是中间路径:先扫描所有更新对象,再汇总版本距离与变更材料,最后只对你明确触发的目标执行更新。它由 hezhongtang 维护,采用 MIT 许可;package.json 中版本号为 0.7.0。
这是什么¶
dsh-update-copilot 是一个 DSH 插件,定位为 Update Copilot。它一次扫描会覆盖:
dshcore;- shipped bundles:
dsh-base、dsh-web-app; - 每个 profile 的插件依赖。
扫描结果按 package 跨 profile 合并,使同一包在多个 profile 中的状态能放在一行中查看。更新只针对符合条件、且独立拥有的安装,并且只作用于该包展示出来的 eligible profiles;对 dsh core,它只报告、不自动升级。README 说明这样做是因为升级 harness 会重启每个 session,所以该决定保留给人工。
扫描能力¶
对每一项,插件会给出:
- semver distance;
- 风险等级:
major对应 high,minor对应 medium,patch对应 low; - changelog material;
- 外链:npm 版本页、commit、release、compare view、仓库地址。
来源判断分两条通道:
npm registry:
full semver compare
prerelease-aware logic
git upstream:
pinned-commit vs HEAD
link: checkouts:
read-only ls-remote
更新执行与护栏¶
更新动作被限制在明确允许的目标内。npm 与 GitHub specs 只通过官方 dsh plugin CLI 执行;link: checkout 在其自身目录中执行 git 更新:auto-stash → pull → restore;发生冲突时交回人工处理。file: installs 以及官方 @deepseek-ai/* packages 保持拒绝。
护栏包括:
same-origin POST + explicit confirm
strict target allowlist
single-flight lock
5-minute timeout
更新过程会通过 SSE 将 live progress 写入对应行的 progress bar,更新不会静默发生。
Agent 工具¶
插件暴露三个 agent tools:
update_copilot_scan
update_copilot_brief
update_copilot_update
典型用法是直接问 agent:
check for updates
agent 会先运行 update_copilot_scan,然后为 outdated items 生成 brief,并在执行任何更新前呈现风险。更新工具会拒绝没有 confirm: true 的调用,因此只有你确认后才会继续。
Web 界面¶
插件提供几处入口:
- Settings 旁的 sidebar trigger,打开 compact popup;
- Settings → Update Copilot,打开完整页面;
- Update all quick action,用于按序执行符合条件的 outdated packages。
完整页面中还有一个 opt-in 开关:
Settings → Update Copilot
Refresh every 30 minutes
off by default
插件面向用户字符串提供 bilingual UI。
安装与启用¶
先安装插件:
dsh plugin --profile web add dsh-update-copilot
也可以直接从 GitHub 仓库安装:
dsh plugin --profile web add github:hezhongtang/dsh-update-copilot
安装完成后,重启 dsh web,然后打开:
Settings → Update Copilot
在其它 profile 中也相同,把 --profile web 替换为对应 profile:
dsh plugin --profile <name> add dsh-update-copilot
典型用法¶
经过上面的安装与启用步骤后,可以先从 agent 或界面开始使用。
1、使用 agent:要求“check for updates”,让 agent 扫描、生成摘要并展示风险。
2、使用界面:点击 Settings 旁的 sidebar button 打开 compact popup;需要完整页面时,打开 Settings → Update Copilot。
3、当 DSH 本身无法启动时,运行:
node …/dsh-update-copilot/lib/cli.js
该命令不会 boot profile,因此可用于无法进入正常 DSH 会话时检查问题。
4、Host export check:插件会扫描第三方插件中 @deepseek-ai/* 的 named imports,并对照当前 DSH host packages。若发现问题,会给出可复制的 cordis.patch.yml disable snippet 和 dsh plugin remove 命令。
适用场景与注意¶
适合的场景是:维护多个 DSH profile,插件来源同时包含 npm、git commit pin 和本地 link: checkout,希望先看到版本距离、变更材料和风险,再决定是否更新。
需要注意:
- 该插件以当前
dsh进程权限运行,安装前应检查源码、许可证与依赖; dshcore 升级会影响当前 DSH 会话,因此插件只报告;- 更新工具依赖显式确认;未带
confirm: true的更新调用会被拒绝; file:installs 与官方@deepseek-ai/*packages 不会被该插件自动更新;- peer dependencies 为:
{
"@deepseek-ai/cordis": ">=4.0.0-rc.7 <5.0.0",
"@deepseek-ai/dsh-tools": ">=0.0.1-rc.1"
}
其中 @deepseek-ai/dsh-tools 为 optional。
链接¶
GitHub:
https://github.com/hezhongtang/dsh-update-copilot
目录页(地址来自插件线索,未在所抓取的 README 或 package.json 中直接确认):
https://www.skillhub.cn/plugins/hezhongtang/dsh-update-copilot
DSH 社区目录是独立站点,不应理解为官方应用商店。