dsh-drift:升级后只报插件新增能力

前言

在 DeepSeek Harness(DSH)里装第三方插件,很多人会在安装前扫一遍源码。但插件会发新版本:上一版可能只是读文件,下一版多了一行 child_process.execSync,你本地早就不是当初审的那份代码,却很少会有人提醒你「该重新看一眼」。

现有安全类插件大多解决的是「装之前」的问题。dsh-drift 面向的是升级之后:在你说「这版审过了」的那一刻存一份能力基线,升级后再对比,只报告比基线多出来的能力,不打分、不判恶意。下面介绍它做什么、怎么用,以及边界在哪里。

这是什么

dsh-drift(维护者 Daphne999)是 DSH 社区目录里归类为 admin-security 的插件,当前版本 v0.1.0,许可证 MIT。

一句话定位:插件能力漂移检测——存基线,升级后只报新增能力(安装期脚本、shell/eval、外联域名、凭据路径、原生依赖等静态画像项)。

它不回答「新增是不是恶意」,也看不到运行时才出现的行为;只回答:相对你存的基线,这版多出了什么。

核心功能

工作流程

审完某一版插件后,对该插件目录执行 drift_baseline 写入基线;中间若发生升级,再对同一目录执行 drift_check,输出仅包含新增项。能力减少、仅版本号变化都不报告。

drift_baseline { target: "某个插件目录" }   ← 审完存基线
        ↓(中间插件升级了)
drift_check    { target: "同一个目录" }     ← 只报新增了什么

README 中的输出示例:

🔴 dsh-foo 1.2.0 → 1.3.0:新增了 3 项能力(high)
   · 新增安装期脚本 postinstall
   · 新增能力 execSync
   · 新增凭据路径访问 .ssh

三个工具

工具 作用
drift_baseline { target } 存当前能力基线
drift_check { target } 对比基线,只报新增
drift_list {} 列出已存基线

基线文件路径:~/.dsh/drift/baselines/<插件名>.json。

设计原则(与严重度)

  1. 只报新增:减少能力视为变安全,不列入告警;版本变化 alone 不报。
  2. 画像稳定:相同代码两次扫描结果逐字节一致,避免漂移检测误报。
  3. 不评分:只陈述「多了什么」,避免「分数差不多就放行」的错觉。

新增项的严重度(摘自 README):

新增 级别 理由
安装期脚本 high 跑在安装那一刻,最容易藏东西
child_process / eval / vm high 能把代码变成命令
凭据路径(.ssh / .env / api_key) high 直接对着秘密去
原生依赖(.node) medium 二进制里看不清
外联域名 medium 数据可能出去

能力边界

  • 只看静态代码:动态拼 URL、读配置再决定连哪等情况抓不到。
  • 不判断恶意:新增能力不等于恶意,目的是提示「该重新审一遍」。
  • 画像粒度:按 API 名与域名归类,不到调用级。

插件为 host-only、零依赖 bundle,通过 cordis.patch.yml 注入宿主;装完后重启 DSH 宿主,会话中会出现 drift_* 三个工具。

安装与启用

官方 README 给出的安装方式如下(请将 <profile> 换成你的 DSH profile):

# 市场页搜 dsh-drift 安装,或从源码 link:
git clone https://github.com/Daphne999/dsh-drift.git
dsh plugin --profile <profile> add link:"$PWD/dsh-drift"

也可在 DSH 插件市场目录页检索并安装:https://www.skillhub.cn/plugins/Daphne999/dsh-drift

注意:DSH 插件以当前 dsh 进程的权限运行。无论通过市场还是 link 安装,安装前建议自行查看仓库源码与许可证,确认符合你的安全策略。

装完后需重启宿主才能在会话里使用 drift_baseline、drift_check、drift_list。

典型用法

下面示例中的 target 为插件所在目录路径(README 使用 Windows 路径示意,Linux/macOS 换成你的实际路径即可)。

第一步:审完当前版本后存基线

drift_baseline { target: "D:/ds工作区/dsh-foo" }

第二步:插件升级后只做漂移检查

drift_check { target: "D:/ds工作区/dsh-foo" }

查看已记录的基线列表

drift_list {}

若输出提示新增了 high 级能力(例如 postinstall、execSync、.ssh 路径访问),README 的建议是:新增了能力就该重新审一遍——升级不等于安全。

维护者在 2026-11-11 对 v0.1.0 跑过 node test/drift.test.mjs(14 条断言,14/14 通过);README 注明验证主要在 Windows 上完成,基线为纯 JSON,跨平台理论可行但未充分实测。

适用场景与注意

适合谁:已经会装第三方 DSH 插件、希望在版本升级时有可重复对照的人,而不是只在首次安装时扫一次。

不适合替代什么:不能替代人工 code review,也不能替代运行时监控;它不做恶意判定。

生态背景:DSH 的理念是「一切皆插件」;社区插件目录(SkillHub)是独立站点,与 DeepSeek / 幻方无官方从属关系,本文所述安装与市场检索均指该社区生态内的用法。

结尾

dsh-drift 用「基线 + 只报新增」把升级后的能力变化说清楚,补的是「装时审过、升版后忘了再审」这一环。需要目录介绍可看 SkillHub 插件页,源码与完整说明见 GitHub:Daphne999/dsh-drift。

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

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

Xiaoye