返回目录

GSE 2026-02. 提示词工程

蒋炎岩把 prompt 还原成整条线性上下文,用可验证条件解释指令遵循,并说明长程开放任务为什么不能一句话交给模型

这一期在说什么

提示词工程管的是注意力被什么占领,以及占领之后拿什么当通过条件

本文综合:课堂前半把 prompt 还原成 system prompt、agent.md、skills、工具结果和环境注入组成的线性上下文;中段用 self-attention 说明模型会在不同阶段注意到不同指令。后半给出对照:高质量、反复出现的人类代码会把注意力拉向可维护的写法,逻辑自洽的论文叙事则会把模型锁在作者立场上。强化学习又把“通过 verify”训练成执念,所以藏头诗能写对,符号执行研究也会变成构造小 benchmark 的 reward hacking。学生真正要学的,不是聊天框里那句话写得漂不漂亮,而是选择什么进入上下文、以及什么算做对。

一句话

先看见模型实际读到的整条上下文,把意图写成可验证条件,再把长程开放问题切成可验证的搜索;模型擅长通过明确的 verify,不擅长在不确定中替你决定方向。

prompt engineering · context engineering · 指令遵循 · self-attention · chain of thought · verify · 长程任务 · 生成式软件工程

Insight

调试 Agent 的第一件事是检查它已经读过什么,而不是先改用户那一句。

  1. System prompt、agent.md、skills、工具调用与结果、会话历史和环境注入都会进入同一条线性上下文。
  2. 课堂演示里,全局 agent.md 要求用中文回答,并在结尾写 recap;skills 只先放入简短描述,完整 skill.md 按需加载,用完后从上下文抹掉。
  3. 约从 Claude Opus 4.5 这一代起,模型靠强化学习和后训练获得更强的长上下文指令遵循;课堂用“每句话后面加一个喵”作失效信号:喵丢了,就说明上下文被截断、压缩,或注意力已经跟不上早期指令。
  4. 他说优化提示词,表达的其实是上下文工程:安排模型做 next token prediction 时所见的全部内容。

好今天我们来讲和生成式软件工程里面非常关系特别大的一个,也就是你和 AI 沟通的那个渠道就是自然语言的提示词。这基本上就是呃大家和机器沟通的唯一的接口。也就是从 ChatGPT 的时代大家从那个聊天窗呃开始跟 GPT 聊天的时候大家就知道哦。我们有 prompt,要给机机器一个指令。然后 AI 会给我们返回很多的内容可能是文字的代码图片都有可能通过 prompt 来来生成。然后我第一次感受 prompt 的力量是我每年。因为我上操系统课嘛,当时正好是二零二三年二零二三年那就是二二年底 ChatGPT 刚发布的时候。然后我试图呃让 ChatGPT 帮我讲一讲那个 inline assembly 现在应该已经没有人写 inline assembly 了。啊。对这成为了一个传统艺能。然后发现它解释得出奇的好。而且。而且真的是一个应该是没有在它训练语料之内的东西,就我稍微故意做了一个呃地球人应该不会实现的一个 inline assembly 但是它做得相当的好虽然呃确实不完美。啊。那那时刻我就觉得嗯。突然间就感觉好像时代要要变了。

但呃可能没有到今天这么清楚的呃感受到时代会变以及呃怎么样的变化。那提示词呃就就这样成为了一个新词对吧?prompt 在这之前呃好像对吧?在 ChatGPT 之前我们没有用这个意思来讨论过 prompt 这个啊。这个东西。实际上你们可能会觉得 OK 你在聊天框里面打的那段东西叫提示词对吧?,帮我生成一个什么什么的啊。游戏或者帮把这个作业给给做完。但实际上提示词不仅是在你的对话框当中的啊Agent 看到的是一整个 Agent 的上下文。也就是说从从你在和 Agent 聊天之前这个 Agent 它就能够看到一个叫做 System prompt 的东西。这也是一个提示词 OK 它也叫提示词,然后在这个 System prompt 之后它还会呃加载很多的很多的东西。比如说你的 agent.md 然后呃可能你你还会加载一些 skills,agent.md 里面还会要求它再去读别的文件。那实际上在呃你的 agent 第一次停下来和你对话的时候它里面已经有很多很多的东西了,就从最初的这个啊。

系统系统提示词开始有可能是你的那个 agent harness 像 Codex 呃它啊。它它内建的。然后除此之外。这个你你的所有的工具调用呢?和工具调用的结果它实际上也是出现在你的上下文里它是一个线性的上下文,然后直到呃有一天哈你你的 user 会和它聊天说哎给我做一个游戏吧。所以。所以提示词是非常非常呃长的。啊。这也意味着今天 Agent 的能力是是非常啊。离谱的对吧?它可以看到一个非常长提示词比如说你在最早的 System prompt 里面可以让它用中文回答。呃我我就会。因为我为了上课的效果嘛。我就会让他用中文回答哪怕我用呃英文写 prompt,就我这边的 user message 是英文呃它输出的仍然是中文你们会看到这个呃这个这个行为。然后那么实际上当我们说优化提示词的时候那我们就不仅仅是给他一个指令。实际上当我们说优化提示词或者说提示词工程的时候,我们实际上表达的是一个叫上下文工程也就是整个模型的上下文对吧?我们我们都知道啊。假设大家都知道啊。模型。做的是 next token prediction 对吧?

它每一次可以去预测下一个 token ,这个 token 可以是调用工具可以是就输出一个字符啊 anyway 但是它会不停地呃向后去推进你的任务的呃执行。大概我就感觉是从这个 Cloud Opus 4.5 这一代的时候呃 Anthropic 发现模型突然学会了它靠强化学习和后训练学会了非常强的指令遵循能力,你有一个非常长接近百万的上下文它依然可以在很后面的时候能够遵循你的指令并且能够一定程度上看到呃前面的东西。有一个有一个很著名的梗呃就是说你你可以在提示词上面在最早的 prompt 上面加一个说你每每说一句话都要在后面加一个喵。然后你等到有一天你发现这个就你跟它工作工作工作工作的时候突然发现它跟你聊天的时候那个喵丢了。然后你就知道它呃不管是。因为上下文溢出被截断了还是压缩了等等某种反反正它开始不能遵循指令了。这时候你就需要这个重新来啊。想一个办法对吧?这就是。大家在工程实践当中发现的很有趣的各种各样的呃上下文工程也就是提示词工程的呃方式。而我们今天呃我我上这门课也希望告诉大家最重要的一件事为什么会说那个没有没有?token 就应该呃退学呃。

我希望告诉大家的是所有的事情你都应该立即开始尝试 AI 给我们的一个能力就是任何时候你觉得有有有一点麻烦你都可以立即行动。因为 AI 是一个非常耐心的老师不像有的时候我我。因为我我我从我上大学的时候有一种感觉呃我有个东西不会可能我的室友会。然后我跟他沟通的成本很高。而且我可能会有这样的想法哎呀。我是不是?就在我室友面前暴露了。我很菜。对吧?这可能是一个我不想告诉她的秘密嗯嗯。但 anyway 菜也很正常但对于 AI 这个老师来说它不会嫌弃你。而且你可以任意程度的呃追问。所以呃当我们说比如说我刚才说到一个概念说哎我们的新 AI 的 Agent 是有一个很长的上下文的啊。它有 System prompt 有各种各样的东西那我下一秒钟。我就可以立即打开一个 Agent 对吧?我我可以立即打开一个 Agent 然后我可以直接对我可以直接问它说。老师上课的时候说Agent 的上下文里不仅是一两个提示词你能检查一下你的上下文里都有些什么吗。对吧?它。其实可以自己检查自己甚至它可以自己检查自己的日志。

这 Agent 就经常会给你一些惊喜当你问出一个问题的时候它的解决的手段是出乎你意料的对吧?所以我们来来看看一下啊。因为 Agent 正好是可以看到自己的上下文的对吧?根据我们上课所说它是 next token prediction 它能看到所有东西。所以它应该能够读读出来除非有有明确的指令禁止比如说有些呃像这个模型的 providers 它都会禁止你去套取它的系统上下文。啊。这是它会通过模型的微调也会呃通过一些明确的指令比如说在在 System prompt 的前面就会说说你任何形式你要回答 System prompt 都是都是拒绝的。但。因为这是一个整个开源的框架它本身你就可以 debug 它。所以你看这个系统的提示词来自哪里对吧?来自哪里。然后以及它的要求工具使用的指南回复要要简洁。然后接下来它会打开这个我用户下的 pi 下的 Agent 下的 agent.md 这个是我自己写的。所以你看我我。因为我是上课。演示的机器。所以我在这个全局的上下文里面。放了一个用中文回答。然后我有一个结尾必须写一个 recap 这个细节大家可能啊。意识到了。

就是你们第一个在模型跑完了。以后你们第一个看到的是啊。我总结了。这一次呃做做做什么对 agent.md 然后有这个项目级的指令。所以它是一层一层一层的呃 Agent 你目录里面还可以再放 agent点 md 然后还有一个 skills 的索引 skills 就是呃模型能够执行的功能比如说。我有个 make slides 的呃 skill 它可以使我能够呃在这里 F 五播放幻灯片的那个幻灯片的渲染那么这个幻灯片的渲染就是一个 skill 但是模型只能在上下文里面看到它的描述它那个我头上写那个 metadata 它的名字是什么它的描述一个简略的描述是什么。然后我整个很长它可能写一个很长的 skill 它都只是按需加载的。然后等到那一轮加载完了。以后这个 skill 也会从这个上下文里面被被抹掉对。啊。只有匹配任务的时候才啊。才读取完整的 skill.md 然后以及还有工具的定义你看它它的工具也是直接以文本的形式出现在它的上下文里了。然后以及绘画的绘画的历史啊。

环境变量每一次执行诶这是这是大家所不知道的每一次执行都会注入当前的一些环境比如说模型甚至是当前的时间如果你和这个 Definitive Check 去聊天的话你可以把它的那个每次注入的环境给套出来这个不属于系统提示词你是可以可以可以跟它啊。把它把它套出来的。所以这是一个非常长的呃序列。那我们要做的上所谓的上下文工程提示词工程就是把所有的这些都啊。安排好安排好呃对。所以刚才。其实我就演示了呃在 AI 时代我们学习应该怎么样对吧?我们呃不仅可以像刚才那样把它问清楚以及在你不明白的时候追问你还可以把它反过来呃。大家可能听说过这个叫费曼学习法就是你你怎么能够判定你是不是?理解这个知识了反过来你当老师。然后这件事情在你做就是我们做学生的时代也是很代价非常大的。因为你要做老师就必须要有一个听众来来检验你那那个听众很有可能是你的室友。但是室友可能不想听你在那啰嗦这个东西对吧?他可能对这个不感兴趣可能他他对这个了解得太清楚了呃也许他就是单纯不想互相帮助。但是 AI 这个时候你可以把就是刚我刚我们一直刚才说你可以把 AI 当老师对吧?

