> Adapted from NousResearch/hermes-agent optional-skills/communication/one-three-one-rule by Willard Moore (MIT License). 结构等价,全部重写并本地化。
1-3-1 决策简报
当一件事有多条真实可行路线时,不要罗列发散的观点,而是产出一份可以直接拍板的简报:1 句问题 → 3 个选项 → 1 个推荐。
何时使用
- 用户要求"给我几个方案""分析一下选项""做个 1-3-1"
- 架构选型、工具替换、迁移策略等存在实质性取舍的决策
- 需要一份能转发给团队/合作方审阅的方案提案
不适用:答案唯一的简单问题、纯 debug 会话、用户已拍板只需执行的场合。
输出结构(五段,固定顺序)
-
问题(1 句话)
- 只说"要决定什么",不提具体技术或工具名。
- 如果一句话里需要用"和",说明其实是两个问题,拆开。 -
选项(恰好 3 个:A / B / C)
- 必须是真正不同的策略,不是同一方案的三种参数。
- 每个选项各写一行优点、一行缺点。 -
推荐(只选 1 个)
- 给出明确选择和理由,依据用户的目标与约束。
- 直接下判断,不写"各有优劣视情况而定"。 -
完成定义(DoD)
- 列出推荐方案的具体、可验证的成功标准。
- 用户若选了别的选项,此段随之重写。 -
实施步骤
- 推荐方案的落地步骤,含具体命令/工具/动作。
- 同样随用户的选择而更新。
自检清单
- [ ] 问题恰好 1 句
- [ ] 选项恰好 3 个,且互斥、各有 pros/cons
- [ ] 推荐恰好 1 个,有理由、不含糊
- [ ] DoD 与实施步骤和推荐选项一一对应
- [ ] 用户改选后,第 3-5 段已同步更新
示例
问题: 外部 API 调用在高峰期频繁瞬时失败,需要优雅的重试处理。
选项:
- A. 自研指数退避工具函数(带抖动) — 优:零依赖、模式成熟、全局复用;劣:无熔断,重试期间调用方仍阻塞。
- B. 引入 tenacity 装饰器 — 优:按端点可配置、自带限流/熔断支持;劣:新增依赖,装饰器会遮蔽控制流。
- C. 队列化异步重试 + 死信处理 — 优:非阻塞、失败可重放、可扩展;劣:复杂度陡增,低流量场景纯属浪费。
推荐: A。当前调用量撑不起队列基础设施,共享工具函数 + 指数退避 + 抖动已干净覆盖故障模式,且不引入新依赖。
完成定义: api_retry() 覆盖 429/502/503/504;最多重试 3 次、指数退避带抖动;所有外呼统一走该函数;每次重试记录端点与序号;测试覆盖重试耗尽、一次成功、瞬时失败后成功三类场景。
实施步骤: ① 新建 utils/api_retry.py(可配最大次数、基础延迟、可重试状态码);② 用 random.uniform(0, base_delay) 加抖动;③ 在 utils/api_client.py 中包一层重试;④ 为三类重试场景补单元测试;⑤ 对 flaky mock 端点做一次压测验证。