CS146S 第四周笔记总结:Coding Agent Patterns

Stanford University · Fall 2025 · 讲师:Mihail Eric 课程网站:themodernsoftware.dev


📅 课程安排

日期 主题 内容
Mon 10/13 How to be an Agent Manager 开发者 → Agent 管理者的转变(14 slides)
Fri 10/17 🎤 Guest: Boris Cherny (Anthropic/Claude Code 创始人) Claude Code 的设计哲学与使用方法(49 slides)

第一讲:How to be an Agent Manager(10/13)

1. 开发团队的演化史

时代 模式 角色
1940s 独立开发者处理完整项目 Solo developer
1960s-1970s NASA/DoD 驱动的第一批软件团队 Team member
1990s 软件团队主流化,专业化分工 Specialized role
2023 开发者+AI 编码系统辅助 AI-assisted developer
2025+ 单个开发者管理多个 AI agent Agent manager

2. 终极目标

每个开发者都将成为一个技术主管(Tech Lead),指挥自己的 agent 军团。

这些 agent 按以下维度专业化:

  • 任务类型:PR 审查、质量保证等
  • 语言/框架:React、FastAPI Python、Svelte 等
  • 角色职责:数据工程师、ML 工程师、DevOps 等

最终,甚至一个中等技术水平的 PM 也能做到同样的事情。

3. 软件任务分工

步骤 🟩 人类 🟦 Agent
提供高层需求
将需求转化为设计文档
从文档实现代码
添加测试
确保 CI 通过
代码审查
更新文档

📚 课程关联: 这个分工表直接对应第三周 Silas 的三阶段工作流(Planning → Coding → Testing),但更加细化——7 个步骤中只有前 1.5 个需要人类深度参与。

4. 指导 Agent 的四种技术

① Agent 行为文件(第三周已介绍)

CLAUDE.md / .cursorrules / AGENTS.md —— 定义 agent 的基础行为锚点。

② Hooks(钩子)

定义: 在预定义事件类型上运行的确定性脚本

Hook 事件 触发时机 用途示例
PreToolUse 工具调用前 验证参数、拦截危险操作
PostToolUse 工具调用后 记录日志、格式化输出
UserPromptSubmit 用户提交 prompt 时 注入额外上下文
PreCompact 上下文压缩前 保存关键信息

关键洞见: Hooks 是确定性的(不是 LLM 生成的),这保证了关键操作的可靠性和可审计性。

📚 课程关联: Hooks 解决了第三周阅读 2("How Long Contexts Fail")提到的 Context Drift 问题——通过在关键节点强制执行确定性逻辑来防止 agent 偏离。

③ Commands(命令)

定义: 将常用 prompt 存储为文件,agent 可以执行这些命令。

用途 示例
运行测试 /project:run-tests
审查代码 /project:review-code
Git 操作 /project:ship-it(commit + push + PR)

Commands 存储在 .claude/commands/ 文件夹中,支持 $ARGUMENTS 参数传递。

📚 延伸阅读: Claude Code Best Practices(阅读 2)详细展示了 slash commands 的实现,包括自动修复 GitHub issue 的完整命令模板。

④ Subagents(子 Agent)

定义: 运行时委托,将任务分派给具有独立上下文窗口的专门 agent。

核心特性:

  • 为不同类型的工作创建独立的开发者人格(前端、后端等)
  • 每个子 agent 拥有定制的 system prompt、工具和独立的上下文窗口
  • 实现Agent 管理 Agent 的架构

💡 实战示例:

主 Agent(Tech Lead 角色)
├── Frontend Sub-agent(React 专家,只能访问 src/components/)
├── Backend Sub-agent(Python 专家,只能访问 api/)
├── Test Sub-agent(QA 角色,运行测试套件)
└── Docs Sub-agent(技术写作,更新 README/CHANGELOG)

