AI 编码 Agent 一个 rm -rf 让你回到解放前?Gate.cat 用确定性拒绝清单挡住致命操作
你的 Claude Code 正在通过
terraform destroy清空生产环境,而你正在喝咖啡——这不是恐怖片剧本,这是 2026 年每个使用 AI 编码 Agent 的团队每天都在面对的真实风险。
问题:Agent 一个误操作可能毁掉你整个项目
AI 编码 Agent 越强,单次误操作的代价就越大。Claude Code 可以一键执行 rm -rf、terraform destroy 或 DROP TABLE——当模型在某个上下文中走神时,这些命令的执行和开发者的觉察之间存在致命的真空期。
现有的方案要么太贵(商业 Guardrails 厂商),要么需要联网(SaaS 安全网关),要么依赖另一个模型来”判断”当前模型的操作是否安全——而自信的错误往往躲过了概率判断。
Gate.cat 的出现就是为了填补这个空白:一个确定性、本地运行、模型无关的动作否决引擎。它不会”觉得”某个操作危险——它确定地通过拒绝清单阻止它。
核心机制:不是”觉得危险”,而是”确定危险”
Gate.cat 的设计哲学是确定性否决 + 诚实分级。它不做概率判断,而是用多层机制确保问题操作在到达系统之前就被拦截。
第一层:拒绝清单(Deny-List)——71 条默认策略
Gate.cat 内置了 71 条覆盖不可逆操作类别的默认策略,包括:
- 文件系统破坏:
rm -rf、磁盘擦除、受保护目录下的删除 - 基础设施破坏:
terraform destroy、gh repo delete - 数据库破坏:
DROP TABLE、DROP DATABASE - 凭证泄露:curl-pipe-to-shell 等凭据外泄模式
实测表明,在 14,700 条真实 Claude Code 命令和 8,600 条公开 SWE-Agent 命令上,Gate.cat 的干预率仅为 ~0.6%——它只在真正危险的操作前喊停,不会无谓地打断你的工作流。
gatecat-shell -c "rm -rf ~/project" # VETO [DELETE_ANALYZER] → exit 2,真实 Shell 从未看到这条命令 gatecat-shell -c "git status" # 正常通过
第二层:Hook 模式——在工具调用边界拦截(最强模式)
对 Claude Code 用户,Gate.cat 提供了最强的保护模式——PreToolUse Hook。在模型控制流之外执行拦截,Agent 无法绕过:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash|Write|Edit",
"hooks": [{ "type": "command", "command": "gatecat-hook" }]
}
]
}
}
安装只需一行命令:
pip install gate.cat
门控是故障关闭(fail-closed)的:如果引擎出错或缺失,默认阻止操作,而非放行。在一次性 CI/Sandbox 容器中,它自动检测环境并解除武装,仅记录无操作日志。
第三层:Gated Shell——保护任意 Agent
不是 Claude Code?Gate.cat 提供了一个代理 Shell——gatecat-shell——任何通过 Shell 执行命令的 Agent 都可以用它保护:
gatecat-shell -c "terraform destroy -auto-approve" # VETO → exit 2 echo "DROP TABLE users" | gatecat-shell --check # VETO → exit 2 eval "$(gatecat-shell --install-bash)"
将 Agent 的 Shell 指向 gatecat-shell,每条命令在执行前都被相同的确定性引擎审查。
第四层:停滞检测——抓住”空转”的 Agent
拒绝清单只能挡住单次危险操作,但无法发现一个不断执行安全操作却毫无进展的 Agent。StateStagnationDetector 通过跟踪 Agent 的状态变化来捕捉循环:
from gatecat.state_stagnation import StateStagnationDetector
det = StateStagnationDetector(max_repeat_action=2, max_no_change=2)
for step in agent_loop():
reason = det.update(action=step.tool_call, state_repr=step.diff,
error=step.error, cost=step.cost, progress=step.tests_passing)
if reason:
# 触发原因:repeat_action / no_state_change / repeat_error / cost_without_progress
pause_and_report(reason)
break
这个检测是确定性的——模型往往自信地重复同一个错误修复方案,概率分歧检测对这种模式视而不见,但状态比对能精确捕捉。
安装与入门
安装只需一行命令,支持手动 venv 和自动安装两种方式:
curl -fsSL https://raw.githubusercontent.com/BGMLAI/gate.cat/master/install.sh -o /tmp/gatecat-install.sh sh /tmp/gatecat-install.sh python3 -m venv .venv && .venv/bin/python -m pip install gate.cat pip install "gate-cat[openai]" # + OpenAI 封装 pip install "gate-cat[anthropic]" # + Anthropic 封装 pip install "gate-cat[proxy]" # + 代理服务器(FastAPI) pip install "gate-cat[all]" # 全部
可选:Docker 代理模式
任何兼容 OpenAI API 的 Agent,可以通过 DNS 代理模式获得保护:
docker run -e OPENAI_API_KEY=*** -p 8080:8080 gatecat/proxy
Agent 只需将 base_url 指向代理,零代码变更:
from openai import OpenAI client = OpenAI(base_url="http://localhost:8080/v1") # 之前是 11434,现在是受保护的
工作原理:诚实分级
Gate.cat 的每次裁决都会给出一个诚实的分级结果:
| 判定 | 含义 | reliable | trusted |
|---|---|---|---|
confirmed | 答案匹配已验证原子(计算/查询) | ✅ | ✅ |
refuted | 答案与已验证原子冲突 | ❌ | ❌ |
uncertain | 不一致但无仲裁者,或采样差异大 | ❌ | ❌ |
unchecked | 超出了验证范围——不是”安全”,只是”没查到” | ❌ | ✅ |
关键设计决策:门控捕获的是不确定性,而不是撒谎。当模型自信地给出错误答案(多次采样相同错误,零差异)时,分歧检测对它毫无意义。Gate.cat 的不确定性信号 → 暂停 → 升级是人机协作的正确路径。
价格:核心开源免费
Gate.cat 的核心本地门控永远免费(Apache-2.0 许可证)。付费层 gate.cat Cloud 是将否决历史存储于机器之外——当 Agent 拥有 Shell 访问权限时,它可以删除或篡改本地日志。团队版(€149/月,最多 10 台机器)提供共享的不可篡改否决历史、舰队告警和签名策略同步。
总结
每次 AI 编码 Agent 得到一个 Shell,都存在误操作的风险。Gate.cat 不是一个”你觉得危险吗?”的概率判断器,而是一个确定性、模型无关、故障关闭的动作否决引擎。71 条默认策略覆盖了绝大多数不可逆操作场景,0.6% 的干预率意味着它不会成为习惯性打扰。
对于每天依赖 AI 编码 Agent 完成关键操作的开发者来说,这个轻量级的本地安全层值得花一分钟配置。
相关链接: