跳转到内容

第 18 周:把服务交给别人运行

直接答案: 第 18 周的目标不是再写一份运维文档,而是让一个没有参与开发的人,在作者不提示的情况下,完成“发现任务异常 → 判断故障归属 → 止损或回滚 → 重跑用户任务 → 对外说明”。只要关键步骤仍依赖作者口头补充,服务就还没有真正交出去。

为什么“文档齐全”仍可能无法交接

标题“为什么“文档齐全”仍可能无法交接”

交接失败通常不是缺少文件,而是文件没有连接成运营者可以执行的判断:

用户症状
→ 找到对应 task_run_id
→ 判断:外部依赖故障 / 本次发布回归 / 权限或数据问题
→ 选择:降级与关闭开关 / 完整版本回滚 / 停止并升级
→ 重跑正常、拒绝、升级和写入路径
→ 核对任务终态、权限与外部效果
→ 给一线与决策者发布状态说明

一个“服务在线”的仪表盘不能替代这条链。对一线而言,能打开页面但拿到错误政策,仍然是任务失败;对老板而言,作者每次都要现场救火,意味着运营成本和扩展风险仍然未知。

先看完成品:北辰冷交接演练

标题“先看完成品:北辰冷交接演练”

以下版本、任务和结果均为课程固定合成材料,不代表真实生产运行。

一位未参与开发的模拟运营者收到 rc-18.1 发布包。封存故障包依次触发两个信号:

  1. MCP Server 不可达。运营者从 task_run_id 看到回答路径仍可用,但写操作停在 action_preview
  2. 运营者启用 MCP_OFF,核对外部效果数为 0,没有回滚应用,因为回滚不能修复外部依赖;
  3. 随后正常查询返回了错误政策版本。trace 显示本次发布的策略配置摘要改变;
  4. 运营者回滚代码、语料/索引、提示、策略、工具定义与配置组成的完整版本包;
  5. 运营者重跑正常查询、权限拒绝、人工升级和一次逐次批准写入,确认任务终态与外部记录一致;
  6. 最终决定只允许继续教学沙盒演练,不声称可以生产发布。

完成记录的核心不是“演练成功”四个字,而是以下判断表:

观察 归因 动作 为什么 任务级复验
写工具不可达,读取正常 外部依赖故障 开启 MCP_OFF,保留预览 旧版本也会依赖同一服务 action_preview,效果数 0
当前政策版本错误 rc-18.1 配置回归 回滚完整版本包 错误由本次发布引入 正常、拒答、升级均回到预期

如果运营者需要作者提醒“这个时候别回滚”或告诉他配置也属于版本包,本次冷交接应记为失败,而不是帮他完成后记为通过。

第一步:把发布材料改写成任务式交接包

标题“第一步:把发布材料改写成任务式交接包”

不要按“日志链接、仪表盘链接、脚本链接”堆文件。按运营者实际要回答的问题组织:

# 运营交接包 v1
## 1. 当前允许的服务范围
- 允许:政策检索、引用回答、拒答/升级、工单预览
- 条件允许:逐次审批后的单一工单创建
- 禁止:自动回复客户、批量写入、自主重试结果不明确的写操作
## 2. 先看哪些用户症状
| 症状 | 查询字段 | 可能归因 | 第一动作 | 禁止动作 |
| --- | --- | --- | --- | --- |
| 显示已创建但查不到工单 | task_run_id / idempotency_key | 写后断连 | 先查询对账 | 直接再次创建 |
## 3. 关闭开关与回滚
- 谁能操作;
- 适用条件;
- 操作后用户看到什么;
- 怎样确认没有扩大权限或重复效果;
- 何时必须升级给业务、数据或安全负责人。
## 4. 任务级恢复检查
- 正常回答;
- 正确拒答;
- 人工升级;
- 逐次批准写入;
- 重复请求与外部效果对账。

交接包中的每个动作都要有权限角色、适用条件、预期终态和复验方法。只写命令名或按钮位置,无法帮助运营者判断该不该执行。

第二步:核验完整版本包

标题“第二步:核验完整版本包”

完整版本包至少要绑定以下内容的标识或摘要:

  • 应用代码与构建物;
  • 数据库 schema 与迁移状态;
  • 语料快照、索引和分块版本;
  • 提示、模型适配器和引用验证规则;
  • 权限策略、审批规则与工具 schema;
  • 环境配置和合成任务夹具。

你不需要把秘密写进清单。清单记录版本、摘要和受控位置即可。回滚后仍使用错误策略或新索引,不叫完成回滚。

第三步:进行一次真正的冷交接

标题“第三步:进行一次真正的冷交接”

