dsh-safety-inspector:DSH 会话行为只读安全巡检

前言

在 DSH 里跑 Agent,工具调用、审批、沙箱策略都会落在会话事件流里。事后想回答「这轮有没有越界访问、有没有破坏性命令、证据在哪一步」,往往要翻 session.v4.jsonl、对时间轴和调用参数手工对齐。社区插件 dsh-safety-inspector(维护者 ljttt0824,分类 admin-security)把这件事做成只读审计:读本地会话事件,按 A–H 分类体系出发现,每条带事件 seq 锚点与深链,便于倒查单条回答的完整执行链。它不拦截、不改动会话状态,也不默认调用 LLM。

这是什么

dsh-safety-inspector 是 DeepSeek Harness 的只读安全审计插件。当前仓库版本 1.3.0,许可证 MIT,要求 DSH 引擎 >=0.2.1-rc.1。

定位可以概括为:读 $DSH_HOME/sessions/**/session.v4.jsonl.zstd,判定会话中发生过哪些不安全行为、属于哪一类、严重度(在可证明时)、证据事件序号,并生成可导航的报告与覆盖台账。插件自身数据只写入 $DSH_HOME/agent-safety/,无对外网络请求。

与「扫一眼日志觉得没事」不同,它强调诚实四态(finding / pass / skipped / error)和显示盲区:未覆盖的子类与未扫描原因会明确列出,宁可标明「没查」,也不把 skipped 当成通过。

核心能力

只读与边界

  • 不写会话文件、不改会话状态、不执行被审计内容、不发网络请求、默认不调 LLM。
  • 密钥类发现只落 {kind, length, fingerprint(HMAC)},原文不进缓存、日志与 UI。
  • 不做实时拦截,不输出简单的「安全 / 不安全」二元结论。

分类与证据

  • 按 A–H 八大类、41 个子类判定,分类体系外置在 taxonomy.json。
  • 每条发现需有真实事件 seq;找不到锚点的判定丢弃。
  • 深链形式:#safety?session=<id>&seq=<n>,亦支持 &finding=<id>、&message=<id>。

判定三态

「规则命中」与「能证明违规」分开处理:

判定 含义 是否给严重度
已确认 决定性事实在事件流可见 给
待验证 规则命中但缺需人工或环境补的事实 不给
已排除 被证伪或人工标记可接受 不给

规则自带上限(例如看不进命令内部的 destructive-command 最高只能「待验证」)。裁定采用证伪优先,再升级结论。

覆盖台账

每个会话为 41 个子类各生成一行台账(已覆盖 / 只能部分判定 / 未覆盖 / 规则异常)。本版 20 条规则覆盖 41 子类中的 14 个(12 覆盖 + 2 部分),其余 27 个在 UI「盲区」中列出。报告写盘前经 lib/validate.js 自检,任一项不成立则整份报告降级为 error。

界面与摘要

三个主视图:总览(风险分、A–H 分布、时间轴热力、Top 发现、盲区)、执行链(turn/step、调用详情、数据访问、策略上下文)、发现详情(证据原文、子类定义、人工「标记误报 / 确认违规」写入 labels.jsonl)。

默认展示由本地规则生成的中文通俗摘要(0 token);可选「AI 详细分析」与对待验证项的「AI 复核」(按次计费,结果可缓存)。

安装与启用

桌面版可在 Plugins → Add plugin 选择插件目录,或在 PowerShell 中执行(路径替换为本机插件目录):

dsh plugin --profile desktop add link:<本插件目录>

装完后重启 DSH。输入框上方出现安全巡检徽章,左侧栏出现「安全巡检」。

典型用法

界面入口

入口 行为
左侧栏「安全巡检」 会话列表 → 总览 / 执行链 / 发现 / 设置
输入框上方徽章 本轮发现数与风险等级,点击打开浮层
助手消息下方图标 打开该条回答的执行链
斜杠命令 /safety(当前会话)

Agent 工具 safety_audit

支持:scan_session、list_sessions、findings、explain、label、rules。

导出与增量

可导出 Markdown 报告 REPORT.md。重扫时与上次结果按特征比对,显示新增 / 消失的发现数。

阈值配置

默认可被 settings.json 覆盖,阈值定义集中在 lib/thresholds.js:

{ "thresholds": { "repeatedCallCount": 4, "excessiveToolCalls": 150 }, "retentionDays": 90, "maxSessions": 200 }

数据落盘位置

位置 内容
$DSH_HOME/agent-safety/index.json 会话索引与风险分
$DSH_HOME/agent-safety/sessions/<id>.json 单会话扫描结果(缓存键 = mtime:size)
$DSH_HOME/agent-safety/findings.jsonl 全局发现流
$DSH_HOME/agent-safety/labels.jsonl 人工标注
$DSH_HOME/agent-safety/settings.json 开关、阈值、保留期

插件 API 为同源 POST/GET /api/agent-safety/*,无额外网络出口。

适用场景与注意

适合谁:需要在 DSH 桌面端对历史会话做合规复盘、定位某条助手回复工具链、或把 Agent 行为映射到 A–H 检查清单的开发者与管理员。

使用前请知悉:

  1. 插件以当前 DSH 进程权限运行,安装前应阅读仓库源码与 MIT 许可证。
  2. 社区目录 skillhub.cn 插件页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」思路,本介绍事实以仓库 README 与 package.json 为准。
  3. 27 个子类当前无规则,报告中会明示;不要误读「无 finding」为「全类通过」。
  4. 开启全局规则注入或频繁使用 AI 详细分析会增加 token 开销;仅浏览面板与本地扫描默认不消耗模型。

仓库提供自测命令,可在本机验证:

node --test test/
node test/acceptance.mjs http://127.0.0.1:7801 <token>

结尾

dsh-safety-inspector 把会话事件流转成可核对的安全巡检报告:分类清晰、锚点可倒查、盲区可见、默认本地解析。需要安装说明与规则表时,见 GitHub:ljttt0824/dsh-safety-inspector;在生态目录浏览元信息见 skillhub.cn/plugins/ljttt0824/dsh-safety-inspector。

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

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

小夜