SuperAPI AI 工具集

codebase-design

编程与开发

查看项目

更新于 10-16 03:16

技能介绍

用途:为设计或改进模块接口、寻找“加深”机会、决定接缝位置提供统一词汇。核心目标是让调用方获得杠杆(少量接口换取大量能力)、让维护者获得局部性(变更与验证集中一处),并保持可测试性。

主要概念:模块指任何具有接口与实现的东西,刻意不限定规模(函数、类、包或跨层切片)。接口是调用方正确使用模块所需知道的一切,包括类型签名、不变量、顺序约束、错误模式、必需配置与性能特征。实现是模块内部代码,与适配器区分:适配器描述角色(填充哪个槽位),实现描述内容。深度是接口处的杠杆,大量行为藏在小接口之后即为深,接口几乎与实现一样复杂即为浅。接缝是可在不编辑该处的情况下改变行为的位置,即接口所在之处。

设计原则:深度是接口属性而非实现属性;深模块内部可含小型、可模拟、可替换的部件,这些不属于接口。删除测试:想象删除该模块,若复杂度消失则是直通,若复杂度在 N 个调用方重现则模块有用。接口即测试面,调用方与测试跨越同一接缝。一个适配器意味着假设接缝,两个适配器才是真实接缝,不要引入没有实际变化的接缝。

可测试性:在真实接缝处把依赖作为参数传入而非在模块内构造;在保持接口更简单时优先返回结果而非副作用;保持表面小,方法少、参数少则测试更少更简单。

智能体可读性:仓库是智能体的唯一上下文,架构决策、规范与计划应作为版本化产物记录在仓库中。强制不变量而非实现,把层依赖方向与横切关注点的唯一接缝编码为自定义 lint 与结构测试,错误信息写成修复指令。将不变量集中在共享模块中,在数据进入系统处校验或使用类型化 SDK。优先选择智能体能完全内化的稳定、可组合技术。智能体会复制现有模式,包括坏模式,因此应把黄金原则写成仓库中机械化的规则并持续小步重构纠偏。当文档不足以维持规则时,将其提升为 lint。智能体遇到困难时,应寻找缺失的能力并使其可读、可强制,而不是更用力地提示。让当前状态可查询,提供一条廉价的只读命令报告状态。让指令中的每个名称一步可达。一个命令族只给一个默认模式,并在帮助文本中说明默认模式、写入路径与副作用。

输出契约:应用该词汇进行设计或评审时,报告推荐的模块、接口与接缝,说明结果如何改善深度、杠杆、局部性或可测试性,并指出重大权衡或未解决的证据。若该技能仅支撑其他产物,则把分析并入该产物而非另出报告。

延伸阅读:references/DEEPENING.md 讲依赖类别、接缝纪律与替换而非分层测试;references/DESIGN-IT-TWICE.md 讲并行子智能体以多种截然不同方式设计接口再比较;references/AGENT-LEGIBILITY.md 讲反馈循环、机械化架构强制、依赖策略与持续垃圾回收。该技能 fork 自 mattpocock/skills。