2026年10月15日 · 阅读 —

问数平台怎样迁移:同条件PoC、单路交付与可验证回滚

Agent 与 Skills测试与评测

问数平台怎样迁移:同条件PoC、单路交付与可验证回滚

迁移应以可回滚的业务切片推进:先让旧系统也使用统一授权与查询服务,再用新流程执行相同任务,最后依据真实结果扩大范围。先换框架再补权限和真值,会把架构演示误当成产品验收。

先统一边界,再替换运行时。 先选一个指标/业务流程作为迁移切片;不一口气重写全部 Skills 和脚本。

阶段具体工作进入下一阶段的证据回滚方式
P0 盘点与基线核实真实启动目录、版本、所有取数入口、账号和日志;冻结语义/数据/模型条件能够定位每次请求的真实身份、查询和结果;缺权限真值则先补保留现有部署和配置快照
P1 统一业务职责建立唯一查询服务;接真实 ACL;隔离服务凭据;Hermes 仅调用窄业务接口普通用户所有可达取数路径受同一授权;拒绝、撤权、旁路题通过服务和适配器版本可退;不重新开放未受管路径
P2 新编排 PoC一个 Agent+显式节点;保留现有 SQL 契约;接同一查询服务相同环境配对评测,数值、权限、隔离和故障恢复达到门槛切回已加固的 Hermes 编排入口
P3 灰度按测试账号/业务范围路由;单一路线交付;限制并发和成本真实企微接入、附件、审计和恢复通过;SLO 由团队定义并验证路由回旧入口;已发消息与查询副作用另核对
P4 扩展按覆盖和故障证据迁移其他能力;整理模块;停用旧执行路径迁移清单、回归及旧凭据/权限撤除完成保留受控回滚窗口与必要历史证据

影子比较宜先用固定数据回放。若双跑真实查询,要计算数据平台负载,并且只能有一条交付路径,避免发送两份结果。回滚也必须保留新的授权约束。

PoC优先复用已经审核、具备独立真值的查询与相关权限、渠道题。 针对新恢复机制补必要反例并去重,记录新增覆盖。示例数量只表达覆盖设计,不是统计显著性要求,也不自动产生新的Golden。

迁移门槛:

  1. 测试矩阵内无越权数据或附件泄露;这不等于已证明所有输入绝对安全。
  2. 查询与分析结果满足独立契约;无法验证的结果明确报告,不能编造。
  3. 断联、重复消息、崩溃恢复、撤权、取消有实际证据;生产存储配置经过验证。
  4. 新旧接口和模型适配经过测试;锁版本、审计关联、监控与回滚可操作。
  5. 真实企微、真实隔离数据平台与已校准 Judge 的适用验收完成。

agent-eval-harness 保持运行时中立:适配新 Target,复用 Case、Oracle、数据分区与证据规则。不要为新业务编排在 Harness Core 内加第二套 LLM 运行时。LLM-as-judge 辅助评回答,不能裁定数据权限;Laya 仍是可选观察工具;SkillOpt 在真实基线和独立回归就绪后再评估。

G.1 不把迁移写成一次全量重写

先抽稳定业务契约与统一查询出口,再替换一个真实业务切片。指标资产、数据连接和既有语义规则能复用时先复用;业务正确性、权限与执行器没有就绪时,不先用全新 SDK 演示掩盖缺口。现有系统能力受限后仍可短期服务,迁移流程与旧流程各自有清晰负责人。

每个切片记录模型、SDK、提示词、业务代码、语义资产、权限策略和数据版本。基础服务迁移和编排迁移分开发布;不同时替换口径、模型、权限源和数据平台,再用一次对比声称某个框架改善了结果。

先建立兼容契约与读回证据,灰度时限制人群及负载。结果存储和检查点格式改变时需制定迁移/旧格式读取方式;回滚不是只把程序版本退回,还要确认恢复中的任务、查询和消息能正确继续或安全结束。

G.2 架构收益怎么量化验证

