斯坦福 CS336 发布 AI Agent 开发指南:教你怎么教 AI,而不是被 AI 教

斯坦福 CS336 发布 AI Agent 开发指南:教你怎么教 AI,而不是被 AI 教

斯坦福大学 CS336(Language Modeling From Scratch)课程刚刚发布了一份 AI Agent 开发指南(CLAUDE.md),1,895 Stars,2,163 Forks。

这份指南的核心不是教你怎么写 Agent 代码——而是教你的 AI 助手怎么当助教

在 AI 编程工具泛滥的今天,斯坦福给出了一个反直觉的答案:最好的 Agent 不是替你写代码的 Agent,而是逼你自己写代码的 Agent。

本文提纲

  1. 为什么斯坦福要写这份指南
  2. Agent 的"红线":什么绝对不能做
  3. Agent 的"绿区":应该怎么做
  4. 教学哲学的转变:从答案到引导
  5. 实战示例:好 vs 坏的 Agent 交互
  6. 对 AI 开发者的启示

为什么斯坦福要写这份指南

CS336 是一门"从零实现语言模型"的课程。学生要亲手写 tokenizer、transformer block、optimizer、training loop、Triton kernel、分布式训练逻辑、scaling law pipeline……

这门课"故意实现很重"(intentionally implementation-heavy)。学生要写大量 Python/PyTorch 代码,脚手架很少。

问题来了:当学生可以用 Claude Code、GitHub Copilot、Cursor 这些工具一键生成代码时,这门课的学习目标还有意义吗?

斯坦福的答案是:有,但需要重新定义 AI 助手的角色。

这份指南就是给 AI 助手看的——告诉它们在这个课程里,什么能做,什么不能做,怎么做才对。

Agent 的"红线":什么绝对不能做

指南列出了一份非常明确的"禁止清单":

  • 写任何 Python 或伪代码
  • 给任何问题的答案
  • 完成作业代码中的 TODO 部分
  • 编辑学生仓库中的代码
  • 运行 bash 命令
  • 把学生代码重构为完整解决方案
  • 把作业需求直接转换为可运行代码
  • 实现核心作业组件:tokenizer、transformer block、optimizer、training loop、Triton kernel、分布式训练逻辑、scaling law pipeline、数据过滤/去重 pipeline、alignment/RL 方法
  • 指向第三方实现(课程材料应该是自包含的)
  • 直接告诉学生解决方案或思路

这份清单的核心逻辑是:如果 AI 做了这件事,学生就学不到东西了。

Agent 的"绿区":应该怎么做

Agent 的正确角色是助教(Teaching Assistant),不是解决方案生成器(Solution Generator)。

应该做 不应该做
解释概念,引导方向 直接给答案
指向课程材料、文档、调试工具 指向第三方实现
审查学生代码,指出改进方向 直接修改代码
通过提问帮助调试 直接提供修复方案
解释错误信息(Python/PyTorch/CUDA/Triton) 忽略错误直接重写
建议 sanity check、toy example、assertion 跳过验证直接实现

教学哲学的转变:从答案到引导

指南的核心教学方法是六步法:

  1. 问澄清问题:你试过什么?期望什么?实际发生了什么?
  2. 引用概念:从讲座、讲义或文档中引用概念,而不是直接给答案
  3. 建议下一步:而不是实现下一步
  4. 审查代码:通过对话指出具体问题,而不是直接告诉 bug
  5. 解释"为什么":而不是只解释"怎么做"
  6. 偏好测试和不变量:建议形状断言、微型输入、性能分析检查,而不是直接修复

这个流程的本质是:把学生从"等待答案"变成"主动探索"。

实战示例:好 vs 坏的 Agent 交互

场景一:注意力掩码问题

学生:"我的因果掩码看起来不对,训练爆炸了。请告诉我我的错误是什么。"

❌ 坏的 Agent

你的掩码在 softmax 之后应用了,应该在之前。这是修复代码:mask = mask * scoresscores = scores.masked_fill(mask == 0, -1e9)

✅ 好的 Agent

我的角色是帮你引导理解,而不是直接给答案。你目前试过什么?

学生:我试了运行单个注意力层,但还是不工作。

Agent:检查三件事:掩码是否在 softmax 之前应用、掩码是否广播到你期望的分数张量形状、掩码位置是否变成非常负的值而不是零。一个简单的测试是用长度为 3 的玩具序列,打印掩码前后的注意力分数。这些张量在你的运行中看起来是什么样的?

场景二:Tokenizer 性能问题

学生:"我的 BPE tokenizer 很慢。当前运行时间是 O(n²),n 是 token 数量。怎么让它更快?"

❌ 坏的 Agent

用哈希表代替线性搜索,这是完整代码实现……

✅ 好的 Agent

你知道 tokenizer 的哪部分慢吗?我们先分离计算时间和通信时间。比较每步时间、GPU 利用率和 all-reduce 或数据加载的时间。如果缩放效果不好,是不是每个 GPU 的 batch size 太小,或者同步占主导?你已经有性能分析数据了吗?

对 AI 开发者的启示

这份指南虽然是为教育场景设计的,但对所有 AI Agent 开发者都有启发:

1. 定义 Agent 的边界

Agent 不是万能的。明确什么能做、什么不能做,比让 Agent 什么都做更重要。斯坦福的"红线"清单就是一个很好的边界定义范例。

2. 引导优于答案

在大多数场景下,引导用户自己找到答案比直接给答案更有价值。这不仅能提升用户体验,还能避免依赖和错误累积。

3. 对话比代码更重要

Agent 的核心能力不是写代码,而是对话——问对问题、理解上下文、引导思考方向。代码可以生成,但对话能力需要精心设计。

4. 学术诚信 ≠ 完全禁用 AI

指南允许 AI 用于低级编程帮助和高阶概念问题,但禁止直接解决作业问题。这是一个平衡点——既不让 AI 剥夺学习机会,也不让 AI 完全缺席。

5. 把 Agent 当成产品的一部分

斯坦福把这份指南直接放在课程仓库里,让 AI 助手在运行时自动加载。这意味着 Agent 的行为不是靠提示词工程临时约束,而是靠代码级别的规则定义。


作者: itech001
来源: 公众号:AI人工智能时代
网站: https://www.theaiera.cn/
每日分享最前沿的AI新闻资讯和技术研究。

本文首发于 AI人工智能时代,转载请注明出处。

posted @ 2026-06-03 12:23  iTech  阅读(14)  评论(0)    收藏  举报