eunomia-bpf/agentsight

GitHub: eunomia-bpf/agentsight

基于 eBPF 的零插桩 AI agent 系统级行为追踪与可观测性工具,无需修改代码即可监控闭源 CLI agent 的进程、文件、网络及 LLM 流量。

Stars: 451 | Forks: 64

# AgentSight:使用 eBPF 进行系统级 AI agent 追踪与监控 [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/06d2461f3f000833.svg)](https://github.com/eunomia-bpf/agentsight/actions/workflows/ci.yml) [![arXiv:2508.02736](https://img.shields.io/badge/arXiv-2508.02736-b31b1b.svg)](https://arxiv.org/abs/2508.02736) [![DOI:10.1145/3766882.3767169](https://img.shields.io/badge/DOI-10.1145%2F3766882.3767169-blue.svg)](https://dl.acm.org/doi/10.1145/3766882.3767169) **English** | [中文](https://github.com/eunomia-bpf/agentsight/blob/master/README.zh-CN.md) 你的本地优先的、类似 `perf`/`top`/`strace`/`nsight` 的 AI agent 工具。查看 agent 实际上对你的机器做了什么,并将这些操作与触发它们的 prompt、模型调用和工具决策联系起来。 在 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 或任何命令周围运行 `agentsight`。AgentSight 会记录以下内容的本地 trace: - 进程和子进程、shell 命令、cwd、argv、退出状态和持续时间 - 创建、写入、截断、重命名或删除的文件 - 联系的网络目标 - prompt、响应、工具意图以及 LLM/模型/token 无需 SDK,无需代理,无需供应商集成。AgentSight 通过 eBPF 和 TLS 流量追踪进行观察,因此即使 agent 是闭源的 CLI 它也能正常工作。**✨ 无需任何代码插桩** ## 快速开始 ``` cargo install agentsight # 或:wget https://github.com/eunomia-bpf/agentsight/releases/latest/download/agentsight && chmod +x agentsight sudo agentsight top ```
AgentSight top live session view

Live sessions ranked by model, session tokens, health, process family, tool calls, file activity, and network activity

