# 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
```
