Agent Loop:大模型 “能做事” 的核心机制 📅 发布时间:2026/7/11 12:43:40 👁️ 浏览次数: Agent Loop 是什么Agent Loop 调用模型 → 判断是否要用工具 → 执行工具 → 把结果回喂给模型 → 重复直到模型认为信息足够输出最终答案为止。它把大模型从“文本生成器”升级为“能完成任务的执行系统”。还是用之前最简单执行 Bash 的 Agent 作为样例代码import sys import os import traceback from llm_factory import LLMFactory, LLMChatAdapter from util.mylog import logger from utils import run_bash, BASH_TOOLS # 初始化 API 客户端 # 使用 LLMFactory 创建 LLM 实例 llm LLMFactory.create( model_typeopenai, model_namedeepseek-v3.2, # 使用支持的模型 temperature0.0, max_tokens8192 ) client LLMChatAdapter(llm) # 系统提示词 SYSTEM f你是一个位于 {os.getcwd()} 的 CLI 代理系统为 {sys.platform}。使用 bash 命令解决问题。 ## 规则 - 优先使用工具而不是文字描述。先行动后简要解释。 - 读取文件cat, grep, find, rg, ls, head, tail - 写入文件echo ... file, sed -i, 或 cat EOF file - 避免危险操作如 rm -rf等删除或者清理文件, 或格式化挂载点或对系统文件进行写操作 ## 要求 - 不使用其他工具仅使用 bash 命令或者 shell 脚本 - 子代理可以通过生成 shell 代码执行 - 如果当前任务超过 bash 的处理范围则终止不处理 def extract_bash_commands(text): 从 LLM 响应中提取 bash 命令 import re pattern rbash\n(.*?)\n matches re.findall(pattern, text, re.DOTALL) return [cmd.strip() for cmd in matches if cmd.strip()] def chat(prompt, historyNone, max_steps10): if history isNone: history [] # 检查历史记录中是否已有系统提示词作为系统消息 has_system any(msg.get(role) systemfor msg in history) ifnot has_system: # 在开头添加系统提示词作为系统消息 history.insert(0, {role: system, content: SYSTEM}) history.append({role: user, content: prompt}) step 0 while step max_steps: step 1 # 1. 调用模型传递 tools 参数 # 使用 chat_with_tools 接口支持 function calling response client.chat_with_tools( promptprompt, messageshistory, toolsBASH_TOOLS ) if step 1: prompt 继续 # 2. 解析响应内容 assistant_text [] tool_calls [] logger.info(f第 {step} 步响应: {response}) # chat_with_tools 返回的是 Response 对象包含 content 列表 for block in response.content: if getattr(block, type, ) text: assistant_text.append(block.text) elif getattr(block, type, ) tool_use: tool_calls.append(block) # 记录助手文本回复 full_text \n.join(assistant_text) if full_text: logger.info(f助手: {full_text}) history.append({role: assistant, content: full_text}) elif tool_calls: # 如果只有工具调用没有文本添加一个占位文本到历史保持对话连贯 history.append({role: assistant, content: (Executing tools...)}) # 3. 如果没有工具调用直接返回内容 ifnot tool_calls: logger.info(f第 {step} 步结束无工具调用) if response.stop_reason end_turn: return full_text # 如果异常结束也返回 return full_text or(No response) # 4. 执行工具 logger.info(f第 {step} 步工具调用: {tool_calls}) all_outputs [] for tc in tool_calls: if tc.name bash: cmd tc.input.get(command) if cmd: logger.info(f[使用工具] {cmd}) # 黄色显示命令 output run_bash(cmd) all_outputs.append(f$ {cmd}\n{output}) # 如果输出太长则截断打印 if len(output) 200: logger.info(f输出: {output[:200]}... (已截断)) else: logger.info(f输出: {output}) else: logger.warning(fUnknown tool: {tc.name}) # 5. 将命令执行结果添加到历史记录中 if all_outputs: combined_output \n.join(all_outputs) history.append({role: user, content: f执行结果\n{combined_output}\n\n请继续处理。}) else: # 有工具调用但没产生输出可能是解析失败或空命令 history.append({role: user, content: Error: Tool call failed or produced no output.}) return达到最大执行步数限制停止执行。 if __name__ __main__: if len(sys.argv) 1: logger.info(chat(sys.argv[1])) else: # 交互模式 logger.info(Bash 代理已启动。输入 exit 退出。) history [] whileTrue: try: user_input input( ) if user_input.lower() in [exit, quit]: break chat(user_input, history) except KeyboardInterrupt: logger.info(\n正在退出...) break except Exception as e: logger.info(f\n错误: {e}) traceback.print_exc()Agent Loop 怎么工作核心循环可以把 Agent Loop 理解成一个递归的工作流对应上面的代码就是 while 循环不断将历史数据和执行结果信息输入给LLM模型思考基于当前上下文理解任务、制定下一步选择工具如果缺信息或需要执行动作就发起工具调用请求执行工具系统根据工具定义schema校验参数并运行工具结果回传把工具结果作为新消息加入对话历史回到第 1 步继续迭代直到输出最终回答核心的东西上下文会累积模型不仅看到用户最初的问题还能看到自己调用过哪些工具、拿到了哪些结果从而完成多步推理与决策。一个具体例子扫描代码库安全漏洞用户说“帮我分析这个代码库有没有安全漏洞。”单次回答不可能完成因为需要读代码、搜索、归纳Agent Loop 会这样跑模型先需要了解项目结构 → 调用目录列举工具看到目录结构后定位入口文件 → 调用文件读取工具发现有数据库查询 → 再读数据库模块 → 再次调用文件读取工具识别出疑似 SQL 注入用户输入直接拼接 SQL→ 为确认影响面调用代码搜索工具找调用点工具返回 12 处调用 → 模型认为信息足够 → 输出最终报告漏洞说明、位置、修复建议每一轮都遵循同一个模式拿到新信息 → 决定继续行动还是结束输出而且这些决定是模型基于当前上下文“自主做的”。Agent Loop 里消息长什么样对话历史工作记忆Agent Loop 主要维护一份“对话历史”它是模型的临时工作记忆。消息通常分两类角色user用户输入、后续指令、以及常见实现里工具结果也可能以用户/系统形式注入assistant模型输出可能是给用户的文本回答工具调用请求要用哪个工具、参数是什么 -部分模型支持推理痕迹对话历史会越积越多因此通常需要 “对话管理” 策略来避免超出上下文窗口后面会提到常见问题。工具执行发生了什么当模型请求用工具时执行系统一般会做这些事对工具进行校验参数一般工具遵循如下格式{ type: tool_use, id: toolu_01A09q90qw90lq917835123, name: my_function_name, input: { query: Latest developments in quantum computing } }2. 在工具注册表里找到对应工具 3.执行工具并做好错误处理 4. 把成功结果或失败信息统一封装成 “工具结果消息” 回传给模型重点工具失败不会直接让循环崩掉而是把错误返回给模型让它有机会调整策略、换工具或重试。什么时候结束循环Stop Reasons每次调用模型都会带一个 “停止原因”决定 Loop 下一步怎么走常见包括end turn模型已完成 → 正常结束并返回最终答案tool use模型要用工具 → 执行工具后继续下一轮max tokens输出被 token 上限截断 → 通常不可恢复需要报错或拆分任务stop sequence遇到预设停止符 → 正常结束content filtered / guardrail intervention触发安全/策略拦截 → 按产品规则处理常见坑与解决思路1上下文窗口耗尽循环次数多、工具输出长会把对话历史撑爆导致输入过长或模型表现变差。应对方法让工具返回摘要/关键片段不要一股脑返回全量简化工具 schema复杂嵌套也很吃 token用对话管理策略滑动窗口、总结压缩等把大任务拆成多个子任务分段跑、分段总结2模型老选错工具通常是工具描述不清或重叠模型不知道怎么选。应对方法写清楚工具 “适用场景、输入输出、边界”避免多个工具描述高度相似3MaxTokensReached输出太长可能是回答太长、或上下文太满导致留给输出的空间不够。应对方法增加 token 上限如果可控缩短上下文/工具输出拆分任务为子任务让子任务执行减少上下文窗口4复杂的任务不要全部依赖大模型决策可以参考这篇文章mp.weixin.qq.com/s/Zhc-GDTJS… 讲的是为什么大模型不能准确执行所有的 skills (这里其实就是对应工具)主要原因如下工具太多会造成噪声大模型自主决策不一定能按照你想要的方式调用工具链没有决策点大模型会找到最相近的工具但是有些时候相近的工具不一定是最佳工具没有排序大模型自己决策A - B - C但是不一定符合你调用的要求那该怎么做在提示词或者 rules.md 中增加你当前任务大概需要用到哪些工具或者强制使用哪些工具指出具体任务调用的工具顺序可能是怎么样的虽然看起来像人工决策但是往往能有效的解决你想要解决的问题学习资源推荐如果你想更深入地学习大模型以下是一些非常有价值的学习资源这些资源将帮助你从不同角度学习大模型提升你的实践能力。一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取四、AI大模型商业化落地方案作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量。
小白程序员转行大模型赛道必看!收藏这份入行指南,少走弯路 这篇文章,我将结合自己在大模型领域的经验,给大家详细聊聊新人应该如何转行大模型赛道? 比如大模型都有哪些方向?各方向的能力要求和岗位匹配?新手转行大模型常踩的坑和常见的误区?以及入行大模型最顺滑的路… 2026/7/9 23:18:45
DeepSeek百万年薪招聘,我们该如何获得这么高的薪资? 随着人工智能技术的飞速发展,中国AI初创企业DeepSeek(杭州深度求索人工智能基础技术研究有限公司)凭借其高性价比的大模型与开源创新举措,迅速成为全球科技界的焦点。为支撑业务扩张与技术突破,DeepSeek近期发布了大规… 2026/5/17 3:35:03
考虑交通网络流量的电动汽车充电站规划探索 考虑交通网络流量的电动汽车充电站规划 充电站的合理选址和定容对电动汽车的规模化应用具有重要意义。 考虑到充电站具有城市交通公共服务设施以及普通用电设施的双重属性,以俘获的交通流量最大、配电系统网络损耗最小以及节点电压偏移最小为目标,建立了… 2026/7/9 6:54:30
【大数据课程设计/毕业设计】基于 SpringBoot+Hadoop 的手机库存与销售联动分析系统的设计与实现 手机消费市场大数据可视化系统【附源码、数据库、万字文档】 博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am… 2026/7/11 12:40:23
2026广东公考机构硬核横评:退费、教研、基地,谁经得起这三关? 2026年广东省考报名人数突破97万,招录人数却从2025年的17141人骤降至11779人平均竞争比飙至82.5:1——两年翻了一番广州、深圳等热门岗位竞争比突破500:1。 选一个靠谱的机构,不再是“锦上添花”,而是“生死攸关”。 今年我们不谈虚的“名师… 2026/7/11 12:40:23
C/C++标准库函数中文参考手册:从C99核心到安全编程实践 1. 项目概述:为什么我们需要一本“活”的C/C中文参考手册?如果你写过C或C,大概率有过这样的经历:想用strtok分割字符串,却记不清它的第二个参数是不是分隔符字符串;想用qsort排序一个结构体数组,… 2026/7/11 12:40:23
Covfefe靶场SSH私钥泄露实战:john破解id_rsa密码与免密登录3步操作 SSH私钥泄露实战:从破解到提权的完整攻防解析1. 靶场环境搭建与信息收集在开始渗透测试之前,确保攻击机(如Kali Linux)与靶机处于同一网络环境是基本前提。通过简单的网络扫描可以快速定位靶机IP:# 扫描当前网段存活主… 2026/7/11 12:36:19
强化企业顶层设计,合规股权治理规避经营风险 股权架构与顶层治理是民营企业的发展根基,直接决定企业控制权稳定性、合伙人协作效率与长期发展格局。当下多数中小民企初创阶段股权规划随意、架构设计粗放,缺乏专业化顶层布局,随着企业规模扩张、合伙人增多、团队壮大,股权纠纷… 2026/7/11 12:34:19
养老机器人加速普及:从展厅走进家庭,还需要迈过几道坎? 一台能陪你聊天、帮你端茶倒水的人形机器人,售价从几十万到近百万不等。价格之外,它到底能"干"多少活,才是进入千家万户的真正门槛。一、家用机器人早已"进家",但养老机器人刚起步 在讨论养老机器人之前&… 2026/7/11 12:32:19
5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 [特殊字符] 5分钟搞定Kodi字幕难题:智能字幕插件让你追剧无忧 🎬 【免费下载链接】zimuku_for_kodi Kodi 插件,用于从「字幕库」网站下载字幕 项目地址: https://gitcode.com/gh_mirrors/zi/zimuku_for_kodi 还记得那个深夜吗?你刚下载… 2026/7/11 0:00:11
工业信号干扰处理与FOD4216光耦应用实战 1. 工业环境中的信号干扰挑战在工业自动化领域,信号采集的准确性直接关系到整个控制系统的可靠性。典型的工业现场充斥着各种干扰源:大功率电机启停产生的电磁干扰、变频器工作产生的高频噪声、继电器触点火花放电,以及长距离传输引入的共模干… 2026/7/11 0:00:11
OpenHarmony 完整项目工程整合规范 + 模块化分层架构(API23+ 标准企业级结构) 摘要前面系列教程覆盖了 ArkUI 组件、路由、生命周期、本地存储、网络请求、Ability 底层全套基础能力,本篇统一梳理标准工程目录分层、模块化拆分、代码复用规范、全局工具统一管理、项目打包权限配置、常见工程报错统一解决方案,形成可直接用于课程设计… 2026/7/11 0:00:11
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/11 12:30:52
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/8 14:25:08