开发一个AI Agent 难不难?提示词工程、上下文记忆、任务编排

开发一个自己的AI Agent到底需要哪些技术知识?在网上搜索相关的信息,什么提示词工程,上下文记忆,任务编排,听着都是既抽象又难理解的概念,看得脑袋都疼。
后来想起来AutoGLM 应该也是AI Agent,智谱把它开源了,代码也不多。不如先从它的代码看起,先直观了解一下AI Agent到底是怎么一回事。

Agent 到底在干什么?

简单读了一下源码,发现它也没想象的那么复杂,可以说简单到让你都觉得离谱。
输入指令:“帮我打开小红书,搜一下美食攻略。”
人会如何操作?先看一眼屏幕 → 脑子想"小红书图标在哪" → 手指点一下 → 再看一眼确认打开了 → 然后点搜索框 → 打字…… 。 AI Agent做事流程一模一样。

看(截图) → 想(大模型推理) → 动(执行动作) → 再看(新截图) → 再想 → 再动……

就是一个循环。从头跑到尾。
在这里插入图片描述

AutoGLM的核心代码在agent.py里,一个while循环,没有调度器,没有任务队列,没有状态机。

总结功能就三块:提示词怎么写、上下文怎么记、遇到意外怎么处理。

一、提示词工程

提示词工程这个概念听起来高大上,到底做了什么?脑子里没有概念。翻看了一下AutoGLM的提示词设计,抽象的概念马上有了直观的感受。

在这里插入图片描述

提示词工程是一套用来引导大模型输出精准、符合预期结果的方法论、技巧,范式与优化手段。抽象的概念不好理解,我们来看一下AutoGLM的提示词是怎么设计的。

  • 1.身份定义

    “你是一个智能体分析专家,可以根据操作历史和当前状态图执行一系列操作来完成任务。”

  • 2.输出格式约束

    {推理} + {action}

  • 3.动作说明书

    → Launch / Tap / Type / Type_Name / Swipe / Long Press / Double Tap
    / Back / Home / Wait / Take_over / Interact / Note / Call_API
    → 每种操作都配有:用途说明 + 参数格式 + 特殊注意事项

  • 4.硬性规则

    涵盖了各种边缘情况:网络错误重试、滚动查找逻辑、购物车状态管理、敏感操作确认、死循环避免、操作生效验证等

先拿点击操作举例,坐标怎么算

AutoGLM的处理方式挺妙的。把屏幕统一映射成0到999的坐标系统,不管什么分辨率。

“坐标系统从左上角(0,0)开始到右下角(999,999)结束”

就这么一句话。模型只需要说"Tap [100, 200]",代码自动换算成实际像素。一个Prompt规则解决了一个工程问题。

点歪了怎么办

AutoGLM的做法依然是写规则。

在这里插入图片描述

“如果点击没生效,可能因为App反应较慢,请先稍微等待一下,如果还是不生效请调整一下点击位置重试,如果仍然不生效请跳过这一步继续任务。”

三级处理:等 → 换位置 → 跳过。全写在Prompt里。

Prompt工程到底做了些什么?

  1. 输出格式——你得告诉模型你要它输出什么格式(比如do(action=xxx)这种伪代码)。
  2. 操作规则——遇到什么情况怎么处理,上面例子全是这个。
  3. 边界条件——什么时候放弃、什么不能做。
  4. 输入内容——每一步要给模型看截图、当前应用信息、历史对话。

这些东西在传统代码里需要使用分支判断,状态切换,异常处理。在Agent里,将这些逻辑通过自然语言描述的方式放到Prompt里了,这些逻辑都由ai来完成。

二、上下文记忆

模型如何记住用户之前说了什么?

拿点奶茶举个例

用户:“帮我点一杯海盐咖啡。”

第1步,模型收到的信息是:系统提示词(上面那些规则)+ 用户说的话 + 当前手机截图。
模型想了想,决定先打开美团。输出Launch(美团)。

第2步,模型收到的信息变成:系统提示词 + 上一轮的思考和动作 + “帮我点一杯海盐咖啡”(还在!) + 新的截图(美团已经打开了)。
模型看到新截图:哦,打开了,接下来要搜索。输出Tap(搜索框)。

