back
loading skill details...
基于小型项目快速迭代,评估技术改动系统影响,风险及依赖,提供可落地方案和行动清单。
# DevTrace-Lite:小型项目技术决策五算子(Agent Skill) **skill_name:** `DevTrace_Technical_Decision_Framework_Lite` **version:** `1.0` **目标:** 在小型项目/快速迭代中,让 Agent 解决问题时"先看系统影响、再给可落地方案",避免拍脑袋改动。 **适用:** 技术选型、简单架构调整、代码审查、重构、线上问题复盘。 **触发:** 用户问"要不要做/怎么做/改这个会影响什么/用哪个库/怎么重构/为什么出故障"。 --- ## 行为规则(必须遵守) 1. **不瞎猜**:缺关键信息先问;若必须答,给"假设A/B下的结论"。 2. **先可逆**:默认推荐能灰度/能回滚/能降级/能旁路的做法。 3. **输出要落地**:每次至少给下一步行动清单(≤5条)。 4. **触红线就阻止**:关键路径扩故障域、触硬约束、单点依赖无退路 => 不建议实施/需前置条件。 --- ## 五算子(极简版) ### 1) 拓扑 Topology(影响范围) **关注:** 改动会影响谁?失败会传到哪? **快速追问:** - 入口/出口是什么(API/任务/消息 → DB/外部服务)? - 同步还是异步?有没有超时/重试? - 属于关键路径吗(登录/支付/下单)? **产物:** 文字拓扑图(节点+边+关键路径+故障传播点)。 ### 2) 抽象 Abstraction(边界是否被破坏) **关注:** 接口/实现是否混在一起?是否把技术细节泄漏到业务层? **快速追问:** - 对外契约是什么(API/事件/表结构)?允许破坏性变更吗? - 是否出现跨层依赖(业务层直接用云SDK/SQL/框架对象)? **产物:** 指出边界风险 + 需要的隔离点(接口/适配器/DTO/Facade)。 ### 3) 熵增 Entropy(未来维护会不会炸) **关注:** 6个月后谁能维护?排障会不会很痛? **快速追问:** - 有测试/CI吗?改动能否自动回归? - 有日志/指标/trace能定位吗? - 是否依赖"某个人懂"的隐式知识? **产物:** 熵增评估(定性即可:可维护性高/中/低 + 成本形态)。 ### 4) 约束 Constraint(硬墙) **关注:** 性能/成本/合规/交付期有没有"不能碰"的硬约束? **快速追问:** - 最硬的3个约束是什么(延迟/预算/合规/期限)? - 允许的最差退化是什么(降级/延迟/不一致)? **产物:** 约束清单(Pass/风险/需要的保护措施)。 ### 5) 依赖 Dependency(外部风险) **关注:** 引入库/云服务会不会绑死或弃坑? **快速追问:** - 新增哪些第三方依赖?是否关键路径? - 退出/替代路径是什么? **产物:** 依赖清单(含风险等级 + 退路)。 --- ## 决策流程(Agent 内部执行顺序) 1) 拓扑 → 2) 抽象 → 3) 熵增 → 4) 约束 → 5) 依赖 任一出现"高风险且无缓解" => 明确输出:**不建议实施 / 需先解决前置条件**。 --- ## 强制输出模板(短) > 每次回答必须包含以下 4 块;保持简短,默认不超过 200~350 字(除非用户要求展开)。 ### A. 拓扑图(文字) - 节点:`...` - 边:`A -> B(同步/异步, 超时/重试=...)` - 关键路径:`...` - 故障传播点:`...` ### B. 熵增评估(定性) - 可维护性:高/中/低(原因:测试/观测性/复杂度/隐式知识) - 成本形态:主要会花在(排障/回滚/联调/人工补数据…) ### C. 依赖清单(含风险等级) - `依赖 | 用途 | 风险(高/中/低) | 退出/替代` ### D. 结论 + 下一步(≤5条) - 结论:建议/不建议/建议但需前置条件 - 下一步:1)… 2)… 3)… --- ## 红线(出现就拦) - 关键链路上扩大故障域,且无超时/熔断/降级/回滚方案 - 触碰硬约束(合规/预算/期限/物理性能墙)且无替代路径 - 引入关键外部单点依赖且无抽象隔离/替代方案 - 契约破坏(API/事件/表结构)且无兼容策略(版本/双写/灰度) --- ## 最小追问集合(信息不足时优先问这些) 1) 这是哪个模块/接口/链路?是否关键路径? 2) 当前调用方式(同步/异步)、超时/重试/回滚怎么做? 3) 最硬约束是什么(延迟/成本/合规/期限)? 4) 新增哪些依赖?有没有替代/退出路径? 5) 有没有测试与观测性支撑上线与排障?
don't have the plugin yet? install it then click "run inline in claude" again.