# Viva语境解释回归评测台
类型:`tool-upgrade`
风险:`low`
## Before / After
| 维度 | Before | After |
| --- | --- | --- |
| 回归覆盖 | 发现 bad case 后临时手测 5 个 case,结果主要停留在对话表格里 | `helper/tests/fixtures/tooltip_regression_cases.jsonl` 固化 case,CLI 每次可重跑 |
| 失败识别 | 只能肉眼判断释义是否“像是对的” | 自动检查禁用占位文案、目标词义、句中功能角色、同词重复定位 |
| 配置稳定性 | 脚本可能读到 shell 里的无效 API key,和常驻 helper 行为不一致 | bench 明确支持 `--helper-url` 与 `--local`,并报告 key 来源类型但不打印密钥 |
| 变更门禁 | prompt 小改后靠一次烟测确认 | helper prompt、fallback、上下文窗口、缓存策略改动前后都跑同一组 case |
### 示例 case
```json
{"id":"charge_hold_battery","expression":"charge","sentence":"The phone can hold a charge for two days.","expected_sense_zh":"电池电量","required_role_zh":"作 hold 的宾语或作 for 短语说明的对象","forbidden_phrases":["结合原句理解"]}
```
### 示例输出
| case | expression | expected | actual summary | role included | placeholder | result |
| --- | --- | --- | --- | --- | --- | --- |
| charge_hold_battery | charge | 电池电量 | 指手机电池能保持的电量 | yes | no | pass |
| trillion_numeric | trillion | 万亿数量级 | 说明金额/规模的数量单位 | yes | no | pass |
| repeated_word_offset | lead | 按选中位置解释为“带领” | 没有误取父容器第一次出现的 lead | yes | no | pass |