{/* 此页面由 website/scripts/generate-skill-docs.py 从技能的 SKILL.md 自动生成。请编辑源文件 SKILL.md,而非此页面。 */}
一三一法则
技术方案与权衡分析的结构化决策框架。当用户在多个方案之间做选择时(架构决策、工具选择、重构策略、迁移路径),此技能生成 1-3-1 格式:一个清晰的问题陈述、三个带有优缺点的不同选项、一个具体建议含完成标准和实施计划。当用户要求 “1-3-1”、说”给我选项”或需要在竞争方案中选择时使用。
技能元数据
| 来源 | 可选 —— 使用 hermes skills install official/communication/one-three-one-rule 安装 |
| 路径 | optional-skills/communication/one-three-one-rule |
| 版本 | 1.0.0 |
| 作者 | Willard Moore |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
| 标签 | communication, decision-making, proposals, trade-offs |
参考:完整 SKILL.md
:::info 以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理所看到的指令。 :::
1-3-1 沟通法则
结构化决策格式,适用于当任务有多种可行方案且用户需要清晰建议时。生成简洁的问题框架、三个带有权衡的选项以及推荐路径的可操作计划。
使用时机
- 用户明确要求 “1-3-1” 格式的回复
- 用户说”给我选项”或”我有哪些选择”面对技术决策时
- 任务有多个可行方案且存在重要的权衡(架构、工具、迁移策略)
- 用户需要一份可以转发给团队或利益相关者的提案
对于有明确答案的简单问题、调试会话或用户已决定方案的场景,不要使用。
操作步骤
-
问题(一句话)
- 用一句简洁的话陈述核心决策或期望结果。
- 关注 做什么(what),而非 怎么做(how) —— 不涉及实施细节、工具名称或特定技术。
- 保持精炼。如果出现”并且”,说明你在描述两个问题。
-
选项(恰好三个)
- 提出三个独特且可行的方案,标注为 A、B、C。
- 每个选项包含简要描述、优点和缺点。
- 选项应代表真正不同的策略,而非同一方法的微小变体。
-
建议(一个选项)
- 根据用户的背景和优先级,说明你推荐哪个选项及其理由。
- 直接了当 —— 这是你的专业判断,而非模糊表述。
-
完成标准
- 列出推荐选项的具体成功标准。
- 这些应是具体、可验证的成果 —— 而非模糊的期望。
- 如果用户选择了不同选项,修订此部分以匹配。
-
实施计划
- 执行推荐选项的具体步骤。
- 在适用处包含具体命令、工具或操作。
- 如果用户选择了不同选项,修订此部分以匹配。
验证
- 回复中恰好有一个”问题”句子。
- 回复中恰好有三个”选项”(A、B、C),每个带有优缺点。
- 回复中有一个单独的”建议”,选择一个选项并附上理由。
- “完成标准”和”实施计划”与推荐的选项一致。
- 如果用户选择了不同选项,建议、完成标准和实施计划相应更新。
示例
用户:“给我一个关于为我们的 API 客户端添加重试逻辑的 1-3-1。”
代理:
问题: 对外部服务的 API 调用在负载下间歇性失败,需要优雅的重试处理。
选项:
-
选项 A:在共享工具类中使用带抖动的指数退避。 优点:简单、广为理解的模式;所有调用方共享单一实现。 缺点:没有熔断机制;调用方在重试期间仍然阻塞。
-
选项 B:使用重试库(tenacity)作为每个端点调用的装饰器。 优点:可每个端点配置;内置支持熔断器和速率限制。 缺点:增加依赖项;装饰器模式可能模糊控制流。
-
选项 C:基于队列的异步重试,带死信处理。 优点:非阻塞;失败的调用被追踪且可重放;扩展性好。 缺点:复杂度显著增加;需要队列后端;对低流量服务过于复杂。
建议: 选项 A。调用量不足以 justifying 队列基础设施,共享工具类配合指数退避 + 抖动可以干净地处理失败模式,且无需新依赖项。
完成标准:
api_retry()工具类处理瞬时 HTTP 错误(429, 502, 503, 504)。- 最多重试 3 次,采用指数退避和抖动。
- 所有外部 API 调用通过重试工具类路由。
- 每次重试尝试记录端点名称和尝试次数。
- 测试覆盖重试耗尽、立即成功和先失败后成功的场景。
实施计划:
- 创建
utils/api_retry.py,支持可配置的最大重试次数、基础延迟和可重试状态码。 - 使用
random.uniform(0, base_delay)添加抖动以防止惊群效应。 - 在
api_client.py中使用重试工具类包装现有 API 调用。 - 添加单元测试,模拟每种重试场景的 HTTP 响应。
- 使用针对不稳定端点模拟的简单压力测试验证负载下的行为。