Project Explore Skill

还在为阅读理解代码仓库感到苦恼吗?快使用Project-Explore Skill

项目缘起

灵感和方法论来自于: (4 封私信) 关于阅读开源项目的源码,有哪些经验值得分享? - 知乎。实践一段时间后感觉好用。于是炼制成Skill方便复用。
可用Skill位于: Project-Explore-Skill。使用前建议先调用/init命令创建项目上下文
Agent时代,探索已有的代码仓库可以是一件很轻松的事情。在LLM的帮助下,探索仓库从读代码到问代码,定位问题后再细看,通过提问引导方向。
探索仓库可以被打造为流水线操作,然后根据用户需求逐步深入。

内容说明

从五个视角开始深入:

  1. 黑箱视角:摸清项目边界

    • 系统能做什么:README 通常已经明确了项目的目标和功能
    • 系统解决什么问题:理解它的使用场景和价值定位
    • 对外接口是什么:CLI 命令、HTTP API、SDK 接口等
    • 依赖的技术栈:语言、框架、数据库、外部服务等
  2. 核心概念和术语理解:建立词汇表。每个项目有自己的一套概念体系和数据,先理解这些。

    • 提取核心概念:让 Agent 从 README、文档、代码注释中提取项目特有的术语和概念
    • 理解概念定义:每个概念是什么意思?为什么要引入这个概念?
    • 识别概念关系:这些概念之间是什么关系?层级、依赖、组合?

      OpenClaw 的核心概念是 Channel(通道)、Agent(智能体)、Memory(记忆)、Gateway(网关)。
      其中,Channel、Agent、Memory 是三大子系统,Gateway 则统管这三大子系统,负责消息流转、智能体调度、记忆存取的协调工作。
      EverMemOS 则有一套更复杂的记忆体系:
      MemCell(记忆细胞)是最小原子单元,聚合为 Episode Memory(情节记忆),
      同时提取出 Event Log(事件日志)和 Foresight(前瞻记忆);
      用户画像由 Core MemoryUser ProfileGroup Profile 构成;
      知识图谱通过 EntityRelationship 建模。

  3. 架构视角

    • 核心模块有哪些:承担主要业务逻辑的模块
    • 辅助模块有哪些:工具、配置、测试等支撑模块
    • 模块职责划分:每个模块负责什么?边界在哪里?
    • 模块依赖关系:谁调用谁?数据如何在模块间流转?

      使用技巧:分析代码量,代码量是开发者投票的结果,告诉你作者真正投入什么

  4. 核心算法视角:识别关键抽象

    • 这个系统的核心能力是什么
    • 它能解决什么问题,不能解决什么问题
    • 性能瓶颈在哪里,时间/空间复杂度如何
    • 与其他系统的本质区别是什么
  5. 建设性视角:从理解到批判

    • 这个模块是否必要?

    • 自研还是集成?是否有更成熟的替代品?

    • 技术选型是否合理?反映了作者的什么考虑?

    • 如果重新设计,哪些可以替换?哪些必须保留?

    • 识别自研部分:哪些模块/算法是项目自己实现的?

    • 寻找替代方案:每个自研部分是否有成熟的开源产品或库?

    • 评判自研必要性:作者为什么要自己实现?是真的有必要,还是重复造轮子?

    • 发现选型问题:技术选型是否欠考虑?是否存在更优方案?

Skill 创建

将提示词和思路包装为task.md,在Antigravity中由Gemini 3.1创建Skill;随后本地进行测试,效果良好

任务: 创建名为project-explore的Skill
要求: 使用.agent/skill-creator创建
技能说明:

  • 按照 系统边界 -> 核心概念和术语理解 -> 架构 -> 核心抽象 -> 批判性视角 的流程进行项目分析;并且将每一步分析的结果保存为.docs目录下单独的markdown文件
  • 所有步骤完成后,在.docs目录下生成 index.md 用于概括索引其他文档

技能步骤:

  1. 系统边界,提示词如下:
    1
    2
    3
    4
    5
    6
    请分析这个项目的系统边界:
    1. 项目目标是什么?解决什么问题?
    2. 支持哪些平台和运行环境?
    3. 提供哪些对外接口?(CLI/API/SDK)
    4. 依赖哪些技术栈?(语言/框架/数据库/外部服务)
    5. 如何安装和使用?有什么前置条件?
  2. 核心概念和术语,提示词如下:
    1
    2
    3
    4
    5
    6
    请提取这个项目的核心概念体系:
    1. 有哪些关键术语和概念?列出完整清单
    2. 每个概念的定义是什么?为什么需要这个概念?
    3. 这些概念之间是什么关系?(层级/依赖/组合)
    4. 哪些概念是核心的,哪些是辅助的?
    5. 概念体系如何映射到代码结构?
  3. 架构设计,提示词如下
    1
    2
    3
    4
    5
    6
    7
    8
    请分析这个项目的模块架构: 
    1. 项目由哪些模块组成?请列出目录结构
    2. 哪些是核心模块?哪些是辅助模块?
    3. 每个模块的职责是什么?模块边界在哪里?
    4. 模块之间的依赖关系是什么?画出依赖图
    5. 每个模块的代码量是多少?(行数/文件数)
    6. 代码量分布说明了什么?开发重点在哪里?
    7. 哪些模块可以独立拆分?哪些强耦合?
  4. 核心抽象,提示词如下:
    1
    2
    3
    4
    5
    6
    请分析这个项目的核心算法:
    1. 项目使用了哪些关键算法?列出清单
    2. 每个算法解决了什么问题?为什么需要它?
    3. 算法的时间/空间复杂度如何?有什么限制?
    4. 算法的输入输出是什么?数据结构如何?
    5. 这些算法在代码中的实现在哪里?
  5. 批判性视角,提示词如下
    1
    2
    3
    4
    5
    6
    7
    请评估这个项目的技术选型: 
    1. 哪些模块/算法是自研的?
    2. 每个自研部分是否有成熟的替代品?列出候选方案
    3. 自研的必要性是什么?是否有过度设计?
    4. 如果重新设计,哪些可以替换?哪些必须保留?
    5. 技术选型反映了作者的什么考虑?可能存在什么问题?
    6. 从这个项目中,有哪些模块/算法值得我吸收到自己的技术储备中?