numbat
Perplexity AI 出品的 AI Agent 端点可见性与安全审计工具,CEL 规则引擎 + 统一事件模型 + 取证重建
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Perplexity AI 出品的 AI Agent 端点可见性与安全审计工具,CEL 规则引擎 + 统一事件模型 + 取证重建
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
2026 年,AI Agent 已经走入了万千打工人的桌面。Claude Code 帮你写代码,OpenClaw 自动跑任务,Codex 在 VS Code 里呼风唤雨——但你有没有想过一个问题:这些 Agent 在你的电脑上到底干了什么?
它们可能会:
这些行为,普通安全软件根本无法感知——因为它们根本不认识"AI Agent"这个新物种。
numbat 正是为解决这个问题而生。它是 Perplexity AI 开源的一款端点可见性工具,专门用来监控 AI Agent 的行为轨迹,在危险动作发生前进行拦截,并在事后进行完整取证重建。
numbat 由 Perplexity AI 主导开发并开源,托管于 GitHub(perplexityai/numbat),采用 Apache-2.0 许可证开源。项目于 2026 年 7 月 24 日创建,不到两周时间已积累超过 640 颗星,增长速度在 AI 安全类工具中名列前茅。
Perplexity AI 选择在这个时候开源这样一款工具,与行业大背景密切相关:随着 Cursor、Claude Code、OpenClaw 等 Agent 产品大规模普及,企业安全团队对"AI Agent 到底在干什么"的可见性需求急剧上升。numbat 的出现填补了传统 EDR(端点检测与响应)工具对 AI Agent 行为盲区的空白。
numbat 通过三种方式捕获 AI Agent 的行为数据:
不同的 AI Agent(Claude Code、OpenClaw、Codex 等)对同一操作可能有完全不同的内部命名方式。numbat 的核心设计哲学是将所有输入标准化为同一套事件词汇,保证无论哪个 Agent、哪种输入源,最终输出的事件格式完全一致。
典型的事件类型包括:
| 事件类型 | 说明 |
|---|---|
command.exec | Shell 或进程执行 |
file.read | 文件读取 |
file.write | 文件写入 |
file.delete | 文件删除 |
network.indicator | 网络请求(已知 URL) |
tool.call | 未知工具调用 |
numbat 内置基于 Google CEL(Common Expression Language)的规则引擎,支持以下几类开箱即用的安全规则:
所有内置规则默认为**仅监控(monitor-only)**模式,即只记录不拦截。如需开启拦截,需手动将规则标记为 enforce: true,这是 numbat 的安全默认值设计——默认不放行危险操作,但也不贸然阻断用户工作流。
对于已发生的 AI Agent 行为,numbat 支持从磁盘会话文件中提取完整的操作时间线(Timeline),生成便携式取证包(Case Bundle),包含 SHA-256 哈希校验,确保证据链完整可信。
numbat agents # 列出所有已安装的 AI Agent
numbat scan # 扫描所有 Agent 的会话记录
numbat scan --agent codex # 仅扫描指定 Agent
这些操作均为只读,不会修改任何系统状态,也不会安装任何钩子。
numbat 由 Go 语言实现(go 1.26.5),编译为纯静态单二进制文件(CGO_ENABLED=0),支持 Linux、macOS、Windows 三大平台,amd64 和 arm64 架构均有官方 release 发布。
核心技术栈:
| 组件 | 技术选型 | 作用 |
|---|---|---|
| 规则引擎 | google/cel-go v0.30.0 | CEL 表达式解析与规则评估 |
| 协议 | google.golang.org/protobuf | OTEL / OTLP 协议支持 |
| 数据库 | go.etcd.io/bbolt | 本地 KV 存储(会话缓存) |
| YAML 解析 | go.yaml.in/yaml/v3 | 规则文件解析 |
| Shell 解析 | mvdan.cc/sh/v3 | Shell 命令结构化解析 |
| 压缩 | klauspost/compress | 记录文件压缩 |
代码结构采用标准 Go 项目布局:
cmd/numbat/:CLI 入口,所有子命令(agents、scan、hook、collect、ship)均在此internal/:核心逻辑子包
internal/hook/:生命周期钩子实现internal/extract/:Agent 会话文件解析器internal/rule/:CEL 规则加载与评估internal/sequence/:多步骤时序规则internal/finding/:安全发现(Finding)结构internal/otel/:OTLP/HTTP 接收与转发internal/output/:NDJSON 记录输出internal/redact/:敏感信息脱敏internal/casebundle/:取证包生成rules/:内置 CEL 规则集(YAML + Go 测试)docs/:完整文档,包括 agent-coverage.md(覆盖矩阵)、event-model.md(事件模型规范)、rule-catalog.md(规则目录)等numbat 的设计目标明确:不依赖外部运行时或数据库,单二进制走天下。这意味着企业可以在不改变现有基础设施的情况下,快速在员工电脑上部署 numbat。
安装极度简单:
方式一:下载二进制(推荐)
直接前往 GitHub Releases 页面下载对应平台的可执行文件即可:
chmod +x numbat && ./numbat --help.exe 双击运行每个 release 均包含 SHA-256 校验和,可验证完整性。
方式二:go install
go install github.com/perplexityai/numbat/cmd/numbat@latest
方式三:源码编译
git clone https://github.com/perplexityai/numbat
cd numbat
CGO_ENABLED=0 go build -trimpath -o numbat ./cmd/numbat
上手流程(以监控 Codex 为例):
# 1. 查看已安装的 Agent
numbat agents
# 2. 扫描现有会话(只读,无需安装钩子)
numbat scan --agent codex
# 3. 安装实时监控钩子(会写入 Agent 配置)
numbat hook install --agent codex
# 4. 开启全量事件输出(写到本地 NDJSON 文件)
numbat hook --agent codex --emit all
输出的记录格式为 NDJSON(每行一个 JSON),包含 events、findings、indicators、enforcement 多种记录类型,可与 SIEM 系统对接。
numbat 并非银弹,以下局限性需要在选型时充分考虑:
1. 平台覆盖有限
numbat 目前支持的 Agent 列表是固定的,覆盖矩阵(docs/agent-coverage.md)中标注为"Deferred"或"none"的 Agent 暂时无法监控。项目明确声明:产品名不等于全覆盖,实际支持范围以矩阵为准。
2. 预-action 拦截能力受限
同步 pre-action 拦截(Enforce 模式)仅在支持同步钩子的 Agent 上可用。对于那些不支持生命周期钩子的 Agent,numbat 只能做到事后记录,无法实时阻断。这意味着对于某些 Agent,numbat 的"安全防护"实际上是"事后审计"。
3. 规则误报风险
CEL 规则引擎的功能强大,但实际部署中规则的精度直接影响体验。过于宽松的规则会导致大量误报(噪声),过于严格的规则可能漏过真实威胁。官方规则默认为 monitor-only,已经在误报和漏报之间做了平衡,但企业实际使用时仍需根据自身场景调整。
4. 企业级管理缺口
numbat 目前是单点工具,没有集中管理控制台。如果企业需要在数百台机器上统一管理策略、收集日志,目前需要自行对接 OTLP 端点或 SIEM 平台。这意味着 numbat 更适合安全意识强的个人用户或小型团队,大型企业落地需要额外的集成成本。
numbat 的开源代表了 AI 安全领域的一个重要方向转变:从"信任 AI"到"审计 AI"。
过去两年,AI Agent 安全的主要讨论集中在模型层面的对齐(Alignment)和对抗攻击防御。但 numbat 聚焦的是另一个维度:当用户授权 AI Agent 在真实系统中操作时,如何确保 Agent 的行为符合预期?
这不是模型问题,而是系统问题。numbat 的出现说明 AI 安全的重心正在从模型层向系统层蔓延——未来的企业安全体系,必然需要把 AI Agent 的行为纳入合规审计范围。
从增长数据看,numbat 在不到两周内从 0 增长到 640+ stars,且官方仓库更新频率极高,说明 Perplexity AI 正在积极维护。这个项目值得持续关注。