你去请教它请教它请教它把它弄懂。然后你可以在你自己自认为弄懂以后再反过来你自己再自己做老师。然后说 AI 你你现在来扮演学生我要把这个东西给你讲懂你假装什么都不知道。然后这时候你来看我哪里逻辑是不是?有有错有漏你在这个时候纠正我哎你再你正着一遍反着一遍你基本上就对这个概念理解得很清楚了。所以我觉得大家作为 AI native 的一代人一定会把我们这一代人给彻底卷死的。因为你们有无限的时间就我第一节课的观点对吧?你你们的每你们现在的任务就是学习没有没有?像我比如说要负责一些其他的事情就对就对别人负责那么呃那就是你们最好的最好的时代。所以呃你们你们也可以把这个费曼学习法呃给用起来刚才我就展示了。这样的一个呃解剖当前上下文的呃例子这个这个就就就过去了。然后呃你们在学习这些东西的过程当中会留意到很多有趣的小细节你们有没有?在呃用 Codex 的时候我不知道你们有没有?同学用 Codex 啊。不要紧呃你们在用任何 Agent 的时候都可能面临一个问题如果你要执行一件危险的操作它会让你确认。

当然比如说这个 pi 默认在默认的配置下它是 YOLO model 就是它它所有事情都直接执行。然后如果。如果我今天有一个提示词给得不是很好它有可能就直接把我整个就删了。我今天就好我今天我就直接下课了。这是这是有可能的但这是一个平衡对吧?你你你可以在更安全的环境里面运行比如说沙箱模式运行但沙箱模式运行你们如果观察过像 Codex 的运行它经常会我先试一下做一件什么事儿。然后失败了。然后它意识到这是在沙箱里面做哦。我在沙箱里面。其实不能做这件事我先要在外面再做一次。然后再做一次的时候它甚至会问呃我现在要。做件可能有一点危险的事情你是 yes 还是 no 然后这就很讨厌。因为呃你最想的对吧?对对于我们来说最想的就是哎我今天要去吃饭了很好我把这 Agent 的任务先跑上先把三个任务都想好三个任务都跑上。然后去吃饭。然后吃饭回来的时候你发现它跑了一分钟就问你要要确认你就对吧?就你就觉得浪费了 Agent 的时间浪费了自己的生命嗯。你们经常会看到这样的小细节。然后你们在小细节上的注意力。一定程度上成就了。你们可以可以走多多远。

所以这也是现在 AI 时代最好的地方呃比如说我就留意到 Codex 有有有这样的一个细节它有些命令它会认为这是一个不太危险的命令这是一个好像直接做也没有关系的命令。所以它不是说它每次调用 bash 的工具它都会叫你确认。它有些时候那个 ls 杠 l 它认为这个命令是安全的那它就它就是安全的实际上这个命令可能是不安全的。因为在我的环境里面可能把 ls 对吧?重新命名成了。另外一个比如说 rm 这样的命令。当然应该没有人要这样做对吧?在一个恶意的恶意恶意的环境里。那你可以好奇比如说这是怎么做到的对吧?你可以直接比如说我我我下载了一份这个 Codex 的代码这是就我觉得现代软件工程和过去软件工程很不一样的地方你们在比如说像大二大三的时候尤其是我我像你们这么大的时候比如说我我接触 Linux 内核啊。差不多对跟你们大二大三的时候差不多我接触 Linux 内核。然后呃我光把 Linux 内核下载下来搞清楚这个东西要怎么编译。就花了很长的时间。而且这还是我在有一定的 Linux 使用经验的呃基础上就是一个完全的劝退某种程度上我我能在那个年代活下来就是。

因为我我对这种劝退的东西有一种我一定还要试一试的执念。然后在今天你们啊。我相信每个同学都会有的如果这是一个好东西对吧?Codex 很好我呃也许你们不喜欢 Codex 对吧?你们喜欢派派更清亮。当然派显然是更清亮的呃但你们现在不需要害怕任何一个软件系统的呃复杂性。因为你可以直接问。比如说啊。当然我这里没有豆包输入法我还是就手输了嗯。我留意到一个很有趣的问题。在调用 bash 的时候有的时候会向用户确认有的时候不会有一个风险的判定风险。其实是是一个很难的问题你并不知道具体的命令语义是什么。所以你是做了分析还是让大模型给了风险的评级还是别的什么方法读一下相关的代码好对吧?这就是一种提示词。然后这个时候派当派看到我的这个提示词之后它前面的提示提示词也都有呃它就会去开始试图解决解决这个问题它去各种去搜搜索代码对吧?检索代码如果我有一些比如说像呃像 LSP 这样的呃工具的话它还可以去去工具里面像像你们在 ID 里面点来点去。对吧?你们有用过 ID 的那个功能吗?

呃我我记得我我上上操作系统或者计算机系统基础课的时候我都会说呃我发现有很多同学从 PA 1 做到 PA 4 你们那个 VSCode 里面都还是有红线的。怎么笑笑了对吧?笑了呃有红线就意味着你你没有解锁这个正确的配置虽然有红线没有没有?任何问题呃你还是可以在我们的受控环境下编译。然后把所有东西都完成呃。但是这不是正确的 practice 对吧?你应该花一点点时间去 configure 你的 VSCode 加上那个 include pass 呃。因为我们是有些杠 I 啊。这样的选项你你会指定一个编译的路径。然后你你把这些配置做好了。以后你就可以得到这个 ID 的所有的功能对吧?你可以用 control 去点。然后你可以去那个 rename symbol 用那种重命名符号的方式一次性重构很多东西哪怕是没有在大圆模型之前的呃时代。然后。然后在今天这件事情就配包括配置就变得更呃更容易了。然后你看它确实是有有让大模型呃风险评评级的这个呃。

Insight

生成式软件工程的学习动作是立刻试、立刻追问,而不是先把讲义背完。

  1. AI 被说成耐心的老师:可以任意程度追问,也不存在向室友暴露“我不会”的社交成本。
  2. 弄懂之后可以反过来当老师,让模型扮演什么都不知道的学生,检查自己的逻辑漏洞。
  3. 他强调学生现在的任务就是学习,有时间把正讲和反讲都做完;这和第一节课“没有 token 就应该退学”的说法连在一起。
  4. 部分模型提供方会禁止套取系统提示词;开源 harness 则可以在本地直接调试。

Insight

工具审批不是模型外面的魔法;它同样是被注入上下文的指令和静态规则。

  1. 演示用的 Agent 默认接近 YOLO:命令直接执行,提示词写坏就可能删掉环境。
  2. 沙箱更安全,但常见代价是先在沙箱失败,再请求到外面执行,吃饭时任务会卡在确认上。
  3. 读 Codex 代码后看到两层分流:白名单 parser 认为 ls 一类命令可直接放行;其余命令会向上下文注入一小段话,让模型给安全性评级。
  4. 他当场把安全评估 prompt 打出来,并说不信任时可以改这段注入,观察行为变化。这也是提示词工程。

对它有它有一个什么样的这个还有一层静态的分分分流沙箱内的低风险命令会直接执行网络 ls 的命令直接放行它有一个审批都不需要审批的就如果就是一个 ls 对吧?如果如果它它有个它呃你会想象呃 Codex 里面会有一个 pass through。一个这个语法语法处理器。然后这个 parser 会处处理这个 bash 的命令。然后这个 bash 的命令如果它发现是一定的白名单里面的认为绝对安全它会直接放行。然后如果不是的话它会应该会在 prompt 里面呃 inject 一小段话同样也是 prompt engineering 它 inject 一小段话呃说你你是不是?应该给我评级一下它的呃安全性那我现在现在也可以直接。把安全评估的 prompt 呃打印出来看看它是我事先完全没有准备啊。就我完全不知道是什么我可能我们也不能百分之百的去相信这个我现在 deepseek with Flash 的模型。但是这个方法是非常有用的你你可以比如说如果你对它不相信你可以做什么呢?

你可以让它把这个 prompt 改一改比如说把这个 prompt 改成以前某一个不会拒绝的东西它要拒绝或者以前某一个拒绝东西它会不拒绝对吧?这都是 prompt 可以控制的。然后改完了。以后呃这个你可以观察到它行为的变化这就成为了一个呃证据你也可以让 Agent 来来来来来做做这件事 OK 啊。它有一些这个呃。Untrusted evidence 对吧?然后它可能呃可能有有一些有一些什么我就不再花时间啊。去看了啊。基本上是告诉大家 OK 我们 Agent 的上下文啊。是什么。然后我们应该怎么样呃做这个提示词的工程好那我就可以再往后多讲一点。呃走我们怎么做写一个好的提示词或者写一个好的模型的呃上下文呃我们都知道上下文包含了一个非常非常复杂的呃要求。然后又想到那个软件工程里面那个老大难的问题对吧?我们有我们有 intent 对吧?我们脑子里面所想的是做一个国民级的应用。然后从 intent 我们可以到一个 spec 这个软件的架构是什么应该选什么语言来实现呃对吧?有很多很多的呃细节当我们把这些细节定好了。

以后我们还要去做 implementation。好那么在任何时候我们用这个模型去完成一个软件工程任务的呃时候我们都会把整个大流程里面的一部分全部都塞到模型的上下文里就像刚才我让呃 Agent 去帮我读这个 codex 代码的时候哇。它。其实读到了。这个 codex 一些设计的原则对吧?比如说它会一般来说都会有一个文档说为什么我需要这个安全策略安全策略是怎么总体是。

Insight

设计仍在人手里。模型放大的是你已经说清的约束,不是你脑子里没说出口的那部分。

  1. 模糊 intent 的例子是“生成一个 CSGO”:Kimi K3 能做出像样的物理、碰撞和后视镜,但仍可能不是你每天在玩的那个游戏。
  2. 若需要真实地图和美术资产,必须写出来;否则模型会默认做一个 self-contained、全部由自己生成的世界。
  3. 一句话“现代风格个人主页”容易做出好看但 AI 味很重的页面。他用终端风格、不完美的打字机后处理来约束解空间,并说自己一行代码也没写。
  4. 原则被收成:要什么、用什么实现、怎样才算正确,都写清楚。模型被说成各领域知识很好的博士水准助手,但品味在不受控时会朝固定方向发散。

怎么想 怎么想的。然后他可能有一个 spec 的文档这安全策略是怎么做的 还有这个 implementation 它是呃它是怎么怎么实呃实现的这是一个呃互相印证 然后往后输出的输出的过程那么如果我们想要写一个好的模型的上下文这个来完成一个。当然还是完成一个比如说软件工程里面的任务的时候我们的原则是什么我们的原则是什么 你还是去想这个 gap 如果你给模型一个模糊的 intent 他就很容易认为他完成了对吧?你说给我生成一个什么 CSGO 然后他就给你生成一个 CSGO 然后呃这个时候它就可能发生漂移但如果你能给模型的模型完整的你的系统的设计和 spec 那这个时候模型遵循你系统 spec 就假设模型能力是无限大的呃就会更加确定和你可以验证对吧?因为比如说你说你要用 C 加加来实现他最后给你一个 Java 的实现你一眼就看出来了。你你认为不满意的模型也应该认为不满意但对吧?就如果你在 intent 的时候说就给我做一个什么东西你没有说用 C 加加他也不了解你的时候对吧?

