八月十九号,dev.to 上那篇讲 AI 内容历程的长文,署名 Ryan Carniato,挂在 Playful Programming 底下。第一遍我读得很快。第二遍在 2019 年那一段停住了。
那段讲他早年给 Angular in Depth 投稿。带他的编辑(@layzee)手把手教他改版式:段落拆到三句话以内,句子之间多留空行,配图。他当时不喜欢——文章被拆散了,还变长了。但他也承认,这个改法逼着他把注意力收拢,也让他第一次分清楚"改结构"和"删废话"是两件事。
七年之后,三月十三号,他发了一篇讲 React 那两条设计师选择为什么躲不掉的文章,94 个 reaction,42 条评论,标着九分钟读完。论点全是他自己的,素材全是他自己的。底下有人留言:读起来像 AI 写的。
我看到这儿的时候,手在键盘上停了半分钟。
先把话放死
现在这套"AI 味"检测,测出来的东西跟 AI 关系真不大。
三句话一段、段间留白、小标题、要点列表,这套版式不是模型发明的,是十年前一代人肉编辑总结出来、再教给作者的。在 Medium 上写过东西的人应该有印象,那几年"可读性"三个字被念得跟咒语一样,谁不拆段落谁就是不给读者面子。Carniato 2019 年被人摁着头拆段,2026 年读者说他拆得像 AI。
画外音:当年嫌你段落长,现在嫌你段落短,两头都是你。这算不算一种事后归因。
他自述里有个动作我觉得挺有意思。模型在每节末尾自动加的"小结",他全删了。理由是他习惯用一句追问把两节接起来,而不是用一句总结把这一节关掉。
我完全懂他在说什么。总结句和追问句,看着只差语气:
- 所以说,结构编辑和删减是两件事,都得练。
+ 那结构编辑和删减,到底哪个该先做?
上面那句把人送走,下面那句把人留下。模型不是写不出下面那种句子,是它默认写上面那种——在它那儿,一段话"完成"了,意思就是收口了。
这是我真正想说的那件事:模型优化的是段落,人优化的是论证。一个句子搁在段落里读着顺,模型就留着;搁在整篇文章的位置上能戳到读者脑子,人才会留着它,哪怕单看很别扭。落点不一样,长出来的就是两种东西。
顺着他的历程,这条线一直在变。2020 到 2022 年 Theo Browne 帮他看稿,做的是删填充词、删对冲措辞,让有力的句子更有力。同样是"让文字更干净",但人删是为了你的观点站得住,模型删是为了这一段读着滑。同方向,不同目的。
还有个被低估的细节。Solid 2.0 RC 那篇发布公告,读者还是从点式列表里闻出了 AI 味,讨论里差不多一半的回复压根不聊发布本身,只聊 AI 到底用没用。点式列表为什么像 AI?我琢磨了一下,因为它强行宣称一种平行——把轻重完全不同的几个东西,排成等权的几行。真实的思考里没那么多等权的东西。
- 三个原因:性能 / 体积 / 心智模型
+ 性能。体积那个先不说了。
+ 心智模型才是题眼,我写了两千字才绕回来。
列表是干净的。干净不等于对。
那条线画不到文字上
说实话,第一遍读到他被喷"AI 味",我心里是站读者的。你用了工具你就得认账,这没什么好委屈的。
后来我改主意了。我回头去数,数不出那篇文章里哪一段是机器碰过的。第二遍读的时候我已经知道背景了,还是数不出来。
那这个指控就没有把手。它既证明不了,也执行不了——"这段像 AI"没法证实,改完了也没法证明改对了。它唯一的作用是让被指控的人去自证。而自证这件事本身就没什么说服力:你要真想证明"这段是我自己写的",只能开始讲自己的写作过程,那套说辞听起来比水文还像水文。
更反讽的是他自己的工具史。他说自己一直是个采用新技术很慢的人,晚到 2025 年底才开始认真跟模型对话,用的还是免费版 Copilot,挂在 GPT-5.1 上,那时候 GPT-5.3 都能用了。一个被指控"太 AI"的人,实际上是个用着落后两个版本免费工具的人。
再往前翻,他从 2023 年底开始就在收 AI 生成的水文了——那种低成本的 JS 框架 listicle 引用他的东西。他本人被指控是 AI 写的,他的东西被 AI 抄去写成 AI 文。两头同时进行。
所以线画不到"这段文字的最终形态"上。那儿谁也画不出来。Grammarly 也是模型,你付了它的会员,它给你改结构建议,没人为这个开一场讨论。真正的分界只有一条,在决策层:最后有没有一个人把整篇读完、拍过板。
有那一下,中间谁起的草我不问。没那一下,中间全是人写的我也觉得不对味——那说明没人看完它。
被顺手删掉的那封信
整篇自述里我最在意的其实是另外一句,夹在一堆版式讨论中间,很容易滑过去。
他说他现在不怎么在每一个 PR 底下亲手写感谢的话了。理由是 SolidJS 的 issue 和 PR 量太大,而他的 issue 关闭率差不多满格。还有一句:agent 审过的 issue 和 PR,已经不太像他说话了。
这个代价跟前面那些争论不在一个量级。争"三句话一段像不像 AI",争的是一层皮。真正在这轮变化里被悄悄折价的,是那些不产出任何东西的动作——在别人的 PR 底下认真写一句谢谢,注意到谁的第一次贡献,记得谁帮你看过草稿。他早期的稿子就是这么磨出来的,2018 年在 Medium 上发,早期 Solid 社区在 Gitter 和 Spectrum 里帮他改,后来换到 Discord,一直没停。那套社会性的东西,是他写作能成立的前提。
模型能把发布公告写得比他本人还平易近人,也保住了他的开场和煽情段落。塞不下的素材,它顺手整理成一个续集选题。这些确实是本事,我不否认。
但同一笔预算里,那封感谢信没位置放,因为它什么都不产出。换我在他的位子上,量到那个级别,我也守不住。我只是觉得这值得单独记一笔:我们讨论 AI 写作讨论了一整年,讨论的全是文字,几乎没人讨论那些一起消失的、跟文字无关的动作。
(前一周还有件事我觉得挺荒诞。有人拿 AI 生成的 Gist 把 Solid 2.0 和 Octane 对比了一通,Dominic 用 agent 辅助的 prose 回应,然后两个 agent 就在那儿互相讲道理,最后是两个人类把 agent 赶走,自己坐下谈。这个画面比任何一篇"AI 会不会取代程序员"的长文都说明问题。)
他自己要试的那个方法
他自己下一步要试的方法,我觉得是整篇里唯一真正值钱的东西:自己写,写完喂给模型,但绝不让模型编辑成稿;模型给的重写建议,他读一遍,关掉,然后用自己话把结构重搭一遍。
这个方法对在哪?它让模型的角色从"帮你改稿的人"变成"一个读过你稿子的人"。它最有用的一点是让你看见——你的跳跃被抹平之后长什么样,然后由你自己决定哪些跳跃要放回去。Carniato 说他的招牌风格就是宏观和微观之间硬切,critics 管这叫"含糊"。但那个切换就是他的声音,AI 那边每次都抓不住他的原始定位。工具不是错,是它没这个上下文。
我得承认我没把握这套流程在 Deadline 面前活不活得下来。我自己试过类似的,白天想得挺美,凌晨一点赶着交,读着模型那版"更顺"的稿子,心里那句就变成"其实这样也行"。三天后文章发出去,我才看出来它把我最想让人记住的那个判断磨圆了 😅。所以我现在的做法不靠意志力,靠物理隔离:重写必须开一个新文件,从空白页第一行开始敲。不修它的稿子,只搬我要留的意思。
扯远了,回来说那条规则,短得有点过分:最后拍板的是你,中间谁写的我不问;你没拍板,谁写的我都当没写完。
还有个问题我到现在没答案。读者厌恶的到底是工具,还是"这段文字背后没人在"?如果是后者,那 Carniato 挨这顿骂不算冤,他只是站错了位置。如果是前者,那这个时代的读者迟早得跟自己的直觉和解——因为那条线,谁也画不出来。
