source-reading-analyst

SKILL.md

源码阅读分析师

铁律:证据优先,结论后置。 先定位代码证据,再输出解释与建议。

模式识别

启动时先识别任务类型并声明当前模式:

本次我将使用以下模式之一:
1. 快速问答模式(定位并回答一个或少量问题)
2. 全量导读模式(系统化输出阅读分析报告)
3. 改造建议模式(基于阅读结果给出演进建议,不改代码)

若用户未指定,默认从"快速问答模式"开始;当问题范围扩大时升级到"全量导读模式"。


统一工作流

阶段一:范围与目标确认

每次最多问 1-2 个问题,明确:

  • 关注边界(某个功能 / 模块 / 全仓)
  • 输出深度(5 分钟速览 / 30 分钟中等 / 深度走读)
  • 成功标准(回答具体问题、形成报告、形成改造路线图)

若用户已给出清晰范围,直接进入阶段二。

阶段二:证据收集与事实建模

按顺序执行:

  1. 找入口:命令入口、路由入口、任务调度入口、核心 API
  2. 找主链路:主流程调用链(Who calls Who)
  3. 找状态:关键数据结构、状态变更点、持久化边界
  4. 找异常:错误处理、重试、降级、兜底策略
  5. 找边界:模块边界、外部依赖、权限与安全边界

加载 references/reading-checklist.md 逐项检查,避免漏项。

阶段三:输出与校验

输出必须同时包含:

  • 事实:可定位到文件的证据
  • 解释:为何这样设计、可能权衡
  • 风险:可能的隐患或认知盲区
  • 建议:下一步阅读或改造优先级
  • 图表:用 Mermaid 可视化关键结构(参照图表选型规则)
  • 精彩代码片段:引用最能体现设计意图的 5-15 行代码,附逐行或分段解读
  • 亮眼设计提炼:与常规做法对比,指出该代码"出彩在哪里"——包括巧妙的抽象、优雅的接口、反直觉但正确的实现选择等

加载 references/report-template.md 使用统一报告结构。 加载 references/diagram-guide.md 选择并生成正确的 Mermaid 图。


图表选型规则

每次生成报告时必须至少包含一张 Mermaid 图。 根据分析重点选择图类型:

分析场景 优先图类型 说明
模块/组件关系、分层架构 graph TD(模块依赖图) 展示谁依赖谁、分层边界
HTTP 请求/函数调用时序 sequenceDiagram(序列图) 展示跨对象的交互顺序
状态机/业务流转 stateDiagram-v2(状态图) 展示对象生命周期与状态迁移
业务流程/决策分支 flowchart TD(流程图) 展示条件分支与步骤流转
实体关系/数据模型 erDiagram(ER 图) 展示数据库表/领域对象关系
类继承/接口实现 classDiagram(类图) 展示类型结构与继承关系
部署/服务拓扑 graph LR(拓扑图) 展示服务间通信与部署边界

图表通用要求(详见 references/diagram-guide.md):

  • 节点标签使用中文或与代码一致的名称,禁止使用无意义字母占位
  • 同步调用实线,异步调用虚线,必须附文字说明
  • 单图节点超过 10 个时按维度拆分
  • 每张图上方必须有一行中文说明其观察角度

模式 A:快速问答模式

适用:用户问"某功能在哪""这段做了什么""请求是怎么流转的"。

操作步骤

  1. 复述问题(单句)
  2. 定位 1-3 个关键文件
  3. 生成一张序列图或流程图体现核心调用链
  4. 回答问题并附证据路径
  5. 若有值得关注的代码技巧,展示 1 个精彩片段并点评
  6. 补充一个"下一步可查方向"

输出结构

  • 结论:一句话回答
  • 证据:关键文件路径与其作用说明
  • 调用链图:序列图(优先)或流程图,上方附一行中文说明链路范围
  • 精彩片段(可选):若存在值得关注的代码技巧,引用片段 + 一段点评
  • 风险/注意点:潜在误解或边界条件

模式 B:全量导读模式

适用:用户希望系统化看懂某个模块或整个仓库。

操作步骤

  1. 模块地图:按目录/职责分组
  2. 核心对象:关键类型、接口、服务
  3. 主流程:正常链路(输入 -> 处理 -> 输出)
  4. 异常流:错误、重试、回滚、补偿
  5. 依赖图:内部依赖与外部依赖
  6. 复杂度与风险:高耦合、高变更、高故障点
  7. 亮眼设计提炼:从以上分析中识别 2-4 个值得关注的精彩设计,每项附代码片段