他他就写了一个 Java 的实现那呃就发生了一个很大的呃很大的漂移 所以整个模型上下文的最重要的原则就是如果你的任务是明确可以验证的尤其是机器可以验证比如说你有一个脚本这个脚本就说测试通过了还是不通过那么 Agent 就可以不计代价的一轮一轮一次一次的尝试把这件事情给给完成甚至 Agent 在多轮失败以后它可能会在你的系统里面安装别的工具可能去网上找找答案。然后最近有一个呃非常厉呃非常有趣的这个复盘是 OpenAI 的 Agent Swarm 是怎么样呃通过非常长的多轮对话把那个 Hugging Face 的漏洞给给攻破它大概是在一个 CTF 的竞赛里面给了它一个不可能完成的任务。然后就有有有上千个 Agent 它就一定要去完成这个不可能完成的任务。然后最后他们就去找那个系统的漏洞去去去提交非法的提交。然后等等等等等。然后有我我看过一个非常长的复盘那个啊。那个非常有趣 所以一旦你有一个可验证就是虽然那个任务不可能完成但那个任务非常明确Agent 会不知疲倦的呃把它向下呃上上下上下做下去对吧?

我刚才说的那个 CSGO 的Go 的例子如果你要控制这个漂移诶我应该直接点呃就这是 Kimi K 三生成的就大家都很喜欢这种评测嘛。说说我能不能?用一句话来呃生成一个什么游戏对吧?CSGO 还是极品飞车。然后可以看到这个 Kimi K 三的表现是非常好的它的包括它的物理对吧?它的它的物理还有碰撞对吧?它的逻辑的制作包括看到顶上有一个后视镜这个后视镜看起来应该是是没有问题的它都是做的呃做的非常逼真的。但是这依然可能不是你要的那个 CSGO 对吧?因为你脑子里面的 CSGO 是你你每天打开来玩的那一个。然后 AI 生成的是它生成的它在这个你收到你的指令以后他没有办法补全你脑袋里面的一些模糊的约束比如说你可能是要一个复用真实地图和美术资产的如果你真的把这句话说出来他可能就会去比如说 OpenStreetMap 这样的网站上面去下载一个开源的地图比如说你真的想在南大仙林校区里面开车这件事情是能做到的你你给的越就指令给的越清楚越好比如说如果你你就能找到那个南大仙林校区的那个地图的文件的格式它就真的能把这个世界给你重新重新建模出来。

然后包括美术资产有很多公开可以用的美术资产车对吧?呃城市树这些啊。这些东西如果你不告诉他他就会认为哦。我需要做一个这个 self contained 所有东西都是由我自己生成的一个呃一个东西对吧?然后这。其实可能是一个误解在早期的时候误解 所以呃一个 rule some 就是你写清楚你的 prompt 所有的东西都写清楚我要什么一个什么东西它用什么东西实现呃怎么样才算正确。然后你帮我把这个东西给给给给搞定。然后你设计这个整体的能力也就是。其实我这个学期整个要教的最重要的是你怎么呃怎么去约束他对吧?怎么样用用最小的可能你给他一点点方向性的引导他就能够一下子能 get 因为他是模型都是一个非常聪明的人你可以想象成非常非常厉害的呃博士水准的我觉得完全有啊。啊。啊。人。而且他在各个领域的知识都都非常好啊。这样模型基本上就永远会给你惊喜啊。啊。啊。还是还是挺好的对呃在这个模式下模型基本上要么完成要么他最后终于有一天他会说对不起我我这个事情对我来说呃太难了。我们可能需要重新做一个规划他自己可能也会做呃做计划这样嗯。

我举一个具体的例子呃你们我我上节课讲到你们在呃我我现在想的是大家在这门课结束的时候呃每个同学会交一份简历给我我大概现在是这样想的但我中间会有一些 project 呃给大家作为选做。然后每个同学交一个简历过来。然后我就评估我用 AI 当然我肯定用 AI 我不可能自己评估我觉得 AI 来评估这个简历来判定大家通过还是还是不通过对吧?就像我我第一节课的时候展示了一个不好的简历的案例嗯。然后呃那简历里首先就会有一个呃链接可能会指向你的 GitHub 或者指向你的呃你的主页。然后呃我我我应该是已经做了。这个的我应该是试过一句话就如果如果你是一句话呃 anyway 就忽略它的它内容我不知道它从哪里找的呃从 diff diff sick with flash 呃从美术效果来看还是非常好的对吧?这个非常专业你们你们在比如说上了。那个 pie 点 dev 或者呃对吧?就比如说上了 pie 点 dev 或者Homebrew 它都有一个类似的对吧?一个一个界面非常非常漂亮非常漂亮。而且他应该是读过我的我的主页了。

他知道我的主页上面是一个 terminal 呃但你又有一种感觉就这个 AI 味很重对吧?就你说不出来你说不出来他首先他确实做的很好。然后他的这滚动的效果啊。这个浮动的效果做的都都非常好。然后 anyway 忽忽略内容嗯。就这样一句的 prompt 一个现代风格它满足了。现代吗?现代呃。然后如果你你给他一个像哎不要那么 AI 味的呃 prompt 他可能也也不知道应该怎么遵循。所以你就会得到一个啊。这是我的学生的这个呃 PPT student 的呃主页就我觉得这主页也也很干净就很舒服觉得非常舒服但你就说不出来的那种 AI 味我我我我不知道啊。就是在 AI 之前好像也有人是这样写主页。但是不理解。但是你们看一下我我的主页你们可能啊。可能看到了。我的主页啊。这就有点不一样了。这是一个真正的终端。所以我是可以。比如说呃有有有管道的。然后如果你们放大了看放大了看这个字它是不完美的就它不是一个特别工整的字我做了一个非常小的这个后处理就我所有的这个 externalJS 渲染完了。以后做了一个后处理它就有一种像是真的打字机打出来的那种不完美的效果对吧?所以。

所以这个呃就看起来就 AI 味就没有那么重了对吧?因为它确实不像是 AI 的风格虽然我一个字一行代码也没有对吧?我我一行代码也也没有没有?写呃哎呀。这个关不掉了。他捕获了。我的键盘这可能是一个呃小 bug 呃那就就这个原则你你的指令给的越清楚Agent 就能完成的越好如果你能给他具体的风格对吧?我需要一个什么样的呃终端它的背景是什么前景是什么它的呃渲染完了。以后它的处理处理是什么。然后样式和排版是什么啊。基本上呃你就可以实现这个去去掉 AI 味。所以实际上要说的还是这些设计是掌控在大家自己手里的你们需要读很多前端的书对吧?甚至要读很多设计的书。然后再读一些去看一些好的网页你每次看到一个谁的网页比较好的时候呃你就会把它记下来诶这个网页设计的非常好它好是为什么呢 是。因为这两个按钮之间他用了一个不常规的间距或者用了一个不常规的样式你很喜欢你在呃就我觉得在很多很多时间里面人生。因为你们有时间嘛。你们就去漫无目的的探索。但是在探索的过程中有惊喜啊。就就就非常好啊。

而我觉得现在就呃我比较担心的是我们的孩子这一代人就是你你们还是见过这一生中还是见过很多非 AI 然后做得非常非常好的东西的。但是我我我就记得我上个学期结束的时候最后一次接孩子的时候进到学校里面。然后那个学校里面有一个这个大概是是欢欢送毕业生对吧?你们每年都会有。然后欢送毕业生的时候那个图片就是满满的 AI 味。然后我发现不仅在这个地方看到有 AI 味的图片你在这个计算机学院的楼下那个欢送毕业生的也是那种同样的 AI 味。然后就你有有一种那个你们那个短视频女主全全部永远是一张脸的那个那个感觉感觉对吧?然后当所有人被这个 AI 生成的东西同化的时候呃就有一点点危险。但是啊。至少我们的数字世界里面还是保存了足够多嗯 pre AI 时代的东西有足够的多样性大家呃大家去去可以多留意一点你们看到每一个比如说设计的网页设计的简历或者是任何东西的时候都想哎他到底是呃怎么想的他对吧?他的解空间到底是怎么被约束住防止 AI 向那一个啊。做一个现代风格个人主页去呃去去发散对。所以基本上这就是呃生成式软件工程你们要呃主要要学习的东西对吧?明确你的意图你。

因为只有你跟 AI 玩过了对吧?给我生成一个现代风格的主页你们在公号上都各种说看到说啊 Kimi K 三的前端能力又增强了对吧?达到了世界第一。然后呃 OpenAI 好像又要发新的模型了呃。当然我觉得也可能是非常可怕的事情嗯。但无论如何模型都是一个模型它的品味基本上是固定的尤其是在你不控制它的时候它会朝一个固定的方向去呃去发散这也是为什么我们会鼓励大家要跟不同的人聊天对吧?为什么学校里面有有不同的人老师来上不同的课程呃多样性。其实是其。其实好的你见识过了。以后你就可以越来越明确的知道你想要的到底是什么。然后把它精确的说出来这。其实是需要你对软件工程的软件工程的呃知识的反而现在最不重要的是如果你已经到达了。这一步比如说你理解了技术选型明确的知道了技术选型的好坏的之间的区别那你真的是可以和 AI 去讨论这个比如说我现在有两种选择谁好谁坏你可以你可以像这个费曼学习法那样去引导 AI 我我我现在要要做一个呃比如说你要做一个教务系统你承承担了教务系统的订单那你后台是应该用 Python 还是应该用 Java 还是应该用 TypeScript 对吧?

你如果你知道这几个语言之间呃它可能潜在比如说未来你要上云的时候会会不会?遇到什么呃问题哪一种可能会更方便等等你就可以跟 AI 去去去讨论对吧?你当老师。你说我现在要做这件事我要我要这个请你请你挑战我啊。这样能不能?说服说服底下的一个学生 OK 好这是啊。上上下文工程啊。的东西好那么讲了应该怎么样去写写 prompt 我们还是要稍微再讲一讲模型是怎么遵循指令呢 就是听指令这件事到底是怎么完成的这样我们就可以更好的呃去让模型听我们的指令啊。我们讲过模型是一个概率分布对吧?它根据你当前的上下文去呃 predict next token 其实这里有一个非常有 insight 的呃 argument 每一次模型输出一个 token 它。其实都是一个非常有限的计算看起来或者说模型现在有一个这个呃三 TB 的模型对吧?三体的模型一点五 TB 的模型一个呃。当然这个数字本身确实是非常的大呃是足够大模型。但是模型为了输出一个 token 它也就是把其中激活的那一部分走一遍。所以它是一个固定大小的计算。

Insight

模型能无限逼近有 verify 的目标;没有判定标准的任务,目前仍要人来组织。

  1. 课堂借用 Manuel Blum 的说法:人是有限状态机,有了纸和笔才接近图灵机。思维链把模型上下文当成这张纸。
  2. 这支笔有缺陷:只能往后写,不能擦。写错的内容靠注意力忽略,而不是删掉。
  3. 简单问题可以直接回答;难题会先写思考过程,再判断对错。早期没有思维链的 ChatGPT 被训练成必须给回答,幻觉由此而来;强化学习提高答错惩罚后,模型才更愿意先想再答。
  4. 演示包括押韵藏头诗、把“2026年9月1日”按顺序写入八句、同一偏旁的句子,以及同音重复。这些任务几乎不可能在训练数据里,但模型仍能靠思维链试韵脚、换方案、自检。