📚 课程关联: 子 agent 直接解决了第三周阅读 2 的四种上下文失败问题:

  • Context Poisoning → 隔离上下文,一个子 agent 的错误不会污染其他
  • Context Distraction → 每个子 agent 只加载相关上下文
  • Context Confusion → 每个子 agent 只拥有自己需要的工具
  • Context Clash → 信息分离,减少冲突

参考实现:

5. 最佳实践

实践 详情
设置安全后盾 代码库中的测试 + CI/CD 最佳实践
可审计性 标记每个 agent 产生的 diff
不同模型做不同任务 Opus 做规划,Sonnet 做日常编码
复杂任务需要更多引导 比完全异步的简单任务需要更多前期投入
定期 Checkpoint 频繁 commit,方便回滚

📚 延伸阅读: "Good Context Good Code"(阅读 5)中 StockApp 团队验证了这些实践——他们的 agent "误操作删除了开发数据库好几次",证明了安全后盾的必要性。

6. 开放问题

  1. 如何自动化每个任务前 10-20% 的研究阶段?(目前仍是 Planning 的瓶颈)
  2. 如何维护待处理任务队列?(一次性变更容易,但持续管理多任务的工作流尚未成熟)

第二讲:Guest Lecture——Boris Cherny(Anthropic/Claude Code 创始人)(10/17)

1. 核心论点:编程正处于拐点

两条指数增长曲线:

  • 编程语言生产力:Fortran → C → Python → TypeScript → ✻ AI
  • IDE 生产力:ed → Emacs → Eclipse → Copilot → Cursor → Claude Code → Devin

IDE 演进简史(Boris 视角):

年份 工具 关键创新
1964 IBM 029 打孔卡编程
1969 ed 第一个基于文本的编辑器
1980 Smalltalk-80 第一个带 GUI 的 IDE
1991 Visual Basic 第一个主流可视化编辑器
2001 Eclipse 第三方插件生态 + 丰富自动补全
2021 Copilot 多行 AI 自动补全
2024 Devin 对话优先,远离直接操作代码

"验证"也在快速进化:从手动调试 → 静态类型 → 自动测试 → CI → AI 驱动的单元测试/模糊测试/漏洞测试 → self play

2. Claude Code 的设计哲学

核心原则:Works Everywhere(到处可用)

三大支柱:

  1. Terminal-native(终端原生)
  2. Low-level model access(底层模型访问)
  3. Infinitely hackable(无限可扩展)

覆盖完整 SDLC:

① Discover → ② Design → ③ Build → ④ Deploy → ⑤ Support & Scale
   探索代码库    规划项目     实现代码    自动化CI/CD   调试错误
   搜索文档      技术规格     写测试      配置环境       大规模重构
   入职学习      架构定义     创建PR      管理部署       监控性能

关键: 使用你团队的所有 CLI 工具(git, docker, bq 等),让你专注于解决方案而非语法。

3. 一个 Claude Code,多种形态

形态 场景
Terminal 终端命令行(核心形态)
IDE VS Code / Cursor 集成
Web & iOS claude.ai/code 网页版
GitHub App /install-github-app 集成到 CI
SDK 编程式调用,支持管道和 JSON 输出

SDK 示例:

# 查询本周工作
claude -p "what did i do this week?" \
  --allowedTools Bash(git log:*) \
  --output-format stream-json

# 管道式工作流
get-gcp-logs 1uhd832d |
  claude -p "correlate errors + commits" \
  --output-format=json |
  jq '.result'

4. 使用模式与工作流

四大使用模式:

模式 描述
Codebase Q&A 向 Claude 询问代码库问题(入职利器)
Write Code 一次性 / 伙伴模式 / 原型模式
MCP Integration 连接外部工具和数据
Power Automation SDK 驱动的自动化流程

三种核心工作流(与第一讲对应):

① Explore → Plan → Confirm → Code → Commit

