本文为学习记录:总结 Agent 的基本架构、核心组件、工程挑战与实践建议,侧重可操作的实现路线。

目录


概述

Agent 是能感知环境、基于目标函数做决策并采取行动的系统。现代 Agent 通常以大语言模型(LLM)为决策中枢,通过工具(tools)与执行适配器与外部世界交互,借助记忆模块管理长期/短期状态,并由规划模块负责把复杂目标拆解为可执行步骤

设计目标是让系统能在最小人工干预下:分解目标、调用外部能力、存取与管理状态、在循环中完成任务

核心组件

1. LLM(决策核心)

  • 角色:理解用户意图、评估信息、生成计划或决定调用哪个工具。
    – 关键要点:System Prompt(岗位说明)决定 Agent 的行为边界与人格;模型选择需在推理能力、延迟与成本间权衡;在复杂任务中常采用大模型做关键决策,小模型做轻量处理。

关联:参见 规划模块(规划依赖 LLM 的推理),以及 工具系统(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 的典型控制流:规划 → 决策 → 执行 → 写入记忆 → 迭代。

public String agentRun(String userGoal) {
	List<String> plan = planner.plan(userGoal);
	List<Map<String, Object>> shortMemory = new ArrayList<>();
	for (String step : plan) {
		Action action = llm.decide(step, shortMemory, db.retrieve(step));
		if (action.getType().equals("tool_call")) {
			Object result = tools.execute(action.getName(), action.getArgs());
			Map<String, Object> entry = new HashMap<>();
			entry.put("step", step);
			entry.put("result", result);
			shortMemory.add(entry);
		} else if (action.getType().equals("final_answer")) {
			return action.getContent();
		}
	}
	return "未能完成任务";
}

工程挑战与应对策略

  • 模型选择:在精度与成本之间做分层决策,大模型用于规划/核验,小模型用于抽取/格式化。
  • 上下文限制:用摘要压缩、滑动窗口或分层记忆;对关键步骤做持久化记录用于回溯。
  • 记忆噪声:在持久化前做重要性评分,仅存有价值片段;引入时间衰减避免过时信息干扰检索。
  • 工具可靠性:对模型生成的工具调用做参数校验、熔断与重试;对敏感工具(转账、发送指令)加入人工审批。
  • 可解释性与审计:记录 LLM 的思考链、工具调用日志与决策理由,便于调试与合规审计。

实践建议与实现路线(按步骤)

  1. 从最小可行 Agent 开始:实现接收指令 → LLM 决定 → 调用单一工具 → 返回结果的闭环。
  2. 加入短期记忆与执行日志;实现 System Prompt 模板管理。
  3. 集成向量数据库实现长期记忆检索;加入重要性打分与简单衰减策略。
  4. 增加规划模块(Plan-and-Execute),并实现异常回滚与计划重编排。
  5. 扩展工具集、接入权限控制与人工在环审批;完善监控与端到端场景测试(正常流、异常流、工具失败、恶意输入)。

学习中的心得

  • 把 System Prompt 当“合同”来写:明确拒绝条件、输出格式与权限边界,对 Agent 行为影响极大。
  • 测试场景要覆盖“工具失败”与“错误输入”,Agent 的鲁棒性取决于异常处理策略。
  • 记忆工程是长期收益项目:早期明确哪些信息有价值,能显著提升后续检索质量。
  • 成本控制:使用分层模型与批量调用策略能在可接受预算内获得接近的体验。

参考笔记

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