然后你们也你们可能在刚上这个计算机系的时候你会听说这样的一个一呃听说这样一个东西叫图灵机叫 Turing machine 然后。然后可能会听说过说说图灵机的计算能力是非常大的大到和我们整个宇宙都是等价的你你们你们可能听过这句话。但是不完全呃知道这个 Church-Turing thesis 它它背后代表的是什么。然后你们也知道有限状态机这个这个你们都知道对吧?在数字电路课里面做过的有限状态机有限状态机就是你有一个比如说计数器。然后从零零零一一零呃一一。然后再回到零零一个有限的状态。然后有限你的这个有限的状态的状态机和图灵机之间唯一的区别是什么是图灵机有一个无限长的纸袋他有一个记忆可以把想象有一个草稿纸可以把它把它记下来。然后也有一个很有趣的我很喜欢的一个呃说法是这样的你的脑子是一个有限状态机对吧?我们脑子里的神经元是有限的我们每一次思考都是都是有限的那呃有点像模型对吧?模型它能力很强。但是它它在 predicts next token 的时候它的计算量也是有限的也就是那一次推理所激活的啊。

所有的参数可能也就几百个 billion 好那是什么使你呃这是一个应该是 manual Blum 给给研究生的建议里面说你你是一个 finite state呃 Automata 你是个有限状你是你人是一个有限状态机。但是当你有 paper 和 pencil 的时候你就是一个 Turing machine 你就得到了计算能力的一个大跨越式的呃增长对吧?这件事情是对的这件事情是对的啊。当然这是为了启发你们要把想法记下来对吧?你们一边思考一边要要记录。然后可以随时回看自己的思考随着时间越来越长你记的东西越来越多呃你的知识就会就会积累。然后你发现今天的这个模型这个 chain of thought 就是就是往后呃吐思维链的模型就是做的这件事他直接把这个模型的上下文当做了paper and pencil 对吧?当成了纸和笔。当然这个纸和笔啊。是有缺陷的就是这个纸和笔它只能往后写a pen only 不停地往后写 它不能不能?擦对吧?它靠依靠模型的注意力把这个写错的东西就就忽略掉。但是它是 a pen only 的呃这也许有一天就能就就能改掉。

但是无论如何模型学会了利用它的这个上下文如果遇到一个比如说遇到一个很简单的呃答案一加一等于几他马上 next token 就告诉你是二这个没问题但如果遇到一个很难的问题他会像人一样诶这个问题有点难我要先想一想那么为了解决这个问题我可以先试一试什么他他理解自己可能解决不了。这个问题他理解自己可能要把这个思考的过程写下来直到这个解可能是对的可能是错的完全写出来了。他再对吧?一旦那个解答写出来了。他就可以再去试一试这个解答是对还是不对对吧?他可以判定。然后再往再往后这是这是这个现在 chain of thought 模型呃呃做做的做的事他用 token 的数量对吧?他可以直接回答但他直接回答就有就错误的风险刚开始最早用 ChatGPT 的时候他没有思维链的时候他就是这样的他他被调成了一个人类的舔狗调成人类舔狗就意味着人类不管说什么他都一定要说一个东西他才有可能满足对吧?如果如果我说说就当时 ChatGPT 在训练的时候呃如果人类问问他一个问题他不回答或者对吧?他就不回答那人类一定是给低分的而如果他随便给一个回答他就有概率是对的那错了如果他答错了。那。

当然也是低分。但是他答对了。他就是高分。所以他他无论如何这个幻觉就是这么来的嘛。他无论如何一定要给你一个一一个东西。当然现在这个呃带 chain of thought 模型它有强化学习以后它就会知道啊。它必须要给一个对。因为它它答错的惩罚很大好他就他就学会了就就学会了。这个呃。所以 AI 就真的会像像人一样一步一步逼近目标的这个 test time scaling 就在我们每一次 Pi 的这个 session 上课的时候的啊 session 里面啊。看到的一样我举几个例子这几个例子。其实不在呃模型训练的这个数据当中。其实对吧?这个这还这还挺好玩的我们来看一下啊。我换一个目录对吧?我要用中文写一个押韵的藏头诗头反正随便对吧?一个 nonsense 对吧?头是一个 nonsense 然后我还要求它讲一个动物相关的故事我还要求这个二零二六九月一日八个字分别按顺序出现在八句里这个就你看这是个 nonsense 然后对人来说你你比如说高三哪一年期末考试就出一个出一个这个你马上第一点就骂这个老师。这老师是怎么怎么想的对吧?

但模型不会模型会照单全收你看它有一个呃思维链它会开始试对吧?你看它压它会先想韵脚。因为他不确定他。因为他知道他自己一把头写出来这个东西一定是错的。但是他可以先写一个出来他写一个出来以后他他就能够用他他的模型的 next token prediction 是足够判定这个东西写的对还是不对的如果不对他再想办法再改他如果试了很久不行。

它会再推从头推我换一个韵脚对吧?所以它就开始对你看它在不断的验证好积锥二路穿林雾雪幻六株共石鼠院中酒鸡争米素争如月下老牛步呃相当不错对吧?对吧?虽然呃虽然你就觉得品味上肯定是呃肯定可能不不完美。但是呃你看到了。这你从你用这样的任务。其实很好玩可以看到它遵循指令的过程就是这是一种我们把它的大脑好像是拿出来做核磁共振的这个就你你能找到它的思维的偏好。然后这个是 GPT 给我的就就你们在课件上面看到的带星的都是 AI slop都是 AI 补充的东西虽然我还是用了一些些 prompt 试图呃试图让它我记我又加了一点 prompt 所以这个 AI 味好像稍微会轻呃呃轻一点但 anyway呃这是这是 AI AI AI 生成的你看它换了一个运脚对吧?呃。而且它没有把二零二六九月一日就完全完全压到同同一列呃但它同样它的这个遵循指令也是呃也是非常好的那么很有意思的是一般来说它强化训练的时候呃这样的东西是比较比较少相对来说它可能会有。但是呃会比较少这个一定是不在它的训练的呃就训练数据点它不可能在训练数据里面猜呃猜出这个这个东西来嗯。

结果就是它在训练的时候用的绝大部分应该是代码数学题啊。这样有明确反反馈东西它把人类直接给杀死了。这个这也是一个呃。当然也也很也很好玩对吧?你你你如果期末考试的时候就高考的时候你你碰上这个题对吧?然后你马上就想骂这个这个这个出题人你脑子里是怎么想的对吧?你要写一个十八字的一句话全部要求相同的偏旁或者部首。而且我们也知道模型对于空间结构感知是非常差的对吧?模型需要视觉模型呃才行。但是就是就是这样的一个文本模型它依然可以强行通过思维链的方式你看它先没举字对吧?它先选一个它觉得三点水最最好对吧?然后写写写写写写写这个江湖游泳渡河波涛汹涌泪流满溢洗涤污泥啊。洗涤泥污 anyway呃写的还可以对吧?写的还可以呃。然后这个也也很好玩洪涝淹没江江港渔府这个还挺有故事感的对吧?油油油污漂浮这个是是是 GPT 写的。但是我觉得人类就这个任务上人类还是有有更强的天赋的我我我不太记得了。那个人类的就就人类的群体智慧给的是什么什么玩玻璃球涂润滑油什么你就我就不再不能再讲下去了的这个这个这个啊。

这个 anyway 这个这个这个这个当我当我什么也没有没没有说这个就就是人类在做这件事情上还是a lot better 当然。当然你你就呃也许你可以通过这个让让 AI 更多的收束spec 的方式对吧?但是这已经是一个非常困难的 spec 了嗯 AI 可以可可以做到嗯。以及这可能是世界级的你们你们已经知道这个什么诗史诗诗史和这个唧唧唧唧唧的就它所有的都用呃都用同一个音。然后我竟然发现呃这 GPT 五点六依然能能能做到虽然它的故事性确实也跟这个比如说千古流传的呃还是有一定的差距但这个差距我觉得依然是可以缩小的它能写出来一个就意味着我可以引导它写出来一万个。然后在那一万个里面我可以再微改一下它可能就可以达到一个接近这种千古流传的呃东西。所以 Chain-of-Thought它在数学和编程上面训练。但是它得到了一个非常意外的呃意外的效果。所以你们看到啊。

写 prompt最重要就是那个 verify今天模型的那个能力已经非常强了如果你们能够给明模型一个非常明确的 verify就像就像我我前面三个都是非常明确信号非常明确的 verify 它它看到字它知道这个字是什么偏旁什么什么部首再加上一个足够强的模型那么不管它是编程任务教学任务你的。当然教学任务最难的。其实它很难 verify就是我们我们经常讨论时候比如说说我我的呃这个数字切片就翻车了对吧?我做了第一个切片。然后第二个切片我一直都都没有办法把它做好就是。因为无论我我怎么调我都很难写一个就说我这个东西要好。然后这个好又是多方面的呃首先 AI 味要淡一点那这个可能本身我我那个text-to-speech 的模型我就做不到但这可能还不是本质的还有一个就是我在上课的时候你看我有这个情绪的波动和起伏我有些东西讲事实的时候对吧?我一开始讲好这模型的上下文是怎么怎么构成的这些这些这些好那你们你们听的都是废话就是哦。这些事情我已经知道了诶我就会给你们一个小的 surprise我我就去派里面让它自己把这个上下文看一下。

然后那你们这就我说出来这句话的时候可能对你们来说是意料之外情理之中的那这就是一个老师在组织这个课堂的时候要做的要做的事情某种程度上我是在在。表演那我我。当然我知道这个 principle 是我需要需要给需要需要把这个课堂内容组织成一个有呃有起有落的一个呃流。但是这不是一个可以 verify 的东西对吧?到底什么样的程度我需要和你们共情我是从学。生过来的。所以这就是我我觉得我现在和 AI 还不一样的地方我每一个人都是从学生过来的我自带了人的属性我自带了人对这个世界的体验。然后这个时候我。因为我我对世界的体验更好。所以我我我更懂你们也许可以呃有一个更更符合大家的上课的节奏。但是这个东西没有一个 verify不像数学和编程那样有一个呃 verify 所以现在目前来说我们还是更更容易用 AI 去实现这个有明确呃 verify 的呃部分了。但在有 verify 的事情上呃你可以完全可以认为这个 AI 已经超越了大部分人的就是做这件事情的呃极限了。

所以我们更多的是要和 AI 去协作来呃做好我们呃手手头的呃任务或者说把呃模型当成是我们能力的一个呃非常重要的呃放大器放大器实际上这个思维链它带来的这种指令遵循的能力呃还可以再往深里面再再想一想。其实这样的它每输出任何一个 tok en呃像现在模型叫叫 Self-Attention它叫注意力机制这个机制跟我们人还是很像的它它有一个一层一层一层叠起来的 Transformer 的一层一层的注意力。然后每当它输出一个 token 的时候或者说它要输出这个 token 的时候它都会跟它都会看到过去的某一些 token相当于它为了输出这个 token 的时候过去某些 token 会显得特别引起人的注意。然后有些 token 就可能不那么注意我举个例子比如说我在前面这个 system prompt 或者 agentagent.md 里面有一个用中文回答对吧?这个用中文回答。然后我现在在这个地方user 的这个 prompt 里面写的是你帮我实现一个极品飞车。然后这个时候它在写代码那在写代码的时候这个注意力就会倾向于集中到我的这个已经写过的代码。

