AI 编程 5.0 · 必读 2026-09-02 · X

让 AI 编程走在正确轨道上的三件事:目标对齐路径探索循迹前行

资深开发者 ErwinWu 9 月 2 日长贴引用卡颂 @kasong2048 的判断:AI 审代码挑出来的问题大半不是编码失误,而是需求没对齐让 AI 只能脑补他给出的解法是三步系统:目标对齐(用苏格拉底式 grill-me / grill-with-docs 把隐性假设剥离成 spec)路径探索(借鉴 ADR 的 wayfinder + research + prototype 探针)循迹前行(活文档 + 变更追溯 to-spec / to-ticket,避免上下文漂移和全绿但拼不起来的假绿陷阱)评论区 @KakaluoteW45042 的总结最实用:把验收标准写成显式 checklist 再丢给 agent,无效 comment 少一半

打开原文回到归档

让 AI 编程走在正确轨道上的三件事

来源: X (Twitter) | 作者: ErwinWu000 | 2026-09-02
URL: https://x.com/ErwinWu000/status/2094991204375240733
- id: '2094991204375240733'
  author: ErwinWu000
  bio: |-
    🎓PolyU PhDing | 💻ex Alibaba & Shopee
    AI Builder丨AI x Design Researcher
    Build in Public, study in public
  text: >-
    昨天资深程序员卡颂大佬 @kasong2048   引用我推文时提了一个很关键的点:AI 审代码挑出来的很多问题往往不是编码失误,而是需求没对齐导致 AI 只能脑补。


    顺着这个思路,我在这篇帖子里系统梳理了一下怎么让 AI 编程真正走在正确的轨道上,建立一套系统让整个事情从“整点东西玩玩”变成“可靠的系统工程”。


    整件事的核心其实就是三件事。目标对齐(定义你程序的终点)、路径探索(找到通往重点的路径)、循迹前行(确保走在正确的路上)


    ps: 这篇帖子的知识密度非常大,深度总结了我在大厂实习和日常AI开发中的流程管理实践,希望能对大家有所启发。


    1️⃣ 目标对齐

    ⚠ 这一步的核心目标是定义好你程序最后要到达的重点在哪里。


    很多时候我们丢给 AI 的 Prompt,往往是一个带着个人偏见的半成品解法。


    比如你跟 AI 说“帮我做个支持微信登录和购买会员的功能”,你以为需求已经交代清楚了,但你实际业务里藏着的“支付超时怎么回退库存”、“微信回调重复通知如何做幂等校验”、“多端登录时 Token 如何刷新”等一大堆隐性上下文,AI
    根本看不到,只能基于训练集的概率分布在解空间里硬猜,结果做得跟你想的不一样又让人恼火。


    图灵奖得主 Fred Brooks 早就说过:“构建软件系统最困难的单一环节,就是精确决定要构建什么。” 没有哪个环节做错会对系统造成如此致命的破坏,事后也最难纠正。


    需求工程(Requirement Engineering)的核心本质就是两件事:


    消除隐性假设:把那些你以为大家都默认,但其实谁都没写明的边界条件、灰色地带和异常流提前逼出来。

    建立唯一事实来源:把脑子里模糊的想法,固化成一份精确的规格说明(Spec)。


    🛠️ 落地实践:grill-me,grill-with-docs (来自matt pocock/skills)


    它们的本质都是苏格拉底式需求获取(Socratic Elicitation)。核心思想是让AI
    先别急着敲代码,先扮演严苛的架构师反过来“拷打”你:“并发边界是多少?”“第三方服务挂了怎么降级?”“数据冲突怎么处理?”直到把所有隐藏假设剥离干净,自动落成一份清晰的产品和技术规格文档。


    2️⃣ 路径探索

    ⚠ 这一步的核心目标是找到通往程序终点的可能路径。


    需求确定之后,通向目标的路径往往不止一条。而且每条路往下走,还会分出各种各样的技术分支。


    很多时候某条路能不能走,不仅要看能不能实现,还得放在你当前工程的具体局限下去权衡。我通常会看这四个维度:


    实现的复杂性:初始交付的技术门槛高不高?

    维护的复杂性:未来会不会变成技术债?模块耦合度有多大?

    时间与资源成本:第三方依赖贵不贵?开发周期赶不赶?

    方案的可逆性:如果走不通,调头推倒重来的代价有多大?


    但现实往往更复杂。方案选出来后,你也未必百分之百确定它可行,必须先去探索——也就是大家常说的先 probe(探一下),探通了才敢继续踩油门。


    因为通往最终需求的路径本身就是一个拓扑网络,中间充满分支和不确定性,所以一开始必须有宏观的架构规划。先规划好整个体系大概长什么样,既能在宏观上统一各个细小的实现分支,也能在后续某个分支调整时,把对整个系统的冲击降到最低。


    在动手前,借鉴 ADR(架构决策记录) 的思路:明确写下“背景-决策-后果与代价”,先定拓扑,再定具体实现。


    🛠️ 落地实践:wayfinder + research + prototype (来自matt pocock/skills)


    wayfinder:负责全局拓扑规划与路径导航,把不同的架构路线拆解、对比;


    research:当某个分支可行性存疑时,自动触发技术探针(Spike),去检索最新文档、测试第三方 API 边界;


    prototype:借鉴《程序员修炼之道》里的示踪弹(Tracer Bullets)思路,用极简代码端到端打通一条核心通路,用最小系统验证这个方案到底能不能闭环。


    3️⃣ 循迹前行

    ⚠ 这一步的核心目标是保证自己走在正确的轨道上不偏离。


    进入编码阶段,很多人用 AI 容易陷入“盲盒式开发”——一轮接一轮地把需求抛给 AI,闭着眼睛连续点 Accept,完全不记录中间改动了哪些模块与底层设计,直到某天系统突然崩溃,你和 AI 都不知道这堆逻辑到底是怎么长成现在这样的。


    这种缺乏治理的开发很容易遇到两个失控点:

    上下文漂移(Context Drift):对话轮次一多,AI 就会逐渐忘掉早期的架构约束,甚至拿着过时的旧方案在上面乱改。

    局部测试陷阱(False Green):AI 写的单元测试全绿,但真正拼起来时,整个系统完全跑不通。


    🛠️ 落地实践①:活文档与变更追溯 to-spec, to-ticket (来自matt pocock/skills) , docs-by-versions (来自https://t.co/w2V4odtaB9,本人自制)


    开发中的每一个改动都必须有迹可循:

    · 每次要做方案调整(增加新需求或改动已有需求),改动前要进行变更影响分析,先评估会波及哪些模块和接口,

    · 对于新增的需求,如果不涉及对原有系统的更改,走to-spec, to-ticket的常规需求开发流程

    · 对于要修改已有系统的改动,需要开一张变更单(CR),再to-ticket,执行


    🛠️ 落地实践②:建立最小可用的 E2E 验收


    在 AI 编码场景下,纯 TDD(测试驱动开发)有一个被广泛诟病的硬伤:AI 极其擅长为了让测试断言通过而硬凑代码,经常写出很多打补丁式的垃圾逻辑,彻底牺牲了代码结构的合理性。


    所以必须结合 BDD(行为驱动开发) 的思路:

    · 后端和数据库交互,交给自动化的 API 契约测试。

    · 前端和交互界面,AI 往往不会主动去写健全的 UI 自动化。这时必须由人类开发者把自己代入真实用户,梳理出关键用户流程,写一个覆盖完整体验流程、最小可用的端到端集成验收测试(E2E Smoke Test),作为交付的物理硬指标。


    4️⃣ 总结

    这三步不是孤立的技巧,而是一套环环相扣的工程闭环:


    · 定义目标(起点):如果目标没扣死、隐性假设没剥离,后面走得再快也是在错误方向上狂奔;


    · 找到路径(骨架):如果只看眼前、不去探清路径网络与架构分支,执行时就会频繁撞墙、反复推倒重来;


    · 保证实施(护栏):如果缺乏变更追踪和端到端验收,就算目标和路线再完美,对话轮次一多也会在执行中悄然失控。


    目标、路径、执行,三环紧扣。把这套工程约束建起来,AI 才能真正从单点修修补补的玩具,变成可以交付复杂工程的可靠生产力。
  likes: 513
  retweets: 101
  created_at: Wed Sep 02 03:30:00 +0000 2026
  url: https://x.com/ErwinWu000/status/2094991204375240733
  has_media: true
  media_urls:
    - https://pbs.twimg.com/media/HRJ4Ol1agAAq8dV.jpg
    - https://pbs.twimg.com/media/HRJ4Ol2aYAAG507.jpg
  card: null

[... 原轴 thread 截取前 3500 字, 完整内容见 opencli twitter thread 输出 ...]
来源: X (Twitter) 线程,通过 opencli twitter thread 抓取。