AI Agent 在系统里干了什么?AgentSight 用 eBPF 零侵入追踪每一行命令
你运行 claude 或 codex 之后,Agent 到底在系统里做了什么?它执行了哪些 shell 命令?创建了哪些文件?向哪些服务器发送了请求?如果你回答不了这些问题,你并不孤单——这是几乎所有 AI 编码 Agent 用户的共同盲区。
问题:Agent 的行为是个黑盒
Claude Code、Codex、Gemini CLI 这类 Agent 在终端中跑得飞快,但它们在系统层面做了什么是不可见的。你看到的只是终端的输出流,但背后:
- Agent 可能启动了子进程(编译、测试、git 操作),但你不知道每次调用的具体参数
- Agent 可能创建或修改了大量文件,但你没有统一的变更记录
- Agent 向 LLM API 发送了请求,但你不清楚每次请求的 token 消耗
- 如果 Agent 行为异常(删除了不该删的文件、访问了不该访问的网络),你只能在事后凭日志猜测
传统方案不是没有——你可以用 strace 跟踪系统调用、用 top 看资源占用、用 tcpdump 抓网络包。但问题是:这些工具各自为政,没有关联性,而且需要大量手动操作。更关键的是,对于 Claude Code 这类闭源 CLI,你无法插入 SDK 或代理来获取应用层信息。
AgentSight 是什么
AgentSight(532⭐,MIT 许可证)是一个系统级 AI Agent 性能分析和监控工具。它使用 eBPF(Extended Berkeley Packet Filter)在内核层面零侵入地追踪 Agent 的所有系统行为——进程创建、文件操作、网络连接、LLM API 流量——然后关联到一个统一的视图中。
核心亮点是:不需要 SDK、不需要代理、不需要修改 Agent 代码。AgentSight 在 Linux 内核层面工作(eBPF + TLS 流量追踪),因此对 Claude Code、Codex、Gemini CLI 等闭源 CLI 同样有效。
快速上手
安装
cargo install agentsight wget https://github.com/eunomia-bpf/agentsight/releases/latest/download/agentsight chmod +x agentsight
系统要求:Linux 内核 4.1+(推荐 5.0+),部分功能需要 sudo 权限。
实时监控:看一眼 Agent 在做什么
最简单的用法是 agentsight top——它提供一个交互式终端界面,实时显示当前系统中 AI Agent 的活跃会话:
agentsight top
你会看到一个按模型、会话 Token、健康状态、进程族、工具调用、文件和网络活动排序的实时视图。这相当于给 Agent 装了一个 top 命令——瞬间你就知道它在忙什么。
录制一个完整的 Agent 会话
要录制 Agent 的完整行为记录,使用 record 子命令:
sudo agentsight record -- claude sudo agentsight record -- codex sudo agentsight record -- npm test
录制的会话自动保存为 agentsight-*.db SQLite 文件,即使 Agent 退出后仍然可以查询。
查询历史会话
录制完成后,用 agentsight report 系列命令查询数据:
agentsight report agentsight report token agentsight report token --group-by dir agentsight report audit --json agentsight report export -o snapshot.json
Web 可视化界面
AgentSight 还提供了一个 Web UI,可以在浏览器中直观查看:
agentsight report serve
访问 http://127.0.0.1:7395,可以查看时间线视图(Timeline)、进程树(Process Tree)、事件日志(Event Log)和指标(Metrics)。对复杂的 Agent 会话来说,图形化界面比终端命令更容易理解整体行为。
为什么 eBPF 方案优于传统监控
AgentSight 的 eBPF 方案与传统应用层监控方案有本质区别:
| 监控维度 | 传统方案(strace/top/tcpdump) | AgentSight 方案 |
|---|---|---|
| SDK 集成 | 需要应用代码修改或代理 | 零侵入,从外部追踪 |
| 闭源 CLI | 无法插入 SDK | eBPF 内核层面追踪,直接生效 |
| 进程与文件关联 | 各工具独立,手动关联 | 统一 SQLite 数据库,自动关联 |
| TLS LLM 流量 | 需要代理解密 | 在 SSL/TLS 调用处捕获明文 |
| 子进程追踪 | 需手动 -f 参数 | 自动追踪全部子进程 |
| 历史查询 | 日志文件散落 | SQLite 数据库统一查询 |
对于生产环境中的 AI 编码 Agent,AgentSight 提供了一个独立于 Agent 自身的监控层——即使 Agent 本身被篡改或行为异常,内核层面的记录是不可绕过的。
高级功能:Token 分析、火焰图和 OpenTelemetry
Token 用量分析
AI Agent 的 Token 消耗是成本中心。AgentSight 的 report token 命令可以让你精确知道每个会话、每个项目的 Token 使用情况:
agentsight report token agentsight report token --group-by dir
离线火焰图(agentpprof)
AgentSight 包含一个独立的 agentpprof 子工具,可以生成 Agent 行为的离线火焰图——这对于分析”为什么这个任务花了这么多 Token”非常有用:
cargo run --manifest-path agentpprof/Cargo.toml -- \ --project-root . \ --view tokens \ -o agent.pb.gz go tool pprof -top agent.pb.gz
tokens 视图按项目、Agent、会话标签、模型和 Token 类型聚合实际开发会话的数据,是成本分析的首选火焰图。
OpenTelemetry 导出
如果你已经在使用 OpenTelemetry 基础设施,AgentSight 可以将捕获的 LLM 调用以 OpenTelemetry GenAI Span 格式导出:
sudo agentsight debug trace --otel --otel-endpoint http://localhost:4318
这让 AgentSight 可以无缝融入你已有的可观测性体系——所有 Agent 的 LLM 调用都以标准的 gen_ai.* Span 出现在你的监控仪表盘中。
注意事项
- sudo 权限:eBPF 探针需要 root 权限,录制命令需要用
sudo运行 - Linux only:AgentSight 依赖于 Linux eBPF 内核特性,macOS 和 Windows 上无法使用
- SQLite 存储敏感数据:录制的会话包含 LLM 请求/响应、路径、网络目标等信息,请妥善保管生成的
.db文件 - 静态链接的 SSL:Claude Code 和 Gemini CLI 使用静态链接的 BoringSSL/OpenSSL,AgentSight 的
record --会自动发现二进制文件路径并处理
总结
AI 编码 Agent 的行为可观测性是保障开发质量和安全的基础。AgentSight 用 eBPF 技术提供了一种零侵入、跨 Agent 的系统级监控方案——不管你的 Agent 是 Claude Code、Codex、Gemini CLI 还是 OpenCode,都能在一个统一的视图中看到它的系统行为、Token 消耗和文件操作。
对于正在大规模使用 AI 编码 Agent 的团队来说,AgentSight 是一个值得加入工具链的监控组件——它不是替代现有的 APM 工具,而是填补了「Agent 在操作系统层面做了什么」这一关键盲区。
- GitHub:github.com/eunomia-bpf/agentsight
- 许可证:MIT
- 在线 Demo:agentsight.us