codebase-explorer

代码库探索与架构理解 Skill。接手任何代码库时激活:扫描目录结构,识别技术栈,读取核心文件,提取架构模式,与产品定义/需求对比,输出可信赖的架构理解文档。触发词:「阅读XXX项目」「理解这个代码库」「写技术架构文档」「这个项目是做什么的」「接手这个项目」「帮我读一下这个代码」。

代码库探索(codebase-explorer)

在提出任何架构改建议之前,必须先有可信赖的全局图景。 基于 closure-orchestration-package 的 repo-system-cartographer 模式本地化。


知识导航表(执行前必须理解的概念根)

层级文档需要理解的概念
D0 认知根(必读)_内部总控/认知结构/L1_系统性文档/技术架构思维维度/技术架构方案.md整体技术体系框架:各项目的技术选型/架构模式/层次划分(接手代码库时的全局视角)
D3 规范参考_内部总控/开发规范/公共模块注册表.md已有公共模块清单(探索时识别代码库对公共模块的使用情况)
D4 运行时数据目标项目 技术架构.md(若存在)+ 项目代码根目录已有架构文档(对比预期 vs 实际)+ 实际代码目录结构

核心概念速查: ① 探索顺序:有文档→先读文档了解预期,再看代码了解实际;无文档→先扫描再输出 ② 差距 = 代码与文档不一致的地方(是 issue-tracker 的候选输入) ③ 输出架构理解文档 = K-object.create(K4项目规格):写入 _内部总控/开发规范/架构理解/


激活后立即执行

Step 1  确认探索目标
        询问(如未说明):
        「要探索的代码库路径是什么?探索目的是:
          ① 快速理解(输出架构概览)
          ② 深度分析(含差距分析和建议)
          ③ 接手开发(含与产品定义的对比)」

Step 2  用内置 explore 子智能体并行扫描(不占主对话 context)
        - 扫描顶层目录结构(文件树)
        - 读取 README.md / 开发规范.md / 产品定义.md(若存在)
        - 识别主要配置文件(package.json / requirements.txt / docker-compose.yml 等)

Step 3  识别技术栈与架构层次
        从扫描结果提取:
        - 前端技术(框架/构建工具/状态管理)
        - 后端技术(语言/框架/API 风格)
        - 数据层(数据库/ORM/迁移工具)
        - AI/ML 层(若有,LLM/向量库/调用方式)
        - 基础设施(部署/CI/CD/容器)

Step 4  读取核心文件(最多 5-8 个,聚焦最关键的)
        优先级:主入口文件 > 核心业务逻辑 > 数据模型 > API 定义

Step 5  提取架构模式与源真相
        识别:
        - 哪些文件是「真源」(source of truth)
        - 模块边界在哪里
        - 前后端如何通信
        - 数据流向是什么
        - 有哪些明显的技术债或架构风险

Step 5.5【浅层模块识别(improve-my-codebase)】
        对已识别的核心模块,评估「深度」:
        
        浅层模块(shallow module)特征——接口复杂但实现简单,认知成本高于价值贡献:
        □ 接口臃肿:调用方需要了解≥5个参数才能调用,或需要了解实现细节才能正确传参
        □ 实现轻薄:函数体≤10行,只做简单的格式转换/转发,没有真正的业务逻辑
        □ 多层传递:参数从A穿透B传到C,B不使用该参数(B是「中间人」)
        
        改进方向:将多个浅层模块的功能内聚到一个接口更简单的深层模块
        → 接口应该隐藏复杂度,而非暴露复杂度
        
        输出格式:
        | 模块 | 类型 | 问题描述 | 改进建议 |
        |---|---|---|---|
        | [模块名] | 浅层/深层 | [具体问题] | [合并/重构方向] |

Step 5.6【可测试性扫描(improve-my-codebase)】
        识别以下阻碍测试的代码模式:
        
        □ 隐式依赖:函数内部直接实例化依赖(new DatabaseClient()、硬编码 URL)
          → 改为:依赖注入(参数传入 / 配置注入)
        □ 无接口抽象:业务逻辑直接调用外部服务(DB、AI API、文件系统、时间函数)
          → 改为:引入接口/协议层(定义抽象,测试时可替换为 mock)
        □ 全局副作用:函数修改全局状态 / 写文件 / 发网络请求而不在签名中声明
          → 改为:纯函数提取(将副作用边界化,核心逻辑变纯函数)
        □ 超长函数:单个函数超过50行,难以独立测试各逻辑分支
          → 改为:提取子函数,每个子函数单独可测
        
        输出格式:
        | 文件/函数 | 问题类型 | 具体描述 | 改进优先级 |
        |---|---|---|---|
        | [路径] | 隐式依赖/无抽象/全局副作用/超长 | [描述] | P0/P1/P2 |

