# 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//.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":""}' \ | python3 ~/.claude/hooks/session-end-log.py tail -1 ~/.claude/log.md ```