name: one-three-one-rule description: > Structured decision-making framework for technical proposals and trade-off analysis. When the user faces a choice between multiple approaches (architecture decisions, tool selection, refactoring strategies, migration paths), this skill produces a 1-3-1 format: one clear problem statement, three distinct options with pros/cons, and one concrete recommendation with definition of done and implementation plan. Use when the user asks for a “1-3-1”, says “give me options”, or needs help choosing between competing approaches. platforms: [linux, macos, windows] version: 1.0.0 author: Willard Moore license: MIT category: communication metadata: hermes: tags: [communication, decision-making, proposals, trade-offs]
1-3-1 沟通规则
当某项任务存在多种可行的解决方案,而用户需要明确的建议时,可采用此结构化决策格式。它包括简洁的问题描述、三种带有利弊分析的选项,以及针对推荐方案的具体执行计划。
适用场景
- 用户明确要求以“1-3-1”格式获取回复。
- 用户在面对技术决策时询问“有哪些选项”或“我有哪些选择”。
- 某项任务存在多种可行的解决方案,且这些方案之间存在显著的权衡(如架构、工具或迁移策略方面的差异)。
- 用户需要一份可直接转发给团队或利益相关方的建议方案。
不适用于答案显而易见的简单问题、调试过程,以及用户已确定解决方案的任务。
操作步骤
-
问题描述(一句话)
- 用一句简洁的话明确说明核心决策点或期望达成的结果。
- 重点描述“做什么”,而非“怎么做”——无需提及实现细节、工具名称或具体技术。
- 表述要简明扼要。如果需要使用“和”字,说明你实际上是在描述两个问题。
-
选项列举(恰好三个)
- 列出三种不同的可行方案,分别标记为A、B、C。
- 每个选项都需要附上简要描述、优点及缺点。
- 这些选项应代表真正不同的策略,而非同一方案的小幅变体。
-
推荐方案(一个选项)
- 根据用户的实际情况和优先级,说明你推荐的选项及其理由。
- 表达要直接——这是你的专业判断,而非模棱两可的表述。
-
完成标准
- 列出推荐方案的具体成功标准。
- 这些应是具体且可验证的结果,而非模糊的期望。
- 如果用户选择了其他选项,需相应修改此部分内容。
-
实施计划
- 为执行推荐方案而制定的具体步骤。
- 在适用的情况下,需包含具体的命令、工具或操作内容。
- 如果用户选择了其他选项,需相应修改此部分内容。
验证标准
- 回复中恰好有一句问题描述。
- 回复中恰好有三个选项(A、B、C),每个选项均附有优缺点分析。
- 回复中包含一条推荐方案,明确指出所选选项并说明理由。
- “完成标准”与“实施计划”需与推荐的选项保持一致。
- 如果用户选择了其他选项,推荐方案、完成标准及实施计划也需相应更新。
示例
用户提问:“请为我提供一份关于为API客户端添加重试逻辑的1-3-1格式建议。”
智能体回复:
问题描述:在负载较高时,对外部服务的API调用会间歇性失败,需要实现优雅的重试机制。
选项列举:
-
选项A:在共享工具中实现带抖动机制的指数退避重试。 优点:方案简单且易于理解;只需实现一次,所有调用方均可共用。 缺点:不支持断路保护;调用方在重试过程中仍会阻塞。
-
选项B:为每个接口调用使用tenacity重试库作为装饰器。 优点:可针对每个接口单独配置;内置断路保护和速率限制功能。 缺点:会增加依赖项;装饰器模式可能会使控制流程变得复杂。
-
选项C:基于队列的异步重试机制,并配套死信处理功能。 优点:非阻塞式处理;可追踪并重新执行失败的调用;具备良好的扩展性。 缺点:复杂性显著增加;需要队列后端支持;对于请求量较低的服务而言属于过度设计。
推荐方案:选择选项A。当前调用量尚不足以支撑队列基础设施,而使用带有指数退避和抖动机制的共享工具,即可有效应对故障情况,且无需新增依赖项。
完成标准:
api_retry()工具能够处理临时的HTTP错误(如429、502、503、504状态码)。- 重试次数最多为3次,采用指数退避策略并加入抖动机制。
- 所有对外部API的调用都必须通过该重试工具处理。
- 需记录每次重试的尝试次数及对应接口信息。
- 需编写测试用例,覆盖重试次数耗尽、立即成功以及先出现临时错误后再成功的各种场景。
实施计划:
- 创建
utils/api_retry.py文件,设置可配置的最大重试次数、基础延迟时间以及可重试的HTTP状态码。 - 通过
random.uniform(0, base_delay)实现抖动效果,以避免大量请求同时发起造成的问题。 - 在
api_client.py中用该重试工具包裹现有的API调用代码。 - 为每种重试场景编写单元测试,使用模拟的HTTP响应进行测试。
- 通过针对不稳定接口的简单压力测试,验证该方案在负载较高环境下的表现。