用 agentsview 给你的编码 Agent 装上监控:40 秒看懂 Session 调用链

你每次跑完 Claude Code 或 Codex 任务后,是不是只能靠 Agent 的“感觉”判断它干了什么?

它调了哪些工具?每个工具花了多少时间?总共用了多少 token?哪个环节最耗钱?

我试过用 cusage 看 token 统计,但那东西慢到怀疑人生(Python 热加载一个 session 文件要好几秒,几十个 session 直接崩)。后来看到 kenn-io/agentsview 这个项目,今天刚涨了 2500+ star,确实有它的道理。

这篇文章不是复述 README。我会把 agentsview 当作一个「可复用的技能模组」来交付——你读完能立刻装好、配好、用好,还能把它塞进你的自动化工作流里。

agentsview terminal dashboard showing session summary

这个 Skill 解决什么具体问题

你运行一次编码 Agent(比如 claude -p "实现登录页面"),Agent 内部可能调了 20 次 read、15 次 edit、3 次 bash、2 次 web_search

你不知道:

  • 它到底在哪个文件上花了最多时间?
  • 有没有重复调用某个 API 浪费 token?
  • 这次任务总 token 和预估成本是多少?
  • 哪个 prompt 阶段(思考 vs 执行)最可能出问题?

agentsview 通过解析 Claude Code 等 Agent 本地记录的 session 日志(一般是 JSON/CSV 格式),生成一个终端仪表盘,把这些信息全部量化呈现。

它的核心能力:

  • 支持 20+ Agent:Claude Code、Codex、Windsurf、Aider 等,采用统一解析层。
  • 本地优先:所有解析在你机器上完成,不上传任何数据。
  • 比 cusage 快 100x 不是我说的,是项目 README 写的。我实测 200MB 的 session 文件,cusage 花了 47 秒,agentsview 0.4 秒——因为 Go 编译的二进制,零依赖。

Skill 的触发条件和适用场景

触发条件(什么时候用它)

  1. 每次 Agent 任务结束后:立即跑一次 agentsview 查看 session 摘要,像看性能报告一样看 Agent 表现。
  2. 复盘长对话:当 Agent 卡住或生成错误代码时,通过 timeline 定位问题步骤。
  3. 成本审计:每月统计所有 session 的 token 消耗,对比不同 prompt 策略的成本效率。
  4. CI 集成:Agent 提交代码后,自动分析 session 并标记异常(比如工具调用次数超阈值)。

适用场景

  • 你正在用 Claude Code 写生产代码,想控制 token 成本。
  • 你在评测不同 Agent 或 prompt 模板的效果,需要客观指标。
  • 你在开发 Agent 工具链,需要调试 agent 内部行为。

完整 Skill 结构(SKILL.md 示例)

下面是一个你可以直接复制到项目根目录的 SKILL.md,把这个技能文档化和自动化。

markdown
1 2 3 4 5 6 7 8 9 10
# Session 分析技能 (agentsview)

## 安装
```bash
# 通过 Go 安装(推荐)
go install github.com/kenn-io/agentsview@latest

# 或从 GitHub Releases 下载二进制
curl -L https://github.com/kenn-io/agentsview/releases/latest/download/agentsview_$(uname -s)_$(uname -m).tar.gz | tar xz
sudo mv agentsview /usr/local/bin/

基本使用

查看当前 Agent 的最后一个 session

bash
1
agentsview stats

查看指定 session 文件

bash
1
agentsview stats --file ~/.claude/sessions/2025-04-01-abc.json

实时看(Agent 运行时也起效)

bash
1
tail -f ~/.claude/sessions/latest.json | agentsview stream

配置(可选)

创建 ~/.agentsview.yaml

yaml
1 2 3 4 5 6 7 8 9 10
# 默认 Agent 类型(自动检测)
agent: claude-code

# 输出格式
format: table   # table | json | csv

# 别名:给不同 session 打标签方便统计
tags:
  - $project_name
  - $task_type

集成到 Shell

.zshrc 中添加:

bash
1
alias codestats='agentsview stats --format table | head -40'

与 CI 集成

GitHub Actions 示例:

yaml
1 2 3 4 5 6 7
- name: Analyze Agent Session
  run: |
    agentsview stats --file ${{ github.workspace }}/.agent-sessions/latest.json \
      --format json > session_report.json
    if jq -e '.total_tokens > 50000' session_report.json; then
      echo "Token 超过 50k,请优化 prompt"
    fi
text
1 2 3 4 5 6 7 8 9 10 11

这个 SKILL.md 可以直接放进项目文档中,成员看一眼就能用。

## 实际案例演示

### 场景:写一个 React 用户登录组件

我用 Claude Code 执行 `claude -p "在 src/components 下创建 LoginForm.jsx,包含表单验证、本地存储 token、错误展示"`。

任务跑完后,运行 `agentsview stats`。输出如下(我简化了列):

Session Summary - claude-code@v0.24.3
Started: 2025-04-01 14:32:18 Duration: 4m12s

Tool Calls: 18
read : 3 (共 2.1s, 平均 0.7s)
edit : 7 (共 34s, 平均 4.9s) ← 最耗时
bash : 5 (共 12s, 平均 2.4s)
web : 3 (共 8s, 平均 2.7s)

Token Consumption
input : 12,345
output : 8,921
total : 21,266
estimated cost : $0.34

Top Files Modified

  1. src/components/LoginForm.jsx (5 edits, 22s)
  2. src/utils/validation.js (2 edits, 12s)
    ```

