[控场AI]
· 4 分钟阅读· 2,237 字

斯坦福AI原生工程课:智能体时代如何教编程

斯坦福AI原生工程课:智能体时代如何教编程

斯坦福CS146S把开源维护者请进课堂,训练学生在陌生代码库中做工程判断。

斯坦福大学CS146S课程讲师Mihail Eric发现,学生用一句提示词就能让编程智能体完成传统作业,于是第二轮课程彻底改版:邀请开源维护者提供真实问题,要求学生在一个陌生仓库中学习代码、提出改动并推进落地。课程刻意保留沟通、评审与迭代中的摩擦,训练重点从「写代码」转向「理解系统意图、评估改动风险、与维护者协作」。文章指出,这背后是AI原生工程教育的重心转移——智能体承担重复实现,人类负责定义问题与把控质量,并提炼出真实项目优先、保留摩擦、引入外部视角三条可复用原则。

当作业可以被一句提示词完成,课程该怎么上?

去年 5 月,斯坦福大学 CS146S 课程结束后的夏天,Mihail Eric 意识到一个尴尬的事实:如果学生用一句提示词就能让编程智能体完成课程作业,那么传统的教学方式已经失效了。于是,在 CS146S 的第二轮课程中,他选择了一条截然不同的路径——把开源维护者请进课堂,让学生面对真实、陌生的代码库。

这个教学实验来自 Mihail Eric 在播客「One Million AI Engineer Special」中的分享。他同时是 Monaco 的创始人,也是斯坦福这门 AI 原生工程课程的讲师。据他介绍,课程的核心设计是:学生必须学会一个不熟悉的仓库,提出一项改动,并完成从理解到提交的全过程。

斯坦福CS146S课程分享

从「完成作业」到「解决真实问题」

开源维护者成为课程合作方

CS146S 第二轮的改革重点,是把课程作业从模拟场景转向真实开源项目。Mihail Eric 邀请开源维护者参与课程,由维护者提供自己项目中的实际问题,学生则需要在这个他们从未接触过的代码库中提出改动方案。

这种设计直接回应了 AI 原生开发的核心挑战:工程师不再主要面对「从零写代码」,而是「在现有系统中定位问题、理解上下文、并做出安全改动」。当智能体可以快速生成代码片段时,人的价值更多体现在判断和方向选择上。

学生要经历什么

据 Mihail Eric 的描述,课程要求学生完成三个关键动作:学习一个陌生的仓库、提出一项具体的改动、并推进落地。这个过程刻意保留了真实工程中的摩擦——代码库可能有历史包袱、文档可能不完整、维护者可能有自己的优先级。

这不同于以往「布置一个算法题、提交一个通过测试的解法」的模式。学生需要主动理解项目背景,与维护者沟通,并在不确定中做出决策。

开源仓库中的「提出一项改动」在实际流程中往往以拉取请求(pull request)的形式落地:贡献者先复刻(fork)仓库、在独立分支上提交修改,再向原项目发起合并请求,由维护者评审。评审环节会检查代码风格、测试覆盖、提交信息规范以及是否破坏向后兼容性。对于初次接触该仓库的贡献者,还需要先阅读贡献指南(CONTRIBUTING)、理解issue讨论脉络,并可能需要先在issue中说明方案以取得维护者认可。这一整套流程正是课程希望学生体验的「真实摩擦」,它无法被一句提示词跳过,因为其中大量判断依赖于对项目历史与维护者偏好的理解。

AI 原生工程的教学逻辑

智能体擅长什么,不擅长什么

Mihail Eric 的课程设计隐含了一个判断:编程智能体在「有明确输入输出」的任务上表现优异,但在「理解陌生系统意图」和「权衡改动风险」方面仍需人类主导。因此,课程把训练重点放在后者。

学生在陌生仓库中提出的改动,往往需要回答一系列问题:这个改动是否与项目方向一致?是否会引入回归风险?现有测试是否覆盖了相关路径?这些问题无法靠一句提示词解决,需要工程判断。

编程智能体(coding agent)通常指基于大语言模型构建、能够自主规划并执行多步编码任务的系统,其典型能力包括根据自然语言描述生成函数、修复测试失败、重构局部代码等。与单轮代码补全不同,智能体可以调用文件读写、终端命令、测试运行等工具,形成「观察—行动—反馈」的循环。这类系统在任务边界清晰、可通过测试自动验证的场景中效率突出,但面对需求含糊、跨模块耦合或隐含业务约束的问题时,容易产生看似合理却不符合项目意图的改动。理解这一能力边界,是判断何时应把工作交给智能体、何时需要人工介入的前提。

维护者视角进入课堂

把开源维护者引入课程,还带来了另一层价值:学生需要面对真实的评审标准。维护者对代码质量、提交规范、沟通方式都有自己的要求,这比课堂评分更接近真实工程环境。

Mihail Eric 提到,这种安排让学生在课程中就要学会与维护者协作,而不是等到工作后再补上这一课。

对 AI 工程教育的启示

课程改革背后的信号

CS146S 的调整反映了一个更广泛的趋势:当 AI 工具降低了编码门槛,工程教育的重心正在从「写代码」转向「做工程决策」。学生需要具备阅读陌生代码、评估改动影响、与利益相关方沟通的能力。

这一判断与业内对 AI 工程师角色的讨论一致——智能体承担重复性实现工作,人类工程师负责定义问题、验证结果、把控质量。

可复用的教学设计

从 CS146S 的实践中,可以提炼出几个可借鉴的教学设计原则:

  • 真实项目优先:用开源项目替代虚构作业,让学生面对真实的约束和不确定性。
  • 保留摩擦:不把流程过度简化,让学生在沟通、评审、迭代中学习。
  • 外部视角:引入维护者等外部角色,提供接近生产环境的反馈。

这些原则不只适用于高校课程,对企业内部的 AI 工程培训也有参考价值。

结语

Mihail Eric 在斯坦福 CS146S 的尝试,本质上是在回答一个问题:当智能体可以完成旧作业时,课程应该训练什么?他的答案是——训练学生在真实系统中做出判断和改动。这个答案未必是唯一的,但它为 AI 原生工程教育提供了一个具体、可操作的样本。

#AI原生工程#斯坦福CS146S#AI编程教育#编程智能体#开源项目教学#AI工程课程#Mihail Eric
分享:

相关推荐