SuperAPI AI 工具集

improve-codebase-architecture

编程与开发

查看项目

更新于 10-25 16:17

技能介绍

用途

该技能用于发现代码库中的架构摩擦,并提出“加深机会”(deepening opportunities)——把浅模块重构为深模块,目标是提升可测试性和 AI 可导航性。它适合在用户想改进代码库架构时使用,并会参考项目领域语言(CONTEXT.md)和 docs/adr/ 中的决策。

主要能力

技能内置一套统一术语,要求在所有建议中一致使用:模块(module,任何带接口和实现的东西,如函数、类、包、切片)、接口(interface,调用方使用模块所需知道的一切,包括类型、不变量、错误模式、顺序、配置,不限于类型签名)、实现(implementation)、深度(depth,小而接口背后承载大量行为即为深,接口复杂度接近实现即为浅)、seam(接口所在位置,可在不原地修改的情况下改变行为)、adapter(在 seam 处满足接口的具体实现)、leverage(调用方从深度中获得的价值)、locality(维护者从深度中获得的价值:变更、缺陷、知识集中在一处)。

技能列出的关键原则包括:删除测试——设想删除该模块,若复杂度消失说明它只是直通层,若复杂度在 N 个调用方处重新出现说明它值得保留;接口就是测试面;一个 adapter 是假设性 seam,两个 adapter 才是真实 seam。

使用方式

流程分三步。

  1. 探索:先阅读项目领域词汇表和相关区域的 ADR,再用 Agent 工具(subagent_type=Explore)遍历代码库,不套用僵硬启发式,而是自然探索并记录摩擦点,例如理解一个概念需在多个小模块间跳转、模块过浅、纯函数仅为可测试性抽出但真正缺陷藏在调用方式中(缺少 locality)、紧耦合模块跨 seam 泄漏、未测试或难以通过当前接口测试的部分。对疑似浅模块应用删除测试以降复杂度。

  2. 呈现候选:列出编号的加深机会列表,每项包含涉及的文件/模块、问题(当前架构为何造成摩擦)、解决方案(用平实语言描述会改什么)、收益(以 locality 和 leverage 说明,并说明测试如何改善)。领域词汇用 CONTEXT.md,架构词汇用 LANGUAGE.md。若候选与已有 ADR 冲突,仅当摩擦足够真实值得重新审视时才提出,并明确标注(如“与 ADR-0007 冲突——但值得重开,因为……”),不列出 ADR 禁止的所有理论重构。此阶段不提出接口,而是询问用户“你想探索哪一个?”。

  3. 质询循环:用户选定候选后进入讨论,围绕约束、依赖、加深后模块的形态、seam 背后放什么、哪些测试能保留展开。决策成型时同步产生副作用:若加深模块的命名用了 CONTEXT.md 中没有的概念,就把该术语加入 CONTEXT.md(文件不存在时惰性创建);讨论中澄清了模糊术语就当场更新 CONTEXT.md;用户以有分量的理由拒绝候选时,可提议记录为 ADR(“要不要我把它记成 ADR,让未来的架构评审不再重复建议?”),仅当该理由确实会被未来探索者需要以避免重复建议时才提议,跳过临时性理由和显而易见理由。

适用场景

适用于希望系统梳理代码库架构、识别浅模块与架构摩擦、并推动重构讨论的开发者。特别适合已有领域词汇表和 ADR 的项目,让重构建议贴合领域模型和历史决策。

限制

技能不直接生成接口设计,需用户先选择候选后再深入;与 ADR 冲突的重构建议会被谨慎处理。资料未提供安装命令、收费、价格、平台支持或效果保证等信息,这些内容暂未提供。