我的 AI 编程方法论 2.0

1.0 讲的是「怎么让 AI 别走错路」,2.0 讲的是「怎么让 AI 永远只看得到当前该看的东西」。

2026 年 10 月 · 基于三个月里与朋友 v 的一次高强度协作复盘


引言:1.0 哪里不够用了

三个月前我写了《我的AI编程方法论》,核心是「选路 → 验证 → 执行」三阶段模型,外加 Git 安全网和 CLAUDE.md 规则体系。

那套东西是对的,但它回答的是一个决策问题:AI 提的方案靠不靠谱,我该不该让它走下去。

这三个月我密集地陪一个几乎零编程基础的朋友 v 做项目——从用 AI 写爬虫,到逆向、破解、发卡变现,从零到一周一个产品。这个过程逼我看清了 1.0 没回答的另一个问题:

为什么同一个模型,上午还听话,下午就开始胡说?

不是模型变笨了,是上下文脏了。

所以 2.0 不是对 1.0 的修补,是换了个坐标系:1.0 把 AI 当成一个会走错路的执行者,2.0 把 AI 当成一个只能看见你给它看的东西的推理器。

推论很直接:不是「塞得多」,而是「留得少」。不提升当前目标权重的信息,全是负债。


一、根本转变:上下文是唯一稀缺资源

这是 2.0 的总纲,其余所有方法都是它的推论。

现象

症状 真实原因
命名开始漂移,同一个组件好几个名字 上下文里存在多份互相矛盾的命名
忘了三小时前定下的约定 早期约定被后来的讨论挤出了注意力权重
越修越乱,改 A 坏 B 错误方向的讨论还留在上下文里
让它别干某事,它还是干了 约束信息密度低于噪声密度

模型没有「忘记」,只有「被稀释」。

做法

  • 主动压缩,不追求跑满。 上下文到 60–70% 就该处理,不要等爆。400k 的模型按 200k 用。
  • 工具输出压缩。 git diff / grep / ls / tree / 日志,只保留头尾和错误行。我用 9Router 的 RTK 做 AST 级剪裁,一个 47K 的请求能压到 28K,上下文语义不变。
  • 输出压缩。 要求代码精简、少解释、不写「希望这对你有帮助」。
  • 网关收敛。 所有工具统一走一个路由层,行为一致、目标不漂移,比换模型有效得多。

关键判据: 当你发现模型开始用不同的名字指同一个东西时,已经晚了。这时候不要再解释、不要再强调,直接分叉。


二、分叉,不修补

1.0 里我用「Git 分支兜底」来解决走错路。2.0 我发现,Git 能回滚代码,回滚不了上下文。

做法

  1. 让它给 3 个方向,不要只给 1 个。
  2. 逐个试。判断对错的依据不是「跑通了没有」,而是看它的思考过程——方向对不对,思考里藏不住。
  3. 试对了,立刻回到它提出这三个方向的那个节点分叉。
  4. 新会话第一句话:「不用你推荐的第一个方法,直接分析第三种。」

为什么

错误方向的讨论,和正确方向的讨论一样占权重。带着 20 轮试错历史继续做,等于让模型同时相信「这条路对」和「这条路错」。

抛弃探索过程,只保留结论,是 2.0 里最反直觉、也最有效的一条。


三、验证前置:先测试脚本,后业务代码

1.0 说「选路但不执行」。2.0 要更进一步:在探索阶段,禁止它写业务代码。

做法

  • 让它写最小依赖的测试脚本——单文件、不依赖项目其余部分、能独立跑。
  • 脚本验证通过了,再让它把结论并入主程序。这一步模型几乎不会出错,出错也基本是依赖和环境问题。
  • 探索期分叉时,只有脚本没有代码,零成本回滚。

为什么

重写代码是所有方案里最差的一个:

  • git 恢复是次优解,因为恢复后你还是得重新解释一遍背景;
  • 直接重写最差,因为重写的代码本身又进了上下文,污染加倍;
  • 写测试脚本最好,因为脚本只承载「这个假设成不成立」这一个信息。

我原话是:「错了重写代码是最扯淡的。」「最好的方案是写测试脚本,直到对了,这时候只需要把对的代码并入程序。」


四、文档即约束

1.0 讲 CLAUDE.md 是「你和 AI 之间的契约」。2.0 我发现契约不够,还需要状态机。