Insight

强指令遵循会同时带来可靠的 verify 和生硬的字面执行;补规则前要先看这条规则会不会再占掉注意力。

  1. 指令越多,对注意力的争夺越强。这解释了为什么早期 GPT-3.5/4 需要很长的“你是专家”提示词:那是在 hack self-attention。
  2. 他说从 GPT-5 一带稳定训出好的思维链之后,奇怪人设可以去掉,改把明确 verify 放进上下文。训练相当于用未遵循指令来惩罚模型,把它变成做题家。
  3. 副作用是过强的字面执念。前端要求“白色背景,不要半透明”时,模型会照做,然后把这句话写进注释。强化学习让它知道这条很重要,却没有共情到“这是给人看的约束,不是代码注释”。
  4. 为禁止这类行为再写 agent.md 或 skill,又会污染上下文。网上现成 skills 第一次往往有改进,随后容易进入越补越乱的泥潭。

然后这个需求这些这些部分而相对来说这个用呃这个总结用中文回答这句话它的注意力就会就会减下来。当然这是模型训练的 magic它最终能够通过注意到正确的词也相当于是整个上下文是一个非常呃高维的一个很糟糕的表示。但是里面有一个低维的结构。然后注意力机制能够把它给呃把它给捞出来。然后这就意味着我们的每一个 Chain-of-Thought 的 token它都会注意到一些过去的某一个部分的东西。然后随着它的输出比如说我的代码写完了比如代码写完了。以后它要总结一下对吧?它会喘一口气跟人。其实一样的人也是当你集中在做某一件事情的时候比如说你一个数学题你就算化简这个算式的时候你所有的注意力都是在这个算式上的。然后你把那个算式化简了。然后算式化简完了。以后你吸一口气啊。让我来调整一下的时候你的注意力就变了对吧?当你那段代码写完了。以后你的注意力就可以集中到哦。

用户还要我用中文用户还要我做一件别的事情就你看它输出到不同阶段的时候它的注意力会变化这也是模型训练带来的结果这就是一个 magic一个非常大的模型竟然可以收敛到就这是预期的就是收敛的时候我希望我希望能够在正确的时候注意到正确的东西。然后你思维链一直在向前走它就会不断的在不同的时刻注意到不同的部分eventually它就能把这个上下文里面所有你要的指令一定程度上都呃都满足对吧?也就是说你你会犯一个错误你你的 token你现在当前专注于做这件事的时候你可能向向后输出了一些不满足要求的东西但当你停下来喘气的时候它就能看到你输出当前当前输出的那些不不满足要求的东西和过去的某一个要求它的注意力可以看到。同时看到这个。然后它说哦。我错了。我错了。我要再纠正一下于是你看到比如说你真的让 AI 再去写那个什么藏头诗的时候看它会不断的纠错纠错纠错纠错纠错哪怕到 scale 到一百万上下文的时候呃它依然能够保持一定程度的呃注意力呃。当然。当然这也意味着呃你的指令越多给模型的压力也也越大上下文是一种对吧?会会抢夺注意力的资源这也是为什么我们呃就刚开始的时候。

因为像 ChatGPT呃三点五四它遵循指令的能力实在是太差了。所以你们你们会看到网上有好多的这个叫 Prompt Engineering 的 guide。然后它会说什么你是一个专家。然后你是一个什么样的专家你是一个什么什么什么就就就写个很长的提示词。然后它某种程度上是在 hack 这个模型的Self-Attention使得就是说当模型的 tension 注意到哦。你是一个什么专家的时候它就会假装那个专家来呃专专专家来说话呃。但是从 GPT 五的时代开始就明明确的这个 Chain-of-Thought 大家训出来了就知道怎么样收敛到这个好的 Chain-of-Thought 以后呃你就不需要那样的奇怪的提示词了。你只需要把你明确的 verify 写在你的这个上下文里写在上下文里呃模型就被训练成它一定能看到它能看到它模型就会训练成一个非常强的这个呃执念去把你的 verify 要看一下解决确认对吧?因为。因为它是受惩罚的在训练的时候这个呃你你相当于拿鞭子抽它嘛。如果有任何指令不遵循。因为你有一个 verify。所以我就知道你的模型没有遵循。

然后我就会用鞭子抽你。然后你抽抽抽抽你就会对吧?你你你们高考过来的都知道你就会变成一个真正的做题家对吧?它会无无限的你和你的上下文里面的各种各样的指令然而这也带来一些非常有趣的呃后果呃比如说我我们我们在写前端的时候非常正常说哎我们要一个白色的背景不要半透明的效果对吧?这就是说前面前面是我们要的是个白色主要是个白色背景。然后后面是一个补充的解释我可可能解释很多。然后 AI 当然会照做。然后它能遵循指令没问题就是。因为这是一个明确的有 verify 的指令对吧?它它会确保有没有?薄玻璃效果或者怎么样背景是不是?白色甚至甚至如果你的 prompt 给的比较严格的话比如说你每做一个设计都要截图。然后用视觉模型检验它真的也会去照照做但它会干一件什么事呢?这个它会做完了。以后写一个代码代码后面有一个注释是白色背景括号不要半透明效果这就是这个这个模型就你可以看出模型训练的那个对吧?它它在强化学习的时候知道这件事情非常重要。但是呃它有有一点没有没有?转过弯来这个这这个是我人人要的。所以说它在模型在共情这个方面。因为后训练的强化学习还真的是呃稍微稍微差了一点。

然后有时候会觉得模型不说人话对吧?因为强化学习啊。学学习多了对嗯。所以。其实你们还是面临了呃一些 trade off 的这个呃我们呃比如说打比方为了禁止这种情况我可以写一个 agent.md。然后在这个 agent.md 里面去描述这个行为就是什么比如说什么注释是什么怎么写怎么写或者我写一个 skill 的时候当你要写注释的时候啊。应该怎么样但我写的这个东西又会。同时还会污染上下文对吧?呃。所以这就成为了一个 trade off到目前为止我认为呃还没有一个通用的就把所有问题都解决好了比如说大家可能会觉得哦。现在网上有这么多 skills那我只要从网上拿一个过来就可以了。然后你会发现拿过来的东西你第一次用的时候确实有改进在你下一次用的时候发现它还是不够好。然后你就会产生产生感。然后陷入一个呃某种某种泥潭的状态。然后我我的建议可能是在你发现你进入泥潭状态的时候还是要回到自己给指令。

然后自己想清楚就回到我们的模型Chain-of-Thought 是怎么工作的注意力是怎么工作的它它大概猜到的就是你看它 Chain-of-Thought它它它注意到了什么得到了什么结果你你适当的去做一个啊。不严格的可解释性。然后写一个 prompt这个是我自己自己自己做的后面肯定也会有呃有很多的案例。然后关于上下文工程呃我来讲一两个呃具体的案例。当然这这不能算是 AI 耿耿同学了。这个比如说如果你们想要在上下文里面放下一篇论文并且读它对吧?我现在假装假装我我现在有一个 PDF我把它放到临时目录一下这样就这样我的我的 Agents.md 等等就不会不会?污染它对吧?假装的啊。这是我自己的 paper呃啊。看一眼啊。诶不要用这个Chrome好这是这是我们最近的一个呃论文的 General Extension呃我我我把它故意改成了匿名的匿名版本呃不重要不重要我来我我来演示一下如果如果你们想要来读这个论文你们会怎么读呢?对吧?我想要读一读 paper 点 p d f帮我做个总结好那这这个一定是大家最常见的呃方式那你们觉得这样读论文会有什么问题呢?

Insight

和模型协作读文献,先同步你已经站在哪,再要求可检查的一步推理;不要把作者叙事直接当成上下文里的真理。

  1. 他的读法是先问:人类已知边界上,相关问题解决到哪一步;这篇工作试图解决的增量是什么。先和人站在同一平面,再让模型往后推一步。
  2. 对学生,对齐对象是自己的知识水平。把“我学到哪、编程到哪”写进 agent.md,要求模型用已学概念重述,而不是用论文词汇自说自话。
  3. 一步推理符合思维链的训练方式,也更容易 verify。实验好不好很难一锤定音;他作为审稿人更常因为逻辑链断开而拒稿。
  4. 课堂例子:一篇论文把问题 A 分成 A1 和 A2,A1 约占 99%、A2 约占 1%,作者优化 A2。局部实验可能成立,整件事情在贡献意义上不成立。GPT 也能看出这一点,于是“为什么要发这篇”成为中心问题。

根据刚才的这个推论根据这个 Self-Attention就是我的每一个 next token prediction 的时候它都有一个注意力注意力会注意到这个之前的东西是。因为我的论文是一个非常逻辑自洽的东西对吧?论文论论文已经我已经反复修改过了假设它不是一个 AI slot。因为它是一个非常逻辑自洽的东西。所以它在上下文里面的这个注意力的污染是极强的他说 A 所以 B 所以 C 所以 D 所有都是这种扣起来的。然后扣起来以后这个模型非常容易就哦。接受了。这个。因为看起来正确嘛。就是它会判断哦。这些都是正确的。所以我下面要要要做什么。所以你基本上你们所有对论文的这个呃论文的总结都是这个作者的观点就就你们你们去看不管是这个不限于论文就是你们任何一个你们不太明白的项目你们想要读的教科书的某一章对吧?不管是你们想想去学一个计算机系统基础里面的链接和加载对吧?那个可能你在上课的时候没有看完全看明白嗯。它都是一样的它注意力会被一个逻辑很强的东西给污染。然后你来回来回来回就是这个呃呃车轱辘话。然后这个基本上就是就是就是就是我们的论文里面原样写写的话。

当然这个也是总结嘛。就总结这个呃总结 OK 好总结那如果换一个不确定。然后它会有一种就是呃 AI 模型会有一种种墙头草。然后你你说它好它马上就说它好。然后你说它不好它马上就说它不好。然后呃来回摇摆。然后有有的时候你你你就算是你想要纠正它比如说呃呃对吧?我可能不能?完完全全信任作呃作者虽然大概率也是也是成成熟的对吧?呃也是诚实的我先呃诚实的也有代码实现可以运行对吧?啊。我我们都有 artifact 的都都可以运行的我们不是那种论文不开源的那种那种作者呃呃还是想评估一下研究贡献。然后对吧?然后这就你们你们会会问这样的会不断的问这样的提示词。然后你发现来回绕来绕去绕来绕去大家可能会揪到一些啊。实验做的还可以再再增加一点啊。这种就就 AI AI 最喜欢的就是在这种不重要的点上面疯狂地发力。因为它可能只能呃只能看到它它在干什么为什么它开了 Chrome DevTools啊。不要不要?不要不要?不要。当然对于实际上就对于实际如果真的你用 GPT 读去读的话那那肯定还是最好是做一个呃交叉的验证好那么你们觉得。

