用 agentsview 给你的编码 Agent 装上监控:40 秒看懂 Session 调用链
你每次跑完 Claude Code 或 Codex 任务后,是不是只能靠 Agent 的“感觉”判断它干了什么?
它调了哪些工具?每个工具花了多少时间?总共用了多少 token?哪个环节最耗钱?
我试过用 cusage 看 token 统计,但那东西慢到怀疑人生(Python 热加载一个 session 文件要好几秒,几十个 session 直接崩)。后来看到 kenn-io/agentsview 这个项目,今天刚涨了 2500+ star,确实有它的道理。
这篇文章不是复述 README。我会把 agentsview 当作一个「可复用的技能模组」来交付——你读完能立刻装好、配好、用好,还能把它塞进你的自动化工作流里。
这个 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 的触发条件和适用场景
触发条件(什么时候用它)
- 每次 Agent 任务结束后:立即跑一次
agentsview查看 session 摘要,像看性能报告一样看 Agent 表现。 - 复盘长对话:当 Agent 卡住或生成错误代码时,通过 timeline 定位问题步骤。
- 成本审计:每月统计所有 session 的 token 消耗,对比不同 prompt 策略的成本效率。
- CI 集成:Agent 提交代码后,自动分析 session 并标记异常(比如工具调用次数超阈值)。
适用场景
- 你正在用 Claude Code 写生产代码,想控制 token 成本。
- 你在评测不同 Agent 或 prompt 模板的效果,需要客观指标。
- 你在开发 Agent 工具链,需要调试 agent 内部行为。
完整 Skill 结构(SKILL.md 示例)
下面是一个你可以直接复制到项目根目录的 SKILL.md,把这个技能文档化和自动化。
# 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
agentsview stats
查看指定 session 文件
agentsview stats --file ~/.claude/sessions/2025-04-01-abc.json
实时看(Agent 运行时也起效)
tail -f ~/.claude/sessions/latest.json | agentsview stream
配置(可选)
创建 ~/.agentsview.yaml:
# 默认 Agent 类型(自动检测)
agent: claude-code
# 输出格式
format: table # table | json | csv
# 别名:给不同 session 打标签方便统计
tags:
- $project_name
- $task_type
集成到 Shell
在 .zshrc 中添加:
alias codestats='agentsview stats --format table | head -40'
与 CI 集成
GitHub Actions 示例:
- 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
这个 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
- src/components/LoginForm.jsx (5 edits, 22s)
- src/utils/validation.js (2 edits, 12s)
```

差的做法 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 的成本
#!/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 做趋势分析
agentsview stats --format csv --all > report.csv
这样你可以看每天 token 消耗趋势、tool 调用分布。
3. 与终端仪表盘组合
# 每 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 里:
- 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 后:
# 收集 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)。
如果你也想自己写一个类似工具,可以借鉴这个模式:
// 核心抽象
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,然后统一分析。

这就是 agentsview 能做到支持 20+ Agent 还能保持高性能的设计核心。
写在最后(其实不是总结)
这篇文章没有“综上所述”。我想让你拿走的是:
- 一个能立刻装上用的工具:
go install github.com/kenn-io/agentsview@latest然后agentsview stats。 - 一个可复用的 SKILL.md 模板:直接贴到你的项目里,团队马上会用。
- 一组组合技巧:批量对比、CI 集成、成本跟踪——每个都能帮你少交学费。
下回有人跟你说“Agent 又乱改代码了”,你直接跑 agentsview stats --format json | jq '.top_files[0]' 甩他脸上。
数据说话,远比感觉可靠。