希望获得的收益需要收集的实际数据验收方式结论限制
减少深度定制上游补丁数量/范围、内部调用依赖、业务修改位置同一个新指标或接口变更,在两条路线记录改动和回归范围不预设工时节省比例,业务复杂度必须可比
更容易测试测试替身入口、组件启动依赖、失败复现步骤和取证完整性同一拒绝、非法SQL、超时题能够确定性重放并独立观察测试方便不等于业务结果正确
权限更可控所有数据出口、策略版本、旁路与撤权反例结果角色矩阵、可达路径审阅、查询/缓存/附件证据核对只能对已测范围下结论
运行更可预测阶段时延、失败分布、模型/查询次数、取消与恢复结果同模型/数据下配对运行,加真实故障和代表性负载不凭小样本平均时延推断生产稳定性
发布维护更清晰依赖锁定、配置变更、回滚步骤、兼容记录演练升级与回滚,读取真实任务和交付状态没有演练就保持未验收

门槛由业务、安全、数据和运维共同确定;样本数量按覆盖缺口增长。不会把“换成专业框架”直接当作验收通过,也不把减少依赖数量自动当作维护成本降低。

回滚验证要覆盖已经在途的任务

切换期间可能存在旧运行时已提交但未完成的查询。新应用接管后,需要确定由谁继续等待、谁负责交付、旧任务是否还能重试。若只回滚入口配置,没有处理在途状态,就可能出现重复文件或无人领取的结果。概念验证应安排切换时暂停一个合成任务,再观察恢复与交付。

回滚也不能回退业务权限。权限已经撤销的用户,即使切回旧应用版本,也应遵守当前授权;新的语义资产是否向后兼容,需要单独说明。应用发布版本、数据版本和权限版本是不同维度,回滚其中一个不能自动恢复其他两个。

选型记录最好区分必须项和偏好项。可信身份不可被模型改写、授权不可绕过属于必须项;图式界面、调试体验或团队熟悉度属于偏好项。先验证必须项,再比较维护成本与体验,能避免一个展示漂亮的候选抢先占据结论。若必须项缺少实际证据,记录待验证即可,不用给出带小数点的综合排名。

配对运行先检查是否可比

比较信息为什么必须保持或显式声明不一致时
Case及参考版本防止新路线仅测容易题或改答案不可直接比较正确率
模型与语义区分编排收益和模型/口径变化拆成单独实验
身份与权限同题不同范围本来可能不同值先确认等价授权
快照或水位隔离业务数据变化列不可比,不给候选记错或记优
Oracle及Judge固定裁判与评分标准重新校准并形成新比较
trial与故障步骤控制随机波动及恢复难度补齐重复或报告覆盖不足

以下为教学比较器,只验证配对集合和逐题结果。真实发布还要检查冻结资产、授权与环境证据、必需Judge、预算及人工审核,不能把该函数当作框架完整发布门禁。

def paired(before, after, required_repeats):
    if before.keys() != after.keys():
        raise ValueError("different case sets")
    transitions = {}
    for case in before:
        left, right = before[case], after[case]
        if len(left) != required_repeats or len(right) != required_repeats:
            raise ValueError("incomplete repeat coverage")
        if any(type(v) is not bool for v in left + right):
            raise ValueError("unresolved verdict")
        transitions[case] = (sum(left), sum(right))
    return transitions

assert paired({"c1": [True, True]}, {"c1": [True, False]}, 2) == {"c1": (2, 1)}
for bad in [{"c2": [True, True]}, {"c1": [True]}, {"c1": [True, None]}]:
    try:
        paired({"c1": [True, True]}, bad, 2)
    except ValueError:
        pass
    else:
        raise AssertionError("incomparable experiment accepted")

灰度只允许一条真实交付路径

影子验证首先采用固定数据回放。如果必须双跑真实查询,需要限定读取范围、数据平台负载和预算,两个运行标识各自保留,但只有选定路线能够向用户交付。查询只读不代表双跑无成本,重复生成附件和触发通知同样需要控制。

故障实验应覆盖切换瞬间仍在运行的任务。暂停一个旧任务,切换路由,再完成原查询,观察由谁整理结果、谁发送、谁取消和谁清理。只回退入口配置,而没有处理已提交查询或已发生发送,会导致重复交付或无人领取结果。

