CS146S 第二课:编程 Agent 运行框架要点
根据用户提供的课堂文本记录归纳。仅保留原文观点,不补充外部知识;各节附原文时间范围,便于回查。讲者的推测仍按推测表述。
一、本课讲什么?
从上一课的简单 Agent 循环,进一步拆解成熟编程 Agent 外围的运行框架(harness)。
上一课用约 150~200 行代码实现了理解请求、读取和修改文件的基本能力。
本课关注模型外围的系统如何工作,不讨论模型训练及内部参数。
原文位置:07:58~10:20。
二、运行框架包含什么?
模型与工具之间的循环仍是核心,其他组件围绕这个循环提供支持。
核心过程:用户提出请求 → 模型回复或请求工具 → 执行工具 → 把结果交回模型。
外围组件包括系统提示词、配置文件、工具列表、计划模式、技能、子 Agent、钩子和上下文压缩。
这些设计原则也可用于销售、法律、客户支持等领域的 Agent。
原文位置:10:20~16:38。
三、工具、MCP 与请求追踪
工具让模型能够操作外部世界;工具定义也会占用上下文,因此需要控制数量和复杂度。
工具说明要清楚:名称、描述、函数签名等信息会提供给模型,帮助它判断何时调用、如何传参。
MCP 用于接入外部工具和资源:课堂演示通过代理捕获请求和响应,在 JSON 中查看消息、工具定义及运行框架注入的信息。
工具越多,上下文负担可能越大:在演示的请求中,加载的 MCP 工具会随请求一起发送。无关内容过多,可能影响任务表现。
优先考虑少而强的工具:讲者以 Bash、SQL 为例,说明少量通用工具也能完成很多操作。
技能采用渐进式披露:先提供少量元数据,需要时再加载完整内容,避免一开始就放入全部信息。
原文位置:16:38~34:30。
四、系统提示词与记忆
系统提示词规定模型怎样行动;记忆则为后续任务提供可继续使用的信息。两者都会影响上下文。
系统提示词由运行框架设置:规定身份、行为边界、环境信息,以及使用记忆等机制的方式,随请求发送。
记忆可以保存在文件中:演示中的提示词规定了记忆的存储位置和写入格式。讲者根据路径推测,该示例中的记忆属于项目级别。
记忆不必等同于系统提示词:讲者将它视为独立的信息块,与其他块一起组成发给模型的提示内容。
复杂检索不一定更好:RAG、GraphRAG 相比直接解析普通文本,未必总有明显优势,应结合任务和基准测试判断。
系统提示词也需要精简:讲者观察到其长度缩短,并推测部分原本需要明确说明的能力已被模型训练吸收。
原文位置:34:30~42:44。
五、CLAUDE.md 与 AGENTS.md
这是用户能够编写的 Agent 配置,用于提供项目背景和工作指引。
系统提示词由运行框架设定;这类配置文件则由用户控制,并被注入模型上下文。
适合包含项目结构、运行测试和启动服务器的必要命令。
保持简洁,避免加入整块代码或过多约束,以免限制模型发挥。
原文位置:42:44~48:03。
六、计划模式
先与用户澄清需求、探索代码和设计方案,最终形成计划文件。
进入计划模式后,运行框架注入专门的提示词,引导模型完成规划。
演示中的流程包括理解需求、探索代码库、设计、评审、形成最终计划和退出计划模式。
示例任务是为待办事项应用增加周期性提醒,如“每周给植物浇水”。
原文位置:48:03~51:14。
七、技能(Skills)
技能把多步操作写成流程,将提示词、工具调用、脚本等组织起来。
MCP 工具更接近一次输入—输出操作;技能可以组合多个步骤和工具。
技能既可由用户明确要求调用,也可根据任务上下文主动调用。
课堂用
SKILL.md定义“检查代码质量”技能;调用时,运行框架将文件内容加载到上下文中。
原文位置:31:25~32:19、51:14~53:30。
八、子 Agent、钩子与上下文压缩
把部分工作交给独立上下文中的子 Agent,或把长对话压缩成摘要,都有助于管理上下文。
子 Agent:主 Agent 委派任务,子 Agent 在自己的新上下文窗口中工作,完成后返回结果。这样可以并行处理,也减少主上下文承载的探索内容。
上下文压缩:根据专门提示词生成摘要,用摘要替换被总结的上下文;既可以自动触发,也可以手动调用。
钩子:课堂只提及这一组件,没有展开其机制。
原文位置:53:40~57:04。
九、讲者最终想强调什么?
运行框架设计应重视简洁,充分利用底层模型能力,谨慎控制上下文负担。
模型能力与运行框架设计之间存在投入取舍,行业观点会来回变化。
讲者观察到的趋势是工具更少但更强、提示词更短,并更多依赖模型本身的能力。
“dumb zone”是模型开始变得不那么有效的非正式说法,避免进入这一状态与上下文工程密切相关。
原文位置:55:25~结尾。