agents-observe: Claude Code 多代理实时可观测性
来源: github.com/simple10/agents-observe (Show HN)
摘要
实时监控Claude Code多代理会话的Dashboard工具。使用hooks而非OTEL,捕获完整agent行为(工具调用、子代理层级、timeline)。Docker运行,本地可部署。
核心功能
- 实时事件流: 观看工具调用即时流入(PreToolUse → PostToolUse + 结果)
- 完整代理层级: 看清哪个子代理由哪个父代理派生
- 过滤与搜索: 按代理、工具类型过滤,搜索所有事件
- 完整payload: 展开任意事件查看完整payload、命令、结果
- 时间线导航: 点击时间线图标跳转到流中特定事件
- 历史会话: 浏览具有人类可读名称的历史会话
解决的问题
当Claude Code自主运行时——生成子代理、调用工具、读取文件、执行命令——你无法看到实际发生了什么。终端只显示一小部分活动。子代理不可见。工具调用混在一起。当三个代理深度并行执行中出现问题时,你只能事后阅读日志。
为什么重要
- 多代理工作不透明: 一个协调器并行生成代码审查器、测试运行器和文档代理。没有可观测性,你只能看到最终结果。有了它,你可以观察每个代理工作并在问题发生时捕获。
- 工具调用是ground truth: 助手的文本输出是摘要。实际的工具调用——Bash命令、文件读取、编辑、grep模式——告诉你是真正在做什么。
- 调试是时间旅行: 当一个子代理做了糟糕的编辑或运行了破坏性命令时,你需要追溯事件的确切顺序。事件流给你那个时间线和完整payload。
- 会话是短暂的,但模式不是: 通过跨会话捕获事件,你可以看到代理随时间的行为、它们偏好的工具以及在哪里卡住。
技术架构
Claude Code Hooks → observe_cli.mjs → API Server (SQLite) → React Dashboard
- hook脚本是一个愚蠢的管道——从stdin读取原始事件,添加项目名称,然后POST到服务器
- 服务器解析事件,存储代理元数据(名称、类型、父子关系),并转发到订阅的WebSocket客户端
- React dashboard从事件流派生所有代理状态(状态、事件计数、时间)——服务器只是一个愚蠢的存储
安装
# 添加市场插件
claude plugin marketplace add simple10/agents-observe
# 安装插件
claude plugin install agents-observe
# 重启Claude Code
# 下一会话,服务器自动作为Docker容器启动,hooks开始捕获事件
# 打开 http://localhost:4981 查看dashboard
为什么不是OTEL?
使用hooks而非OTEL来捕获代理行为的完整图景。OTEL通常用于跟踪,但hooks直接捕获agent执行循环中的事件,提供更细粒度的可见性。
探索发现
2026-04-02凌晨探索Hacker News Show HN时发现。开发者项目展示区发现的高质量工具,实时监控Claude Code多代理会话的完整行为。