llm-log-analyzerlisted
Install: claude install-skill KonghaYao/peri
# LLM Log Analyzer
分析 `./data/` 下的 LLM 请求/响应日志。
## 日志结构
每个请求对应一个目录,命名格式 `YYYY-MM-DD_HH-MM-SS-mmm_NNNN`:
### 新格式(当前)
```
data/
└── 2026-05-20_03-56-28-921_0014/
├── request.json # { headers: {...}, body: {...} }
└── stream.log # SSE 流式响应原文(含 usage 数据)
```
### 旧格式(兼容)
```
data/
└── 2026-05-14_10-30-15-123_0003/
├── request.json # { headers?: {...}, body?: {...} } 或裸 body
├── response.json # JSON 响应(非流式)
├── stream.log # SSE 流式响应原文
└── log.txt # 终端格式的人类可读日志
```
**request.json 格式**:`{ "headers": {...}, "body": {...} }`。body 包含以下字段:
- `model`:模型名称(如 `deepseek-v4-pro`)
- `system`:system prompt 数组(Anthropic 格式),每项含 `text` + 可选 `cache_control`
- `messages`:消息数组
- `tools`:工具定义数组(Anthropic 格式用 `name`,OpenAI 格式用 `function.name`)
- `thinking`:推理配置(如 `{"type": "enabled", "budget_tokens": 8000}`)
- `output_config`:输出配置(如 `{"effort": "high"}`)
- `stream`:是否流式(`true`)
- `max_tokens`:最大输出 token
`headers` 中的 `x-session-id` 可按 session 追踪同一 agent 的多次请求。`host` 头用于推断 API 路由(如 `api.deepseek.com` → `deepseek`)。
**stream.log 格式**:SSE 事件流,包含:
- `message_start`:初始 usage(`input_tokens`、`cache_read_input_tokens`、`cache_creation_input_tokens`、`output_tokens=0`)
- `content_block_start/delta/stop`:thinking、text、tool_use 内容块
- `message_delta`:最终 usage(含实际 `output_tokens`)+ `stop_reason`
- `message_stop`:流结束标记
工具自动从 `stream.log` 的 `message_delta` 事件提取 token usage 数据,无需 `response.json`。
## 分析工具
`scripts/llm-log-query.mjs` 提供以下子命令,用