SuperAPI AI 工具集

improve-codebase-architecture

编程与开发

查看项目

更新于 10-15 14:00

技能介绍

用途

Improve Codebase Architecture 是一个用于发现并推演代码库架构改进机会的工作流。它关注的是"架构摩擦"与"深化机会":把浅层模块(接口复杂度几乎与实现相当的模块)改造为深层模块,从而提升可测试性与 AI 可导航性。

该命令由项目的领域模型驱动,并建立在一套共享的设计词汇之上。它要求先以 "codebase-design" 调用 Skill 工具,获取架构词汇(module、interface、depth、seam、adapter、leverage、locality)及其原则(删除测试、"接口即测试表面"、"一个适配器 = 假设的接缝,两个 = 真实的")。在所有建议中需精确使用这些术语,避免漂移为 "component"、"service"、"API" 或 "boundary"。

GLOSSARY.md 中的领域语言为好的接缝提供命名;docs/adr/ 中的 ADR 记录该命令不应重新争辩的既有决策。

主要能力与流程

1. 探索(Explore)

先界定范围再扫描,遵循 YAGNI。深化模块的价值在于让未来对该模块的修改更容易,因此应额外关注最近发生变化的代码区域。

  • 若用户指定了方向(某个模块、子系统或痛点),直接采用,跳过下面的推断。
  • 否则,回看一段较长的提交历史(git log --oneline),找出代码库的热点——反复出现的文件与区域,让这些路径优先吸引注意力。若变更分散、没有明显热点,则扩大范围。
  • 先阅读项目的领域词汇表(GLOSSARY.md)以及所触及区域的 ADR。

随后派生一个子代理遍历代码库,不遵循僵硬启发式,而是有机地探索并记录摩擦点,例如:

  • 理解一个概念需要在许多小模块之间来回跳转的地方;
  • 模块浅层、接口几乎与实现一样复杂的地方;
  • 仅为可测试性而抽取纯函数,但真正的 bug 隐藏在调用方式中的地方(缺乏局部性);
  • 紧耦合模块跨越接缝泄漏的地方;
  • 未测试、或通过当前接口难以测试的代码部分。

对任何疑似浅层的对象应用删除测试:删除它会让复杂度集中,还是只是转移?"是的,会集中"才是想要的信号。

2. 以 HTML 报告呈现候选方案(Present candidates as an HTML report)

将一个自包含的 HTML 文件写入操作系统临时目录,避免仓库中被写入内容。临时目录从 $TMPDIR 解析,回退到 /tmp(Windows 上为 %TEMP%),写入 <tmpdir>/architecture-review-<timestamp>.html,使每次运行产生新文件。为用户打开它(Linux 用 xdg-open <path>,macOS 用 open <path>,Windows 用 start <path>),并告知其绝对路径。

报告通过 CDN 使用 Tailwind 进行布局与样式,通过 CDN 使用 Mermaid 绘制图表(当图/流/时序能可靠传达结构时)。将 Mermaid 与手工制作的 CSS/SVG 视觉混合:关系呈图形状(调用图、依赖、时序)时用 Mermaid,想要更具编辑感的呈现(质量图、剖面、折叠动画)时用手工 div/SVG。每个候选方案配有前后对比可视化。要注重视觉表达。

每个候选方案渲染为一张卡片,包含:

  • Files:涉及哪些文件/模块
  • Problem:当前架构为何造成摩擦
  • Solution:将要发生变化的平实英文描述
  • Benefits:以局部性与杠杆解释,以及测试将如何改善
  • Before / After diagram:并排、手工绘制,展示浅层与深化
  • Recommendation strength:Strong、Worth exploring、Speculative 之一,渲染为徽章

报告最后以 Top recommendation 部分结束:先处理哪个候选方案以及原因。

领域使用 GLOSSARY.md 词汇,架构使用 /codebase-design 词汇。若 GLOSSARY.md 定义了 "Order",应说 "the Order intake module",而不是 "the FooBarHandler",也不是 "the Order service"。

ADR 冲突:如果某个候选方案与既有 ADR 矛盾,仅当摩擦真实到值得重新审视该 ADR 时才呈现。在卡片中明确标注(例如警告提示:"contradicts ADR-0007, but worth reopening because…")。不要列出 ADR 禁止的每一个理论性重构。

完整 HTML 脚手架、图表模式与样式指南见 HTML-REPORT.md。

此时不要提出接口。文件写入后,询问用户:"Which of these would you like to explore?"

3. 推演循环(Grilling loop)

一旦用户选定候选方案,以 "grilling" 调用 Skill 工具,与其一起走决策树:约束、依赖、深化模块的形态、接缝背后是什么、哪些测试存活。

副作用随决策明确而就地发生;以 "domain-modeling" 调用 Skill 工具,使领域模型保持更新:

  • 以 GLOSSARY.md 中不存在的概念命名深化模块?把该术语加入 GLOSSARY.md。文件不存在则惰性创建。
  • 对话中使模糊术语更精确?就地更新 GLOSSARY.md。
  • 用户以承重理由拒绝候选方案?提议一条 ADR,措辞为:"Want me to record this as an ADR so future architecture reviews don't re-suggest it?" 仅当该理由确实是未来探索者避免重复建议所需时才提供;跳过短暂理由("not worth it right now")与自明理由。
  • 想探索深化模块的替代接口?以 "codebase-design" 调用 Skill 工具,使用其 design-it-twice 并行子代理模式。

适用场景

适用于需要识别代码库中架构摩擦、并希望以可视化方式审视重构机会的开发者。尤其适合维护持续演进的代码库、关注热点区域、希望在可测试性与 AI 可导航性上获得改进的团队。

限制

资料未提供关于收费、价格、支持平台等具体信息,暂未提供。