模型交付

分别验证模型文件长度、摘要、结构和加载

用分层证据描述模型文件状态,避免把存在、长度、摘要和运行时成功合并成一个真假标记。

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

直接回答

模型文件完整性是一组分层证据,不是单一布尔值。文件存在只说明路径可见;精确长度可发现某些截断或错文件;可信摘要可以证明字节与预期发布对象相等;格式解析器检查结构规则;运行时加载则说明某个特定实现接受了候选。每项结果范围不同。只有预期摘要绑定到准确制品并通过可信发布渠道取得时,它才有意义。如果摘要缺失,不要称文件“哈希已验证”。运行时加载通过也不能推出所有任务正确或所有设备支持。 当前项目中,E2B 预期文件长度已配置但 SHA-256 为空;E4B 预期大小和摘要明确是占位值。ModelDownloader 在配置摘要为空时跳过摘要验证,并在下载流程完成后尝试提升临时文件。ModelManager 随后查找模型文件并尝试初始化推理引擎。这些代码事实说明“下载完成”“文件存在”“摘要已校验”和“运行时已加载”不能合成一个产品徽标。没有预期摘要的配置,其状态应是“摘要检查不可用”,而不是“校验通过”。 清单应针对最终字节,而不是模型家族。记录源仓库与修订、最终格式、文件集合、预期长度来源、预期摘要及生成方式、转换身份和运行时要求。如果包包含分词器或模型元数据等伴随文件,要将它们列入清单,或建立独立身份并明确包关系。压缩归档摘要并不必然等于解压文件摘要;应标出每个摘要覆盖的具体对象、算法及规范化表示,并在摘要之后避免变换字节。 计算过程应流式处理大型文件,不要把整个文件读入内存。使用稳定文件句柄或锁,防止摘要计算过程中并发写入改变字节。下载后、激活前验证最终文件。如果安装阶段把文件复制到另一目录,还需检查目标副本;源文件验证不能证明后续复制完整。临时路径和活动路径必须分开管理,不能通过静默截断一个可能有效的制品来“修复”。 检查失败时要区分状态:预期长度未知、长度不匹配、摘要不匹配、解析器拒绝、运行时拒绝及任务验收失败。按策略只隔离候选文件,保留不含用户内容的诊断和最后已知可用模型。匹配摘要不能证明许可或来源,前提是摘要本身可信。TLS 传输也不能代替制品摘要。反过来,缺少摘要不自动意味着文件损坏;它表示少了一层保障,发布策略应决定剩余校验是否足以支持有限的内部测试。 使用受控夹具验证流程:已知正确字节、截断文件、等长度但改过字节的文件、错误预期哈希、另一修订的清单、伴随文件缺失、解析头无效和运行时拒绝。测试不仅要确认错误显示,还要确认无效候选不能激活或导致用户数据被删。对外说明应只报告实际证据,不能把单次主机测试泛化为设备兼容。 ### 操作步骤 1. 明确检查对象:源文件还是最终包、修订、格式、伴随文件、存储位置,以及预期值来自清单的哪个字段。 2. 独立验证长度和摘要。记录预期值来源、算法、目标文件,以及摘要是在任何转换前还是之后计算。 3. 解析包结构并检查伴随资源。解析结果和文件身份分别记录;结构有效但属于错误修订仍须拒绝。 4. 用目标运行时加载已验证候选并记录初始化。只有制品检查后才运行代表任务,且每个阶段分别保存结果。 5. 测试不匹配及恢复夹具。仅隔离失败候选,保留活动模型和用户资料,并明确显示摘要不可用,而不虚构校验成功。 ### 验收标准 - 文件存在、长度、可信摘要、包解析、运行时加载和任务验收分别表示。 - 摘要缺失或占位时不得称已验证,并记录预期值来源。 - 最终字节以及任何安装副本都需针对正确清单对象在激活前检查。 - 无效候选不能替换活动模型或触发无关用户数据删除。 ### 对照 | 检查 | 可以发现什么 | 单独不能证明什么 | |---|---|---| | 文件长度 | 某些截断及错对象情况 | 字节相等、发布者身份或可加载 | | 可信密码学摘要 | 与预期字节序列相等 | 许可、运行时兼容或任务质量 | | 运行时加载 | 所选运行时接受了这个候选 | 用户任务正确、设备系列支持或制品来源 | ### 常见问题 **模型文件存在且大小正确就算完整验证吗?**不算。长度只能发现部分问题,不同字节也可能相同长度。应在有可信摘要时核对,再解析并加载确切包。 **空校验字段是否能当成检查通过?**不能。它表示没有预期摘要,摘要比较根本没运行。应标记不可用,而不是已通过。 **SHA-256 匹配能证明许可或兼容吗?**不能。它只在预期值可信时证明字节相等。来源、许可、格式、运行时和任务验收都需要单独记录。 **多 GB 文件如何计算摘要?**使用有界缓冲区流式读取并防止并发修改,同时明确摘要覆盖的是归档、最终包还是解压组件。

