灯塔:在会话日志里复查危险操作

前言

跟智能体说「把工作区收拾干净,重新构建一遍」,它跑了几十分钟回「已完成」。往上翻日志,只看到一屏一屏的命令滚动过去,都是绿的。删了哪些目录?有没有读过 .env?分支有没有被强推过?——想知道,只能把整份会话日志一行行读完,而没人会去读。

灯塔 就是那第二遍检查。它打开一个对话,点顶部的「灯塔」标签,把这次会话里所有「做了就很难撤回」的动作挑出来,一条一张卡片:动了什么、可能影响到什么、下次怎么做更稳。

这是什么

这是一个 DeepSeek Harness 插件,维护者为 xh0915。它只读日志,不拦命令、不改文件,也不会把任何操作重跑一遍。所有处理都在本机完成,敏感内容在到达页面之前就被遮掉。

核心能力

报什么,什么不报

会话里发生的事 灯塔怎么说
rm -rf dist 提醒 —— 能重新构建出来
rm -rf C:\Users\你\project 严重 —— 删的是整个工作区
git push --force 严重 —— 远端提交被覆盖
git push --force-with-lease 提醒 —— 会先看远端有没有新提交,但仍然覆盖
cat .env 严重 —— 密钥进了会话记录
用编辑工具往 .env 里写东西 要注意 —— 写进去的内容同样会留在日志里
killall node 严重 —— 所有 node 进程一起走,包括 Harness 自己
echo "DROP TABLE users" 不报 —— 只是打印了一句话
改代码文件、跑测试、本地装依赖 不报 —— 这些随时能撤销

原则很简单:只有真的在日志里发生过、而且撤不回来的,才会出现在页面上。模型嘴上说了句危险的话不算;写在字符串里的命令不算。

页面上有什么

顶部七个数字:检查了多少条事件、执行过多少条命令、做过多少次文件读写、发现多少处风险,以及其中严重 / 要注意 / 提醒各有多少。全部从日志里数出来,没有估算,也没有费用。

标题旁边的标签说明:这次检查了多少条规则、扫描到第几条事件、有没有内容被脱敏。

筛选:按严重 / 要注意 / 提醒过滤,只想看危险的时候用。

带走:「复制报告」把一份 Markdown 放进剪贴板;「下载报告」存成 lighthouse-<会话>.md。

重新扫描:agent 又干了一会儿之后,按一下就重读一遍当前会话。

检测规则

插件内置 17 条规则,分为七组:

删除:rm -rf、del /s、rd /s、Remove-Item -Recurse、ri。递归删除的目标如果是 /、主目录、整个盘、C:\Windows、当前工作区本身或 .git,算严重;如果目标全是 node_modules、dist、.cache 这类能重新生成的目录,只算提醒;其他情况算要注意。

Git:git clean -f 要注意;连忽略文件一起清(-x)算严重。git reset --hard 严重。git checkout -- .、git checkout .、git checkout -f、git restore 要注意。强推(--force、+refspec、镜像推送)严重;--force-with-lease 只算提醒。

进程:taskkill /IM、Stop-Process -Name、killall,以及不带 -x 的 pkill。按名字结束会波及所有同名进程。目标看起来像编辑器、终端、Node 或 Harness 本身时严重,其他名字要注意。按 PID 只杀一个进程的不报。

凭据:用命令打印凭据文件(cat、grep、Get-Content 等)严重。在本地复制凭据文件(cp、copy)要注意。传到别的机器(scp)严重。文件工具 read 读凭据文件严重;write / edit 写凭据文件要注意。

数据库:DROP TABLE / DATABASE / SCHEMA、TRUNCATE、没有 WHERE 的 DELETE FROM、db.dropDatabase(),并且命令必须真的以常见 SQL 客户端开头,全是严重。

系统与包管理器:sudo / runas 提醒。chmod 777、icacls … /grant Everyone 要注意。改全局 git 或包管理器配置、setx、持久化环境变量要注意。全局安装包提醒。docker … prune 要注意。format C:、mkfs、diskpart clean 严重。

网络:curl | sh 这一类(还包括 wget、iwr、irm 直接管道进 shell 或解释器)严重,并显示下载来源的域名。只有命令真的以下载程序开头才会报。

隐私与脱敏

所有处理都在本机完成。敏感内容在到达页面之前就被遮掉:

  • 私钥块、JWT、GitHub / AWS / Google / Slack / npm / PyPI / Stripe / DeepSeek 形态的密钥、Bearer 头、URL 里的账号密码、api_key = … 这类赋值、邮箱地址,统一替换成 «已脱敏»。
  • 页面只告诉你遮了多少处、涉及哪几类,不显示密钥本身。
  • 标题、目标、每条命令、每个路径都走同一套脱敏。
  • 脱敏默认开启。关掉之后,页面会明说这次没脱敏,不会假装做过。

限制与不做的事

  • 不拦你。它不能阻止工具执行、不能改命令、不能替你批准什么。它只对已经发生的事做第二遍检查。
  • 不猜。一条风险必须对应日志里真实的一次工具调用。
  • 不重跑。页面上所有命令都只是文字,没有任何一键执行的按钮。
  • 不自动修复。「更稳的做法」是建议,你自己决定要不要采纳。
  • 不翻旧账。一次只扫你当前打开的这个会话,不是全部历史。
  • 不联网。不发模型请求、不调 shell、不做遥测,什么都不上传。

安装与启用

需要 Node.js 22.19+(或 24+)和 DeepSeek Harness 0.1.0-rc.6+。

git clone https://github.com/xh0915/dsh-lighthouse
cd dsh-lighthouse
pnpm install
pnpm run build
dsh plugin --profile web add .

重启 Web Harness,打开一个对话,灯塔 标签就在顶部,点进去立刻出结果——不用配置,不用等。

pnpm run build 必须在 add 之前跑。这个包没有安装期构建脚本(pnpm 10 会拦下未批准的 prepare),跳过这一步,插件会「装上了却加载不出来」。

卸载:

dsh plugin --profile web remove dsh-lighthouse

配置

dsh-lighthouse:
  redactSecrets: true   # 到页面之前先脱敏(默认)
  maxFindings: 50       # 最多保留多少条,5–200

条目超过上限时保留前面的,页面和报告都会写明列表被截断,不会悄悄少几条。

适用场景

适合在以下场景中使用:与智能体进行长时间会话,执行文件操作、Git 操作或系统命令;需要事后审查哪些操作不可逆;希望在不打断智能体工作流的前提下,获得第二层安全检查。

插件以当前 dsh 进程权限运行,安装前建议检查源码与许可证。

价值与资源

灯塔在会话日志里做第二遍检查,把删目录、强推、读密钥这类难撤回的操作挑出来,说明影响范围和更稳的做法。它不改变任何操作,只读日志,所有处理都在本机完成。

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

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

Xiaoye