本文为学习记录:总结 Agent 的基本架构、核心组件、工程挑战与实践建议,侧重可操作的实现路线。
目录
- 概述
- 核心组件
- LLM(决策核心)
- 工具系统
- 记忆系统
- 规划模块
- 运行流程(高层伪代码)
- 工程挑战与应对策略
- 实践建议与实现路线
- 参考笔记
概述
Agent 是能感知环境、基于目标函数做决策并采取行动的系统。现代 Agent 通常以大语言模型(LLM)为决策中枢,通过工具(tools)与执行适配器与外部世界交互,借助记忆模块管理长期/短期状态,并由规划模块负责把复杂目标拆解为可执行步骤。
设计目标是让系统能在最小人工干预下:分解目标、调用外部能力、存取与管理状态、在循环中完成任务。
核心组件
1. LLM(决策核心)
- 角色:理解用户意图、评估信息、生成计划或决定调用哪个工具。
– 关键要点:System Prompt(岗位说明)决定 Agent 的行为边界与人格;模型选择需在推理能力、延迟与成本间权衡;在复杂任务中常采用大模型做关键决策,小模型做轻量处理。
关联:参见 规划模块(规划依赖 LLM 的推理),以及 工具系统(LLM 发起工具调用)。
2. 工具系统(外部能力)
- 角色:把“不可用的能力”封装为可调用接口(搜索、数据库、执行脚本、发邮件、浏览器操作等)。
- 设计原则:模型只输出要调用哪个工具与参数,实际执行由代码承担;工具描述要精确(名称、功能、参数、限制),否则容易被误用。
– 标准化:采用类似 OpenAI function-calling、MCP(Model Context Protocol)等 schema 有利于发现与互操作。
关联:与LLM(#llm)配合,LLM 负责任务决策与工具选择;与记忆系统(#memory)共享执行结果用于后续检索。
3. 记忆系统
- 分层:短期记忆(context window / 工作记忆)与长期记忆(向量数据库 + metadata)。
- 功能:保存中间结果、用户偏好、历史交互、流程模板等。
– 工程挑战:上下文窗口有限需摘要/压缩;长期记忆需筛选与衰减以避免噪音;检索策略与重要性评估影响效果。
关联:支撑 LLM 的决策(提供历史与偏好),并为 规划模块 提供上下文线索。
4. 规划模块
- 作用:将高层目标拆为步骤或子任务(Plan-and-Execute)或边执行边规划(ReAct / Reflection / Tree of Thoughts)。
– 技术:Chain-of-Thought(CoT)、Tree-of-Thoughts(ToT)、反思与多步采样;结合规则引擎或任务模板可提高稳定性。
关联:主要依赖LLM(#llm)做推理与任务拆分,输出计划供执行循环使用;与记忆系统(#memory)共享计划历史以便重排或回滚。
运行流程(高层伪代码)
伪代码说明 Agent 的典型控制流:规划 → 决策 → 执行 → 写入记忆 → 迭代。
publicStringagentRun(StringuserGoal){List<String>plan=planner.plan(userGoal);List<Map<String,Object>>shortMemory=newArrayList<>();for(Stringstep:plan){Actionaction=llm.decide(step,shortMemory,db.retrieve(step));if(action.getType().equals("tool_call")){Objectresult=tools.execute(action.getName(),action.getArgs());Map<String,Object>entry=newHashMap<>();entry.put("step",step);entry.put("result",result);shortMemory.add(entry);}elseif(action.getType().equals("final_answer")){returnaction.getContent();}}return"未能完成任务";}工程挑战与应对策略
- 模型选择:在精度与成本之间做分层决策,大模型用于规划/核验,小模型用于抽取/格式化。
- 上下文限制:用摘要压缩、滑动窗口或分层记忆;对关键步骤做持久化记录用于回溯。
- 记忆噪声:在持久化前做重要性评分,仅存有价值片段;引入时间衰减避免过时信息干扰检索。
- 工具可靠性:对模型生成的工具调用做参数校验、熔断与重试;对敏感工具(转账、发送指令)加入人工审批。
- 可解释性与审计:记录 LLM 的思考链、工具调用日志与决策理由,便于调试与合规审计。
实践建议与实现路线(按步骤)
- 从最小可行 Agent 开始:实现接收指令 → LLM 决定 → 调用单一工具 → 返回结果的闭环。
- 加入短期记忆与执行日志;实现 System Prompt 模板管理。
- 集成向量数据库实现长期记忆检索;加入重要性打分与简单衰减策略。
- 增加规划模块(Plan-and-Execute),并实现异常回滚与计划重编排。
- 扩展工具集、接入权限控制与人工在环审批;完善监控与端到端场景测试(正常流、异常流、工具失败、恶意输入)。
学习中的心得
- 把 System Prompt 当“合同”来写:明确拒绝条件、输出格式与权限边界,对 Agent 行为影响极大。
- 测试场景要覆盖“工具失败”与“错误输入”,Agent 的鲁棒性取决于异常处理策略。
- 记忆工程是长期收益项目:早期明确哪些信息有价值,能显著提升后续检索质量。
- 成本控制:使用分层模型与批量调用策略能在可接受预算内获得接近的体验。
参考笔记
- 小林面试笔记:Agent 的基本架构
https://xiaolinnote.com/ai/agent/2_components.html - Wikipedia:Intelligent agent
https://en.wikipedia.org/wiki/Intelligent_agent