第 2.15.3 节:把发布门禁、灰度和回滚做成上线流程
发布门禁、灰度和回滚只有拆成可执行步骤,才容易复核、排错和交接。完成本节后,你应该能够写出发布门禁、灰度和回滚的验收样例、通过/不通过标准、判断阈值和风险说明。
实现步骤或决策流程
推荐技术流
本章推荐的技术流不是具体工具清单,而是工程顺序。
| 层级 | 推荐技术流 | 推荐原因 | 面试表达 |
|---|---|---|---|
| 变更登记 | 每次发布先创建 release_id(发布编号)和 change_type(变更类型) | 没有发布记录就无法追责和回滚 | 我会把每次变更都纳入发布台账。 |
| 版本固定 | 固定 prompt_version(提示词版本)、knowledge_snapshot_id(知识快照编号)和模型版本 | AI(人工智能)行为依赖配置和资料 | 我会先固定上下文,再评测。 |
| 样例评测 | 选择 evaluation set(评测集)、golden questions(黄金问题)和 red team cases(红队样例) | 检查业务正确性和安全边界 | 我会同时测正常场景、关键场景和恶意场景。 |
| 回归门禁 | 汇总 regression_result(回归结果)和失败原因 | 防止新功能破坏旧流程 | 我会把回归结果作为发布底线。 |
| 风险审批 | 按 risk_level(风险等级)决定是否 human approval(人工批准) | 高风险变更必须有责任人 | 我会让业务和技术共同批准高风险发布。 |
| 灰度发布 | 定义 canary_scope(灰度范围)和观察指标 | 降低一次性全量风险 | 我会先给小范围用户或场景灰度。 |
| 回滚准备 | 发布前确认 rollback_plan(回滚方案) | 出问题时能快速恢复 | 我不会发布没有回滚路径的高风险变更。 |
| 发布复盘 | 记录 post_release_issue_count(发布后问题数)和关联 trace_id(追踪编号) | 用真实问题改进下一轮门禁 | 我会让发布体系随着事故和反馈进化。 |
对于客服工作台,推荐先从轻量版本做起:
- 先建立黄金问题和核心评测集。
- 再把知识快照、提示词版本和模型版本记录起来。
- 再加入回归测试和红队样例。
- 再做发布门禁和人工批准。
- 最后完善灰度、回滚、看板和发布后复盘。
不要一开始追求复杂平台。先让每次发布说得清、测得出、退得回,再逐步自动化。
字段契约
字段契约是本章最重要的交付物之一。它让前端、后端、运营、测试、客服主管和面试官都能看懂:一次发布到底记录什么。
发布记录字段
| 字段 | 中文含义 | 示例 | 为什么要有 |
|---|---|---|---|
release_id(发布编号) | 一次发布的唯一编号 | rel_2026_07_001 | 串联变更、评测、审批、灰度、回滚和复盘。 |
change_type(变更类型) | 这次改了什么 | knowledge_update、model_switch、approval_flow_change | 不同变更走不同门禁。 |
prompt_version(提示词版本) | 本次使用的提示词版本 | prompt_cs_2.4 | 追踪提示词变化对回答的影响。 |
knowledge_snapshot_id(知识快照编号) | 本次使用的知识库快照 | ks_2026_07_01_after_sales | 固定评测和发布时的资料版本。 |
evaluation_set_id(评测集编号) | 本次执行的评测集 | eval_after_sales_core_v3 | 知道用哪些样例判断质量。 |
golden_case_count(黄金用例数量) | 黄金问题数量 | 80 | 判断关键问题覆盖度。 |
regression_result(回归结果) | 回归测试结果 | pass、warn、fail | 决定是否允许继续发布。 |
risk_level(风险等级) | 发布风险级别 | low、medium、high、critical | 决定门禁、审批和灰度强度。 |
approval_status(审批状态) | 人工批准状态 | not_required、pending、approved、rejected | 高风险发布必须可追责。 |
rollback_plan(回滚方案) | 出问题时退回方式 | revert_to_ks_2026_06_25_and_prompt_2.3 | 发布前确认退路。 |
canary_scope(灰度范围) | 先发布给谁 | 售后二组 10% 会话 | 控制影响范围。 |
publish_status(发布状态) | 当前发布进度 | draft、gated、canary、published、rolled_back | 前后端和运营看到一致状态。 |
post_release_issue_count(发布后问题数) | 发布后发现的问题数量 | 3 | 支撑复盘和质量改进。 |
trace_id(追踪编号) | 发布链路追踪编号 | tr_rel_8f21 | 串联日志、评测、审批和灰度观察。 |
评测用例字段
| 字段 | 中文含义 | 示例 | 为什么要有 |
|---|---|---|---|
case_id(用例编号) | 单条评测样例编号 | case_refund_001 | 可复测、可追踪。 |
case_type(用例类型) | 样例类型 | golden、regression、red_team | 区分关键样例、回归样例和风险样例。 |
scenario(业务场景) | 测试什么场景 | 七天无理由退货 | 让业务人员看得懂。 |
input_question(用户问题) | 用户怎么问 | 定制商品能退吗? | 保留真实表达。 |
expected_behavior(期望行为) | 系统应该怎么做 | 拒绝无条件退款承诺,并引用定制商品例外条款 | 不要求字面答案完全一致。 |
source_requirement(来源要求) | 引用要求 | 必须引用 2026 版售后政策 | 检查 RAG(检索增强生成)依据。 |
tool_expectation(工具期望) | 是否应该调用工具 | 不调用退款工具,只建议人工确认 | 防止工具误触发。 |
approval_expectation(审批期望) | 是否需要审批 | 涉及退款时需要主管审批 | 检查审批流。 |
pass_rule(通过规则) | 通过标准 | 关键点齐全、引用正确、无越权承诺 | 让评测标准可讨论。 |
failure_severity(失败严重度) | 失败级别 | blocker、major、minor | 决定是否阻断发布。 |
发布门禁字段
| 字段 | 中文含义 | 示例 | 为什么要有 |
|---|---|---|---|
gate_id(门禁编号) | 门禁检查编号 | gate_release_quality | 管理多条门禁。 |
gate_name(门禁名称) | 检查项 | 黄金问题必须通过 | 让人知道检查什么。 |
gate_result(门禁结果) | 通过、警告、阻断 | block | 决定发布能否继续。 |
evidence(证据) | 支撑材料 | 黄金问题 80/80 通过 | 审批人不能只看结论。 |
owner(负责人) | 谁负责处理 | 质量负责人 | 失败后有人跟进。 |
required_for_risk_level(适用风险) | 哪些风险等级必须检查 | medium_and_above | 低风险发布不过度检查。 |
override_allowed(是否允许豁免) | 能否人工豁免 | false | 防止关键风险被随意放过。 |
字段契约不是数据库设计课,而是沟通工具。你在面试时把这些字段讲清楚,面试官会知道你理解发布治理,而不是只知道“跑测试”。
制作步骤
第一步:建立发布变更分类
先不要从工具开始。先问每次发布到底改了什么。
客服工作台常见 change_type(变更类型)包括:
knowledge_update(知识库更新):新增、修改或重排资料。knowledge_removal(资料下线):资料失效、撤回或权限变化。prompt_change(提示词变更):回答策略、工具策略、拒答策略变化。model_switch(模型切换):模型供应商、模型版本或模型路由变化。tool_contract_change(工具契约变更):工具字段、结果语义、错误码变化。approval_flow_change(审批流变更):审批人、审批条件、审批状态变化。frontend_release(前端发布):工作台页面、卡片、状态、交互变化。policy_change(业务政策变更):售后、保修、发票、退款等规则变化。
每种变更都要有默认风险等级和默认门禁。例如资料下线、模型切换、审批流变化通常风险更高。
第二步:设计评测集
评测集要覆盖真实客服任务。建议至少分 7 类:
| 类别 | 样例 | 重点检查 |
|---|---|---|
| 正常知识问答 | “七天无理由退货条件是什么?” | 答案正确、引用最新资料。 |
| 多资料冲突 | 新旧政策都存在时怎么答 | 是否使用生效版本。 |
| 无资料问题 | “明年会不会降价?” | 是否拒答或转人工。 |
| 权限问题 | 普通客服问内部补偿标准 | 是否拦截无权限资料。 |
| 工具查询 | 查询订单物流状态 | 是否调用正确工具并解释结果。 |
| 高风险动作 | 要求退款、发券、发短信 | 是否进入审批,不直接执行。 |
| 前端流程 | 审批卡片、引用卡片、工单状态 | 状态是否一致、客服是否看得懂。 |
评测集不是越大越好。起步版本可以先有 50 到 100 条核心样例,但每条都要有明确期望行为。
第三步:挑选黄金问题
黄金问题应该来自真实业务,而不是凭空编。
来源包括:
- 客服最高频问题。
- 历史投诉问题。
- 客服主管最担心的问题。
- 涉及退款、保修、发票、合同、账号安全的高风险问题。
- 资料更新后最容易答错的问题。
- 面试作品集中最能展示业务理解的问题。
黄金问题要少而硬。它们失败时通常不应该发布。比如售后政策更新后,“定制商品能不能退”是黄金问题;页面标题文案不是黄金问题。
第四步:建立知识快照
知识快照要固定这几类信息:
- 哪些资料进入本次知识库。
- 哪些资料新增、修改、下线。
- 每份资料的生效时间和失效时间。
- 资料权限对哪些角色开放。
- 分块和索引是否完成。
- 引用展示是否能指回资料来源。
- 资料负责人是谁。
没有知识快照,评测结果没有意义。因为你不知道评测时到底用的是哪一版资料。
第五步:管理提示词和模型版本
Prompt(提示词)和模型版本要和发布记录绑定。
发布记录至少要说明:
- 这次使用哪个 prompt_version(提示词版本)。
- 提示词改了什么行为。
- 是否影响工具调用、拒答、转人工、引用格式或回答风格。
- 使用哪个模型和模型路由。
- 新旧模型在黄金问题上的差异。
- 成本、延迟和拒答率有没有明显变化。
提示词不是“文案”。在 Agent(智能体)系统里,提示词是行为配置。模型也不是“换个更聪明的”。模型切换是生产变更。
第六步:执行回归和红队检查
回归检查关注“旧能力有没有坏”。红队检查关注“系统会不会做危险的事”。
客服工作台的红队样例至少覆盖:
- 用户要求忽略系统规则。
- 用户要求查看别人的订单。
- 用户诱导泄露内部补偿政策。
- 用户要求跳过审批直接退款。
- 用户要求引用已下线资料。
- 用户把恶意指令塞进上传资料。
- 用户要求模型编造政策依据。
- 用户要求客服工作台隐藏工具失败。
红队样例失败时,不要只改 Prompt。要看权限、工具网关、知识库过滤、输出护栏和审批流是否也需要调整。
第七步:设计发布门禁
门禁要按风险分级。
读图重点:先看门禁三态:阻断回修、警告复核、通过进入灰度准备;再看灰度分支:指标异常立即回滚,健康才扩大,两条结果都进入发布后复盘。
| 风险等级 | 典型变更 | 建议门禁 |
|---|---|---|
| low(低) | 前端展示文案、帮助说明 | 基础走查、关键页面验收。 |
| medium(中) | 新增 FAQ(常见问题)、普通 Prompt 优化 | 核心评测集、黄金问题、回归无严重失败。 |
| high(高) | 资料下线、模型切换、工具契约变化 | 完整评测、红队样例、人工批准、灰度和回滚方案。 |
| critical(关键) | 退款审批流、外部通知、批量内容发布 | 双人审批、灰度、回滚演练、发布后监控和复盘。 |
门禁不是为了拖慢发布,而是为了让不同风险的变更走不同强度的检查。
第八步:准备人工批准材料
需要 human approval(人工批准)的发布,审批人应该看到这些内容:
- 本次改了什么。
- 为什么要改。
- 影响哪些用户、客服组、租户或业务流程。
- 评测集和黄金问题结果。
- 回归失败和已知问题。
- 红队样例结果。
- 风险等级和风险原因。
- 灰度范围。
- 回滚方案。
- 发布后观察指标。
不要让审批人只看到“是否同意发布”。没有证据的审批,就是把风险推给人。
第九步:灰度发布并观察
灰度要定义 4 件事:
- 给谁灰度:内部客服、某个租户、某个客服组、某类问题。
- 灰度多久:例如一个工作日、一个班次或固定请求量。
- 看什么指标:错误答案、转人工率、工具失败率、审批卡住、投诉、成本、延迟。
- 什么时候扩大或停止:指标稳定才扩大,出现阻断问题立即暂停或回滚。
客服场景里,灰度最好先从内部客服或低风险场景开始。不要把新模型、新知识库和新审批流同时全量发布,否则出问题很难归因。
第十步:发布后复盘并更新样例
发布完成不等于结束。发布后要看真实运行:
- 用户有没有问到评测集没有覆盖的新问题。
- 知识库更新后哪些答案变化最大。
- 哪些问题触发了转人工。
- 哪些工具调用失败。
- 哪些审批卡住。
- 哪些红队风险出现在真实对话里。
- 发布后问题数是否超过预期。
复盘的输出不是一篇总结就完事,而是更新评测集、黄金问题、红队样例、门禁规则和知识库维护流程。
和后续章节的关系
| 后续内容 | 本章提供什么基础 |
|---|---|
| 第 2.16 章综合知识库 Agent 制作方法 | 综合项目上线前要经过评测集、发布门禁、灰度和回滚。 |
| 第 3 卷行业案例 | 不同行业的资料更新、审批风险和发布门禁不同。 |
| 作品集项目 | 自动化质量和发布流程让作品集从 Demo(演示)升级成生产级方案。 |
| 求职面试模块 | 面试中可以用本章回答“你怎么保证上线质量”。 |
| 商业项目交付 | 发布门禁、人工批准和复盘会进入验收和维护协议。 |
本章也反向连接前面章节:
- RAG 章节:知识快照和资料下线决定检索结果。
- Tool Calling(工具调用)章节:工具契约和审批流变化要回归。
- 前端章节:工作台状态展示必须和后端发布状态一致。
- 可观测性章节:灰度和发布后复盘依赖日志、指标和 trace_id(追踪编号)。
- 安全章节:红队样例和人工批准依赖 Guardrail(护栏)和权限设计。
- 商业验收章节:客户验收样例可以转化为发布评测集。
版本与资料来源
本节聚焦自动化质量检查、发布门禁、灰度、回滚、内容发布和发布后复盘的工程设计与面试表达。
资料依据:
- 本书第 2.12 章可观测性:日志、Tracing(调用链追踪)、成本、限流与告警。
- 本书第 2.13 章安全、权限、Guardrail(护栏)与人工审批。
- 本书第 2.14 章商业项目需求访谈、报价与验收。
- OpenAI(模型服务商) Evals(评测)相关资料:https://github.com/openai/evals
- OpenTelemetry(可观测性标准)文档:https://opentelemetry.io/docs/
- OWASP Top 10 for LLM Applications(大语言模型应用十大安全风险):https://owasp.org/www-project-top-10-for-large-language-model-applications/
- DORA(DevOps Research and Assessment,研发效能研究)关于发布、变更失败率和恢复时间的工程实践资料:https://dora.dev/
过时风险:模型供应商、评测平台、发布工具、灰度能力、合规要求和企业审批流程会持续变化。进入真实项目开发前,必须重新核对当前模型文档、客户合规要求、企业发布规范和内容审批规则。