关于 rpi-research
rpi-research 是用于研究代码库的 Agent 技能,通过并行子 Agent 查找相关文件,再综合说明现有代码的结构和行为。它面向需要基于代码事实回答问题并形成技术文档的场景,不负责提出改动建议。
主要功能
- 01按研究问题拆解代码库探索
- 02并行子 Agent 定位相关文件
- 03阅读关键文件并综合发现
- 04记录路径、行号和组件关系
- 05生成代码库研究文档
适用场景
- 01回答代码库中组件如何协作
- 02查找特定功能的入口和实现
- 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>。
收到研究问题后的步骤:
-
先阅读直接提及的文件:
- 如果用户提到了特定文件或文档,请先完整阅读
- 重要:使用 Read 工具时不要设置 limit/offset 参数,以读取整个文件
- 至关重要:派生任何子任务前,必须先在主上下文中亲自读取这些文件
- 这样可确保你在拆分研究任务前掌握完整背景
-
分析并拆解研究问题:
- 重要:你的任务是进行_研究_,而非规划。如果用户提出功能请求,只需了解与该功能相关的现有代码,绝不能臆测或规划新功能。
- 将用户的查询拆分为可组合的研究领域
- 深入思考用户可能关注的底层模式、关联和架构影响
- 确定需要调查的具体组件、模式或概念
- 如果你有待办事项列表,请用它跟踪进度
- 考虑哪些目录、文件或架构模式与研究相关
-
启动并行子 Agent,查找相关文件并梳理整体情况:
- 创建多个 Task Agent 来搜索文件并确定相关内容
- 如果无法使用子 Agent,请在主上下文中自行调研
- 每个子 Agent 应专注于定位文件,并报告路径和简要摘要,而非深入分析代码
- 关键是利用这些 Agent 进行发现:
- 搜索与各个研究领域相关的文件
- 确定入口点、关键类型、重要函数和相关文档
- 报告文件路径、行号,以及每个文件内容的简短描述
- 搜索不同内容时,并行运行多个 Agent
- 提醒 Agent 只负责记录,不负责评估或改进
- 如果发现已有关于相同或类似主题的研究
- 检查文档头部的提交哈希和时间戳;必须通过启动子 Agent 检查文档创建后的所有更改,确保文档仍是最新的
- 如果文档仍是最新的,请阅读并理解
- 自行决定后续步骤中应更新现有文档,还是另建文档
- 如果用户明确要求进行网络调研
- 根据可用情况,使用 WebSearch/WebFetch 工具或技能启动 Agent
- 每个 Agent 应专注于一个研究问题
- 每个 Agent 都应完整回答问题,并为每项陈述提供来源
- 重要:如果网络搜索工具或技能本身已充当子 Agent 并直接提供答案,请直接使用该工具,不要再启动子 Agent
- 创建多个 Task Agent 来搜索文件并确定相关内容
-
在主上下文中自行阅读最相关的文件:
- 子 Agent 汇报后,确定最有助于回答研究问题的文件
- 使用 Read 工具自行阅读这些文件,以便在自己的上下文中掌握内容,撰写准确、详尽的研究文档
- 对核心发现不要只依赖子 Agent 的摘要;摘要可能遗漏细节、关联或重要内容
- 优先阅读与研究问题密切相关的文件;对于子 Agent 已充分概述的外围文件,可以跳过
- 这一步是深入理解的环节;上一步只是查找需要阅读的内容
-
综合研究发现,形成完整的认识:
- 将自己的阅读结果与子 Agent 的发现结合起来
- 串联不同组件中的发现
- 提供具体的文件路径和行号以供参考
- 突出模式、关联和架构决策
- 结合具体证据回答用户的特定问题
-
收集研究文档的元数据:
- 运行
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中的指令覆盖
- 运行
-
生成研究文档:
- 使用步骤 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` - 对此代码块的描述 ## 架构文档 [代码库中发现的当前模式、约定和设计实现] ## 待解决问题 [需要进一步调查的任何领域]
-
向用户呈现发现:
- 简洁地概述发现
- 附上关键文件引用,方便查阅
- 询问用户是否有后续问题或需要澄清的内容
-
处理后续问题:
- 如果用户提出后续问题,将内容追加到同一份研究文档中
- 添加新章节:
## 后续研究 [timestamp] - 如果已有完整上下文,直接回答该问题;否则,按需启动新的子 Agent 进行进一步调查
- 持续更新文档
重要说明:
- 使用并行子 Agent 查找文件并绘制全景图,但在主上下文中亲自阅读最重要的文件
- 每个子 Agent 的提示词都应具体明确,专注于定位文件并汇报路径
- 重点提供具体文件路径和行号,方便开发者查阅
- 研究文档应独立完整,包含所有必要的上下文
- 记录跨组件的关联以及系统之间的交互方式
- 如果用户要求进行网络研究,仅在与任务相关时阅读文件。根据请求动态调整文档结构。
- 关键要求:你和所有子 Agent 都是文档记录者,而非评估者
- 牢记:记录现状,而非理想状态
- 不提供建议:仅描述代码库的当前状态
- 文件阅读:启动子任务前,始终完整阅读提及的文件(不限制行数或偏移量)
- 关键顺序:严格遵循编号步骤
- 始终先阅读提及的文件,再启动子任务(步骤 1)
- 子 Agent 汇报后,始终亲自阅读关键文件(步骤 4)
- 综合整理前,始终等待自己完成阅读(步骤 5)
- 编写文档前,始终先收集元数据(步骤 6 必须先于步骤 7)
- 绝不使用占位内容编写研究文档
评论
支持 Markdown