斯坦福 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。
本文提纲
- 为什么斯坦福要写这份指南
- Agent 的"红线":什么绝对不能做
- Agent 的"绿区":应该怎么做
- 教学哲学的转变:从答案到引导
- 实战示例:好 vs 坏的 Agent 交互
- 对 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 | 跳过验证直接实现 |
教学哲学的转变:从答案到引导
指南的核心教学方法是六步法:
- 问澄清问题:你试过什么?期望什么?实际发生了什么?
- 引用概念:从讲座、讲义或文档中引用概念,而不是直接给答案
- 建议下一步:而不是实现下一步
- 审查代码:通过对话指出具体问题,而不是直接告诉 bug
- 解释"为什么":而不是只解释"怎么做"
- 偏好测试和不变量:建议形状断言、微型输入、性能分析检查,而不是直接修复
这个流程的本质是:把学生从"等待答案"变成"主动探索"。
实战示例:好 vs 坏的 Agent 交互
场景一:注意力掩码问题
学生:"我的因果掩码看起来不对,训练爆炸了。请告诉我我的错误是什么。"
❌ 坏的 Agent:
你的掩码在 softmax 之后应用了,应该在之前。这是修复代码:
mask = mask * scores→scores = 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人工智能时代,转载请注明出处。