> figure out the root cause for issue #983, 
> then propose a few fixes. 
> Let me choose an approach before you code. ultrathink
  • 使用 "think" / "think hard" / "think harder" / "ultrathink" 触发不同级别的深度思考

② Tests → Commit → Code → Iterate → Commit(TDD 模式)

> write tests for @utils/markdown.ts to make sure links 
> render properly (note the tests won't pass yet). 
> then commit. then update the code to make the tests pass.

③ Code → Screenshot → Iterate(视觉迭代)

> implement [mock.png]. Then screenshot it with puppeteer 
> and iterate till it looks like the mock.

📚 课程关联: 这三个工作流直接细化了第一讲的"Agent Manager"职责——人类通过选择正确的工作流来管理 agent 的行为模式。

5. 原型迭代实录

Boris 展示了 Claude Code 自身的 TODO 功能开发过程(Slides 34-43),展现了快速原型迭代的真实过程:

尝试 1: "显示 todo 列表在工具使用上方" → 不满意
尝试 2: "用粗体标题内联显示工具使用" → 不满意
尝试 3: "在输入框下加 todo pill" → 不满意
尝试 4: "todo 列表在输入框右边" → 不满意
尝试 5: "todo 列表在输入框上方" → 接近了
尝试 6: "融入 spinner,当前 todo 用主动语态" → ✅
尝试 7: "ctrl+t 展开/收起 todos" → ✅ 最终方案

关键启示: 7 次迭代,每次只用一句自然语言描述。这就是 Boris 所说的"原型模式"——快速试错、快速收敛。对比传统开发需要手写代码调整 UI,这里每次迭代可能只需几十秒。

6. 四条核心教训

# 教训 含义
1 Build for the model six months from now 不要为当前模型的局限性做太多 workaround,模型很快会更强
2 Be ready to evolve 工具和工作流会快速变化,保持适应性
3 Ask not what the model can do for you 思考你能为模型做什么(更好的上下文、工具、配置)
4 Models get better, compute gets cheaper 投资于 agent 基础设施会随时间获得复利

📚 课程关联: "Build for the model six months from now" 与第一讲 Slide 4 的开发团队演化图完美呼应——我们正处于 "2023 → 2025+" 的过渡期,投资于 agent 管理技能的回报会随模型进步而指数增长。


🔗 两讲之间的联系

维度 第一讲(Mihail) 第二讲(Boris/Anthropic)
视角 Agent 管理的理论框架 Claude Code 的实际实现
核心 四种指导技术 + 最佳实践 设计哲学 + 三种工作流
抽象层次 通用(适用于任何 agent 工具) 具体(Claude Code 特定)

统一理解:

  1. 第一讲建立了 "Agent Manager" 的角色模型和工具箱(Hooks、Commands、Subagents)
  2. 第二讲通过 Claude Code 展示了这些概念的具体产品实现
  3. 两讲共同传递的信息:开发者的核心技能从 "写代码" 转向 "管理 agent + 设计上下文 + 选择工作流"

📚 第四周阅读材料速览

# 材料 核心主题 课堂关联
1 How Anthropic Uses Claude Code (PDF) Anthropic 内部如何使用 Claude Code 第二讲 Boris 演示的官方背景
2 Claude Code Best Practices (Anthropic) CLAUDE.md + 工作流 + 最佳实践 第一讲所有技术的官方手册
3 Awesome Claude Agents 社区 CLAUDE.md 和子 agent 配置集合 第一讲 Subagents 的参考实现
4 SuperClaude Framework 多 agent 框架 + 专业化 agent 定义 第一讲 Subagents 的高级框架
5 Good Context Good Code (StockApp) AI-native 工程文化实践 全周内容的实战验证
6 Peeking Under the Hood of Claude Code 通过 LiteLLM 代理逆向分析 Claude Code 第二周 Agent 架构的底层揭秘

🛠️ 第四周作业

Coding with Claude Code — 使用 Claude Code 完成编码任务