Agent Loop:AI Agent 的最小实现结构

系列:《AI Agent 从原理到实战 ------ 解密 Claude Code 背后的工程智慧》 第2篇

引言

上一篇我们说到,AI Agent 的智能来自模型本身,而程序员的角色是造"车"(Harness)。但在讨论这辆车的具体构造之前,有一个更基础的问题要回答:Agent 和普通的 LLM 对话到底区别在哪?

你用 ChatGPT 的日常体验是这样的:你问一句,它答一句。你再问,它再答。每一轮对话都是你发起的。模型永远在"等你"。

但 Agent 不一样。你说一句话之后,它可能自己忙活了十分钟,中间调用了二十个工具,最后才回来跟你说"搞定了"。

这两者之间的鸿沟,其实只隔着一个东西------一个 while 循环。

Agent Loop:可能是软件史上最重要的 while 循环

先说结论。Agent 的最小结构可以用几行伪代码表达:

javascript 复制代码
while (true) {
    const response = await model.chat(messages);

    if (!response.hasToolCall) {
        return response;  // 模型觉得做完了,返回给用户
    }

    // 模型调用了工具,执行它
    const toolResult = await execute(response.toolCall);

    // 把工具结果加入对话历史,让模型继续思考
    messages.push(toolResult);
}

就这么多。这就是所谓的 Agent Loop(代理循环)。

拆开来看:

  1. 把对话发给模型,让它思考该做什么
  2. 检查模型的回复------它是直接给了文字答案,还是要求调用某个工具?
  3. 如果是文字答案,说明模型认为任务完成了,把答案返回给用户,循环结束
  4. 如果是工具调用,执行这个工具,把执行结果塞回对话历史,回到第1步

核心思想很简单:让模型自己决定什么时候"再做一步",什么时候"到此为止"。

一个具体的例子

光看伪代码可能还是抽象,用一个真实场景走一遍。

假设你打开 Claude Code,对它说:

"帮我看看这个项目里有没有 bug"

接下来发生的事情是这样的:

整个过程中模型的回复:

"我检查了项目代码,发现并修复了两个问题: 1. main.py 中的 SQL 查询存在注入风险,已改为参数化查询 2. db.py 中事务异常处理缺少回滚,已补充 rollback 逻辑 所有 15 个测试均已通过。"

整个过程中,你只说了一句话。模型自己走了八步。每一步都是它自己判断的------读什么文件、改什么代码、什么时候跑测试、测试失败了怎么办。

这就是 Agent Loop 的威力。

为什么这个循环如此重要

你可能会想:就一个 while 循环,有这么了不起吗?

了不起的地方在于,它改变了控制权的归属

在传统软件里,控制权在程序员手里。程序走哪条分支、调用什么函数、执行什么顺序,全是代码写死的。用户按下按钮,程序做预设的事。

在普通的 LLM 对话里,控制权在用户手里。每一轮都是用户发起的,模型只是响应。

而在 Agent Loop 里,控制权交给了模型。 模型自己决定下一步做什么,自己决定什么时候结束。程序员不预设流程,用户不需要逐步引导。

这是一个根本性的范式转换。

关键洞察:循环本身永远不变

再看一眼那段伪代码。从 Claude Code 到 Cursor、Devin、各种编程 Agent,它们的核心循环结构都是一样的。差异不在循环本身,而在循环上"挂"了什么东西

  • 挂了什么工具?能读文件还是能操作数据库?能跑终端命令还是能发 HTTP 请求?
  • 喂了什么知识?项目文档、代码规范、行业知识?
  • 怎么管理上下文?对话太长了怎么办?怎么让模型记住重要的东西、忘掉不重要的?
  • 设了什么权限边界?允许模型自己执行命令还是每一步都要人确认?

循环是骨架,这些东西是血肉。骨架简单到不能再简单,但血肉的设计可以极其复杂------这也是为什么不同的 Agent 产品体验差异巨大,即使它们底层用的是同一个模型。

复制代码
Agent 的能力 = 模型的智能 × Harness 的质量

模型的智能我们管不了(等 Anthropic 和 OpenAI 迭代),但 Harness 的质量完全在我们手里。

小结

这篇文章的核心信息:

  • Agent 和普通 LLM 对话的区别就在一个 while 循环------Agent Loop
  • 这个循环做的事很简单:模型调了工具就继续,没调工具就结束
  • 它的重要性在于把控制权从程序员/用户转移给了模型
  • 循环本身不变,变的是往循环上"挂"什么东西------工具、知识、上下文、权限

那"挂什么东西"这件事到底怎么做?怎么设计才对?这就是下一篇要聊的 Harness 工程------可能是 AI 时代程序员最重要的新技能。

相关推荐
~|Bernard|5 分钟前
关于go语言中二维切片的append操作陷阱
开发语言·后端·golang
李昊哲小课28 分钟前
Spring Boot 4.0.6 全栈教程案例
spring boot·后端
千云33 分钟前
100w大表0停机回滚:我们为什么放弃Undo Log,选择表名切换?
数据库·后端·mysql
云恒要逆袭1 小时前
Hello World背后的秘密:Java程序是这样运行的
java·后端·程序员
蝎子莱莱爱打怪1 小时前
XZLL-IM干货系列 01|万字拆解分布式 IM 架构:7 个微服务 + 自研 Flutter SDK
java·后端·面试
沉默王二1 小时前
阿里云 OCR+LiteParse,让扫描件 PDF 也能被 RAG 检索到!
github·agent·ai编程
Elaine3361 小时前
基于Django框架的静态个人名片网站设计
后端·python·django·mvt
道友可好1 小时前
3 个人,100 万行代码,一行都没人写:OpenAI 的 Harness Engineering 实验
前端·人工智能·后端
AdCj31 小时前
GitHub 日榜速递 (2026-06-08):AI 基础设施正在“下沉“(技术分析版)
人工智能·github·agent
爱听歌的周童鞋2 小时前
Learn-Claude-Code | 笔记 | Multi-Agent Platform | s20_new Comprehensive Agent
llm·agent·multi-agent·claude code·comprehensive