开云 旁听斯坦福的AI编程课(第三讲): 我方动手, 搭一个编程Agent

发布日期:2026-03-01 12:24    点击次数:59

开云 旁听斯坦福的AI编程课(第三讲): 我方动手, 搭一个编程Agent

系列条记:斯坦福公开课 CS146S: The Modern Software Developer,主讲东说念主 Mihail Eric。前两讲分辩讲了LLM是怎么真金不怕火成的,以及怎么写好提醒词。这一讲,径直启动动手。

前两讲齐是”讲风趣风趣”——LLM的旨趣是什么,提醒词怎么写才有用。这一讲Mihail掀开末端,从零启动,当着课堂的面,手写了一个编程Agent出来。

课件唯一寥寥几张幻灯片。因为这一讲的中枢不是PPT,是代码。

但我认为这种安排自身即是一个信号:Agent莫得你遐想的那么难懂。

那张图,评释了一切

这一讲开场Mihail放了一张架构图,图注唯一四个字:It’s that simple.

{jz:field.toptypename/}

图里画的东西也确乎浮浅:

用具(Tools)

就这样一张图。用户和Agent交互,Agent和LLM交互,LLM在需要的时期告诉Agent调用什么用具,Agent推行完把成果复返给LLM,LLM再继续激动任务。

淌若你看过上一讲讲的Tool Use,这个架构应该一眼就能看懂——它即是Tool Use加上一个执续的对话轮回。

但”浮浅”和”容易搞了了”不是一趟事。这张图背后有几个关键的遐想,每一个齐值得细想。

三个扮装,一个轮回

在动手写代码之前,Mihail先过了一遍主意,把上一讲的术语在Agent的语境下再行说明了一遍:

System Prompt:给通盘这个词Agent定性。它法则了这个Agent是谁、能作念什么、怎么作念、际遇什么情况怎么响应。这是Agent的”灵魂文献”,写得好不好,径直决定Agent的举止界限。

User Prompt:用户的及时输入。”帮我修这个bug”、”给这个函数加单位测试”,这些齐是User Prompt。

Assistant:LLM生成的内容。只怕期是一段话,只怕期是一个用具调用肯求,只怕期两者齐有。

这三种扮装瓜代出现,禁止往对话历史里追加,组成了通盘这个词Agent运行的高下文。Agent骨子上即是在管制这条禁止增长的对话流。

动手搭一个最小可用的编程Agent

Mihail现场演示的Agent,中枢逻辑其实就这几步:

第一步:执续读取末端输入,追加到对话历史。

用户说一句话,就往历史里加一条user音问。LLM回一句话,就往历史里加一条assistant音问。对话一直转动,高下文一直增长。

第二步:在System Prompt里告诉LLM它有哪些用具不错用。

用具不需要许多,一个最小的编程Agent只需要三个:

- read_file:读取某个文献的内容

- list_dir:列出某个目次下的文献

- edit_file:修改某个文献的内容

第三步:LLM在合适的时期发出用具调用肯求。

比如用户说”帮我望望 main.py 里第42举止什么会报错”,LLM不会杜撰猜,它会先发一个用具调用:read_file("main.py")。

第四步:Agent在腹地推行这个用具,把成果复返给LLM。

读文献、列目次、写代码,这些操作齐是在你的腹地机器上实在推行的。LLM只负责”有打算”,Agent负责”推行”,推行成果再喂回给LLM。

第五步:LLM拿到用具成果,继续激动任务。

看完毕 main.py 的内容,LLM现时知说念问题在哪,于是发出下一个指示:edit_file("main.py", ...),把设立写进去。

就这样,开云体育官网一个推行-不雅察-有打算-推行的轮回就跑起来了。

我第一次我方搭Agent时的感受

这一讲让我想起了我我方第一次妥当搭Agent用具的履历。

其时的需求是:匡助拓荒者把Splunk的查询话语(SPL)自动休养成Timeplus的流式SQL。这是一个需要相接两种查询话语语义、还要处理许多界限情况的任务。

咱们一启动想得很复杂,认为这需要有益老练一个模子,大概搭一套很精密的法则系统。自后履行试下来,发现用一个带有用具调用的Agent就能作念大部单干作:

