AI 教我学习 · 精读源码
每一个论断都回到具体行
写句子之前先打开那个文件,读到那一行。引用带上路径与起止行,代码块和源文件逐字节一致。
先玩一遍 · 哪几条动过手脚
技术说明里的四条引用
这一遍
先扫,再切到逐字节。也可以直接点一条。
AI 写的技术说明 · 示意文本
放行条件写在 admit:用户没被封,并且 token 还有效,才发 Permit。
gate/src/admit.rs第 40 至 46 行
pub fn admit(user: &User, token: &Token) -> Option<Permit> {
if !user.banned && token.fresh() {
Some(Permit::grant(user.id))
} else {
None
}
}
0已核对
0对得上
0对不上
引用声称的那几行
还没开始比。
源文件真实的那几行
按行号切出源文件。
选一种看法,点播放。
肉眼放行了四条三处改动都保住了缩进、括号和行号连续。
行号是给别人用的写清路径与起止行,看的人能点进去核。
教学示意:源码与引用都是为演示编的片段。
它给的函数名和行号,我怎么知道是真的
打开一个几十万行的仓库,没有导读。你问它这段是怎么调度的,它会流畅地吐出一个函数名和一个看起来合理的行号,那个函数可能根本不存在。
你把这句话写进笔记,下次点进去对不上,分不清是当初写错了,还是后来上游改了。冻住版本的做法在 先锁版本,再往下写。
行号是留给别人验你的
约束只有一条,写句子之前先打开那个文件,读到那一行,再写。找不到就写未找到对应实现,记下检索用过的关键词。
按工程经验,这条约束有两层用处。一层是迫使你真的读到那一行,印象和文件名推测过不了关。另一层是让别人能验你,没有行号的文章只能选择相信作者。
这套做法从 Claude Code、Grok、DeepSeek Harness、OpenAI Codex 四个项目里长出来,产出 61 节课页。站内那组就是成品,比如 新功能先找落脚的 crate。通用版在 三道能贴进对话的防线。
找不到就写未找到,不要补一个看起来合理的。