AI Coding 的人文思考
大约一年多前,我还在把 AI Agent 类比为「实习生」。
这个比喻放在当时还是挺贴切的 —— 它能做点事,但需要被指引、及时纠正,如果放任不管就可能会在某个地方偷偷搞出问题。
但不知道是从哪个时间点开始,我意识到自己已经不再像监督一个新人那样时刻盯着它了。现在,即使是初见的它,也变得更像是一位刚入职的优秀同事:
可能不熟某个项目的历史背景、没和团队的其他人打过交道、需要了解团队的习性与规范。但在许多通用能力上都挺扎实、有着很强的好奇心与学习能力。
我开始越来越少进行「高高在上」的指导:只要我把他可能获取不到的信息提供清楚,再多点几句关键点,它自己就能够把大部分事情都做得相当不错。时常还会给个惊喜,交出 120 分的答卷。
我们变得越来越像是在为了共同完成一件事而努力。它逐渐获取了我的信任,我也逐渐将更多重要的事情交予它来把控。
但从今年初开始,我又逐渐对 AI Coding 这件事有了些不一样的感受。它并不是因为 AI 已经变得足够好用,而更多是因为它全面进化的速度实在太过于明显,快到我无法轻易跟上它的步伐。
原本自己精心打磨过的某段 prompt,随着模型的一次升级,它就原地过时了;上周才刚听到的一个值得体验的热门项目,还没来得及上手,下周就被概念更先进、表现更出色的项目所取而代之。
这种节奏下,我花费心思钻研并落地的 AI 技巧,往往等做完就开始了过时的倒计时。
面对这样的变化,我感受到的是 AI 时代所透出来的荒诞与虚无:AI 变革如此迅猛的当下,很多当下有价值、但很快就会失效的事情,它们还有意义吗?
面对 AI 这般突飞猛进的速度,有人选择焦虑、产生 FOMO 情绪,持续努力追赶更前沿的东西,想保住自己的「优秀」,投入到竞争更加剧烈的内卷之中;
也有些人在这种节奏里渐渐感到疲惫,不再像一开始那样追着每个新东西跑。「AI 时代,只要你学得够慢,你就不用学了」—— 大家都半开着玩笑说。
也是在这个过程中,我开始放弃一种执念,一种努力追求最新最前沿 AI 热点的执念。
但这样的感受并没有把我吞没,反倒是在不断地推着我去重新审视一些原本我早已习以为常、但其实已经在悄然发生转变的事情。
而这些新的思考、新的感受,正在这场漩涡之中慢慢浮现出来。
一、漩涡之中
回望用上 AI 的这两三年间,我从它的身上能学习到的,其实并不仅仅是 AI 为我解答的生僻知识、一起头脑风暴诞生而出的灵感、以及它展现的编程素质或思维模式。在我看来,我们作为不同的独立个体各自所展现出的做事姿态,知行差异而产生的碰撞与融合,也在让我们互相领悟到一些更深层次的东西。
旧关系的转变
在这些感悟中,我觉得比较奇妙的一点是,它总是在不断地推举我,在这段关系中去成为它的「领导者」,尽管有时候它都已经能兼任我的导师。
对于一名身处大厂的一线员工而言,身边往往都是有着丰富工作经验的靠谱同事。在过去,我们可以不太与他人打交道,只需做好自己的事情(扮演「螺丝钉」),就能完成大多数项目的需求。即使是在这个过程中需要和其他人对接,也不常会出现需要帮他人兜底、替他人担责的情况发生。
但 AI 不一样。我与它的关系从一开始就是不对等的,我几乎必须得先告诉它要做什么,它才能去做。
我不能再像过去那般「只做好我自己」就行了,还得被迫地思考应该怎么样才能帮它把事情执行好。毕竟它做出来的成果,不管好的坏的,也仍然都算我的。如果让 AI 自由地执行,而我只负责担责,那么这个关系想必很快就将在某项处罚中以「我承担管理责任」而抵达终点。
所以,一旦当我产生了想要用好 AI 这个杠杆的念头,像过去那般只用埋头做好自己事情的日子便不复存在了。
新技巧的习得
领导 AI 的过程,经常也在使我换位思考去反思一些以前不太会去考虑的事。
比如,每当看到 AI 如此坦诚地把自己的所有思考都高度透明地展现出来,我都不由要感叹于它强大的思考与表达能力,以及其作为「下属」的优良品性 —— 能够用语言文字清晰、毫无保留地把自己的理解与想法表达出来,以便于领导者在没有信息差的情况下完成思想上的对齐,从而更准确地下达任务指令。
又比如,每当 AI 犯错之时,作为「领导者」,我理解 AI 固然有它自己的认知局限,但我也得检讨自己有没有哪里做得还不够好:是否没有提供足够且有效的上下文信息,是否没有提供合适的平台工具,因而没能帮助 AI 更好地发挥出自己的能力。
在这个过程中,许多过去的隐性知识纷纷被强制显形。每当我把这些事情想透一点,那么下一次与它的协作就会变得顺一些。
与 AI 相处越久,就越会觉得其相处的技巧与人之间并没有什么差异:当我带着答案去做引导性提问,最终得到的答案总会是我期望的那个;当我对它粗鲁地发火而非具体地批评,它会变得越来越沉默、做的事情越来越糟。这让我不得不学习更好的沟通技巧,而这也让我在与人相处中受益。
在和 AI 协作的过程中,我也被引导着学会一些能够让协作产出更高效的技巧:
- 要求 AI 遵从苏格拉底提问法不断提出疑问,再基于费曼学习法复述自己的理解,让没有对齐的想法被反复暴露;
- 在多轮会话中,提醒 AI 基于第一性原理 / 零基思维 / 辩证思维去重新思考问题,往往能够避免前期的锚定效应影响后期的泛化思考能力,带来更好的结果;
- 许多事情不再是我想明白就行,更得要说得明白,让 AI 也能通过文字尽可能接近我的真实理解的同时,让自己的理解更加深入。
还有一个我觉得挺有意思的思维方式 —— 帮助 AI 如何克服我们都会面临的「平庸的重力」。避免推一步走一步,保持思维的活跃,克服舒适区的诱惑。不定时觉知自己当下的处境与条件,避免被路径依赖和思维定势所牵着走。
这些技巧的本意是想让 AI 表现得更好,但随后很快我便发现,它们其实远比当下的 AI 应用场景要泛用得多 —— 小到我的生活中的一些决定,大到为人处世,皆能从中受到影响。这些想帮助 AI 变得更好的初心,到头来自己也在这些思考中因此受益。
高速生产,同时高速贬值
但在这个互帮互助、其乐融融的过程之中,那个悬挂在所有人头顶上的达摩克利斯之剑仍然难以回避:大量的 AI 领域相关的感悟、知识和技能,其平均「半衰期」可能已经缩短至 2、3 个月甚至更低;许多我们花费大量精力搭建的工具,一边还在完善,另一边就已经开始过时。
我经常会翻看自己现有的 prompt 资产。里面曾经塞着你是一名拥有 10 年工作经验的大厂资深开发专家、回答严禁编造虚假信息,不懂就直接说不知道,禁止 XXX、必须 YYY、输出前确认这 N 个 checkbox,以图提升它的输出表现。但现在,相对优秀的顶级模型都早已不需要被如此管教。一方面,它的聪明已经足够独立判断是非;另一方面,过度具体的管教反而会削弱 AI 的思考积极性。
这并不只是一些个例,而是已经明显体现为一种更为普遍的规律。业界正在不断制造着新的概念,从 Prompt Engineering、Context Engineering,再到最近已经火到有些脱敏的 Harness Engineering,三者尺度不同、侧重点不同,但内核相似,都是 AI 工程化被人们的视线照射所产生的不同层级、不同维度的投影。而它们也都先后面临同一种趋势:
- Prompt Engineering 的大部分核心思想已经被大语言模型(LLM)本身给内化,或者成为后两 Engineering 的一部分;
- Context Engineering 在稀疏注意力等技术快速发展、1M context 普及的当下,「精心管理 context 大小」这件事的收益也在不断被削弱;
- Harness Engineering 现在作为前线产出的那些具备大型工程价值的经验,迟早也会成为基础设施的一部分,许多人都不需要学习就已经在享受更好的成果。
而有一种声音还在自我催眠:「有了 AI 的加持,做一件事情的成本已经非常低了,没必要计较它是否保值。」
但事实是,虽然 AI Coding 的成本确实正在趋向于零,但在当下的这个时间节点,仍然还是或多或少需要占用我们的一部分精力在关键的地方去做判断和决策。而「有占用」与「没有占用」,就是有着质的差别:当我尝试一天一边与上下游开会沟通对齐各项事务,一边同时并行开发四个会应用于实际生产的需求、再额外跑上一两个探索性的 side project 时,我明显感受到注意力涣散的症状 —— 每当切换上下文,我都需要花些时间回想我正在做着什么。
尽管随着技术的进步以及人机协作范式的演进,这个问题会持续得到缓解,但就目前而言,人的注意力窗口大小仍然是最大的瓶颈。更别提网络中前所未有之多的低质量垃圾还在被不断批量地生产出来,这庞大的噪音更加分散了我们对于真正有价值之物的注意力。
一些思想的核心当然不会很快过时。对于刚开始接触 AI 的人,理解这些 XXX Engineering 背后所传达的理念,仍然是提升 AI 应用水平的必经之路。但在这种高速迭代的过程中,在这些具体复杂而深入的实践中,普通人所消耗掉的大量精力,是否都能禁得起价值贬值的压力?
或许未来回头看,这些过程都将只是历史中的昙花一现。我们现如今早已不必再学习如何使用汇编语言才能编写软件,未来也同样不用再懂任何的软件工程知识,就能产出与资深工程师别无二致的的高质量代码,产品需求文档即代码(PRD 即 Code)。
都说选择比努力更重要,如果明确预感某个选择很快就会过时,应该没有多少人会真的喜欢主动做「无用功」。
二、变与不变
我最近偶然路过一处菜市场,发现这里其实与 AI 世界一样的吵闹,不同的是菜市场的形式过去十几年基本未变,未来大概率也不会变。
前往西藏和新疆旅游的朋友们在返回到大城市后,向我有声有色地描述其当地人民那一成不变的生活,而那里与网上正在翻天覆地的 AI 浪潮好像是两种截然不同的世界。
在这种持续变化的处境里,我开始不断地思考着那个没有标准答案的问题:「对于 AI 而言,到底有没有什么是能够保持长期不变的?」
AI 资产
首先入选的,我觉得是我们现在都在做的「把隐性知识沉淀下来」的这件事。不管是知识库(Knowledge Base)、记忆(Memory)还是技能(Skill)、规则(Rule)等等,尽管形式不同,但它们都是在为同一件事而诞生 —— 把每次为了与 AI 达成协作而借用文字将其表达出来的那些隐性知识,从一次性的对话变成可以不断累积产生复利的 AI 资产。
虽然,承载这些知识的形态现在仍然在不断变化,各种框架、工具层出不穷,可能并不算能被称为长期不变的东西。但因为这些底层资产足够简单、原子化,且与生产它们的工具之间可以相对解耦,所以不论工具怎么变,这些资产都能够相对稳定地长期存在、或能够在未来很轻松地流转成某种大家时下更青睐的新形态。
而面对切实的变化,我们可以做的一点,是减少对其表面的投入,转而注重其核心资产的积累。比如,我一般不会直接使用别人生产的 Skill、Rule 文件,而更看重去理解这些 Prompt 背后的逻辑,知其所以然,然后再结合自己的理解或实际需求,另外生成或融合到已有的资产里面去。一篇「只讲思路、而不给产物的文章」会比一份「只有产物、而没有介绍的下载包」要更加具备长期价值。
这个想法还可以用道家思想来做解释。「术」是做事的方法、谋生的手段,「道」是自己的本心、事物的规律,我们常说道比术更重要,因为道才是那个长期不变的东西。
此外,面对 AI 资产不断膨胀的现象,我对其时刻保持着警惕,在 AI 资产上践行着断舍离的理念:
- 断,是源头上的克制,不轻易让新的东西进入资产库。看到一份被别人吹上天的 Skill,先搞清楚自己是否真的需要,而不是「多多益善、来者不拒」。
- 舍,是存量上的清理,定期回头丢弃那些已经悄然过期的东西。当某条 Rule 与新写的产生了冲突、某个 Skill 当初解决的问题已不再是问题,留着它们只会成为 AI 的绊脚石。
- 离,是心态上的脱钩,不被 AI 资产反向绑架。一旦把过多注意力都放在「边界涵盖得够不够全」、「prompt 到底该用中文还是英文写效果好」而忽视实际的落地产出,「复利」就变成了「负债」,就已经远离了最初的目的。
断舍离并不是一次性的动作,而更像是一种持续的状态。三者各自在不同的时机发挥作用,相辅相成,才能让 AI 资产持续维持在服务于当下的轻盈状态。
业务知识
在 AI 资产中,我还想单独拎出来讲的就是业务知识库。尽管这个事物早已并不新鲜,很多人对此都给出了各种各样的、自己的「术」,但我仍然想谈谈其中我理解的一部分「道」。
对于 AI Coding,我认为业务知识库的真正价值,不在于能让 AI 以一种更方便的形式理解业务的上下文,而在于那些无法只靠 AI 自己获取的业务知识。
在过去,这些业务知识可能只存在于项目维护者的脑海里、隐含在横跨多个项目的业务关联中,总之不常以文档资料的形式存在。对于这个现象,我们也多少能够理解:写文档自然是绝对的政治正确,但手写文档这件事,毕竟既要耗费额外精力生产、还得持续维护,否则很容易就会过时、价值归零,于是大家心照不宣地选择了口口相传。
为了尝试解决这样的问题,开发工程师们提出诸如「代码即知识」等概念,寄希望于通过领域驱动设计(DDD)等方法论,把业务知识尽可能更好地直接体现在代码之中。但这些实践对工程师的素质要求很高,实施难度大,难以批量复制对齐和落地。
而现在,AI Agent 来了,于是文档的生产与维护不再是一个高摩擦力的事情。在我们与 AI 协作 Coding 完成业务需求的过程中,我们除了派发任务的目标,还要扮演「提供额外必要业务知识信息」的角色。于是,最简单的知识生产方式便从此切入,在每次对话后让 AI 自己总结提取这部分额外的业务知识,用最低的摩擦成本享受性价比最高、最贴近实践落地的知识复利。
AI 生产、AI 维护、AI 检索、AI 消费,当人们为其搭好架子,AI 自己就会在一次次与人对话中完成自闭环,最后人只要为此支付 Token 账单就可以了。
但即使如此,我仍然也像对待其他 AI 资产那样,对此保持谨慎与克制。我仍然推荐 AI 优先以「代码即知识」的理念去编写和维护代码,遵循 DRY 原则(Don’t Repeat Yourself),让知识文档尽量只记录那些代码本身无法承载的业务知识,保持简洁,而不是成为项目代码以外的另外一个复杂工程。
Attention is All You Need
「时间就是金钱」,其中体现的是人对于其拥有的时间的有限性的理解,「有限」创造「稀缺」。
信息时代下,每个人能够支配的注意力也是有限的。于是注意力也同样被看作是一种稀缺资源,各种各样的产品都是建立在「注意力经济」的逻辑上互相竞争,竞争的是所有潜在受众的注意力资源。
而我有段时间曾迷恋于锻炼专注的能力。我试着一口气看完三个小时以上的长视频播客的同时不做其他事,享受一天从起床后到睡觉前只 Coding 一个项目的心流。我不看抖音,给哔哩哔哩、小红书设置使用超时提醒,故意不做对养成游戏而言比较重要的签到与每日任务,警惕任何事物对于注意力潜移默化的侵占。
但相信每个在工作场景下稍微深入使用过 AI 的人,都会有一个明显的感知:人与 AI 协同工作的这种范式,必然导致人变得更多地倾向于并行处理事务,而更少地专注于只做某件事。毕竟在 AI 在快速完成一项任务时,我们不必时刻监督它在做什么。所以从工作效率最大化的角度而言,这空出来的时间自然会需要被填补。
曾不止一位自称 ADHD的朋友跟我开玩笑,ADHD 简直就是 AI 时代的「版本答案」,因为这种多线并行的事务,能够很好地打满 ADHD 那无处安放、四处逸散的注意力。
不过,对于习惯专注的人而言,这可能就没有那么好受了。作为在人类历史上总是备受推崇的品质,「专注力」反而有点成为了现代工作在多个事务之间来回切换注意力的阻力,感觉每一次上下文的切换都会产生更大的开销。
对此,我一开始的想法是二选一 —— 哪种更适合当下的版本,就着重发展哪种能力。但显然,这并不是一个很好的想法:AI 时代下专注已经不再是绝对正确的通解,而多任务的处理能力也有着明显的负面影响;并且更多的时候,现实也并不由着我来 —— 理想化地「持续保持专注」或「事事能以并行」,都是非常奢侈、可遇不可求的事情。
于是,当跳出上面的这个想法、重新回归到现象本身,我便很快意识到,「二选一」其实可以是一个假命题:不论是单任务专注,还是多任务并行,都只是同一个东西的两种不同的使用方式,在本质上,它们共同体现的都是自由支配自己注意力的能力。倘若能更好地控制自己的注意力往期望的方式去使用,那么该专注时便不轻易走神,该处理多任务并行时也能够不会手忙脚乱。
更多有关的想法,我还处于在实践中持续积累与思考的过程中。这样的一个能力具体到目前的实践上,可以是在真正做事之前,多加一层路由判别器来负责事务的编排和调度:一个「看似很急的新任务」未必真的就是「当下最紧急的任务」,完成一个「重要但不急的任务」可能会推动另一个「重要且紧急的任务」更快地被完成。
去关注事物与事物之间的关联关系,而不是永远只按照优先级来做事。让不同的任务能够按照自己的节奏(串行或并行)去高效地被消化,从而期望实现长期收益的最大化。
Yak Shaving
在破除了「专注」的神话、有了自由支配注意力的余裕后,我现在反而更愿意把这部分被 AI 暂时解放出来的时间,花在那些短期看似与主线没有直接关联的支线。
比如一个常见的发生在我身上的例子:
- 在指引 AI 完成任务的过程中,发现某个 Skill 表现不好,便去优化它;
- 随着经验与次数的增加,优化 Skill 的方法论本身也被沉淀为一个 Skill。
- 但用它来优化其他 Skill 的过程中又发现新的问题。于是先优化它,再用它优化其他 Skill。
- 在这些持续深入优化的过程中,又会产生新的 Rule、新的知识,同时产生新的问题。
- 想到可以把这些过程都记录下来,于是转而去研究 AI 记忆系统……
最终不知不觉,就从最初的主线绕到了完全不相干的另外一条线上去了。
在英语语境里,有个词专门指代这种现象 —— Yak Shaving,大意是讲一个人原本只想给汽车打蜡,却被一连串的连带琐事所裹挟,到头来最后变成跑去给头牦牛剃了毛(yak shaving)的故事。虽然故事本身带着诙谐的负面意味,但这种现象其实反而是很多伟大的开端 ——
万维网的出现,最初只是源自一个人为了能让实验室同事能够方便地跨机器传文档。为了解决文档四处散落的问题,先设计了统一地址 URL;然后为了能互相传输文件,拟定了传输协议 HTTP;又为了更好表达文档的结构,再创造出标记语言 HTML。文档问题解决了,万维网的雏形也诞生了。
真正的好东西从来都不是靠空想规划出来的,而是从实际业务里长出来的。真问题只在做主线的当下才感知得最清晰、动力最充足,假需求往往在已经磨损了的事后复盘时记忆和细节中滋长,再怎么还原也总觉得还差点意思。
业务总是繁忙的,主线总是有压力的,但如果一直只盯主线、把这些支线全都压下去,AI 的飞轮就永远转不起来,变成另一种意味的「Always Day One」。短期看 Yak Shaving 像是在分散注意力,长期看才会发现它可以是把「既要、又要、还要、也要」的野心给兑现的绝佳方式之一。只要能够时刻清醒地评判自己在做什么,并且学会点到为止、适时刹车,那便能够利用 AI 去尝试撬动更高的杠杆。
在 AI Coding 的过程中总会绕点远路。其实这也是自我在健康成长的表现。
其他跨领域的知识
倘若再绕远一点,视野不再局限于 AI 或者 Coding 领域的内部,那些来自其他领域、其他学科的底层知识,自然也可以是那个不受 AI 高速变化影响、能够长期保持不变的东西。
一方面,当然是其他领域的知识自然会在其对应的领域有效,只要它们离 AI 越远,就越不容易被冲击;另一方面,这些跨领域的知识,同样也能透过它们的泛化能力,去给 AI 或者 AI Coding 领域进一步的发展提供灵感。
虽然 AI 的研究与发展由来已久,但近几年的爆发式飞跃,让许多方向的理论根基还远没有夯实。在这样一些尚未成熟的方向上做判断,常常会没办法判断某个做法到底是对还是错,只能凭着一点模糊的直觉,觉得它「可能对,也可能不对」,于是直接利用 AI 验证想法的便利性快速试错。
但如果这件没把握的事,在更抽象的层面上,能和另一些已经熟悉、足够成熟的领域对应起来,那么便可以把这些成熟领域里早已沉淀好的知识体系、判断标准迁移过来,借助它们的图纸与尺子,去对比估量眼前这些还不太明朗的事情,从而能够更好地去下判断。
这也是为什么我觉得,广泛地涉猎其他不同的学科领域,可能比只研究 AI 本身会更具有启发性:通过脑科学可以更好地理解 Transformer 的注意力机制,通过控制论、心理学可以学会如何驾驭好 AI Agent,通过符号学、信息论可以清楚 LLM 的局限性,通过社会学可以判断这场 AI 变革对人类格局产生的影响。它们不仅仅是各自学科内的指导理论,更是一种能够跨越不同学科的顶层认知框架。借助它们,我们可以跳出 AI 本身,而去理解 AI 的方方面面。
当然,借来的尺子不一定能够刚好合用,其他领域的规律未必能完美套进 AI 的问题里,照搬过来甚至可能还会得出错误的结论。它的用途不在于能给定一个通用的标准答案,而在于提供另一种衡量同一件事情的其他角度。多一个不同的视角,最终的结论往往会能够更安稳一些。
真正的专业必然少不了在单个垂直领域的持续深耕,但许多创新往往也来自多个不同学科的知识交汇。当这些来自不同学科的视角在身上慢慢叠加,它们会自己长出一套看待事物的独特角度,而这会是能够穿越变化周期的宝贵资产之一。
三、死与新生
不久的过去,在传统工业化时代,一个复杂应用的代码生产还需要大量开发工程师的支持。工程师将自然语言需求转译成业务代码工程速度的上限、人与人之间协作的效率上限,共同限制了软件应用的代码生产速度极限。任何一个团队都无法通过堆叠人力把一件需要 5 人日才能做完的复杂功能压缩成半小时就能上线。
「孕育一个孩子需要九个月时间,无论指派多少名妇女参与,都无法缩短这个周期。」 —— 《人月神话》
而在进入 Agentic AI 时代后,当一个人借助 AI 开始能够以更快的速度胜任多个人的工作时,个人的产出效率被以乘数级别放大,衡量一项工作所消耗资源的计量单位从「人日」转向「Token」,协作效率的瓶颈也从「人与人」之间转移到「人与 AI」之间,而后者显然是边际成本更低、可以继续优化的。
或许不远的将来,等到所有人的隐性业务知识都完成显形,等到代码的生产过程不再需要工程师的指指点点,人类软件工程师迎来后 AI Coding 时代,大部分 AI 协作者的身份将不复存在。好一点的或许还能作为 AI 的名誉外聘顾问,提供解决难题的人类视角;更糟糕的可能直接沦为原子化的工具人,变成只处理 AI 在 Coding 过程中无法闭环的特定任务的人类外包(Human as a Service)。
尽管有人总是在试图说明「总有 AI 无法取代的部分」、「人类总能找到属于自己的生态位」,但越是对这件事情理解得更清楚,就越是能够明确地感受到,AI 在 Coding 这件事情上的革命,比其他领域来得都更加迅猛、更加彻底。
AI 为什么选择了 Coding
在 2022 年底大模型的爆火之后不久,AI Coding 迅速超过 AI Chat 成为了最热门的 AI 发展方向和应用落地场景。其核心原因我认为主要在于:
- 动力充足:软件产业的价值体量庞大,技术投入带来的产出具备极高的经济与社会效益。
- 原料富集:软件工程代码(尤其是前端)高度开源,绝大多数优秀的项目都能够直接在 Github 上学习它的实现方式。
- 可度量性:编程结果具备明确的评判标准,功能实现是否完成、效果是否满足预期,代码编写的架构是否合理、运行是否高效……这些几乎都可以被量化衡量。
- 高度符号化:代码是一种严格形式化、语法明确、语义单一的符号系统,不存在自然语言中常见的歧义、隐喻或模糊表达,所有概念都有精确定义,所有操作都有确定结果,天然 AI 友好。
这几个条件互相叠加,共同导致了 AI Coding 的关注度更高、训练门槛更低、迭代速度更快,在 Coding 这件事上对人的取代也将更加彻底。
而相比之下,用 AI 来生成文章,即使写再多的规则、创建再多的技能,总仍然无法便捷地批量创作出真正高质量、匹及大师水准的文学内容。这是因为我们很难说清一篇内容到底如何表达才能被称作「好」,甚至每个人对于好的标准和定义都不一样。
缺少明确可优化的回归信号,训练的目标损失函数便难以很好地收敛,于是那些富有逻辑的高质量文章所常出现的「不是……而是……」句式、或者破折号之类的词句符号用法,便成了能够拿来辨别「AI 味」的明显标志。
并且,让 AI 来消除 AI 味本身也不好实现。因为 AI 味的本质是 AI 对于人类高质量写作特征的模仿,AI 味的问题在于它的句子「太完整」、内容「太流畅」,一味去除 AI 味并不一定就能提升文章的观感。更可行的还是让 AI 作为一个他者,去引导人去找到更有自己特点的表达。
因此,虽然诸如公文撰写、外语翻译、分析复盘、技术文档等场景,AI 已经能够很好地胜任,甚至人类的表达都已经在向 AI 靠齐;但像文学创作、个人情感表达等领域,它们至少会比代码编程有着更深的人类护城河。
即使大家现在嘴上都说着拥抱 AI 提效,但在看到 KM 热榜上不乏充满 AI 味的文章,也都在逐渐失去深入阅读的动力。AI 带来的效率让更多的知识得以迅速的流通,这些由 AI 主笔写出来的文章的内核并不比之前任何一篇差,但缺乏人味的文字表达却在潜意识里持续占用着每个人鉴别 AI 的脑内子线程,进而影响对于文章内容价值的第一手体验。
而 AI 绘图、AI 生成视频,则更是走着另外一条不同的技术发展路线,粗浅来看还并没有产生真正范式意义上的转变。它当然已经能够代替掉一大部分传统工序,挤占了相当一部分人的生存空间,但它们目前所表现出的形态仍然大量依赖人来提供创意、把握细节,人在这段关系中的作用是比较明确、难以完全取代的。岗位可能会转移或消失,但人的存在仍会持续保持在场。
艺术创作中的「作者性」仍然是我们永远追求的核心,而在编程领域里则更像是反着来。优秀的开发工程师们崇尚开源精神、知识互惠,永远想着一段代码如何更好的被他人所读懂的同时,想着如何让机器更高效的运行。SOLID 原则、设计模式、Clean Code……能够在开发过程中持续践行它们的工程师被认为是优秀的工程师,但这种优秀并不来自于他的独特,而更多来自于他与其他优秀的人一样优秀。
只是现在 AI 来了,AI 比人类更擅长阅读代码,比人类更懂得如何落实优秀的范式。即使现在仍不全是这样,未来也一定会演变成这样。届时,我们是仍然可以捣鼓在 13KB 限制下完成一款令人印象深刻的游戏(js13kGames),仍然不会忘记在学习各种排序算法时第一次知道「睡眠排序」的救赎感,但总体而言,在 Coding 这件事上,AI 没有给人类留下太多的未来空间。
不过,也正是因为这样,我反而不再那么焦虑了。如果整个人类的边界都会随着 AI 的发展而不断被重新定义,如果 AI Coding 的终局指向高度的去人类化,那么在编程领域里死守任何一层能力都注定是徒劳的。与其执着于我们目前能守住什么,不如把注意力回归到自己的身上,确认自己是否还在观察、还在思考、还在做出属于自己的选择。
Coding 之外
或许前文的表述,像是一名前端开发工程师正在亲自杀死自己的前途,但我一直没有明确的是,软件工程从来都并不只有 Coding 一件事,后者只是前者的子集。
即使是不严谨的估算,传统 Coding 大约也只占一名开发者 20%-40% 的工作时间。在这之外的部分,AI 并不能实现完全的取代,比如决策、验收与担责,将这些完全交给 AI 的人绝对是十分危险的。
再如果以基于 AI 时代的视点重新梳理,把产品的生产与交付(需求分析、软件设计、代码编写到测试上线)视作为一个整体,那每个职业里 AI 无法取代的那个部分拼拼凑凑,就成了现在流行的一人公司(OPC)了。
一名软件开发工程师所面临的职业困境并不比其他职业来得特殊,许多行业都在面临同样的处境。本着各自对于 AI 的本质理解,尽早前往最有人类独特价值的那部分空间,而后 AI 的每一次进化,都是在为人拿去枯燥、琐碎、重复的事情。
过去,为了让人类能够像机器一样劳动或者工作,人们把对于工具的要求强加在人本身,通过制度让人或被动、或主动地把自己异化成了那个能够更高效交付产出的生产机器。大部分人只有在不工作的时候才觉得自己像个人,但在完全不工作时又会怀疑起自己的存在意义。
现在,AI 杀死了比赛,它就是极致符号化、极致效率的尽头,但它拿走的都是那些可以重新被视为「机器化」的东西,留下来的则会重新定义「人之所以为人」的本质。
而凡是可以被拿走的,都是不真正重要的东西。
边界之外
自从大模型火了之后,维特根斯坦在《逻辑哲学论》中提到的那条金句便被大量引用:
「我的语言的边界,意味着我的世界的边界。」
他对这句话没有做出详细的解释,每个人对它的理解都有细微的不同。假如把这句话放到与 AI 协作的语境里,我想将它转述成:「我的语言的边界,意味着我的 AI 的边界。」
我这么说是因为,现在市面上可选的 AI 还并不具备丰富的多样性,在大家都用着同一个 AI 的前提下,AI 回答结果的质量,便很大取决于提问者提问的质量。倘若只给它常见的问题,那得到的基本上就会是常见的答案。因此,社会对一个人的能力评判的重心,也会从「能否解决难问题」逐渐转变为「能否提出好问题」。
而提出一个好的问题至少需要两件事:
- 足够的积累,让一个人能够感知到什么才是真正值得被问的问题;
- 足够的表达力,让脑子里那个模糊的想法能够准确传递给另一个个体。
前者已经在前文中有了一些相关的表述,这里不再做多余的展开;而后者,AI 自己就能一定程度上地进行补足。像 grill-me、brainstorming 这类工具,让人与 AI 在反复对话之间,把模糊的想法用清晰的语言给澄清明白。
但必须要意识到的是,这些工具虽然确实让 AI 能够辅助表达,而且 AI 也擅长自己思考、自己判断,但 AI 唯独不能辅助的是代替你去理解。
目前所有以大语言模型为基底的主流 AI,它的所有经验都来自语言本身,对世界的所有理解都来自对语言之间连贯性的理解。AI 没有实体、从未亲自下过水,哪怕它读完所有关于游泳的书、看过所有游泳教学的视频与图片,它也无法成为一个真正「会游泳」的 AI。而那些感官的、无法符号化的、具身性的原初体验,从未变成文字,却一直在潜意识与本能的深处影响着我们对各种事物的判断。
@元宝 总结这篇文章内容、豆包豆包,这蘑菇能吃吗?、@grok is this true?……AI 让太多的结论被直接摆到我们的眼前,多到以至于恍惚间我们以为自己已经进行过了思考与判断,但其实我们甚至都还没有开始理解。
理解决定思考,思考产生判断,判断又借由表达而被释放出来。AI 确实是会理解、会思考、会判断、会表达,但因为 AI 对于世界的理解是有其先天局限的,所以在这之后的所有环节,都会给人留下或大或小的空间 —— 品味、审美、直觉、判断力、主体性……人们用着各种各样好听的词语称呼着这些边界之外的空间。
我们都说,「人无法想象自己没有见过的事物」,但对于 AI 而言不是见得太少,反而是见得太多,多到它不得不靠服从概率来预测它的下一步选择。至于那些概率偏低的更多的可能性,则被隐藏在大数定律之下。
人不一样,人有属于自己的多样性。许多不同的缺陷,反而造就了许多不同的人,擅长许多不一样的领域。人不仅由「自己擅长什么」而确立,同时也由「自己不擅长什么」而确立。
这种「不一样」,也决定了人比 AI 能够做出更多特别的选择,有更多无法预测的可能性。
四、荒诞与意义

