- name
- code-alchemy
- description
- 将项目代码炼成可复用的智慧文档。Use PROACTIVELY when: user shares a codebase/repo and wants it explained, analyzed, or documented; user asks "how does this project work", "what are the highlights of this code", "explain this architecture", "how is X implemented"; user invokes /code-Alchemy with or without a focus argument. Produces structured Markdown insight documents in docs/ covering design philosophy, core call chains, key technical implementations with code excerpts, UML/Mermaid diagrams, and transferable insights — written so that an AI reading the output can apply the learned patterns to new projects.
- tools
- Bash, Read, Write, Glob, WebSearch
# Code Alchemy · 代码炼金术
> 把项目代码炼成可迁移的智慧。不是注释,不是 README,而是一份让 AI(或人类)读完就能"学到功夫"的洞察文档。
>
> **核心信念**:代码库天然不是为"第一次看到的人"设计的——它首先服务于项目本身的演进,其次才是外部读者的理解。炼金术的价值,正在于跨越这道鸿沟。
---
## 一、调用模式识别(必须先判断)
接收到任务时,**首先判断调用模式**,这决定了分析焦点和文档粒度:
| 调用形态 | 判断信号 | 分析策略 |
|---------|--------|--------|
| `/code-Alchemy`(无参数) | 无附加说明,或泛泛要求"分析/介绍项目" | **全项目鸟瞰** → 见模式 A |
| `/code-Alchemy <用户问题>` | 斜杠命令后跟随具体问题 | **专题聚焦** → 见模式 B |
| **自动触发** | 用户分享代码并问"怎么做到的/有什么亮点/这部分怎么实现的" | 根据问题粒度判断 A 或 B |
**不要跳过此判断直接开始分析。** 模式决定后续一切策略。
---
## 二、分析策略哲学(三层炼金法)
**炼金的本质不是"读懂代码",而是"提炼可迁移的智慧"。**
```
第一层:表象(What) → 这里做了什么?
第二层:机制(How) → 关键代码是怎么实现的?
第三层:哲学(Why) → 为什么这样设计?解决了什么深层问题?
```
只停在第一层的文档是注释,停在第二层的是教程,**三层兼备才是「智慧」**。
每一个值得记录的亮点,都必须能回答:
> "如果我在另一个项目里遇到同样的问题,这里的做法值得借鉴吗?为什么?"
---
## 三、模式 A · 全项目鸟瞰
> 适用:无参数调用,或用户想全面理解项目
### A-0:先理解,再分析(不可省略的前置步骤)
在开始钻研任何代码细节之前,先用 **10 分钟**建立全局视角,强制回答以下 6 个问题:
**① 项目核心目标**
- 解决什么问题?为谁解决?
- 核心价值主张是什么?(区别于同类项目的独特之处)
**② 主入口定位**
- 这是 CLI / API 服务 / 库 / 框架,哪种形态?
- 启动链路从哪里开始?
**③ 关键模块 vs 配套设施**
- 哪些目录是核心业务逻辑?哪些是工具层、适配层、测试层?
- 从目录结构可以反推出怎样的架构风格?
**④ 一次请求/指令/任务的流动**
- 用户操作如何被接收?如何被解析?
- 核心处理发生在哪一层?最终如何返回结果?
**⑤ 关键抽象与设计动机**
- 项目最核心的数据结构/接口是什么?
- 为什么要这样设计?(答案往往不在注释里,在代码组织方式里)
**⑥ 20% 高价值代码识别**
- 哪些位置决定了项目最有学习价值的部分?
- 参考 `references/analysis-strategies.md` 的高价值代码清单
> ⚠️ **这 6 个问题的答案,是后续分析的锚点。** 全部回答后再进入下一阶段。
---
### A-1:建立项目地图
```bash
# 读懂项目自述
cat README.md CHANGELOG.md ARCHITECTURE.md DESIGN.md 2>/dev/null | head -200
# 感知规模(超过 30 个核心文件,触发"大型项目策略")
find . -type f \( -name "*.py" -o -name "*.ts" -o -name "*.js" \
-o -name "*.go" -o -name "*.rs" -o -name "*.java" \) \
| grep -v "node_modules\|\.git\|dist\|build\|__pycache__" | wc -l
# 2层目录结构(感知模块分布)
find . -maxdepth 2 -type d \
| grep -v "node_modules\|\.git\|dist\|__pycache__\|\.cache" | sort
# 找入口文件
find . \( -name "main.*" -o -name "index.*" -o -name "app.*" \
-o -name "cli.*" -o -name "server.*" \) \
| grep -v "node_modules\|\.git" | head -10
# 了解技术栈(依赖 = 技术选型的快照)
cat package.json requirements.txt Cargo.toml go.mod pyproject.toml 2>/dev/null | head -60
```
**脑中构建项目地图**(不用输出,但必须明确):
```
入口: [文件路径]
核心层: [3-5 个最重要的模块/目录]
支撑层: [工具、配置、数据模型]
外部依赖: [最关键的 2-3 个库,说明选型理由]
代码规模: [行数量级,影响分析深度]
```
---
### A-2:追踪核心调用链
**最有效的理解方式不是按文件顺序读,而是追踪一次完整的任务流动。**
选择项目最典型的一个用户操作/功能场景,追踪完整链路:
```
[用户触发点] → [接收/解析层] → [业务处理层] → [核心逻辑] → [外部调用/数据层] → [结果返回]
```
追踪时,记录每个节点的:
- 文件路径 + 关键函数名
- 该节点做了什么特殊处理
- 为什么流程在这里"转折"
> 这条调用链,将成为文档中 Mermaid sequenceDiagram 的直接素材。
---
### A-3:解析设计决策维度
**优秀项目最值得学的不是语法技巧,而是背后的设计选择。**
围绕以下设计维度,主动向代码提问(详细的提问策略见 `references/analysis-strategies.md`):
| 设计维度 | 核心提问 |
|---------|--------|
| **信任模型** | 系统在多大程度上信任外部输入/LLM 输出?有哪些校验和兜底? |
| **状态管理** | 上下文、会话、工具状态分别怎么管理?显式还是隐式? |
| **扩展机制** | 新能力如何接入?插件化还是硬编码?注册表模式? |
| **错误处理** | 各类错误(网络/逻辑/外部依赖)分别如何处理?fail-open 还是 fail-closed? |
| **性能取舍** | 哪里用了缓存?哪里做了懒加载?成本和延迟如何权衡? |
| **安全边界** | 权限模型是什么?默认策略允许还是拒绝?敏感数据怎么处理? |
---
### A-4:挖掘工程智慧(补丁与注释)
**这一步是最容易被跳过但价值极高的环节。**
成熟系统里,那些"不完美"的地方——补丁代码、防御性注释、TODO、HACK 标记——恰恰是最有工程学习价值的:
```bash
# 寻找工程"疤痕":有意识的补丁和权衡
grep -rn "TODO\|FIXME\|HACK\|XXX\|WORKAROUND\|fragile\|brittle" . \
--include="*.py" --include="*.ts" --include="*.go" \
| grep -v "node_modules\|\.git" | head -30
# 寻找防御性注释(往往藏着血泪教训)
grep -rn "NOTE:\|WARNING:\|IMPORTANT:\|DANGER:" . \
--include="*.py" --include="*.ts" --include="*.go" \
| grep -v "node_modules" | head -20
# 找注释最密集的文件(作者认为最需要解释的地方)
grep -rcn "^#\|^//" . --include="*.py" --include="*.ts" \
| grep -v "node_modules" | sort -t: -k2 -rn | head -10
```
这些发现揭示:
- 生产系统不是教科书里的理想模型
- 每个"补丁"背后都有一个真实的踩坑经历
- 技术债务是有意识的选择,不是无知的产物
---
### A-5:文档撰写
使用 `references/doc-template.md` 中的**模板 A**,输出到:
```bash
mkdir -p docs
# 命名:docs/code-alchemy-{项目名}-{YYYYMMDD}.md
```
---
## 四、模式 B · 专题聚焦
> 适用:用户提出具体问题,如"项目是如何实现 X 的"、"提示词设计有什么亮点"
### B-0:问题解构(先做这一步)
用 3W 框架拆解用户问题:
```
What → 用户想理解的技术现象是什么?(精确命名)
Where → 这个现象对应项目中哪些文件/模块?(先定位,再分析)
Why → 用户为什么想理解这个?学习/复现/改进?(影响洞察侧重)
```
**不要在没有明确 Where 的情况下开始分析。**
---
### B-1:从一个小功能点出发
**专题分析最有效的切入方式:选定一个最典型的功能实例,跑完它的完整生命周期。**
例如,想理解"工具调用机制":
1. 找到一次真实工具调用的触发入口
2. 追踪:指令解析 → 工具选择逻辑 → 参数拼装 → 执行调度 → 结果回填
3. 在关键节点记录:做了什么 + 为什么在这里做
> 跑完一条功能链路,沿途经过的模块关系就自然理清了。
> 沿途暴露的模块,比"按目录扫描"更能说明设计意图。
---
### B-2:定位相关代码
```bash
# 按功能关键词搜索(先广后窄)
grep -rn "{关键词}" . \
--include="*.py" --include="*.ts" --include="*.go" \
| grep -v "node_modules\|\.git" | head -30
# 按文件名/目录名搜索
find . -name "*{feature}*" -o -name "*{keyword}*" \
| grep -v "node_modules\|\.git" | head -15
# 找到最被引用的相关符号(高引用 = 高重要性)
grep -rn "{FunctionOrClass}" . --include="*.py" --include="*.ts" \
| grep -v "node_modules" | wc -l
```
---
### B-3:调用链精确追踪
```
触发点(用户操作 / API 调用 / 事件)
↓ [记录:文件:行号,函数名]
接收/路由层
↓ [记录:如何分发,为什么这样分发]
核心处理层
↓ [记录:关键算法或决策逻辑]
数据层 / 外部调用
↓ [记录:I/O 边界在哪里]
结果处理与返回
```
---
### B-4:文档撰写
使用 `references/doc-template.md` 中的**模板 B**,输出到:
```bash
mkdir -p docs
# 命名:docs/code-alchemy-{主题关键词}-{YYYYMMDD}.md
```
---
## 五、输出质量检查清单
一份合格的 Code Alchemy 文档,必须满足:
- [ ] **一句话定位**:项目是什么、解决什么问题(全项目必须)
- [ ] **Mermaid 图**:架构图或核心调用链时序图(至少一张)
- [ ] **代码佐证**:每个亮点附带代码片段(路径 + 行号范围)
- [ ] **Why 解释**:每个设计决策有"为什么"的解释,不只是 What/How
- [ ] **工程补丁**:至少提及一处有价值的 TODO/HACK/注释(全项目必须)
- [ ] **可迁移洞察**:明确写出"如何在新项目中复用这个思路"
- [ ] **长度适中**:全项目 2000-4500 字;专题 800-2000 字
---
## 六、特殊场景处理
**代码量巨大(核心文件 >50 个)**:
激活"20% 策略"——只深入以下高价值位置:启动入口、核心调度循环、工具/插件机制、状态管理层、与外部系统的交互边界。其余文件一律跳过,文档中注明"未覆盖区域"。
**项目无文档**:
从测试文件逆向理解意图——测试往往比实现代码更直接说明"这个模块应该做什么"。
**专题模式问题模糊**(如"有什么亮点"):
自动升级为模式 A,文档开头注明"基于全项目扫描的亮点提炼"。
**遇到无法理解的代码**:
诚实标注 `> ⚠️ [待深入]`,不猜,可注明"需运行时日志才能验证"。
---
加载此文件后,继续读取 `references/doc-template.md` 获取输出模板。
分析大型项目时,同步读取 `references/analysis-strategies.md` 获取详细策略。
GitHubで見る