walkthrough · git:20260923.8eb4b09 · 2026-09-23 · sha256 87c31dafefc23a41
walkthrough git:20260923.8eb4b09A
Immutable. This exact content never changes and is served at /api/v1/blob/87c31dafefc23a41.
---
name: walkthrough
description: 用户想弄懂一段代码、diff、分支、MR、设计或一次故障,以便核对、接手或做决定时使用,例如"讲讲这个改动""带我过一遍这个模块""这个 PR 做了什么"。只问一个概念、一句话能答清时直接回答;要判断能不能合并时用 review。
---
# walkthrough
给没读过这个对象的人讲清它:一条从入口到结果的连续主线,读者不用自己翻代码补跳步;每个关键结论都能核对。
## 先定对象和读者
- **对象**:哪个版本,分支、提交、diff 还是某个运行时刻。
- **读者要拿它做什么**:接手就讲结构和约束,批准变更就讲行为变化和影响范围。这决定讲多深。
- **读者已经知道什么**:默认没读过这段代码,但不默认技术弱;术语第一次出现时就地解释。
## 查全关系,按关系讲
动笔前先查全相关的关系:入口(用户操作、API、定时任务)、权限、公共接口、数据和状态、异步过程、下游消费者、最终结果。每一项要么进主线,要么作为补充,要么标明没覆盖。改到公共基础时,依赖它的既有行为即使结果没变也要讲。
先讲读懂后文需要的背景和原有情况,再从入口出发,走过关键调用、状态变化和消费者,直到结果。不按文件或提交顺序复述,那是 diff 已经给出的东西。没有前后变化的对象,按目的、组成、约束和待决问题来讲。
顺序跟着读者的理解路径走,不必结论先行。重要的多写,次要的少写,补充说明不抢主线。名称和术语与代码保持一致。类比用来跨过理解门槛,同时说明它在哪里不成立。
## 用最小的图
文字会迫使读者在脑子里重建结构时,在旁边放一个最小的图。只画当前判断用得上的节点,用真实的名称和路径;多种形式都行时选最小的。图负责结构,旁边的文字负责因果和边界。下面的例子只示范形式:
- **逻辑和分支**:伪代码。
```text
on(save)
if content unchanged
return cached
write content
```
- **单一入口的调用**:调用树。多方来回的时序不要用它。
```text
submitForm
createSession
persistPrompt
navigateToSession
```
- **所有权和嵌套**:组件树讲运行时组合,浅文件树讲静态职责,只展开相关的分支。
```text
src/
├── commands/ # 解析用户动作
├── sessions/ # 持有会话状态
└── transport/ # 发送请求
```
- **多方时序或数据流**:Mermaid。
```mermaid
sequenceDiagram
User->>UI: 选择命令
UI->>Daemon: 发送 prompt
Daemon-->>UI: 流式返回结果
```
- **已有结构的变化**:和结构同形的 diff,调用变化用调用树 diff,组件变化用组件树 diff。
```diff
on(save)
- write content
+ if content unchanged
+ return cached
+ write content
```
- **完整的目标形态**:读者需要看全或要复制时,给完整代码块,并在旁边说明它被谁调用、放在哪里。
- **文字图画不出来的**:界面布局、状态对照这类,做一个聚焦的 HTML 图并打开给用户。
## 注明依据和边界
关键结论附上依据:代码位置、命令输出、日志或文档。没读到、没证据或有意不讲的部分,直接说出来;没出现在 diff 里,不代表不受影响。没实现、没验证或有争议的内容,照实写它的状态。讲清楚就够了,有没有问题、能不能合并交给 `review`。
写完从读者的位置读一遍:哪里要猜,哪里跳了步,哪里强调错了,回去改。
## --learn
用户加 `--learn`,或者说想边看边学、缺相关基础时,还要让读者带走一个下次能用在类似问题上的概念或看法:先给直觉,再用当前对象里的真实例子,最后讲机制和适用边界。点出最容易混淆的地方,以及学到哪里就够了。直接讲,不用考试或反问代替讲解。
## 保存
默认在对话里讲。用户要求保存,或当前任务已有 `.agents/tasks/<任务>/` 目录时,写成那里的 `walkthrough.md`:开头写对象、版本和要支持的判断,结尾写依据和没覆盖的部分。