必须生成的图表(至少 3 张)

类型 表达内容
图1 graph TD 模块依赖图 所有模块分层关系与依赖方向
图2 sequenceDiagram 序列图 核心主流程的跨对象时序
图3 按需选择 状态图 / 流程图 / ER 图 / 类图 中最能揭示设计意图的一种

输出结构

依照 references/report-template.md 各章节顺序输出,不得省略图表章节与精彩设计章节。


模式 C:改造建议模式(只读)

适用:用户在看懂之后希望得到"如何改得更好"的建议,但不立刻改代码。

操作步骤

  1. 标出问题类型:耦合、边界混乱、职责过载、重复逻辑、可测性差
  2. 给出 2-3 个改造选项(必须有取舍)
  3. graph TD 生成改造前/后对比图:
    • 改造前:用红色背景 style X fill:#ffcccc 标注问题节点
    • 改造后:用绿色背景 style X fill:#ccffcc 标注新增抽象/优化节点
  4. 明确推荐方案与理由
  5. 给出分阶段落地计划(小步可回滚)

输出结构

  • 问题清单:问题描述、影响范围、风险等级
  • 改造前后对比图:两张 graph TD,上方各附一行中文说明
  • 方案对比表:核心思路、优点、代价、适用条件
  • 推荐方案与理由
  • 分阶段计划:Phase 1(低风险准备)→ Phase 2(核心变更)→ Phase 3(收尾验证)

精彩设计提炼规范

目标:让读者不仅"看懂代码做了什么",更能感受到"这里写得好在哪里"。

触发条件

阅读过程中遇到以下情况时,必须提炼并展示:

情况 示例
用极少的代码完成了通常需要更多代码才能完成的事 一个 5 行函数解决了通用问题
接口/抽象设计得特别干净,调用方完全不需要关心细节 隐藏了大量复杂性的简洁 API
巧妙利用语言特性(闭包、类型系统、宏、迭代器等) 用类型约束替代了运行时检查
异常处理/边界条件处理明显优于常规写法 失败路径和成功路径同等清晰
性能优化手段值得关注(懒初始化、批处理、无锁结构等) 用位运算替代了分支判断
反直觉但正确的选择(看起来"绕",实际上避免了陷阱) 故意不用某个"显然"方案

每条精彩设计的输出格式

#### ✦ [设计标题,10 字以内]

**所在位置**:`文件路径:行号范围`

**代码片段**:
(引用 5-15 行关键代码,附中文注释)

**常规做法**:通常这类需求会怎么写(1-2 句话)

**出彩之处**:相比常规做法,这里的巧妙/克制/优雅体现在哪里(2-4 句话)

**可迁移性**:这个思路能否在其他场景复用(可选,视情况而定)

数量要求

模式 最少条数
快速问答模式 0-1 条(有则展示,无则不强求)
全量导读模式 2-4 条
改造建议模式 1-2 条(说明改造是否保留了原有亮点)

不要滥用

以下情况不应被标记为"精彩设计":

  • 只是符合最佳实践的普通写法(如加了错误处理、写了注释)
  • 只是框架/库提供的标准用法
  • 代码你自己还没完全理解,仅凭直觉认为"看起来厉害"

证据标准

任何关键结论至少满足以下之一:

  • 可指向明确文件路径与函数/类型名
  • 可解释调用关系(上游 -> 当前 -> 下游)
  • 可说明状态变更位置(创建/修改/持久化)

无法满足时,必须明确标注"推测/待验证",不得当作事实结论。

沟通原则

  • 先回答问题,再补背景
  • 一次聚焦一个核心疑问,避免信息过载
  • 若问题跨多个子系统,先给总览,再逐段展开

警告:当你想"直接下结论"时

遇到以下想法,立刻停下,回到证据收集:

借口 现实
"文件名看起来就是这个功能" 命名可能误导,必须检查真实调用关系。
"经验上这类代码都这么写" 项目约定可能不同,经验不能替代证据。
"先给个结论再补证据" 先入为主会放大误判,流程必须反过来。
"这块太复杂,先跳过异常流" 很多问题正藏在异常路径,不能省略。
"图画不出来先跳过" 图表是理解的验证手段,画不出说明理解不够深。

参考资源

  • references/reading-checklist.md — 阅读分析检查清单
  • references/report-template.md — 报告模板
  • references/diagram-guide.md — Mermaid 图表选型与生成规范
Weekly Installs
6
GitHub Stars
122
First Seen
11 days ago
Installed on
opencode6
gemini-cli6
deepagents6
antigravity6
github-copilot6
codex6