第3步,又收到:系统提示词 + 前两轮完整对话 + “帮我点一杯海盐咖啡”(还在!!) + 新截图(搜索框已经点开了)。

模型:好,输入"海盐咖啡"。输出Type(“海盐咖啡”)。

看出门道了么? 模型为什么能一直记住"海盐咖啡"?

因为每一轮都把这句话重新发给了它。

就是这么简单粗暴。每次循环,前面所有对话全部塞给模型。这就是AutoGLM的"上下文记忆"——没有技术含量,纯堆上下文窗口。

做了唯一的优化

一直累加上下文不是越来越长吗?那消耗的token不是越来越多吗?

图片使用token比较多,对图片做Base64处理之后,生成的文本会非常的大,非常的消耗token。AutoGLM做了唯一一个优化:每一轮推理完,立刻把这一轮的图片从历史上下文里删掉。

只保留文字,删掉图片。文字虽然也在累积,但好歹比图片小得多。

一个直观的比喻:就像你一边跟人打电话一边做笔记,每次说新的话之前,都要把前面所有的笔记重新念一遍给对方听。

没有向量数据库,没有embedding,没有RAG。就是简单的历史对话拼接。 但够用了。

一开始我也感觉奇怪,以为自己理解错了。但代码就这么写的,没有RAG技术,就是每轮把之前说过的话再发一遍。

三、任务分解与编排

前面说的都是单步操作,但几十步的操作怎么处理?如何决定先干什么后干什么?
按传统思路:写状态机、画流程图、堆if-else。AutoGLM如何处理的呢?复杂的任务分解与编排也交给模型处理。

还是点咖啡,但这次出了意外

正常流程:打开美团 → 搜索"海盐咖啡" → 找到商品 → 加购 → 下单。真实环境下有可能出现各种意外。

意外1:App没打开

第1步,模型说Launch(美团)。执行完了,新截图来了——桌面图标闪了一下,但App没起来。模型看到截图:咦,怎么还在桌面?规则3说了,页面没加载出来就先等等,等三次还不行就重新进。于是模型决定:等两秒 → 重新Launch。

意外2:搜索出来是拿铁

模型搜了"海盐咖啡",结果列表第一个是"海盐拿铁"。模型看到截图:嗯?不是我要的。规则5说了,找不到目标就滑动查找。于是它往下滑了一下,找到了真正的"海盐咖啡"。

意外3:点加入购物车没反应

模型找到商品了,点"加入购物车",没反应。新截图来了,还在商品详情页。规则14:点击没生效 → 调一下位置重试。这次换了个坐标点,成功了。

在这里插入图片描述

最神奇的是,这些"纠错逻辑"里没有一行代码去判断"当前是不是出错了"。 代码只干了三件极简单的事:模型崩了就结束任务(总比乱操作强);模型输出解析不了就将内容直接展示给用户;操作执行报错了不终止循环,给模型一次机会重来。真正的纠错逻辑全在Prompt规则里。
规则2是"进错页面就按返回",规则3是"加载不出来等三次",规则5是"找不到就滑一滑",规则14是"点不中就换位置"。
你把Prompt里的每条规则,想象成传统代码里的一个if判断。 只不过这些if-else是自然语言写的,由模型自己判断"当前情况匹配哪条"。是不是一下就理解了?

核心就这些东西

一个while循环。一个塞满规则的Prompt。一个不断追加的聊天记录。
看完代码我最大的感受不是系统好复杂,而是感觉设计很巧妙。厉害的不是代码,是思路。提示词的巧妙设计把传统工程里那些需要if-else、状态判断、异常处理的活,全用自然语言安排给大模型去做了。
当然,复杂产品肯定不止这些。场景复杂了,任务队列、并行执行、记忆压缩、RAG检索这些东西都会往上堆。但核心骨架就是这三块,万变不离其中。
所以如果你也想搞一个自己的Agent,找个AutoGLM这样的小项目,把循环、Prompt、上下文这三样搞明白,比啥都强。了解了这些简单的技术,再去研究复杂的技术,就容易多了。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