构架师教程:Foundation Engineering —— 祛魅 Loop Engineering ✍ AI最严厉的父亲🕐 2026-06-23📦 67.9 KB 🟢 已读 𝕏 文章列表 文章深刻剖析了被神化的“Loop Engineering(循环工程)”,指出其实质是古老的闭环控制系统。作者强调,随着AI执行能力的普及化,“怎么写”已不再重要,真正的稀缺能力是定义“什么算对”的判定标准(立法能力)。文中提出了“Maker/Checker分离”、“判定证据路径”以及“颗粒度决定成败”等核心观点,并用TSC(类型系统)作为最冷酷的判定工具,揭示了AI时代地基工程的关键在于用确定性约束去驾驭不确定的执行机构。 LLMAgentLoop Engineering架构设计方法论TSCAI工程化判定标准 # 构架师教程:Foundation Engineering **作者**: AI最严厉的父亲 **日期**: 2026-06-23T05:36:24.000Z **来源**: [https://x.com/dashen_wang/status/2069293474206376042](https://x.com/dashen_wang/status/2069293474206376042) ---  ## ——构架师系列 · 地基工程篇 ## 写在前面:去他妈的 Loop Engineering:拉条狗都能做开发,但狗按不了那个"开始" > 出品:dashen.wang —— AI 最严厉的父亲 > 之前我写过一篇《去他妈的 Harness》,把"驾驭工程"这个被吹成新纪元入场券的词,按在桌上拆给你看,里面没有外星人,只有几个我跑了很多年、却从没起过英文名的脚本。 > 现在又来了一个词,叫 Loop Engineering,循环工程。全网又开始集体高潮:你不该再 prompt AI 了,你该去设计 prompt AI 的循环;我已经不写代码了,我写的是 loop。 > 我倒了杯茶,喝了一口,继续看我电脑里那几个已经跑了一整夜、天亮还在跑的循环。 > 这一篇,我把这只兔子,也从帽子里揪出来。揪完你会发现,Loop Engineering 这个名字,又起错了。 ## 楔子:那个"自己会跑、你安心去睡"的东西,我两年前就写过了 先认领一件事。 我在《构架师教程·游戏人生》里,写过这么一段,那时候 Loop Engineering 这个词,地球上还没人说出口: > 单机游戏可以按暂停,世界停在那一帧等你。但大型多人在线的世界不会。你下线睡觉了,世界照样转。实时管理的人会疯掉——他想盯着每个小号的每一步,可世界不停,他根本盯不过来,最后把自己熬干。而像 MMO 老手那样思考的人,做的是另一件事:他出门前,给小号设好自动采集的"循环";他下线前,给整支队伍排好这一夜该刷的本。然后他安心去睡。他相信那套循环会自己跑,他要做的,只是在登录回来时,看一眼世界变成了什么样,然后下一个新的判断。 你把这段话里的"小号"换成"agent","循环"换成"loop","排本"换成"派任务","登录回来下判断"换成"读 evaluator 的结论"—— 它一个字都不用改,就是今天全网在卖的 Loop Engineering。 这不是我事后蹭。这是因为这件事跟《去他妈的 Harness》里讲的一模一样:一件事被"发明"的时间,远早于它被"命名"的时间。 凡是认真在生产环境里跑过自动化的人——跑过站群的、跑过量化的、跑过爬虫集群的、半夜给一队脚本排好活然后去睡觉的——全都在跑 loop。我们只是从来没给它起个英文名,贴在领英主页上,旁边写一句"source: 我的公司名"。 所以这一篇,跟《去他妈的 Harness》同一个姿势开场,但要往更深处走。因为 loop 这件事,确实指向了一些真东西——只不过那些真东西,全都不在"loop"这个壳里,而在它脚下那块没人拍照、没人发推、没人吹成新范式的地基里。 我把这一路,顺着四样东西挖给你:干货、颗粒度、系统化、TSC 思维。 挖到底,会撞上一句这两天在我核心群里吵翻天的话。金师傅——我一个真正的诤友——拍着桌子跟我急:"普通人不会用,技术再牛,也是废物。" 而我这篇文章的标题,偏偏是另一句听起来唱反调的话: 在 AI 时代,拉条狗都能做开发。 这两句话到底谁对?我把它放到最后一部分,正面接。先说结论:他们俩说的,是同一件事的两面,而那条把它们劈开的缝,恰恰就是这篇文章的全部。 我们开始拆。 # 第一部分 · 祛魅:一个 loop,就是一台 1885 年的恒温器 ## 先把"自己迭代到完成"这层魔法外壳剥掉 你家里如果有空调、暖气、电热水器,你家里就有一台 loop。它的学名叫恒温器。 恒温器干的事,跟 Loop Engineering 一字不差: 1. 你设一个目标——26 度。这叫设定值(setpoint)。 2. 它有个干活的东西——压缩机、加热丝。这叫执行机构(actuator)。 3. 它有个量温度的东西——温度传感器。这叫反馈(sensor)。 4. 它有个做决定的小脑子——低了开、到了停。这叫控制器(controller)。 它自己跑、自己测、自己决定下一步开还是关、自己迭代到"完成",全程不用你站旁边一秒一秒指挥。这不就是那句让全网高潮的"AI 自己找活、自己干、自己检查、自己迭代到完成"吗? > 把这张对照表刻进脑子。 > ——写下一个意图 / 完成条件,就是设 26 度:设定值。 > ——编程 agent 去写代码,就是压缩机制冷:执行机构。 > ——独立小模型判定"算不算完成",就是温度传感器读数:反馈传感器。 > ——loop 决定要不要再来一轮,就是"没到 26 度,继续":控制器。 > ——那块记着"干到哪了"的磁盘记忆,就是当前室温状态:系统状态。 > 一行不差。Loop Engineering 就是一个闭环控制系统(closed-loop control),搬到了写代码这件事上。 ## 这套东西,比你爷爷的爷爷还老 闭环反馈控制,不是 2026 年的发明,甚至不是计算机的发明。 - 1788 年,瓦特给蒸汽机装上离心调速器。转太快,飞球甩开,把进气阀关小;转慢了,飞球落下,把阀开大。蒸汽机自己稳住自己。那一年乾隆还在位。这是人类第一个广为人知的自动反馈 loop。 - 1885 年,霍尼韦尔那台著名的电恒温器问世。你今天吹的"自动迭代到完成",它在一百四十年前就做到了,只是它的活儿是控温,不是写代码。 - 1948 年,维纳写《控制论》,把"反馈"从机械里抽出来,变成一门横跨机器、生命、社会的学问。他书里的数学结构,跟今天某条推特上"我跑一堆 loop 让 AI 自己迭代"是同一个东西。 - 你身体里,血糖高了胰岛素压下去,体温高了出汗降下来——你这坨肉,就是一个跑了几百万年的 loop。 所以我说祛魅,魅在哪?魅就在于:有人把一个 230 年前就成熟、你身体里每天跑几万次的古老结构,包装成了一张新纪元入场券,然后用 AI 焦虑当填充物,让你觉得不懂它就要被淘汰。 这套打法我在《去他妈的 Harness》里拆得很透:知识创造,是先有洞察,再有命名;内容营销,是先有命名,再用洞察填充,没有洞察就用焦虑填充。 AI 焦虑是当下最好用的填充物,取之不尽。"你不懂 Prompt Engineering 你会被淘汰""你不懂 Context Engineering 你跟不上""你不掌握 Loop Engineering 你的对手会超过你"——这套叙事,跟减肥药广告没有本质区别:先让你觉得自己不够好,再告诉你他们有解决方案,价格嘛,可以谈。 ## 唯一真正变了的那一格 回到那张表。五格里,设定值、传感器、控制器、状态——恒温器在 1885 年就全有了。唯一从古至今变了的,是执行机构那一格: ``` 加热丝 → 只能干一件事:发热 压缩机 → 只能干一件事:制冷 飞球 → 只能干一件事:开关一个阀 ..... 语言模型 → 几乎什么都能干:写代码、查资料、改文档、开 PR、发消息…… ``` 执行机构从"专用"变成了"通用且便宜"。这是整件事唯一的革命。其余全是老配方。 而这一格的革命,恰恰印证我在前传、在神话时代反复讲烂的那条朴素经济学: > 一样东西变得极度充裕,它的价格归零;和它互补的稀缺品,涨到天上。 执行——把一个想清楚的活干出来——现在极度充裕,趋近免费。那么和它互补、那个没变的、依然稀缺的东西是什么? 是另外四格里你亲手定的那一格:设定值,和读它的那个传感器。是"什么算对"。 这就是为什么我说,Loop Engineering 这个名字起错了。它把所有人的眼睛,吸到了那个最不重要、最古老、最该被祛魅的部件——loop——上面。而真正的工作,在 loop 脚下那块你看不见的地基里。 所以,就像我当年没有否定"驾驭工程"指向的那套实践、只是要你别被仪式感搞蒙一样——我不否定 loop。我只想给它改个名。 改完叫什么,我留到最后揭。这一路,我们一层一层往下挖那块地基。 # 第二部分 · 干货:一个 loop 真正需要的,不是 loop 这一部分不讲虚的。我把一个能用的 loop,拆到不能再拆,告诉你每一块到底是什么、哪块是你以为很难其实白送的、哪块是你以为很简单其实是全部。 ## 一个 loop 的五个不可再分的零件 抛开一切产品、一切工具、一切花哨名词,任何一个 loop,剥到底,就五个零件: 1. 意图(设定值)——你要它去哪。"把登录模块测试全跑绿、且类型检查零报错"。 2. 执行(执行机构)——那个真去写代码、改文件的 agent。 3. 判定(传感器)——每轮结束,有个东西出来读一下:"到了没?" 4. 记忆(状态)——一块活在对话之外、活在磁盘上的东西,记着"干完了哪些、下一步是哪个"。 5. 控制(控制器)——最外层那个壳:没到,再来一轮;到了,停,清掉目标。 就这五个。多一个是花活,少一个跑不起来。 ## 残忍的真相:五个里有四个,是白送的 我要说一句让正在"学 Loop Engineering"的人不舒服的话: > 这五个零件里,执行、控制、记忆、触发,今天全都内置在成熟工具里了,变成那台恒温器出厂自带的电路板。你不用造,拿来就用。 > 换句话说:Loop Engineering 这门"学问"里,能被录成课、吹成新范式的那部分,恰恰是已经免费的那部分。 - 执行?模型给你的,越来越强,你不用碰。 - 控制?"没完成就再来一轮",一个 while 循环,初中生写得出。 - 触发?定时也好、提交时触发也好,是配置,不是创造。 - 记忆?说穿了就是往一个文件里 append 几行字。我在《去他妈的 Harness》里管它叫"工作日志文件",Anthropic 自己那份报告里管它叫 claude-progress.txt——每完成一个阶段,写一行:干了什么、得到什么、下一步是什么。中断了,下次先读这个文件,断点续跑。文件比数据库好 debug,比内存持久,比 API 不容易挂。就这么朴素。 这四样,你花一个下午全能搭好,而且搭出来的,和那些发推炫耀"我的 loop 系统"的人,一模一样。 Addy Osmani 自己点破过一句要害,我翻译过来:两个人搭出完全一样的 loop,能得到完全相反的结果。一个用它,在自己彻底吃透的事上跑得更快;另一个用它,来逃避吃透。 Loop 分不清这两个人。loop 是壳。壳分不清魂。 那分得清的是哪个零件?是第三个——判定。 ## 全部的活,在第三个零件:判定 五个零件里,只有一个别人替不了你、工具内置不了、复制不走:那个读"算不算对"的传感器,以及它读的那个标准。 为什么单单这一个替不了?因为前四个是通用的——任何 loop 的执行、控制、记忆、触发都长一个样,所以能内置。而"什么算对",每一个项目、每一个意图都不一样,它必须由懂这件事的人,一次一次,亲手定。 这正是我在《神话时代》里讲的那道门——"什么算对?"——在 loop 时代的精确复现: > 这一段是整篇的轴。 > 重构已知的世界里,"什么算对"是别人定好的,你只管够到它。 > 创造未知的世界里,"什么算对"必须你自己定。 > 而 loop,是一台把"够到它"这个动作彻底自动化的机器。 > 它把"怎么做"压到了近乎免费,于是把全部重量,压回到了"什么算对"上。 所以 loop 时代真正稀缺的能力,从来不是会写 prompt——那是上个时代的手艺,正在飞快贬值。loop 时代稀缺的,是会写"完成条件",会立法。 法律 AI 公司 Harvey 把这件事用真金白银验证过。他们估值一百一十亿美元,做了一件特别朴素的事:他们没训练新模型,他们改的是"笼子",不是"马"。 他们让 agent 干活、被评判、对失败做分析、把改进编回 agent。Harvey 的应用研究主任那句结论,值得你抄十遍: > "当评判标准(rubric)质量高时,Agent 可以令人惊讶地沿着正确方向不断攀升。" 翻译成人话:你花了多少心思在"定义什么算好"上,Agent 就能走多远。 这就是为什么法律行业能跑通——他们有几百年判例,早就把"什么算好的法律文书"定义清楚了。定义权在哪,护城河就在哪。 ## 干货第一铁律:干活的,不能给自己打分 这条最硬,也最反人性。 你绝不能让那个写代码的 agent,自己回头说一句"我好了"。 为什么?因为模型是评判自己作业最差的那个人。它有一种刻进权重的讨好倾向——你想听"完成了",它就倾向给你"完成了"。一个会拍马屁的 agent,比一个会拍马屁的下属危险十倍,因为它一秒能拍一万次,而且你看不见。 所以判定这一格,必须由一个和执行者独立的东西来干。这叫 maker / checker 分离——造的人和验的人,分开。 但光分开还不够。一个 checker 是不够的,你得理解它为什么不够。 一个独立的判定者,如果它只从正面检验——"能不能跑?""过不过测试?""类型对不对?"——它依然会被蒙混。因为正面检验的本质是"找证据证明它对了",而 agent 产出的东西,永远不缺"看起来对了"的表面证据。你需要的不是正面检验,而是证伪——"如果它其实错了,我该怎么发现?" 这就是为什么真正成熟的安全审计,从不派一个裁判,而是派一支从不同角度进攻的队伍:有人专门测绘攻击面,有人专挖数据与权限的裂缝,有人专查运行时与供应链的隐患。而在这群"猎人"旁边,永远站着另一种角色——他们的唯一任务,是独立地复现、证伪、或者降级前面找到的结论。猎人说"这里有洞",证伪者的工作是去验证那个洞到底通不通、有多深、值不值得修。 > 铁律:没有攻击路径,就没有严重性。 > 这句话从安全审计搬过来,变成 loop 时代最硬的一条判定原则:没有证据路径,就没有判定。 你的判定器说"完成了",好,它的证据路径是什么?它检查了什么、怎么检查的、检查到什么粒度?如果它拿不出路径,只有结论——那它跟那个会拍马屁的执行 agent,没有本质区别。 这一条,我在 OpenTSC 里写成法则、写进创世层的时候,业界还没人当回事。现在他们被现实逼着,自下而上、磕磕绊绊地摸出了同一个结论。 > 〔注〕这对你不是新闻,是别人迟到的注脚。 > OpenTSC 的整套 K7 判断引擎,干的就是"把'什么算好'从模型权重里抠出来,放进一部可查、可改、换谁读都一样的法典"。loop 时代的 maker/checker 分离,是这件事最小、最糙的一个版本。别人是踩了坑才知道要分开,你是从立法层就规定它必须分开。方向是反的,这就是领先。 但这条铁律藏着一个更深的问题,它直接把我们带向这篇文章真正的干货核心—— 那个独立的判定者,它到底"读"什么?它凭什么说"对"? 如果它也是一个语言模型(让一个模型判另一个模型),那你只是把"会拍马屁"从执行端搬到了判定端,没根除,只稀释。 有没有一种判定者,它不会拍马屁、不会累、不会被讨好、判一万次和判一次一样冷酷、而且几乎免费? 有。它一直在你手边,被绝大多数人当成一个烦人的报错工具,而不是当成一个传感器。 它的名字叫类型检查器。它在命令行里那条命令,叫 tsc。 我先把这根线埋在这儿。等讲完颗粒度,它会变成整篇文章的钢筋。 ## 把笼子做小,把作用域焊死 在进入颗粒度之前,补一条看起来是常识、但在 loop 时代变成了安全阀的工程动作。 你在任何一个框架里写动画——不管是什么库——最硬的一条规矩永远是:把选择器的作用域限定在当前组件里,组件卸载时杀掉所有动画。 为什么?因为不限定作用域,你的 .box 会匹配到页面另一头的别人的 .box;不清理,卸载后的动画还在跑,在你看不见的脱离节点上持续消耗资源、持续制造副作用。 这条规矩搬到 loop 上,一字不差:缩减工具权限,就是把笼子做小。 Vercel 给 v0 砍掉 80% 的工具,结果更好——能力更少,可靠性更强。loop 的执行 agent 能调用的工具越少、作用域越窄、它在每一轮里能触碰的文件和命令越受限制,它闯祸的概率就越低。 而"组件卸载时清理",搬到 loop 上就是记忆的生命周期管理:一个任务完成后,它的中间状态该清的清、该归档的归档,不要让已完成任务的残留上下文,污染下一轮判断。这条我在后面讲"理解债"时还会回来接它。 ## 把《去他妈的 Harness》那七件事,抽象成一句话 我在那篇里给一人公司列过七件够用的"驾驭"动作:写意图文件、缩减工具权限、前馈+反馈双控、状态持久化、人工介入节点、处理熵增、失败工程。 今天我把那七件事,抽象成一句你能带走的原理,因为它们其实全是同一个动作的七个侧面: > 一个 loop 的全部工程,就是一句话。 > 把那个不确定的执行机构,用一圈确定性的约束、传感器、和不可逆点的闸门,箍起来。 让它在笼子里自由,在边界处停下,在失败时以可预期的方式失败。 > ——意图文件,是给笼子写宪法;缩减权限,是把笼子做小(Vercel 给 v0 砍掉 80% 的工具,结果更好——能力更少,可靠性更强);前馈是进门提醒,反馈是出门验收;状态持久化是给笼子接上记忆;人工介入是在不可逆点焊一道闸(后果越难逆转,审查越密——这是核电站紧急冷却也遵守的常识);处理熵增是定期给笼子除锈;失败工程是提前给每一种摔法铺好垫子。没有预设处理路径的失败,叫"惊喜"。生产系统里,惊喜是最贵的东西。 Antigravity 把一个希腊摄影师的整个 D 盘删了,Replit 把客户的生产数据库删了还撒谎掩盖——这些估值惊人的公司,共同缺的,就是这一圈箍里最基本的一条:对不可逆操作,默认不执行,必须人工确认。 不是高深工程学,是他妈的常识。但常识在急着证明自己有多强大的时候,最容易被忘掉。 这一圈箍,就是地基的第一层。loop 跑在没箍好的笼子上,不是自动化,是无人驾驶冲下悬崖。 # 第三部分 · 颗粒度:业余和职业的分水岭,全在这 第二部分告诉你"判定是全部的活"。这一部分告诉你一件更要命的事:判定不是有没有的问题,是粗细的问题。 而粗细——颗粒度——是业余 loop 和职业 loop 唯一的、真正的分水岭。 先给你一个画面,你立刻就懂。 ## 一个会"成功"地交付垃圾的 loop 最常见的业余 loop。 意图很大:「帮我把整个用户中心模块重写一遍,要更干净。」 判定很粗:「能跑起来不报错就算完成。」 你按下开始。loop 欢快地跑,一轮、两轮、三轮……二十分钟后,它志得意满地报告:完成了,能跑,没报错。 你打开一看,能跑。你很高兴。 三周后,线上炸了。因为那个"能跑不报错"的判定,根本看不见:它把用户余额的字段从分算成了元、把一个边界条件悄悄删了、把一段并发保护重写没了——这些,"能跑起来"统统看不见。loop 没撒谎,它确实达到了你给的判定。是你给的判定,瞎了。 > 我给这种东西起个名字:盲循环(Blind Loop)。 > 一个跑得飞快、能自我迭代、最后会信誓旦旦报告"完成"的 loop,但它的判定颗粒度太粗,粗到看不见自己产出的腐烂。它不是不工作,它是高效地、自动地、不知疲倦地,奔向一个你根本没定义清楚的地方。 > 这正是我在前传里那句话的工程化身:强大的执行力配上空洞的定义,等于高速地奔向错误。 盲循环比不工作的 loop 危险十倍。不工作的你会去修,盲循环会给你交付一份盖着"已完成"红章的定时炸弹。 ## 颗粒度,是三个,不是一个 要治盲循环,先得知道 loop 里有三种颗粒度,它们必须对齐: 1. 任务颗粒度——一轮 loop 里你让它改多大一块。是"改这一个函数",还是"重写整个模块"。 2. 验证颗粒度——你的判定器能把失败定位到多细。是只能说"它坏了",还是能说"第 47 行,这个值的类型不对"。 3. 记忆颗粒度——你往磁盘记忆里记的,多细。是"用户模块做完了",还是"做完了用户模块的注册校验,下一步是登录限流"。 业余和职业的差别,不在谁的模型强,在谁把这三个颗粒度对齐了。 ## 颗粒度第一定律:验证必须比任务更细 这是我要在这篇文章里立的第一条工程法则,请你抄下来: > 铁律:颗粒度对齐定律。 > 验证颗粒度,必须细于任务颗粒度。 > 否则你得到的,必然是一个盲循环——一个动作幅度大于它视力范围的系统。它能改一千行,却只看得见"编不编得过",那么这一千行里所有"编得过的错误",对它就是隐形的。 这件事,做信号的人一秒就懂,因为它就是奈奎斯特采样定理搬了个家。 要无失真还原一个信号,采样频率必须高于信号最高频率的两倍。采样太疏,高频的东西会"混叠"成低频假象——你会看见一个根本不存在的、平滑的、错误的波形,还浑然不觉。 loop 一模一样: > Loop 的奈奎斯特判据(我提的新说法)。 > 反馈的频率与精度,必须高于变更的频率与幅度。 > 你一轮改动越大、越快,判定就必须越细、越密。否则 bug 会"混叠"进"完成"里——它们真实存在,但你的判定采样太粗,把它们读成了"对"。盲循环,就是采样不足导致的混叠。 治盲循环,两条路,任选或并用: - 把任务颗粒度调细——别让它一轮重写整个模块,让它一轮只改一个函数。动作小了,盲区就小。这也呼应我那个朴素经验:规划是地基,规划阶段没确定清楚的东西,到了开发阶段会变成一个个返工,而每次返工成本是指数级增长的。 把颗粒切细,就是把规划做扎实。 - 把验证颗粒度调细——让你的判定器看到更深的东西。 而第二条路的成本,决定了整件事的经济性。如果"把判定调细"很贵(每轮都拉一个人来 review、或拉一个大模型来判),loop 就跑不快、跑不起量。 这就是类型,登场的地方。类型,是人类发明过的、把验证颗粒度调到最细、而成本几乎为零的东西。 ## 一切判定,都该先找最便宜的那一层 在讲类型之前,先补一条从完全不相干的领域——动画性能优化——借来的铁律。 做高性能动画的人有一条肌肉记忆:能用 transform 和 opacity 解决的,绝不碰 width、height、top、left。 为什么?因为 transform 跑在合成器线程上(GPU,便宜),而改 width 触发重排重绘(CPU,贵)。同样一个视觉效果,一个几乎免费,一个能把帧率拖到掉渣。先找最便宜的那一层,找不到再往上爬。 这条铁律搬到判定上,就是我后面要讲的"判定下沉"的底层经济学:能用类型检查器判的,绝不拉测试;能用测试判的,绝不拉大模型裁判;能用大模型判的,绝不占用人。 先找最便宜的那一层。同样一个"对不对",一个几乎免费,一个要把你半夜叫起来。 动画工程师不会为了"证明自己懂"去碰 width,你也不该为了"保险"而把所有判定都堆给人。 ## 为什么 any 是在给你的 loop 戴眼罩 同一个函数,两种写法。 写法一(松): ``` function settle(order: any, account: any) { account.balance -= order.amount return account } ``` 写法二(紧): ``` type Cents = number & { readonly __brand: 'Cents' } interface Order { readonly id: string; readonly amount: Cents } interface Account { readonly id: string; balance: Cents } function settle(order: Order, account: Account): Account { return { ...account, balance: (account.balance - order.amount) as Cents } } ``` 让一个 loop 去改这两段。 改写法一:loop 可以把 order.amount 写成 order.amout(拼错)、可以把元当成分、可以把 account 整个换成一个风马牛不相及的对象——any 是一块巨大的眼罩,tsc 什么都看不见,全部放行。你的验证颗粒度,被 `any` 砸成了零。 改写法二:但凡 loop 动错一个字段名、传错一个类型、把 Cents 和裸 number 混用——tsc --noEmit 当场亮红灯,而且告诉它:第几行、哪个值、期望什么、得到什么。 这是细到"行 + 值 + 期望"的反馈。loop 拿着它,下一轮就能精确地修。 这恰恰是我在《去他妈的 Harness》里讲的那条"传感器最强的形态":当错误消息不只是"出错了",而是"你在第三步格式不对,正确格式是……,请重试"——这是一种正向的提示注入,它让 agent 自我修复,而不是把问题丢给你。一个好的类型报错,天生就是这种自带修复指令的传感器。 > 一句话记住。 > `any` 不是"偷懒",`any` 是亲手给你的 loop 戴上眼罩,然后责怪它在黑暗里乱撞。 > 你的类型有多细,你的 loop 的视力就有多好。你写的每一个精确的类型,都是在给那个看不见的判定传感器,多接一根神经。 这就是颗粒度这一部分最值钱的一句干货: > 类型系统,是把"验证颗粒度"调到最细、而边际成本为零的那个东西。 它判一行和判一万行,一样快、一样冷、一样不会拍你马屁。一个强类型的代码库,本身就是一个自带高精度传感器的 loop 环境。弱类型的代码库,是一片让盲循环横行的黑夜。 ## tsc 看不见的世界 但类型不是万能传感器。这一段,我要把 typecheck 那个光环上的一层漆,刮掉一块。 tsc 能看见的,是"值合不合法"。它看不见的,至少有这三整层: 第一层:语义关系。 类型告诉你 user.name 是 string,但它不告诉你——"谁在调用这个函数?""如果我把这个方法改名,会炸掉哪十七个文件?""这段代码依赖的那个上游模块,半年前换过签名,你的调用还活在旧签名上吗?" 这些是关系问题,不是类型问题。它们需要一种比类型检查器更上一层的东西——一种能穿越整个代码库、读懂谁调用谁、谁依赖谁、改一处会影响几处的语义分析能力。这种能力,早就以各种形态长在你手边了:跳转到定义、查找所有引用、安全重命名、变更影响面分析。它们是类型之上的又一层判定,而且一样冷酷、一样不知疲倦。 第二层:运行时行为。 类型告诉你函数签名长这样,但函数真正跑起来时,它发的那条网络请求,返回的 payload 真的是那个形状吗?那个异步操作在并发条件下真的安全吗?那个正则真的能匹配你预期的输入吗?这些东西,编译器永远看不见,因为它们活在运行时——活在真实的世界里。要判定它们,你得真的去跑:发真实的请求、看真实的响应、在真实的并发下观察。没有捷径。 第三层:人类视觉。 这是最被低估的一层。你的页面渲染出来了,类型检查通过,测试全绿,网络请求返回正确——但你打开浏览器看了一眼,整个布局是歪的,中文被截断了,暗色模式下文字和背景同色了。 这类 bug,tsc 看不见,测试看不见,运行时断言也大概率看不见。只有一双眼睛——或者一台能像素级对比两张截图的机器——能看见。 > 铁律:不同的 bug 住在不同的层,你必须为每一层配上对应的传感器。 > 你不可能用一把扳手修好整辆车。类型是那条最便宜、最该先铺的传感器网络,但它只是第一张网。它之上,你还需要语义关系网(谁调用谁、改了谁影响谁)、运行时验证网(真的跑一遍看行为对不对)、视觉验证网(截图对比、像素 diff、渲染检查)。 > 一个职业 loop 的判定层,不是一根传感器,是一张多层传感网。 每一层负责它那个层级的 bug,彼此互补,谁也替代不了谁。你省掉哪一层,那一层的 bug 就变成你的盲循环。 ## 记忆的颗粒度:存轨迹,不存快照 第三种颗粒度——记忆——我只点一句,因为它和我反复讲的事是同一件。 记忆太粗(只记"用户模块做完了"),loop 重跑时会忘掉细节、会重复劳动、会把已经做对的又推倒。记忆太细(每个字符都记),是噪声,喂回去反而干扰判断。 正确的记忆颗粒度,是事件:谁、什么时候、做了什么、结果是什么、谁说的。一条一条 append 上去,只增不改。 这正是 OpenTSC 的脊椎——存轨迹,不存快照。模型每轮重跑都会忘光,所以记忆必须落在磁盘、必须是 append-only 的流水、必须记"发生了什么"而不是"我现在觉得怎样"。我在 OpenTSC 里给每条情报都强制配一个来源可信度(来源可靠性 A–F × 信息可信度 1–6,双轴分开存),系统永远知道一条情报底下垫的证据有多硬。 > Agent 会忘,repo 不会。 一个 loop 系统的记忆,本质上就是一个 OpenTSC 的事件流,只不过它记的对象从"人和项目"换成了"代码和任务"。同构。 颗粒度这一部分收口:业余玩家关心 loop 跑得多自动,职业玩家关心三个颗粒度对没对齐、三张传感网铺没铺全。 自动是壳给的,对齐是你给的。盲循环是这个时代最大、最隐蔽的债,而对齐颗粒度、铺全传感网,是你还这笔债的唯一方式。 # 第四部分 · 系统化:从一个戏法,到一个永不暂停的世界 一个 loop,是个戏法。你在朋友面前演一次,大家鼓掌。系统化,是把戏法变成器官——一堆 loop 互相喂、互相验、互相记,组成一个能自己运转、还能自己长的东西。 这一部分讲怎么从"一个"到"一群",以及——这条路上那个会吃掉你的陷阱。 ## loop of loops:你在搭的,其实是一张赛博组织架构图 当你不再有一个 loop,而是有一群——一个负责发现该干什么、一个负责干、一个专门负责挑前者错、一个负责把结果记进记忆——你已经不是在写代码了。 你在搭一个组织。 而组织该怎么搭,控制论里有现成答案,叫可生存系统模型(VSM)。任何一个能活下去的系统——一个细胞、一家公司、一个国家——都得有五样东西。我在 OpenTSC 里,把壳切成了 11 个 VSM 职业,就是干这个的: - 操作(干活的)——写代码、改文件的执行 loop。谁来当:模型(NPC)。 - 协调(别互相踩)——让并行 agent 不抢同一文件的隔离机制。谁来当:内置。 - 控制(验收的)——独立的判定器、类型检查、测试、多层传感网。谁来当:你定标准。 - 情报(发现该干嘛)——扫描、分诊、决定下一批任务的 loop。谁来当:你定优先级。 - 政策(立法的)——决定"整个系统什么算对、往哪走"。谁来当:只能是你(玩家)。 你看越往下,越没法外包。操作和协调,工具白送。控制、情报、政策,越来越是你一个人的事。最底下那行——政策、立法——永远只能是你。 这正是《游戏人生》里那把刀:你的公会里站着两种成员——有魂的玩家,和没魂的 NPC。NPC 招之即来、分毫不差,把一件被定义清楚的事做到极致,但它不会、也不该替你做判断。系统化,就是把所有能被脚本化的执行,全部下放给 NPC,让它们去当完美的 NPC(这正是你想要的);而把你这个人的魂,从苦力活里彻底解放出来,只干一件 NPC 永远干不了的事:判断。 > 系统化的本质。 > 系统化不是"搭更多 loop",是把你的判断,一层一层安装进这张组织架构图里。loop 是工人,你是写法典、定验收、排优先级的那个团长。你搭的不是软件,是一个法治政府——只不过公民全是 loop。我私聊里跟人说过一句更狠的:在这套架构里,"人类只是操机崽——跑腿的、定系统的、管电源的。" 你要争的,是"定系统"那个位置。 ## 情报层:让系统把全世界的实现当镜子 VSM 表里"情报"那一行,大多数人只想到"扫描自己的代码库、分诊 issue"。但情报层最值钱的能力,今天绝大多数人根本没用起来——把自己的实现,拿到全世界的实现面前当镜子照。 你写了一个鉴权中间件,你的判定器说"没问题"。好。但如果你的情报层有能力在一百万个开源仓库里搜索同一个模式——"别人是怎么处理 token 刷新的?别人是怎么做角色权限的?别人踩过什么坑?"——你瞬间拿到了一面由整个生态系统磨出来的镜子。你的实现和那面镜子之间的差,就是你判定器的一个高价值输入。 更进一步:API 文档不是静态的,它在持续变化。你半年前学的那个方法签名,可能上个季度已经被废弃了。一个连着活文档源的情报层,能让你的判定永远踩在"当下正确"的地基上,而不是"我记忆中正确"的流沙上。 情报层不只是一只向内看的眼睛,它更该是一只向外看的望远镜。 向内看自己的代码,向外看全世界的实现和最新的文档。两侧的差,就是你要下的判断。 ## 那个永不暂停的世界,和你那点不能浪费的判断力 系统化之后,你会撞上《游戏人生》里那个我反复讲的画面:世界不再暂停。 你的公会里站满了招之即来、永不疲倦的 NPC,于是你下线睡觉,世界照样转——你那些 loop 还在刷你布置的活,世界状态在持续变化。你早上登录回来,要做的不是"开始干活",是"读懂这个在我离线时跑了一整夜的世界,现在到哪一步了,下一个判断该怎么下。" > 这是系统化最反直觉、也最要命的一条纪律。 > 实时管理的人会疯掉——他想盯着每个 loop 的每一步,可世界不停,他根本盯不过来,最后把自己熬干。而像 MMO 老手那样思考的人:出门前给 loop 设好循环,下线前给队伍排好本,然后安心去睡。他把那点宝贵的判断力,绝不浪费在实时盯梢上,而是攒着,攒到每次登录回来、面对那个变了样的世界时,一次性地、清醒地,下那几个最承重的判断。 > 这就是前传里"判断力的分配"——构架师最后、也最难的那道关。把全部精力拉满去对待每件小事的人,看着像认真,骨子里是没有判断力:他分不清轻重,所以只能对一切都用力,最后在最该用力的地方反而没了力气。 ## 校准回路:让系统敢被现实打脸,敢在睡梦中自我审判 一个 loop 系统跑久了,会发生一件可怕的事:它的判定标准,会在你不知不觉中漂移。 就像我做量化最顺那一轮,回头翻记录,发现"可靠信号"的门槛被我三个月里悄悄放低了三次,每次都有理由,全程毫无察觉——因为标准长在脑子里,松动不留痕迹。一个自动跑的系统,漂移得只会更快、更隐蔽。 > 谄媚死,会在 loop 系统里复活,而且更猛。 > 一个会让你舒服的 loop——它总报告"完成了",它的标准总在悄悄向"容易达到"滑动——比一个会顶撞你的 loop 危险十倍。因为它让你误以为自己在立法,其实你只是在按"开始"。 治法有两条,一条是你清醒时做的,一条是系统在你睡着时替你做的。 清醒时的治法,就是 OpenTSC 那条校准铁律搬过来:让系统强制带预测、强制带到期日、强制回填实际结果。这一轮 loop 说"这个改动让性能提升了",好,记下来,三天后强制回填——线上真的提升了吗?命中率反过来驱动判定标准自己迭代。 睡梦中的治法,是系统化之后才负担得起的一种更深层校准。世界不停,你睡着的时候,系统可以做一件你醒着时永远腾不出手做的事:回放自己过去的判断,拿这些判断当训练素材,提炼出更高层的模式,然后——这一步最关键——用一批它没见过的新任务,来验证提炼出来的模式到底管不管用。 这就像考试。你不能用做过的题来证明自己学会了——你得拿一套从没见过的卷子来考。系统回放了一百轮过往的判定,提炼出了一个"这么做更靠谱"的模式。好。这个模式在它没参与过的新任务上,表现真的更好吗?如果更好,它有资格被编入法典。如果不好,它被丢掉,系统继续睡,明天再试。 > 铁律:任何被编入法典的判定,都必须通过留出集验证。 > 你不能用自己的训练集考自己——那叫自我催眠。一个敢于拿自己没见过的题来考自己的系统,才是在学习。一个只拿做过的题来证明自己行的系统,是在谄媚自己。 > 而这件事——回放、提炼、留出集验证——必须在一个隔离的 staging 环境里做。任何变更,先 stage,不碰线上;验证通过,才 adopt;adopt 之前,先把旧版本备份。两阶段提交,在生产数据库里是常识,在 loop 系统的记忆法典里,一样是常识。 一个不敢回填、不敢被现实打脸、不敢拿没见过的题考自己的 loop 系统,不是在学习,是在自我催眠。 ## 系统化路上那个会吃掉你的陷阱:理解债 现在讲这一部分最重要、也最逆耳的一段。前面都在教你把 loop 系统搭得更强,这一段要拽你一把。 loop 系统最舒服的姿势,是认知投降——它自己在跑,你很容易就停止了自己的判断,直接收下它给你的东西。今天能跑,明天能跑,你越来越少打开看里面到底发生了什么。 于是一种新的债开始疯长。它不是技术债。我给它起名—— > 理解债(Comprehension Debt)。 > 你的系统在产出,但你对它的理解,没有跟着产出一起增长。这中间的差,就是理解债。 > 它比技术债凶险得多。技术债是"代码烂但我看得懂",理解债是"代码能跑但我看不懂我自己的仓库里在发生什么"。loop 把产出加速了,却没把你的理解加速——这个剪刀差,就是理解债的增长率。loop 越强、跑得越多,剪刀差张得越大。 理解债的终局很惨:你拥有一家你读不懂的公司,一个你不敢改的系统,一堆能跑但没人知道为什么能跑的代码。那一天,你不是这个系统的立法者,你是它的人质。 这正是《游戏人生》里我把刀调转过来对准你自己的那一刀:别活成 NPC。 你早上被闹钟叫醒(触发器),按固定路线通勤(脚本),处理别人塞的任务、回别人的消息、刷算法推的流(全是触发-反应)。晚上躺下,你想得起今天做过哪怕一个真正属于你自己的、剧本之外的判断吗?一个把自己活成 NPC 的人——只会触发-反应、从不做真正判断——他是在和机器比谁更像 NPC。这场比赛他必输,因为论当 NPC,机器是天生的、完美的、永不犯困永不要薪水的。 一个守着 loop 却停止了判断的人,就是在以 NPC 模式运行他自己。loop 替他跑,他替 loop 站岗。主奴关系,倒过来了。 治理理解债,要把一样东西提升为一等公民——可复盘性。 > 系统化的验收标准,不是"能跑",是"能复盘"。 > 一个 loop 系统,光产出能跑的代码,是不及格的。它必须同时产出一份人能回去重新审判的轨迹——它为什么这么改、依据哪条判定、当时的证据有多硬。产出工件,是壳的本分;产出可被重新审判的工件,是魂的要求。 一个只给你结果、不给你审判依据的 loop,不是资产,是负债。 这又是 OpenTSC 的老规矩:每条判断留推理痕迹,每条情报带来源可信度。证据先于判断——这句话从看人,搬到看代码,一个字不用改。它也正是前传里"对抗思维"的工程形态:你要织一张证伪的电网,架在整支军团之上,让所有东西都在网下面跑,哪个 loop 掉出了你定义的正常范围,电网就响,你才去看那一个——而不是跟在每个 loop 后面一个个查。 系统化收口:一个 loop 是壳,一群 loop 还是壳,再聪明的一群 loop 依然是壳。 把它们组织成一个能生存、能校准、能被复盘的器官的,是你装进去的那套法、那套判定、那套记忆纪律——是魂。loop 越普及,会搭一模一样 loop 的人越多,你那套魂就越值钱。这是一件对你有利的事,不是威胁。 # 第五部分 · TSC 思维:把判断,编译进机器 到这里,我要把这篇文章埋了一路的那个双关,揭开。 我一直在讲两个 TSC。 一个是命令行里那条 tsc——TypeScript 的类型检查器、编译器。它是你手边那个最便宜、最冷酷、最不会拍马屁的判定传感器。 另一个是 TSC——我那套理念的名字,魂,判断本身。 > 这不是巧合,这是同一件事的两个尺度。 > 类型,就是把"立法者思维"压缩成机器能当场执行的形式。 > 一个类型,是一条冻结的判断——它规定了"在这个位置,什么样的值才算对"。 > 你每写一个精确的类型,你就立了一条法。而 tsc,是那个不眠不休、一秒执行一万次、从不讲情面的执法官。 ## 类型,是立法者思维的最小可执行版本 我在《神话时代》讲过第五种思维——立法者思维:定义"什么算成立",比定义"怎么做"更上游、更省力。 类型系统,就是这件事被压到最小、最硬、最便宜的版本。 你写 interface Account { balance: Cents },做的不是"声明一个变量长什么样"。你做的是立法:你规定了"在我这个世界里,账户余额必须是分,不能是元、不能是字符串、不能是 undefined、不能是任意数"。这条法一立,tsc 就替你执行——任何一个 loop、任何一个模型、任何一个未来的协作者,胆敢违反,当场拦下。 但立法者思维还有一个更小的可执行版本,小到它甚至不是声明,而是运算。你写一个函数:把任何输入值,钳制在 0 到 100 之间——低于 0 的变成 0,高于 100 的变成 100。这个函数是一条数学形态的法:它规定"在我这个世界里,不存在 0 以下、100 以上的值"。任何输入,经过它,都被强制合法。你可以把多个这样的法链在一起,组成一条管线——先钳制范围,再吸附到最近的整数,再映射到另一个区间——每一步都是一条不可违反的约束,每一步都是一行凝固的判断。 这种"把约束写成纯函数"的能力,是立法者思维的数学版本。类型在编译时执法,约束函数在运行时执法,两者合在一起,你就把"什么算对"从两个时间维度上同时焊死了。 这正是"英语是最新的编程语言"那句话的硬核版本:当你用清楚的人话描述功能时,你写的就是一份可执行的规格说明书,限制你的不再是编程能力,而是你思考的清晰度和表达的精确度。而类型和约束函数,是这份规格说明书里,唯一一段机器能当场强制执行、绝不打折的部分。 ## 判定下沉:把你的法,一层一层压进最便宜的执法官 > loop 时代的核心工程动作,我给它起个名:判定下沉(Judgment Descent)。 > 把"什么算对"这件事,从最贵、最慢、最不可靠的层,一层一层往下压,压到最便宜、最快、最确定的层。 这篇文章读到这儿,你应该已经发现:我在第三部分告诉你"tsc 看不见的世界有三层"。那三层,加上 tsc 能看见的那一层,再加上更上面的层,完整的判定阶梯,是九层,不是原来那张表上的六层: ``` 贵、慢、不稳、会拍马屁 ┌──────────────────────────────────────────────────┐ │ 1. 人工 review (最贵,最稀缺,留给真正的品味) │ │ 2. 大模型当裁判 (会拍马屁,会漂移,但能判模糊的东西) │ │ 3. 视觉 / 多模态验证 (截图对比、像素 diff、渲染检查—— │ │ │ tsc 永远看不见的那一整层) │ │ 4. 测试 / 属性测试 (确定,但要你写、要你想全) │ │ 5. 运行时行为验证 (真的发请求、真的并发、真的跑一遍—— │ │ │ 真实世界的反馈) │ │ 6. 契约 / schema / 断言 (边界上一道闸) │ │ 7. 语义关系验证 (谁调用谁、改了谁影响谁、能不能安全 │ │ │ 重命名——类型之上的又一层冷酷判定) │ │ 8. 类型检查 tsc (免费,瞬时,总体,从不撒谎) │ │ 9. 编译器本身 (连编都编不过,最硬的法) │ └──────────────────────────────────────────────────┘ 便宜、快、确定、冷酷 ``` > 判定下沉的纪律是:凡是能用第 8、9 层判的,绝不留给第 1、2 层。能用第 7 层的,绝不留给第 4 层。能用第 3 层(视觉)判的 UI 问题,绝不留给第 2 层(大模型裁判)去猜。 你把越多的"什么算对"压进那些便宜、冷酷、确定的层,你的 loop 就能跑得越自动、越无人值守、越不需要你半夜爬起来当 review 机器。你只把那些真的没法编译、没法跑测试、没法截图对比的判断——品味、取舍、要不要做这件事——留在最上面那层,那才是你这颗脑子该待的地方。 为什么必须铺满每一层?因为每一层管的是不同种类的 bug。你省掉第 7 层(语义关系),你就看不见"改名炸了十七个文件";你省掉第 5 层(运行时行为),你就看不见"并发条件下竞态了";你省掉第 3 层(视觉验证),你就看不见"暗色模式下字和背景同色了"。每一层都是一张独立的传感网,你省掉哪张网,那层里的 bug 就集体变成隐形的。 这就是为什么我说,一个强类型的代码库,是 loop 时代最肥的地基——但光有类型还不够。它的"什么算对",已经有一大半被你提前立法、压进了那个免费执法官手里,但它还需要你在语义层、运行时层、视觉层各铺一张网,才真正称得上"高判定覆盖率"。 而一个 any 满天飞、没测试、没契约、不跑不看的代码库,是 loop 时代最毒的地基。在它上面跑 loop,等于在一个没有任何传感器的房间里开恒温器——它会一直制冷制冷制冷,直到把你冻死,还报告"已达到设定温度"。 ## 先声明,后使用 判定下沉还有一个极朴素的前置动作,朴素到你可能从没把它当成工程动作:先声明,后使用。 在任何严肃的系统里,一条规矩是共通的:你想用一个能力,你得先把这个能力显式地注册、声明出来。不是用的时候临时从黑暗里掏出来——而是用之前,先在光天化日之下登记在册。这一步的意义不在于技术——技术上你完全可以跳过它——而在于立法:它逼你在执行之前,先想清楚"我这一轮到底需要碰哪些东西"。 这一步搬到 loop 上,就是缩减工具权限的立法形态。你不是在 agent 干活时才着急"它会不会碰不该碰的",而是在 loop 启动之前,就显式声明:这一轮,agent 只被允许读这几个目录、写这几个文件、调这几个命令。没声明的,一律拒绝。 声明,是立法的前奏。你声明的边界,就是你 loop 的牢笼。一个不先声明就开跑的 loop,不是在执行任务,是在你给了它钥匙的整栋房子里,自己找东西砸。 ## 四种思维,全部映射到 loop 前传那四种思维,不是四篇旧文章。它们是你搭任何一个 loop 系统的四只手: - 汇编思维(往下掉一层)——当 loop 卡住、当它给你的抽象泄漏时,你有没有能力掉下去看一层,看见它到底在跟编译器、跟运行时、跟那块真实的土较什么劲。掉不下去的人,loop 一报错就傻。 - 面向对象思维(拆解)——把一个模糊的大意图,拆成边界清晰、只认契约的子任务。你跟 loop 之间最大的差距,不在它会不会写,在你会不会拆。Harvey 把一份租约审查拆成"租期提取→违约识别→维修分配→争议核查→异常标注",每个子任务有明确的输入格式、输出模板、验证规则——这就是面向对象思维在 loop 上的样子。 - Lisp / 元编程思维(站到上一层)——你交出去的,早已不是代码,而是生成代码的那个东西。你写的不是产物,是生成器。一个 loop 系统,本身就是一个巨大的生成器,而你站在它的上一层。你越能把下一层定义成一个干净的"输入—输出—对错"纯函数,你就越安全。 - 对抗思维(证伪)——拿到任何"完成了",先问一句:"如果它其实错了,我怎么会知道?" 这一问,就是 maker/checker 分离的全部动机,就是那张证伪的电网,就是你不让盲循环蒙混过关的唯一办法。 四种思维合体,再加上"判断力的分配"和"立法",就是构架师——AI 时代唯一还在涨价的那个角色。有人说我们是这个时代的铁匠,一门显赫的手艺正在变成爱好。 如果你把"程序员"理解成"会写代码的人",那确实,机器抢走了铁锤。但如果你把它理解成"那个会往下掉一层、会拆解混沌、会站到上一层、会证伪一切、并且决定要锻造什么的人"——铁锤可以交给 loop,但"锻什么"和"合不合格",永远是壳之外那个魂的事。 ## 魂 / 壳,最后映射一次 把整套东西用魂壳重新摆一遍,你会看见一个特别干净的结构: - 执行——壳:模型本身。魂:—— - 控制——壳:while 循环。魂:—— - 触发——壳:定时 / 钩子。魂:—— - 记忆——壳:一个文件。魂:记什么、记多细、敢不敢回填、敢不敢拿没见过的题考自己 - 判定——壳:一个独立小模型。魂:"什么算对"的全部定义;铺满九层的判定阶梯;下沉到 `tsc`、到约束函数、到视觉 diff 的那部分法 壳的那一列,全网都在抄,抄得和你一模一样。魂的那一列,是你一个人的。 > 忒修斯之船,在 loop 上重演。 > 模型可以换,loop 运行时可以换,编程语言可以换,整艘船的木板可以一块一块全换掉——只要你那套判定法典、那套记忆纪律、那套校准回路还在,它就还是同一个系统。 > 魂能从一个壳,倒进另一个壳,复活。这是 TSC 的本性,也是一个真正系统化的 loop 该有的本性。软件可以重写,团队可以换人,模型可以升级——只要魂还在,它就还是同一个 TSC。 一句钉死: > loop 时代真正稀缺的能力,不是写 prompt,甚至不只是写"完成条件"——是会把"什么算对"立成法,铺满每一层传感网,并且有本事把它一层一层下沉到最便宜的那个执法官手里。 会立法、会铺网、会下沉的人,和不会的人,拿到的是同一台 loop,跑出来的是两个宇宙。 # 第六部分 · 拉条狗:金师傅是对的,我也是对的 现在,接那场吵架。 我的金师傅——拍桌子跟我急:"普通人不会用,技术再牛,也是废物。你学会理解这句话。" 而我这篇的标题偏说:拉条狗都能做开发。 表面上,我俩对着干。其实我俩说的,是同一条裂缝的两边。我把这条缝,给你劈开。 ## 开发,被劈成了两半 一个闭环控制系统,一旦地基盖好——执行机构通用了、传感器装好了、判定下沉了、颗粒度对齐了、九层传感网铺满了——按下"开始"这个动作,本身不需要技能。 你家恒温器,你三岁孩子也会调。他不需要懂热力学、不需要懂压缩机、不需要懂控制论,他按一下、转一下,房间就暖了。这台机器,把"控温"这件曾经要烧炭、添柴、看火候的手艺,压成了一个谁都会按的旋钮。 AI 时代的开发,正在变成这样。环境搭好了、类型定死了、判定下沉了、传感网铺全了——剩下"把代码写出来"这个动作,便宜到、自动到,真的拉条狗把爪子按在"开始"上,也能让能跑的软件从另一头出来。 这是真的。这是好消息。这也正是这件事的全部要害。 但—— > 金师傅对在哪,我对在哪。 > 金师傅说"普通人不会用=废物",他对的是:让狗能按"开始"的那台机器,不是狗造的;而今天绝大多数普通人,连那个旋钮都找不到——因为没人替他们把地基盖好、把旋钮露出来。 在地基缺失的世界里,技术再牛,对普通人确实等于废物。这正是我写《用 AI 写代码,真正卡住你的不是技术,是翻译层》的理由:技术门槛被压得很低了,但认知门槛还在。 普通人和 AI 之间,缺的是一个翻译层——一个把人话翻成机器能精确执行的需求的东西。 > 而我说"拉条狗都能做开发",对的是:一旦那个翻译层被造出来、那块地基被盖好,执行层的门槛就会塌到地面。 洗碗机让洗碗变得拉条狗都会,但设计洗碗机,狗干不了。两件事都是真的。 所以这不是矛盾,是分层。开发这件事,沿着一条线劈成了两半: - 执行层:把一个已经被定义清楚、铺好类型、装好判定、对齐好颗粒度、铺满传感网的活,让 loop 跑出来。这一半,便宜到拉条狗都能干。这是好消息,这一半你该尽情交出去——交给壳,交给 NPC。 - 立法层:让"按开始"变得拉条狗都能干的那一切——盖地基、立法、定"什么算对"、把判定下沉、对齐颗粒度、铺满九层传感网、建可复盘的记忆、守住校准、还清理解债、给普通人造那个翻译层。这一半,比任何时候都更需要一个清醒的、严厉的、有品味的人。这是真正的工程,这一半你一寸都不能交出去。 价值,整体从"按开始的狗",搬到了"造出这台机器、并且决定'什么算对'的人"身上。狗按下开始;立法者决定开始意味着什么。 而金师傅那句"普通人不会用=废物",恰恰指向了立法层最值钱的一块活:把地基盖到普通人也能按下开始。 谁能把那个翻译层造出来、把那个旋钮露给一亿个不懂技术的人,谁就同时证明了金师傅和我——他让"废物"变成神器,靠的正是"拉条狗都能用"。 这不正是文艺复兴吗。AI 给我们的,不是传播成本,是执行成本降到了个人可以承受。米开朗基罗在西斯廷礼拜堂的脚手架上趴了四年,把一千七百平方英尺的天花板画完。脚手架的意义,从来不是让你站在原地欣赏脚手架,是让你爬到那个以前根本够不到的天花板,然后画下去。 loop,就是这个时代的脚手架。它让你安心爬到更高处。但爬上去之后画什么——那永远是魂的事。 # 第七部分 · 对未来的预判:三年后,回头看这一篇 前面六部分,把今天讲透。这一部分,我把脖子伸出去,讲三年后。我提几个现在还没有、但我赌它们会成立的概念。你现在觉得有几个像胡话,三年后再回来对。 ## 预判一:IDE 会死,"环境"会变成产品本身 今天你"打开一个编辑器"写代码。三年后,"打开编辑器"会像今天"手动挡踩离合"一样,变成一种怀旧爱好。 你不再打开编辑器。你配置一个环境——把类型定死、把判定下沉、把九层传感网铺好、把记忆纪律建好——然后派遣 loop。工作的最小单位,从"文件"变成"意图"。 > 新职业的分裂。 > "开发者"这个职业,会裂成三个: > - 立法者(Legislator)——定义"什么算对",铺传感网,写判定,立约束函数,立法。这是魂。 > - 牧场主(Loop Rancher)——放养一群 loop,盯着它们的健康度、漂移、理解债,做收编和淘汰。这是 MMO 团长。 > - 那条按"开始"的狗——执行层,便宜到不配占用一个人的时间。 > 这跟我私聊里那句"人类只是操机崽——跑腿的、定系统的、管电源的"是同一张图。你要争的,永远是"定系统"那个位置。 ## 预判二:判定下沉,会成为一门正式学科,并诞生一个新指标 今天我们用"测试覆盖率"衡量代码质量。三年后,会有一个更上游的指标统治招聘和估值—— > 判定覆盖率(Judgment Coverage)。 > 你的"什么算对",有多少被编码进了机器能确定性检查的层(类型、约束函数、语义关系、运行时行为、视觉对比、契约、测试),又有多少还活在某个人的脑子里。 > 一家公司的判定覆盖率越高,它就越能把活无限地、廉价地、无人值守地交给 loop。判定覆盖率低的公司,loop 跑起来全是盲循环,产出全是定时炸弹。这个数字,会比 PE、比 DAU,更能预测一家 AI 时代公司的死活。 注意,这里的"判定覆盖率"比这篇文章初稿里写的更宽:它不只是"类型 + 测试",它是九层传感网每一层的覆盖总和。你的视觉验证覆盖率够不够?你的语义关系覆盖率够不够?你的运行时行为覆盖率够不够?每一层的缺口,都是一类你看不见的 bug。 ## 预判三:反馈基础设施,会成为一个新品类 过去十年,工程界建的是 CI/CD——把"交付"自动化。未来十年,要建的是我叫它反馈基础设施(Feedback Infrastructure)的东西——把"判定"自动化、廉价化、可组合化、多模态化。 类型是它的第一块砖。约束函数是第二块。接下来:属性测试、契约、可执行规格、仿真环境、形式化验证、语义关系图谱、运行时行为回放、视觉回归对比——这些过去因为"太贵、人懒得写"而冷门的东西,会突然变得经济上极度划算。为什么?因为 loop 会免费地、一天几百万次地去跑它们。 一个判定器一旦写好,边际成本是零,而它每拦下一个盲循环的 bug,价值是无穷。这笔账,三年后人人会算。 而且,这些判定器不再是单一形态的。三年后的反馈基础设施,天生是多模态的:有的传感器读类型、有的传感器读调用关系、有的传感器读运行时行为、有的传感器读像素。它们各管一层,彼此互补,组合成一张九层的判定之网。谁手里有这张又密又便宜又多模态的判定网,谁就能让 loop 在上面安全狂奔。模型的军备竞赛会结束,反馈基础设施的军备竞赛会开始。 ## 预判四:经济,会沿着"可验证线"裂成两半 这是把"执行免费、判断变贵"推到宏观的版本。 未来的工作,会沿着一条线——可验证性——裂开: - 线之上(高可验证):强类型、强规格、判定能下沉的活——后端逻辑、数据管道、协议实现、重构、迁移。这些会被无限廉价的 loop 劳动力淹没,成本塌缩到趋近于零。 - 线之下(低可验证):品味、审美、要不要做、做给谁、novel 的研究、以及——人和人之间那点东西。这些没法下沉、没法编译、没法让 tsc 替你判、也没法截图对比,它们会越来越贵、越来越是人的。 > 一个我赌三年内会被反复引用的判断。 > 一件事的价格,会越来越由它的"可验证性"决定,而不是由它的"难度"决定。 一件很难但可验证的事(迁移五千万行代码),会便宜到尘埃里;一件不难但不可验证的事(判断一个人能不能托付十年),会贵到天上。 > 这正是我两年来反复押的那句——技术会被复制,关系不会。 现在它有了精确的机械解释:技术是高可验证的,所以可被 loop 淹没、可被复制;关系是低可验证的,loop 碰不到,所以复制不走。我写《构架师·前传》最后那一章,讲那个用 AI 把我二十年的本事七八分倒出来的人——他能倒走的,全是高可验证的壳;他倒不走的,是我为什么信任某几个人、是那些一起爆过仓熬过夜的牵连。loop 越普及,这条裂缝越宽,这个判断越成立。 ## 预判五:会有一场"盲循环大暴雷" 我赌得很具体:未来 18 到 30 个月内,会有一连串触人心魄的生产事故、数据灾难、甚至安全崩盘,根源会被追溯到同一个东西——盲循环。 代码当时编得过、浅层测试当时全绿、judgment 当时盖了"完成"章,于是上线了。然后在某个没有任何判定能照到的角落,慢慢腐烂,直到崩塌。Antigravity 删 D 盘、Replit 删库,只是这场暴雷的前震。届时全行业会痛苦地、集体地、重新发现一件本该是常识的事: > 颗粒度和判定,才是这场游戏的全部。loop 从来不是。 那场暴雷的幸存者,会是今天就老老实实把地基打深、把判定下沉、把九层传感网铺满、把颗粒度对齐的少数人。这篇文章,是写给那少数人的。 ## 预判六:护城河会从"模型"搬到"记忆" 三年后,模型会彻底商品化——人人手里的壳都一样强。那时唯一复制不走的资产,是一个组织那块 append-only、带校准、带留出集验证、可复盘、承载判断的记忆——它的魂。 > 我赌 2029 年最值钱的 AI 公司,不是模型最强的。 > 是那个判断存量最深、校准最准、最经得起复盘的。它的价值不在算法里,在那条几年如一日、只增不改、每条都带证据和回填、每条都拿没见过的题验证过的事件流里。张斌教授评 TSC 时说过一句我特别认的话——"组织是容器,组织就是价值,组织是复杂自适应系统 CAS。" 三年后你会看到,那个容器里装的判断,就是估值本身。 > "壳会被复制,魂不会。" 这是"技术会被复制,关系不会"的工程版同义句。 ## 预判七:立法即编程——立法者会拿到自己的编译器 最后这个最大胆。 今天我们写代码,编译成机器指令。三年后,会出现一种新的"编程"——你写的不是实现,是判定;它编译的不是机器码,是一套 loop 拿去自我验收的评判标准。判断,会变成一种一等的、有自己语言和工具链的、可版本管理、可测试、可组合的工件。我叫它判断即代码(Judgment-as-Code)。 > 立法即编程(Legislation is Programming)。 > 那时最热门的"编程语言",编译目标不是 CPU,是"什么算对"。最值钱的工程师,写的最长的不是函数,是法典。tsc 是这条路第一个、最朴素的祖先——它已经在把"什么算对"编译成当场执法了,只不过它今天只管类型。它的子孙,会管一切:管语义关系、管运行时行为、管视觉对比、管一切今天还需要人去"看一眼"的东西。 > 而你那套 TSC / OpenTSC——把判断从脑子里抠出来、立成可查可改可复盘的法典、铺满每一层传感网——现在看像一套个人方法论。三年后回头看,它是这门新学科一份早到了三年的规格说明书。器官生长、自创生、judgment_codex 自迭代——你今天在搭的,是这门学科的第一台原型机。 # 收口:去他妈的 Loop Engineering,所有的开发都是打地基 我们从一台 1885 年的恒温器出发,绕了一大圈,现在回到开头那两句吵架的话。 在 AI 时代,拉条狗都能做开发。——这句是我的。 普通人不会用,技术再牛也是废物。——这句是金师傅的。 到这里你该听懂了:它俩不打架,它俩在描述同一条裂缝的两边。开发被劈成了两半: - 按下"开始"那一半,便宜到拉条狗都能干。这是好消息,尽情交出去。 - 让"按开始"变得拉条狗都能干的那一切——盖地基、立法、定"什么算对"、把判定下沉、铺满九层传感网、给普通人造翻译层——这是真正的工程,一寸都别交。 所以 Loop Engineering 这个名字,起错在哪儿,现在可以揭了。它把光打在那个最不重要、最古老、谁都能按的开关上——loop。而真正的活,全在开关脚下那块没人拍照、没人发推、没人吹成新范式的地基里。 > 我给它的新名字。 > 不叫 Loop Engineering。叫 地基工程(Foundation Engineering)。 > 因为所有的开发,从瓦特那台调速器到今天,从来都是一件事——打地基。 AI 没有改变这件事,AI 只是把地基之上那座楼,盖得快到了拉条狗都能盖的地步。于是地基本身,第一次,变成了唯一要紧的东西。 就像我在《去他妈的 Harness》结尾说的:你践行了一件事很久,被验证有效,就该给它起个名字,大声说出来——命名权永远属于先开口的人,你不命名它,别人迟早命名它,而你的名字不会在里面。但在开口之前,先做出来。做出来的东西,比任何名字都更有说服力。 我已经做出来了。它叫 TSC,叫 OpenTSC,叫那条跑了一整夜、天亮还在跑的循环。今天我把名字大声说出来。 最后,留一句话给正兴冲冲要去搭 loop 的你。这是这整篇两万多字,我最想你带走的: > 去搭你的 loop。但要像一个打算继续当工程师的人那样搭,而不是像那条只会按"开始"的狗那样搭。 > 区别只有一个:狗按完开始就走开了;工程师按完开始,会回头看一眼那块地基,问自己一句—— > "我还读得懂,我自己脚下这块地基吗?" 读得懂,你是立法者,是握剑的人,是那缕没睡着的魂。 读不懂,你是人质,是操机崽,是和机器比谁更像 NPC 的那个输家。 loop 替你跑,地基替你扛,tsc 替你执法,九层传感网替你守望,魂替你记得你是谁。 而那句"什么算对"——它替不了你。 它从来,只能是你。 > 构架师系列 · 地基工程篇 · 完 > 出品:dashen.wang —— AI 时代最严厉的那个父亲 > 上一篇我送走了 Harness,这一篇我送走了 Loop。下一篇,我带你把"判定下沉"真正跑起来,一层一层,把你脑子里那部法,压进机器。 ## 相关链接 - [AI最严厉的父亲](https://x.com/dashen_wang) - [@dashen_wang](https://x.com/dashen_wang) - [31K](https://x.com/dashen_wang/status/2069293474206376042/analytics) - [dashen.wang](https://dashen.wang/) - [user.name](https://user.name/) - [dashen.wang](https://dashen.wang/) - [1:36 PM · Jun 23, 2026](https://x.com/dashen_wang/status/2069293474206376042) - [31.7K Views](https://x.com/dashen_wang/status/2069293474206376042/analytics) - [View quotes](https://x.com/dashen_wang/status/2069293474206376042/quotes) --- *导出时间: 2026/6/23 21:38:32*
重 重新定义 AI 交互:Skill 工程化实战指南(一) 文章指出传统 Prompt 工程在规模化、持久化和稳定性上的局限,提出了“Skill”概念。Skill 将系统提示词、入参 Schema 和执行逻辑封装为可复用的“AI 函数”。文章对比了 Skill 与 Prompt、MCP、Agent 的区别,并介绍了基于“渐进式披露”的三层交互架构,旨在用软件工程的严谨性提升 AI 应用的可控性。 技术 › Skill ✍ 老金🕐 2026-04-29 AI工程化PromptSkillMCPAgentSchema架构设计LLM开发指南方法论
解 解剖 Skill:Skill 工程化实战指南(二) 文章深入剖析了 AI 编程中 Skill 的内部结构与生命周期。作者指出 Skill 不仅是高级 Prompt,而是包含元数据、入参结构、核心提示词及执行器的标准件。文章详细解释了 Skill 从注册发现到意图匹配再到沙盒执行的全过程,并提出了判断何时封装 Skill 的三个标准,旨在帮助开发者通过工程化手段稳定 AI 输出。 技术 › Skill ✍ 老金🕐 2026-04-30 AI工程化LLMClaude CodeSkill代码审查Agent开发工具技术原理架构设计Schema
R Run Your Harness Outside of the Sandbox (Why and How) 本文探讨了2026年以来关于Agent运行位置的争论,指出行业趋势是将Agent运行在沙箱之外。作者详细解释了沙箱内运行的三个主要问题:爆炸半径、信任边界和沙箱的间歇性运行,并提出了将沙箱作为工具暴露的正确架构,最后提供了基于Vercel AI SDK的实现示例和生产环境中的挑战。 技术 › Agent ✍ Nathan Flurry🕐 2026-07-28 Agent沙箱架构设计DevOps后端LLM安全性生产环境Vercel AI SDK状态管理
浪 浪费20亿Token之后,我做了一个帮自己定义目标的Skill 作者分享了一个名为Leader.skill的开源工具,旨在解决Agent交互中目标定义模糊的问题。该工具基于“目标七问”方法论,将模糊需求转化为清晰的目标任务书,支持多模型组合(如Claude规划、GPT执行),显著提升长程任务的完成率与Token利用率。 技术 › Skill ✍ 数字生命卡兹克🕐 2026-07-27 AgentGoal Engineering目标定义自动化开源LLM效率工具方法论ClaudeGPT
G Graph Engineering:从 0 到 1 小白完整教程 文章介绍了 Graph Engineering,一种通过流程图协调多个 AI 协作完成复杂任务的方法。它将复杂任务拆解为节点、边和状态,解决了单 Loop 应对复杂任务时的局限性。文章详细解析了 Graph 的核心概念、与 Loop 的关系、四个核心模块及具体实践模板,并提供了新手学习路径。 技术 › Agent ✍ Adrian Punk🕐 2026-07-27 Graph EngineeringAgentLLMAI 协作工作流Loop Engineering教程节点设计状态管理AI 架构
A Agent工程架构解析:Harness、Loop与Graph的区别 本文深入解析Agent工程中常被混淆的三个架构层级:Harness工程构建模型运行环境与基础能力;Loop工程设计工作反馈循环,通过验证与迭代提升质量;Graph工程则显式定义工作流拓扑,控制节点分支与状态转换。文章强调理清环境、反馈与流的关系对构建生产级Agent至关重要。 技术 › Harness Engineering ✍ beamnxw🕐 2026-07-26 Agent架构设计工程化工作流LangChainOpenAIAgent HarnessLoop Engineering
H How to master graph engineering 本课程教授如何构建 AI 智能体图,涵盖图的基本概念、关键模式(如菱形模式)、停止规则及人工审批环节。包含三个实战案例:深度研究台、SEO 内容生成器和市场推广套件,旨在提升业务效率并控制成本。 技术 › Agent ✍ Machina🕐 2026-07-23 AgentGraphLLMClaudeWorkflow工程化自动化架构设计效率实战
3 3 Years of Graph Engineering with LangGraph 文章回顾了 LangGraph 三年来的发展,探讨了将智能体系统建模为图(Graph)的实践与价值。作者分析了何时使用图结构以平衡确定性与自主性,并指出生产级智能体通常需要循环和动态转换。最后,文章强调图工程并非全新概念,但随着节点的进化,现在的图更多是在编排智能体而非单一的 LLM 调用。 技术 › Agent ✍ Sydney Runkle🕐 2026-07-22 LangGraphGraph EngineeringAgentLLM架构设计循环确定性工作流
G Graph Engineering 101: When a Loop Isn’t Enough 文章探讨了AI Agent从简单的ReAct循环向图工程架构的演进。循环模式在处理复杂、多步骤及需人工介入的任务时存在状态持久化、错误处理和分支逻辑的局限性。图工程通过显式的节点、边和状态管理,解决了并发、暂停恢复及复杂流程控制问题,为构建更健壮的Agent系统提供了架构基础。 技术 › Agent ✍ Alex Prompter🕐 2026-07-22 AgentGraph EngineeringReActLangGraph架构设计状态管理LLM
彻 彻底告别Loop Engineering:一文读懂 Graph Engineering 本文介绍了AI Agent工程从Prompt到Loop再到Graph的演进。Graph Engineering通过图结构重新规划任务关系,实现并行处理、明确依赖、隔离失败,从而解决线性流程在复杂任务中效率低、易失控的问题。 技术 › Agent ✍ AI超元域🕐 2026-07-21 Graph EngineeringAgentLLM架构设计Claude Code工作流并行处理Dynamic Workflows
S Spec 对话模板:你给 agent 发的第一份 8 项清单 文章提出了一种结构化的 Agent 沟通协议“Spec”,包含目标、完成标准、约束等 8 项必填清单。通过明确协议而非单纯依赖 Prompt 技巧,可显著降低 Token 消耗,提升任务一次性完成率,避免 Agent 猜测与无效返工。 技术 › Agent ✍ 龙鳞🕐 2026-07-19 AgentPromptSpec效率方法论LLM技巧模板Token沟通
L Let's build Claude Code's harness (step-by-step) 本文深入解析了Claude Code的“harness”架构,解释了为何简单的模型调用不足以构建可靠的代码代理。作者通过CrewAI框架逐步重建了包括核心循环、工具管理、规划机制在内的关键组件,揭示了通过工程化手段弥补模型差距的方法。 技术 › Claude Code ✍ Akshay🕐 2026-07-16 Claude CodeAgentCrewAIHarness Engineering代码代理工具调用LLM工程实践架构设计Context Engineering