直接回答
首次打开需要下载端侧模型的应用时,应先把下载作为一项清楚、可撤回的设置选择,而不是打开应用后悄悄启动的副作用。传输开始前,界面应说明将获取哪个模型或资源包;只有版本化清单或代码配置提供了可信数值,才展示具体文件体积;同时说明用户能做哪些网络与存储选择、能否暂缓或取消,以及模型缺失时还可以使用哪些功能。若无法确认文件大小,就应明确表示未知,而不能从参数量估算一个看似精确的数字。若没有测量依据,也不要承诺几分钟内下载完成;字节数不是时间预测。 首次下载与下载中通知不是同一个问题。首次流程发生在传输之前,回答“现在是否开始、使用什么连接、用户要承担什么后果”;进度通知则发生在用户决定开始之后。只显示一个“继续”按钮,却不说明模型身份、体积依据、网络策略和取消方式,并不构成有意义的知情选择。按钮点击之后,也不能把尚未实现的后台行为、网络开关或存储回收方案伪装成已经具备的能力。每一个选项都应连接到真实、经过测试的状态转换。 界面应把应用安装、用户同意、任务排队、网络连接、下载字节、完整文件、文件校验、运行时初始化和任务就绪拆成不同状态。模型依赖缺失时,仍可显示解释设置的页面或其他不依赖模型的功能;但只有真正通过相应检查后,才允许调用需要模型的任务。文件传输成功只说明字节已经到达,不能证明其身份正确、内容完整、运行时能加载或具体任务可以执行。重新打开应用时,也要把保存的进度与磁盘上实际文件重新核对,避免恢复过期的“已完成”提示。 显示体积时,必须知道数字具体代表传输字节、最终文件大小还是其他定义。清单或配置应与明确模型版本绑定;模型更新后,旧版本数字不能继续冒充新版本事实。参数数量不能代替文件字节数;压缩、分片、临时副本、应用包和运行时缓存也可能让不同口径的数字产生差异。页面可以解释这些口径,但若产品没有测量数据,就不能推测安装后的总占用空间。体积未知时可以诚实说明暂时无法确认,并给出待核验的信息,而不是填入营销式估值。 网络选项也要忠实反映实现。若应用支持计量网络策略或用户覆盖,应在首个请求之前展示并记录用户选择,之后按该选择执行。若产品尚不能可靠地提供 Wi-Fi/移动网络切换,就不能摆出一个无效的选择器。存储预检查、取消和稍后重试等能力也一样;在对应测试未覆盖之前,不应暗示它们必定保留部分文件或一定清理临时文件。用户需要看到当前真实的可选操作,而不是理想设计稿中的承诺。 项目事实说明当前下载器会进行存储预检查、写入临时文件、请求 Range 续传、报告字节进度、在配置摘要存在时执行可选 SHA-256 校验,并在完成后尝试重命名。这些代码事实能帮助描述阶段,却不能证明下载一定在后台完成。Android 官方指南区分持久后台任务与只存在于当前进程中的任务。如果产品写着“离开页面后继续”,就必须验证真实调度机制、网络约束、取消、通知以及进程重建;否则应准确说明当前支持的应用内行为,不要让用户把关闭页面理解成仍会继续下载。 对于首次使用场景,至少要验证暂不下载、开始前取消、下载中取消(若支持)、切到后台、进程被回收、网络中断、空间不足、校验失败、运行时加载失败等路径。每种失败都应有明确的可恢复动作,不能把部分文件显示为可用模型。恢复时应重新核实文件身份,而不是只看文件存在或数据库里的成功状态。若模型是某项任务的前提,说明该任务何时才可使用;若应用还有其他本地功能,就不应让没有模型的用户误以为整个应用完全不可用。
网络受限时的首次设置
用户在出行途中首次打开离线助手,模型尚未安装,想先了解体积依据、网络影响和是否可以暂缓。
决策
只展示由版本清单或代码配置支持的信息,并在发起传输前提供开始、暂缓和取消选择。
预期结果
用户可以离开设置而不触发隐藏任务,并能在返回后看到经文件核对的传输、校验、加载和就绪状态。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- 事实卡 COVE-MODEL-01 与 COVE-DOWNLOAD-01;本地 ModelConfig 和 ModelDownloader 的配置与阶段行为。
- Android 官方持续后台任务及网络访问指南。
收到完整字节流还不够;最终落盘、完整性、运行时加载和恢复路径也必须验证。
实施流程
- 梳理模型依赖. 逐项确认哪些页面不依赖模型,哪些任务依赖指定版本,并用实现代码和测试样例验证边界。不能仅凭模型文件存在或商店描述推断应用具备离线能力。
- 追踪体积来源. 将显示的字节数绑定到有版本的模型清单或配置,并说明它表示传输量还是目标文件大小。数值缺失或过期时显示未知,不从参数量推测文件体积或下载时间。
- 传输前展示真实选项. 在第一个请求之前展示开始、暂缓和取消,并说明当前实际执行的网络政策、存储预检查和撤销方式。任何无法由当前构建执行的网络选择器都应移除。
- 分离就绪状态. 分别记录同意、排队、接收字节、文件校验、运行时初始化和任务可用。应用重启后把记录与实际文件对照,不能照搬旧的百分比或完成提示。
- 验证拒绝及错误路径. 测试不下载、取消、后台切换、进程重建、断网、空间不足、校验失败和运行时加载失败,为每一种结果写明用户可执行的恢复动作。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 首个网络请求发出前,界面说明工件身份、体积来源、网络政策及开始、暂缓和取消选项。
- 选择暂缓后不会偷偷排队;用户稍后返回时看到基于实际文件核对的状态,而非过期同意。
- 下载、校验、运行时加载和任务就绪分开展示,失败阶段有可恢复操作。
- 声称后台继续前,实际调度器、约束、取消和进程重建行为均有测试。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 立即开始 | 模型与网络、存储选择均已交代时。 | 开始请求不等于模型已就绪,后续阶段仍需分别展示。 |
| 暂缓 | 用户希望先使用其他功能或等待合适连接时。 | 暂缓不能在后台消耗流量或悄悄获得新的下载同意。 |
| 取消 | 传输已开始且应用实际支持取消时。 | 需要准确说明部分字节保留或清理规则,不能未经测试承诺。 |
需要避免的失败模式
- 不得根据参数量猜文件大小或下载耗时;未知的数值应透明显示未知。
- 不得把应用安装、文件下载完成或通知存在说成模型已经就绪。
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
下载前是否必须阻止所有页面?
不必。只阻止确实依赖缺失模型的任务;设置说明和安全的非模型功能仍可开放,并应把模型任务清楚标记为当前尚不可用。
首次流程能承诺固定下载分钟数吗?
只有具备代表性测量及误差说明时才可以。文件大小不能预测个人网络吞吐、断连、存储写入和校验时间;缺少数据就应避免固定完成承诺。
下载完成后模型就可以推理吗?
不能据此判断。文件还可能需要完整性校验和运行时初始化;只有目标任务所需的检查通过后,才可以展示任务已经就绪。