Gate – AI代理工具输出的确定性PII编辑工具(Rust)
Gate 是一个用 Rust 编写的确定性 PII 编辑工具,专为 AI 代理设计。它通过正则表达式、列启发式和 Luhn 检查来识别和替换敏感信息,而不依赖 LLM。支持多种 AI 代理框架,如 Claude Code、OpenCode、Cursor 等。提供扫描、实时编辑和聚合报告功能,确保数据不会离开本地机器。
Gate 是一个用 Rust 开发的确定性 PII(个人身份信息)编辑工具,专门用于保护 AI 代理工具的输出。与大多数依赖 LLM 的 PII 防护方案不同,Gate 采用正则表达式、列名称启发式算法和 Luhn 校验等确定性方法,确保相同输入总是产生相同输出,且数据始终保留在本地,不会发送到外部模型 API。
Gate 通过两种主要路径拦截 AI 代理的数据访问:Bash 工具路径和 MCP 路径。在 Bash 路径中,Gate 注册到代理的预工具执行钩子,自动将匹配的 Bash 命令重写为 gate run -- ...,从而对命令输出进行实时编辑。在 MCP 路径中,Gate 作为一个透明的 stdio 代理,仅对 tools/call 响应进行检测,其他消息类型直接转发。这种设计使得代理无法绕过编辑层,但人类和 CI 脚本不受影响。
Gate 还提供了 gate scan 命令用于数据库模式扫描,检测列名中可能包含 PII 的列,并基于类别和数量分配风险等级。gate retro 命令提供聚合审计报告,显示总查询数、编辑字段数、命中率以及按工具和 PII 类别划分的详细信息。此外,Gate 支持哈希值后缀,使得 AI 可以在不看到原始数据的情况下进行行间关联和去重。
Gate 支持多种 AI 代理框架,包括 Claude Code、OpenCode、Cursor、GitHub Copilot CLI、Codex CLI 和 Gemini CLI。用户可以通过 gate init 命令安装钩子,并通过 gate config 编辑配置文件。Gate 还提供 MCP 服务器代理注册(gate init --wrap-mcp),确保通过 MCP 的工具响应也能经过编辑。
需要注意的是,Gate 并非沙箱,以下场景不在其保护范围内:对抗性代理或提示注入、未配置工具的命令、非 JSON 格式输出、编码或混淆的 PII、非美国 PII 格式(需自行扩展模式)、已经存在于模型上下文中的 PII、工具侧的网络外泄、写操作(INSERT/UPDATE/DELETE)以及凭据暴露。Gate 建议与工具级别的 Bash 白名单和数据库只读角色配合使用,以建立更强的边界。
Gate 本身收集统计信息并保存在本地 JSONL 日志中,不会离开用户机器,可以通过配置禁用。对于需要低延迟、确定性和数据本地性的 AI 代理 PII 防护场景,Gate 提供了一个轻量级而有效的解决方案。