返回列表

improve-codebase-architecture

15 浏览 4 下载 发布于 6/25/2026
下载 Skill
---
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) — 并行子代理接口设计模式