模型交付

设计离线 AI 应用的空状态

空状态要说明缺少什么和用户能做什么,不应伪装成统一错误页。无模型、无输入、无历史、不支持的任务和操作失败分别需要不同解释、来源状态与下一步,也不能静默开始大文件下载。

审核状态: 内容已校验;中文稿供用户审核 · 2026-10-05 · Fact IDs: ARCH-01, COVE-DOWNLOAD-01

直接回答

空状态应说明当前缺少什么,以及用户下一步能做什么;它不应该是一个通用错误页。“没有模型”“没有输入”“没有历史”“任务不可用”和“操作失败”代表不同的情形,原因与行动也不同。良好的离线 AI 界面会把状态讲明,保留仍可使用的导航,并且不把工件缺失当成下载同意。如果当前任务必须依赖尚不存在的模型,应说明依赖关系,并只提供产品实际支持的选择,例如查看说明、选择来源、在下载和网络/存储影响说明后开始设置,或继续使用非模型功能。 要区分“本来就没有数据”和“执行过程坏了”。第一次使用时没有对话历史可能是正常状态;没有选择照片可能表示用户还没有提供输入;模型缺失可能需要由用户决定是否设置;权限被拒需要系统权限操作;任务不支持意味着没有可执行路径;加载失败则代表先前操作未完成。如果所有状态都显示“发生错误”,用户就不知道应该输入内容、安装模型、授予权限、重试还是联系支持。相反,如果数据库读取失败或数据丢失,却显示“这里暂时没有内容”,空状态也会掩盖真正的故障。 在撰写文案前先定义每项任务的依赖。对于每个功能,记录是否需要模型、相机或麦克风权限、用户输入、本地历史、网络连接,或多个条件共同满足。再为各项必要条件定义明确界面状态。本地推理消除了远程推理服务器依赖,但不代表所有页面都能离线工作,也不代表应用没有其他服务调用。只有输入、工件、运行时路径和本地数据都已满足时,单项功能才可能离线可用;本文不声称 Cove 的任意具体功能目前已具备这些条件。 主要按钮要根据实际缺少的内容来设计。没有输入时,邀请用户从支持的方式选择、拍摄或导入内容;没有历史时,说明首个任务成功后才会出现结果,并提供安全的开始方式;缺少必要模型时,在首个请求前说明传输、网络和存储影响;任务不支持时,不应提供永远无效的重试按钮,而要解释限制并引导用户使用可用功能;操作失败时则应说明失败阶段和恢复选项。每个按钮都必须连接到当前实现的状态转换,而不是希望将来的功能。 空状态可以采用统一视觉结构,但信息必须清楚。简短标题描述状态,正文说明功能为何暂时不可用,主按钮启动一个真正有效的下一步。与数据安全不冲突时,仍应允许用户使用设置和其他导航。屏幕阅读器用户也应得到与视觉用户同样明确的状态区分:为组件提供无障碍标签和语义描述,不要只用颜色或图标表示状态。加载动画只应表示实际正在发生的工作,不能代表空数据库或不存在的模型。 要用事实来源重新核对 UI 状态。进程重建后,缓存的模型状态可能已经过期;应读取管理器或仓库的真实状态,而不是假设上个页面的内容仍正确。空历史列表也必须与数据库访问错误区分。下载占位文件不可显示为就绪。全新安装、应用更新、用户取消、权限撤回、存储卷丢失和模型加载失败会导致不同转换;页面必须随着转换更新,不能沿用过期成功提示。

取消模型设置后再次返回

首次用户取消模型下载后返回,应用没有历史、模型或输入。此情形属于可解释的空状态,但不应偷偷重新排队传输。

决策

分别呈现缺少模型和缺少输入,只提供有披露的设置或输入操作,同时保留安全的非模型导航。

预期结果

用户理解任务为何暂不能运行,并可以自行选择下一步,而不会丢失设置或被隐式要求下载。

需要收集的证据