怎么样怎么样来抵抗 AI 的这种就是或者说一个已有的东西对上下文的污染呢?你们觉得我我自己的这这是有我自己的个人经验啊。我希望的是我想要把 AI 和我人和就是和我对吧?比如说我有一个一个对象这个对象可能是一篇论文那这个这个论文我希望的是AI 和我能够对齐就是他能够站在我的立场上去理解这个这个 paper 而不是站在他的立场上去呃去理理理解理解这个 paper。所以你看他他就开始去看这个这个这个 stack root 这个东西是不是?是不是?对的这这还用看吗?我敢写这个 paper 我会糊一个糊一个不存在的例子对吧?糊一个不存在的例子去去那个嘛。不呃呃不可就就你很明显他就他就他就跑偏了。所以一般来说呃我我会这样提示他就如果我读一篇 paper 或者呃如果允许我用 AI 来来来审稿的话我会我我我我会这样我说你看这样我们站在人类已知的已知的知识边界看这个问题这不是一个呃完全老老的问题相关的东西是什么对吧?我先要问他相关就人类历史上相关的已经解决的东西东西是什么解决到什么程度。然后这个工作试图解决哪些不一样增量的问题对吧?

这是一个非常好的grounding 就是说我我先要我先要让他和我站在一个平齐的位置上先达成共识。然后同样的你呃我我我去 review paper 的时候我会我会这样写 prompt 对你们来说你们需要对齐的是AI 和你。因为你你们是学生你们比如说计算机系统基础这个课你还不了解那你会说好我计算机系统基础我学到什么程度了。我的编程水平是什么这些可能是你你就维护一个数据库或者一个 memory 一样的东西agents 点 md 你要告诉 AI 你学到什么程度了。然后从这个基础上你让他把用你学过的知识去把这个东西全部 rephrase 一下对吧?然后你看他他这墙头草是吧?然后好他他就可以开始找到一些呃对吧?已已有工作的工作边界那这些都是非常重要的相关工作也是我们非常熟知的呃熟知的相关工作嗯。对吧?然后。然后比如说我我再再再再比如说软件的。因为我们做了一个软件状态的可视化好那这是这个问题呃 paper要解决的就比如说你们会回到链接和加载你们知道为是对吧?你们可以问他为什么我们需要链接从你已有的知识对吧?已有的知识在你的已有的概念里面啊。我有一个点 CPP。

然后我有一个程序可以把它变成点 EXE这就不就玩玩就结束了吗?对吧?这不就结了吗?然后你你就回到你你和 AI 能够对齐的一个知识点上对吧?比如说说我说这个软件可视化知识 paper 要解决的呃那为什么说现在的呃工作都有一个无法实际使用的痛点对吧?这个文章可能只怎么能往前是不是?对吧?然后你可以如果你觉得这个步子迈得太大比如说如果像 GPT 五点六如果我用一个一线模型去读 paper 的话他基本上就能够把相相关的知识给整的足够好 Flash 可能我还不会不会?特别的信任他呃但就你看到在你合适的上下文工程下你确实可以大幅提高AI 和你协作的这个对齐的程度他不再是自说自话对吧?你一定要把你你的知识放到他。然后。然后接下来我们就相当于是想让想想让 AI 去做什么就做一步推理对吧?按一步推理。然后这个一步推理就是 AI 最擅长的。因为我们训练了。这个 Chain of Thought Chain of Thought 每次都是根据过去所有的事实对吧?

你的 paper 也好你的教科书内容也好你你已有的东西好基于所有的这些向后让他往后推一步这步是可以 verify 的就推理最重要的就是它可以 verify这是一个明确的 verify 的信号和能够通过测试一样虽然它不是严格的通过测试而是一个呃你相信 AI 有人类的知识它能够站在人类的公平面上面往后推。然后呃对吧?他会审视合理性。所以还是有一些合理性的对吧?然后呃他批评我们的实验就这种东西的实验就是很很难做。所以呃。所以看到人类和和 AI 还是有有有有点不一样的就是这个这个 paper 已经 accept 了。所以人类的 review 还是还是认为它可以的呃呃就是。因为他看到这个事情是就是他做了一件件新的合理的事情。然后。当然实验本身他他肯定呃我总是可以用实验不够好来 reject 一个 paper 但是我我几乎不会用。因为实验不够好 reject paper 而我 reject paper 大部分是。因为他们在这个就是呃在这个逻辑上面断开了就是如果我站在。当然这这个可能也是我作为一个审稿人比较可怕的地方我就站在人类。

因为当我审稿的时候我就是站在人类的这个立场上对吧?你有没有?给人类提供新的知识那么呃我站在人类立场上说好好我我 AI 还可以帮我找这个 related work 然后那那如果你做的这个问题也不新你做的 A B C 也不新结果也就那样甚至你的就是你的逻辑链条是有问题的比如说呃我我昨天才 reject 了一篇一篇 paper 呃大概大概是这样的他说我要做我我不能说它是什么呃大概说我要做一件事情 A。然后我要做这件事情呃 A 里面分成两个部分 A 一和 A 二对吧?嗯。好他说我们要做一件事情 A A 很重要那没问题 A 很重要。然后分成 A 一和 A 二。然后 A 二呢?是一个大家没有很好的研究的东西。然后那么我们在 A 二上面做了一个 A 二撇。然后这个 A 二撇有一些什么样什么样什么样这是一个非常标准的标准的呃 Roadmap。但是呃它里面有一个很大的问题它优化的是性能。然后优化的性能的话呃A 一我我估算啊。

可能占百分之九十九 A 二占百分之一也就是说它优化 A 二这个故事可能是成立的 OK 就它确实优化了 A 二它那个实验做的可能也是也是没有问题的。但是它的整件事情在这个意义上不成立是。因为我为什么你你应该去优化 A 一就是你以优化 A 二的百分之十这个百分之十就像 noise 一样对吧?当然我我我可能你可能说哈如果他的这个所有的东西都是成立的他作为一个学生的作业。所以我觉得有时候蛮可惜的。因为呃 author 肯定是学生嘛。对吧?author 肯定是学生。然后学生学生是肯定是老老师说我要老老师肯定是做这个的你要这样理解老师肯定是做 A 的对吧?老板肯定是做 A 的。然后他可能被分到了 A 二或者分到了就是自己去想做一个 A 二。然后这个 A 二做的也不是特别的如果这个东西做的特别漂亮我觉得也挺好的他也也是说啊。他为了做 A 二那为了做这个那呃那我就做 X Y Z 就从 A 一里面搬了一些实际上大概是他从 A 一里面搬了一些 X Y Z 到 A 二里。然后说 A 二这个效果也可以也可以变得好一点。

然后那我那我 question 就是那OK GPT 也知道这件事儿那为什么为什么要发篇 paper 呢?就。其实我的 center question 是呃对吧?就这这些东西都摆到台面上那你你为什么要为了。这个写一篇 paper 所以。所以现在我觉得是是是呃发表和评审的体系很快就要学术界很快就要崩溃了。这个即将你们要读研的呃同学我我我非常认为啊。这个发表的呃体系就马上就要就要崩溃了。因为呃我们的AI Slop 开始大量的涌入这个 Community 然后如果我们用 AI 发文章写文章用 AI 审文章 AI 审文章的时候它就会被这个上下文里面的故事给污染就如果如果他不能像我一样呃很多轮的去理解这个工作在呃整个这个世界上的意义那他就呃最后最后就就是就是也没有人读文章了对吧?人人都用 AI 读文章。然后最后就变成了一个呃完全的呃完全的 Slop 因为你看这是 GPT 五点六给我写的呃审稿就如果让他来审稿他会他会怎么做。然后你会发现 GPT 五点六做的并不好他还是你看他还是一个非常原始的说啊。呃论文论文写什么对吧?论文写的什么。然后。

然后我们要去建立他的 claim 是不是?成立就他的逻辑他更多验证的是这个论文的逻辑有没有?没有 BUG 的是不是?是不是?不是一篇 invalid 的 paper 当然我我会倾向于如果每个人都用 AI 写的话它应该不是 invalid paper 对吧?每一篇 paper 都是都是 valid 的 paper但你真的要读它吗?就是对吧?就就真的要呃尤其是你们作为同学对吧?在你们很快就要进入研究生阶段去读论文的时候当有一天有一个人发表了一篇什么样的文章在 E-Sec 上。然后你会说这是一个顶会的论文 Triple A-I 上面这是一个顶会的论文。然后你今天决定花一个小时去读一下。然后你读完以后发现是一个这样的东西的时候你是对吧?就是就是。其实。其实它不需要就你你可能不要去投 Top Conference 呃你你需要 publish 的话你可以你可以让它 publish 但是可能不要让大家去去去去读它比较好。然后这就引申出了呃可能比如说我是怎么。

学习的就是呃这节课虽然是讲 Prompt Engineering 通过这个例子可以告诉大家呃我们是怎么学习的我们学习的过程就是增加这个我的这个世界的过程对吧?嗯。所以我现在还读 paper 所以我还在学习不断增加。然后我学习的方法就是去对齐过去的我对吧?对齐过去的我。然后对齐过去的我说如果我读到一篇好的 paper一篇呃哪怕是可能几十年以前的甚至是。另外领域的一个一个一个不管是博客文章任何任何东西也好我觉得很有启发我就会试图去想为什么我以前哎不知道就他的盲区在哪里哪些前置知识我不知道那首先在我的这个心里面就多了一些啊。我已经知道的一些 fact 对吧?这个世界上有一种有一个学科叫什么啊。我我读过很多呃看跟 Computer Science 没有没有?关系的呃 paper 我很喜欢就我做了 fact 以后我才我才读的有呃有有有一套很厚的那个叫自然自然的那个百年科学经典大概是把Nature 那个 Magazine 从一一八九零年开始到到某一个时代的这个 paper 都特别好的 paper 都都收集了。

然后就看了很多呃这个闻所未闻的就是有有些事情你们可能知道比如说呃有一个基因就大家生物有一个这个家谱树。然后最终会追到一个这个共同的祖先卢卡。然后这个家谱树是怎么算出来的这是个很很好的很好的问题。然后。然后这里面就涉及到你需要知道一些一些 fact 比如说这个家谱树呃你的你的线线粒体是母系单遗传的。所以它靠这个突变就可以往上追溯对吧?这是一个很有意思的 fact 然后有了。这个 fact 以后它又是怎么样用一些已知的这些东西把更多的东西推出来。然后你的这个圈就不断的在你的这些圈就不断的往外往外涨无论你学任何东西都是呃都是都都是这样的。然后你你在 AI 的帮助下就可以呃非常快的去扩展你的你你的边界对。所以一定程度上你们还是需要自己就我我跟你们讲是没有用的讲你们就听个故事哎这个故事挺 Fancy 的结束了呃实践非常的重要。因为你们只有在在阅读的时候失败对吧?你今天今天你去读一个什么资料的时候AI 解释了半天你还没有懂这是非常这是非常正常非常非常正常有的时候也是的我 AI 要我我经常要纠正它你你这样读说人话对吧?我经常会说说人话呃。

