AI 产品开发生命周期(CC/CD)
AI 产品开发生命周期(CC/CD 框架)
同样是"上线一个 AI 功能",为什么传统软件的版本规划、测试、发布节奏全都不灵了?需求文档写清了功能边界,上线后用户却问出意料之外的问题;测试用例全绿,生产环境却时而正常、时而"发疯"。原因在于:AI 产品不能照搬传统软件的开发方式——AI 天然带有非确定性,且必须在"代理权(agency)与控制(control)"之间做权衡。正确的做法是用 CC/CD 循环(持续校准 / 持续开发)代替一次性的规划与发布,让系统一步步"赚取"代理权。
本文按「为什么不一样 → 循环总览 → CD 各阶段可操作清单 → CC 各阶段运营 → 成熟度模型 → 完整走查」展开。每个阶段都给出清单、表格与模板,可以直接抄进你的立项文档和 PRD。
为什么 AI 产品不一样
非确定性:两端都不可控
传统软件是确定的:输入可枚举(点击、提交、调 API),行为可预期,出了问题能追溯到具体代码。AI 产品两端都不可控:
- 用户侧:开放式提示、语音等自然输入,难以验证、容易误解、表达差异大
- 系统侧:模型按模式生成"合理"回答,不守固定规则;同一请求因措辞、上下文、模型不同而结果不同
影响是什么?我们不再是为"可预期的用户流程"设计,而是为"大概率行为"设计,全程持续校准预期与现实。设计评审里那句"这个功能谁会这么用"在 AI 产品里必须换成"这个输入模型会怎么错"。
代理权与控制权的权衡
Agency(代理权)指系统替用户行动、做决策的能力——订机票、执行代码、全程处理工单。它与控制权此消彼长,扩权路上的每一步都绕不开这组权衡:
- 每多给系统一分代理权,就少一分控制。 建议式回复可以覆写;自动发送就必须确保正确
- 常见错误:系统还没证明自己"犯错时可控",就直接跳到全代理。后果是失去可见性、失去用户信任,而且系统已经做出无法追溯的动作,无从调试
- 原则:代理权要靠表现逐步赚取,而不是一次性授予
关于代理权与人工交接的实操细节,可参考站内 Agent 产品。
AI 产品形态分层
「是不是 AI 产品」在实操上没有意义,真正要紧的是产品以什么形态替用户做事。形态决定了能力假设、失败半径、产品责任和人工接管方式,也决定了评测与灰度该怎么做。按自主程度从低到高分为五层:
| 形态 | 能力假设 | 失败半径 | 产品责任 | 人工接管方式 |
|---|---|---|---|---|
| 辅助生成 | 模型输出可被用户审查、修改 | 用户时间被浪费、被错误信息误导 | 输出质量、可编辑性、来源标注、防过度自信 | 用户天然在环内,直接编辑;无额外接管机制 |
| 工作流嵌入 | 模型在受限输入空间内稳定(分类、抽取、路由) | 单环节出错、下游跟着错 | 输入约束、输出 schema、降级路径 | 低置信度跳过该环节转人工复核 |
| 工具调用 | 模型能正确选择并调用工具 | 工具副作用不可逆(发错消息、扣错款) | 工具最小权限、确认点、审计留痕 | 高风险工具执行前人工确认 |
| 多步 Agent | 模型能规划、拆解、执行并自纠错 | 长链路错误累积、成本失控、不可见 | 步骤预算、可观测性、持久化、检查点 | 随时可打断,从检查点恢复或接管 |
| 自主执行 | 错误可回滚且影响范围受约束 | 系统级事故、无人值守失控 | 沙箱、护栏、熔断、审计、值班 | 绊线(tripwire)触发自动降级 + 人工介入 |
三层以下(辅助生成、工作流嵌入)绝大多数场景是确定性的工作流:Anthropic 官方建议先找最简单的方案,只在确有收益时增加复杂度,很多应用优化单次 LLM 调用就够了(Building Effective Agents)。四层以上(多步 Agent、自主执行)才需要考虑 Agent 特有的成本与失败恢复问题,详见 Agent 产品。产品经理在立项时先问一句:这个功能到底需要哪一层?答不上来就按低一层做。
一张表看懂差异
| 维度 | 传统软件 | AI 产品 |
|---|---|---|
| 行为 | 输入可枚举,结果可预期 | 输入开放式,输出概率性 |
| 测试 | 断言精确结果 | evals 评估"做得好不好" |
| 版本划分 | 按功能集 | 按代理权层级 |
| 上线 | 发布即完成 | 上线只是校准的过渡 |
| 出问题 | 追溯代码定位 | 从日志与人工审查找错误模式 |
CC/CD 循环总览
借 CI/CD 的名字,它适用于"行为非确定、代理需赚取"的系统。开发(CD,Continuous Development)与校准(CC,Continuous Calibration)构成持续循环:
CC/CD 循环总览
CD 1 划定能力范围 → CD 2 搭建应用 → CD 3 设计评测 → 部署(过渡) → CC 4 运行评测 → CC 5 分析错误模式 → CC 6 应用修复 → 回到 CD 1……
- CD 1 划定能力范围:按代理权层级切版本,整理参考数据
- CD 2 搭建应用:不过度工程化,埋好日志,设计控制交接
- CD 3 设计评测:为"非确定性的任务做得好不好"定标准
- 部署:不是终点,是进入校准的过渡,先部署到小范围人群
- CC 4 运行评测:用真实交互数据检验效果
- CC 5 分析错误模式:人工审查最弱环节,把错误模式文档化
- CC 6 应用修复:数据驱动地修,改完重跑评测
每一轮循环系统获得更多代理权,形成飞轮:反馈收紧 → 信任建立 → 产品变强。
每轮循环的输入与产出:
| 输入 | 产出 |
|---|---|
| 真实交互日志(系统看到什么、返回什么、用户怎么改) | 更新后的评测集、错误模式文档、下一版代理权范围 |
| 参考数据集(种子评测集 + 回归集) | 已修复的 prompt / 检索 / 模型配置 |
| 线上指标(采纳率、改路由率、转人工率、成本) | 是否升级代理权的决策依据 |
循环节奏没有固定天数,由「拿到多少可信行为信号」决定:灰度样本不足就继续观察,指标稳定就升级。这也和站内 项目管理与迭代 的迭代节奏互相补充——CC/CD 回答"每一轮做什么、怎么算好",项目管理回答"怎么排期、怎么跟"。
适用边界:什么时候不需要 CC/CD
框架不是万能咒语,以下情况不要套 CC/CD,直接走传统流程更便宜:
- 纯规则系统:输入可枚举、行为确定(表单校验、权限控制),传统测试就够
- 单次调用工具:一次请求一次返回、无持续运营(一次性翻译、单次摘要),没有"循环"可跑
- 无真实用户:没有线上行为信号,CC 阶段无米下锅——先用 spike 和原型验证需求(见 需求分析)
- 短命活动:三天后下线的活动页,不值得建评测体系
判断标准两条:有没有非确定性(模型行为不可精确断言)+ 有没有持续迭代闭环(能拿到真实反馈并回灌)。两者缺一,CC/CD 就是过度工程。此外,CC/CD 与 产品设计与原型 的发现流程是先后关系:先用原型验证"用户要不要",再用 CC/CD 把"怎么持续变好"跑起来。
持续开发(CD):从 0 到 1
CD 0:问题与可行性定义
动工前先把"这个 AI 功能到底能不能做、值不值得做"用一张表说清楚。逐项检查:
| 检查项 | 要回答的问题 | 不过关的信号 |
|---|---|---|
| 任务可分解性 | 任务能否切成可验证的子步骤? | 只能整段评价"感觉好不好",拆不出可断言步骤 |
| 容错率 | 出错一次的真实代价是什么? | 代价不可逆(误诊、误扣款、法务风险)且无兜底路径 |
| 数据可得性 | 有没有足够的历史样本(日志、工单、对话)? | 连 20 条样例都凑不齐 |
| 标签来源 | 谁有资格标注"什么是对的"? | 正确答案本身有争议、无权威仲裁者 |
| 基线方案 | 现状是怎么做的(人工/规则/旧系统)?指标基线是多少? | 不知道现状的准确率与成本,就无法证明 AI 更好 |
| 经济价值 | 节省的人力、提升的转化是否覆盖模型成本? | 收益与成本同数量级甚至更小(算账方法见 LLM 成本估算) |
| 合规边界 | 数据能用吗?输出能自动分发吗? | 命中隐私、内容安全或行业监管红线(见 出海与合规) |
把"模型能不能做到"拆成可验证的 spike 清单——每个 spike 是带时间盒的小实验,回答一个具体的「能不能」:
| 待验证问题 | spike 设计 | 通过标准 | 时间盒 |
|---|---|---|---|
| 分类准确率够不够 | 手工构造 20 条典型/边界输入,跑模型记录结果 | 与人工标注一致 ≥ 80% | 1~2 天 |
| 检索能不能召回正确资料 | 10 个真实 query,检查 Top-3 命中 | Top-3 召回 ≥ 70% | 1 天 |
| 延迟和成本能不能接受 | 真实 prompt 压测,记录 p95 延迟与 token 数 | p95 < 3 秒,单次成本在预算内 | 半天 |
| 输出格式是否稳定 | 同输入重复 10 次,检查 schema 解析失败率 | 解析失败率 < 5% | 半天 |
spike 的产出不是"模型很厉害"的感慨,而是一串可复现的数字:准确率、召回率、延迟、成本、失败率。这些数字直接成为 PRD 能力边界与评测通过线的第一版依据。
CD 1 划定能力范围 + 整理参考数据
能力范围与代理权阶梯
版本不再按功能集划分,而是按代理权层级划分:v1 = 高控制低代理,v2 逐步放开,v3 高代理。把宏大终态拆成可评测、可迭代、可叠加的早期行为:
- 客服自动化:v1 只做工单路由 → v2 建议解决方案 → v3 自动解决(带人工兜底)
- 营销助手:v1 起草文案 → v2 搭建并执行多步 campaign → v3 自动上线、A/B、跨渠道自动优化
- 编程助手(GitHub Copilot / Cursor 实际走的路径):v1 行内补全 → v2 生成大块代码供人审 → v3 自主改代码并开 PR
每一级代理权都要写明准入信号、护栏、回退机制、退出条件。参考 Claude Code 的权限模型(Manual 模式逐次征求批准、Auto 模式由分类器拦截风险操作、沙箱限定边界,见 Claude Code 安全文档)与 Building Effective Agents 的「先简单后复杂」原则,可整理成一张通用阶梯:
| 层级 | 行为 | 准入信号 | 护栏 | 回退机制 | 退出条件 |
|---|---|---|---|---|---|
| L0 只读/建议 | 读数据、出建议,不落库不改状态 | 无(冷启动即开放) | 输出标注"仅供参考" | 用户忽略即可 | 数据被持续采用 |
| L1 生成草稿 | 产出可编辑的文本/代码/方案 | 建议采纳率达标 + 无重大误导 | 来源标注、可编辑、不可直发 | 用户直接编辑或弃用 | 草稿修改率长期过高 |
| L2 确认后执行 | 在用户确认后执行动作(发送、转派、下单) | 草稿阶段无 P0 事故 + 修正成本可控 | 不可逆操作必须确认(参考 Claude Code「非白名单即拒绝」的 fail-closed 原则) | 用户拒绝确认即中止 | 确认通过率持续达标 |
| L3 受限自治 | 在限定范围/预算内自动执行并可自纠错 | 确认后执行阶段指标稳定 + 有验证闭环 | 步骤预算、成本上限、沙箱、绊线 | 绊线触发自动降级到 L2 | 自治期事故率超阈值 |
| L4 全自主 | 无人值守跨系统执行 | 长时间受限自治无事故 + 错误可回滚 | 熔断、审计、值班、可恢复检查点 | 一键停用 + 人工接管 | 出现不可回滚事故 |
用户只看到当前版本,但底层是逐级爬上来的。每个版本停留多久,取决于拿到多少行为信号——目标是把系统在真实噪声下的表现搞清楚。放行下一级前先回答两个问题:错误是否被约束在可回滚范围内?有没有评测证据证明当前级达标?(代理权与信任的展开见 Agent 产品)。
参考数据集治理
参考数据集(reference dataset)打破冷启动:比如客服路由版需要"用户 query + 应路由部门 + 决策元数据"。可从历史日志取,或按预期行为生成,起步 20~100 条即可。数据集一旦开始积累,就要按工程资产治理,六件事缺一不可:
- 代表性:覆盖真实场景分布,而非只挑好例子;用线上日志统计场景占比,按占比抽样
- 隐私脱敏:入库前去除可识别个人信息(姓名、手机号、工号、地址),脱敏要在写入日志时做,而不是评测时
- 版本管理:每个数据集有版本号与变更记录;标注修正要产生新版本,禁止原地改旧版本
- 标注协议:标注指南先行("什么是正确"的判定规则 + 正反例),标注人需培训并试标;写明"可接受的答案范围"而非唯一答案
- 分歧仲裁:双人标注、计算一致性(如 Cohen's κ),分歧条目由权威角色(客服主管、领域专家)仲裁
- 边界/对抗样本与漂移监控:持续补充边界与对抗样本;定期对比线上输入分布与数据集分布,分布明显偏移时重采样
种子评测集的最小 schema(可直接抄用):
1 2 3 4 5 6 7 8 9 10 | |
CD 2 搭建应用
- 不要过度工程化("过早优化是万恶之源")——只建当前版本需要的东西
- 埋好日志:记录系统看到什么、返回什么、用户怎么交互,形成实时交互数据集
- 面向终端用户必须做好 guardrails 和合规
- 关键设计:控制交接(control handoff)——出错时人类能无缝接管。比如 v1 工单被错路由,接收的客服要能一键改路由;这个修正会被记录,既改进系统又保住体验。信任和可恢复性从这一步开始
系统搭建
最小可用系统的组件清单(每项都可替换、可降级,不要一开始就追求完美架构):
| 组件 | 决策点 | 常见错误 |
|---|---|---|
| 模型选型 | 能力/成本/延迟/服务条款四维对比(见 LLM API 与供应商) | 旗舰模型一把梭,简单分类也用大模型 |
| 检索 | 向量检索 or 混合检索、上下文截断策略(见 RAG 基础) | 资料整库塞进 prompt,又贵又容易幻觉 |
| 工具调用 | 工具清单最小化、入参出参 schema、权限边界 | 工具权限过宽,出"AI 把公司文件删了"级事故 |
| 编排 | 固定工作流 vs Agent(步骤能否预先枚举?结果能否自动验证?) | 上来就上多 Agent,链路冗余、职责模糊(见 Agent 产品) |
| 缓存 | prompt 缓存(稳定前缀吃折扣)、结果缓存(相同请求复用) | 不做缓存,重复请求反复烧钱 |
| 降级路由 | 低置信度 → 规则/小模型/转人工的显式路径 | 只有一条路,模型挂了产品就瘫 |
| 日志 schema | 见下表,统一字段、带 trace ID | 只记"调用了模型",事后无法复盘 |
| PII 处理 | 脱敏在写入日志前执行,敏感字段白名单 | 日志裸存手机号,评测集泄露用户信息 |
| 审计追踪 | 谁在何时改了什么(模型版本、prompt 版本、阈值) | 配置改完无记录,事故无法追溯 |
「客服工单助手」v2 的端到端示意图(文本版):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
日志 schema 建议最少包含这些字段(每行日志都可回放成一次完整交互):
| 字段 | 说明 | 示例 |
|---|---|---|
| trace_id | 全链路关联 ID | t-20260824-0001 |
| 输入 | 用户原始输入(脱敏后) | 退款申请被拒 |
| 模型输出 | 结构化输出(路由 + 置信度 + 理由) | {dept: 退款, conf: 0.82} |
| 模型版本 / prompt 版本 | 便于行为 diff 与回滚 | claude-sonnet-4-2026-08 / v3 |
| 延迟 / token 数 | 体感与成本 | 1.2s / 1800 in, 120 out |
| 人工动作 | 采纳 / 修改 / 拒绝 / 转人工 | modified: 退款→投诉 |
| 最终状态 | 工单最终结果 | resolved |
CD 3 设计评测
Evals 相当于传统软件的测试,但输入输出不固定、正确性非二元,专门回答"非确定性的任务做得好不好"。设计要点:
- 完全应用相关:客服 v1 用路由准确率;v2 做 SOP 检索,评测改为检索质量(建议是否贴合工单)
- 最佳实践:先用参考数据集跑评测,验证评测设计本身、提前调优;追求关键用例的广覆盖,不追求完美
评测体系
评测不是"跑个分",而是五层结构各司其职:
| 层次 | 回答什么 | 做法 | 注意 |
|---|---|---|---|
| 离线评测集 | 改完还是不是更好? | 种子集 → 扩充 → 版本化,每次变更必跑 | 防污染:测试用例不进 prompt 与训练数据 |
| 在线行为信号 | 真实用户下表现如何? | 采纳率、改路由率、转人工率、投诉率、重试率 | 噪声大、归因难,与离线集互为补充 |
| 人工审查 | 指标抓不到的问题是什么? | 每周抽 20~50 条真实交互,按评分卡打分 | 双盲、多人独立评分、算一致性 |
| 红队 | 攻击者视角能打穿吗? | 越狱、注入、有害内容、隐私套取 | 每个新模型/新 prompt 上线前跑,失败用例沉淀为回归项 |
| 回归集 | 修 A 有没有弄坏 B? | 历史所有 badcase + 关键 happy path,CI 里自动跑 | 回归集是"上线许可"的一部分 |
LLM-as-judge 可以大幅降低人工评测成本,但必须校准:先检查位置偏差、长度偏差、自我偏好三类系统偏差,再用一小批人工标注样本验证 judge 与人工的一致性达到阈值(如 80%)才可批量使用(详见 评估与评测)。Judge 是过滤器和初筛,不是最终裁判。
指标公式要写清分子、分母、样本、观测周期和行为含义,否则"提升 5%"无法解释也无法复现:
| 指标 | 公式 | 样本与观测周期 | 行为含义 |
|---|---|---|---|
| 路由准确率 | 正确路由数 ÷ 总工单数 | 评测集全量;每次变更跑 | 系统判断与人工判断一致的比例 |
| 人工改路由率 | 被人工改动的建议数 ÷ 展示建议总数 | 线上全量;按周聚合 | 建议质量的反向代理指标,越低越好 |
| 建议采纳率 | 被采纳的建议数 ÷ 展示建议总数 | 线上全量;按周聚合 | 建议有用性的正向信号 |
| 转人工率 | 转人工请求数 ÷ 总请求数 | 线上全量;按周聚合 | 自动化覆盖率,降本核心指标,需配合质量看 |
| 平均处理时长 | 工单总处理时长 ÷ 工单数 | 线上全量;按周聚合 | 业务结果,直接对应客服人效 |
| 单次解决成本 | 总 token 成本 ÷ 解决的请求数 | 线上全量;按月聚合 | 单位经济,与人工处理成本对比(见 LLM 成本估算) |
评测必须连接业务结果:路由准确率涨 3% 不是目标,目标是"工单平均处理时长从 6 小时降到 4 小时"。如果只有基准分上涨、业务指标不动,那评测体系本身就该被质疑——只涨基准分的指标是幻觉指标。
部署与灰度(过渡)
不是终点,是进入校准阶段的过渡。带日志、人工接管、评测指标上线后,先部署到小范围人群观察。灰度路径按风险递增:
| 阶段 | 做什么 | 主要观察 |
|---|---|---|
| 影子模式 | 系统与现有流程并行,输出只记录不展示 | 输出质量分布、幻觉率代理、成本 |
| 内部用户 | 团队/客服自用,真实工作流里试用 | 主观质量、可接管性、反馈 |
| 白名单 | 少数信任客户/工单接入 | 质量 + 业务指标初值 |
| 比例灰度 | 10% → 25% → 50% → 100% 放量 | 指标达标曲线、归因噪声 |
| 分群发布 | 按渠道/客户类型/地域切分 | 场景差异、地区合规差异 |
所有灰度开关必须用 feature flag 承载(代码级开关,不用发版控制);同时挂预算熔断——日成本超阈值自动降级或停用,防止放量时成本失控。放量前定好升级/停止/回滚责任表:
| 动作 | 触发条件(示例) | 责任人 | 时限 | 恢复方式 |
|---|---|---|---|---|
| 升级(10% → 50%) | 改路由率 ≤ 5/万单且无 P0 事故,观察 ≥ 3 天 | 灰度负责人 | 按计划 | 指标恶化则回退上一档 |
| 停止(暂停放量) | 改路由率超阈值 / 延迟 p95 超 3 秒 / 投诉率上升 | on-call PM | 15 分钟 | 保持当前档位 + 低置信度全部转人工 |
| 回滚(全量退回) | P0 事故 / 成本超熔断线 / 数据泄露 | 值班负责人 | 5 分钟 | 切回旧版本或影子模式 |
所有阈值都是示例——具体数字必须按自身风险承受度与基线数据调整,不要拿别人的阈值当行业标准。
灰度对比的统计纪律:对照分组要随机,排除时间因素(节假日、大促、活动引流);观测期至少覆盖一个完整业务周期(如 7 天);改路由率这类小分母指标样本量不足时先看置信区间再谈升降,不要拿三天数据下结论(统计方法见 评估与评测 的线上评估一节)。
持续校准(CC):让系统"赚取"代理权
CC 4 运行评测
收集足量实时交互数据后跑评测:数据小(2000~3000 条)就全量跑,否则按代表性抽样。
抽样信号示例:客服 v1 可以用"是否被人工改路由"作为路由准确率的代理指标;复杂系统看对话轮数、赞/踩等。跑评测要固定"评测集版本 + 模型版本 + prompt 版本 + 采样日期"四元组,否则分数之间不可比。
CC 5 分析错误模式
从评测最弱的环节入手做人工审查:每个部门抽 20~50 条低分工单,看用户说了什么、系统做了什么、结果如何。归纳重复错误模式并文档化,据此划定下一版范围:
| 错误模式 | 触发条件 | 影响 | 可能的修复方向 |
|---|---|---|---|
| (示例)错误路由 | 用户用简称/方言描述工单 | 工单流转慢,客户等待 | 补充同义词到路由规则,或换检索方式 |
错误分类学与抽样策略
错误模式要有统一的分类学,否则复盘会变成各说各话。建议按"错误发生的位置"分类:
| 类别 | 典型表现 | 常见根因 | 检测方式 |
|---|---|---|---|
| 意图误判 | 分类/路由错了 | 训练分布偏斜、方言/简称 | 人工改路由率、分类评测集 |
| 检索失败 | 没召回正确答案 | 切分策略、embedding 模型、query 表达 | Top-k 命中率、引用被质疑率 |
| 生成错误 | 幻觉、答非所问 | prompt 含糊、上下文截断 | 忠实度抽查、引用核验 |
| 行为错误 | 工具调错、步骤乱序 | 工具描述不清、编排缺陷 | 工具调用日志、终态评测 |
| 体验错误 | 用户困惑、反复追问 | 文案、格式、交互设计 | 重试率、会话深度、可用性测试 |
| 系统错误 | 超时、限流、解析失败 | 上游不稳定、schema 过紧 | 延迟分位数、错误率看板 |
抽样策略:分层抽样优于随机抽样——按场景分类、置信度区间、时段分层,保证每个弱势群体都有样本;低置信度段全量抽,高置信度段随机抽。
根因分解、修复优先级与效果归因
拿到错误样本后按「数据 / 检索 / prompt / 模型 / 工具 / UI」六个方向做根因分解,每个方向对应不同的修复手段与回归方式:
| 根因 | 证据特征 | 修复手段 | 回归方式 |
|---|---|---|---|
| 数据问题 | 同类输入系统性错、标注本身有分歧 | 补数据、修标注、加同义词 | 数据集出新版本,重跑全量 |
| 检索问题 | 正确资料没进上下文 | 调切分/重排/混合检索 | 检索评测集单独跑分 |
| prompt 问题 | 同一批输入错法一致且符合 prompt 诱导 | 重写指令、加示例(见 提示词工程) | 评测集 + 回归集全量 |
| 模型问题 | 跨场景普遍性下降 | 换模型/升级版本(见下节"模型与供应商变更") | 新旧模型行为 diff |
| 工具问题 | 错误集中在特定工具调用 | 改工具描述、收窄参数、加确认点 | 工具调用测试集 |
| UI/体验问题 | 用户操作路径错、反馈错位 | 改交互与文案 | 可用性测试 + 线上指标 |
修复优先级 = 影响面(出错频率 × 单次代价)× 修复成本倒数。不要按"哪个好修"排序,按"哪个最痛"排序。
效果归因的纪律:一次只改一个变量;改前改后在同一评测集版本上对照;线上指标要区分混杂因素(节假日、活动、流量变化);改完必须回到 CC 4 重跑,不靠"感觉变好了"。
「错误模式 → 证据 → 修复 → 回归」模板
每次 CC 迭代都按这个模板记录,沉淀为团队的迭代档案。每个结论都要有证据支撑,下结论前同类错误样本至少积累 10 条,避免拿个例当模式:
| 错误模式 | 证据(样本/统计) | 根因 | 修复动作 | 回归结果 | 是否进入下一版范围 |
|---|---|---|---|---|---|
| 用户说"退钱"被路由到咨询 | 23 条低分工单,改路由率 31% | 同义词缺失 | 路由规则补 12 个同义词 + 评测集加 8 条对抗样本 | 对抗集准确率 72% → 88% | 是 |
| 中英混杂工单全部被拒答 | 8 条拒答样本,均为"发票 PDF"类 | 输入校验过严 | 放宽输入校验 + 拒答话术改为引导补充信息 | 拒答率 6% → 1.5%,无新增错误路由 | 是(先修再放量) |
CC 6 应用修复
- 修复手段取决于坏了什么:prompt 调整、换更好的模型、改进检索质量、拆分任务加组件
- 这是该工程化的时候(对应 CD 2 的"别过度工程化"),但必须由数据驱动,不靠猜
- 迭代节奏:改 → 重跑评测 → 再改,有数据就不必每次重新部署
- 评测本身也常失效(基于"预期用户行为"设计,而真实行为非确定),重做评测完全正常,通常要跑多轮
模型与供应商变更
"换模型"在传统软件里约等于换数据库驱动,在 AI 产品里等同于改产品范围:能力边界、失败模式、成本结构、延迟、评测基线全部会变。必须按变更管理对待:
| 动作 | 要求 |
|---|---|
| 固定版本 | 生产环境锁定模型版本与 API 版本,不追"最新";记录 prompt 版本 |
| 升级候选集 | 新模型先跑全量离线评测集 + 回归集,出行为 diff 报告 |
| 行为 diff | 同输入新旧输出并排对比,重点看失败模式是否迁移(老错误好了、新错误来了) |
| 灰度替换 | 新旧模型按比例并行,对比在线指标(见"部署与灰度"责任表) |
| 回滚 | 旧版本随时可切回;供应商侧版本下架是真实风险,评估时要问"下线通知期多久" |
| 成本变化 | 单价、缓存折扣、批处理折扣都可能变,重新算单位经济(见 LLM 成本估算) |
| 服务条款变化 | 数据使用政策、合规承诺可能变化,法务过一遍(见 出海与合规) |
判断标准一句话:任何模型变更都要有"评测集分数 + 在线指标 + 成本 + 失败模式迁移"四张对照表,缺一张不许上线。
安全、合规与组织流程
- 敏感场景审批:高风险功能(金融、医疗、未成年人、自动分发)上线前走审批链,审批依据是评测报告 + 责任表,不是"感觉没问题"
- 人类监督职责:每个代理权层级写明"谁盯、盯什么、值班表";全自主执行必须有值班与升级路径
- 事故响应:按严重度分级(P0 数据泄露/资金损失 → P1 大面积错误 → P2 局部异常),每级有响应时限、责任人、复盘模板
- 模型卡/系统卡:参考大厂披露做法(OpenAI / Anthropic 的系统卡),为每个模型+产品组合维护一张卡:能力、已知限制、风险、缓解措施
- 审计留痕:prompt、模型版本、阈值、数据集的每次变更都留记录——这是"出错可追溯"的底线
生成式内容自带合规风险,具体红线(隐私、内容安全、算法备案、跨境传输)见 出海与合规;涉及 Agent 权限与护栏的安全设计见 Agent 产品 的清单。
成熟度模型:从 Demo 到可审计系统
同一个 CC/CD 循环,不同组织阶段跑出来的味道完全不同。用五级成熟度给团队定位,每级有明确的进入条件与退出信号:
| 级别 | 名称 | 进入条件 | 退出信号(升级依据) |
|---|---|---|---|
| L1 | Demo | 模型跑通演示用例 | 出现真实用户(哪怕 5 个) |
| L2 | 可控试点 | 种子评测集(≥ 20 条)+ 日志 + 人工接管 + 灰度开关 | 连续两轮 CC 后指标稳定,无未决 P0 |
| L3 | 稳定功能 | 回归集 + SLO(可用性/延迟目标)+ 降级路由 + 成本护栏 | 线上指标与评测指标一致,跨季度不漂移 |
| L4 | 可扩展平台 | 评测自动化(CI 里跑)+ 数据回流闭环 + 多场景复用 + 多租户隔离 | 新增场景能在 1~2 轮 CC 内达到现有水平 |
| L5 | 可审计关键业务系统 | 审计追踪 + 模型卡/系统卡 + 事故响应流程 + 监管合规 | 能向审计方完整回答"系统为何做出某个决定" |
从 L2 升 L3 最常见的卡点是"评测指标与线上指标不一致"——说明评测集代表性不足,先回去修评测,不要硬升。成熟度升级和代理权升级一样,要拿证据换,不是拿 PPT 换。
一个完整走查:客服工单助手
把框架套到一个具体场景,六步走一遍:
- CD 1:把"智能客服"拆成代理权阶梯——v1 只做工单路由,v2 在路由之外建议解决方案,v3 才自动解决。参考数据集用历史工单整理出 50 条"用户 query + 应路由部门 + 决策元数据"
- CD 2:v1 只搭路由模型 + 路由界面。日志记下"模型把工单分到了哪个部门、置信度多少";客服界面放一个"一键改路由"按钮,修正结果写入日志——控制交接就落地了
- CD 3:评测指标定为路由准确率。先用参考数据集跑一遍,确认评测设计合理(比如人工标注的"应路由部门"是否与真实客服判断一致)
- 部署:先只给 10% 的工单开"路由建议"(不自动转派),观察真实使用
- CC 4:累积 2000~3000 条真实工单后全量跑评测,代理指标是"是否被人工改路由"
- CC 5:从最弱环节(比如"投诉类工单路由准确率最低")抽 30 条人工审查,发现用户常把"退款"说成"退钱",文档化成错误模式
- CC 6:修复方式是给路由规则补同义词(或换检索方式),重跑评测确认提升后进入下一轮——此时 v2 的"建议解决方案"才有资格开工
注意第 6~7 步的顺序:先有数据证明"犯错可控",才拿到下一级代理权。
完整阶段表(覆盖数据、评测、UI、人工接管、指标、风险与下一版门槛):
| 阶段 | 数据 | 评测 | UI | 人工接管 | 核心指标 | 主要风险 | 下一版门槛 |
|---|---|---|---|---|---|---|---|
| v0 影子 | 从历史工单抽 50 条种子集 | 路由准确率 ≥ 90%(对抗集 ≥ 80%) | 无界面,输出只进日志 | 无(不展示) | 潜在准确率、成本/单 | 评测集代表性不足 | 准确率达标且样本量足够 |
| v1 路由建议 | 种子集扩到 200 条,含边界/对抗 | 同上 + 回归集 | 客服界面:路由建议 + 置信度 + 一键改路由 | 一键改路由,修改写回日志 | 改路由率 ≤ 5/万单、采纳率 | 低置信度建议误导客服 | 改路由率连续 2 周达标 |
| v2 解决方案建议 | 加入工单正文与知识库 query | 检索质量(Top-3 命中 ≥ 70%)+ 建议贴合度 | 建议卡片:要点 + 引用来源 + 采纳/修改 | 客服可编辑建议后再发送 | 建议采纳率 ≥ 60%、处理时长 | 建议含错误信息被直接发出 | 采纳率达标且无 P0 误导 |
| v3 自动解决 | 加入结果回流(工单闭环状态) | 解决率、用户满意度 | 自动回复 + 可见的"由 AI 处理"标识 | 用户可一键转人工,客服可接管 | 自动解决率、转人工率、投诉率 | 自动回复引发客诉升级 | 转人工率与投诉率双达标 |
核心原则
- 别用技术引领(Never lead with the tech)。让问题、评测、数据决定下一步加什么,复杂方案只在真正解决实际问题时引入。太多团队只追最新工具框架,却在错误方向上浪费大量成本
- 像带新同事。再聪明的新人也不会第一天就接手最高风险项目——从小事开始,观察、建立信任、逐步扩权。AI 系统同理:先让它给建议,再让它执行动作,最后才让它独立做决定
- 评测是信任额度。放权给系统的每一级,都对应一份评测证据;没有证据的放权是赌博(信任基线的展开见 Agent 产品)
- 上线是校准的开始,不是结束。发布即完成的思维在 AI 产品里直接等于放弃观察窗口
- CC/CD 的底层是判断力:发什么、出错时怎么保护用户、何时交还控制、何为"足够好"。框架只是给优秀的产品直觉一个循环、节奏和共同语言——比如用它来校准 项目管理与迭代 里提到的迭代节奏
常见误区
- 一上来就全代理:还没证明"犯错时可控",就直接让系统自动执行。正确做法是 v1 先给建议,用数据换代理权
- 先选技术,再找问题:模型、框架、Agent 编排都不该是起点;问题、评测、数据才决定下一步
- 评测建完就不管:真实行为非确定,评测集会随使用变化而失真;评测失效要重做,这是正常节奏,不是失败
- 把部署当终点:上线不是交付完成,而是校准阶段的开始;不带日志和人工接管上线,等于放弃观察窗口
- 只涨基准分:评测指标与业务结果脱钩,分数好看、业务不动——这是评测体系失效的信号,先修评测
- 换模型不重测:把模型升级当普通依赖升级,不做行为 diff 和回归;"换模型 = 改产品范围",必须走变更流程
- 数据集不治理:无版本、无标注协议、无脱敏,评测集沦为"谁的记忆好谁说了算"
求职与面试视角
面试 AI 产品设计题时,可以用 CC/CD 框架回答"如何从 0 设计一个 AI 功能":先按代理权拆 v1 → v2 → v3,再讲参考数据、评测指标、人工兜底——比直接堆功能清单高级得多。
一个可复用的答题骨架:
- 切版本:按代理权层级拆 v1/v2/v3,每级说清"系统能做什么、不能做什么"
- 定评测:离线评测集(20~100 条种子,典型/边界/对抗)+ 线上行为指标(采纳率、改路由率)+ 人工抽检
- 设计兜底:控制交接(一键改路由/转人工)、降级路径、成本护栏
- 讲灰度:影子模式 → 白名单 → 比例放量,每档的升级与回滚条件
- 闭环:badcase 回流 → 错误模式 → 修复 → 回归 → 下一级代理权
记住两句金句:"代理权要赚取,不要授予";"Never lead with the tech"。
该框架也能反哺日常判断:任何"直接上全自动"的方案,都值得先问一句"能不能先做成可覆写的建议"。面试追问"换模型怎么评估"或"评测失效怎么办"时,用本文的"模型与供应商变更"和"CC 阶段运营"两节回答,能体现真正的实操深度。
总结
| 阶段 | 关键动作 | 产出 |
|---|---|---|
| CD 0 | 可行性七查 + spike 验证 | 可复现的能力数字 + 可行性结论 |
| CD 1 | 按代理权层级切版本、整理参考数据 | 版本阶梯 + 参考数据集(20~100 条) |
| CD 2 | 搭最小可用应用、埋日志、设计控制交接 | 可观测、可接管的系统 |
| CD 3 | 定义应用相关评测、用参考数据先行验证 | 评测集 + 评测设计 |
| 部署 | 小范围人群灰度上线 | 实时交互数据 |
| CC 4 | 全量或抽样运行评测 | 行为数据与代理指标 |
| CC 5 | 人工审查最弱环节、文档化错误模式 | 错误模式表 + 下一版范围 |
| CC 6 | 数据驱动修复、重跑评测 | 变强的系统,进入下一轮 |
下次设计 AI 功能,你能先画出一张代理权阶梯吗?
来源说明
本文由本站原创撰写,参考以下来源:
- 社区讨论:linux.do 帖子 AI 产品需要一个不同的开发生命周期(译自英文原文 Why your AI product needs a different development lifecycle),观点归原作者;本文在其 CC/CD 框架基础上扩展了 CD 0、评测体系、灰度责任表、成熟度模型等可操作内容
- 官方文档与博客:Anthropic — Building Effective Agents(工作流 vs Agent、先简单后复杂)、Claude Code 安全文档(权限模型、fail-closed、沙箱)、Claude Code 最佳实践(验证闭环、回退机制)、OpenAI Agents 指南(Agent 定义与能力边界)
- 经典著作与论文:Eric Ries, 2011, The Lean Startup(构建-测量-学习循环);Marty Cagan, 2018, INSPIRED(连续发现与交付、价值风险);Teresa Torres, 2021, Continuous Discovery Habits(持续发现节奏)
- 仓库原创读书笔记:本站 《精益创业》精读笔记、《启示录》精读笔记
- 站内体系:评测方法论见 评估与评测,Agent 设计见 Agent 产品,成本测算见 LLM 成本估算,合规红线见 出海与合规
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:AI-PM Wiki Team
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用