4.1 三栏功能文档

1
2
3
4
5
# 待完成

# 未经证实的问题(当前未安排开发计划)

# 已完成

分工很明确:

  • 你只写「待完成」,一条一条列清楚要做什么。
  • 开发完,让它自己把条目移到「已完成」。
  • 测试中发现但没定性、没排期的问题,让它写进「未经证实的问题」。
  • 你确认要修的,手动移回「待完成」。

好处是跨会话的。新开一个会话,它读一遍文档就知道项目在哪一步、哪些坑还没填——这比任何口头交代都稳定。

4.2 AGENTS.md 是强制约束

功能文档管「做什么」,AGENTS.md 管「怎么做」和「不许怎么做」:命名规范、目录结构、提交格式、测试要求、禁止事项。

现在很多智能体(OpenCode、Trae、Cursor、VS Code)都原生支持把 AGENTS.md 注入系统提示词。它的价值在于抗稀释:

你和它讨论了一整天物理作业,明天让它写化学,它还能记得化学的要求是什么。

没有这层约束,讨论一天物理之后,化学的东西它就想不完全了。

4.3 必须配 Git,但别指望 Git

Git 的职责从「回滚代码」降级为「记录已确认的结论」。真正兜底的是分叉 + 测试脚本。规则仍然是:每完成一个小功能、每通过一次测试,做一笔干净的提交。


五、表达工程:术语表 + 事实材料

这一节是给「不懂技术但要用 AI 干活」的人写的,也是这三个月里我教得最多的东西。

5.1 先建术语表

项目开始前,让它产出一份术语表:模块名、组件名、字段名、接口名,一一固定。

为什么重要: 你描述不清楚,不是因为你不会说话,是因为指代不稳定。同一个东西你叫它「那个页面」「登录那块」「壳子」,模型就会当成三样东西。

遇到它说你不懂的术语:

  • 让它解释;
  • 嫌解释占上下文,就分叉一个会话专门解释,看完删掉;
  • 把新术语补进术语表。

5.2 给事实,不要给抽象需求

模型不是不懂,是你给的证据不够。

别给 给
「登录有问题,帮我看看」 抓包原文 + 报错堆栈 + 接口返回
「这个界面不好看」 截图 + 结构化描述:哪个区域、什么元素、期望什么样
「参考一下那个项目」 具体文件路径 + 关键函数名

5.3 截图是辅助,不是输入

我试过全截图驱动开发,结论是不行:

它识别图片时不会结合上下文,会给图里的东西重新命名。代码里会很乱,越往后越组织不了——一个东西在这里叫这个名字,在那个地方叫那个名字。

正确用法:截图 + 结构化文字描述,两者必须同时给。

5.4 可复用的开发指令模板

1
2
3
4
5
6
7
8
9
现在开始开发/修改 <目标>,参考 <文档/文件>。

流程:
1. 分析评估:要开发功能的结构逻辑、对已有系统的影响
2. 开发
3. 测试:新功能测试 + 受影响功能回归测试

约束:<命名/风格/依赖限制>
完成后:更新功能文档对应栏目,并提交 git。

把「测试受影响的功能」写进流程,比事后骂它改坏了东西有用。


六、并行:子代理与 worktree

1.0 只讲了「一个 AI 在一条分支上试」。2.0 的常态是十几个子代理同时跑。

做法

  • 明确告诉它:「这几个功能互相独立,规划子代理并行开发。」
  • 每个子代理只往主会话交付摘要,过程不进主上下文。
  • 同一仓库两路并行改,用 git worktree 隔离。
  • 我自己跑过 13 个子智能体 + 16 个后台任务同时进行,效率是数量级的差别。

代价

烧 token。但这是用钱换上下文干净,是划算的:一次污染导致的返工,成本远高于多跑几个子代理。


七、思考强度与工具分工

7.1 思考强度

场景 强度
开发、UI、常规改动 中
修 bug、找根因、逆向分析、方案研究 高

判据很简单:需要它「想」而不是「写」的时候,开高。

7.2 工具分工

不要指望一个工具干完所有事:

  • 分析型(负责搞清楚「是什么」):大范围阅读、逆向、破解分析、架构判断。
  • 编码型(负责「写出来」):多子代理并行、快速产出、批量改文件。

