Files
claudeplus/hooks/session-end-log/README.md
Zhang Jiahao 23c7037b57 Add session-end-log hook with per-session token tally
既有 Stop 钩子 token-stats-hook 记的是跨会话累计快照, 无法区分"这次会话
用了多少"; session-end-log 在 SessionEnd 时按 session_id 解析本次 transcript
做单会话统计, 产出一行可回溯的索引写入 ~/.claude/log.md, 方便事后盘点
哪场会话烧了哪些 token。Python 写零依赖, Ubuntu 自带 python3 免构建。
2026-04-21 00:58:00 +08:00

52 lines
1.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# session-end-log
Claude Code SessionEnd hook每次会话结束时在 `~/.claude/log.md` 追加一行元数据 + token 用量。
用 Python 编写零依赖Ubuntu 自带 `python3`)。
## 输出格式
```
- 2026-04-21T00:55:30 | session=353cbdc1 | cwd=/home/charles | reason=clear | tokens=total:592.7k in:39 out:3.7k cache_r:558.2k cache_w:30.7k
```
字段:
- `reason``clear` / `logout` / `resume` / `prompt_input_exit` 之一
- `session`session_id 前 8 位
- `tokens`:读取该会话的 transcript`~/.claude/projects/<slug>/<sid>.jsonl`)按 `type=assistant` 的 usage 累加transcript 读不到时降级为 `tokens=unavailable`,不阻塞会话退出
## 安装
```bash
mkdir -p ~/.claude/hooks
cp hooks/session-end-log/session-end-log.py ~/.claude/hooks/
chmod +x ~/.claude/hooks/session-end-log.py
```
然后在 `~/.claude/settings.json``hooks` 下加入(与现有 `Stop` 等共存):
```json
{
"hooks": {
"SessionEnd": [
{
"hooks": [
{
"type": "command",
"command": "python3 ~/.claude/hooks/session-end-log.py 2>/dev/null || true"
}
]
}
]
}
}
```
## 测试
```bash
echo '{"cwd":"/home/charles","reason":"test","session_id":"<real-session-id>"}' \
| python3 ~/.claude/hooks/session-end-log.py
tail -1 ~/.claude/log.md
```