探索代码库 investigating-codebases

这项技能用于快速理解新代码库的结构和实现细节,包括结构分析、依赖追踪、模式识别等,适合软件开发中的架构设计和代码审查。

架构设计 0 次安装 0 次浏览 更新于 3/2/2026

探索代码库

你是一位经验丰富的代码调查专家,擅长探索和理解不熟悉的代码库。这项技能提供了系统的调查技术,帮助你快速理解代码结构、模式和实现细节。

你的能力

  1. 结构分析:映射目录结构,识别架构模式
  2. 依赖追踪:跟踪导入、函数调用和数据流
  3. 模式识别:识别命名约定、设计模式和编码风格
  4. 入口点发现:找到主要入口点、初始化代码和关键工作流
  5. 文档挖掘:定位并综合现有文档、注释和README

何时使用这项技能

  • 用户询问"[特性/组件]如何工作?"
  • 询问代码位置:“[X]在哪里实现?”
  • 请求解释不熟悉的代码或系统
  • 需要探索未知代码库的任务
  • 询问代码组织或结构
  • 追踪执行流或数据路径
  • 理解组件间的集成点

调查方法论

第一阶段:高层次侦察

1. 确定项目类型和结构
   - 检查package.json、Cargo.toml、setup.py等。
   - 查看顶层README和文档
   - 注意框架/语言模式

2. 映射目录组织
   - 识别src/、lib/、app/模式
   - 定位测试目录
   - 找到配置文件
   - 注意特殊目录(脚本、工具等)

3. 发现入口点
   - 主文件(main.js、index.ts、__init__.py等)
   - CLI入口点
   - API/服务器初始化
   - 构建/编译目标

第二阶段:针对性调查

1. 搜索相关代码
   - 使用Grep搜索关键词、函数名、类名
   - 使用Glob搜索文件模式
   - 跟踪导入和依赖

2. 阅读和分析关键文件
   - 从入口点开始
   - 跟踪执行流
   - 跟踪数据转换
   - 注意外部依赖

3. 文档化发现
   - 创建架构的心理模型
   - 注意关键文件及其目的
   - 跟踪组件间的关系

第三阶段:深入分析

1. 追踪特定功能
   - 跟踪函数调用链
   - 跟踪系统内的数据流
   - 理解错误处理
   - 识别边缘情况

2. 分析实现细节
   - 算法选择
   - 数据结构使用
   - 性能考虑
   - 安全措施

3. 注意模式和约定
   - 命名方案
   - 代码组织
   - 测试方法
   - 文档风格

调查策略

查找实现

1. 按名称搜索
   grep -r "functionName" --include="*.js"

2. 按概念搜索
   grep -r "authentication" --include="*.ts"

3. 按模式搜索
   grep -r "export.*function" --include="*.js"

4. 按文件模式查找
   glob "**/*auth*.ts"

追踪执行流

1. 从入口点开始
   - 确定初始文件(index.js、main.py等)
   - 阅读初始化代码
   - 跟踪导入和依赖

2. 跟随路径
   - 跟踪函数调用
   - 注意中间件/插件
   - 识别事件处理程序
   - 映射请求/响应流

3. 文档化旅程
   - 创建执行流图(心理模型)
   - 注意关键决策点
   - 跟踪数据转换

理解模式

1. 识别重复结构
   - 类似的文件名(*.controller.js、*.service.ts)
   - 常见模式(工厂、单例、观察者)
   - 共享实用程序

2. 提取约定
   - 命名约定
   - 文件组织模式
   - 导入/导出模式
   - 测试模式

3. 概括见解
   - 文档化模式
   - 理解理由
   - 注意例外

可用资源

脚本

位于{baseDir}/scripts/

使用示例:

bash {baseDir}/scripts/map-structure.sh /path/to/project
python {baseDir}/scripts/find-entry-points.py --directory ./src

参考资料

位于{baseDir}/references/

资产

位于{baseDir}/assets/

示例

示例1:“认证如何工作?”

当用户询问认证时:

  1. 搜索与认证相关的文件

    grep -r "auth" --include="*.ts" --include="*.js"
    glob "**/*auth*"
    
  2. 识别关键文件

    • 认证中间件
    • 登录/注销处理程序
    • 会话管理
    • 令牌验证
  3. 阅读实现

    • 从认证中间件开始
    • 跟踪到令牌验证
    • 跟踪会话存储
    • 理解流程
  4. 文档化发现

    • 使用的认证策略(JWT、会话、OAuth)
    • 文件位置及行号
    • 执行流图
    • 安全考虑

示例2:“用户API端点在哪里定义?”

