Design an Interface 是一个面向接口设计的技能,核心理念来自《A Philosophy of Software Design》中的“Design It Twice”:你的第一个想法不太可能是最好的,因此应先生成多个截然不同的设计再进行比较。它适合在用户想要设计 API、探索接口方案时使用。
用途 该技能用于为一个模块生成多个风格迥异的接口设计,并对它们进行对比和综合,帮助做出更好的接口决策。它纯粹关注接口形状(签名、方法、参数、暴露与隐藏的边界),不进行实现。
主要能力
- 收集需求:在设计前明确模块解决的问题、调用方是谁(其他模块、外部用户、测试)、关键操作、约束(性能、兼容性、既有模式),以及哪些应隐藏、哪些应暴露。
- 并行生成设计:使用 Task 工具同时启动 3 个以上子代理,每个子代理产出截然不同的方案。每个子代理会分配不同约束,例如:最少方法数(1-3 个方法)、最大化灵活性、针对最常见场景优化、借鉴某个特定范式或库。每个设计需输出接口签名(类型/方法)、用法示例、内部隐藏了什么、该方案的权衡。
- 展示设计:逐个展示每个设计的接口签名、实际调用示例,以及它在内部保留的复杂性,让用户逐一吸收后再比较。
- 对比设计:从接口简洁性、通用与专用、实现效率、深度(小接口隐藏大复杂度为佳)、正确使用与误用难易度等维度进行比较,用散文而非表格讨论权衡,突出设计分歧最大的地方。
- 综合:通常最佳设计会融合多个方案的洞见,询问用户哪个设计最契合主要用例,以及是否有其他设计中的元素值得纳入。
使用方式 该技能以工作流形式执行:先收集需求(可询问“这个模块需要做什么?谁会使用它?”),再用 Task 工具并行派出子代理,每个子代理按指定输出格式产出设计,随后依次展示、比较,最后与用户综合。
评估标准 依据《A Philosophy of Software Design》:接口简洁性(方法更少、参数更简单)、通用性(能否不修改即应对未来用例,但警惕过度泛化)、实现效率(接口形状是否允许高效实现)、深度(小接口隐藏显著复杂度为深模块,值得提倡;大接口薄实现为浅模块,应避免)。
反模式与限制 不应让子代理产出相似设计,必须强制差异;不应跳过比较,价值在于对照;不应进行实现,只讨论接口形状;不应以实现工作量作为评估依据。
适用场景 适用于设计 API、模块接口、库的调用形态探索等需要多方案对比的接口设计任务。
限制 资料未提供该技能的安装方式、收费模式、支持的平台或模型、具体依赖等信息,暂未提供。