read_spl_docs:读取SPL语法文档作为高下文

validate_sql:考据生成的SQL是否能在Timeplus上推行

{jz:field.toptypename/}

run_test_query:跑一条测试查询四肢果是否合适预期

和Mihail演示的阿谁最小Agent比起来,咱们的用具多了几个,但中枢轮回是一模相同的——读高下文、生成输出、推行用具、考据成果、修正、再来一遍。

复杂的Agent,时时仅仅在这个浮浅轮回上叠加了更多的用具和更细腻的System Prompt。 内核并莫得变。

Claude Code的”微妙配方”

这一讲最让我感兴趣的部分,是Mihail展示的Claude Code里面责任机制的几个细节。他管这叫”secret sauce”——虽然,能公开讲的笃定不是什么信得过的玄妙,但这几点确乎很有启发:

1. 用小而精确的提醒词前置加载高下文(Front-load with tiny targeted prompts)

不是把代码库的通盘内容一股脑塞进去,而是在职务启动时,用几个精确的小提醒词先把最相关的信息加载进来。精确比全面更迫切,因为高下文窗口是有限的,况且并非通盘token的足下率齐相同高。

2. 到处埋标签来瞩目”飘移”(Drift Prevention)

这是一个很灵巧的工程妙技。跟着对话越来越长,LLM对早期系统提醒里界说的举止程序的”回想”会逐渐松开——它启动健无私方应该怎么作念、不该作念什么。

Claude Code的解法是:不单在最启动的System Prompt里写法则,而是在通盘这个词对话流里,包括用具调用的请乞降复返成果里,齐按期插入标签来重迭关键指示。

你是一个编程助手。在修改任何文献之前,先说明文献旅途存在。

修改完成后,老是运行相关的单位测试来考据。

这很像流处理里的”心跳机制”——系统需要按期发送信号来保执某种情景的活跃,不然它就会偷偷超时消散。LLM对指示的”回想”也需要近似的按期刷新。

3. 指示前缀索取(Command Prefix Extraction)

用户的输入时时搀杂着意图、布景、心思。Claude Code在处理用户输入之前,先作念一步结构化索取,把履行的指示和其他内容分开。这样LLM处理的是干净的指示,而不是一大段需要我方阐明的当然话语。

4. 产生子Agent(Spawns Sub-agents)

当任务复杂到高下文窗口装不下的时期,Claude Code会启动子Agent来分摊责任。每个子Agent负责一个子任务,有我方零丁的高下文窗口,完成后把成果陈说给主Agent。(OpenClaw也给与了近似的遐想)

这是今天大型Agent系统里越来越常见的架构步地。单一Agent的高下文窗口是物理放弃,绕不外去,多Agent配合是现时最实用的工程解法。在流处理的语境里,这有点像把一个复杂的流式诡计图拆成多个子图并行处理,临了再作念积攒——分治的想路,换了一个载体。

把这几点串起来

回偏执来看,这一讲传递了一个很暴露的信息:Agent莫得魔法,唯一工程。

一个编程Agent的最小内核,是执续的对话历史 + 用具调用轮回。Claude Code这样的家具,骨子上亦然这个内核,仅仅在上头叠加了更细腻的高下文管制、防漂移机制、任务判辨才调。

相接了这个内核,你就能:

判断什么场景适合用Agent,什么场景不需要

知说念Agent出了问题往哪个所在找原因(高下文?用具?提醒词?)

有才调把柄我方的需求定制和延长Agent的举止

Mihail说这门课不是”氛围编程”课。这一讲他用行动讲授了这小数——他莫得告诉你去用哪个用具,而是让你我方把用具造出来,这样你才调信得过相接用具在作念什么。

下一讲继续更新。

系列条记执续更新。课程贵府参考:themodernsoftware.dev,斯坦福 CS146S,主讲东说念主 Mihail Eric。





Copyright © 1998-2026 开云体育中国官方网站™版权所有

xxjlzg.com 备案号 备案号: 

技术支持:®开云体育  RSS地图 HTML地图