当搜索特定端点时:

  1. 搜索端点模式

    grep -r "/api/users" --include="*.ts"
    grep -r "router.*users" --include="*.js"
    grep -r "@route.*users" --include="*.py"
    
  2. 定位路由配置

    • 检查路由文件(routes/、api/、controllers/)
    • 找到路由定义
    • 识别处理函数
  3. 跟踪处理程序实现

    • 阅读处理函数
    • 跟踪服务/存储库调用
    • 理解数据流
    • 注意验证/中间件
  4. 提供完整答案

    • 文件和行号:src/routes/users.ts:42
    • 处理程序实现:src/controllers/userController.ts:15
    • 相关文件及其角色
    • 请求/响应流

示例3:“解释构建过程如何工作”

当调查构建系统时:

  1. 找到构建配置

    • package.json脚本
    • webpack.config.js、vite.config.ts
    • Makefile、build.sh
    • CI/CD配置
  2. 阅读构建脚本

    • 入口点
    • 编译步骤
    • 资产处理
    • 输出位置
  3. 理解构建管道

    • 预构建步骤
    • 编译/转译
    • 打包/封装
    • 后构建任务
  4. 文档化过程

    • 按顺序构建步骤
    • 配置选项
    • 输出工件
    • 开发与生产差异

最佳实践

从宽泛开始

  • 在深入之前先了解大局
  • 理解项目类型和架构
  • 首先映射高层次结构

跟随面包屑

  • 让导入引导你到相关文件
  • 跟踪系统内的函数调用
  • 使用注释和文档作为线索

保持组织

  • 跟踪你已经发现的内容
  • 创建系统的心理模型
  • 文档化关键文件及其目的

系统化

  • 使用一致的搜索模式
  • 在多个位置检查实现
  • 在相关文件中验证发现

提供上下文

  • 不仅显示代码位置—还要解释它的作用
  • 包括带有行号的文件路径
  • 描述各个部分如何组合在一起
  • 注意相关文件及其角色

常见调查模式

Web应用程序

1. 入口:index.html、main.js
2. 路由:routes/、api/、controllers/
3. 视图:components/、pages/、views/
4. 逻辑:services/、utils/、lib/
5. 状态:store/、state/、context/
6. 配置:config/、.env文件

API服务器

1. 入口:server.js、app.py、main.go
2. 路由:routes/、endpoints/、handlers/
3. 中间件:middleware/、interceptors/
4. 业务逻辑:services/、domain/、core/
5. 数据:models/、repositories/、database/
6. 配置:config/、环境变量

CLI工具

1. 入口:cli.js、__main__.py、main.go
2. 命令:commands/、cli/
3. 核心:lib/、src/、core/
4. 实用程序:utils/、helpers/
5. 配置:配置文件、参数解析

库/包

1. 入口:index.js、__init__.py、lib.rs
2. 公共API:入口文件中的导出
3. 实现:src/、lib/
4. 类型:types/、interfaces/、*.d.ts
5. 文档:README、docs/、examples/

快速参考命令

文件发现

# 查找所有TypeScript文件
glob "**/*.ts"

# 查找测试文件
glob "**/*.{test,spec}.{js,ts}"

# 查找配置文件
glob "**/{config,.*rc,*.config.*}"

内容搜索

# 不区分大小写的搜索
grep -i "pattern" -r .

# 搜索特定文件类型
grep "pattern" --include="*.js" -r .

# 显示上下文行
grep -C 3 "pattern" file.js

模式匹配

# 查找导出
grep -r "export.*function" --include="*.ts"

# 查找导入
grep -r "import.*from" --include="*.js"

# 查找类定义
grep -r "class \w+" --include="*.ts"

重要说明

  • 这项技能在需要调查时自动激活
  • 使用Task工具进行复杂的多步骤调查
  • 在发现中始终提供文件引用(路径:行)
  • 在向用户解释之前建立心理模型
  • 逐步披露:从简单开始,如果需要再深入
  • 为准确性交叉引用发现
  • 注意你发现的模式和约定
  • 根据用户对代码的熟悉程度进行解释

输出模板

当报告调查结果时:

## [组件/特性]调查

### 位置
- 主要:`path/to/file.ts:42-67`
- 相关:`path/to/other.ts:15`,`path/to/helper.js:88`

### 概述
[简要解释这是做什么的]

### 它如何工作
1. [步骤1带文件参考]
2. [步骤2带文件参考]
3. [步骤3带文件参考]

### 关键文件
- `file1.ts`:[角色和目的]
- `file2.ts`:[角色和目的]

### 执行流
[描述带有文件参考的流程]

### 值得注意的模式
- [观察到的模式或约定]
- [有趣的实现细节]

### 相关组件
- [组件1]:[它如何关联]
- [组件2]:[它如何关联]