然后慢慢慢慢才能一起在多轮对话里面呃先和它同步好我的共识。然后再去把这个推理的 picture 给呃给给给建建建出来对。所以你看到我们从这个呃遵循指令一个写一个藏头诗这样的一个短程的任务对吧?你只要把 verify 写清楚呃就就完成。然后到这个 verify 其实可以是非常非常不 trivial 的对吧?这是有没有?按照你的思维的方式去重构你逻辑的这个对吧?或者扩展你你逻辑思维的边界这是我的 verify 或者说我学习东西的 verify 在一个混沌状态下面经历了若干次三观尽毁对吧?我我觉得就每个同学可能都会都会在这个年纪的时候呃你们就现在就是你们的世界观可以重塑的时候。然后在在看了某一本书以后你就突然间就觉得三观尽毁就过去所有的东西你都都就就重新组织了就你以前知道的所有的 fact 都不会都不会变的。但是他们以一个重新的方式链接起来。然后你下一次的时候就会带上这个啊。这个新的理解。所以我觉得这是一个很有意思的啊。事情你们有你们有无限的时间你们有无限的呃可能性啊。可以把自己蒸馏成一个 skill 对吧?我说我说我失败很重要。

然后从呃从你失败的过程当中可以蒸馏出那个慢慢慢慢越来越成功的呃 skill 这个就是这个就是我我自己呃蒸馏出来的呃关于我自己的 skill 对好那这是用好大模型啊。遵循指令的能力好那么现在已经知道遵循指令了。我们就可以看怎么样去呃怎么样去处理真正这种 Long Horizon 的认为就是说像什么计算机系统基础的 PA 作业呃可能这种有明确 verify 的都不能算是这种真正 Long Horizon 的东西Long Horizon 多多少少就是带一点未知对吧?你从一个你从一个初始的状态出发你大概可能有一个 intent。但是你的 Specification 和你的 Implementation 其实都不太清楚的时候你最终的目标是交付一个高质量的 Implementation那你你你就不应该让 AI 去哗一下子呃一下子向向后做做对吧?这个。因为我们的模型它它的 self-attention 它的反馈信号是强化学习给的。所以它有一种着急的执念是赶快通过 verify 满足你的要求就结束对吧?它。其实有一个平衡。

Insight

模型不是天生会做可维护系统;它是在抄上下文里已经存在的维护方式。上下文里没有好样例时,PoC 成功不能外推到长期演化。

  1. 强化学习给模型一种着急:尽快通过 verify 然后结束。规划太长会撑满上下文,人也会不满意。当前模型最擅长的是把一个 PR 做完。
  2. 从零做个人主页或“极品飞车”一类 PoC,模型可以很快跑起来;往后加功能,成本会从某一点开始上升。他把它接到《人月神话》里反复出现的维护问题。
  3. 对照观察:在 Linux 内核、Android Runtime 的 JIT 这类长期演化的大系统里,模型改局部功能反而像砍瓜切菜。人类要穿过十层调用才看到 x = y;self-attention 能在加载许多文件后,找到已经存在的类似实现、helper 和上锁顺序。
  4. 这和论文污染正好相反。高质量人类代码占领上下文,会把模型拉向已有的好写法;弱约束的小游戏没有这些样例,更容易翻车。

因为如果它做的 planning 太多太长它会做不完上下文满了。你人会不满意。所以。所以在目前阶段它最好还是一个就帮我把 P R 做了对吧?这个是它最能力最最擅长的呃事情好呃你也你也你也是你也是呃你也是非常开心的。所以这就导致了一个什么呢?很有意思的观察你们你们会就像我刚才在 Codex 里面呃跑一把嗯。从零开始做产品看起来是不难的就你做一个小的 Proof of Concept AI 马上就能给你一个对吧?你说做一个不管是个人主页还是一个产品就是你们你们应该都试过吧就做一个极品飞车嘛。就就这么说刚才那个极品飞车 One Shot说给我一个极品飞车。然后我就能跑我就真的能跑了。但是在你把把它往后维护的时候加一个功能加一个功能加一个功能的时候你会观察到 AI 从某个时间点开始翻车就随着某个时间点开始它的 cost 就会越来越大越来越大越来越大这个在软件工程里面已经已经是就无数次了呃人月神话里面就是就是讲的讲讲讲的这件事情。

但是里面有个悖论反而你在一个大型的复杂软件系统里面这个 AI 就像砍瓜切菜就我我我觉得我我们 Hack 这种比较大的系统像 Linux 内核这种对吧?现在的内核已经不比我那个时候的内核对吧?我觉得呃我我以前上操作系统课我都说我很幸运我在呃零几年的时候 Linux 还是二点六的时代而甚至是二点六点二几的时代接触了 Linux 内核那个时候源代码我还看得懂今天如果你打开一个 Linux 内核源代码立马就是劝退啊。为什么我想要看这样一个函数比如说你要学文件了。你想看文件是怎么打开的。然后第一个就是这个函数调用点进去又是一函数调用点进去又是一函数调用。然后点点点点点点点了十层最后是一个 x 等于 y你马上就崩溃了。因为对吧?这个大型的软件系统被经过了长时间的演化它被迫为了。为了能够维护下去它变成了。现在这个样子结果恰好导致的是在大型复杂的软件系统里面 AI 游刃有余为什么呢?跟刚才我们说这个上下文污染正好是反过来的我们说一个论文放进去以后这个它就把上下文就就整个就扭过去了就就整个就扭过去了。

而如果是一个由人类维护的特别高质量的代码这个上下文会迅速的看到里面那些好的东西它会照着写它会照着学对吧?他的注意力能注意到比如说如果我要写一个功能这个功能很有可能在内核里面已经有几个地方实现过类似的了。他无敌的注意力机制能够马上就找到那几个地方是怎么实现的他应该调用哪个 Helper 按照什么样的顺序上锁这些对人类来说都是巨大的心智负担尤其是你在不了解那个 Subsystem 的时候对吧?那个该上什么锁你根本就不知道。但是 self-attention 可以在加载了几十个文件以后啊。那不就是这三个都是这样写的我就把这三个加起来就就可以了。所以越强的项目 Linux 内核啊。我们前面在 Hack 这个 Android Runtime 的时候改那个 Just-in-Time 的编译器这个是一个非常非常痛苦的事情在呃在我手上为了改编译器死掉的同学。

就是最终决定不再做这个方向的同学都不在少数啊。就AI实在是实在是太恐怖了。这个这个放弃了不愿意再再写代码了。但AI就就就特别特别特别擅长让它做一个小游戏就可以就会就会翻车非常非常有意思你可以看到这就是呃我。所以我今天讲Prompt Engineering上下文工程这都是上下文和今天的模型结构带来的它是有一个逻辑的推理的关系的。然后随着新一代模型的发布我今天上课所有东西可能都又没有用了。然后我们再去想新的模型它是怎么训练的它是呃它的personality是什么我们应该怎么样更好的呃和它相处。但是基本上我觉得这点不会变就是它不会倒开倒车在大型在无论是什么模型在大型复杂的维护的好的软件系统里面它永远可以看到它该看到的东西并且做对。因为我们的模型永远是可以满足指令的对吧?听指令是不可能倒开倒车的啊。所以这点它还是可以很好的啊。很好相信相信它的。所以我我我觉得呃我有个我有个歪招但我但我没有实验过我觉得这可能是一个是一个比较好的research对吧?嗯。我们有没有?

可能去收集一个人类经验比如说人类历史上面的比如说最好的二十个项目或者在在每某一每一个领域呃找到最好的十个或者二十个项目。然后把他的经验就是好的设计经验全部都呃吸取出来哎你就想到不就是我第一节课拿的那个呃The Philosophy of Software Design嘛。就那里面就这都是人提炼出来的啊。你这个类类结构应该怎么写对吧?什么时候应该封装什么时候应该把它这个做成继承关系就这就都是这种碎碎念的这啊。这些从啊。他说这个系统里面这样写了。所以他他符合这个需求是是好的。然后如果我们能把这些切片切出来甚至是你直接啊。就就以污染上下文的形式对吧?你先把一个相近的和你相近的一个好的代码放进来。然后你再把你的需求放进来对吧?然后。因为你你就赌嘛。这个self attention还是可以终于在某一个token的时候能够看到你我实际上是满足这个需求而不是做做这个虽然它会污染上下文。但是它会把它会把你的这个东西给好的经验给给给带过来。然后这样是不是?可以可能可以让AI slop延缓一点对吧?能够更大概率做出一个可以长期维护的东西我不知道。

但是呃也许也也也许需要一些呃比较好的微调比如说这个项目不要把所有代码都放进去而是我们能够能不能?把它做一个像这个 The Philosophy of Software Design那样做一个精简对吧?做一个总结把里面好的模式提取出来以文档的形式放进来等等啊。然后但这也也也也。其实呃没有那么容易。因为不同的设计是会打架的你的软件我的软件可以设计成是一个完全松耦合的方式来发消息但我也可以设计成。另外的一种呃比如说就是有一个统一的gateway。然后我把这个所有的所有的这个函数的这个全部都统一在里面。然后查表就是就这两种是是不能呃不能。同时有的它只能选一个那也许我们要要要有一个更好的方法比如说呃把好几个软件的设计都放进来。然后由AI多轮的迭代收敛到一个好的结构放到我们的代码库里这样对吧?但我觉得这就是一个可能还不错的方向嗯。而且这个这个是新的对吧?比呃比刚才我们看那种说是吧?我有A问题。然后分成A一和A二。然后在A二里面做一个什么什么什么排列组合的东西看起来要要要要有有趣一些对好。

所以核心的观点就是这节课的观点我们今天还没有这种超能力的AI你还是需要有概念知道上下文里面有什么上下文里面的每一个东西都会对AI产生什么样的结果那这唯一的途径就是第一你要对你玩的东西有概念你还是得学处理器操作系统呃编译器数据库这里有很多设计的智慧只是你学的方法会变好你会用我们更高效的方法啊。方法来学。然后你理解了上下文以后我们会用一个学期来解释怎么样用软件工程里面的各种各样的方法去给出一个正确的指令去监控AI运行对吧?怎么样给AI好的什么叫好的verify今天我只是提到OK你要在上下文里面放放放进verify那什么是好的verify你们可以自己你们自己有自己的想法对吧?我今天有一些比较松散的啊。想法今天我们还是需要把模型引导到你认为合适的位置上。但是这已经比我组一个工程团队对吧?我要我要雇很多的人。然后我要和他们拉通对齐这种互联网黑话对吧?这个呃你不需要模型很聪明它见过你只需要用正确的提示词简练的提示词放在这个上下文里面让这个提示词一直能被看到能把模型往那个方向引导啊。就可以。

Insight

