CS146S 学习笔记(Week 4-8):从智能体管理者到多栈 AI 构建
CS146S 学习笔记(Week 4-8):从智能体管理者到多栈 AI 构建
本文是 CS146S(斯坦福《现代软件开发者》)Week 4-8 的完整学习笔记,覆盖:智能体管理与 Claude Code 方法论(W4)→ 现代 AI 开发工具产品原则(W5)→ AI 测试与安全(W6)→ AI 代码审查(W7)→ 多栈 AI 应用构建(W8)。
一条主线串起来:W4 教你当 agent 管理者 → W5 教你好的 AI 工具长什么样 → W6 警示 AI 写码后的安全护栏 → W7 验证 AI 审查可不可信 → W8 放飞用 AI 构建多栈应用。
一、Week 4:编码智能体模式(Agent Patterns)
本周为 Boris Cherny(Claude Code 创建者)的两场讲座:浓缩版「How to be an Agent Manager」+ 完整版「Welcome to Claude Code」。⚠️ 仓库 PDF 有坑:4_1 文件名标为 Silas Alberti,内容实为 Boris Cherny。
1.1 How to be an Agent Manager(如何当智能体管理者)
核心转变——开发演进的四个阶段:
单开发者管理自己产出 → Lead 管理多人产出 → Lead 管理多人+AI辅助 → 单开发者管理一群AI agent
最终形态:你从「写代码的人」变成「agent 的产品经理」。
任务分工(谁做什么):
| 步骤 | 谁做 |
|---|---|
| 提供高层需求 | 🟩 人类 |
| 需求转成设计文档 | 🟩 人类 / 🟦 agent |
| 按文档实现 + 加测试 + 跑 CI + code review + 更新文档 | 🟦 Agent |
指挥 agent 的四大技术:
- Agent 行为文件:
CLAUDE.md/.cursorrules/AGENTS.md(告诉 agent 仓库规矩) - Hooks:确定性脚本,挂到特定事件(
PreToolUse/PostToolUse/UserPromptSubmit/PreCompact) - Commands:把常用 prompt 存成可执行命令(跑测试、审查代码、git commit/push)
- Subagents:运行时委派,给不同工作流独立人格/工具集/上下文窗口——「agent 管理 agent」的方向
管理者 Best Practices:
- 需要兜底(backstops):仓库测试 + CI/CD 规范
- 可审计性:每个 agent 产生的 diff 都要标注来源
- 不同难度任务用不同模型;复杂任务多 handhold、简单任务全异步
- 频繁 checkpoint commit
开放问题:怎么自动化任务前 10-20% 的「研究阶段」?怎么维护待办任务队列?
1.2 Welcome to Claude Code(Boris 完整版)
tl;dr:① 编程正在改变 ② 用 Claude Code 选你的路 ③ 想六个月后的未来。
宏观判断:编程语言生产率指数增长(FORTRAN→C→Python→TS→Go/Rust),IDE 生产率同样指数增长(ed→Eclipse→Copilot→Devin→Claude Code)。验证技术也在快速演化:手动调试 → 静态类型 → 自动化测试 → CI → property-based testing → e2e → chaos testing → AI 漏洞测试 / AI 单测 / AI fuzz / self-play。
Claude Code 的方法:终端原生(terminal-native)、低层模型访问、无限可 hack(npm i -g @anthropic-ai/claude-code)。
一个核心,五种形态:
terminal ⊂ IDE ⊂ Web & iOS ⊂ GitHub App ⊂ SDK(claude -p 可编程管道)
SDK 形态能组成 Unix 管道,如:
get-gcp-logs 1uhd832d | claude -p "correlate errors + commits" --output-format=json | jq '.result'
四大使用场景:
- 代码库 Q&A + 研究:翻 git 历史回答「为什么修了 #18363」这类问题
- 写代码:1-shot / sidekick(结对)/ prototype(原型)
- 集成工具与 MCP:
claude mcp add barley_server -- node myserver - 自动化:把 agent 嵌入数据管道
核心方法论——让工作流适配任务:
- 复杂任务:
explore → plan → confirm → code → commit(先调研,让用户选方案再动手) - 测试先行:
tests → commit → code → iterate → commit - 前端:
code → screenshot → iterate(对着截图迭代到像为止)
给 AI 产品人的三条教训:
- 为六个月后的模型而构建——别按今天模型的局限设计产品
- 随时准备进化
- 别问模型能为你做什么——问你能为模型/生态做什么
二、Week 5:现代终端(Zach Lloyd / Warp CEO)
主题「Building a Breakout AI Developer Product」——7 条现代 AI 开发工具产品原则:
| # | 原则 | 要点 |
|---|---|---|
| 1 | 从开发者已知的出发 | IDE 心智→Cursor、终端→Warp、聊天→Bolt;代码与自然语言随时切换 |
| 2 | 配置灵活性 | 普通用户零配置开箱即用;熟练用户深度可配(prompts/project rules/MCP);模型无缝切换 |
| 3 | 开发者人体工学 | 能省一次击键就省;零上手摩擦(「5 分钟震撼」) |
| 4 | Chat 是一等公民 | 代码是意图的别扭表达,未来更多直接说自然语言 |
| 5 | MCP 集成 | MCP = LLM 与现实世界的通用语 |
| 6 | 快速反馈回路 | 面板/仪表盘随 prompt 近实时变化;可解释性是一等公民 |
| 7 | Agent 工作流 | 实质任务全自主;人类介入度可调(agent 问澄清 → YOLO) |
开放问题:code review/app 构建/监控等点方案会不会整合成 all-in-one?AI IDE → AI 终端 → AI 浏览器怎么演进?个性化 agent 规则的统一标准是什么——AGENTS.md 是第一步,不会长期停留在 .cursorrules/CLAUDE.md 各自为政。
三、Week 6:AI 测试与安全(Isaac Evans / Semgrep CEO)
为什么:当 LLM 写你大部分代码时,需要大量护栏。软件错误 = 用户信任崩塌 + 巨额成本。
三大漏洞检测技术(本课核心概念):
| SAST | DAST | SCA | |
|---|---|---|---|
| 全称 | 静态应用安全测试 | 动态应用安全测试 | 软件成分分析 |
| 视角 | 🟦 白盒 | ⬛ 黑盒 | 📦 依赖分析 |
| 时机 | SDLC 早期 | SDLC 全程 | 持续 |
| 手段 | 源码/二进制模式匹配 | fuzzing、会话 token 操纵、header 测试、暴力速率限制 | 包元数据、传递依赖、漏洞库匹配、工件扫描 |
| 特点 | 便宜、发现早、误报高 | 模拟真实黑客、误报低 | 管开源依赖 |
AI 的双刃剑:
- 坏(新攻击向量):详见下文专节
- 好:「Shift left」更易落地——LLM 进工作流发现问题、自动化渗透测试
3.2 AI Agent 的新型攻击向量(讲座重点)
随着 AI Agent(Copilot / Cursor / 各类 Coding Agent)获得执行代码、调用工具、读写文件的权限,攻击面发生了质变。五个核心攻击向量:
① Prompt Injection(提示注入)
- 定义:向生成式 AI 系统输入隐藏或误导性指令,使其偏离预期行为
- 本质:利用 AI 对输入文本的「无条件信任」
- 案例:攻击者在代码注释、文档、网页中嵌入隐藏指令,当 AI Agent 读取这些内容时,就会执行攻击者想要的操作
② Tool Misuse(工具滥用)
- 定义:通过欺骗性提示操纵 Agent,使其滥用已集成的工具
- 案例(讲座截图):攻击者在源码中注入提示 → Agent 被诱导修改
settings.json→ 添加一个恶意的 MCP 服务器配置 → 系统立即启动该 MCP 服务器——相当于在用户机器上打开了后门 - MCP 补充:Model Context Protocol 是 Anthropic 提出的开放标准,让 AI 模型安全连接外部工具和数据源。但如果 Agent 能随意修改 MCP 配置,它就变成了攻击通道
③ Intent Breaking(意图破坏)
- 定义:操纵 Agent 的执行计划,把行动从原始目标上转移
- 场景:用户让 Agent「优化代码」,攻击者通过注入让 Agent 实际执行「删除日志文件」或「把敏感数据发送到外部」
④ Identity Spoofing(身份伪造)
- 定义:利用被攻破的认证机制,伪装成合法 Agent
- 风险:多个 Agent 互相调用时,一个被攻破的 Agent 可以冒充合法身份向其他系统发出恶意请求
⑤ Code Attacks(代码攻击)
- 定义:利用 Agent 执行代码的能力,获取执行环境的未授权访问
- 本质:Agent 通常有代码执行权限(跑测试、构建项目),攻击者诱导其执行恶意代码
- 案例:诱导 Agent 运行
os.system('open -a Calculator')或更危险的系统命令
3.3 AI 用于安全的局限性(Semgrep 的诚实反思)
讲座坦诚指出当前用 LLM 做安全检测(AI SAST)的问题:
| 局限性 | 详细说明 |
|---|---|
| 极高的误报率 | Claude Code / Codex 等工具在某些漏洞上误报率可达 50-100%;传统 SAST 已经是 50%+,AI 并没有明显更好 |
| 基准测试不切实际 | 现有评测基准往往过于简单或脱离真实代码库,难以评估 LLM 真实能力 |
| 非确定性分析(Nondeterministic) | 同一提示运行多次结果不同——你无法确定是否漏掉了漏洞 |
| 上下文衰减(Context Rot) | 并非所有上下文对 AI 同等重要,AI 可能忽略关键的安全相关代码 |
| 压缩问题(Compaction) | 为塞进上下文窗口,代码被摘要/压缩,导致安全细节丢失 |
开放问题:怎么降误报幻觉?怎么验证 LLM 补丁安全且不引入回归?AI 应该解释为什么 flag 吗?正确基准是什么?AI 补丁引入漏洞,谁负责?
四、Week 7:现代软件支持(AI 代码审查)
💡 本地无 PDF,主题聚焦 Code Review,作业基于 Graphite。
课程主题:我们能信任哪些 AI 代码系统 / 调试与诊断 / 智能文档生成。
作业:「Exploring AI Code Review Using Graphite」
- 在更复杂的 full-stack 代码库上,用 AI 工具 1-shot 实现 TASKS.md 的任务
- 每任务一个分支 → 人工逐行审查(可结对互审)→ 开 PR(含问题描述/测试记录/权衡取舍)
- 用 Graphite Diamond 生成 AI 审查,在 writeup 里对比「你的评论 vs AI 评论」
- 反思:AI review 何时比人强/弱?今后对 AI 审查的信任阈值?
配套:Graphite 30 天试用,教育计划码
CS146S。
阅读材料体系(理解 AI 审查的完整视角):
- 为什么必须做 code review(业界经典帖)
- GitHub 员工视角的审查哲学
- AI 辅助审查的实证研究(arxiv)
- AI 代码审查落地最佳实践(Graphite):AI review ≠ 静态分析器——能理解上下文、提建议、甚至生成修复;收益 = 效率 / 一致性 / 知识共享 / 降低认知负荷 / 持续改进;流程 = 选工具 → 配置 → 跑起来 → 衡量
- 数百万次 AI review 的经验谈(YouTube)
五、Week 8:自动化 UI 和应用程序构建
💡 本地无 PDF 也无阅读材料清单,作业是唯一锚点。
主题:面向所有人的设计和前端开发 / 用 prompt 快速做 UI/UX 原型迭代。
作业:「Multi-Stack AI-Accelerated Web App Build」
同一个功能应用用 3 个不同技术栈各做一版,端到端可用(前端+后端+持久化):
- 硬性要求:
- 至少一版用 bolt.new(AI 应用生成平台,课程发 3 个月 Pro 码)
- 至少一版前端或后端用非 JS 语言(Django / Rails)
- 最低功能范围:CRUD 一个主资源 + 持久化存储 + 基本校验/错误处理 + 可用的简单 UI + 运行说明
- 交付:3 个独立项目文件夹(源码 + README + 生成后偏差/手工修复记录)+ writeup(应用概念 + 3 版描述)
Bolt 使用提示:从干净 prompt 描述应用概念/实体/路由/UI 流开始;在 prompt 里写清数据模型和关系;迭代式细化 CRUD/auth/前端组件 prompt;每版保持隔离防依赖冲突;生成代码导出提交为独立项目。
六、一页速查表
W4 智能体管理 ── 你 = agent 的产品经理
├─ 指挥技术: 行为文件 / Hooks / Commands / Subagents
├─ Claude Code 方法论: explore→plan→confirm→code→commit; 测试先行; screenshot 迭代
└─ 产品教训: 为六个月后的模型构建; 随时进化; 问你能为模型做什么
W5 7 条产品原则 ── 已知界面出发 / 零配置开箱+深度可配 / 人体工学 / Chat 一等公民
/ MCP 通用语 / 快速反馈回路 / Agent 工作流
W6 测试与安全 ── SAST(白盒早) / DAST(黑盒黑客) / SCA(依赖成分)
└─ AI 新威胁: Prompt injection / Tool misuse / Intent breaking / Identity spoofing / Code attacks
W7 AI 代码审查 ── 1-shot 实现 → 人工逐行审 → PR → AI 审查对比
└─ 信任问题: AI 何时比人强? 误报/非确定性/context rot 是软肋
W8 多栈构建 ── 同一应用 × 3 栈(bolt.new 一版 + 非 JS 一版)
└─ 核心: 数据模型写进 prompt, 迭代细化, 隔离分版
一句话总结:从本周开始,你的角色正式从「写代码的人」变成「管理 agent 的人」——W4 给你指挥方法,W5 给你产品眼光,W6 给你安全护栏,W7 教你别盲信 AI 输出,W8 让你体验「一句话生成整个应用」然后亲手修补它。
Enjoy Reading This Article?
Here are some more articles you might like to read next:
- Google Gemini updates: Flash 1.5, Gemma 2 and Project Astra
- Displaying External Posts on Your al-folio Blog
- Agent 评测体系与评测集构建——美团《评测漫谈》+《评测白皮书 01》笔记
- 多模态 LLM 用户智能体做推荐系统离线 A/B 测试
- 自我改进 Agent 统一拆解:θ / Σ 双路线
- CS146S 学习笔记:从 Prompt 技术全景到 AI IDE 设计文档规范
- 二分查找双模板 + searchInsert 逐行拆解:从模板到边界
- Agent Memory 全景:30 个记忆技术的模块化拆解
- LightRAG 深度解析:简单快速的图增强 RAG
- 双指针算法复盘总结:从元素思维到边界思维