# 模型响应短编号与摘要提示修复 2026-10-16。承接真实模型首批因长 hash 抄写错误而失败的问题,用户“继续下一步”后完成本地修复。继续先不发布、跳过真机;本轮没有新增真实模型调用、正式评估重试、生产访问、提交或推送。 ## 问题与结果 上轮真实评估中,模型将产品58/`template_qa_4`的64字符模板摘要抄成65字符,触发严格绑定校验,首批未保存检查点,后五批未执行。原始响应和防重标记保留,不能把修补响应当成真实模型通过。 新评估改为让模型回传同批短编号 `ref`,后端根据冻结批次恢复产品、版本、条件/模板编号和完整摘要,再执行原有校验。模型不再需要抄写长 hash;短编号仍有严格的格式、数量及归属校验,不能保证未来模型输出一定通过。 主报告摘要提示及示例同时清理:要求简短概括已提供的资料,不再要求输出“用户自填、尚未核验、未经核验、未执行产品匹配”等流程说明。不改写用户输入或历史报告,不改变评分和匹配业务规则。 ## 协议与兼容 - 新 `capture()` 冻结 `aiResponseBindingPolicy=batch-item-reference-v1`,标记进入目录和执行摘要;`freeze()` 的新增末参默认关闭,只有显式启用且采用自动分批时才保存标记。 - 每个编号由条件/模板类型、冻结目录与批次的范围摘要、从1开始的批内序号组成。条件和模板各自编号,不能跨批或跨目录复用,也不按返回顺序猜绑定。 - 请求保留产品分组和完整业务文字,移除需要模型复述的版本、条件/模板编号及完整摘要,替换为 `ref`;模板关联条件转换为同产品、同批条件的 `ref`。 - 条件响应只接受 `ref/outcome/evidenceRefs/missingFields`;模板响应只接受 `ref/conditionOutcome/applicable/values/evidenceRefs`。未知、重复、缺项、跨批编号及额外完整绑定字段均拒绝。 - 仅处理真实响应时解码编号。已保存的检查点及最终合并结果仍使用完整绑定,沿用既有校验;不把检查点再次当作短编号响应解析。未知策略即使已有全部检查点也拒绝。 - 保留 JSON 对象与数组形状,禁止把空对象当空数组放行;金额依据、事实引用、三态、模板适用性等原有约束保持。 - 无新标记的旧冻结目录仍用旧绑定协议,历史报告与检查点不升级、不重算。主报告提示清理适用于后续新生成的正文,包括旧任务未来重试;不能宣称旧请求消息字节不变。 - 新协议拒绝写入固定脱敏诊断分类 `RESPONSE_BINDING`,不记录原始响应正文、用户值或任意字段名。 ## 改动范围 后端新增 `application/common/library/ProductAiBindings.php`,修改 `ProductMatching.php`、`ProductAiConditions.php`、`ProductAiTemplates.php`、`AssessmentNeedsReport.php`、`ProductAiBatches.php`、`AiReportDiagnostics.php`,共6修改+1新增。新增4个专项测试入口。 相对本轮开始时的精确快照,252个其他后端 `application` PHP 文件及77个小程序 UTS/UVue文件摘要保持。前序未提交改动全部保留,不改数据库结构、产品条件、表单、任务状态机或收费重试策略。 ## 验证证据 各套件有包含与重叠,不把下列数量相加作为独立断言总数。 | 验证 | 结果 | | --- | --- | | 短编号编解码 | 126项通过,覆盖精确字段、归属、关联、重复/缺项、形状及旧协议 | | 冻结至批次解析流程 | 188项通过;入口另含257项年龄断言 | | 摘要提示 | 70项通过,包含上轮保存资料经实际 prepare/messages 的检查 | | 实际隔离任务链路 | 819项通过,5次显式假模型调用,0次真实调用 | | PHP语法 | 7个运行文件及4个新测试,共11文件通过 | | 原有内存回归 | 条件68、模板89、分批36、grounding81、身份证年龄55、地区68、参考建议59、零金额270、零事实118、匹配151、展示20、脱敏诊断43项分别通过 | 任务链路使用合成产品与资料,通过实际创建、冻结、任务执行、检查点保存、失败续跑、报告持久化及所属用户回读。包含18条本地年龄、18条AI条件、36条模板、2批;完整成功用2次假调用,另一任务在第二批模拟超时用2次假调用,续跑只调用剩余1批。完整绑定稳定,原始空金额、0笔/0张、全部贷款口径及省份保持。 新增任务入口省略精确 `--bootstrap=` 参数即拒绝。默认后端环境指向正式库,不能直接启动应用、任务或worker。一次误选的旧 `product_explanations.php` 入口被隔离守卫拒绝,未执行;展示回归使用正确的 `product_presentation.php`,不把被拒绝的入口列为验收通过。 独立源码审查提出的“完整检查点恢复遗漏未知策略检查”和“列表形状拒绝的诊断分类遗漏”均已修复,并补红绿回归;最终复核未见剩余实质缺陷。 编解码与摘要专项先通过,随后仅补齐计划阶段的未知策略保护;对应编解码和提示代码没有再变动。最终188项流程、819项任务、相关回归及11文件语法验证覆盖了最后的运行源码,不宣称每个早期专项均在最后一处增量后重跑。 ### 原真实响应的离线适配 使用上轮保存的25款配置重新冻结,16条年龄本地处理、66条AI条件、100条模板规划6批。将原首批响应的业务字段显式投影为新短编号协议后,12条条件和16条模板通过,在下一批前主动停止。完整绑定来自新冻结目录。 旧协议仍拒绝原坏 hash 响应,新协议也拒绝直接传入原完整绑定格式。原8份证据文件摘要前后保持;探针保留原摘要文字以单独验证协议,不用它证明摘要文案已改善。此项是离线协议适配,**不是新的模型输出,不代表完整评估通过**。 ### 隔离环境清理 全新本机 MySQL/Redis 仅监听 `127.0.0.1:51878/51879`,独立数据目录、29张合成表和Redis DB15;应用初始化前替换真实模型客户端,显式注入假模型,不启动常驻worker。测试结束29表全空、6个原触发器保留、DB15键数0;任务前后259个运行PHP摘要一致。 核对进程PID、创建时间、程序及完整命令行归属后,正常关闭本轮两个服务,进程退出、端口释放,datadir保留。生产进程未改。准备隔离环境时发生最后一处策略保护修正,任务执行前另存最终源码基线 `runtime-sources-before-tasks.json`;初始准备基线仍保留,审计明确使用任务前基线。 ## 当前状态与下一步 本地协议、提示和隔离任务验证已完成,完整的新真实模型评估尚未复测,不能宣称25款语义或未来摘要文案已实际通过。生产仍为 `20261016-report-diagnostics-r1`,本轮未发布,小程序也未重新发行,微信真机及生产worker未验收。 下一步建议对同一合成资料和保存配置进行一轮新的完整真实模型验证:使用新的证据目录、防重入口和 `capture()` 快照,最多按冻结批数调用,失败即停,不自动重试;不能重跑上轮 `age-ranges-live-20261016-r1` 的收费入口或更改其原始响应。实际付费执行与发布按当轮明确授权范围处理,本轮不执行。 证据目录:`D:/AAdesk/202609/airz-backups/response-bindings-20261016`,含修改前原件、红绿日志、隔离任务结果、清理审计、离线适配、`implementation.diff`及`verification.json`。原真实失败证据仍位于 `D:/AAdesk/202609/airz-backups/age-ranges-live-20261016-r1`。 ## 2026-10-16 后续完整真实模型复测 上节“尚未完整复测”为本地修复阶段状态。用户随后“继续下一步”,已在新的隔离环境完成6批真实调用,66条模型条件、100条模板、25款匹配保存回读及6检查点零调用恢复通过,实际摘要与零金额/年龄目标通过。仍发现77徽享薪易贷明确公积金路径漏判unknown,不能声称全部语义通过;未追加收费重试或修改原响应,继续未发布。完整结果、限制及下一步见[真实模型复测记录](短编号真实模型复测-20261016.md),证据D:/AAdesk/202609/airz-backups/response-bindings-live-20261016-r1。