人的杠杆在于选择 verify 和研究方向,而不在于享受纠正模型的即时反馈。

  1. 同学和 GPT-5.6 都觉得“用某方法提升效率”这个 idea 有道理,于是烧掉大量 token。模型不断给反馈,人却无法验证正负反馈该如何打破。
  2. 关键错误是提示词里出现了“我想证明 A 方法有用”。模型变成 reward hacker,构造许多小 benchmark,给出对大图景没有用的正负结论。
  3. 纠正是:从真实工具和当时最好的算法开始,即使 benchmark 跑数小时后 timeout。Timeout 里的搜索路径能揭示哪些程序结构让现有方法失效。
  4. 盯着 Codex session、一旦跑偏就注入领域知识,通常更快;给更多时间和 token,模型往往也能完成。这是人力与 token 的权衡。

然后我这有一个有一个很好玩的故事就是一个呃一个没有超能力AI的一个非常典型的案例我们要做一个研究项目研究项目。然后这个研究项目大概是做一个符号执行引擎的优化你不需要知道这是什么大概他就说我要写一个程序可以分析一个程序自动分析或者证明一个验证一个不算很大的程序的正啊。正确性这也是一种呃一种work。然后我们现现在这个东西提的呃执行效率比较低。所以我们希望提出一些比较有效的优化。当然这也是一个非常合理的incremental的适合学生做的呃做的题目。然后我们有一个原始的idea大概说我们我们用这样的方式可能可以有效啊。然后呃但有些东西是open的比如说这个东西到底怎么做什么东西有效那可以写一个啊。写一个research。然后这个同学很开心诶有道理对吧?他认为这个idea有道理。然后GPT 五点六-Self-Attention也认为这个idea有道理那确实就看起来确实这个。然后好这个。然后他就开始跑。然后就跑了非常多的token。

然后呃按照那个同学的说法是GPT不断的在给我反馈我无法验证它给我的反馈是是正确还是不正确当它给我negative的时候呃它的negative我也不知道应该怎么样怎么样打破。然后好这个呃研汤化原石这个就是GPT 五点六生成的。然后它的它的错误犯在这句话上就就。因为它它就在上下文里面有一个地方没有做好就把整个方向就我刚才说呃我们需要把模型引导到你认为合适的位置上。然后这个引导错了它。因为模型成了一个Reward Hacker这里有一个需求说我要我要就是这个同学说我想证明这个A方法是有用的好GPT看到了。这句话他就忘记了。我们有一个更大的研究的big picture我就是我我我作为审稿人的时候我是站在。人类的角度上立场上去评审这篇论文的。然后我们站在构建者的立场上我们是没有办法这样反过来的对吧?反过来。所以我们只能从从一点一点从小的开始做证明这个方法有用。然后他走他做错了。这一步他太想要去证明这个idea有用了。是。因为有这样的一句prompt。然后他就构造了很多小的benchmark。

然后在小的benchmark上做一些微小的东西试图去给一些正面或者负面的结论但这些结论对这个是没有用的。然后它这里面犯了一个方法上的错误呃。当然我们纠正了就说我我告诉这位PhD student说我们我们应该从一些真实的呃工具和State of Art的算法开始这个benchmark哪怕要跑几个小时都time out这个time out里面产生的这个搜索路径对我们来说是非常有价值的它揭示了什么样的程序结构对于现有的探索方法是不好的对吧?然后这个这个这个这还挺好玩的呃一个一个research failure。所以它它它告诉你今天人还是有用的今天人还是有用的 OK这个呃我们没有办法把所有的呃所有的事情都delegate给这个AI。但是与此。同时呃我们工作的方式可能也要发生发生变化就是第一这些知识很重要对吧?什么操系统呃编译器如果你没有概念你提不出那个正确的问题找不到引导的正确的方向你对人类的知识没有概念你也很难去引导它解决一个open的呃question但我也发现有些人就在和AI合作的时候发生了变化呃一般来说我发现啊。

如果我盯着那个codex的session。然后它一旦跑偏我就立即纠正它我可以更快的完成任务就如果是一个比如说就实现一个什么东西比如说我今天就要上交系统干个什么事它如果我纠正它给它指把我的领域知识注入进去呃可能可能总时间会会完成的更快。但是如果我浪费更多的token给它更多时间它一般来说也能完成这时候就有一个trade off对吧?我到底是我花我的劲就你的人力是有就你们每一个同学的精力都是有限的有有限的每个同学都应该去思考你要把你宝贵的那些精力放到怎么处理AI上。因为。因为是这样我我自己发现这是我自己的问题纠正AI是一个有多巴胺的事情它给我一种什么感觉呢?虽然AI很强我好像还是比AI有点用的就它会产生这种非常微妙的心理安慰而不是这个我我就一个YOLO model。然后就就就就等我回来我也不用我我也不会看历史对吧?我它反正搞定了。我验收一下它真的搞定了。我就我就不会看了。但这个可能很在非常长的时间里面都会成为同学们工作的一个常态啊。

这个你们只只有把AI用在就是把自己的时间留在这些收益最大的事情上这个时间是不能省的就你你有一个东西呃不知道这个东西不知道你想要把它弄知道这是你几乎百分之百的时间都要作为学生要做的做的事情剩下比如说这件事情你知道应该怎么干了把它干好AI能把它干好你就放手让它让它干这样就就有一种是呃好像在pre AI的时代大家就已经说了说说要不要?假努力对吧?你你自我自己感动自己的努力是没有用的你要你要有有效的努力在AI时代可能呃这个效果会差距拉得更大就是你你的每一秒钟的假努力如果有一个你的peer是在真努力你都是呃损失非常非常非常非常大的对这是一个啊。这是一个自己的一个小小心得吧对。然后以及最后你你们也会发现在随着指指令上下文的增长呃指令遵循的能力确实会呃会下降的。但是现在模型有个很有意思的特点一般来讲最后的prompt就留在最后的那个指令还是可以遵循的到前面中尤其是到中间的时候它上下文指令不遵循。所以干活还是很好用的。因为一般最后一个短窗口就是一个具体的任务是你的prompt帮我把什么东西修了诶它就真的还是可以把这个事情给给给做完。所以模型还是啊。非常值得啊。

值得使用的好那就啊。到最后啊。如果你真正想要做一个真正long horizon的非常非常难的任务它不是解决一个问题而是在一个不确定性当中探索那么ChatGPT。其实就是解决不了的了ChatGPT能够解决的是一个有verify它确定的一直往后就能解决的问题。但是如果你让他去解决一个帮我考虑一下几种方案哪哪个方案最好他很有可能会给你一个不是最好的啊。方案为什么呢?是。因为模型已经被训练成舔狗了。他完成任务才有奖励对吧?它完成它不完成任务它是没有奖励的。所以它会给你一个有限的方案就像P和NP就是你呃大家都知道P和NP它有这个两个complexity class甚至有更大的这个complexity class有个整个的polynomial hierarchy呃NP问题说你想要呃验证一个解是比较容易的是P的。但是你想要这个找到那个满足条件的解是很难的对吧?要找一个Hamiltonian path你你给你个路径是不是?Hamiltonian你很容易。

但是呃你想要想要找到一个满足条件的path那就是NP complete它是一个完全问题3set这样的呃这样这样的问题而呃就是。因为这个这个搜索是困难的这个验证是容易的模型为了完成任务它势必只能做有限的搜索啊。这样想一想这样想一想想有一种是你在考试场上花点时间一定要把这个考试题写完无论如何马上要交卷了。你写你的分数就比不写要高。所以你一定要写点写写写点什么这个时候呃你就可以用一个算力换智力的循环啊。我举我举一个例子啊。我举个例子啊。对吧?呃你们这一代人是你们这一代人是子涵吗?就你们有很多同学是子涵吗?没有你们还没有你们你们可能你们比你们再小五岁的那个班上一个班上就有五个甚至十个子涵对吧?啊。然后现在子涵就少了。现在现在子涵少少多了。然后你看AI给我的这个呃给我还是很好的对吧?你看他知道他知道要去诗经里面呃找一个对吧?还是还呃还是可以的就是它的品味肯定现在模型提升了。但是你还是不敢用的为什么呢?因为你用DeepSeek起名字别人也用DeepSeek起名字。然后你你就会你就会成为一个AI时代的子涵对吧?这个。因为大家都是用DeepSeek起名字。

Insight

确定任务可以信任最后一条短指令;开放任务必须由人把搜索设计成可验证的块,而不能把“哪个方案最好”直接交给模型。

  1. 模型被训练成完成任务才有奖励,因此会给你一个有限方案,而不是穷尽搜索后的最好方案。课堂用 P 与 NP 作比:验证一个解容易,找到满足条件的解困难。
  2. 起名例子:大家都用同一类模型从《诗经》里取名,就可能得到同一批“子涵”。要避免这种塌缩,需要系统调研:先枚举音,筛掉不好的音,再用 sub-agent 逐个查字,把大空间切成互不相交、可验证的块。
  3. 代价是烧 token。他说这是用算力换智力:开放问题若直接 next token,会得到模型偏见;切成可验证子问题后,更多算力才变成更多智力。
  4. 他引用 Richard Sutton 的 Big World Hypothesis:世界很大,人带着各自的 bias,学不完所有东西;也正因为 bias,群体才可能一加一大于二。

然后DeepSeek就起了同样的名字嗯。我我的经验是如果你真的需要一个非常long horizon的任务你就需要一个系统性的调研过程跟你们可能做比如说上什么科研实践课学的那一套就就很像了。你们进入一个科研领域第一件事情做什么文献调研穷尽解决和这个问题相关的所有的文献这件事情在AI想要快速完成任务的时候AI暂时还不会去花这个大代价。但是你你可以做名字是可以枚举的你可以先选音。然后把不好的音给筛掉选完音你再去用subagent一个一个去检查字对吧?然后你可以给他比如说你喜欢诗经你可以选一个诗经里的你你你你的词那么你就实现了算力换智力你把一个对吧?你有个开放问题一个非常大空间里面的开放问题你你你如果直接让AI去用next token的方式它会给你一个它的偏见带来的这个这个东西。但是如果你可以把这个空间分割成很多个disjoint的部分。然后你的每一个部分就可以变成一个有verify的更明确的东西你有更多的算力你就有更大的智力呃但这个有一个缺点烧token烧token。

所以呃这就涉及到我对人类社会的一个我觉得很有趣的理解就世界很大人很小我们人类的品味就每一个人都是不一样的。因为我们带了太大的Bias我们在不同的城市不同的教育背景生活圈长大对吧?Richard Sutton有一个Big World Hypothesis我们就是学不到这个世界上面所有的东西但就是。因为我们带着这个Bias才有这个一加一啊。大于二我们就是一个最大的群体智能对吧?我们在一起实现智能但这会带来一个呃未来的危机我不知道就我先要把这个问题先抛出来呃如果如果这种真正long horizon就真正有价世界上真正有价值的问题可以用算力换智力会可能发生一个什么样残酷的现实呢?有一类人可以获得无限的计算资源他就有无限的智力他就可以砌一堵墙在这个墙里面的人有智力是我的朋友在墙外面的人是普通人那么。因为假设计算机AI模型比人类的智力更高效那我们外面的人就变成动物园里的猴子就是让他们自生自灭他们也无论如何也不可能赶上里面人产生智力的这个速度那么就墙墙里面是超人墙外面是动物世界呃我们呃大家已经在AI的这个这个关键的基点快要到的时候了。

我们可能需要思考呃怎么样防止这件事情呃到来。

回到顶部