主题
06 - 生产验收与已知边界
一句话:知识底座算不算上线,不看功能清单点完了没有,看十二组证据能不能当场复现、数值门禁有没有签字人、没做的项有没有老实标成未覆盖——验收的价值不在于全过,在于哪一格没过所有人都看得见;用“未覆盖”冒充“通过”,签出去的就是一个说法而不是一个系统。
一、验收的对象是四件事
回扣总纲:进得来、查得准、越权查不到、删了真没有。前三件有正向证据可看,第四件只有负向证据——无法用“跑通了”证明权限生效,只能用“越权被拒了”证明。这就是为什么验收清单里一半是否定式用例。
| 闭环环节 | 正向证据 | 反向证据 |
|---|---|---|
| 进得来 | 批量导入完成、抽检还原章节关系 | 不支持格式被明确拒绝、坏文档与高风险内容不污染检索 |
| 查得准 | 评测集召回与引用正确率 | 无答案题必须拒答,正常题不得被过度拒答 |
| 越权查不到 | 授权范围内结果稳定 | 跨租户、跨角色、伪造参数、撤订后调用、旁路直连全部被拒 |
| 删了真没有 | 删除任务完成状态可查 | 删除后同查询零命中,旧引用显示失效,切断生效有计时 |
二、十二组证据与归档状态
状态三态:已归档(有台账位置,可当场复现)/待归档(机制已定,按步骤跑完即出证据)/未覆盖(依赖尚未部署,不得写成通过)。本栏交付的是判定口径与复现步骤,不把未跑过的项预填成已归档。
| # | 证据 | 复现方式 | 判定 | 状态 |
|---|---|---|---|---|
| 1 | 端到端调用链 | 从 Agent 凭证发起一次检索,逐跳留日志:网关 → 鉴权 → 凭证注入 → Broker 决策 → 引擎 → 计量落库 | 六跳齐全,引用可打开 | 待归档 |
| 2 | 跨租户越权 | 用 A 租户凭证查 B 租户知识库 | 拒绝;审计有原因;返回中无 B 的任何片段 | 待归档 |
| 3 | 同租户角色 | 普通员工访问管理端点、访问转授端点 | 均拒绝;管理员可访问且留痕 | 待归档 |
| 4 | 文档级权限 | 私有文档出现在他人检索与提问中 | 不出现,也不出现在引用、建议与“存在性”提示里 | 待归档 |
| 5 | 参数伪造 | 请求体自报租户、用户、知识库范围;请求头夹带同名标识 | 以签名为准,不一致拒绝;请求头在入口剥离,剥离前后抓包对比留档 | 待归档 |
| 6 | 撤订与撤权计时 | 撤订 / 撤权后按秒级轮询调用 | 实测值与目标值同表记录(目标秒级、缓存不超版本刷新周期),不拿目标值当实测 | 待归档 |
| 7 | 删除传播 | 删一份文档后跑同一条查询 | 零命中;旧引用变失效;清理任务有影响条数与完成时间 | 待归档 |
| 8 | 审计回溯 | 用一次真实提问反查 | 能答出谁、何时、以谁的身份、取了哪份文档哪一段、哪一版 | 待归档 |
| 9 | 计量对账 | 预登记容差与解释流程,覆盖一个含周末与批量导入的完整周期 | 差异在容差内或每条都有解释;先解释再动阈值 | 待归档 |
| 10 | 紧急切断与降级 | 下架一个知识产品后计时验证;停掉权限源验证 fail-closed | 秒级停止新可见;权限源不可用时拒绝而非放行;Broker 与审计存储故障语义按 05 表逐项验证 | 待归档 |
| 11 | 注入不被执行 | 在文档内埋“忽略以上指令”样本并提问 | 不改变系统行为、不泄露其它文档;隔离区命中并告警 | 待归档 |
| 12 | 废止不召回与冲突提示 | 废止一份旧版制度后提问同主题 | 不出现在默认答案;同主题存在多说法时答案带冲突提示(依赖权威源标记下发) | 待归档 |
两点纪律:
- 凭证泄露与旁路成功不由第 9 组证明,分别由全链路密钥扫描、第 5 与第 10 组单独证明;对账只证明“账对得上”。
- 越权证据分两级记:用例内被拒(自己写的负向用例)与生产流量中被真实尝试并拒绝(外部真实探测)。只有第一级,等于“没人来试所以没出事”,与本栏第 05 篇“越权拒绝数一直为零说明没有人在试”的判断一致。
三、质量门禁:没有数值就拦不住任何东西
上一版本栏只写了“没有任何一桶明显退化才放行”,没定义“明显”,等于门禁拦不住任何一次改动。补齐五件:
| 要素 | 口径 | 状态 |
|---|---|---|
| 分桶集合 | 单跳事实、多跳、表格、扫描件、无答案、过度拒答、过期与废止、同主题冲突、新域漂移(每进一个新知识域必测) | 已定 |
| 每桶最小样本量 | 不低于 30 题(经验值;低于此数的桶波动大于改进幅度,不参与判定) | 待业务确认 |
| 通过线 | 各桶召回、MRR、引用正确率、拒答率的门槛值,由业务与平台共同签一次,写进评测集版本说明 | 待业务确认 |
| “明显退化”定义 | 建议起步:任一桶主指标下降超过 3 个百分点,或过度拒答率上升超过 5 个百分点即拦(经验值,需按首次基线校准) | 待业务确认 |
| 评测集治理 | 出题与定标分离:题目由内容负责人出、答案依据由管理员确认、指标定标人签字;季度换血一部分(建议 20%,经验值)防过拟合;留出集只用于门禁判断,不参与日常调参 | 已定 |
三条结构约束:
- 权限桶从质量门移出,并入第二节的反向证据。混在质量分桶里,会让“平均分没退”被权限题的表现污染,两件事都判不准。
- 每次改动只动一个变量,与上一版配对比较;只看平均值会掩盖“精确串整类查不到”这类结构性退化。
- 换模型、换向量引擎、改默认参数一律算新基线,旧数字不再可比(机制见 07 §三);换基线时必须在台账里写明“因参数变更重置”,不能静默替换。
上线前的一次性动作:把当时各桶数值记进台账,标注评测集版本、引擎与模型版本、参数快照。此后所有比较都跟这份基线比。
四、已知边界(不写成已完成)
| 项 | 现状 | 处理与对外话术 |
|---|---|---|
| 多模态(音视频解析、图文混排理解、多模态重排) | 一期不做 | 明确拒收并转人工或第三方;对标托管平台的多模态重排一类能力按“不做”记账,不算交付缺口。代价要说清:会议决议、客服话术这类口径高发载体因此无解,再入需另接转写能力并指定转写块的复审责任人 |
| 国内系统开箱连接器 | 社区需自补,无成品矩阵 | 不只功能缺口,是删除传播的前置:拿不到上游删除与变更事件,就只能靠每日全量清单比对兜底,成本按文档总数乘单次清单接口调用量估;不做则“删了真没有”断链 |
| 内容合规审核 | 引擎不提供 | 需外部内容安全服务或人工判定;未接入前高风险内容类型直接拒收并列清单(见 08) |
| 多库路由与库级权重 | 反向设计,不做产品化开关 | 范围由授权与场景配置派生;代价是新域必须显式配置,少配表现为“查不到”,由零命中清单兜住(见 02、09) |
| 记忆层隔离与删除 | 属另一条线 | 本栏只保证知识检索不越权,不代答记忆隔离 |
| 计费闭环 | 只有调用事实与用量 | 价格与结算在计费系统;本栏做到可对账,不宣称已结算 |
| 容量与 HA 数值 | 无压测与演练数据 | 一律记经验值或设计目标,不做平台间性能对比;方法式与公式见 05 |
| 观测面板 | 开源版本不足以支撑判定 | 自建指标与事件落库 |
| 写操作进工具面 | 责任归属未解 | 只读四动作是当前边界 |
五、与 3.2 历史台账的关系
3.2 的实证篇记录单机小样本阶段,它的“边界”与“不宣称项”照旧成立,本栏不覆盖也不改写那段结论。两份文档的分工既是时间性的也是身份性的:那一份是事实记录(当时跑到哪、哪些没做),本栏是生产口径(按什么标准交付、每项用什么证据判定)。因此本栏不宣称第二节十二组证据已全部归档;一旦某组跑完,把状态从“待归档”改成“已归档 + 台账位置”,这一栏就是全栏的销项表。3.2 留的那句“这些完成前不得表述为生产可用”,在本栏以状态列为执行方式。
六、上线判定
五句话,缺一不签:
- 十二组证据逐条有状态,标“已归档”的当场可复现,标“未覆盖”的不许用“未覆盖”冒充“通过”;
- 评测基线已锁版本记录在案,质量门与权限门各自独立跑过,通过线与“明显退化”定义有签字人;
- 删除、撤权与切断的延迟口径已经告诉业务,他们知道“秒级停可见、分钟级清索引、备份等保留期”,且这三段有实测值或明确标注为设计目标;
- 个人信息与审计的保留期四要素齐全:谁定义、配在哪、谁执行、到期如何证明(见 03);
- 已知边界在使用者看得见的地方——不支持的格式、不做的能力、不给的承诺,写在页面与答案话术里,不只在文档里。
第五条最容易被省掉,也最贵:一个不说自己边界的知识底座,收到的不会是投诉,而是看起来很对、实际没依据的答案。