斯坦福如何教授 AI 原生软件工程:对话 Mihail Eric
播放视频AI Engineer YouTube 频道刚刚突破了一百万订阅者。感谢每一位观看过演讲、分享给同事,或将所学知识投入生产环境的观众。在这期特别策划中,我们想找一位不得不回答许多人工作中正在困惑的问题的人来聊聊:现在软件工程师真正该学什么?
Mihail Eric 有两个地方可以验证他的答案。他在斯坦福大学教授《现代软件开发》,同时担任 Monaco 的 AI 负责人,他的同事使用 coding agent 来交付软件并排查故障。我请他带我们过一遍教学大纲,然后告诉我们其中哪些部分经受住了他自家工程团队的实战检验。
这也算是为所有下周前往旧金山参加 AIE Code 大会的朋友做的一次预热,可以作为与演讲者、赞助商及参会者交流时的必备知识。如果你是 LS 订阅者且尚未购票,可以使用此代码享受 3 折优惠(恕不退款)
去年的作业现在只需一个 prompt
CS146S 课程的第一期包含九个作业和一个毕业设计。其中有一个练习是让学生运行 AI 代码审查工具,并评估其反馈。到了第二期,Mihail 意识到学生其实可以一次性完成其中很多练习。当他询问斯坦福大学的二、三年级学生如何写代码时,他发现他调研的所有受访者已经在用 agent 了。
所以这次作业的一部分是给一个开源项目做贡献。仓库的维护者会审查学生提交的补丁。我很喜欢这个设计的巧妙之处:你可以让 agent 在一个下午就实现一个功能,但你仍然需要搞清楚维护者是否需要它、代码为什么这样设计、你的补丁还可能破坏什么。这种对话也是初级工程师向资深工程师学习的过程。
节目里有一个练习,你可以直接用在自己的下一次 PR 上:Geoffrey Litt 的 explain-diff skill 能把一次改动变成可视化的讲解,然后对你进行测验。试试用它来审视你的 agent 刚写的补丁——哪些问题你需要重新打开代码才能回答?观看这段讨论。
Monaco 买了什么,又自建了什么
在 Monaco,团队评估过多款代码审查产品,最终还是留下了 Devin。但 agent 工作区走的是自建路线:后台 agent 需要一个地方运行产品、复现故障、测试补丁,而这些细节取决于 Monaco 云环境的具体配置,所以团队选择自己做工作区。Mihail 的经验法则是:“买是为了学习,建是为了长期拥有。”
一个成果是 Hal。工程师可以让它排查故障并提交 PR,销售也可以问同一个系统产品是怎么工作的。前一种情况下,有用的答案是一次可供审查的代码改动;后一种情况下,是一段可以直接给客户讲解的说明。如果给这两种人都是一堵调试日志墙,那只能满足其中一个。
我一直在思考的问题是 PR 的另一端会发生什么。agent 看得到当前的代码,但它去哪里了解团队六个月前为什么否决过同样的改动?这就从 Basis 的 Authority Map 引出了 Mihail 的预测:开源仓库会变成由 agent 运营的软件工厂。这也正是今天就该把学生送到维护者面前的理由——总得有人来决定哪些改动应该进入项目。
如果你正在使用 Coding Agent 开发项目,欢迎加入 AI Engineer CODE。如果你也在自行教授相关知识,我很想听听你最早重构了哪份作业。
Show Notes
Stanford CS146S — 包含为期十周的课程大纲、作业及开源合作伙伴介绍。你也可以切换查看上一学年的课程进行对比。
构建 Coding Agent 以及 Claude Code 内部解析 — Mihail 对工具循环及其外围框架(Harness)的深入讲解。
理解成为新的瓶颈 — Geoffrey Litt 关于如何理解 AI 生成的 Diff 中变化内容的学习方法。
Monaco 的 Agent 开发者工作区 — 团队构建一个可供 Agent 运行并测试应用环境的初衷与逻辑。
如何终结代码评审 以及 Faros 的相关研究 — 数据显示,高 AI 采用率的团队合并的 PR 数量多了 98%,但单个 PR 的评审耗时却延长了 91%。
Basis 的权威映射表 — 指引 Agent 查询当前行为、早期决策及意图所在的位置。
Stripe 的 Minions —— 一个生产级案例:为后台 coding agent 提供环境和通往工程师审核 PR 的路径。
Boris Cherny 的 AI 采纳五阶段 —— 节目结尾我们展示在屏幕上的那五张图。
Mihail 做客 The Thinking Mode —— EO Studio 的访谈,本期开头引用了其中片段。
时间轴
0:00 · AI Engineer 订阅破百万与 CODE Summit
0:51 · Mihail Eric 与斯坦福 CS146S
5:26 · 初级工程师现在该学什么
10:02 · 开源维护者审阅学生的代码
15:04 · 十周课程大纲一览
24:04 · coding agent 的循环、工具与 harness
32:18 · 大型代码库的 context engineering
38:15 · 让你真正看懂 diff 的技能
46:42 · Monaco.com 的争议以及飞机横幅
50:23 · Monaco 如何赋能销售团队
59:21 · Monaco 工程团队内部视角
1:01:40 · “为学习而买,为留存而建”
1:05:24 · 让代码库适配 Agent 并闭环值班流程
1:12:37 · 当 Code Review 成为瓶颈
1:20:37 · 安全、依赖项与权限管理
1:30:13 · 后台 Agent 与 Stripe 的 Minions
1:34:16 · MCP 门户及基础设施趋同的原因
1:41:22 · 构建软件工厂
1:45:24 · 开发者还剩下什么工作?
1:52:16 · 从个人采用到团队自主性
文稿
点击下方下载完整文稿。在网络版中,你还可阅读文稿并点击任意时间戳跳转至访谈对应位置。
|
Latent Space 的读者正是那些在交付 agent、模型和基础设施的人。有意赞助此位置请咨询。
business@latent.space →自动生成的转录稿,已与最终版节目对齐。时间戳可跳转至 YouTube 对应片段。
0:00 swyx · 开场 — 这一期相当特别,因为我们在庆祝 AI Engineer YouTube 频道订阅数突破 100 万。如果你还没关注,快去订阅。今天的嘉宾是 Mihail Eric,他不仅在斯坦福讲授《现代软件开发者》课程——这门课因为系统覆盖了 AI 原生开发的各种最佳实践而正在走红——同时还是 Monaco 的 AI 负责人。所以他既是老师,也是一线实践者。
0:24 下周要来参加 AI Engineer CODE Summit 的朋友们,这次大会将庆祝过去一年编码领域取得的飞速进展。我很期待本届的各个主题:对抗 slop(低质量代码)、System 1 模型,以及放大你对各种代码大规模重写的雄心。做 AI 工程师,从来没有比现在更激动人心的时刻。有了 100 万 AI 工程师,我觉得一切才刚刚开始。
0:49 那我们进入访谈吧。
0:51 好,我们现在在录音室里,嘉宾是斯坦福兼职教授、Monaco AI 负责人 Mihail Eric。欢迎!谢谢,很高兴来到这里。引起我们注意的是你的那门课,你已经是第三次更新了,是第三次吗?
1:03 第二次。第二次。是的。这是斯坦福的 CS146,或 146S 课程,名为《现代软件开发者》。
1:09 Mihail Eric 的摘录 —— 我认为,这一代刚刚进入职场的初级开发者、初级工程师,将是体验这种全新范式转变的第一代人。
1:18 我看了课程大纲,发现它几乎涵盖了我们要聊的所有内容。所以时不时我会邀请像你这样涉猎广泛的人,我们可以逐个话题深入,了解每个领域的前沿状态,我想你在接待所有嘉宾时也是这么做的,对吧?请告诉我们这门课程的历史。
1:36 是什么促使你创建 CS 146?对,这是第二次开设该课程,我去年秋天首次授课,即 2025 年秋季。当时还是 Claude 4.5 和 4.6 出现之前。甚至早在 2025 年秋季之前,这门课程已经酝酿了大约一年。课程的起源大概是 2024 年 11 月。当时我有个想法,我们看到编码智能体(coding agents)领域正在发生许多变化。虽然它们还只是编码智能体的早期版本,但已经能感觉到开发者的工作方式正在发生根本性的改变,我们可以更高效地完成工作,等等。
2:08 当时,相关信息只是散落在网上的博客文章或零碎内容。于是我就想,能不能围绕这一领域构建一套更正式、更结构化的课程体系?
2:23 当时我有了这个想法,我的母校是斯坦福,我一直想着回去教点什么,做点回馈。我一直在教育领域深耕。后来我和 Chip 聊了聊——他也教过课——还有我的好朋友 Chip Yen,对,就是 Chip,我去找她聊过,她之前教过一门设计机器学习系统的课。我问了她整个开课过程是怎样的,从她设计课程的方式中获得了很多启发。然后就是琢磨要开一门什么课、跟学校接洽,前前后后花了大概九到十个月,那是 2024 年秋天到 2025 年年中,通过了学院的审批。
2:58 我还专门论证了这门课为什么应该存在,得写提案之类的,一套流程下来就到了 2025 年秋季,第一次开课。反响非常好,学生们都很感兴趣。去年甚至还有一篇 Business Insider 的报道写到了这门课。而到了今年,很多事情都变了。可以说智能体——自主编程智能体——的发展速度是我们之前从未见过的。
3:23 所以感觉是时候重新设计一遍课程、更新内容了,于是就有了现在这门课。与此同时,你还在 Monaco 担任 AI 负责人,那也是一家很有热度的初创公司。是的。我们现在正处于风口上,干得很开心。我挺欣赏的一点是,你自己也是实践者,你们显然正在 Monaco 落地这些东西。从去年到今年,从宏观层面看,有哪些原则或观察发生了变化?
(3:53)确实如此。量非常大。回想去年的课程,当时 coding agent 已经存在,但市场仍处在各种公司竞相解决 AIS DLC 全链条各个细分环节的阶段。比如,有专门用于代码审查的 agent,有用于规格设计的 agent,还有用于 SRE 的 agent。当然,其中一些公司至今仍然存在。 (4:16)但去年的感觉更像是一场广泛的巡礼,展示 coding agent 可以在哪里使用。在很大程度上,去年的课程侧重于“广度曝光”,像是一段旅程,告诉你所熟知的 AS DL C 的每个环节都因 AI 而改变。我认为今年有一些原则正在固化下来。 (4:38)比如极度细致的 context engineering,以及通过深思熟虑的设计与架构来处理复杂任务的理念。这门课并非面向初学者,它不能取代传统计算机科学中关于算法等内容。事实上,许多此类课程都是我这门课的先修基础。 (4:59)但我确信,当学生打好坚实基础后,接下来要做的就是将这些原则应用到生产环境和真实世界中。我认为现在正是一个合适的节点。在 Monarcha,我们处理的是巨型代码库。我也帮助许多公司梳理其巨型代码库的设计等问题。因此,这是一门面向从业者的课程,旨在教毕业生或即将进入职场的人,如何成为生产力最高效的成员。5:25 你说自己对教育很有热情。我觉得正处于大学阶段的学生处境挺微妙的。你有什么建议吗?现在还应不应该学计算机科学?
5:40 有了 Claude Code 和 Codex 就够了吗?我想听听你的看法。是的,可以想象,学生们有很多焦虑。这次我想传达的是,这种焦虑依然存在,去年也是如此。但我想论证一点:一个训练有素的 AI 原生工程师——我知道这听起来像个流行词,我们后面可以深入聊聊其中最有意思的部分——
6:10 这样的人可以成为任何公司最有价值的人才之一。
6:17 这其实就是开课第一周。第一节课我就跟他们说:我真心相信每家公司都需要你们,但入行的门槛高了很多。这是你们毕业后的第一份工作,可如果套用 Google 的职级体系,仅仅达到 L3 是不够的。你们入职时基本得具备接近 senior 的水平。
6:39 那我们怎样才能更快达到这个水平呢?我想说的是,软件工程的基础功依然很重要——包括如何构建软件系统,以及这些系统设计中的权衡取舍。在这些基础之上,你们作为人类才能真正发挥价值,而其余的实现细节,可以越来越多地交给 AI 去处理。
7:02 嗯。确实如此。这是我之前也提过的一类观点,听起来可能有点哗众取宠,但我内心是这么认为的:大多数学生都已经“完蛋”了。当然,其中一部分人会成为极具价值的人才。这可不是个很受欢迎的说法。斯坦福的学生或许没事,毕竟他们出自名校,但美国其他地方的学生该怎么办呢?这就是个问题了。现状有点尴尬,我感觉很多教育体系反应都很慢。我甚至好奇,你在设计一门课程时,如何确定知识体系的“截止日期”?
7:39 你们在斯坦福教的是现代软件工程,而这门学科正在发生巨变。你“作弊”了。你只是让那些做 Coding Agents 的人过来讲个课,对吧?
7:48 噢,是的。让他们来做嘉宾讲师,嗯,这有点……“故弄玄虚”。是的。好吧。关于嘉宾讲师这一点,其实去年也是这么做的。那是有意为之。你看,正如你指出的,swyx,我是个实践派。我确实如此。我每天都在做这些事儿。
8:09 我设计这些系统。你知道,在 Monaco 之前,我见过这种模式太多次了。话虽如此,我不想声称自己今天拥有所有答案,那样做就太傲慢了。因此,这门课的结构一直是:来自一位实践者的、在领域内工作并与业内许多人交流后总结出的见解。
8:33 还有一些人是真正站在最前沿的,能看到更远的东西,我们就邀请他们来分享自己的提案、表达他们对这个行业的看法——这就是嘉宾讲座的意义。让学生亲眼看到这些大牛、这些真正在做事的人,直接听他们讲、向他们提问,对学生影响很大。当然,学生们也想借此找实习、找工作。
8:56 请客座讲师是好事。不,我明白他的意思,我换个说法。我们之前也采访过 Ange,他教的那门课请的全是大人物,全都是名人。但你自己是真的在做东西,比如用 200 行代码实现一个 Cloud Code,对吧?
9:15 没有人要求你这么做,也不会有人专门跑来教你这么做。但如果你想教的是底层原理、可用的方法论框架和切实的理解,这就是你该做的事。对,完全正确。我也认为这类内容需要把握平衡,就像你说的,它并不是百分之百定型了。
9:34 从设计初衷来看,这既是一个特点,某种程度上也算个缺陷——课程的很大一部分和去年相比都变了。
9:42 所以整个课程的开发是动态演进的。但我至少想说明,有些东西我认为会一直保留下来。比如说,用 prompt 驱动 coding agent,它们越来越聪明了,这对我们与之协作的新方式意味着什么?
9:53 不过,Boris 肯定也有些我不知道的洞见,对吧?所以让我们也请他上来,分享一下他的心得。我注意到一个有趣的现象:这次课程中有相当一部分内容涉及开源贡献。这背后的思考是什么?
10:11 你有这些参与者……对,对。坦白说,这是我最自豪、也最兴奋的一点之一。你看,这是课程第二周。这是我那个极其慷慨的开源合作伙伴,我花了不少时间说服他们并对这个课程产生兴趣。基本的思路是:去年我教这门课的时候,
10:28 我们大约有九个作业,外加一个开放式的综合项目,对吧?这九个作业基本上是我设计的一些教学练习。比如:“这里有个代码仓库,用 AI 代码审查工具提一个 code review,然后看看:好在哪里?不好在哪里?”说实话,这些练习相当教学化,难度也挺低。我想对很多人来说,几乎可以一次性搞定。我觉得这样其实不太有帮助。在这个阶段,智能体(agents)已经普及了。据我调查,周二时没有任何一个学生还会手写代码。大家都在用 coding agents,而且这些学生大多是 Stanford 的大二、大三学生。
11:10 你有做过调研吗?比如统计一下市场份额、学生们都用什么工具?还没有,这个建议不错。你该去做一下。好,我会做的。斯坦福更偏爱哪家?不不,其实各大厂商基本都有教育计划,对吧?
11:27 是啊,它们对学生套餐都挺大方的。所以开课之前,默认就有 Claude 的授权,我猜还有 Cursor 的,可能还有 Cognition 的。这方面你可能比我还清楚。而我在这个基础上又争取到了一些额外权益:我不想让学生被每月 20 美元的订阅额度卡住。
11:49 如果你们想把某个东西的 token 用到极限、看看能力边界在哪,那就放手去做。我不用跟这些公司挨个谈,直接给学生争取了额外的额度。所以 Factory 也参与进来了,Cognition 那边也加入了,OpenAI 也是。说到开源合作伙伴,我比较担心的一点是:如果人人都像 Suix 说的那样觉得学生们“完蛋了”,那他们未来怎么办?
12:19 几乎有种被时代抛下的感觉。我认为导师制是提升整体水平、避免巨大鸿沟的关键——一边是在 coding agent 出现前就入行、懂门道、用上 agent 之后如虎添翼的资深工程师,另一边是不知道接下来该怎么办的初级开发者,这个差距不能太大。
12:39 从某种意义上说,我们的目标之一是:既然 coding agents(编码智能体)表现出色,那就让大家置身于处理大规模、复杂代码库的场景中。我们会接触一些我认为顶级的 AI 原生仓库,这些仓库要么专注于 AI 功能,要么本身是编码智能体,要么是在为智能体构建工具。
13:00 我希望大家能深度参与这些项目,并且作业的一部分就是直接向这些项目贡献代码。在这个过程中,你们会与项目维护者直接沟通,他们会审查你们的代码,并帮助你们建立优质软件的思维模型。通过这种方式,真正优秀的软件设计理念得以传承,我认为大多数学生很难获得这样的机会。
13:20 当然,还有个附带好处:我相信其中一些学生会因为在作业中表现优异而被企业“挖走”。是的,说到有趣的事,如果我不提这一点,可能会引来不少批评。我觉得用“煮熟”(cooked)和“破解”(cracked)这种夸张对比很有戏剧效果。嗯,把极端情况摆出来挺好的。确实。那也许我们可以深入看看课程细节。
13:46 是的。顶层架构上还有什么想探讨的吗?嗯,这很有帮助。是的,这就是全部了。好的。我有一些关于学生使用工具和最佳实践的高层问题。你们支持这种用法吗?
13:59 就像一对一私人导师。我猜学生们也会喜欢上这个。那在深入聊课程之前,你有什么可以分享的经验吗?你说过你很热爱教育,对吧?
14:13 是的,现在关于 AI 也存在一些争议,比如老师、教授该怎么用它?学生又该怎么用好这些工具?而不是直接把作业扔进去让 AI 一步到位搞定。有了这些工具,学生还能真正学到东西吗?你在这方面有什么想法?
14:28 嗯嗯。我们还是保留了一些作业,这些作业并不是要出多难的题,而是更偏概念性的东西。比如,某个技能到底意味着什么?
14:39 或者偏实操层面,比如这些工具和技能,像 agent 代码库、agents MD 之类的。这部分内容其实就是说:如果你没听过这些术语,就先补补课。但我认为,真正检验这些工具的学习,主要还是发生在 OSS 项目和期末项目中——那部分是非常开放的。
15:00 学生得自己去探索一些有意思的东西。好,那我们就从一、二、三……一直到十,逐一过一遍,然后再深入展开。基本上是先广度优先,对吧?好。我们从 coding agent 的内部原理开始。没错。你教大家怎么写自己的 Claude Code 克隆版。它不开源这一点其实帮了大忙。
15:23 然后呢?嗯,对。第一周讲 harness 的内部原理,基本就是从零构建一个 coding agent。第二周更进一步:假设这些都有了,我们该怎么思考大规模的 context engineering,而不仅仅是普通的 prompting。配套的还会讲工具设计,包括 MCP。我记得 MCP 之前挨了不少骂。
15:46 我一直是 MCP 的支持者,实践中经常用到。到这个阶段它已经是一个既有标准了,而且我认为会继续存在下去。讲完这些和有效的工具设计,第二周就结束了。第三周主要是讲 skills,也就是如何超越单一用途的工具,转向更类似“流程”的东西,我们会在这个语境下讨论 skills。
16:06 这就开始过渡到 agent 的自动化了。第四周则聚焦如何定制 agent 的基础机制,比如配置文件(像 AgentsMD、ClaudeMD)、hooks、sub-agents。现代 harness 里有很多这类机制,可以用于不同目的,我希望让学生都接触一遍。还有 agent-ready code bases,这大概是我最喜欢的话题之一。
16:33 对那些要进工业界、考虑规模化问题的人来说,这一点尤其相关:一个能被 agent 高效消费的 repo,到底应该长什么样?
16:45 所以我们会深入思考设计服务层边界的各种权衡,还有文档、可验证性之类的问题。这是第五周的内容。第六周讲 agentic 代码审查。有意思的是,这一周其实是第五周"agent 友好的代码库"话题的延伸:当写代码越来越快,代码审查就成了新的瓶颈。很多学生可能还没意识到这一点——虽然有些是研究生、有 industry 经验,但大多数还没体会过。
17:17 但对于今天所有在用代码 agent 的人来说,大家都在经历代码审查这个新瓶颈。那我们怎么解开这个瓶颈?
17:27 有哪些机制可以做到?这就涉及可验证性等问题,以及如何把它们应用到代码审查流程中。第七周讲安全。这门课去年就有安全主题,今年我想再强化一下。任何自主系统都会执行大量操作,而今年我们看到了太多安全事故,大量东西被黑。
17:48 其中很重要的一块是核心软件本身,从 Vercel 到各种 LM gateway(大模型网关)。所以我想花点时间聊聊安全领域出现了哪些新的攻击面,以及怎么缓解其中一些风险。第八周讲的是后台 agent。这也是我接下来想展开的:怎么让 agent 跑在各种不同的产品和服务场景里,不再局限于传统的 IDE,还包括基于代码库和仓库的触发器、CI/CD 流程中的任务、由事件触发的自动化,以及类似 SRE 风格的机器人。
18:31 这类系统到底该怎么搭?我记得过去一年很多公司陆续发布了相关文章,比如 Ramp 的 inspect、Spotify 有自己的版本,还有 Stripe 的 Minions——这些团队都写了非常精彩的技术分享,介绍他们为这件事搭建的内部基础设施。我想讲讲这个,让大家了解一下。是的,这一部分更多是讲在现代团队协作环境下会发生什么,以及团队级别基础设施的核心组成。
19:00 内容涵盖 LM gateway、MCP Portal(相当于规模化的 MCP),以及如何看待不断演变的职业角色。这部分可能偏软性一些。比较大众的说法是“人人都是建设者”,但我想更进一步探讨:到底是什么东西正在被取代?
19:22 哪些角色在演进,哪些全新角色正在诞生?学生该怎么打造一套从前并不存在、但现在有护城河价值的技能组合?
19:31 所以还涉及更多团队动态层面的考量。这些内容最终都汇聚到“软件工厂”这个概念上,这也是现在很多人最关心的话题。一旦我们建起了工厂,人类还在吗?
19:46 我们会在哪些环节刻意保留人的介入?比如明确意图、搭建可验证的系统。如果最终 80%、90% 的代码完全由 agent 驱动,那时候会是什么样子?总之,这是扎实的十周课程。我想说的是,这些模式有些已经比较成熟,有些则不是,大家要明白,这些并非都是定论。
20:18 没错。但这里讲的所有内容都是业内大家在讨论、你应当了解的东西。我们知道哪些是开放问题,只是未必知道答案。完全正确。你应该也有自己的一套体系,我很好奇你觉得哪些内容还不算稳固、还没有定论。比如软件工厂这个概念——我们说的是“黑灯工厂”吗?
20:39 还是那种半开着灯的工厂?我觉得这里其实有一个光谱。是的。即便是处在最前沿的公司,比如 Warp 和 Factory 这类专门造工厂、卖服务的企业,他们也只声称大约 30% 多的代码是完全由 agent 驱动的。那么在极限状态下,这意味着什么?
21:00 这个很难说。有些人一头扎进"黑暗工厂"走得很远,后来又出来说"伙计们,我错了"。对吧?我们在 AIE 上聊过这类事。要知道,不是所有人都这样——他们当时说那些话时可能真信,但他们有权改变想法,而且确实会改。就连 Boris 最近也发推说"我经常犯错"。大家却把他奉若神明,毕竟他是 Claude Code 的缔造者。我想说,别这样,他有时连自己都会推翻自己,这很正常。这不是搞政治,我们还是科学家、工程师,我不觉得自己有多教条,我只是希望大家多做实验。
21:40 我觉得这也是一条原则。你刚才问原则是什么——那就是保持实验。你必须随时准备好……我经常讲课或和人聊这些话题时,他们总会说:变化太快了,我怎么跟得上?
21:52 办法可以简单到每天花 10 分钟做实验。就花 10 分钟,尝试一件你以前没做过的事。如果你过去用传统方法解决问题,现在有了想试的新工具或新框架,哪怕用新东西做一模一样的问题,也足以弥补大部分差距。是的。
22:10 我想说一点,比如你们有一期节目请了 Cognition 聊 Code Review。我其实和 Silas 一起做过 Devon Review。对,我觉得做得挺不错的。这类东西很难做基准评测,虽然有 ReviewBench,但没什么人用。不过从体验上看,Devon Review 相当不错。我们还在用你们的产品呢。哦,是吗?
22:30 是的,Monico 确实在用 Devon。Silas 去年也来演讲过,他很棒,非常聪明。我们也确实在用你们的产品。我们当时测试了很多代码审查工具,最后在不少场景下都选了 Devon。Silas 现在主要在做模型侧,然后还有 Walden,也是你们想要的人。
22:51 对对对,我也和 Walden 聊过。另外我还想提一下 Factory,说到 agent readiness,他们一直在这方面发力,构建相关的信号和工具。你们有用他们的东西吗?
23:02 有,我们也在做自己的 agent readiness。Eno 也很厉害,他在这个方向上起步非常早。我记得他在 AIE 的一次演讲里把这套东西系统地讲了出来——是欧洲那场吧?那场演讲太棒了,我觉得相当超前。所以当时我就想,讲这个主题最合适的人选只有一个,我很想给他这个舞台,也非常期待。
23:27 有意思的是,我当时在 Cog,大家正在讨论这些话题,说我们得形成一些自己的观点。结果就在那一周,Factory 直接把一个完整的产品发了出来。我心想,好吧,你赢了。其实大家对这件事的理解基本一致,区别只在于你要不要把它做成一个 dashboard 而已。
23:45 因为它本质上是个仪表盘嘛。对对对。但它确实有价值。从营销角度看,他们借着 Writings and Reports 的东风做得挺好的。我经常跟别人推荐:你们也应该搞一套自己的 Writings and Reports。当然,现在有不少开源版本,但我觉得背后的理念非常重要。 24:04 好的。你想逐条聊,还是有别的想补充的?我可以逐条讲。行,那就逐条来。先说第一条。 24:11 课程聚焦 Claude Code,但 Pi 也是开源赞助方,这是怎么回事?这个可能带点营销色彩。不过有一点我想强调——去年我也说过——我不为任何工具背书。 24:26 我觉得对这类课程来说,替某个工具站台是错误的做法。工具来了又走。坦白说,去年开课的时候 Claude Code 还没那么火,也没被广泛接受。Boris 当时 Twitter 上才 4000 粉丝,现在都不知道涨到几百万了。Claude Code 确实是一炮而红了。 24:49 说起来,我们当初请 Boris 和 Kat 上播客的时候,也低估了 Claude Code。是啊,那会儿它才上线两个月。我只用过一次,一次查询就花了 50 美分,我心想这玩意儿谁会用啊?25:00 没错,它当时确实还在 beta 阶段。但我觉得他们在模型还没成熟的时候就提前把它做出来,这一点很值得肯定。大家常说“要为模型的未来而构建”,这非常有雄心。当时模型还没那么强,体感不出来,但现在回头看就明白了。有意思的是,他去年做分享的时候,我记得幻灯片做得挺高层的,其中有一页明确写着“为六个月后的模型而构建”。
25:23 那是去年十月的事,现在回头看,如果他当时就预见到半年后 Opus 的水平,说出那句话完全合理。那波能力提升也是个巨大的解锁点,我认为课程之所以改动那么大,原因之一就在这里。
25:37 毕竟当时围绕真正的自主性、长时运行的 agentic 任务,已经掀起了一场激烈的军备竞赛。不过回到你刚才说的,我不是在给 Claude Code 打广告——当然我自己在用,也用其他工具——我更想探讨的是:一个现代的 coding harness 到底长什么样?
25:54 我今年早些时候专门写过一篇博客讲这个,拆解了一些类似的原则。TLDR 就是:只要具备入门级算法知识,你就能写出一个基本的 agentic loop,实现所谓 coding agent 的大部分功能。当然,还缺各种锦上添花的东西,比如 sub agent、MCP 之类的,但核心就是这么回事。
26:18 但如果你想看到一个你跟它对话后它会真的帮你改文件、还能完成相当复杂任务的东西,其实用不到 200 行代码就能实现。所以我在教学中想做的,很大程度上就是揭开那些所谓的“神秘配方”,展示它的核心本质——毕竟这些还是学生,你要教的是概念性的原理。
26:37 这东西没什么玄乎的。斯坦福有门课叫 106B,就是入门算法课。做出这样的东西,需要的知识不超过 106B。就是这样,就这么简单。既然你也教过这门课,有没有学生提出异议?有什么问题?有没有观察到什么奇怪的地方?
26:54 他们有什么不理解的地方?问题一般集中在哪些方面?你是说针对这个特定的概念,还是泛指整个课程?
27:02 就这个概念——从零开始搭建,然后再做你刚才演示的那些事。因为基本上这些就是构建 Pi 所需要的全部,对吧?对,没错,就是这样。所以其实……我觉得至少到目前为止,还没有学生对这个理念提出过异议。他们大多就是使用者,是吧?
27:21 大部分学生最后确实只是在用这些工具。我觉得他们几乎没有机会——至少在课程里是这样——去深入探究工具背后的原理。所以那一周我们讲的是 harness。周二第一节课是课程安排之类的杂事,然后真正的第一部分课程内容就是那 200 行的 harness。昨天上后续课时,我们拿出了 Claude Code,还有那些代理工具——就是可以拦截请求的 proxy 工具。
27:53 MIT 的 proxy?对,没错,就是这个。用那个工具拦截请求和响应,看看底层到底发生了什么。我之前说过“你可以在 200 行里写出 Claude Code”,这次就拿出真正的 Claude Code 来对比。我直接用了 Opus 5.5——发布才两天的模型——把那些请求拦截下来。
28:13 具体发生了什么一目了然:这里是 prompt,这里是 system prompt,这里是计划用的 prompt,这里是压缩用的 prompt。然后我们把这些逐一讲给学生看。这样他们就真正拥有了一个能理解的、最先进的 harness。对,能拉出这三个层次挺好的——学生平时只是消费者,从最基础的 agent 循环,到真正的产品,一层层看下来。
28:32 我很喜欢你给博客文章配了视频讲解。学生们的水平是不是很两极?有人是重度用户,吸收能力很强;对了解 agent 原理的人来说,这些内容可能又显得太简单。你在课堂上是怎么平衡的?