回滚不能恢复已经撤销的数据权限。应用版本、语义资产、数据版本和授权版本是不同维度,回滚其中一个不能自动回滚其他三个。状态存储格式不兼容时,先定义旧格式读取、迁移或安全终止;不能只退二进制后宣称服务恢复。

架构收益要用实际变更任务测量

减少上游补丁、独立测试可复现、授权出口可控、业务API稳定、故障能够恢复,是可观察的收益目标。给旧新路线安排同一个指标变更、同一个权限规则和同一个SDK升级,记录涉及模块、接口兼容、必须回归范围与排障步骤,而不是预设迁移收益比例。

运行指标按任务类型给分布:正确率、确认泄露事件、首字与实际交付时延、查询和模型调用次数、真实计费、重复业务交付、取消与恢复结果。所有失败尝试的成本应保留,不能只统计成功任务的调用;延迟不能仅给平均值,代表性负载和尾部等待也需展示。

阶段完成门同时包括业务线、框架工程线与测试条件线。业务线核对权限与结果;工程线核对协议、证据和历史兼容;条件线核对语义、水位、参考和Oracle校准。某条线缺条件时记录缺口,不把另一条线通过包装成全部验收。

最终保留基线、候选、允许变更、逐题差异、真实故障记录、路由切换和回滚读回。PoC指有限范围技术验证,灰度指限制主体与业务范围逐步启用;二者都不意味着已经证明全部输入安全。只有在批准矩阵内有充分证据,才讨论扩大业务覆盖。

迁移完成不等于停止维护旧证据

旧运行记录仍用于解释线上问题与回滚,不能在停用旧入口时一并删除。撤除旧凭据、旧可达工具与定时执行路径需要单独核对;仅把用户流量切到新入口,旧后台任务可能仍持有权限或继续发送报告。

迁移清单应按能力而非文件数统计。每个业务指标、身份角色、数据出口、缓存与附件类型说明旧新覆盖和未迁移原因。允许暂不迁移某项功能,但不能把它从原任务分母里删掉后宣称平台全面完成。

词汇或指标含义验证记录
灰度限定主体、能力或流量逐步启用路由及实际服务版本可读回
影子运行对照执行而不承担用户交付负载受控,禁止双重外部副作用
回滚将服务切回已批准实现并处理在途状态查询、消息、存储与权限分别核对
迁移覆盖达到新路线验收的能力单元/计划能力单元未迁移与部分完成独立列出
严重事件越权、跨用户交付等不可平均抵消的失败原始事实、影响范围及处置
SLO业务服务目标由代表性运行与故障证据验证

最终决策可以是扩大新路线、保持过渡,或暂缓迁移。能接受这些结果,PoC才是在检验假设,而不是为预先选定的框架寻找漂亮分数。所有结论都限定在实际覆盖范围内,未验证的生产容量和恢复能力继续保留为工作项。

切换和回滚的证据应连成同一条线

flowchart LR
 A[冻结旧路线基线] --> B[统一授权与查询出口]
 B --> C[旧入口接同一服务]
 C --> D[新工作流有限PoC]
 D --> E[同条件配对与故障验证]
 E --> F[单路交付灰度]
 F --> G[按证据扩展能力]
 F -.-> R[处理在途任务并回滚]
 R --> C

以下为迁移审核包示意,不是自动发布配置。批准动作不由模型代填,阶段状态也不能代替真实读回。

切片: 一个批准指标及其查询交付
基线: 旧入口已加固且可回查的运行
候选: 新工作流与同一授权查询服务
必须证据:
  - 配对结果与严重事件
  - 实际渠道与在途恢复
  - 单路交付和重复消息
  - 状态兼容与回滚读回
未通过处理: 保留旧路线与失败证据

经验感想

先统一强制授权,再逐个业务切片替换编排。迁移收益通过相同任务和实际变更验证,回滚要处理在途状态与已经发生的副作用,同时保留当前授权约束。

推荐标签

#智能问数 #Agent评测 #测试工程 #技术设计