如果你将二进制文件下载到了当前目录,请运行 `sudo ./agentsight top`。 `top` 会加载 eBPF 探针,发现本地 agent,并实时将系统活动与 agent 行为关联起来。请查阅[用法](#usage)部分以获取更多示例和详细信息。 ## 🚀 为什么选择 AgentSight? ### 传统可观测性与系统级监控 当你拥有应用程序代码时,[LangSmith](https://docs.langchain.com/langsmith/observability-concepts)、[Langfuse](https://langfuse.com/docs/observability/overview) 和 [Phoenix](https://arize.com/docs/phoenix/) 等应用级工具非常适合用于 trace、prompt、token、评估和延迟分析。当你可以通过托管端点路由 provider 流量时,[Helicone](https://docs.helicone.ai/getting-started/integration-method/gateway) 等 gateway/代理工具非常有用。 AgentSight 专注于这些工具经常遗漏的层面:agent 在系统边界实际做了什么。它无需 SDK 或代理即可观察现有的二进制文件和 CLI agent,然后将 LLM 流量与进程执行、文件访问和系统活动关联起来。 | **挑战** | **应用级工具** | **AgentSight 解决方案** | |---------------|----------------------------|------------------------| | **框架采用** | ❌ 每个应用都需要 SDK、callback 或 gateway 集成 | ✅ 开箱即用的系统 tracer,无需修改代码 | | **闭源 CLI** | ❌ 仅限于工具暴露或记录的内容 | ✅ 从外部观察现有的二进制文件和 CLI agent | | **Agent 控制的日志** | ❌ 日志可能不完整、被禁用或被修改 | ✅ 独立于应用日志的内核级事件 | | **TLS LLM 流量** | ❌ 仅当通过 SDK/代理路由时才可见 | ✅ 无需代理即可在 SSL/TLS 调用中捕获明文 | | **系统操作** | ❌ 经常遗漏子进程和本地文件活动 | ✅ 追踪进程执行、文件访问和资源使用情况 | | **跨边界行为** | ❌ trace 通常在框架/进程边界处停止 | ✅ 将 LLM 流量与进程和文件事件关联起来 | AgentSight 捕获了应用级工具遗漏的关键交互: - 绕过插桩的子进程执行 - SSL/TLS 调用边界处的明文 LLM payload - 文件操作系统资源访问 - 跨 LLM、进程和文件事件的跨边界行为 ## 用法 ### 前置条件 - **Linux 内核**:4.1+ 且支持 eBPF(推荐 5.0+) - **sudo 权限**:eBPF 探针会自动提权;你的 agent 保持非特权状态 关于源码构建,请参阅 [docs/build.md](https://github.com/eunomia-bpf/agentsight/blob/master/docs/build.md)。 ### 安装 #### Cargo 或发布二进制文件 对于本地使用,请使用 `cargo install agentsight` 安装或下载最新的 release 二进制文件,然后使用 `sudo agentsight top` 启动。当你想要记录特定命令或检查已保存的会话时,请使用下面的示例。 #### Docker Docker 对于容器、CI 或隔离的 Linux 环境很有用,但它仍然需要主机的特权访问权限才能使用 eBPF。请参阅 [docs/docker.md](https://github.com/eunomia-bpf/agentsight/blob/master/docs/docker.md)。 #### 从源码构建 构建要求和源码构建命令位于 [docs/build.md](https://github.com/eunomia-bpf/agentsight/blob/master/docs/build.md) 中。 ### 查询过往会话 每个 `stat -- ` 或 `record` 会话都会自动保存到 SQLite 中。从 perf 风格的命令开始,然后使用 `agentsight report` 进行结构化查询: ``` agentsight stat # counters for the latest saved session sudo agentsight top # live ranked view of current agent sessions agentsight top --db run.db --once # ranked view of a saved session sudo agentsight record -- claude # record a command agentsight report # high-level run summary (default) agentsight report list # all recorded sessions agentsight report prompts --json # full LLM request/response JSON agentsight report token # token usage (auto-finds latest session) agentsight report audit --json # process spawns, file opens, API calls agentsight report serve --db run.db # open the web UI for a saved session agentsight report export -o snapshot.json # export for web dashboard ``` ### Web 界面 在会话期间,访问 [http://127.0.0.1:7395](http://127.0.0.1:7395) 以查看实时流量、进程树和指标: - **时间轴视图**:http://127.0.0.1:7395/timeline - **进程树**:http://127.0.0.1:7395/tree - **事件日志**:http://127.0.0.1:7395/logs - **指标视图**:http://127.0.0.1:7395/metrics 对于已保存的 SQLite 会话,运行 `agentsight report serve --db run.db` 并打开相同的路由。
AgentSight Demo - Process Tree Visualization

Process tree visualization for agent subprocesses and file activity

AgentSight Demo - Timeline Visualization

Timeline visualization for LLM, process, file, and network events

AgentSight Demo - Metrics Visualization

Metrics visualization for memory and CPU usage

尝试 在线演示,在浏览器中探索真实录制的 Claude Code 会话。

### 支持的 Agent `record` 会自动发现二进制文件、SSL 库和容器进程。开箱即用支持: | Agent | 命令 | |-------|---------| | Claude Code | `sudo ./agentsight record -- claude` | | Gemini CLI | `sudo ./agentsight record -- gemini` | | Python (aider, open-interpreter, …) | `sudo ./agentsight record -c python` | | Docker 容器 (OpenClaw, …) | `sudo ./agentsight record -c node --binary-path docker://openclaw` | | 任意命令 | `sudo ./agentsight record -- ` | 使用 `./agentsight discover` 发现本地已安装的内容。 有关特定于 agent 的设置、SSL 怪癖、浏览器捕获、MCP stdio 和高级标志,请参阅 [docs/agents.md](https://github.com/eunomia-bpf/agentsight/blob/master/docs/agents.md)。 ### OpenTelemetry 导出 AgentSight 可以将捕获的 LLM 调用通过 OTLP/HTTP 导出为 OpenTelemetry **GenAI** (`gen_ai.*`) span —— 为任何 agent 提供符合标准的 agent 遥测,且无需进程内插桩。 ``` sudo ./agentsight debug trace --otel --otel-endpoint http://localhost:4318 ``` 有关 collector 设置和后端集成,请参阅 [docs/otel.md](https://github.com/eunomia-bpf/agentsight/blob/master/docs/otel.md)。 ## ❓ 常见问题 **问:AgentSight 需要什么权限?** 答:eBPF 探针需要 root 权限,因此 AgentSight 可能会提示输入 `sudo`。使用 `record -- ` 或 `stat -- ` 时,受监控的 agent 仍以你的普通用户身份运行;只有探针被提权。 **问:对性能有什么影响?** 答:我们的评估报告显示,对于典型的被追踪 agent 工作负载,CPU 开销不到 3%。 **问:捕获的数据去了哪里?** 答:`record` 和 `stat -- ` 默认将会话本地存储在 SQLite 中。使用 `agentsight stat`、`agentsight top`、`agentsight report`、`agentsight report list`、`agentsight report audit --json` 和 `agentsight report token` 检查之前的运行。捕获的数据可能包含 prompt、响应、路径、header 和网络目标,因此请将日志和数据库视为敏感信息。 **问:为什么 AgentSight 没有捕获到 Claude Code、Node.js 或 Gemini CLI 的流量?** 答:这些应用程序将它们的 SSL 库(Claude/Bun 使用 BoringSSL,**所有** Node.js —— 无论是 NVM 还是系统安装 —— 都使用 OpenSSL)静态链接到自己的二进制文件中,而不是使用系统的 `libssl.so`,因此默认情况下 sslsniff 没有任何可以 hook 的东西。AgentSight 为你处理了这个问题:`record -- ` 始终会发现二进制文件,而 `record -c node` 现在也会自动发现 Node 二进制文件。对于 Claude attach 模式,请传递 `--binary-path`。请参阅“零配置:record”和“监控 Node.js AI 工具”部分。 **问:如果追踪失败,我应该检查什么?** 答:验证你使用的是支持 eBPF 的 Linux,拥有 `sudo` 或 `CAP_BPF`/`CAP_SYS_ADMIN` 权限,并且正在使用 `record -- ` 或针对静态链接 agent 使用正确的 `--binary-path`。 ### 核心资源 - [CLAUDE.md](https://github.com/eunomia-bpf/agentsight/blob/master/CLAUDE.md) - 项目指南和架构 - [docs/design/README.md](https://github.com/eunomia-bpf/agentsight/blob/master/docs/design/README.md) - 归档的设计说明和研究草稿 ## 📄 许可证 MIT 许可证 - 详见 [LICENSE](https://github.com/eunomia-bpf/agentsight/blob/master/LICENSE)。 **💡 AI 可观测性的未来**:随着 AI agent 变得更加自主并具备自我修改能力,传统的可观测性方法变得捉襟见肘。AgentSight 为大规模的 AI 安全部署提供了独立的、系统级的监控。
标签:AI代理监控, API集成, Docker镜像, LLM, Rust, Unmanaged PE, 可观测性, 可视化界面, 客户端加密, 用户代理, 系统追踪, 网络流量审计, 请求拦截