dsh-audit:DeepSeek Harness 插件安装前审计与运行期监控

前言

DeepSeek Harness(DSH)采用「一切皆插件」的扩展方式:第三方插件可以注册工具、改配置、在 Agent 会话里被调用。习惯做法是安装后再观察行为,或人工翻源码;插件一多,很难在装之前系统性地看「会写哪些路径、会不会起子进程、会不会往外 POST」。dsh-audit(Audit Console)面向同一类问题:在本地对目录、压缩包或 npm 规格做纯文本静态检查并给出 S–D 等级,安装后继续记录启停、敏感工具调用和 token 估算,数据落在本机 $DSH_HOME/dsh-audit/,不上传遥测。

维护者为 Shark00I,源码与说明见 GitHub:Shark00I/dsh-audit;社区目录页:skillhub.cn/plugins/Shark00I/dsh-audit(独立站点,与 DeepSeek / 幻方无官方从属关系)。当前版本 1.0.0(README 标注 2026-10-28 首发),许可证 MIT。

这是什么

dsh-audit 是 DSH 上的审计控制台:装插件前先审目标包,装完后看插件实际触发了哪些敏感操作。审计过程对受检对象只读文本,不 import、不执行、不解包到磁盘;对已安装插件的扫描不发网络请求;运行期监控不外发数据。dsh-audit 不会审计自身(扫描与监控均跳过本插件)。

环境要求(来自 README):

