前言¶
跟智能体说「把工作区收拾干净,重新构建一遍」,它跑了几十分钟回「已完成」。往上翻日志,只看到一屏一屏的命令滚动过去,都是绿的。删了哪些目录?有没有读过 .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