第 4 课 · 现代软件开发者(斯坦福 CS146S)
Coding Agent Patterns: How to Be an Agent Manager
本篇听书与视频
做智能体的管理者:CLAUDE.md、Hooks、命令与子智能体
第四周讲的是开发者角色的变化。软件团队的组织方式一直在变:最早是一个人包办整个项目,后来出现了团队和分工,再后来一个负责人管理好几个人的产出。讲师认为现在正在进入下一个阶段:一个开发者管理一群智能体的产出,每个开发者都像技术负责人,手下有一支各有专长的智能体队伍。本周周一讲怎样指挥智能体,周五由 Claude Code 的作者 Boris Cherny 做嘉宾讲座。
学习目标
- 能把一个软件任务拆成“人做”和“智能体做”两部分。
- 掌握四种指挥智能体的手段:行为配置文件、Hooks、自定义命令、子智能体。
- 知道放手让智能体干活之前,必须先准备哪些保障。
- 了解 Claude Code 的设计思路,以及几种和任务匹配的工作流。
核心概念
任务分工。 课上把一个典型的软件任务拆成七步:提出高层需求,由人负责;把需求写成设计文档,人和智能体协作完成;实现代码、补测试、保证 CI 通过、代码审查、更新文档,这几步都可以交给智能体。
四种指挥手段。
- 行为配置文件(CLAUDE.md、.cursorrules、AGENTS.md):为智能体的行为定下基调。
- Hooks:在特定事件上自动运行的确定性脚本,比如工具调用前(PreToolUse)、工具调用后(PostToolUse)、用户提交提示词时(UserPromptSubmit)、压缩上下文前(PreCompact)。它和提示词的区别是:提示词是建议,模型可能不听;Hook 每次都一定会执行。
- 自定义命令:把常用提示词存成文件,随时调用,比如跑测试、做代码审查、生成提交并推送。
- 子智能体:在运行时把工作委派出去。每个子智能体有自己的系统提示词、工具集和独立的上下文窗口,可以扮演前端、后端这类不同角色,也让不同工作流的上下文互不干扰。这是“智能体管理智能体”的开端。
放手之前必须有的保障。 代码库里要有测试,CI/CD 要规范;每个智能体的操作都要可追溯,智能体做的每一处改动都要做标记;不同类型的任务用不同的模型,课上的例子是用 Opus 做规划、用 Sonnet 干主力活;越复杂的任务,前期越需要多带一带;要经常提交,留下检查点。
Claude Code 的设计思路(嘉宾讲座)。 Boris Cherny 认为编程正处在拐点:编程语言和开发工具的生产力都在加速提升,验证手段(类型系统、自动化测试、AI 生成测试等)也在同步进化。Claude Code 的设计原则是:哪里都能用、以终端为原生环境、直接贴近底层模型、可以随意改造。它覆盖软件开发的全流程,从探索代码库、规划方案、实现和测试,到部署和排错。同一套核心既能在终端、IDE、网页里交互使用,也能通过 claude -p 以无头模式接进脚本和自动化流程。
让工作流匹配任务。 嘉宾演示了三种工作流:一是探索 → 规划 → 确认 → 写代码 → 提交,适合排查根因、先比较方案再动手的任务;二是先写测试 → 提交 → 写实现 → 迭代 → 提交,也就是测试驱动;三是写代码 → 截图 → 迭代,适合照着设计稿实现界面。另外,用 Claude Code 回答“这段代码为什么这么写”“某个 issue 是怎么修的”“上周我交付了什么”这类代码库问题,也是很常见的用法。他最后的建议是:为六个月后的模型设计,并随时准备调整,因为模型会越来越强,算力会越来越便宜。
实践步骤
第四周的作业要求在一个“开发者指挥中心”起始应用(FastAPI + SQLite + 静态前端 + pytest + pre-commit)里,用 Claude Code 搭至少两个自动化:
- 用
make run启动应用,打开/docs熟悉接口,用make test、make format、make lint跑通测试和格式检查。 - 从下面几类里至少选两类来做:
- 在
.claude/commands/里写自定义斜杠命令,比如带覆盖率的测试命令、根据/openapi.json同步 API 文档的命令、重命名模块并修好所有引用的重构命令。命令要单一职责,可以重复执行,用$ARGUMENTS传参。 - 写 CLAUDE.md,内容包括入口和代码导航、格式与安全规则、工作流约定(比如“新增接口时先写一个会失败的测试”)。 - 设计两个以上协作的子智能体,比如由测试智能体写测试、代码智能体写实现、最后再由测试智能体验收。 - 把 MCP Server 接入 Claude Code。 - 用自己搭的自动化去扩展起始应用,在
writeup.md里写清楚设计思路、运行命令、使用前后的对比,以及安全和回滚的注意事项。
常见误区
- 把 CLAUDE.md 写成长篇大论。 它就是一份提示词,越简短、越能直接执行越好,要像改提示词一样反复修改。
- 用提示词去保证必须执行的事。 每次都必须执行的检查,应该交给 Hook 或 CI,而不是写在提示词里指望模型照做。
- 还没准备好保障就全面放手。 没有测试和检查点时让智能体大范围改代码,出了问题很难回退。
动手练习
给你自己的项目写一个自定义命令,比如“跑测试,失败时总结原因并提出修复建议”,再写一个 PostToolUse Hook,让每次编辑文件后自动运行格式化工具。用一周后回顾:哪些重复操作被省掉了,哪些地方智能体依然需要你手把手带?
要点回顾
开发者的角色正在从“写代码的人”变成“管理智能体的人”。管理的手段是配置文件、Hooks、命令和子智能体;能放心交出去的前提,是测试、CI、可追溯性和经常提交的检查点。
参考来源
- CS146S Fall 2025 课程大纲(Week 4):themodernsoftware.dev/fall2025,核验日期:2026-10-23。
- 讲义幻灯片:How to be an Agent Manager(Google Slides);嘉宾讲座 Boris Cherny《welcome to claude code》(Google Slides)。
- 作业 Week 4 — The Autonomous Coding Agent IRL:week4/assignment.md。