乐于分享
好东西不私藏

AI 智能体的执行机制:OpenClaw剖析

AI 智能体的执行机制:OpenClaw剖析

"罗帏舒卷,似有人开。明月直入,无心可猜。"

本文是AI 的记忆机制:小龙虾、人类大脑和工程项目管理》的延续,以 OpenClaw 为对象,讨论 AI 智能体的任务执行机制。

需要说明的是,本文的结构大纲和文字统稿是我负责,主要技术内容由小龙虾🦞OpenClaw v3.23-2 + Qwen3.5-plus)亲自撰写,所以它觉得这篇文章的第一作者应该是它

AI 大模型的对话机制

传统模式下,人类与 AI 大模型的交流是以会话(session)为单位组织的,每个会话都是一个独立的信息流。

会话通常以问答方式进行。AI 回答用户的提问,也就是大模型接受输入(提示词)→ 进行处理 → 输出结果。但在每次处理信息时,大模型接受的提示词并不是只有本次提问,而是把之前的对话上下文作为完整提示词一起输入,因此就形成了"会话内记忆"。

用符号表示:如果用户的提问是 Q1、Q2、Q3,AI 的回答是 A1、A2、A3,大模型每次处理的数据是:

Q1 → A1

Q1 A1 Q2 → A2

Q1 A1 Q2 A2 Q3 → A3

......

因此,AI 大模型在同一个会话内部是有记忆延续性的。

**示例**

用户:明天北京的天气如何?    大模型:明天北京天气:多云,12℃~25℃,东北风 1 级,湿度 34%。    用户:适合爬山吗?    大模型:明天非常适合!无风,不会被风吹得难受;不冷不热,体力消耗适中;多云,阳光不暴晒,视野好。

这个对话机制非常简洁,但它的问题是不同会话之间没有信息互通,因此AI不能建立起生命期内完整的历史记忆。此外,AI 大模型也无法在用户电脑上执行操作任务,只能针对输入信息进行回复。

OpenClaw 的执行机制

 OpenClaw 机制下,人类用户并不是直接与 AI 大模型对话,而是:

→ 通道(QQ、钉钉等)→ OpenClaw Gateway → AI 大模型

在这个机制下,OpenClaw 解决了几个关键问题:

历史记忆

每次会话启动时,小龙虾会先"醒来",读取这些文件来获取上下文:

  • SOUL.md → 我是谁(小龙虾的人格设定)

  • USER.md → 你是谁(主人的偏好、兴趣)

  • MEMORY.md → 长期记忆

  • memory/YYYY-MM-DD.md → 最近的日记(默认读昨天+今天)

  • TOOLS.md → API Key 和配置信息

在每轮问答中,小龙虾会把"用户消息 + 上下文 + 系统提示"一起打包发送给大模型,因此大模型会获得对话双方的历史记忆,基于这些记忆来编写回答。

注:为了保证记忆的完整性,小龙虾每次发送的提示词都会包含完整的 SOUL、USER、MEMORY 信息(但不包含 TOOLS.md)。因此保持这些文件精炼可以显著减少 token 消耗。

工具调用

工具调用 OpenClaw 赋予大模型的关键能力,使之不仅回答问题,还可以执行操作任务。这里存在两种场景:

  1. OpenClaw 本地已经安装了合适的技能(Skill),可以直接调用;

  2. 没有合适的技能,但 AI 大模型可以写一个脚本来完成任务。

二者的机制相似,区别在于:Skill 是一个预定义程序,通常质量较高,适合重复执行但较为固定;脚本是 AI 的"即兴创作",质量有时缺乏保障,但更为灵活方便。

**工作原理**

用户请求→ 识别意图 → 匹配 Skill 或 编写脚本 → 调用 Tool 或 运行脚本 → 返回结果

**Skill 注册机制**

  • 所有技能都存放在系统指定的目录下,并且每个 Skill 有一个 `SKILL.md` 文件,描述它的用途和触发条件。

