dsh-safe-updater:DeepSeek Harness 的受保护自动更新

智能体开发中,频繁更新 DeepSeek Harness (DSH) 容易引入配置错误或依赖冲突,直接升级可能导致服务中断。dsh-safe-updater 通过隔离环境验证、配置校验和健康检查,确保升级过程可回滚。

该插件由 lucifer726 维护,用于从 npm 获取版本,克隆 profile 到隔离的 DSH_HOME,安装依赖,验证配置,启动临时 Web 服务器,并允许受控切换。若健康检查失败,会自动回滚到上一版本。

安装与默认配置

安装插件需要指定 profile 名称。下面以 web profile 为例:

dsh plugin --profile web add dsh-safe-updater

安装后,插件会插入默认配置,默认模式为 notify,不会静默替换正在运行的 Harness:

- insert:
    - id: safe-updater
      name: dsh-safe-updater
      config:
        mode: notify
        channel: latest
        profile: web
        checkIntervalMs: 21600000
        checkOnStart: true

核心模式

插件提供三种模式,通过配置文件或命令行覆盖 mode 字段来切换:

  1. notify
    检查并记录是否有新版本。不执行安装或重启操作。这是默认模式。

  2. stage
    克隆 profile,执行依赖安装、配置组装和 HTTP 冒烟测试。不执行实际重启。适合在升级前预演。

  3. apply
    在 stage 完成后,请求外部 supervisor 进行版本切换。此模式拒绝在没有外部 supervisor 的环境中运行。

典型用法

安装完成后,可以使用以下工具进行操作。

通用状态查看

dsh_update_status

该命令读取当前、可用、已暂存和回滚状态。

手动检查与暂存

手动触发检查或暂存特定版本:

# 手动检查当前版本
dsh-safe-updater check --current-version 0.1.1-rc.1

# 手动暂存指定版本
dsh-safe-updater stage --version 0.1.1-rc.1 --profile web

回滚操作

若暂存的版本健康检查失败,或在运行中需要回滚:

# 执行回滚
dsh-safe-updater rollback

Supervisor 模式

要实现自动激活,需在 Web profile 下运行 supervisor:

dsh-safe-updater supervise \
  --version 0.1.1-rc.1 \
  --profile web \
  --host 127.0.0.1 \
  --port 3080

当暂存的版本就绪,supervisor 会基于参数启动进程,等待 HTTP 健康检查,成功则提交切换,失败则返回到 previousVersion。

安全与信任模型

插件在设计上侧重安全隔离和执行可控:

  • 执行安全:注册表版本字符串使用语义版本解析,候选命令使用参数数组(shell: false),防止命令注入。
  • 数据隔离:暂存环境不会复制 .credentials.yaml 或其他运行时数据,防止敏感信息泄露。
  • 状态存储:状态和锁文件存储在 ~/.dsh/safe-updater 下,具有受限权限和原子替换机制。
  • 防递归:Smoke 模式会禁用更新计时器,防止递归触发暂存。

环境要求与依赖

使用该插件需满足以下条件:

  • Node 版本:Node.js 版本需大于等于 22。
  • Peer Dependencies:
    • @deepseek-ai/dsh-tools:版本范围 >=0.1.1-rc.1 <0.2.0
    • @deepseek-ai/schemastery:版本范围 ^3

总结

dsh-safe-updater 为 DSH 提供了一套严谨的自动化更新机制。它通过隔离环境验证和原子化回滚策略,降低了智能体开发中版本迭代的风险。配合 notify、stage、apply 三种模式,开发者可以根据场景选择检查、预演或自动切换。

查看插件目录
查看源码

羽毛球分组比赛记分
小程序二维码

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

小夜