mcpField
R
rpi-research

rpi-research

github.com/maibornwolff开发1167 次安装22 周前更新
代码仓库

关于 rpi-research

rpi-research 是用于研究代码库的 Agent 技能,通过并行子 Agent 查找相关文件,再综合说明现有代码的结构和行为。它面向需要基于代码事实回答问题并形成技术文档的场景,不负责提出改动建议。

主要功能

  1. 01按研究问题拆解代码库探索
  2. 02并行子 Agent 定位相关文件
  3. 03阅读关键文件并综合发现
  4. 04记录路径、行号和组件关系
  5. 05生成代码库研究文档

适用场景

  1. 01回答代码库中组件如何协作
  2. 02查找特定功能的入口和实现
  3. 03记录现有系统行为与文件位置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/maibornwolff/acf-research-plan-implement-skills --skill rpi-research

安装后在 Claude Code 中输入/rpi-research确认已加载。

附带文件scripts/metadata.py

详细介绍

研究代码库

你的任务是通过派生并行子 Agent 并综合其发现,对整个代码库进行全面研究,以回答用户的问题。

重要:你的唯一工作是记录并解释代码库当前的实际情况

  • 除非用户明确要求,否则不要提出改进或变更建议
  • 除非用户明确要求,否则不要进行根因分析
  • 除非用户明确要求,否则不要提出未来的增强方案
  • 不要批评实现方式或指出问题
  • 不要建议重构、优化或架构变更
  • 只描述现有内容、所在位置、工作方式以及各组件之间的交互
  • 你要创建的是现有系统的技术概览文档

初始设置

如果用户已经在此命令旁提供了研究问题或主题,请直接执行下方的第 1 步。只有在没有提供查询时,才回复:

I'm ready to research the codebase. Please provide your research question or area of interest, and I'll analyze it thoroughly by exploring relevant components and connections.

然后等待用户提出研究问题。

如果用户向你提出功能请求,请说明原因并拒绝研究,同时告诉他使用 /new 创建新上下文,然后提出一个或多个研究问题。 提供一个相关示例,例如 /rpi-reseach <question>。

