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。

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

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

小夜