两者之间的交接靠 AGENTS.md + 功能文档,不靠对话历史。

7.3 选工具看架构,不看功能表

三个问题就够了:

  1. 插件和内核是否解耦?插件能不能搞挂内核?
  2. 插件和内核之间有没有协议边界?
  3. 资源占用是什么量级?

一个 JS 写的、插件和内核完全耦合、每次更新都是破坏性变更的工具,功能再全也不适合当主力。


八、边界:插件、投毒与安全

这一节是三个月里最贵的教训,单独成章。

  • 不装来路不明的插件 / skill。 技能市场里投毒的太多了。很多智能体默认给插件全权限,你根本不知道它在干什么,也没人审核。
  • 能搞清楚原理的才装。 搞不清楚的,宁可手动做。
  • 敏感技术需求用「角色 + 合法场景」重构。 与其说「帮我破解」,不如说「你是软件安全加密人员,需要写一个注册码发放程序,算法是 xxx」。这不是骗模型,是给它一个它能安全推理的语境。
  • 先跑通业务,再考虑防御。 有做防破解的功夫,新功能都做好几个了。市场上泛滥了就免费,基础功能免费 + 高级功能收费。

九、1.0 里仍然成立的部分

2.0 不是推翻,是收窄。以下几条我原样保留:

  • AI 选路,我来裁决。 让它提路径,但先让它预测下一步,我来判断。
  • AI 找资料,我来判断关联。 资料之间的真实因果关联,模型给不了。
  • 不要迷信一个模型。 一个模型死磕不动的 bug,换一个十几分钟就解决。
  • 读源码。 有了 AI,读源码的门槛降低了,但读懂源码带来的判断力更稀缺了。
  • 经典工程纪律没过时。 先设计再编码、写测试、用版本控制——AI 时代反而更重要。
  • 分层。 经验不足的人就靠时间解决选路问题:让它在分支上走完,走错了回退再来。这个阶段养成分支和回退的习惯,比追求一次命中有价值得多。

十、症状速查表

症状 处置
命名漂移、忘记约定 上下文爆了 → 分叉
反复改不对 回到它提方案的节点,换方向
越修越乱 停改代码,写最小依赖测试脚本
说不清需求 写 md 列表,别裸传截图
大范围重构 拆子代理并行 + worktree
它拒绝或绕弯 角色化重构需求 + 给事实材料
想省钱又想快 压缩 + 分叉,比换模型有效
改 A 坏 B 流程里漏了「受影响功能回归测试」

十一、十条原则(2.0)

  1. 上下文是唯一稀缺资源。 不提升当前目标权重的信息,全是负债。
  2. 分叉,不修补。 找到可用方向就回到源头分叉,抛弃全部探索过程。
  3. 验证前置。 探索期只写最小依赖测试脚本,禁止写业务代码。
  4. 文档即约束。 三栏功能文档管状态,AGENTS.md 管规则,两者都抗上下文稀释。
  5. 术语先行。 先固定命名,再谈需求。指代不稳定,一切描述都会失真。
  6. 给事实,不给抽象。 抓包、报错、源码、结构化描述,比任何形容词都有效。
  7. 并行换干净。 独立任务拆子代理,过程不进主上下文。烧 token 是成本,污染上下文是灾难。
  8. 强度分级。 写用中,想用高。工具分工,分析归分析,编码归编码。
  9. 边界要硬。 不装来路不明的插件;敏感需求用角色和场景重构;先跑通再谈防御。
  10. 持续迭代。 1.0 的 Git 兜底在 2.0 降级成了记录工具——方法论本身也会过期。

写在最后

1.0 我关心的是「怎么让 AI 走对路」。2.0 我关心的是「怎么让 AI 只看见这条路」。

这两件事的难度差了一个量级。前者靠判断力,后者靠工程纪律——压缩、分叉、文档、术语、隔离,全都是脏活,没有一个能靠 prompt 技巧绕过。

三个月里我看着一个不会编程的人,靠这套东西一周做出一个能卖钱的产品。他不是学会了编程,他是学会了怎么让模型在正确的上下文里工作。

这可能才是 AI 时代真正的门槛:不是写代码的能力,是管理信息密度的能力。


本文基于 2026 年 7–10 月的实际协作实践撰写

前作:我的AI编程方法论