Step 6  与产品定义/需求对比(若存在)
        Read: 产品经理/产品定义.md(若存在)
        输出:
        - 已实现的功能
        - 架构就绪但未完全实现的功能
        - 产品要求但代码中完全缺失的功能
        - 与需求存在偏差的实现

Step 7  输出架构理解文档
        写入:技术架构师/[项目名]_架构理解_YYYYMMDD.md
        结构:
        - 一句话定位(这个系统是什么)
        - 技术栈全景
        - 分层架构图(文本形式)
        - 核心模块与职责
        - 真源声明(哪个文件/模块负责哪类数据)
        - 已发现的风险和模糊点
        - 与产品定义的差距(若做了 Step 6)

输出格式

# [项目名] 架构理解文档

**探索日期**:YYYY-MM-DD
**探索目的**:[快速理解/深度分析/接手开发]

## 一句话定位
[这个系统是什么,解决什么问题]

## 技术栈
| 层次 | 技术 | 版本/说明 |
|---|---|---|
| 前端 | | |
| 后端 | | |
| 数据层 | | |
| AI层 | | |
| 基础设施 | | |

## 分层架构
[文本形式的架构图]

## 核心模块
| 模块 | 路径 | 职责 | 真源? |
|---|---|---|---|

## 已发现风险
- 🔴 Critical: [...]
- 🟡 High: [...]

## 浅层模块分析(Step 5.5)
| 模块 | 类型 | 问题描述 | 改进建议 |
|---|---|---|---|

## 可测试性扫描(Step 5.6)
| 文件/函数 | 问题类型 | 具体描述 | 改进优先级 |
|---|---|---|---|

## 与产品定义的差距(若适用)
| 功能 | 产品要求 | 实际状态 |
|---|---|---|

注意事项

  • 先地图,后改造:不允许在完成 Step 7 之前提出重构建议
  • 最小读取原则:不需要读完所有文件,聚焦能建立全局图景的最少文件集
  • 真源声明:必须明确指出哪个文件/服务是某类数据的唯一权威来源

变更记录

v1.1 — 2026-03-20 — 集成 improve-my-codebase:新增浅层模块识别与可测试性扫描

根因:五条工程原则对照分析(TASK-20260320-01)证明:codebase-explorer 虽有通用风险识别,但缺少两个专项分析维度——「浅层模块」(John Ousterhout《A Philosophy of Software Design》概念)和「可测试性」(阻碍单元测试的四类代码模式)。

修改内容

  • 新增:Step 5.5「浅层模块识别」——判断接口臃肿但实现轻薄的模块,输出合并/重构建议表格
  • 新增:Step 5.6「可测试性扫描」——识别隐式依赖/无接口抽象/全局副作用/超长函数四类阻碍测试的模式,输出改进优先级表格
  • 修改:输出格式 → 新增「浅层模块分析」和「可测试性扫描」两节

验证结果

  • 正向验证:触发 codebase-explorer 扫描任意代码库 → 输出文档应包含浅层模块分析表格和可测试性表格(待验证)
  • 负向验证:技术栈识别、核心模块、真源声明等原有分析步骤不变
  • 冲突验证:Step 5.5/5.6 在 Step 5(通用风险)之后、Step 6(与产品对比)之前,不影响原有顺序

验证状态:🔵 待验证


v1.0 — 2026-03-19 — 初始创建

根因:历史对话分析发现「接手代码库、理解并推进」是最高频但无正式 Skill 覆盖的任务类型(~20次),是 PENDING-SKILLS P0 缺口。基于 closure-orchestration-package 的 repo-system-cartographer 本地化,加入与产品定义对比步骤。

验证状态:🔵 待验证(下次接手代码库时验证)

codebase-explorer — skill by TashanGKD | Shared Context