第 8 课 · AI 原生软件开发生命周期
Maintain: Close the Feedback Loop
本篇听书
配套视频里没有与本篇对应的段落
Maintain:从控制带异常回到新意图
维护阶段让流程真正闭环:触发器不等人手工开启会话,而是在指标越界、工单到达或计划任务触发时启动受限诊断。检测本身保持确定性;Claude 在越界后解释证据,并按权限层级写报告、提出 PR 或调用预先批准的回滚。较大的问题被写回 intent.md,再次进入计划—设计—构建—测试—部署链。
学习目标
- 能设计“确定性检测、代理诊断、人类分流”的控制带机制。
- 能按异常严重度限制代理动作,并复用正常 PR 与发布门禁。
- 能把事故、修复和 eval 连接成可追踪反馈链。
核心概念
控制带不是让模型自由监控所有指标。服务负责人先选择有稳定基线的指标,版本化并单元测试检测脚本;只有规则判定越界后才调用代理。官方手册举出日志、只读诊断和受控行动等层级,高层行动仍只能通过 PR 评审或预批准 Runbook。
代理将异常、证据、期望结果、受影响系统和开放问题写成计划阶段格式的 intent.md。值班或服务负责人决定立即修复、排期或驳回;驳回原因用于调节带宽、减少噪声。修复上线后,同类事故加入测试或持续 eval,避免维护知识只停在复盘文档里。
控制带配置、每次调用、发现、分流和批准都应留存时间与身份。代理不能获得通用生产访问;权限与托管设置限制工具,回滚只能调用已审核、已演练的路径。检测负责“何时启动”,代理负责“如何解释或准备动作”,人负责高风险取舍。
实践步骤
- 选择一个具有稳定滚动基线、且责任团队清晰的指标;先回放历史数据估算噪声。
- 用确定性脚本实现越界判断并写单元测试,配置与代码一起评审。
- 定义至少三档动作:记录、只读诊断、提出受控行动;每档明确工具和禁止项。
- 在隔离执行环境中非交互运行 Claude,把输入证据、输出、成本与身份写入日志。
- 输出统一的
intent.md或小型 PR,进入正常产品/工程分流与评审,不另开“快速绕过”通道。 - 对误报记录驳回理由并调参;对真实事故补充回归测试或 eval,追踪是否重复发生。
以下是 AIKnow 自行创作的 illustrative control-band example(示意控制带),不是 Anthropic 配置,也不应未经历史回放直接用于生产:
metric: checkout_api_p95_ms
baseline: rolling_median_21d_same_hour
owner: checkout-platform
levels:
observe:
condition: deviation_pct > 15 for 10m
action: record_evidence
investigate:
condition: deviation_pct > 30 for 10m
action: claude_read_only
allowed_tools: [Read, "Bash(gh run view *)"]
contain:
condition: deviation_pct > 60 for 5m and recent_deploy
action: propose_runbook
allowed_routes: [pull_request, rollback_checkout_v3]
在这个示例中,代理不能直接执行任意生产命令;最高档只能提出既有回滚路径,由发布门继续控制。
常见误区
- 让模型判断是否越界。 检测应确定、可回放、可单元测试;模型从越界事件开始工作。
- 异常一到就自动改生产。 先建立独立置信门、PR 路径和预批准 Runbook。
- 所有告警都变意图。 小而有边界的问题可以走 PR;较大、跨系统或目标不清的问题才回到 Plan。
- 只统计修复速度,不统计误报。 噪声会让人忽略队列,驳回率和重复事故同样重要。
动手练习
从你的监控系统挑一个非关键指标,在历史数据上定义三档控制带。为每档写允许工具、输出工件、审批人和超时升级路径。用三段历史异常回放:一次真实回归、一次流量峰值、一次监控故障。检查系统是否能给出不同分流,而不是把三者都变成自动修复。
要点回顾
闭环维护把生产证据重新送入意图链,但不把判断责任交给模型。确定性控制带决定何时启动,权限层决定能做什么,正常评审门决定动作能否生效,事故 eval 保证经验留在系统里。闭环越自动,人类判断门越要明确。
参考来源
- Anthropic / Claude 官方文章:The AI-Native SDLC playbook,重点参见 “Stage 6 — Maintain” 与 “Closing the loop”,核验日期:2026-08-26。
- Claude 官方文档:Run Claude Code programmatically,用于核验非交互运行方式,核验日期:2026-08-26。
- Claude 官方文档:Monitoring,用于核验 Claude Code 的 OpenTelemetry 指标、事件与身份属性;业务控制带和异常检测仍由团队的观测后端负责,核验日期:2026-08-26。