赞助商LobeHubLobeHub了解更多
ddshfind
GitHub

智能体框架的基本思想

一句话版:智能体 = 会思考的大脑(大模型)+ 会动手的身体(工具和环境)。智能体框架就是给"大脑"配"身体"的那套脚手架——它负责把工具、权限、记忆、多智能体协作这些杂活全部管起来,让开发者只操心"让智能体想清楚该干什么"。


1. 智能体是怎么工作的?

所有智能体(不管多复杂)都跑在一个简单的循环里:

感知(看到什么)→ 思考(决定做什么)→ 行动(动手做)→ 观察结果 → 再思考 → …

举个例子,一个"订机票助手":

  1. 感知:收到指令"帮我订下周三去上海的机票"
  2. 思考:需要查航班、比价格、订票
  3. 行动:调用查航班工具、调用订票工具
  4. 观察:看到"出票成功,¥880"
  5. 再思考:要不要告诉用户其他更便宜的选择?

这个循环本身很简单——难的是让"行动"这一步真正发生,而且安全、可控。

感知观察输入思考决定动作行动调用工具观察获取结果智能体主循环

循环本身很简单——难的是让「行动」安全、可控地发生


2. 大模型只是"大脑",它需要"身体"

大模型(LLM)本身只会做一件事:根据输入的文字,生成输出的文字

它不会真的:

  • ❌ 发 HTTP 请求
  • ❌ 读写你的文件
  • ❌ 操作数据库
  • ❌ 记住上次对话以外的事情

要让大模型"动起来",必须给它接上工具。这个"接工具"的过程,就是智能体框架的核心工作。

类比:乐高

大模型是一堆最厉害的乐高零件(能理解、能推理)。 智能体框架是一套说明书 + 收纳盒:说明书告诉零件怎么拼(工作流),收纳盒负责分类和保管(工具管理、权限、记忆)。 没有说明书和收纳盒,零件再厉害,也只是散落一地的积木。


3. 框架到底管哪些事?

一个完整的智能体框架,通常要解决下面这些问题:

问题框架的回答生活类比
工具怎么给?工具注册表 + 自动调用(Tool Calling)告诉大厨"哪层抽屉放着什么刀"
能碰什么?权限与沙箱限制大厨"只能碰自己工位的食材"
记不记得住?会话状态、长期记忆前几桌客人说过什么,别忘
一个人忙得过来吗?子智能体、多智能体编排大厨把切菜分给帮厨
怎么连接外部世界?API、MCP 等集成协议给厨房接上外卖平台的订单系统
智能体框架管杂活 · 保安全工具Tool权限Sandbox记忆Memory编排Subagent连接MCP

框架 = 给「大脑」配「身体」的脚手架,五大职责各司其职

逐个展开讲:

3.1 工具怎么给(Tool Calling)

框架把每个工具描述成一份"说明书"给大模型看:

{
  "name": "get_weather",
  "description": "查询某个城市的天气",
  "parameters": {
    "city": { "type": "string", "description": "城市名,例如 北京" }
  }
}

大模型看到说明书后,会说"我要调用 get_weather,参数 city=北京"。框架负责真的去执行这个调用,把结果拿回来给大模型。整个过程,开发者只需要注册工具,不需要教大模型怎么用。

3.2 能碰什么(权限与沙箱)

智能体不可信吗?不是——但它的能力边界必须明确。框架提供:

  • 权限声明:这个智能体只能读 /data 目录,不能写系统文件
  • 沙箱:把它关进一个隔离环境,即使它"失控"也影响不到外面的世界

3.3 记不记得住(记忆与上下文)

大模型每次对话都是"失忆"的。框架负责:

  • 短期:把多轮对话整理成上下文
  • 长期:把重要信息存进数据库/向量库,下次还能想起来

3.4 忙不忙得过来(多智能体)

一个任务可以拆给多个智能体协作:一个负责调研、一个负责写代码、一个负责审查。框架负责编排它们,并决定谁先谁后、结果怎么汇总。

3.5 怎么连接世界(MCP 等协议)

不同系统之间的连接需要标准协议(比如 MCP——Model Context Protocol,模型上下文协议)。框架实现了这些协议,让智能体能和外部工具"即插即用"。


4. 一个具体例子:搭一个"天气小助手"

不用框架,你可能要写:

// 伪代码:没有框架的世界
const text = "北京天气怎么样";
const intent = llm.analyze(text);           // 让模型理解意图
if (intent.action === "query_weather") {
  const data = await fetch(`/api/weather?city=${intent.city}`);
  const answer = llm.generate(data, text);   // 把结果组织成人话
  return answer;
}

用了框架(以 DSH/Cordis 风格示意):

// 伪代码:有框架的世界
ctx.set('weather', weatherApi);      // 注册工具(余效应供给)

// 注册一个"天气插件"作为组件
ctx.use({
  inject: ['weather'],               // 声明我需要天气服务
  apply(ctx) {
    ctx.commands.register('天气 <city>', async (city) => {
      const data = await ctx.weather.query(city);   // 直接用
      return `☀️ ${city} 今天 ${data.condition}`;
    });
  },
});

区别在哪?

  • 没有框架:每一步流程都要你手写,工具一多就乱
  • 有框架:你只声明"我需要什么、我提供什么",框架负责连接、调度、回收

5. 从"助手"到"自演化"

传统的智能体框架,组件是开发时写死、运行时不变的。

但未来(也是这篇论文的核心动机之一)智能体会这样工作:

  1. 智能体发现自己缺少某个工具
  2. 自己写一个新工具(或者让另一个智能体写)
  3. 它把新工具动态安装到正在运行的框架上
  4. 用一段时间发现不好用,再动态卸载,换一个更好的

这就是"自演化智能体":运行中的系统自己修改自己

这听起来很酷,但也很危险——如果装上的东西拆不掉、或者拆的时候把别的东西弄坏了,系统就会崩溃。要解决这个问题,就需要我们第一章第 3 节的主题:动态组合


关键点回顾

  • 智能体 = 感知 → 思考 → 行动 的循环
  • 大模型只是"大脑",框架负责配"身体"
  • 框架的五大职责:工具、权限、记忆、编排、连接
  • 未来的智能体会自我修改组件 → 必须依赖"动态组合"

🚀 下一节:"为什么需要动态组合"——看看现在的软件为什么做不到"装上拆下不重启",以及这有多重要。

自测题 · 智能体框架的基本思想

完成作答后点击「提交答案」,可以查看对错与解析。

1. 智能体的工作循环是下面哪个?
2. 大模型(LLM)本身不能做下面哪件事?
3. 智能体框架的五大职责不包括下面哪一项?
4. 「自演化智能体」的核心能力是什么?