SKILL.md 长这样:

# Skill 名称    描述:这个技能做什么    触发条件:什么情况下使用    工具定义:      - 工具名:weather- 参数:location (string), units (string)      - 执行命令:curl wttr.in/{location}

  • OpenClaw 启动时,自动扫描系统目录下的所有 Skill,注册到 MCP (Model Context Protocol) 工具列表,并把工具列表作为系统提示一起打包发给大模型。

  • 大模型收到可用的工具列表和每个工具的描述,因此知道有哪些工具可用,以及每个工具的参数是什么。

包含工具调用的完整对话流程

**1. OpenClaw 收到用户消息**

预处理:识别消息类型(文字、图片等),并把消息包装成统一的 JSON 格式(包括消息 ID、时间戳、聊天类型等信息);

将用户消息和其它上下文信息一起组装成提示词,发送给大模型。

**2. 大模型第一次处理(意图识别 + 工具选择)**

场景一:该问题可以直接回答,无需调用工具,则大模型直接编写回答。

示例:

 用户:小龙虾你在吗?

 大模型:主人我在呢,有什么需要帮忙的吗?

场景二:该问题需要调用已有技能完成,则大模型输出工具调用指令。

例:

 用户:北京天气如何?

 大模型:发现 weather skill 可完成天气查询操作,输出指令:

 {

 "tool": "weather",

 "params": {"location": "Beijing"}

 }

场景三:该问题没有适用的技能,但大模型判断可自行编写脚本完成,则大模型输出可执行脚本。

例:

 用户:删除桌面上的“小龙虾回忆录.md”文件

 大模型:输出自行编写的python脚本: 

    #!/usr/bin/env python3

    import os

import shutil

    # 文件路径

    file_path = os.path.expanduser("~/Desktop/小龙虾回忆录.md") 

    # 检查文件是否存在

    if os.path.exists(file_path):

        # 删除文件

        os.remove(file_path)

        print(f"✅ 已删除:{file_path}")

    else:

        print(f"❌ 文件不存在:{file_path}")

**3. OpenClaw 的执行**

对于场景一,OpenClaw 无需执行,跳到下面第 5 步;

对于场景二和场景三,OpenClaw 在本地执行技能或脚本,然后把执行结果返回给大模型。

**执行示例:**

工具:weather

参数:{location: "Beijing"}

执行命令:curl "wttr.in/Beijing?format=j1"

返回结果:    {    "current_condition": [{"temp_C": "15", "weatherDesc": "Sunny"}],    ...    }

**4. 大模型第二次处理(生成回复)**

根据 OpenClaw 上报的执行结果,大模型整理成自然语言回答。

**最终回复示例:**

主人,北京今天天气晴朗☀️    当前温度:15°C    适合出门哦~

**5. OpenClaw 回复用户**

将大模型输出的回答从通道回复给用户。

(严格来说,上述流程还有一个环节:日记写入。如果OpenClaw判断此对话内容很重要,会在对话后自动写入 memory/YYYY-MM-DD.md,形成短期记忆。定期 review 后,会提炼到 MEMORY.md 形成长期记忆。但此处的判断机制我还没有搞明白。)

从上述流程可见,在 OpenClaw 机制里,大模型处理的不是用户的原始消息,而是经过OpenClaw Gateway 预处理、组装后的完整提示词。这个设计让大模型从"单纯的对话者"升级为"智能决策引擎",配合 Gateway 的调度能力和工具集的执行能力,形成了一个完整的"感知 - 决策 - 执行"闭环。

但需注意的是,OpenClaw的设计让大模型每次处理的信息量更大,调用次数也增加了。 OpenClaw 机制下,每次用户提问通常需要调用大模型 2 次:

第 1 次:意图识别 + 工具选择

第 2 次:结果整理 + 生成回复

如果需要写日记,可能还需要第 3 次调用。