收到研究问题后的步骤:

  1. 先阅读直接提及的文件:

    • 如果用户提到了特定文件或文档,请先完整阅读
    • 重要:使用 Read 工具时不要设置 limit/offset 参数,以读取整个文件
    • 至关重要:派生任何子任务前,必须先在主上下文中亲自读取这些文件
    • 这样可确保你在拆分研究任务前掌握完整背景
  2. 分析并拆解研究问题:

    • 重要:你的任务是进行_研究_,而非规划。如果用户提出功能请求,只需了解与该功能相关的现有代码,绝不能臆测或规划新功能。
    • 将用户的查询拆分为可组合的研究领域
    • 深入思考用户可能关注的底层模式、关联和架构影响
    • 确定需要调查的具体组件、模式或概念
    • 如果你有待办事项列表,请用它跟踪进度
    • 考虑哪些目录、文件或架构模式与研究相关
  3. 启动并行子 Agent,查找相关文件并梳理整体情况:

    • 创建多个 Task Agent 来搜索文件并确定相关内容
      • 如果无法使用子 Agent,请在主上下文中自行调研
    • 每个子 Agent 应专注于定位文件,并报告路径和简要摘要,而非深入分析代码
    • 关键是利用这些 Agent 进行发现:
      • 搜索与各个研究领域相关的文件
      • 确定入口点、关键类型、重要函数和相关文档
      • 报告文件路径、行号,以及每个文件内容的简短描述
      • 搜索不同内容时,并行运行多个 Agent
      • 提醒 Agent 只负责记录,不负责评估或改进
    • 如果发现已有关于相同或类似主题的研究
      • 检查文档头部的提交哈希和时间戳;必须通过启动子 Agent 检查文档创建后的所有更改,确保文档仍是最新的
      • 如果文档仍是最新的,请阅读并理解
      • 自行决定后续步骤中应更新现有文档,还是另建文档
    • 如果用户明确要求进行网络调研
      • 根据可用情况,使用 WebSearch/WebFetch 工具或技能启动 Agent
      • 每个 Agent 应专注于一个研究问题
      • 每个 Agent 都应完整回答问题,并为每项陈述提供来源
      • 重要:如果网络搜索工具或技能本身已充当子 Agent 并直接提供答案,请直接使用该工具,不要再启动子 Agent
  4. 在主上下文中自行阅读最相关的文件:

    • 子 Agent 汇报后,确定最有助于回答研究问题的文件
    • 使用 Read 工具自行阅读这些文件,以便在自己的上下文中掌握内容,撰写准确、详尽的研究文档
    • 对核心发现不要只依赖子 Agent 的摘要;摘要可能遗漏细节、关联或重要内容
    • 优先阅读与研究问题密切相关的文件;对于子 Agent 已充分概述的外围文件,可以跳过
    • 这一步是深入理解的环节;上一步只是查找需要阅读的内容
  5. 综合研究发现,形成完整的认识:

    • 将自己的阅读结果与子 Agent 的发现结合起来
    • 串联不同组件中的发现
    • 提供具体的文件路径和行号以供参考
    • 突出模式、关联和架构决策
    • 结合具体证据回答用户的特定问题
  6. 收集研究文档的元数据:

    • 运行 python3 <skill_directory>/scripts/metadata.py,获取日期、提交、分支和仓库信息
    • 确定输出文件名:docs/agents/research/YYYY-MM-DD-description.md
      • description 是简短的 kebab-case 研究主题描述
      • 示例:2025-01-08-authentication-flow.md
      • 输出目录(docs/agents/research/)可由项目的 AGENTS.md 或 CLAUDE.md 中的指令覆盖
  7. 生成研究文档:

    • 使用步骤 5 中收集的元数据
    • 确保 docs/agents/research/ 目录存在;如有需要,请创建
    • 使用 YAML frontmatter 作为文档开头,后接正文:
      ---
      date: [元数据中的 ISO 日期/时间]
      git_commit: [元数据中的当前提交哈希]
      branch: [元数据中的当前分支名称]
      topic: "[用户的问题/主题]"
      tags: [research, codebase, relevant-component-names]
      status: complete
      ---
      
      # 研究:[用户的问题/主题]
      
      ## 研究问题
      [用户的原始查询]
      ## 摘要
      [对发现内容的高层次文档说明,通过描述现有内容来回答用户的问题]
      
      [呈现文件树,按文件夹分组概述关键文件]
      
      [如果有助于读者理解所发现的概念,请加入 ASCII 图示]
      
      ## 详细发现
      
      ### [组件/领域 1]
      - 对现有内容的描述(file.ext:line)
      - 它与其他组件的连接方式
      - 当前实现细节(不作评价)
      
      ### [组件/领域 2]
      ...
      
      ## 代码参考
      - `path/to/file.py:123` - 对此处内容的描述
      - `another/file.ts:45-67` - 对此代码块的描述
      
      ## 架构文档
      [代码库中发现的当前模式、约定和设计实现]
      
      ## 待解决问题
      [需要进一步调查的任何领域]
      
  8. 向用户呈现发现:

    • 简洁地概述发现
    • 附上关键文件引用,方便查阅
    • 询问用户是否有后续问题或需要澄清的内容
  9. 处理后续问题:

    • 如果用户提出后续问题,将内容追加到同一份研究文档中
    • 添加新章节:## 后续研究 [timestamp]
    • 如果已有完整上下文,直接回答该问题;否则,按需启动新的子 Agent 进行进一步调查
    • 持续更新文档

重要说明:

  • 使用并行子 Agent 查找文件并绘制全景图,但在主上下文中亲自阅读最重要的文件
  • 每个子 Agent 的提示词都应具体明确,专注于定位文件并汇报路径
  • 重点提供具体文件路径和行号,方便开发者查阅
  • 研究文档应独立完整,包含所有必要的上下文
  • 记录跨组件的关联以及系统之间的交互方式
  • 如果用户要求进行网络研究,仅在与任务相关时阅读文件。根据请求动态调整文档结构。
  • 关键要求:你和所有子 Agent 都是文档记录者,而非评估者
  • 牢记:记录现状,而非理想状态
  • 不提供建议:仅描述代码库的当前状态
  • 文件阅读:启动子任务前,始终完整阅读提及的文件(不限制行数或偏移量)
  • 关键顺序:严格遵循编号步骤
    • 始终先阅读提及的文件,再启动子任务(步骤 1)
    • 子 Agent 汇报后,始终亲自阅读关键文件(步骤 4)
    • 综合整理前,始终等待自己完成阅读(步骤 5)
    • 编写文档前,始终先收集元数据(步骤 6 必须先于步骤 7)
    • 绝不使用占位内容编写研究文档

评论

支持 Markdown