# Night Gym agent_reflections 提取与脱敏质量门禁
## Reflection Ingest 质量门禁样例
### Before
`input.json` 只有 `user_messages`、`assistant_messages`、`event_messages`。Master 需要从大量日志里猜哪些是 agent 自述瓶颈,容易漏掉“最耗时/最困难”的真实摩擦点。
更糟的是,脱敏正则如果把 `Bearer xxx,后面是瓶颈描述` 一整段吞掉,morning review 会同时失去敏感字段保护的可验证性和 evidence 的完整性。
### After
新增固定门禁:
| 检查项 | 输入样例 | 成功信号 | 失败信号 |
|---|---|---|---|
| 字段存在 | 任意有效 session | `agent_reflections` 总是数组 | 字段缺失或为 null |
| 只提取瓶颈 | `这个像素对比最耗时,应该做诊断工具` | 进入 `agent_reflections` | 被普通进度日志淹没 |
| 过滤噪音 | `我现在开始读文件` | 不进入 `agent_reflections` | 普通状态播报被收录 |
| 脱敏不截断 | `Bearer sk-test,像素检查很耗时` | 输出 `[REDACTED_SECRET],像素检查很耗时` | 中文逗号后的正文消失 |
### 建议本地验证
```bash
cd ~/Documents/product-bu/tools/night-gym
/usr/bin/python3 -m unittest discover -s tests
/usr/bin/python3 -m py_compile night_gym/*.py
```
### 预期收益
这个门禁让 Night Gym 的新闭环从“prompt 约定”升级为“可回归的输入契约”:agent 自述瓶颈会稳定进入 morning review,诊断工具候选有明确结构,脱敏规则也不会破坏 evidence。