CLI AI

SAFE、CAUTION、DANGER:CliAI 如何在执行前分级

2026-03-09

CliAI 返回的每条命令在到达你的 shell 之前,都会贴上三个标签之一。读懂这些标签,是「小心地用」和「自信地用」之间的差别。这篇说系统、捕到了什么、——以及,老实说,没捕到什么。

三个等级

SAFE。 只读或近乎只读。ls、pwd、cat、grep、find -printf。按 Enter,没有额外摩擦。

CAUTION。 有限地改变状态。具体文件的 rm、mv、单文件 chmod、对已知 PID 的 kill -9、未共享分支上的 git reset --hard。标签黄色,要求确认。

DANGER。 大范围或不可逆改变:rm -rf 跨越已知根、向块设备 dd、对 / 的 chmod -R、main 上的 git push --force、任何在根级别触碰 * 的事。标签红色,必须键入字面量 yes——Enter 不工作。

clai
┌─ Task ───────────────────────────────────────────────┐│ 把我的家目录整个干掉                                  │├─ Command ────────────────────────────────────────────┤│ rm -rf -- ~/                                         │├─ Safety: DANGER ─────────────────────────────────────┤│ 递归删除,跨越 $HOME 根。                            ││ 输入 "yes" 确认。                                     │└──────────────────────────────────────────────────────┘

怎样进行分级

用正则,在服务端,在 LLM 生成候选之后。规则不保密——是一份历史上造成过损害的结构形态清单:

  • 跨越已知根目录的递归删除(/、$HOME、/etc、/var、/usr);
  • 对块设备的裸写(dd of=/dev/sd*);
  • 对受保护分支的强力破坏性 git 操作;
  • 尾部为破坏性命令的管道(tar | … && rm -rf …)。

匹配 DANGER 集得 DANGER。改变状态但不越线得 CAUTION。其余 SAFE。

它能抓到、但你没料到的东西

第一眼看着没事的命令,读完整条管道才会被判 DANGER。分级器看整条 shell 命令,不只是第一段:

clai
┌─ Task ───────────────────────────────────────────────┐│ 打包、上传、然后清掉                                  │├─ Command ────────────────────────────────────────────┤│ tar -czf - . | aws s3 cp - s3://b/k && rm -rf -- .   │├─ Safety: DANGER ─────────────────────────────────────┤│ 尾部递归删除 $PWD。                                   │└──────────────────────────────────────────────────────┘

它漏掉的——诚实地说

  • 奇异的 glob 展开在运行时解析为危险目标(rm -rf $UNSET_VAR/*)——静态文本看不出害处。
  • 自定义脚本。 命令是 ./deploy.sh 时,分级器看不到脚本内部。
  • 间接破坏——dd if=/dev/zero of=/path/to/important/file 通常抓不到,因为它不在统计意义上的「危险模式」里。

标签是提示,不是保证。先审后跑才是真正的安全机制。你读,你按 Enter。

另见