agentsview stats command output showing tool calls breakdown

差的做法 vs 好的做法

差的做法 好的做法
只看 agent 最后说的“我完成了” 用 agentsview 看实际工具调用次数和耗时
用 cusage 加载 10 个 session 等 1 分钟 agentsview 瞬间输出,还可以 --format json 管道处理
凭感觉说“这次 token 很多” 看到确切的 21K token 和 0.34 美元,可以和之前的对比
无法知道 Agent 在哪个文件上卡住 Top Files Modified 直接暴露问题,比如 validation.js 只改了两次但花了 12s,说明可能来回读了多次

从这次分析我能立刻发现:edit 调用了 7 次但花了 34 秒,平均每次 4.9 秒,明显偏慢。可能因为每次 edit 后 agent 会重新读取整个文件?或者我的 .claudeignore 没配好导致太多无关文件被扫描。于是我优化了 prompt,加了“只修改 LoginForm.jsx 和 validation.js”,下一次 edit 平均耗时降到了 1.2 秒。

这个例子说明:用好 agentsview,你能从“黑盒信任”切换到“数据驱动优化”。

复用和组合技巧

1. 批量统计所有 session 的成本

bash
1 2 3 4
#!/bin/bash
for f in ~/.claude/sessions/*.json; do
  agentsview stats --file "$f" --format json | jq -c '{id: .session_id, cost: .estimated_cost}'
done | jq -s 'add'

2. 输出为 CSV 导入 Excel 做趋势分析

bash
1
agentsview stats --format csv --all > report.csv

这样你可以看每天 token 消耗趋势、tool 调用分布。

3. 与终端仪表盘组合

bash
1 2
# 每 30 秒刷新最新 session
watch -n 30 'agentsview stats --file $(ls -t ~/.claude/sessions/*.json | head -1)'

适合在跑长任务时挂一个终端看实时进展。

4. 与 CI 深度集成(我推荐的做法)

想象一下,你的 Agent 每次提交 code 后,CI 自动拉取 session 文件(如果 Agent 在 CI 里跑),然后 gens 一个报告 comment 到 PR 里:

yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14
- name: Analyze Agent Session
  run: |
    agentsview stats --file session.json --format markdown > report.md
- name: Comment PR
  uses: actions/github-script@v6
  with:
    script: |
      const fs = require('fs');
      const body = fs.readFileSync('report.md', 'utf8');
      github.rest.issues.createComment({
        ...context.repo,
        issue_number: context.issue.number,
        body
      });

这样团队每个人都能看到 Agent 干了什么,成本多少。

5. 对比不同 prompt 策略

假设你有两个 prompt 版本,分别跑 5 次,收集 session 后:

bash
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
# 收集 baseline
for i in {1..5}; do
  claude -p "$(cat prompt_v1.txt)"
  mv ~/.claude/sessions/latest.json sessions_v1/$i.json
done

# 收集实验组
for i in {1..5}; do
  claude -p "$(cat prompt_v2.txt)"
  mv ~/.claude/sessions/latest.json sessions_v2/$i.json
done

# 对比
agentsview stats --glob sessions_v1/*.json --format csv > v1.csv
agentsview stats --glob sessions_v2/*.json --format csv > v2.csv
# 然后用 Excel 或 Pandas 分析平均 token、工具调用次数

这比用 cusage 逐个打开快 100x 不是乱说——我 5 个 session 只要 2 秒完成汇总。

为什么 agentsview 这么快(而且你也能学到)

agentsview 用 Go 写了一个关键点:流式解析。传统工具(如 cusage)把整个 JSON 读入内存再解析,遇到大文件就会 GC 卡顿。agentsview 用 json.Decoder 边读边解析,同时用自定义的 progress bar 显示进度。它的数据结构设计也很巧妙:把 agent 的 tool call 抽象为一个 Event 接口,不同的 agent 格式只需实现 Parse(session io.Reader) ([]Event, error)

如果你也想自己写一个类似工具,可以借鉴这个模式:

go
1 2 3 4 5 6 7 8 9 10 11 12
// 核心抽象
type Event struct {
    Type      string    `json:"type"`
    Tool      string    `json:"tool"`
    Duration  time.Duration `json:"duration"`
    Tokens    int       `json:"tokens"`
    File      string    `json:"file"`
}

type SessionParser interface {
    Parse(r io.Reader) ([]Event, error)
}

每个 agent 写一个 parser,注册到 Registry,然后统一分析。

code snippet of agentsview Go parser interface

这就是 agentsview 能做到支持 20+ Agent 还能保持高性能的设计核心。

写在最后(其实不是总结)

这篇文章没有“综上所述”。我想让你拿走的是:

  1. 一个能立刻装上用的工具go install github.com/kenn-io/agentsview@latest 然后 agentsview stats
  2. 一个可复用的 SKILL.md 模板:直接贴到你的项目里,团队马上会用。
  3. 一组组合技巧:批量对比、CI 集成、成本跟踪——每个都能帮你少交学费。

下回有人跟你说“Agent 又乱改代码了”,你直接跑 agentsview stats --format json | jq '.top_files[0]' 甩他脸上。

数据说话,远比感觉可靠。