只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:

  • 事实卡 ARCH-01、COVE-DOWNLOAD-01;离线推理和模型下载之间的依赖边界。
  • Android UI 状态、offline-first 与 Compose 无障碍语义官方指导。

收到完整字节流还不够;最终落盘、完整性、运行时加载和恢复路径也必须验证。

实施流程

  1. 盘点任务依赖. 逐个界面列出模型、输入、权限、历史、本地数据和网络条件,标出哪些是必需、哪些可选,避免不必要封锁其他功能。
  2. 定义不同状态转换. 将无输入、无历史、缺模型、权限拒绝、不支持任务、加载和失败分开表示,并记录触发进入或退出状态的真实事件及其来源。
  3. 按原因提供真实操作. 输入缺失时邀请选择内容,模型缺失时先披露设置,权限拒绝时连接系统权限动作,不支持的任务则指向确实可用的替代功能。
  4. 保留其他可用路径. 在安全情况下仍允许进入设置、说明和不需要模型的功能。单一任务缺少工件不应无依据地阻挡整个应用。
  5. 提供无障碍播报. 每种状态都有语义标题、屏幕阅读器播报、可见操作名称和含义描述;不得只靠颜色、插画或动画传递信息。
  6. 测试首次与恢复路径. 覆盖初装、无输入、空数据库、取消设置、进程重建、权限撤销、模型缺失、加载错误和首个任务成功,确保界面不静默启动工作或掩盖错误。

让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。

验收标准

  • 没有输入、没有历史、缺少模型、不支持、权限拒绝、加载和失败分别可见且可诊断。
  • 空页面不会未披露即安排模型传输或消耗网络。
  • 没有明确前置条件阻断时,模型无关导航仍可访问。
  • 辅助功能能播报状态和操作,不只依赖颜色或动画。

决策对照表

维度选择或证据解读方式
无输入尚未收到文档、照片或录音。邀请用户通过真实支持的路径提供内容。
无历史还没有已保存的成功结果。解释首次使用并保留安全开始方式。
缺少模型必需工件未安装或未就绪。披露设置影响,让用户选择是否开始。
操作失败已请求的阶段未成功。指出失败阶段并提供经过验证的恢复操作。

需要避免的失败模式

  • 不得把所有空数据都显示为同一种错误,也不得让友好插画掩盖真正的数据库或加载失败。
  • 不得在用户未选择的情况下启动模型下载,或把单个功能未就绪说成整个应用不可用。

还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。

最小复现记录

层级记录内容
设备厂商、型号、芯片、内存档位、操作系统版本
软件应用版本和 Git 提交号
模型系列、变体、版本、格式、文件长度、摘要、量化方式
运行时名称、版本、请求后端及实际后端证据
工作负载样例版本、输入摘要、提示词摘要、输出策略
结果完成、失败、取消、回退及保护隐私的诊断信息

发布检查表

  • ☐ 主要搜索问题已回答,且没有未经支持的数字。
  • ☐ 所有模型文件和运行时版本均已固定。
  • ☐ 代表性任务和失败处理策略均有说明。
  • ☐ 生命周期、取消、清理和回退均已测试。
  • ☐ 用户内容与网络边界均有说明。
  • ☐ 结论只适用于被记录的配置。
  • ☐ 新增测试结果时链接到原始方法或证据。

来源与相关证据

中文部署与排错专题见。奇连 AI 端侧专题。

常见问题

没有模型时一定要显示错误吗?

不一定。首次安装时这可能是正常设置状态。应解释哪些任务依赖模型及可选路径;只有尝试过的操作失败或状态无法确认时才显示错误。

空页面能否直接自动下载模型?

不能静默启动。如果按钮会发起传输,需清楚说明并遵循真实网络、空间与取消行为;打开或关闭页面不构成下载同意,用户可选择暂缓。

无输入、无历史和无模型可共用一个页面吗?

不应合并成单一原因。它们要求用户提供数据、选择设置或恢复错误等不同操作,混在一起会让人无法判断下一步及对应的安全选择。