直接回答
部分输出必须与已完成且通过校验的结果处于不同状态。界面已经显示部分生成文字时,不能悄悄把它保存为最终答案、让其他功能把它作为完整命令执行,或不作标记就导出。`COVE-LIFECYCLE-01` 描述显式模型生命周期状态,但并未自动定义产品层的部分输出状态。`ANDROID-WORK-CANCELLATION-2026-01` 说明 WorkManager 取消需要协作处理,也不保证任意原生任务瞬间停止。`FUNCTION-01` 将模型生成的操作定义为提议,这也说明下游动作必须先校验输出。 连接 UI 之前先定义结果状态机。可用状态包括未开始、运行中带部分内容、停止中、中断、等待校验、完成、拒绝和失败;只选择产品真正需要的状态。每种状态都要定义哪些文字可见,能否复制、保存、导出、再次摘要或用作工具输入。保持生成字节和被应用接受的结果有别。如果解析器要求完整 JSON,对话输出被截断而缺少闭合结构时,即使前缀看起来合理也不是可执行结构化结果。 给任务分配稳定编号和输出修订号。新任务开始后,旧任务的延迟回调不能覆盖新状态。每个输出片段要关联产生它的运行并说明是否已通过结构或语义校验。取消时停止 UI 收集器,通过文档规定的方式请求底层工作取消,在安全条件下释放所有者资源,并将保留文本标成部分结果。不能假设取消协程或 Worker 代表原生推理已经停止。进程死亡也会清除内存中的部分状态;只持久化确实能够安全恢复的内容,否则明确恢复为中断状态。 下游动作需要单独门控。用户可以查看部分文字,但结构化操作、医疗摘要或数据导出仍要符合产品的验证和确认规则。若产品允许用户主动保存部分内容,就应作为草稿保存,并保留未完成标记。重试时可以从头开始,只有运行时和数据契约明确支持续接才可继续生成,不能凭空假设可恢复。提供丢弃、查看片段或重试等清楚选项,并保持原始输入不可变。 在多个边界注入打断:首个 token 之前、生成短片段后、解析器等待结构闭合时、校验后持久化前、导出中、Activity 重建时以及后台工作被停止时。还要覆盖重复回调、事件乱序、空分块、最终输出损坏和用户连续点击重试。确认旧任务延迟事件不能将任务标成完成。自动化使用合成样例而非私人对话;记录任务编号、状态转移、校验结果、取消请求、清理结果和界面呈现。 最终报告应能看出生成了什么、验证了什么、用户批准了什么、实际持久化了什么。部分片段不证明任务完成。对状态归约器的单元测试不证明原生计算已经停下。排除所有中断运行后得到的总体成功结论会有偏差。本文关注可信状态和用户控制,不评价模型质量、速度,也不承诺每种中断都能续接。
用户在流式草稿尚未完成时点击停止
界面已显示数句话,用户点击停止。延迟回调可能仍会到达;若无状态标记,用户可能将片段当成经过验证的完整答案复制或导出。
决策
立即把结果标记为部分输出,拒绝被取消任务的旧回调,并在保存或下游使用前要求显式审核。
预期结果
用户能看到已生成与仍未完成的部分,并有丢弃、查看或新建任务的安全选项。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- COVE-LIFECYCLE-01:项目模型状态和资源所有权
- ANDROID-WORK-CANCELLATION-2026-01:后台取消需要协作清理
- FUNCTION-01:模型动作是待主机校验的提议
任务质量需要有版本记录的语料和验收规则;流畅的单条样例不等于准确度结果。
实施流程
To support this distinction, teams should record and compare three evidence items. A result-state schema defines how output states are represented, interrupted-task fixtures provide scenarios where output is cut short, and a save and resume policy governs how incomplete material is preserved across sessions. Together these items enable consistent evaluation.
- 定义结果状态及可用操作. 为运行中、部分、中断、待校验、完成、拒绝和失败编写状态表,并决定每种状态能否复制、保存、导出或用于下游。
- 将输出绑定到任务和修订. 为每次运行分配稳定编号并拒绝旧运行的延迟事件;保留片段顺序,并将校验状态关联到确切输出版本。
- 实现协作式取消. 停止 UI 收集,通过文档化接口请求任务/运行时取消,释放由应用拥有的资源,并让任何保留输出继续标记为部分。
- 门控持久化和下游使用. 最终操作前要求结构校验和用户确认。若允许保存部分结果,必须作为明确未完成的草稿保存。
- 注入打断和事件竞态. 在不同阶段取消、重建界面、停止后台任务、打乱回调并连续重试两次,确认旧事件不能完成或覆盖新任务。
验收标准
- 部分、完成、拒绝和失败结果在界面状态与持久化中有不同表示。
- 被取消/打断任务不会被延迟回调完成或覆盖;清理结果有观测证据,不假设原生任务立即停止。
- 下游动作不会把未校验片段当最终结果;报告记录任务标识、状态转移及失败用例。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 部分生成文字 | 带未完成状态的可见草稿 | 可以查看,但不能呈现为已验证最终结果。 |
| 已校验最终结果 | 通过结构/任务检查的输出 | 仅可按产品规则及必要用户确认进入后续流程。 |
| 持久化用户草稿 | 明确保存部分内容为草稿 | 保留状态和来源,不会悄悄升级成完成记录。 |
需要避免的失败模式
- 把已显示片段直接保存为完成结果
- 以为 UI 停止代表原生推理立即停止
- 让旧任务延迟回调覆盖新任务
Common pitfalls include marking partial output complete, which conflates unfinished material with final results, and executing incomplete structured data, which treats unvalidated output as if it were reliable. Release wording should remain limited to evidence that has actually been recorded, avoiding claims that extend beyond what these recorded items demonstrate.
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
停止 UI 是否证明原生推理已经停止?
不能。UI 收集、协程取消、Worker 停止信号和原生计算是不同状态。应遵守运行时契约并记录实际观察、资源清理、重试状态和任务标识。
部分 JSON 前缀看起来有效,可以执行吗?
不可以。需先验证完整结构、解析、策略和必要的用户确认;看似合理的前缀不是已验证操作、完整数据或可执行命令,需验证重试。
部分结果应该自动删除吗?
按明确产品保留策略处理。若用户可保存,应标记未完成,并与完成历史和下游动作分开,不能默认升级、导出或触发操作。需说明清理时机。