本实践的产出 ⭐ 最小产出:桌面 Harness 的启动、自检、升级、失败回滚完整生命周期设计 完整产出:生命周期设计 + 会话恢复三方案对照 + 长任务形态设计 + 架构选型模板
预计投入:6~8 小时。对象直接用 Pi Agent 桌面端——它是你手上真实的、有历史包袱的产品,比虚构案例有价值得多。
| 环节 | 要定义什么 | 我的设计 |
|---|---|---|
| 安装 | 分发形态、体积、是否需要管理员权限、依赖 | |
| 首次启动自检 | 检查哪些项?每项失败时提示什么? | |
| 凭据配置 | 引导流程;绝不在日志/文档里落明文 | |
| 能力发现 | 发现什么?结果如何呈现?不可用的工具是否从工具面移除? | |
| 首次任务引导 | 让用户第一次成功做成一件事 |
自检清单要求:至少 6 项,每项写清 检查什么 / 通过标准 / 失败提示 / 用户能怎么修。
必须包含的三项(来自真实踩坑):
画一张状态图,包含七个状态(创建/运行/挂起/中断/恢复/取消/完成/失败),每条边标注:
| 环节 | 要定义什么 | 我的设计 |
|---|---|---|
| 更新检测 | 频率、是否强制、用户能否推迟 | |
| 更新形态 | 热更 / 整包 / 混合;分别适用于什么变更 | |
| 更新前备份 | 备份什么(配置、会话、记忆)、放哪 | |
| 更新后校验 | 至少三项:能启动 / 老会话能打开 / 仍被进程管理器托管 | |
| 数据迁移 | 迁移脚本、版本号、失败时怎么办 |
回滚方案必须是一张表,不是一句"支持回滚":
| 失败场景 | 检测方式 | 回滚动作 | 数据版本怎么退 | 用户感知 |
|---|---|---|---|---|
| 新版启动即崩 | ||||
| 新版能启动但核心功能坏 | ||||
| 数据迁移中途失败 | ||||
| 更新后脱离进程管理 |
验收标准:
任务:对同一个会话,比较三种恢复方式的效果与代价。
| 方案 | 恢复什么 | 实验做法 |
|---|---|---|
| A · 原始消息全量 | 把完整消息历史重新喂进去 | 直接重放 |
| B · 摘要消息 | 用压缩后的摘要重建上下文 | 先压缩再恢复 |
| C · 结构化状态 | 只恢复任务目标、已完成步骤、待办、关键事实 | 自定义状态结构 |
在阶段 4 的最小 Loop 上实测:跑一个 6 步任务,在第 4 步中断,用三种方式恢复,各 3 次。
记录表:
| 方案 | 恢复后 token 数 | 能否接着做对 | 有没有重复已做过的步骤 | 有没有丢关键约束 |
|---|---|---|---|---|
| A | ||||
| B | ||||
| C |
要看到的现象:
产出:一份《会话状态最小集》——列出恢复一个任务必须保留的字段,以及每个字段为什么不能丢。
任务:选一个真实的长任务场景,设计完整产品形态。
推荐场景:"帮我扫一遍这 200 条航线下个月的最低价,找出异常波动的"(本仓有 od-lowprice-batch 技能,是真实存在的批量任务)。
要设计的六件事:
| # | 事项 | 设计要点 |
|---|---|---|
| 1 | 提交时的确认 | 展示:预计耗时、预计成本、会调用什么 |
| 2 | 进度呈现 | 不是转圈:当前在做什么 / 已完成 x/200 / 预计剩余 |
| 3 | 中途可干预 | 能暂停吗?能改参数吗?能只看已完成部分吗? |
| 4 | 断点续跑 | checkpoint 粒度是什么?重启后从哪继续? |
| 5 | 完成通知 | 通过什么渠道?失败时通知吗? |
| 6 | 部分成功 | 200 条里 12 条失败,产品怎么表达? |
第 6 项是长任务的核心产品问题 长任务几乎不可能全部成功。把"部分成功"当成正常状态设计,而不是当成异常处理,是长任务产品成熟度的分水岭。要给出:成功的部分能不能先用?失败的部分能不能单独重试?重试会不会重复计费?
验收:
在阶段 6 实践 5 的模板上,补充 Runtime 与分发相关的条目:
验收:拿完整模板(阶段 6 的 18 条 + 本阶段的 9 条)套一遍 Pi 桌面端,列出当前缺口清单并按风险排序。
| 维度 | 阶段 7 的问法 |
|---|---|
| 解释 | 讲清"为什么 Agent 的重放不能复现问题" |
| 画图 | 七状态生命周期图 + 升级/回滚流程图 |
| 比较 | 三种会话恢复方案的成本与风险 |
| 实践 | 生命周期设计 + 恢复实验有数据 |
| 评测 | 定义"升级成功"的验收项(至少三项,含"仍被托管") |
| 产品化 | 长任务的六项设计能直接做原型 |
| 迁移 | 把生命周期设计换成云端 Agent 服务,哪些项消失、哪些项变难? |
通过标志 能说出三件"只有长期运行才会暴露、Demo 阶段绝对看不到"的问题,并给出各自的产品对策。