2026年7月16日 2 分钟阅读

AI 编码 Agent 一个 rm -rf 让你回到解放前?Gate.cat 用确定性拒绝清单挡住致命操作

tinyash 0 条评论

你的 Claude Code 正在通过 terraform destroy 清空生产环境,而你正在喝咖啡——这不是恐怖片剧本,这是 2026 年每个使用 AI 编码 Agent 的团队每天都在面对的真实风险。

问题:Agent 一个误操作可能毁掉你整个项目

AI 编码 Agent 越强,单次误操作的代价就越大。Claude Code 可以一键执行 rm -rfterraform destroyDROP TABLE——当模型在某个上下文中走神时,这些命令的执行和开发者的觉察之间存在致命的真空期。

现有的方案要么太贵(商业 Guardrails 厂商),要么需要联网(SaaS 安全网关),要么依赖另一个模型来”判断”当前模型的操作是否安全——而自信的错误往往躲过了概率判断。

Gate.cat 的出现就是为了填补这个空白:一个确定性、本地运行、模型无关的动作否决引擎。它不会”觉得”某个操作危险——它确定地通过拒绝清单阻止它。

核心机制:不是”觉得危险”,而是”确定危险”

Gate.cat 的设计哲学是确定性否决 + 诚实分级。它不做概率判断,而是用多层机制确保问题操作在到达系统之前就被拦截。

第一层:拒绝清单(Deny-List)——71 条默认策略

Gate.cat 内置了 71 条覆盖不可逆操作类别的默认策略,包括:

  • 文件系统破坏rm -rf、磁盘擦除、受保护目录下的删除
  • 基础设施破坏terraform destroygh repo delete
  • 数据库破坏DROP TABLEDROP 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 的每次裁决都会给出一个诚实的分级结果:

判定含义reliabletrusted
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 完成关键操作的开发者来说,这个轻量级的本地安全层值得花一分钟配置。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。