项 要求
DSH >= 0.2.1-rc.0(Desktop 与 dsh web)
Node >= 20(可用 DSH 自带 Node)
OS Windows 10+ / macOS 12+ / Linux,纯 ESM,无原生代码
运行时依赖 无;@deepseek-ai/* 由宿主提供

核心功能

安装前审计(Pre-install audit)

支持本地目录、.tgz / .tar.gz、npm spec,或 https tarball。全程文本分析,不导入、不执行、不解包到磁盘。

S–D 分级与 0–100 分

每个第三方插件根据证据扣分后映射等级,分数只表示相对风险,不是安全证明。等级含义如下:

等级 分数 含义 建议
S 90–100 低风险 可安装
A 75–89 可接受 可安装,按建议收紧
B 60–74 需留意 先看证据
C 40–59 谨慎 重点看命令执行与外连主机
D 0–39 高风险 除非信任来源,否则勿装

扣分项包括(节选):动态执行 −25、系统自启动 −12、混淆 −12、child_process −10、安装脚本 −10(若下载/执行再 −10)、对外 POST −10 等。README 与 locale 注释、压缩单行包等会跳过部分词法规则(URL 仍会收集)。

运行期监控(Runtime monitor)

只记录三类事实:

  1. 启停:插件经 internal/status 进入/离开 ACTIVE 及持续时间。
  2. 敏感调用:在 tools/pre-execute 与 tools/result 上匹配删除/写入/运行/网络/凭证等规则,以及 plugin_manager、web_fetch / web_search 目标等。
  3. Token 估算:按「四字符 ≈ 一 token」估算工具调用的参数与结果文本,归属到注册该工具的插件。

事件环形缓冲约 600 条,约每 3 秒或每 80 条刷入 $DSH_HOME/dsh-audit/events.jsonl,5 MB 轮转;空闲成本接近零。不轮询、不盯文件。

设置面板

路径:Settings → Audit。无需重启;若入口未出现,dsh web 下可刷新页面一次。各 Tab 职责:

Tab 内容
Grades 等级徽章、分数与证据芯片;可展开看数据去向、安装脚本、自启动、外发等
Runtime 运行中插件、各插件工具 token 估算、启停/敏感调用/管理变更时间线
Errors 插件加载失败、工具错误、会话错误
Pre-install 输入目录/压缩包/npm spec,给出是否建议安装及可关闭项
Settings 监控开关、敏感调用记录、启动扫描、排除列表、npm registry、清空

新装插件约 2 秒后触发重扫,面板约 6 秒轮询;也可点 Rescan 立即刷新。不列入扫描/监控的包括:@deepseek-ai/* 官方包、仅通过临时 --patch 加载且不在 profile package.json 中的项,以及设置中的排除列表。

Agent 工具与 HTTP API

Agent 侧工具:

plugin_audit                audit installed plugins (profile?, plugin?, detail?)
plugin_audit_preinstall     audit a not-yet-installed target (target: dir/archive/npm spec/https tarball)

plugin_audit 返回 Markdown 报告(概览 → 各插件等级/分数/证据 → 结论);detail: false 可省略 URL 列表。

同域 HTTP 接口(节选):

方法 路径 用途
GET /dsh-audit/api/state 版本、设置、最近扫描、事件、错误、运行中插件
GET /dsh-audit/api/events?limit=&type=&plugin= 事件与错误
POST /dsh-audit/api/scan 触发扫描
POST /dsh-audit/api/preinstall { target } 安装前审计
POST /dsh-audit/api/settings { patch } 更新设置
POST /dsh-audit/api/clear 清空事件与错误

其他插件可通过 ctx.audit 注册静态规则、订阅运行期事件、触发 scan() / preinstall() 等(卸载插件时该 Cordis 服务一并移除)。

安装与启用

Desktop

在 Plugins → Add plugin 中选择 dsh-audit 目录或压缩包,或执行:

dsh plugin --profile desktop add link:<absolute path to dsh-audit>

将 <absolute path to dsh-audit> 换成本机上的绝对路径。

dsh web

dsh plugin --profile web add dsh-audit         # 发布到 npm 后可用
dsh plugin --profile web add link:<absolute path>

安装后打开 Settings → Audit 即可使用。

典型用法

安装前先审一个 npm 包或本地目录:在 Settings → Audit 的 Pre-install Tab 输入目标,或在 Agent 中调用 plugin_audit_preinstall,根据等级与证据决定是否安装、安装后应关闭哪些监控项。

已安装插件定期看等级与时间线:Grades Tab 看各插件分数与证据;Runtime Tab 看敏感调用与 token 估算。需要报告时可让 Agent 执行 plugin_audit,必要时设 detail: false 缩短输出。

自定义规则或联动(需改插件源码并重启 DSH):静态规则在 lib/rules.js,打分在 lib/scan.js 的 scoreOf(),运行期分类在 lib/runtime.js 的 classifyCall();HMR 不监视 profile 外目录。

适用场景与注意

适合:经常从社区或 npm 拉第三方 DSH 插件、希望在同一界面做「装前静态结论 + 装后行为时间线」的开发者。

务必知晓的边界(README 原文要点):

  • 安装前审计看不到:严重混淆/压缩代码、运行时拼出的 URL、动态 import()、原生 .node 行为、node_modules 内依赖(不展开)。
  • 低分不等于恶意,高分不等于安全;审计只读文本,不替代人工读源码与许可证审查。
  • 第三方插件与 dsh-audit 一样,在当前 DSH 进程权限下运行;安装任何插件前仍应检查来源、LICENSE 与自身威胁模型。
  • 数据仅存 $DSH_HOME/dsh-audit/(如 settings.json、scan.json、events.jsonl、errors.jsonl),无遥测;唯一可能出网的是你在 Pre-install 里显式指定的 npm spec 或 https URL(默认走 registry.npmjs.org 或你在设置里配置的 registry)。

结尾

dsh-audit 把「装前纯文本审计 + S–D 证据打分」和「装后启停/敏感调用/token 估算」收进 Settings → Audit 与 Agent/HTTP 接口,数据留在本机。若你要在 DSH 生态里系统化管理第三方插件风险,可从目录页或 GitHub README 对照安装命令与评分表使用。

  • 目录页:https://www.skillhub.cn/plugins/Shark00I/dsh-audit
  • GitHub:https://github.com/Shark00I/dsh-audit
羽毛球分组比赛记分
小程序二维码

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

小夜