CS146S 第三周笔记总结:The AI IDE
Stanford University · Fall 2025 · 讲师:Mihail Eric 课程网站:themodernsoftware.dev
📅 课程安排
| 日期 | 主题 | 内容 |
|---|---|---|
| Mon 10/6 | From first prompt to optimal IDE setup | AI IDE 基础到最佳实践(15 张 slides) |
| Fri 10/10 | 🎤 Silas Alberti (Cognition) | IDE ❤️ Agents:同步 vs 异步工具(29 张 slides) |
第一讲:从第一个 Prompt 到最优 IDE 配置(10/6)
1. 为什么关注 IDE?
IDE(集成开发环境)是软件开发的全能工作空间,包含编辑器、编译器、调试器等。大部分开发工作都在这里完成,因此是 AI 增强的天然入口。
IDE 演化史中有一个核心张力:功能整合 vs 开发者自定义——不断在"统一平台"和"自由选择"之间摇摆。
2. IDE 简史
| 年份 | 里程碑 | 意义 |
|---|---|---|
| 1983 | Turbo Pascal | 第一个真正的 IDE——编辑器+编译器+链接器合一 |
| 1997 | Visual Studio | 高级调试能力,首次引入 IntelliSense(Tab Complete 的前身) |
| 2001 | IntelliJ IDEA | 上下文代码导航、重构、代码补全(现代 AI 功能的概念祖先) |
| 2015 | VS Code | 轻量编辑器+高度可扩展的插件生态。引入了 LSP(MCP 的概念灵感来源) |
| 2023 | Cursor | 第一个广泛使用的 AI-native IDE——在 IDE 体验的各个环节深度集成 AI |
📚 延伸阅读: 第二周讲 MCP 时提到它"从 LSP 扩展而来"。这里揭示了完整脉络:VS Code 的 LSP(2015)→ MCP(2024)——从帮助编辑器理解代码到帮助 LLM 理解工具。
3. AI IDE 的使用模式
基础模式(Bread-and-butter):
| 模式 | 复杂度 | 触发方式(Cursor) | 场景 |
|---|---|---|---|
| Inline | 最简单 | Tab | 单行补全 |
| Function | 简单 | Cmd-K | 几行代码的问答/修改 |
| Single-file | 中等 | Cmd-L | 单文件级别的操作 |
| Multi-file | 复杂 | Cmd-L + 多文件引用 | 跨文件重构 |
AI-Native 高级模式:
| 模式 | 说明 |
|---|---|
| Background Agents | 后台运行的 agent,异步完成任务 |
| MCP | 第二周学过的工具协议——在 IDE 中连接外部服务 |
| Learn Memories | IDE 记住你的偏好和代码风格 |
| Bugbot (PR Review) | AI 自动审查 Pull Request |
4. AI IDE 的底层原理
Tab Complete(自动补全):
- 当前代码周围的小上下文窗口被加密
- 发送到服务器,运行 infilling LLM
- 建议返回并显示在编辑器中
Chat(聊天模式):
- 代码片段作为 embeddings 存储在服务器上的语义索引中(文件名被混淆 + 代码内容)
- 任何查询检索最相关的代码块,作为上下文送入 LLM
- IDE 定期重新索引代码块并同步 embeddings
- 使用 Merkle Trees 计算增量差异,实现高效更新
📚 延伸阅读: 语义索引的概念直接对应第一周课堂技术 ⑥(RAG)——IDE 的 Chat 模式本质上就是对你的代码库做 RAG。"How Long Contexts Fail"(阅读 2)解释了为什么不能简单把所有代码扔进上下文,必须用 RAG/索引来选择性地提供上下文。
💡 在 Cursor 中查看索引状态:
Settings > "Indexing & Docs" > "Ignore Files in .cursorignore" > "View included files"
5. Best Practices:Specs Doc(规格文档)
核心洞见: 简单改动不需要精心设计 prompt。但对于复杂任务,你会变成产品经理——需要精心编写 specs doc。
Specs Doc 的八个要素:
| 要素 | 说明 | 💡 示例 |
|---|---|---|
| Goal | 变更的目的是什么 | "在用户 dashboard 添加实时通知功能" |
| Definitions | LLM 需要知道的前置知识 | "我们使用 WebSocket 进行实时通信,通知存储在 Redis 中" |
| Plan | 高层实施分解 | "1. 创建 WebSocket 连接 2. 实现通知 API 3. 更新前端组件" |
| Source files | 相关的代码文件及原因 | "src/api/notifications.ts — 已有的通知接口" |
| Test cases | 如何测试 | "发送通知后 dashboard 应在 2 秒内显示" |
| Edge cases | 需要考虑的特殊情况 | "用户离线时通知应排队,上线后批量推送" |
| Out-of-scope | 什么不应该被修改 | "不要改变现有的邮件通知系统" |
| Extensions | 后续可能的变更 | "未来会添加通知分组和已读/未读状态" |
📚 延伸阅读: "Specs Are the New Source Code"(阅读 1)深入论证了为什么 Spec 正在成为新的"源代码"。OpenAI Codex 文章(第一周阅读 5)也建议"像 GitHub Issue 一样结构化 prompt"。
6. Best Practices:优化代码库
核心原则: 优化你的代码库,让人类和 agent 都能理解正在发生什么。
LLM 的很多困惑来自于在混乱的代码库中尝试完成任务。混乱的代码库可能表现为:不同的数据库访问模式、不一致的变量命名、多个做同样事情的函数。
应该彻底文档化的内容: Repo 导航指引、文件结构、环境搭建、最佳实践和代码风格、访问模式、API 和契约。
提示:强烈推荐 monorepo 设计——所有代码在一个仓库中,减少 agent 需要跨仓库理解的复杂性。
7. Best Practices:Agent 配置文件
| 配置文件 | 适用工具 | 说明 |
|---|---|---|
| CLAUDE.md | Claude Code | 自动拉入上下文:常用 bash 命令、核心文件、代码风格、测试指令 |
| .cursorrules | Cursor | 项目级规则文件 |
| AGENTS.md | 通用(开放格式) | 为 coding agent 设计的指令:构建步骤、测试命令、约定 |
| llms.txt | Web 通用 | 为 LLM 爬取网站时提供导航指引 |
AGENTS.md vs README.md:
- README.md 写给人看:快速入门、项目描述、贡献指南
- AGENTS.md 写给 agent 看:构建步骤、测试命令、约定
⚠️ 注意: Agent 不总是遵循这些指令——它们是指导性的(guidance),不是强制性的。
第二讲:🎤 Silas Alberti 客座讲座 — IDE ❤️ Agents(10/10)
Silas Alberti:Cognition 创始团队 + 研究负责人(Devin 的公司),前 Stanford PhD
1. AI 编程工具的三个时代
| 时代 | 代表 | 模式 | 效率提升 |
|---|---|---|---|
| Code Completion | GitHub Copilot | 加速编码 | ~10% |
| IDE Automation | Cursor, Windsurf | 单人任务完成 | ~20% |
| AI Software Engineer | Devin | 并行扩展工作流 | 6-12× |
关键演变: 从本地同步 → 云端异步,从 1-to-1 → 1-to-Many。
2. 同步 vs 异步
| 维度 | 同步(Sync) | 异步(Async) |
|---|---|---|
| 模式 | 单线程,human-in-the-loop | 多线程,人类委派给 AI |
| 注意力 | 集中在一个任务上 | 在多个任务间切换 |
| Agent 工作时间 | 20 秒 - 1.5 分钟 | 10 分钟 - 数小时 |
| 位置 | 本地 | 云端 |
| 知识 | 隔离的 | 组织级别的 |
3. 半异步陷阱
"半异步"区间(约 1-5 分钟)是最糟糕的区间:太慢无法保持心流,太短无法切换到其他任务。
两种策略:向左推(让同步工具更快以保持心流)或向右推(投入更多时间换取更高智能)。
4. Devin 的工作流
| 阶段 | 角色 | 说明 |
|---|---|---|
| Plan | 工程师主导 | 用 DeepWiki/Ask Devin 提问,明确范围,Devin 写计划 |
| Build | Devin 主导(异步) | 启动隔离工作空间,计划→执行→测试→迭代 |
| Review | 工程师回归 | Devin 开 PR,包含测试和摘要。人类工作量 ≤ 原任务 15% |
5. 核心观察与未来展望
管理异步 agent 可以解锁 10× 收益,但大多数人只使用同步 agent。 因为管理和委派本身就是一项难以掌握的技能。
未来最有价值的技能:
- 委派和多线程管理
- 代码阅读能力
- 规划、范围界定、架构设计
📚 课程主线关联: 直接呼应课程核心理念"Human-Agent Engineering"——开发者角色从"写代码的人"变为"管理 agent 的人"。
🔗 两讲的统一主线
两讲共同论证:AI IDE 不只是一个更快的编辑器,它是一种新的工作方式。
- 第一讲(个人层面): Spec 驱动开发 + Agent 配置文件 + 代码库优化
- 第二讲(团队层面): 同步/异步混合工作流 + 委派技能 + 10× 杠杆
从第 1 周到第 3 周的知识进阶:
第 1 周:LLM 原理 + Prompt 技术(基础认知)
↓
第 2 周:Agent 架构 + MCP 协议(构建工具)
↓
第 3 周:AI IDE + Spec 驱动开发 + 同步/异步工作流(实际使用)