代码库调查Skill investigating-a-codebase

该技能用于在软件开发过程中调查和分析代码库,帮助开发者理解现有代码结构、查找模式、验证设计假设,防止基于错误假设的实现。关键词包括代码库调查、代码理解、设计验证、软件开发、架构设计。

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

name: 代码库调查 description: 在规划或设计功能时使用,需要理解当前代码库状态,查找现有模式,或验证关于存在内容的假设;当设计对文件位置、结构或现有代码做出假设需要验证时 - 通过将计划基于现实来防止幻觉 user-invocable: false

代码库调查

概述

理解当前代码库状态,以便将规划和设计决策基于现实而非假设。查找现有模式,验证设计假设,并提供关于存在内容和位置的明确答案。

何时使用

使用于:

  • 在实施前验证设计假设(“设计假设 auth.ts 存在 - 验证”)
  • 查找现有模式以遵循(“我们目前如何处理 API 错误?”)
  • 定位功能或代码(“用户身份验证在哪里实现?”)
  • 理解组件架构(“路由系统如何工作?”)
  • 明确确认存在性(“功能 X 是否存在?”)
  • 防止关于文件路径和结构的幻觉

不用于:

  • 外部文档中可用的信息(使用互联网研究)
  • 通过阅读1-2个特定已知文件可回答的问题(直接阅读)
  • 不特定于此代码库的通用编程问题

核心调查工作流

  1. 从入口点开始 - 主要文件、index、package.json、配置
  2. 使用多种搜索策略 - Glob模式、Grep关键词、阅读文件
  3. 跟踪痕迹 - 导入、引用、组件关系
  4. 验证而非假设 - 确认文件位置和结构
  5. 明确报告 - 确切路径或搜索策略的"未找到"

验证设计假设

当给定设计假设进行验证时:

  1. 提取假设 - 列出设计期望存在的内容
  2. 搜索每个 - 文件路径、函数、模式、依赖
  3. 比较现实与期望 - 匹配、差异、附加、缺失
  4. 明确报告:
    • ✓ 确认:“设计假设正确:auth.ts:42 有 login()”
    • ✗ 差异:“设计假设 auth.ts,但找到 auth/index.ts”
      • 附加:“找到未在设计提到的 logout()”
      • 缺失:“设计期望 resetPassword(),未找到”

为什么重要: 防止基于代码库结构错误假设的实施计划。

快速参考

任务 策略
X 在哪里 Glob 可能名称 → Grep 关键词 → 阅读匹配
X 如何工作 找到入口点 → 跟踪导入 → 阅读实现
存在哪些模式 找到示例 → 比较实现 → 提取约定
X 是否存在 多次搜索 → 明确是/否 → 证据
验证假设 提取声明 → 搜索每个 → 比较现实与期望

调查策略

多种搜索方法:

  • Glob 用于跨代码库的文件模式
  • Grep 用于关键词、函数名、导入
  • 阅读关键文件以理解实现
  • 跟踪导入和引用以了解关系
  • 检查 package.json、配置文件以了解依赖

不要停留在第一个结果:

  • 探索多个路径以验证发现
  • 交叉参考代码库的不同区域
  • 确认模式一致而非偶然
  • 跟踪使用和定义痕迹

验证一切:

  • 从不假设文件位置 - 总是用阅读/Glob验证
  • 从不假设结构 - 探索并确认
  • 报告"未找到"时记录搜索策略
  • 区分"不存在"和"未能定位"

报告发现

以直接答案开头:

  • 先回答问题
  • 支持细节其次
  • 证据带有确切文件路径和行号

提供可操作的情报:

  • 确切文件路径(src/auth/login.ts:42),而非模糊位置
  • 显示当前模式的相关代码片段
  • 依赖和版本(当相关时)
  • 配置文件和当前设置
  • 命名、结构和测试约定

自信处理"未找到":

  • "功能 X 不存在"是有效且有用的
  • 解释搜索了什么和在哪里查找
  • 建议相关代码作为起点
  • 报告负面发现以防止幻觉

常见错误

错误 修复
假设文件位置 在报告前总是用阅读/Glob验证
停留在第一个结果 探索多个路径以验证发现
模糊位置(“在 auth 文件夹”) 确切路径(src/auth/index.ts:42)
未记录搜索策略 报告"未找到"时解释检查了什么
混淆"未找到"类型 区分"不存在"和"未能定位"
跳过设计假设比较 明确报告:确认/差异/附加/缺失
将假设报告为事实 只报告在代码库中验证的内容