--- name: improve-codebase-architecture description: 在代码库中发现架构"深化"机会——将浅模块变成深模块的重构,提升可测试性和 AI 可导航性。与 architecture-advisor 互补:architecture-advisor 设计新架构,本技能改善现有代码库结构。触发词:改进代码库架构、架构深化、找重构机会、模块耦合太紧、难以测试、代码难以理解、架构改进、improve architecture、refactor opportunities。 --- # 改进代码库架构 发现架构摩擦点,提出**深化机会**——将浅模块变为深模块的重构。目标:可测试性与 AI 可导航性。 使用 [references/LANGUAGE.md](references/LANGUAGE.md) 中的词汇表,所有建议中严格使用这些术语。 ## 核心词汇(速查) - **模块(Module)**:有接口和实现的任何东西(函数、类、包、切片)。 - **接口(Interface)**:调用者需要了解的一切:类型、不变量、错误模式、顺序、配置。不只是类型签名。 - **深度(Depth)**:接口背后的杠杆——大量行为隐藏在小接口后面是**深**,接口复杂度接近实现复杂度是**浅**。 - **接缝(Seam)**:可以不编辑内部代码而改变行为的地方。 - **适配器(Adapter)**:在接缝处满足接口的具体实现。 - **删除测试(Deletion test)**:想象删掉这个模块。复杂度消失了?那它是透传层。复杂度在 N 个调用者处重新出现?那它值得存在。 ## 流程 ### 1. 探索 先读取项目的领域词汇表(CONTEXT.md、UBIQUITOUS_LANGUAGE.md 等)和相关 ADR。 使用 Explore 子代理遍历代码库。**有机探索**,记录摩擦点: - 理解一个概念需要在多个小模块间来回跳转的地方? - 接口复杂度接近实现的**浅**模块? - 为可测试性提取出来的纯函数,但真正的 Bug 隐藏在调用方式中(无**局部性**)? - 紧耦合模块跨接缝泄漏的地方? - 未测试或难以通过当前接口测试的代码? 对可疑的浅模块做**删除测试**:删掉它会集中复杂度,还是只是移动了它?"集中"是你要找的信号。 ### 2. 提出候选项 呈现编号的深化机会列表。每个候选项包含: 1. **模块标识**:名称 + 文件路径 2. **浅度诊断**:为什么它是浅的(接口太多、散布在 N 个调用者、透传层、测试只能通过实现细节) 3. **深化思路**:合并哪些模块、接缝放哪里、哪些依赖需要端口 4. **可测试性收益**:深化后如何改善测试(更少 Mock、直接可测接口、局部性更好) 5. **工作量估算**:小/中/大(不做具体行数预估) **在提出候选项时停下,等待用户选择。** 不要直接开始重构。 ### 3. 为选定候选项设计接口(可选) 若用户想要对选定候选项探索多种接口设计,使用并行子代理模式——详见 [references/INTERFACE-DESIGN.md](references/INTERFACE-DESIGN.md)。 ### 4. 实施 用户选定候选项并批准接口设计后: 1. 参考 [references/DEEPENING.md](references/DEEPENING.md) 制定具体深化策略 2. 编写新的集成测试,通过新接口测试行为 3. 合并模块,删掉旧的浅层测试(它们已成废代码) 4. 确认所有测试通过,删除任何遗留的原型代码 ## 参考文档 - [references/LANGUAGE.md](references/LANGUAGE.md) — 完整词汇表与定义 - [references/DEEPENING.md](references/DEEPENING.md) — 按依赖类型的深化策略 - [references/INTERFACE-DESIGN.md](references/INTERFACE-DESIGN.md) — 并行子代理接口设计模式