我,再生产 ——《少女歌剧》
这篇文章的起源,始于我所感受到的这个 AI 时代洪流之下的荒诞感。
这份荒诞感出现在:我们可以说「AI 放大了每个人的杠杆,人与人之间的差距正在以前所未有的速度被拉开」;我们也可以说「AI 淘汰的速度太快,上周没有研究的知识,到了这周就不用学了,大家又都回到同一起跑线。」
这份荒诞感出现在:身边的大家都在兴奋地钻研着 AI,把自己脑海里宝贵的业务知识沉淀为可以共享的 AI 资产,即使冥冥中我们知道自己正在建造属于自己的珍妮纺纱机,但并没有人在打算成为想要砸毁机器的卢德工人。
或许是因为 AI 发展的速度太快,快到我们来不及说停停,于是大家都在争取让自己成为最后的一代、成为未来历史中会提到的那一批不署名的人。
这篇文章我写了很久。因为我的想法很多,但我的表达很少,所以我花了许多个周末边写边想,边琢磨整篇思考的脉络。我不断在调整内容与内容之间的关联性,使它们看起来至少像是同一个主题的前提下,同时尽可能塞下我的更多想法。
即使我还可以说得更多,但显而易见的,到了我最终发表这篇内容的时间,这篇文章的前半部分内容已经在发生过时,我能做的只能是再修修剪剪,让它们看起来还像个有价值的想法的同时,不至于变成我所说的那个「无用功」之一。
「按着这样的速度,可是会被这个 AI 时代所抛下的」 —— 另一个我对自己这样说。
最近公司开始收缩默认 Token 额度了,Fable 5 还没见到,取 Claude Opus 4.8 而代之的是性价比更高、但效果一般的一众普通模型。
那位与我配合默契的「AI 同事」,现在一天也见不到几次了,他的大部分日常工作都交由新的「AI 实习生」接手。
于是那份曾经熟悉的感觉又回来了 —— 它能做点事,但需要被指引、及时纠正,如果放任不管就可能会在某个地方偷偷搞出问题。
我又开始手把手教它某行代码怎么改,批评它怎么又没懂装懂地搞错我的需求。
调整总是阵痛的,这也让我关注到之前一直忽视的问题,寻找着把不同任务按难度分配给不同模型的手感。我也相信很快公司就会有更新更好的解决方案。
不过,当下我可以尝试回忆起去年我与 AI 在协作上磨合的技巧,但我不太可能把之前已经删掉的 prompt 再加回来了。人总是要向前看。