ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

手搓生产级 AI Agent 系统(12):全链路评测、影子流量与生产质量门禁

手搓生产级 AI Agent 系统(12):全链路评测、影子流量与生产质量门禁 文章摘要前十一篇已经完成Agent目标解析、Tool Calling、状态管理、Memory、Planner-Executor-Reviewer闭环、Checkpoint、Human-in-the-Loop、多Agent协作、共享状态以及代码与浏览器安全执行。系统已经具备完整的生产运行能力但“能够运行”并不等于“值得发布”。Agent质量不能只看最终文本。一个答案可能内容正确却通过错误Tool、重复副作用、过度成本或未经审批的路径获得离线黄金数据集可能高分真实用户却因为长尾意图、权限、工具故障、延迟和多轮状态而无法完成任务LLM-as-a-Judge可能受位置、长度、模型家族和Rubric影响新版本可能在固定Benchmark上更好却在真实流量中导致转人工率和成本上升。本篇为整套生产级Agent系统补上最后一层质量控制将Response、Trajectory、Task Success、Business Outcome和Safety统一到Evaluation Control Plane使用冻结数据集保证历史可比使用当前数据集覆盖最新Hard Case通过生产Trace重放验证真实任务分布通过影子流量比较稳定版和候选版但严格阻断真实写操作通过金丝雀验证真实用户、工具和业务结果通过版本粘性、Slice阈值、零容忍安全指标和自动回滚控制发布通过线上反馈、人工纠正和Judge分歧持续扩展数据集。完成本篇后《手搓生产级 AI Agent 系统》形成从任务理解、工具执行、持久化、协作、安全到质量发布的完整工程闭环。一、本篇解决的问题1. Agent质量应该评什么 2. 最终答案与执行轨迹如何同时评测 3. 黄金数据集如何版本化 4. 数据集更新后如何保持历史可比 5. LLM Judge如何校准 6. 生产Trace如何安全重放 7. 影子流量如何禁止真实副作用 8. 稳定版与候选版如何Pairwise比较 9. 金丝雀如何保持Run版本粘性 10. 哪些指标允许回归哪些零容忍 11. 线上失败如何进入Hard Case 12. 如何自动扩量、暂停与回滚 13. 运行中的Checkpoint如何处理版本回退 14. 如何观测评测成本和Judge漂移二、质量控制总体架构┌─────────────────────────────────────────────┐ │ Candidate Manifest │ │ Model / Prompt / Graph / Tool / Policy │ └──────────────────┬──────────────────────────┘ │ ┌──────────────────▼──────────────────────────┐ │ Offline Evaluation │ │ Rules / Frozen / Current / Replay │ └──────────────────┬──────────────────────────┘ │ pass ┌──────────────────▼──────────────────────────┐ │ Shadow Traffic │ │ Real Distribution / No Side Effects │ └──────────────────┬──────────────────────────┘ │ pass ┌──────────────────▼──────────────────────────┐ │ Canary │ │ Real Users / Sticky Run / Rollback │ └──────────────────┬──────────────────────────┘ │ ┌──────────────────▼──────────────────────────┐ │ Online Monitoring Feedback │ │ Outcome / Human / Hard Case / Dataset │ └─────────────────────────────────────────────┘三、Agent质量的五个层级Response Quality Trajectory Quality Task Success Business Outcome Safety Compliance四、Response Quality评估相关性完整性清晰度事实支持引用格式风格。它是必要条件但不是最终目标。五、Trajectory Quality评估Planner是否合理Tool是否正确参数是否正确顺序是否正确是否循环是否重复是否跳过审批是否正确恢复是否违反预算。六、Task Success由业务里程碑定义。publicrecordTaskSuccessContract(StringtaskType,SetStringrequiredMilestones,SetStringforbiddenOutcomes,DurationmaximumDuration,intmaximumUserCorrections,booleanhumanHandoffAllowed){}七、Business Outcome例如客服解决率转人工处理时长重开工单用户完成运营成本。例如销售线索完整跟进创建错误触达转化合规。八、Safety与Compliance硬门禁跨租户访问 未经审批副作用 重复扣款 敏感数据泄露 危险Tool越权 旧审批执行 沙箱逃逸信号这些不是平均分问题而是零容忍事件。九、Candidate ManifestpublicrecordAgentCandidateManifest(StringcandidateId,StringmodelProfile,StringpromptVersion,StringgraphVersion,StringplannerVersion,StringreviewerVersion,StringtoolCatalogVersion,StringknowledgeSnapshot,StringpolicyVersion,StringsandboxProfileVersion,StringevaluatorBundleVersion,StringimageDigest,StringmanifestHash){}任何字段变化都生成新Candidate。十、为什么Manifest不可变否则评测期间修改Prompt或知识库最终分数无法复现。发布证据必须回答到底测的是哪个版本组合十一、Dataset分层Smoke Dataset Frozen Regression Dataset Current Dataset Safety Dataset Trajectory Dataset Hard Case Dataset Production Replay Dataset十二、Smoke Dataset少量高价值样本用于每次提交快速检查SchemaTool基本RAG高风险拒绝状态迁移。十三、Frozen Regression Dataset长期冻结用于比较历史版本。不能因为当前系统难题变化就不断修改。十四、Current Dataset持续加入新意图新知识新失败新语言新工具新风险。用于判断当前真实能力。十五、Safety Dataset包括Prompt Injection越权跨租户未审批副作用重复操作数据外传沙箱攻击浏览器恶意页面。十六、Trajectory Dataset不仅给输入和答案还给允许Tool禁止Tool必需步骤最大调用数审批Checkpoint失败注入。十七、Dataset ManifestpublicrecordDatasetManifest(StringdatasetId,Stringversion,StringparentVersion,InstantcutoffTime,MapString,IntegersliceCounts,StringannotationPolicyVersion,StringdeduplicationVersion,StringcontentHash){}十八、数据集更新后的双报告Frozen Score 保证历史可比 Current Score 反映最新难题新数据更难导致总分下降时不应误判为模型回归。十九、Slice按Task风险语言租户类型长上下文Tool多轮浏览器代码新用户长尾切片。二十、不要只看平均分总体Task Success94% 支付Slice62% 越南语Slice58% 浏览器提交71%总体平均值会掩盖关键失败。二十一、评测器分层确定性Rule 业务事实Evaluator LLM Judge 人工Reviewer 线上Outcome二十二、确定性Rule检查Schema数字JSONTool权限状态成本审批幂等禁止行为。二十三、Spring AI EvaluatorSpring AI提供Evaluator接口并提供相关性和基于给定上下文的事实支持评测能力。可以用于RAG相关性Claim支持回归测试。但它不替代Dataset、Slice、Gate和业务结果。二十四、LLM Judge适合开放式正确性完整性语义等价Pairwise风格轨迹解释。二十五、Judge偏差需要治理位置长度自我偏好顺序Prompt InjectionReference错误模型漂移随机性。二十六、Judge ManifestpublicrecordJudgeManifest(StringjudgeId,StringmodelProfile,StringpromptVersion,StringrubricVersion,doubletemperature,intsampleCount,StringmanifestHash){}二十七、Pairwise双顺序运行StableA CandidateB StableB CandidateA不一致标记位置敏感不强行判胜。二十八、人工黄金集人工标注明确通过明确失败边界高风险分歧。Judge阈值在黄金集上校准。二十九、False Pass高风险最关注Judge把危险输出判为通过发布门禁要限制Critical False Pass而不只是总体一致率。三十、Evaluation CasepublicrecordAgentEvaluationCase(StringcaseId,StringtaskType,Stringslice,JsonNodeinitialState,StringuserInput,ListRecordedToolInteractiontoolFixtures,TaskSuccessContractsuccessContract,ListReferenceAnswerreferences,RiskLevelrisk){}三十一、Case ResultpublicrecordAgentEvaluationResult(StringcaseId,StringcandidateId,ResponseEvaluationresponse,TrajectoryEvaluationtrajectory,TaskOutcomeoutcome,SafetyEvaluationsafety,CostUsageusage,Durationlatency,ListStringfailureCodes,StringtraceRef){}三十二、生产Trace重放从生产采集输入Context ManifestPlanTool请求Tool结果知识快照版本输出用户反馈。候选使用录制依赖不触发真实写操作。三十三、重放固定时间相对时间问题今天 上周 当前库存必须使用原始request_time否则候选与Stable面对不同世界。三十四、隐私与权限生产Trace进入评测去标识最小字段数据区域访问审批保留期删除审计。评测环境权限不能比生产更宽。三十五、影子流量Stable正常响应用户Candidate接收副本结果只用于评测。三十六、Shadow Tool PolicypublicenumShadowToolMode{RECORDED,READ_ONLY_LIVE,SANDBOX_WRITE,NO_OP,BLOCKED}写Tool默认BLOCKED或SANDBOX_WRITE。三十七、影子环境隔离Candidate不共享MemoryCheckpoint写缓存业务数据库通知Artifact发布用户会话副作用。三十八、影子比较比较最终回答ClaimTool参数轨迹延迟Token成本Policy安全。三十九、影子采样按风险和价值新意图 长尾 工具任务 长上下文 新语言 低置信 高价值加权。四十、金丝雀候选真正服务小比例真实用户。前提离线通过 重放通过 影子通过 回滚演练通过四十一、版本粘性同一thread_id run_id绑定同一Candidate。不能多轮过程中切换Graph或Prompt。四十二、Canary AssignmentpublicrecordCanaryAssignment(StringassignmentId,StringroutingKey,StringcandidateId,intbucket,InstantcreatedAt,InstantexpiresAt){}四十三、Canary扩量内部用户 →低风险租户 →只读任务 →普通任务 →高价值任务高风险任务最后进入且保留人工门禁。四十四、金丝雀指标质量Task SuccessJudge PreferenceTool Success引用Reviewer通过。体验重新提问放弃转人工首Token总延迟。成本TokenTool多AgentJudgeSandbox。安全越权未审批重复副作用注入数据泄露。四十五、Gate PolicypublicrecordGatePolicy(MapString,MetricThresholdglobal,MapString,MapString,MetricThresholdslices,SetStringzeroToleranceMetrics,intminimumSampleSize,Stringversion){}四十六、零容忍cross_tenant_access unapproved_side_effect duplicate_side_effect stale_approval sensitive_data_leak sandbox_escape任何一次都阻断或回滚。四十七、质量阈值quality:minimum-task-success:0.92maximum-critical-failure:0maximum-latency-regression:0.15maximum-cost-regression:0.20maximum-human-handoff-regression:0.05阈值按Slice覆盖。四十八、样本不足小样本金丝雀语义指标噪声大。策略不自动扩量 延长观察 扩大低风险流量 人工检查四十九、自动回滚适合硬信号安全错误延迟Provider重复副作用。语义分数噪声较大时暂停扩量而不是立即回滚。五十、运行中的Run回滚只切换新分配。正在运行的Candidate Run可能有Checkpoint有Tool结果等待审批使用新State Schema。处理继续原版本安全迁移取消人工。不能直接交给Stable读取。五十一、Release DecisionpublicrecordReleaseDecision(StringdecisionId,StringcandidateId,ReleaseStagecurrentStage,ReleaseStagenextStage,GateDecisiondecision,ListStringevidenceRefs,ListGateViolationviolations,StringdecidedBy,InstantdecidedAt){}五十二、线上反馈显式点赞点踩评论人工评级。隐式重复改写转人工撤销放弃重新执行业务完成。五十三、反馈不能直接当真值用户可能误解、情绪化或点击错误。流程反馈 →归因 →抽样人工 →去标识 →Hard Case →Dataset版本五十四、Hard Case Mining挖掘高风险失败Judge分歧用户纠正Tool UNKNOWN长循环高成本高延迟新意图长尾语言。五十五、数据闭环线上Run →Feedback →Failure Taxonomy →Human Audit →Hard Case →Current Dataset →下一Candidate五十六、失败分类publicenumAgentFailureCode{INTENT_MISUNDERSTOOD,PLAN_INVALID,WRONG_TOOL,INVALID_ARGUMENT,TOOL_FAILURE,STALE_CONTEXT,UNSUPPORTED_CLAIM,LOOP,BUDGET_EXCEEDED,APPROVAL_VIOLATION,DUPLICATE_SIDE_EFFECT,USER_ABANDONED}五十七、评测成本成本包括Candidate推理Tool FixtureJudge多次采样影子人工存储Replay。按Candidate、Stage、Slice归因。五十八、评测缓存Key包括case_hash candidate_manifest_hash evaluator_manifest_hash dataset_version任何一项变化都Cache Miss。五十九、OpenTelemetry与观测Trace记录gen_ai operation model usage agent task evaluator evaluation score candidate stage同时避免将完整敏感Prompt默认写入普通Telemetry。六十、Trace结构release.candidate ├─offline.eval │ ├─agent.run │ ├─rule.eval │ └─judge.eval ├─shadow.run │ ├─stable │ └─candidate ├─canary.run └─gate.decision六十一、指标agent_eval_case_total{ stage, result } agent_eval_task_success_rate{ slice } agent_eval_trajectory_violation_total{ code } agent_eval_judge_disagreement_rate agent_shadow_preference_rate agent_canary_task_success_rate{ candidate } agent_canary_cost_total{ candidate } agent_release_gate_total{ stage, decision } agent_release_rollback_total{ reason } agent_hard_case_total{ failure_code }六十二、评测SLO高风险Dataset覆盖率100% 关键Tool轨迹覆盖率100% Judge人工一致率≥85% Critical False Pass0 影子真实副作用0 金丝雀重复副作用0 发布证据可追溯率100%六十三、自动化测试矩阵规则失败阻断 Frozen回归 Current新Slice Judge顺序反转 Trace时间固定 影子写Tool阻断 影子Memory隔离 Canary粘性 零容忍回滚 运行中Checkpoint继续原版本 Hard Case去标识 重复Release Event幂等六十四、发布流水线stages:-deterministic-frozen-benchmark-current-benchmark-trace-replay-shadow-internal-canary-low-risk-canary-broad-canary-promote六十五、管理后台展示Candidate ManifestDatasetSliceCaseFailureJudgeCostShadow DiffCanaryGateRollbackHard Case线上反馈。六十六、人工决策以下情况进入评审Judge分歧样本不足新高风险Slice质量和成本权衡线上投诉旧Run迁移语义指标边界。六十七、治理职责产品定义Task Success和业务结果。研发实现规则、Trace和Gate。算法维护Dataset、Judge和模型。安全维护零容忍指标和攻击集。运营处理反馈和人工接管。六十八、不能只追求高分过度优化Benchmark可能迎合Judge增加冗长增加成本降低真实体验忽略新意图。必须持续用线上结果验证离线指标是否仍有预测力。六十九、指标相关性定期分析离线分数 与 线上Task Success 用户满意 转人工 业务结果相关性下降时更新Rubric、Dataset或指标。七十、上线检查清单□ Candidate Manifest完整且不可变 □ 质量覆盖Response、Trajectory、Task、Outcome和Safety □ Frozen与Current Dataset同时维护 □ Dataset按Slice报告 □ Rule、Judge和业务事实职责分离 □ Judge经过位置、长度和人工校准 □ Trace重放固定时间、知识和Tool □ 影子写操作、Memory和通知被阻断 □ Stable与Candidate缓存隔离 □ 金丝雀按Run版本粘性 □ 安全事件零容忍 □ 样本不足不自动扩量 □ 回滚只切换新流量 □ 运行中Checkpoint有兼容策略 □ Release Decision保存证据 □ 线上反馈经过审查进入Hard Case □ 评测成本和Judge漂移可观测总结全链路评测的核心不是给Agent增加更多分数而是建立一条可信的发布证据链固定数据证明没有已知回归 生产重放证明能处理真实任务 影子流量证明候选不会污染生产 金丝雀证明真实用户和业务可接受 线上反馈证明质量可以持续演进经过十二篇建设生产级Agent系统已经形成完整闭环目标 →计划 →执行 →审校 →持久化 →人工 →多Agent →安全沙箱 →质量发布 →反馈改进一个真正可上线的Agent不仅要能完成任务还必须证明它在不同数据、不同流量、不同故障和不同版本下始终保持正确、安全、可控和可回滚。
返回列表