选择一位没有参与本周实现的同伴。作者只能观察和记录,不能解释。将封存故障描述、交接包和访问范围交给运营者,并记录:

  1. 从看到症状到找到任务运行标识用了多久;
  2. 他如何区分依赖故障和发布回归;
  3. 是否选择了正确的止损动作;
  4. 是否检查了正常、拒绝、升级与外部效果;
  5. 哪一步需要猜测、额外权限或作者提示;
  6. 给一线和决策者的状态说明是否准确。

没有同伴时,可以在全新目录或隔离环境中,隔天用封存故障包做“代理冷启动”。此时证据应写成:

handoff_evidence: simulated_self_replay
proves:
- instructions_are_executable_in_a_clean_environment
does_not_prove:
- a_non_author_can_operate_without_help
handoff_gate: pending

不要把自测改名成非作者交接。

第四步:让业务和一线回读降级边界

标题“第四步:让业务和一线回读降级边界”

冷交接不是纯工程活动。用同一份演练记录分别确认:

  • 业务负责人: 哪些失败允许有限运行,哪些硬风险必须停止;人工兜底的成本当前是事实、课程模拟还是真实未知;
  • 一线角色: 故障时页面怎么表现、原任务能否继续、怎样升级或退出、增加了什么负担;
  • 工程/运营: 信号、版本、开关、回滚、验证和升级责任是否闭环。

如果只能使用模拟角色,把结果写成“课程模拟回读”,不能写成客户接受或组织批准。

学习日 建议时间 当天动作 离开前必须有的结果
第 1 天 1–2 小时 核验发布范围、硬门、合成成本、告警和版本包 经批注的发布材料与缺口清单
第 2 天 2 小时 按用户症状、判断、动作和验证重组交接包 可直接执行的 ops handoff pack
第 3 天 2 小时 让非作者处理封存故障与配置回归 未经作者提示的完整演练记录
第 4 天 1–2 小时 修订卡点并让运营者重做失败步骤 修订前后证据与任务复验
第 5 天 1–2 小时 完成业务/一线回读和阶段退出决定 已证明、未证明与 Capstone 重做项
  • 非作者能从用户症状定位一次任务失败;
  • 外部依赖故障使用关闭开关或降级,而不是无效回滚;
  • 本次发布引入的回归才触发版本回滚;
  • 完整版本包覆盖代码、语料/索引、提示、策略、工具和配置;
  • 恢复后重跑正常、拒答、升级和写入路径,而不只看健康接口;
  • 权限拒绝仍然拒绝,写入没有重复效果;
  • 一线新增步骤、人工负担、不可接受体验和异议被记录;
  • 越权、未批准写入、秘密泄漏或无法回滚都被定义为 NO-GO
  • 合成负载、成本、角色和决定都保留模拟标签;
  • 阶段退出记录明确第 23–24 周仍需针对完整 Capstone 重做发布、恢复与交接。
失败 诊断信号 修复动作
交接包只是链接目录 运营者知道去哪看,却不知道先做什么 按症状、判断、动作、验证和升级重组
作者在旁边救场 关键动作来自口头提示 记为失败,修订后换人或重新封存演练
只能回滚代码 策略、索引或配置仍是错误版本 绑定并核对完整版本包
MCP 故障触发完整回滚 回滚后依赖仍不可用 使用关闭开关与预览降级
平均延迟合格就允许发布 错误任务和安全硬门未核对 加入任务结果、权限、效果和人工负担
回滚后只看 HTTP 200 错误政策仍被返回 重跑固定正常、拒绝、升级和异常夹具

独立迁移:把交接方法移到供应链异常

标题“独立迁移:把交接方法移到供应链异常”

设定一个合成场景:供应商 API 在提交加急请求后断连。让另一位运营者只依靠你的交接包回答:

  1. 这是应该回滚应用,还是先进入 reconciling
  2. 用哪个稳定业务键查询供应商端实际状态?
  3. 哪些结果允许继续,哪些结果必须人工接管?
  4. 怎样向采购一线解释“尚未确认”,而不误报成功?
  5. 怎样证明没有重复采购效果?

迁移只替换业务对象,不改变“症状—判断—动作—复验”的控制链。

用同一份证据向三类人解释

标题“用同一份证据向三类人解释”
  • 老板版: 建议继续沙盒、限量、暂缓还是停止;当前价值、成本与风险中哪些有证据,哪些仍未知。
  • 一线版: 试用范围、故障表现、替代路径、人工负担和停止参与方式。
  • 工程版: 版本包、任务信号、关闭开关、回滚触发条件、效果对账和交接卡点。

通过后进入第 19 周:冻结 Capstone 问题与风险合同。下一周会复用前 18 周证据,但不会把一次教学冷交接包装成完整 Capstone 已经可上线。

核验日期:2026-08-25。 本周的北辰公司、故障包、成本报告、角色回读、版本号和运行结果均为课程合成材料。完成本周只证明在声明环境中的运维训练证据,不证明真实生产可靠性、客户接受、采用率或 ROI。