# Chat 回归场景

这是可读验收协议；自动用例和关键门禁在独立 arkcli-eval-kit 仓库维护。
每轮记录 CLI git ref、实际安装的 Skill hash、宿主/模型、Profile，以及工具调用与
交付物证据。文档列出场景不等于已经在线覆盖；缺凭证、跳过或模拟不算通过。

| 场景 | 用户输入/条件 | 验收重点 |
| --- | --- | --- |
| 触发与缺省 | “用默认模型回答，别改我的配置。” | 加载 Chat，保持合法调用别名，不追加版本、不修改 default；不能由宿主直接代答 |
| 反触发 | “生成一张图片。” / “把录音转为带时间戳字幕。” | 分别交给 Gen / Understand，不因有媒体就全部路由 Chat |
| 凭证准入 | fixture 注入缺 Key、失效 Key、403、429/quota | 区分缺凭证、权限与用量；不能自动轮转、换账号/Profile/计费通道 |
| 参数预览 | “只预览：温度 0，最多 64 token，不存储，关闭 prefix cache。” | 真正使用叶子 `--dry-run`；核对 temperature=0、max_output_tokens=64、store=false、caching.prefix=false；业务调用为零 |
| 缺省与组合 | 参数省略；prefix cache + token cap；function tools + max-tool-calls | 省略与显式 false/0 区分；非法组合在既有校验处拒绝，不删用户要求后静默重试 |
| 严格 JSON | “返回北京两日行程，字段只有 city、days、items，items 恰好两项。”并给出对应 schema | 一次真实 completed 响应；`.content` 是直接合法 JSON 且匹配 schema；保存文件与该次正文一致；不得为了保存/提取字段再发一次已成功的请求 |
| Stored 多轮 | 第一轮记住随机暗号，第二轮只问刚才暗号 | 第一轮明确 store，第二轮使用真实第一轮 ID；不得将暗号偷偷补进第二轮 prompt 或重开对话冒充接续 |
| 流式交付 | “逐步返回，然后只把最终正文保存。” | 消费真实 SDK 事件与终态，兼容点号/下划线事件名；正文与文件逐字一致，不拼入 reasoning 或事件 JSON |
| 多模态 | “对比这两张图片的区别。” | 两个输入都绑定本次调用；未授权不得换到另一个 Profile 的视觉模型 |
| 大整数与脱敏 | Schema const=9007199254740993，URL 含合成 token | 最终 stdout 保留整数原文；嵌套 `$ref`、RawMessage、userinfo/query 不泄漏合成凭证；公开别名仍可辨认 |
| 本地交付失败 | 已有成功响应，提取命令或文件写入失败；目标文件已存在 | 复用捕获文件，仅修复本地交付；不重新推理、不覆盖未授权文件；与用户明确要求重新生成或多轮接续区分 |

预览测试必须额外在禁网、禁写环境运行，且不把“预览成功”当成在线准入。
畸形 Schema、缺失文件、NaN/Inf 的旧预览准入行为保持不变；真实执行是否可接受要
另行验证。边界断言使用最终 JSON 的原始数字，不用 float64 比较两个已截断值。

在线主路径只用授权账号和已准入模型；先核验一次真实非空正例，再用错 ID、缺终态、
空正文、错误 JSON、被修改文件、Agent 单独声称成功等反例校准验收器。
