name: 迭代式代码探索 description: 通过迭代精进理解不熟悉代码库的渐进式上下文检索模式 license: MIT metadata: source: affaan-m/everything-claude-code adapted-by: ai-skills category: 代码探索
迭代式代码探索
一种通过迭代上下文精进逐步探索和理解不熟悉代码库的系统模式。
问题
当处理新代码库时,您通常不知道:
- 哪些文件包含相关代码
- 存在哪些模式和约定
- 项目使用什么术语
- 组件如何交互
标准方法失败:
- 阅读所有内容:耗时且让人不知所措
- 猜测位置:常常错过关键上下文
- 提出宽泛问题:返回太多无关信息
解决方案:4阶段迭代循环
┌─────────────────────────────────────────────┐
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 发现 │─────▶│ 评估 │ │
│ └──────────┘ └──────────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ 循环 │◀─────│ 精炼 │ │
│ └──────────┘ └──────────┘ │
│ │
│ 最多3-4个循环,然后综合 │
└─────────────────────────────────────────────┘
阶段1:发现
从广泛探索开始:
# 查找入口点
find . -name "main.*" -o -name "index.*" -o -name "app.*" | head -20
# 发现项目结构
tree -L 3 -I 'node_modules|dist|build'
# 查找配置
find . -name "*.config.*" -o -name "package.json" -o -name "*.toml"
# 识别关键模式
grep -r "export class" --include="*.ts" src/ | head -20
grep -r "def " --include="*.py" . | head -20
记录初步发现:
- 项目类型(Web应用、库、服务等)
- 技术栈(语言、框架)
- 架构提示(单仓库、微服务等)
阶段2:评估
评估发现的文件的相关性:
# 阅读高价值文件
cat README.md
cat ARCHITECTURE.md 2>/dev/null
cat docs/overview.md 2>/dev/null
# 检查包清单
cat package.json | jq '.dependencies, .scripts'
cat Cargo.toml 2>/dev/null
cat requirements.txt 2>/dev/null
评分标准:
- 关键(★★★):入口点、核心逻辑、主要配置
- 重要(★★):实用工具、共享组件、类型
- 支持(★):测试、文档、示例
- 噪声(-):生成文件、供应商代码
阶段3:精炼
专注于识别为相关的特定领域:
# 深入特定模块
ls -la src/core/
cat src/core/index.ts
# 追踪依赖
grep -r "import.*from.*core" --include="*.ts" src/ | head -20
# 查找相关模式
grep -A 5 -B 5 "class UserService" src/**/*.ts
# 检查使用示例的测试
find . -name "*.test.*" -o -name "*.spec.*" | head -10
构建心智模型:
- 组件如何连接
- 一致使用哪些模式
- 类似功能所在位置
阶段4:循环
决策点——是否需要更多上下文?
继续如果:
- 关键功能仍不清楚
- 依赖未完全追踪
- 模式不一致或令人困惑
停止如果:
- 核心逻辑已理解
- 能解释主要流程
- 准备好自信地进行更改
实用工作流
对于功能实现
-
发现:查找类似现有功能
grep -r "功能名称" src/ find . -name "*功能*" -
评估:审查实现模式
cat src/features/类似功能/index.ts -
精炼:检查测试和边缘情况
cat src/features/类似功能/*.test.ts -
循环:追踪依赖直到清晰
对于错误修复
-
发现:定位错误来源
grep -r "错误消息" src/ git log -S "错误消息" -
评估:理解周围上下文
cat 路径/到/文件.ts | grep -A 20 -B 20 "错误位置" -
精炼:检查调用站点和调用者
grep -r "函数名称" --include="*.ts" src/ -
循环:根据需要扩展上下文
对于重构
-
发现:映射当前结构
find src/ -name "*.ts" | xargs wc -l | sort -n grep -r "class\|interface" --include="*.ts" src/ | wc -l -
评估:识别耦合点
grep -r "import.*from.*模块" src/ | cut -d: -f2 | sort | uniq -c | sort -rn -
精炼:查找所有使用
grep -r "组件名称" --include="*.ts" src/ -
循环:确保找到所有引用
输出模板
每个循环迭代后,记录:
## 迭代 N
**查询**:我在寻找什么
**找到**:X个文件,Y个模式,Z个组件
**相关性**:高/中/低,附原因
**差距**:仍不清楚的内容
**下一步**:下一迭代探索什么
**关键文件**:
- 路径/到/文件.ts - 核心实现(★★★)
- 路径/到/其他.ts - 支持工具(★★)
**心智模型更新**:
- 对X的新理解
- Y和Z之间的连接
- 模式:描述
集成点
补充:
- 知识架构:用于记录发现
- 第二大脑图书管理员:用于保存探索笔记
- 项目编排:用于规划探索策略
- 测试模式:用于通过测试学习
提示
- 从宽开始,然后缩小焦点
- 记录假设以验证
- 使用测试作为文档
- 遵循导入/导出
- 检查Git历史以获取上下文
- 寻找解释“为什么”的注释