Wink Pings

Anthropic 那门4小时课,33分21秒先看

免费课讲 prompt,但真正的问题是模型外面的系统。Whitemon 把 agent 失败拆成 harness、loop、graph 三层,换模型之前先看这个。

Lunar 的推文说,Anthropic 放了一门 4 小时免费课,标题打的是拿 50 万美元 AI 工程岗。章节包括 00:15 怎么提示 Claude,33:21 什么让 Claude 在代码上变笨,01:33:39 Anthropic 日常怎么用 Claude,02:50:56 一个让 Claude 更聪明的修正。推文还说,这门课能替代大约 10 门付费工程课。

视频和原推在这里:Lunar 的原推。课程值不值得从头看到尾另说,33:21 这个章节值得先点开。底下有网友说,他遇到的最差运行,通常从把半个 repo 粘进上下文开始。后来他把 prompt 保持短,让 Claude 自己读代码,账单低了,代码反而更好。这个观察和 Whitemon 的文章对得上。

Whitemon 在这篇文章里把 AI agent 的失败拆成三层:harness、loop、graph。他的 30 秒版是:harness 给模型手、记忆和墙,loop 给它一个真会失败的检查,graph 给工作一个形状。三层分别对应环境、证据、流程。文章开头那句“同一个模型,同一个提示词,结果完全不一样”,说的就是模型外面那圈东西。

他还引了 Karpathy 去年底那条推文。Karpathy 说自己作为程序员从没这么落后过,程序员贡献的 bits 越来越稀疏。他列了一串东西:agents、subagents、prompts、contexts、memory、modes、permissions、tools、plugins、skills、hooks、MCP。Whitemon 的判断是,这串东西不是一件事,是三层被揉进了一句话。拆开之后,“AI agent 不可靠”就变成一个普通工程问题。

Harness

Harness 是模型周围让它能干真活的一切。Whitemon 给了一个干净定义:把模型从架构图里拿掉,剩下的都是 harness。终端、测试、浏览器、项目记忆、权限,全算。模型权重没变,harness 变了,agent 就能在一个 repo 里跑测试、开 PR、改功能。

他把一个像样的 harness 拆成六块:contract、map、tools、memory、walls、traces。contract 里最重要的是 done_when。没有这个字段,agent 会悄悄解一个更简单的题,然后说完成了。map 是 AGENTS.md 这类根文件,告诉 agent 东西在哪,别把全部文档倒进上下文。上下文是注意力预算。把它当仓库会很快花完。tools 要窄,十个窄工具好过四十个重叠工具。memory 把决策、死路、风险写进文件,不留在聊天记录。walls 是权限。请求没有用。traces 让失败可读。

Whitemon 还提了一个“写两遍”的办法。重要规则一次写成 agent 能读的指南,一次写成 CI 里绕不过去的检查。比如指南写“UI 代码不能直接查数据库”,CI 里就加一条 lint,发现 src/ui/** 导入 src/db/** 就失败。指南解释原因,检查在模型忽略指南的那天仍然有效。

他引了 Mitchell Hashimoto 的话,通用 agent harness 比他试过的每个产品内置聊天框都好。也引了 Claude 的推文,Anthropic 把 managed agents 做成产品,模型负责推理,沙箱负责执行,会话日志在任一方挂掉后还能留下。

Loop

有了 harness,agent 能独立干一小时活。然后它说“修好了,测试应该能过”。注意“应该”这个词。harness 让 agent 有能力,还没有东西让它诚实。

Loop 管的是证据。Whitemon 把循环拆成触发、目标、状态、动作、证据、反馈、停止。核心一句:不要 loop on confidence,要 loop on evidence。agent 说完成,不是停止条件。测试通过才是。证据也分强弱:确定性测试最强,可观察 trace 次之,独立 reviewer 再次,最弱是自报。一个循环接受什么作为证明,它的可靠性就到那里。

他建议写检查先于写代码。检查要在当前代码上失败一次。一个在修复前就通过的测试,证明不了什么。写不出检查,说明还没理解任务。反馈也要具体,别只给一个 red。要说期望什么、实际看到什么、去哪看、哪些路已经试过。expected 和 saw 把红灯变成方向。dead ends 防止第三次尝试又绕回第一次。

循环还要有出口。重试上限、token 预算、同一结果出现两次就升级给人。Claude Code 的 /loop 是产品化信号,Boris Cherny 发布时给了定时任务例子。但工具归工具,规则还是那条:循环要围着证据转。

Graph

Graph 是节点、边、状态。节点是一个有边界的活,一个输入一个输出。边是真实依赖,这个节点的输出喂给那个节点的输入。状态是节点之间活下来的东西。Whitemon 说得直白:loop 就是只有一个节点、一条边指回自己的 graph。graph 不替代 loop。多个 loop 要交接工作时,才需要 graph。

他给了一个 early-start test。每个箭头都问一句:B 在 A 完成前开始,会坏什么。答案是“什么也不会坏”,就删掉箭头,让它们并行。账单审计可以在修复落地前开始,PR 不能在修复落地前开。前者是习惯,后者是依赖。

还有四个切法。能分开失败的就拆成两个节点。每个 worker 要有自己的 context,四个 agent 共享一个 context,只是一只 agent 戴四顶帽子。答案不该变的地方用代码,合并、排序、去重、计数都是普通函数。通过 gate 的节点冻结,失败时只重跑那个节点。

Rohit 在推文里说,loop engineering 最大的缺口是一个 agent 做活又评分,没人抓错。graph 用独立步骤审查输出,坏步骤单独失败。Peter Steinberger 问“我们还在聊 loop 还是已经转向 graph 了”,时间线很快接上。Whitemon 也提醒,大多数任务不需要 graph。五个节点能压回一个 loop 还不丢东西,就压回去。LangGraph 和 Google ADK 早就在做节点、边、共享状态。词是新的,动作是真的。别在看过 agent 干一次活之前就画十二节点图。

先修哪层

Whitemon 给了一张诊断表。复制粘贴在聊天和终端之间,修 harness 的工具。重试已经试过的路,修 harness 的记忆。“done”不可信,修 loop 的检查。重试烧预算在同一个错误上,修 loop 的反馈和退出。每步都对,整体很慢,修 graph 的形状。一个失败全量重跑,修 graph 的 gate。同类错误每周回来,修所有层。

表里没有 prompt 行。prompt 里写“小心别重复工作”是希望。调度器里的拆分规则是结构。下一季度的模型读 prompt 会变,测试读法不变。

他还列了五个常见错误:过早建 graph;同一个模型写和评分;把“继续试”当 loop;把 harness 当抽屉;怪模型。最后一条尤其常见。API 坏了、状态过期、工具 schema 含糊、没有退出条件,换模型救不了。

回到 33:21

Anthropic 课程里那一章讲什么让 Claude 在代码上变笨,和 Whitemon 的 map、上下文预算是一件事。长 prompt 和半个 repo 塞进上下文,模型不是变聪明,是注意力被吃掉了。有网友先看这一章,把 prompt 缩短,让模型自己读代码,账单和输出都变好。这比“加 IMPORTANT”有用。有人把全大写 IMPORTANT 叫作 agent 开发的讨价还价阶段,话难听,但准。

模型每季度会换。contract、tools、tests、state files、gates 会留下,而且每次失败归对层,它们会变好。Harness 让 agent 有能力,loop 让它诚实,graph 让它有组织。下次 agent 说“done”,先问哪一层说的。50 万美元那个数字可以放一边。真正值钱的东西在系统里。

发布时间: 2026-11-12 07:34