对 AI Agent 的探索
AI Agent 在今年格外火热,蓬勃发展。身边不少同学纷纷用上了最新的 Agent 来写代码或者做科研,看得我心里痒痒。于是,这学期我用了不少时间来了解 Agent 的开发和机制。下面是我对 Agent 的一些探索和感悟。
Agent 的边界 —— 一次失败的 Vibe Coding 尝试#
学期初,借着CodeX免费的时间窗口,我尝试以完全“vibe coding”方式开发一个排版语言系统,希望 AI 帮我完成一直想做但架构不清的项目。结果发现:Coding Agent 以“完成任务”为导向,缺乏系统思维,代码几乎不可审查与维护。与 AI 斗争一周多后放弃,决定自己重写,但又在架构设计上遇到知识瓶颈(缺乏布局排版领域知识),最终搁置。
教训:AI 只能用于我能审查或自己就能完成的局部代码。这次尝试决定了我至今的写代码方式:手写为主,AI 为辅。这还是两年前的模式,听起来似乎有些原始了。当然,对于大量的一次性代码,AI 仍然是非常有用的工具;而涉及到系统构建等长期项目,我实在不敢完全交给AI。
其实我挺想和别人讨论一下这个项目下面具体应该怎么做的,不过自己实在缺少这方面的经验,也没有大量的时间去专门研究这种“不务正业”的事。
Agent 开发#
虽然 AI 做事还不够令人放心,但能操作电脑的 Agent,何尝不是“具身智能”,得深入了解一下 —— 所以我实现了一个 Agent。
从 API 开始 —— 白嫖网页 AI#
我先写了一个小项目,将免费网页AI封装为API调用(用于省钱)。
白嫖不是很道德……完成不久后就曝出有人用同类工具做中转站倒卖,逼得deepseek关闭了专家模式的文件上传和联网搜索
虽然属于重复造轮子,但和其他同类项目比,我的实现最大的亮点在于:充分利用了网页AI自带的上下文管理,封装了其他项目普遍未实现的 OpenAI Responses API。
为了完成这个项目,我翻遍了OpenAI的文档,算是补齐了 Api 调用的细节。其他涉及到请求分析、前端逆向、流式处理等;我还用提示词工程实现了工具调用和ID模拟,在用户提示词内尽可能复原了 AI 的核心功能。
我将该工具接入了 CodeX 和 Copilot,看到了这些工具的提示词到底是什么样的:非常大段的人设和约束,非常多的环境描述,还有巨量工具。
最近我看到有大量的教程,说如何将XXX接入XXX,比如 CC-switch。这类工具本质上也就是做了一个“API封装”,拦截请求、修改一下字段而已,和我的实现有重合。
Agent 实现#
在上述工具的基础上,我将其接入了自己写的 QQAgent,以处理日常问题。在我之前写的 QQbot 的基础上,完成这些并不难:以前需要按照某个格式发消息以触发某个功能,现在变成了自然语言触发——只要将之前的功能封装为函数、并配上描述即可。
接入 AI 也带来了一些新的东西。我试着简单实现了当前流行的 Agent 机制,比如:
- 计划-执行-总结的循环
- 上下文压缩
- 长期记忆归档(比如记住某个人)
- 运行隔离
现在的 QQAgent 除了在群内闲聊,还能处理群文件、总结记录等。
一点感悟#
整个过程中,我将“Token输出到问题解决”的完整链路都亲手做了一遍。坦白说,Agent 果然是“新时代的前端”——都是苦力活,没有技术难度,祛魅。“只要你学得够慢,就什么都不用学”——从之前的 LangChain 甚至 LangGraph,到现在不用框架、从之前的 Markdown 到现在的 HTML、从之前的 MCP 到现在的 Skills,追逐着工具的迭代仿佛一直在进步,但是并没有实质性的突破。把握住本质,就不怕工具的迭代。
在24年就有人喊我进行Agent开发。我当时认为,Agent开发不过就是提示词工程,尽可能收集更多上下文,并合理组织,归结到底还是字符串的拼接。这个概括可能有些武断,但做了这些事情后,我依然坚定这个看法。但做一个demo很容易,做一个产品很难。我的目的只是了解其核心机制,至于产品方面的打磨,实在没有心思和精力去做。我认为了解到这个程度,应该就足够了。
从虚拟身体到物理身体#
当下 Agent 几乎全部用于“编写代码解决问题”,无论是什么领域。比如 Figma、SolidWorks、Ansys 的 AI 都是给出了操作的 API,让AI进行调用。在“具身智能”刚兴起的时候,我的第一想法是:把机器人的控制封装为函数,让 AI 调用就行了。后来确实看到有按这个思路做的机器人。那么,虚拟身体 Agent 的成功,能否启发物理身体 Agent 的发展呢?我觉得是可以的。
“好马配好鞍”,开发过程中能直接感受到机制给Agent带来的能力提升。比如从最基础的“调用-反馈”循环,变为“计划-调用循环-总结”循环,就能让 Agent 执行长线任务更加稳定。我称之为“机制智能”或者“流程智能”。而所有机制中,我认为最重要的是“长期记忆机制”:无论是上下文压缩、总结归档,还是先计划后执行,都是给了 Agent 对过去长期信息的访问能力。“我思故我在”,是记忆让智能体反思、进步,而不是原地打转。之前看到有用RNN维护隐状态的机器人工作,感觉很有启发性。
然而在本学期的课程汇报中,我读了一些具身智能体的论文,发现模型虽然能力越来越强,但并没有和 Agent 开发一样普遍加入主动记忆机制。主流的做法是,直接根据历史窗口内的数个输入,通过扩散模型生成动作向量,这是瞬时记忆。才发现机器人记忆是近几个月的研究热点……要记忆时间和空间,比 Coding Agent 还要复杂得多。早期RNN的实现是在线记忆(隐状态),现在趋势更像将记忆写入文件、做成数据库。