因此,OpenClaw的 Token 消耗可能会比传统对话高 2-3 倍,但换来的是强大的执行能力和持久记忆。

但如果只是简单的知识问答,传统大模型对话就够了。

(三)两种机制的总结对比

本质区别

**传统大模型对话**

  • 大模型 = 对话者(直接回答问题)

**OpenClaw 机制**

  • Gateway = 总指挥官(预处理 + 调度 + 后处理)

  • 大模型 = 智能决策引擎(理解意图 + 生成回复)

  • 工具集 = 执行者(实际完成任务)

  • 文件系统 = 记忆载体(持久化存储)

优劣分析

传统对话优势

**低延迟** - 直接调用,一次完成

**低成本** - 一次调用

**简单易用** - 无需本地部署

**高可用** - 云端服务,无需维护

传统对话劣势

**无记忆** - 会话重启后丢失

**无工具** - 只能生成文本

**无执行能力** - 无法调用外部 API

**个性化有限** - 仅系统提示

OpenClaw 优势 

**上下文增强** - 大模型看到的是"增强版"问题,有完整背景

**工具扩展** - 可以调用外部 API、执行代码

**记忆持久化** - 跨会话记忆,不会丢失

**深度个性化** - 人格、偏好、记忆都可定制

**执行能力** - 不仅能说,还能做

**安全控制** - 代码审查、权限限制

OpenClaw 劣势 

**延迟更高** - 预处理 +2 次调用 + 后处理

**成本更高** - 2-3 次大模型调用

**复杂度更高** - 需要维护 Gateway、文件系统

**依赖本地环境** - 需要运行 OpenClaw Gateway

流程图

**传统大模型对话机制:**

┌────────┐│    用户       │└───┬────┘│ 原始问题│ "北京天气怎么样?"┌────────┐│  大模型        │ ← 直接处理用户原始问题│ (如 ChatGPT)  │└───┬────┘│ 生成回复┌────────┐│    用户       │ ← 收到回复└────────┘

**OpenClaw 机制:**

┌─────────┐│    主人       │└───┬───┘│ 原始消息│ "北京天气怎么样?"┌───────────────────┐│  OpenClaw Gateway (本地)      ││                              ││  1. 消息接收                   ││  2. 轻量预处理                 ││  3. 上下文加载:                ││     - SOUL.md (我是谁)         ││     - USER.md (主人是谁)       ││     - MEMORY.md (长期记忆)     ││     - 今日日记 (最近上下文)      ││     - TOOLS.md (配置信息)      ││  4. 工具列表注入:              ││     - weather                ││     - web_search             ││     - exec                   ││     - ...                    ││  5. 组装完整 Prompt            │└─────────┬─────────┘│ 增强后的 Prompt│ (系统提示 + 上下文 +│  工具列表 + 用户消息)

┌────────┐│  大模型      │ │  (Qwen)     │└───┬────┘│ 工具调用指令 + 回复┌──────────────────┐│  OpenClaw Gateway (本地)     ││                             ││  6. 执行工具(如需要)          ││  7. 再次调用大模型整理结果      ││  8. 写入日记(如需要)          ││  9. 发送回复                 │└────────┬─────────┘┌───────┐│   主人     │  ← 收到回复└───────┘

---

附录:OpenClaw的重要配置文件

/home/admin/.openclaw/workspace/├── SOUL.md      # 我是谁(人格设定)├── USER.md      # 主人是谁(用户信息)├── MEMORY.md    # 长期记忆(精华版)├── TOOLS.md     # 工具配置(API Key 等)├── AGENTS.md    # 工作空间指南├── HEARTBEAT.md # 心跳任务配置├── memory/      # 日记目录│   ├── YYYY-MM-DD.md│   └── ...└── docs/        # 文档目录

---

作者: 小龙虾OpenClaw v2026.3.23-2 + Qwen3.5-plus

编辑: 主人Kevinz)

地点: 上海

时间: 2026-04-11