AI 什么都能做,但有一个信号它永远发不出来
当执行能力越来越廉价,人类真正稀缺的能力是什么?
一、AI 总是在赶 Deadline
有一个现象很多工程师都遇到过:
在系统提示词里写好了设计原则——职责分离、可扩展、抽象等等,后面还加了杜绝过度设计、先按简单的来。
AI 刚开始会遵守,但随着对话变长,上下文积累,它会慢慢滑回现有代码的风格,直接修改,不再思考结构。
这不是 AI 变笨了,是它的本质决定的。
AI 的注意力会被最近的上下文拉走。系统提示里的原则,随着对话越来越长,在注意力分布里被稀释,权重越来越低。当前代码的风格、上一轮的实现,才是真正主导输出的东西。
用一个比喻来说:
AI 总是在赶 Deadline。它在续写,不在设计。它模仿最近的模式,而不是检索最初的原则。
这种现象有一个更准确的名字:代码惯性。
代码惯性不是错误,是 AI 生成机制的自然结果。但它恰好在最需要原则的时刻失效——
原则在最不重要的时候生效,在最重要的时候失效。
简单开发阶段 AI 表现良好,真正需要架构决策的时候,它已经被惯性带走了。
代码惯性的底层,是一个更根本的结构性问题:上下文牢笼。
AI 的生成是自回归的——一个 token 接一个 token 往前走,永远在续写,没有回头重新审视的机会。注意力机制天然偏向近处 token,越长的上下文里,开头的原则权重越低。再加上 AI 没有独立的后台进程——没有一个旁观者在说"你偏了"——三件事叠在一起,AI 就被困在了当前上下文里,出不去。
它不是慢慢偏的,它是根本没路回去。
这个过程可以用一张图来理解:
原则在最左边,但随着循环转动,它的权重越来越低。当前上下文才是真正的主导者。
更深一层:这个问题本质上是在用静态的提示词,约束一个动态漂移的生成过程。提示词是你在对话开始时的意图快照,但代码库和需求是活的,会把 AI 的注意力不断拉向"当下"。
其实代码惯性不是 AI 独有的问题。团队开发中,人一样会被惯性带走——项目初期定好的架构原则,赶了几个版本之后谁还记得?新来的人照着现有代码写,老人也照着现有代码改,规范文档在 Confluence 里落灰。
人和 AI 都会陷入代码惯性。区别不在于能不能挣脱,而在于挣脱的条件不同。
AI 也能挣脱——前提是架构原则在上下文里还有足够的权重。对话刚开始的时候,AI 表现得很好,原则清晰、边界明确。但随着上下文积累,原则被稀释,AI 就越来越依赖当前代码的风格来决策。它不是不想遵守原则,是原则在它的"视野"里已经模糊了。
人不一样。人即使忘了规范文档的原文,也会在某个时刻突然感到"这样做不太对"——那个不舒服的信号不依赖记忆,它来自经验积累的直觉。AI 没有这个信号,当原则被稀释之后,它就真的只剩惯性了。
二、人类的直觉是什么
这个问题自然引出另一个问题:人类工程师靠什么来避免这种漂移?
不是靠显式的规则检查,而是靠架构直觉。
架构直觉不是玄学,它是隐式知识的快速检索——大脑做了你无法语言化的模式匹配。见过某类 bug 几十次后,你扫一眼代码就感知到哪里会出问题。做过几个烂架构之后,你看到某种设计就闻到技术债的味道。
这些感知不需要推理,直接从经验里冒出来。
有经验的工程师会感知到几种具体信号:
-
摩擦感:加一个新功能,需要改的地方比应该改的多
-
重复感:第二次写类似的东西,会想"这不对"
-
脆弱感:改这里的时候,脑子里同时浮现另外三个可能炸的地方
-
命名困难:一个函数很难命名,通常意味着职责不清晰
三次原则之所以有效,不是因为"三"这个数字,而是因为人在第二次、第三次重复的时候会感到烦。
这个烦本身就是信号——它在说"这个结构在抵抗你"。
AI 没有这个烦。它第一百次写重复代码和第一次一样流畅,感受不到阻力在积累。
人在整个项目周期里有一条连续的感知线——系统在我手里变重了,变脆了,还是变干净了。这条线是架构直觉的基础。
AI 每次回复都是新的截面,它看不见这条线,只能看见你现在给它的切片。
三、人和 AI 最本质的差异
理解了直觉是什么,才能理解人和 AI 的差异到底在哪里。
表面上的差异很多,但有几条是结构性的。
1. 谁在承担后果
人类工程师做一个决策,要活在这个决策的后果里。
架构烂了,是你在半夜被叫起来修。代码上线出事,是你在复盘会上被追责。技术债累积,是你每天被它拖慢。
后果创造了真正的判断压力,也磨砺了感知的敏锐度。
AI 没有后果。这不是谦虚,是结构性的差异。
2. 感知的维度完全不同
人在项目里感知到的信息,绝大多数从未被语言化——
站会上某人说"没问题"时的语气,这段代码是谁在什么状态下写的,这个需求背后的组织博弈,团队现在的士气能不能撑住这个重构。
这些信息真实存在,真实影响判断,但永远不会出现在给 AI 的 prompt 里。
AI 只能处理被语言化的世界。人活在完整的世界里。
3. "不知道"的形态不同
人类不知道一件事,通常知道自己不知道——会停下来,会问人,会感到不确定。
AI 不知道一件事,会流畅地生成一个看起来合理的答案。
人类的无知是可见的,AI 的无知是隐形的。这是一个非常危险的不对称。
这个差异在系统设计里有一个具体表现:人有元认知能力,知道自己知道什么,也知道自己忘了什么。
你走到白板前,脑子里有个模糊的"这里有个东西我没想清楚"的信号,即使你说不出那个东西是什么。这个信号本身就是有价值的信息。
举一个具体例子:你在设计一个系统,涉及权限、缓存、消息队列三个模块。你问 AI 帮你设计权限模块,它给出一个很完整的方案。
但它不知道——也不会主动意识到——权限和缓存失效策略之间有一个隐含的耦合,这个耦合在你的系统里是个已知的历史坑。
你作为工程师,大概在讨论到一半的时候会突然想到"等等,缓存那边……"
AI 不会有这个"等等"。
4. 前台与后台
人有前台和后台。写代码的同时,有一个感知不到的后台进程在持续扫描——模式匹配、异常检测、压力积累——随时可以打断主线思维。
AI 只有前台。它在处理输入,沿着一条线往前走,没有独立的后台在旁观这条线本身。
这就是为什么把设计原则写进提示词,AI 不一定能触发。提示词能做到的是在前台显式触发某种行为,做不到的是在后台持续运行一个感知进程。
人的感知触发是被动的、自动的、无意识的,AI 的触发需要被召唤。
5. 目标的来源
人有内生的目标——职业成就感、对产品的热情、对用户的责任感、不想搞砸的自尊心。
这些目标不需要被输入,它们驱动判断,在没有明确指令的时候也在工作。
AI 的目标是外部给定的,每次对话从零被赋予,没有对话就没有目标。
还有一条,方向相反的差异:AI 没有自我保护的动机。
人类工程师有时会因为这是自己写的代码而看不见它的问题,因为不想承认判断失误而继续错误的方向,因为团队关系而不说出真实的评估。
AI 没有面子,没有沉没成本的执念,没有人际包袱。这不是说 AI 更客观,但它的偏差来源不同,在某些场景下反而是有用的盲点补充。
用更本质的话说:
人是有皮肤的,AI 是没有皮肤的。
有皮肤意味着你感受到摩擦,你承担后果,你活在上下文里。人的判断是 embodied 的——长在身体里、经历里、关系里。AI 的判断是 disembodied 的——漂浮在语言空间里。
四、感知能否被外部化
既然差异是结构性的——人活在后果里,AI 漂浮在语言空间里——那有没有办法用工程手段弥补这个缺口?
有几个方向。
直觉日志——维护一个 TENSION.md,不记结论,记让自己不舒服的时刻:
- [日期] UserService 开始承担发邮件的逻辑,感觉不对,暂时放着
- [日期] 第二次在不同地方处理同一种错误格式
- [日期] 给这个函数起名字起了很久,最后叫了 processData,很糟糕
在需要做扩展决策的时候,把这个文件喂给 AI,让它结合这些不适感做分析。
定期架构体检——每隔一段时间,开一个专门的对话,不写代码,只做诊断。把当前核心模块结构喂给 AI,问:
-
"如果要支持第二种 X,最痛的地方在哪?"
-
"现在哪个模块最难描述职责?"
让 AI 模拟摩擦感,而不是等摩擦感真的出现。
系统演化记录——维护一个跨时间的视图:
## 系统演化记录
- v0.1:单一 Service,直接操作 DB
- v0.3:引入 Repository 层,原因:测试难写
- v0.6:Service 开始膨胀,已知问题,未处理
- 现在:准备加 X 功能
这个文件在替代 AI 没有的连续感知——把时间轴压缩成文字,让 AI 能看见系统的成长轨迹。
但这些方法有一个共同的本质:
都是在让人承担感知的责任,让 AI 承担推理的责任。
这可能才是正确的分工。但它有一个根本缺陷:做不到无人值守。
用人的后台感知弥补 AI 没有后台的缺陷,代价是人必须一直在场。这不是优化,是把感知的负担从 AI 转移回人,然后美其名曰协作。
真正的无人值守,需要 AI 拥有三件事:
-
持久存在
-
主动扫描
-
某种等价于"摩擦感"的内部信号
前两件事技术上在边界上了,第三件事没人知道怎么做,甚至没人知道它是否可能。
五、程序员还需要看代码吗
"做不到无人值守"落到日常工作里,就是一个很具体的问题:
程序员还需要看代码吗?
尤其是当你的角色已经偏向架构方向的时候,这个问题更加微妙——你本来就不是写实现的人,"要不要看代码"听起来像是一个可以被轻松回答的问题。
但它不是。
AI 在没有架构约束的情况下,天然倾向于局部最优。每次改动,它找的是当前上下文里最顺滑的解法,不是全局最合理的解法。这种局部最优会积累成一种特定的腐化模式——不是某一处烂掉,而是到处都有一点点耦合,到处都有一点点泄漏,到处都有一点点重复。
每一处单独看都说得过去,整体加在一起就是一个牵一发动全身的系统。
更麻烦的是这个过程是渐进的,没有明显的转折点。AI 在系统还健康的时候表现良好,在系统开始腐化的时候依然能完成任务,只是改动的副作用越来越大。到真正改不动的时候,已经积累了大量结构性债务。而 AI 自己感知不到这个趋势——它没有那条连续的感知线,不知道系统在变重。
重构能解决吗?不能,因为方向比执行更重要
AI 可以快速执行重构,这是真实的能力。但重构需要一个目标状态——重构之后系统应该是什么样的。这个方向必须由人来定义。
那能不能用提示词来约束重构方向?可以用成熟的架构原则——SOLID、DDD、Clean Architecture。但这里有一个根本的问题:
成熟的架构原则是普适的,你的系统是特殊的。
SOLID 能告诉 AI 职责要单一,但它不知道你的系统里"职责"的边界应该划在哪里。Clean Architecture 能告诉 AI 要分层,但它不知道你这个业务里哪些概念应该在同一层。架构原则是地图,地图不是地形。
还有一个更深的问题:成熟原则之所以成熟,背后有无数次具体的失败和修正。工程师真正理解 SOLID,不是因为读懂了定义,而是因为违反了它,系统烂掉了,才明白那条原则在说什么。
AI 用这些原则是在用结论,没有经历过产生结论的过程。在标准场景下够用,在边缘情况下会失效——
而边缘情况恰恰是最需要真正理解原则的时候。
提示词能约束你预见到的腐化模式,但系统真正烂掉的地方,往往是你没预见到的。你能写进提示词的,是你已经知道的问题。最需要重构的,往往是你还没意识到的问题。
看代码看什么——三件事
不是细节,不是实现逻辑。你需要从代码里获取的是架构决策的落地情况——你的意图有没有被正确翻译。
-
模块边界有没有在腐烂——你定的架构边界,AI 在实现的时候有没有悄悄模糊掉。一个 Service 开始承担它不该承担的职责,不看代码你感知不到,AI 也不会主动告诉你。
-
抽象层有没有在塌陷——你设计了分层,但 AI 可能为了方便直接穿层调用。这种塌陷不会在某一次出错,它会在系统里慢慢积累,直到你想扩展,发现层与层之间已经纠缠在一起。
-
概念有没有在漂移——你定义的领域概念,在代码里有没有被 AI 用不同的词表达或混用。概念漂移是架构腐化的早期信号,只在代码层面可见。
这是一种完全不同的阅读方式,不是逐行读,而是带着问题读——我设计的边界还在吗?我定义的概念还一致吗?
这种读法可以很快,但必须是你自己读,而不是让 AI 告诉你"架构是健康的"。因为 AI 判断架构健康的标准,可能和你脑子里的标准并不一致,那个标准只在你这里。
如果你完全不看,真正失去的不是代码细节,而是独立的参照系。你的架构判断会越来越基于 AI 描述的系统,而不是系统本身。这两者之间的偏差,会慢慢变大,而你感知不到。
成熟的架构原则也许能覆盖 80% 的场景。但剩下 20%——你怎么知道现在遇到的是那 20%?如果你完全不看代码,AI 静默地走偏的时候你毫无察觉,等到问题暴露已经是很久之后的事了。
六、感知能被替代吗
那么长期来看,AI 能否发展出真正的感知能力,从根本上解决这个问题?
有几个技术方向值得认真对待:
-
持久记忆 + 长期项目陪伴——如果 AI 能真正跨会话地跟踪一个代码库的演化,不只是读历史,而是在场见证每次变化,它可能建立某种类似连续感知的东西。
-
主动代码库扫描——AI 可以被设计成定期分析代码库,跟踪复杂度增长、耦合度变化、命名混乱程度。
事实上,一些雏形已经在出现了。Cursor 的代码审查功能、Copilot 的安全扫描,本质上都在做同一件事:用可量化的代理指标替代不可量化的感知。圈复杂度超过阈值就报警,重复代码超过三处就提示,依赖关系过深就标红。
这些工具有用吗?有用。它们能捕捉到一部分"摩擦"——可量化的那部分。
但它们捕捉不到的是:这个模块的职责边界正在悄悄扩大;这个概念在两个上下文里含义已经不一样了;这个设计决策背后的历史原因已经没人记得了。
工具能检测代码的"病",但检测不到代码的"不舒服"。
病有指标,不舒服没有。而架构腐化,往往从"不舒服"开始,到"病"才被工具发现——中间隔了很长一段静默期。
更深的那个问题依然存在:
感知压力积累,是否需要一个真正在乎结果的主体?
人类感知到"这段代码开始让我不舒服",背后有一条隐形的链条——我将来要维护它,我不想在凌晨三点被它叫醒,我在乎这个系统的质量。
这个"在乎"不只是目标设定,它是感知的放大器。AI 可以被给予目标,但目标和真正在乎之间是否有本质差异——这个问题目前没有答案,但它可能是感知能否被替代的真正边界。
七、退化的螺旋
无论 AI 的感知能力未来能发展到哪里,当下有一个危险的正反馈回路正在发生:
这是一个越转越快的漩涡——每走一圈,退化的程度就加深一层。
这个模式人类经历过很多次。GPS 替代了导航能力,计算器替代了心算,搜索引擎替代了主动记忆。
但以往的工具替代的是执行能力,AI 正在替代的是判断能力。这是一个关键的不同。
导航能力退化了,你知道——没有 GPS 你会迷路,迷路是可见的。
架构直觉退化了,你不知道——因为 AI 给出了一个看起来合理的方案,你没有感知能力去识别它的盲区。这个盲区可能要很久之后才爆发。
更危险的是,依赖 AI 的同时,你失去了校验依赖对象的能力。对 AI 感知越来越强,但校验 AI 的基础在变薄——判断 AI 方案好不好,底层还是依赖对系统的理解。
对系统的感知是土壤,对 AI 的感知是在这片土壤上长出来的东西。土壤可以比以前薄,但不能没有。
这个问题在下一代工程师身上会更严峻。如果从一开始就和 AI 协作,没有经历过没有 AI 的系统开发,他们可能对 AI 的感知很强,但那个感知是悬空的,没有根。
非常流畅,非常高效,但内部是空的——没有那个被摩擦磨出来的判断内核。
退化还体现在角色的悄然转变上
人的角色正在经历一条单向的退化路径:
表面上判断比构建容易,但这里有一个陷阱:
选择题会系统性地压缩你的可能性空间。
AI 给你三个方案,你从三个里选。但也许最好的方案是第四个,一个 AI 没有生成、你也因为有了三个选项而不再去想的方案。
还有一个更隐蔽的变化:修正 AI 方案,你需要理解它为什么错,这在持续锻炼你的系统感知。选择 AI 方案,你只需要感觉哪个更好,这在慢慢把系统感知替换成一种更浅的"品味判断"。
品味判断也是能力,但比系统感知薄得多,而且你不会注意到这个替换正在发生。
再往后,可能连选择都会被简化——AI 说"根据你的历史偏好,推荐方案 A",你点确认。
到那时人的角色变成了:为 AI 的输出提供合法性背书,但实质判断已经不在自己这里了。
八、抽象提升与新的稀缺
每次工具革命,都伴随着抽象层的提升。
每次提升,下面的层被工具接管,上面出现新的人类角色,关注更高维度的问题。
AI 的出现,可能是这条线上最大的一次跃迁。
表面上,门槛消失了,谁都能干。但历史一次次证明:
旧门槛消失,新门槛出现,而且新门槛更难被看见。
以前的门槛是技能门槛——可量化,可培训,努力能跨越。
新的门槛是判断力门槛——很难量化,很难培训,而且你不知道自己有没有跨越它。
有人说,试错成本降低之后,判断力也被民主化了——一天可以有几百个点子,AI 都能执行,错了成本很低。
这是真的。大多数成功的公司本来就是从试错中跑出来的,不是判断出来的。Slack 最初是游戏公司,YouTube 最初想做约会网站。
成功不是判断力的胜利,是试错过程中感知到信号然后转向的胜利。
但试错成本降低之后,出现了一个新问题:
如果什么都能跑,稀缺的不再是想法,也不再是执行,而是注意力。
几百个点子都能执行,押注哪个?什么时候放弃?
沉没成本的幻觉不会消失,只会变得更廉价——你可以无限给一个烂点子续命,因为"再跑一个版本成本也不高"。
在信号还很微弱的时候,感知到它是真信号还是噪音——这又回到了感知能力,只是战场从执行前移到了执行中。
当注意力稀缺从个人问题变成群体问题,一个更大的图景就浮现了。
九、放大器社会
把这些线收拢来,可以看见一个更大的社会图景。
试错成本趋近于零,创新会爆炸,但大多数是泡沫。
更深的变化在于:一个想法从零到落地,以前需要一个团队,需要协作,需要说服别人。这个过程很痛苦,但它有一个副产品——
想法在人与人的摩擦中被检验和修正。
一个人觉得好的东西,要经过另外十个人的质疑,才能活下来。
AI 执行力极强的世界里,一个人可以绕过所有社会摩擦,直接把想法变成现实。
社会摩擦是低效的,但它是一种分布式的理智过滤机制。把它绕过去,不只是效率提升,也是安全阀的消失。
好的判断力被放大,坏的判断力也被放大。现在限制破坏力的很大程度上是执行成本,这个限制消失之后,社会的稳定性会越来越依赖于人的判断质量,而不是资源门槛。
这会带来一种新的阶层分化,但它有一个特别危险的性质:
会把自己伪装成公平。
因为工具是人人都有的,门槛看起来消失了,但真正的分化在更深的地方悄悄完成了。
用 AI 完成任务的人,会感觉自己很有能力——产出确实多了,效率确实高了。但他们感知不到自己的判断力在哪里,因为大多数判断已经被 AI 做了。
这是一种非常舒适的空心化。
十、主动跃迁还是被动跃迁
抽象层继续提升,上层应该出现什么?
不是更抽象的工程师,而是溢出技术本身的东西——什么问题值得被解决,解决它会带来什么后果,系统和人、和社会的关系应该是什么。
这是价值判断,不是工程问题。这个层次,AI 可以描述,但没有资格代为判断。因为"值得"这个判断没有客观答案,它依赖人类的欲望、恐惧、文化、历史。
但这里有一个闭环:如果感知能力因为螺旋效应持续退化,连价值判断的质量都会下降。
你不再清楚自己真正想要什么,只能在 AI 给出的选项里选。那个时候,意志这个最后的锚点,也开始漂移了。
关键的问题因此变成:
这个抽象层的跃迁,是主动的还是被动的?
主动跃迁意味着你清楚地知道自己在哪个抽象层工作,为什么在这里,以及下面的层发生了什么。你知道自己在刻意保留什么能力,以及为什么——不是排斥 AI,而是有意识地在某些地方保持摩擦,因为那个摩擦本身就是在维护你的感知系统。
被动跃迁意味着你只是因为有了更方便的工具而停在了更高的层,但对下面的层越来越模糊。
两者看起来一样。
但一个人还握着缰绳,另一个人缰绳已经不在手里了。
结语
我们这一路讨论下来,收敛到一个很硬的结论:
AI 可以替代执行,可以替代推理,可以替代方案生成。
但那个后台感知进程,那个"哪里不对劲"的信号源,那个承担后果之后被磨砺出来的直觉——在真正的替代出现之前,它是整个系统的锚点。
放大器变强,而校准放大器的能力在退化。
这两条线同时发生,方向相反。
它们之间的差距在扩大还是在缩小,取决于人类在这个过渡期能不能保持足够的清醒——清醒地知道自己在让渡什么,保留什么,以及为什么。
本文基于一次关于 AI 辅助开发的深度对话整理,探讨了工程直觉、人机协作、感知退化与社会演化等议题。