文件存在,但预期哈希字段为空

候选模型已下载到本地;应用发现预期文件名与看起来合理的长度。配置没有预期 SHA-256,因此团队必须描述当前验证状态而不过度承诺。

决策

分别报告长度与文件存在检查,把摘要标为不可用,再按发布策略执行包解析和运行时/任务检查。

预期结果

候选按明确范围被接受测试或继续标未验证,不会显示虚假的“摘要通过”。

需要收集的证据

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

  • 确切制品和清单对象
  • 长度与摘要的来源
  • 解析、加载和任务阶段结果

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

实施流程

  1. 定义检查对象和清单范围. 说明预期元数据覆盖下载包、压缩归档还是解压组件,并在校验字节前绑定来源修订、格式与伴随文件;同时标明每个摘要具体覆盖哪个文件对象。
  2. 分开检查长度和摘要. 记录长度与摘要期望值来源。字段为空或占位时明确标不可用;只有存在可信发布值才执行摘要比较,并在记录中注明算法和校验阶段。
  3. 避免验证期间内容改变. 用单一写入所有者或稳定句柄计算摘要;锁定候选避免并发写入,文件复制或安装移动后重新检查目标对象并记录验证结果。
  4. 分别运行解析和加载阶段. 检查格式结构后,用目标运行时初始化确切候选。结构解析通过不能代替运行时结果;分别保存失败阶段、运行时版本和恢复动作。
  5. 安全拒绝并保留恢复. 用已知字节夹具覆盖截断、同长度改字节、错哈希和格式错误。只隔离候选,保留活动模型与用户内容,并验证失败后可恢复到最后已知可用制品。

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

验收标准

  • 缺少摘要时记录为不可用,而不是验证成功。
  • 长度、摘要、解析、运行时及任务结果均绑定确切制品并分别记录。
  • 安装复制目标在激活前按对应清单重新校验。
  • 不匹配候选不能替换工作模型或删除无关用户内容。

决策对照表

维度选择或证据解读方式
预期长度大小检查能发现部分截断,但无法发现所有同长度内容变化。
预期摘要字节比较只有摘要来源可信时比较才有意义。
运行时加载实现检查只说明某运行时接受候选,不能证明来源或任务质量。

需要避免的失败模式

  • 把空摘要字段当作校验通过
  • 用文件长度代替哈希
  • 源文件验证后不再检查安装副本

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

最小复现记录

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

发布检查表

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

来源与相关证据

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

常见问题

预期文件名和大小正确就证明模型完整吗?

不能。不同文件可能同名同长。使用可信摘要(若可用)、检查包结构并单独加载确切制品;长度只能发现部分截断和错误传输。

空摘要字段算通过吗?

不算。它表示预期摘要不可用,因此摘要比较没有执行。状态必须写成不可用,而不是已验证,并说明少了一层保证与剩余风险。

SHA-256 能证明许可与兼容性吗?

不能。可信摘要只验证字节与预期值一致。许可、来源、包解析、运行时兼容及任务验收仍要分别审查,不能从摘要推出授权结论。

怎样对大型模型文件做哈希?

使用有界缓冲区流式读取,并阻止并发写入;同时记录摘要对应压缩包、最终包还是解压后的组件,并复核安装副本与路径。