零打扰审计与保险丝拦截:静默记录每次工具调用并做纯规则风险评分(含累积加分、风险等级分布、归档保留期清理),只拦不可逆灾难(受保护路径删除、磁盘擦除、force push 到受保护分支/引用、凭据外发),/risk-guard 输出脱敏操作账单并支持 --since 时间过滤。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-risk-guard
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:shuxue6662-a11y/dsh-risk-guard
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
零打扰 Agent 审计 + 保险丝拦截插件,用于 DeepSeek Harness(dsh)。
功能
- 静默审计:记录每次工具调用(工具名、脱敏参数、成功/失败、风险标签、 可解释风险分),写入本地 JSONL。不弹窗、不改权限、不碰沙箱。
- 纯规则风险评分:零 LLM 调用、零额外成本。覆盖危险删除、凭据读取、 网络外发、工作区外写入、依赖安装与重型构建;同标签高频和连续高风险调用 会累积加分。
- 保险丝拦截:只拦不可逆灾难——受保护路径删除、磁盘擦除/格式化、 force push 到受保护分支、网络命令引用凭据文件。
- 操作账单:
/risk-guard回答"我的 agent 到底干了什么",包含分数、 标签、原因与脱敏详情,支持当前会话、最近一轮、全部历史。
所有数据只存在本机 <DSH_HOME>/risk-guard/ 下。无网络请求、无遥测。
安装
需要先装好 DeepSeek Harness。
方式一:dsh 插件管理器(推荐)
dsh plugin --profile web add dsh-risk-guard
重启 Web UI,在任何会话中即可使用 /risk-guard。
方式二:npm
npm install dsh-risk-guard
或使用 pnpm:
pnpm add dsh-risk-guard
然后在 profile 的 cordis.patch.yml 中注册插件:
- insert:
- id: risk-guard
name: 'dsh-risk-guard'
方式三:源码安装
git clone https://github.com/shuxue6662-a11y/dsh-risk-guard.git
cd dsh-risk-guard
pnpm install
pnpm build
dsh plugin --profile web add .
使用
/risk-guard 当前会话操作账单
/risk-guard --turn 只看最近一轮
/risk-guard --all 全部会话的汇总 + 账单
/risk-guard --since=2026-08-01
只看该日期之后的记录(可与其它参数组合)
/risk-guard --json 机器可读输出
账单包含时间范围、调用/轮次数、高风险与保险丝拦截数、最高/总风险分、 标签分布、高风险操作表,以及每次保险丝拦截记录。
配置
所有选项均可选,默认值如下:
| 选项 | 默认值 | 含义 |
|---|---|---|
fuseEnabled |
true |
保险丝总开关 |
maxFileSizeMb |
50 |
月度 JSONL 超过该大小自动 gzip 归档 |
retentionDays |
30 |
超过该天数的 gzip 归档自动删除 |
cumulativeRiskWindowMs |
600000 |
同标签高频加分的时间窗口(毫秒) |
highRiskThreshold |
60 |
连续高风险加分的分数门槛 |
workspaceRoot |
未设置 | 用于识别"工作区外写入" |
homeDir |
系统 home | 路径规则与 ~ 展开使用的 home |
dshHome |
~/.dsh 或 $DSH_HOME |
审计数据存放于 <dshHome>/risk-guard |
protectedBranches |
['main', 'master'] |
对这些分支 force push 会被拦 |
protectedRemotes |
[] |
对这些远端 force push 会被拦 |
credentialFileNames |
常见凭据清单 | .env、credentials、id_rsa 等 |
示例:
- insert:
- id: risk-guard
name: 'dsh-risk-guard'
config:
fuseEnabled: true
workspaceRoot: 'C:/projects/my-app'
protectedBranches: ['main', 'master']
保险丝规则(v1)
rm -rf/del/Remove-Item删除文件系统根、home 本身、$HOME/*、 DSH_HOME 或凭据文件;- 磁盘擦除/格式化(
dd of=/dev/sdX、mkfs*、wipefs、diskpart、shred /dev/…、format C:); git push --force/-f到main/master或配置的受保护远端 (feature 分支不拦);- 网络命令(
curl、wget、nc、scp、ssh等)引用凭据文件。
其余操作一律不打扰。设 fuseEnabled: false 可关闭保险丝,审计照常工作。
隐私与存储
- 记录通过串行写入队列追加到
<DSH_HOME>/risk-guard/<yyyy-mm>.jsonl, 超限自动 gzip 归档; - 敏感形状值(GitHub token、
sk-密钥、私钥块、Bearer、.env行、 密码赋值)存储前脱敏,仅保留脱敏值的摘要; - 插件不发任何网络请求、无遥测。
兼容性
| 环境 | 状态 |
|---|---|
dsh 0.1.0-rc.6(npm next) |
已验证 |
web profile |
已验证 |
headless profile |
可用(命令为条件注册) |
故障排查
- 装完插件所有工具调用崩溃——host 与 profile 的
@deepseek-ai/*版本 不一致。请重新安装插件并执行pnpm dedupe。 - 账单为空——先开新一轮并跑几次工具调用;记录是异步写入的。
- 完全不想拦截——设
fuseEnabled: false。
贡献
参见 CONTRIBUTING.md 与 SECURITY.md。
License
MIT
链接
同类插件
toby-bridges/api-relay-audit★ 791
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
PerryLink/dsh-auto-review★ 33
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
omdsh-dev/dsh-security-audit★ 12
本机安全审计:配置/插件来源/会话/网络暴露面,只读脱敏风险报告。
slywalker2006/dsh-passwords★ 11
让 DeepSeek Harness 变成服务器级多租户平台:远程访问 + 自动 HTTPS、子用户权限与配额、沙盒强制、加密认证与审计日志。
PerryLink/dsh-permission-rules★ 8
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
Yuuz12/dsh-webui-auth★ 7
WebUI 身份认证:HTTP/传输层强制登录(资源、插件 bundle、/api、WebSocket 四层防护),服务端会话 + HttpOnly Cookie。