还在为阅读理解代码仓库感到苦恼吗?快使用Project-Explore Skill
项目缘起
灵感和方法论来自于: (4 封私信) 关于阅读开源项目的源码,有哪些经验值得分享? - 知乎。实践一段时间后感觉好用。于是炼制成Skill方便复用。
可用Skill位于: Project-Explore-Skill。使用前建议先调用/init命令创建项目上下文
Agent时代,探索已有的代码仓库可以是一件很轻松的事情。在LLM的帮助下,探索仓库从读代码到问代码,定位问题后再细看,通过提问引导方向。
探索仓库可以被打造为流水线操作,然后根据用户需求逐步深入。
内容说明
从五个视角开始深入:
黑箱视角:摸清项目边界
- 系统能做什么:README 通常已经明确了项目的目标和功能
- 系统解决什么问题:理解它的使用场景和价值定位
- 对外接口是什么:CLI 命令、HTTP API、SDK 接口等
- 依赖的技术栈:语言、框架、数据库、外部服务等
核心概念和术语理解:建立词汇表。每个项目有自己的一套概念体系和数据,先理解这些。
- 提取核心概念:让 Agent 从 README、文档、代码注释中提取项目特有的术语和概念
- 理解概念定义:每个概念是什么意思?为什么要引入这个概念?
- 识别概念关系:这些概念之间是什么关系?层级、依赖、组合?
OpenClaw 的核心概念是 Channel(通道)、Agent(智能体)、Memory(记忆)、Gateway(网关)。
其中,Channel、Agent、Memory 是三大子系统,Gateway 则统管这三大子系统,负责消息流转、智能体调度、记忆存取的协调工作。
EverMemOS 则有一套更复杂的记忆体系:
MemCell(记忆细胞)是最小原子单元,聚合为 Episode Memory(情节记忆),
同时提取出 Event Log(事件日志)和 Foresight(前瞻记忆);
用户画像由 Core Memory、User Profile、Group Profile 构成;
知识图谱通过 Entity 和 Relationship 建模。
架构视角
- 核心模块有哪些:承担主要业务逻辑的模块
- 辅助模块有哪些:工具、配置、测试等支撑模块
- 模块职责划分:每个模块负责什么?边界在哪里?
- 模块依赖关系:谁调用谁?数据如何在模块间流转?
使用技巧:分析代码量,代码量是开发者投票的结果,告诉你作者真正投入什么
核心算法视角:识别关键抽象
- 这个系统的核心能力是什么
- 它能解决什么问题,不能解决什么问题
- 性能瓶颈在哪里,时间/空间复杂度如何
- 与其他系统的本质区别是什么
建设性视角:从理解到批判
这个模块是否必要?
自研还是集成?是否有更成熟的替代品?
技术选型是否合理?反映了作者的什么考虑?
如果重新设计,哪些可以替换?哪些必须保留?
识别自研部分:哪些模块/算法是项目自己实现的?
寻找替代方案:每个自研部分是否有成熟的开源产品或库?
评判自研必要性:作者为什么要自己实现?是真的有必要,还是重复造轮子?
发现选型问题:技术选型是否欠考虑?是否存在更优方案?
Skill 创建
将提示词和思路包装为task.md,在Antigravity中由Gemini 3.1创建Skill;随后本地进行测试,效果良好
任务: 创建名为project-explore的Skill
要求: 使用.agent/skill-creator创建
技能说明:
- 按照 系统边界 -> 核心概念和术语理解 -> 架构 -> 核心抽象 -> 批判性视角 的流程进行项目分析;并且将每一步分析的结果保存为.docs目录下单独的markdown文件
- 所有步骤完成后,在.docs目录下生成 index.md 用于概括索引其他文档
技能步骤:
- 系统边界,提示词如下:
1
2
3
4
5
6请分析这个项目的系统边界:
1. 项目目标是什么?解决什么问题?
2. 支持哪些平台和运行环境?
3. 提供哪些对外接口?(CLI/API/SDK)
4. 依赖哪些技术栈?(语言/框架/数据库/外部服务)
5. 如何安装和使用?有什么前置条件? - 核心概念和术语,提示词如下:
1
2
3
4
5
6请提取这个项目的核心概念体系:
1. 有哪些关键术语和概念?列出完整清单
2. 每个概念的定义是什么?为什么需要这个概念?
3. 这些概念之间是什么关系?(层级/依赖/组合)
4. 哪些概念是核心的,哪些是辅助的?
5. 概念体系如何映射到代码结构? - 架构设计,提示词如下
1
2
3
4
5
6
7
8请分析这个项目的模块架构:
1. 项目由哪些模块组成?请列出目录结构
2. 哪些是核心模块?哪些是辅助模块?
3. 每个模块的职责是什么?模块边界在哪里?
4. 模块之间的依赖关系是什么?画出依赖图
5. 每个模块的代码量是多少?(行数/文件数)
6. 代码量分布说明了什么?开发重点在哪里?
7. 哪些模块可以独立拆分?哪些强耦合? - 核心抽象,提示词如下:
1
2
3
4
5
6请分析这个项目的核心算法:
1. 项目使用了哪些关键算法?列出清单
2. 每个算法解决了什么问题?为什么需要它?
3. 算法的时间/空间复杂度如何?有什么限制?
4. 算法的输入输出是什么?数据结构如何?
5. 这些算法在代码中的实现在哪里? - 批判性视角,提示词如下
1
2
3
4
5
6
7请评估这个项目的技术选型:
1. 哪些模块/算法是自研的?
2. 每个自研部分是否有成熟的替代品?列出候选方案
3. 自研的必要性是什么?是否有过度设计?
4. 如果重新设计,哪些可以替换?哪些必须保留?
5. 技术选型反映了作者的什么考虑?可能存在什么问题?
6. 从这个项目中,有哪些模块/算法值得我吸收到自己的技术储备中?