乐于分享
好东西不私藏

OpenClaw + PolarDB-X Zero:10分钟构建一个带记忆的AI Agent

OpenClaw + PolarDB-X Zero:10分钟构建一个带记忆的AI Agent

上周有个读者私信问我:”看了你之前写的文章,PolarDB-X Zero听起来不错,但实际用起来怎么样?”

我想了想,决定写一个完整的实战教程。不是那种”Hello World”级别的Demo,而是一个真正能跑、有实用价值的AI Agent。

目标:构建一个能记住用户偏好、能长期保持对话上下文的AI助手。用OpenClaw作为Agent框架,PolarDB-X Zero作为记忆数据库。

目标:让 OpenClaw Agent 拥有跨会话的长期记忆,能记住用户偏好、对话历史,还能做语义化检索。用 PolarDB-X Zero 作为记忆存储,零配置、免运维。

01

为什么选 PolarDB-X Zero ?

Agent 记忆存储对数据库的要求其实不高:能存结构化数据、支持向量检索、连接简单。但传统数据库的门槛在于”连接”这件事本身 —— 注册账号、选配置、配网络、装客户端,还没开始写业务逻辑,半天就过去了。

PolarDB-X Zero 的核心价值就是:把”有数据库可用”这件事变得足够简单。 不需要注册账号,不需要选配置,通过 API 或 AI 工具一条指令就能创建,创建完直接用 MySQL 协议连接,内置向量检索能力。

对于 Agent 记忆这种场景,完美匹配。

02

第一步:创建数据库

传统方式:注册账号、选配置、配网络……

Zero 方式:在 OpenClaw 里发一条指令。

Read https://zero.polardbx.com/SKILL.md and follow the instructions to create a database using PolarDB-X Zero.

等几十秒,你会收到连接信息:

I've created a PolarDB-X Zero instance for you. Here are the details:Instance ID: pxz_uw1xxxxxxyR_T Region: cn-beijing Edition: standard Status: ready Expires at: 2026-04-29 16:04:49 CSTConnection Details:Host: pxzeromaxxxxxxhh.polarxmysql.rds.aliyuncs.comPort3346Username: pxz_16xxxxx67Password2K_m=nz9xxxxxxxFKConnection String:mysql://pxz_160xxxx67:2K_m%3DxxxxxFK@pxxxxxxxx6hh.polarxmysql.rds.aliyuncs.com:3346Claim URL:clm_Tdt-Ocy-noxxxxxxxxWAY3 · zero.polardbx.comhttps://zero.polardbx.com/claim/clm_Tdt-Ocy-noxK9RDxxxxxxxY3The instance will be automatically destroyed at the expiration time. There is no MySQL client installed in this environment, so I wasn't able to create a database directly. You can connect with any standard MySQL client (e.g., mysql, MySQL Workbench, DBeaver, TablePlus, or a MySQL driver in your application) and run CREATE DATABASE your_db_name; to create your database.

不需要注册账号,不需要选规格,不需要配 VPC 。 PolarDB-X Zero 的 API 是免认证的,创建实例只需要发一个 POST 请求。这就是”零配置”的含义。

03

第二步:配置 OpenClaw 连接 PolarDB-X Zero

通过 Model Context Protocol 让任何 AI Agent 获得持久化 MySQL 数据库。安装 MCP Server,在你喜爱的 IDE 中即连即用。

PolarDB-X Zero 提供了官方的 polardbx-zero-mcp 服务。第一步已经通过 create_instance() 创建了实例, MCP 会自动管理实例注册,所以不需要传任何环境变量

{"mcpServers": {"polardbx": {"command""polardbx-zero-mcp"    }  }}

如果你想连接已有的 PolarDB-X 实例(而非通过 MCP 创建),才需要配置环境变量。注意,环境变量名是 MYSQL_* 开头,不是 POLARDB_*

{"mcpServers": {"polardbx": {"command""polardbx-zero-mcp","env": {"MYSQL_URL""mysql://admin:your_password@zero-xxx.polardbx.com:3306/default"      }    }  }}

或者逐个指定:MYSQL_HOSTMYSQL_PORT(默认 3306 )、MYSQL_USERNAME(注意是 USERNAME 不是 USER )、MYSQL_PASSWORDMYSQL_DATABASE

配置完成后, OpenClaw Agent 就可以通过 MCP 工具执行 SQL 查询了。polardbx-zero-mcp 提供了 create_instanceexecute_sql_toollist_instances 等工具,其中 execute_sql_tool 需要传入 sql 和 instance_id 两个必填参数。

04

第三步:设计记忆数据模型

Agent 的记忆不能只靠简单的聊天记录堆砌。我们需要分类型存储:

• 用户画像:用户 ID 、基本信息

• 对话历史:每轮对话的内容和时间

• 用户偏好:用户喜欢什么、不喜欢什么

• 向量记忆:语义化的记忆,用于相似度检索

PolarDB-X Zero 完全兼容 MySQL 协议,所以我们可以直接通过 MCP 工具执行标准 SQL 建表。更重要的是,它原生支持 VECTOR 类型和向量索引,这意味着语义检索不需要额外搭一个向量数据库。

CREATETABLE agent_memories (    id BIGINT AUTO_INCREMENT PRIMARYKEY,    user_id VARCHAR(64NOTNULL,    memory_type ENUM('profile''conversation''preference''semantic'NOTNULL,    content TEXT,    embedding VECTOR(1536),    metadata JSON,    created_at TIMESTAMP DEFAULTCURRENT_TIMESTAMP,    updated_at TIMESTAMP DEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,INDEX idx_user_type (user_id, memory_type),INDEX idx_created (created_at));

为什么是 1536 维?因为 OpenAI 的 text-embedding-3-small 模型输出就是 1536 维向量。如果你用其他 embedding 模型,相应调整维度即可。

注意:

这个 Demo 为了简洁暂未创建向量索引。当记忆数据超过 10 万条时,建议添加向量索引加速检索,例如:
 ALTER TABLE agent_memories   ADD VECTOR INDEX vi_embedding (embedding) DISTANCE=COSINE; 
05

第四步:让 Agent 拥有记忆能力

配置好 MCP 连接后,接下来需要让 Agent 知道如何使用这个数据库。我们通过 OpenClaw 的 Skill 机制,定义记忆存储和检索的行为规则。

在 OpenClaw 的 Skill 目录中创建 memory-skill/SKILL.md,告诉 Agent :

记忆规则

1. 当用户透露个人信息(如名字、职业、位置)时,存为 profile 类型

2. 当用户表达喜好(如”我喜欢吃辣”)时,存为 preference 类型

3. 每轮对话结束后,将对话内容存为 conversation 类型

4. 当对话涉及重要事实或知识时,生成语义向量后存为 semantic 类型

存储方式

• 对于 profileconversationpreference 类型,不需要向量数据, INSERT 时省略 embedding 列:

INSERTINTO agent_memories (user_id, memory_type, content, metadata)VALUES (%s, %s, %s, %s);

• 对于 semantic 类型,需要通过 OpenAI embedding API 生成向量后插入。 OpenClaw 内置了 OpenAI 工具调用能力,可以在执行 SQL 前先调用 embedding 模型生成 1536 维向量,然后使用 PolarDB-X 的 VEC_FROMTEXT() 函数将其存入数据库:

INSERTINTO agent_memories (user_id, memory_type, content, embedding, metadata)VALUES (%s, 'semantic', %s, VEC_FROMTEXT(%s), %s);

检索方式

每次回复用户前,先检索相关记忆:

1. 获取用户画像和偏好:

SELECT id, user_id, memory_type, content, metadataFROM agent_memoriesWHERE user_id = %s AND memory_type IN ('profile''preference')ORDERBY updated_at DESC LIMIT20;

2. 语义搜索相关记忆(使用 PolarDB-X 的 VEC_DISTANCE() 函数计算向量距离,距离度量方式 COSINE 或 EUCLIDEAN 在创建向量索引时指定):

SELECT id, user_id, memory_type, content, metadata,          VEC_DISTANCE(embedding, VEC_FROMTEXT(%s)) AS distanceFROM agent_memoriesWHERE user_id = %s AND memory_type = 'semantic'AND embedding IS NOTNULLORDERBY distance ASC LIMIT5;

3. 获取最近的对话历史:

SELECT id, user_id, memory_type, content, metadataFROM agent_memoriesWHERE user_id = %s AND memory_type = 'conversation'ORDERBY created_at DESC LIMIT10;
注意:所有 SQL 执行都需要通过 MCP 的 execute_sql_tool 工具,传入 sql 和第一步获取的 instance_id

这个 Skill 定义了 Agent 的记忆行为:什么时候存、怎么存、什么时候查、怎么查。 PolarDB-X Zero 的 VEC_FROMTEXT() 和 VEC_DISTANCE() 函数让向量操作在 SQL 层面就能完成,不需要应用层额外计算。

06

第五步:实际测试

配置完成后,重启 OpenClaw ,开始对话测试。

第一轮:建立记忆

你:你好,我叫小明,我喜欢吃辣,不吃香菜。Agent: 你好小明!我记下了:你喜欢吃辣,不吃香菜。以后给你推荐美食时会考虑这些偏好。

Agent 通过 MCP 工具执行了 INSERT ,将 profile 类型(名字)和 preference 类型(饮食偏好)存入 agent_memories 表。这两条记录不需要向量数据。

第二轮:测试记忆保持

你:推荐个晚餐。Agent: 基于你喜欢吃辣的偏好,推荐几个选择:1. 麻辣火锅 - 经典辣味选择2. 川菜馆的水煮鱼3. 湘菜的剁椒鱼头需要我帮你查一下附近有哪些好吃的店吗?

Agent 先通过 MCP 执行了 SELECT 查询,检索到了”喜欢吃辣,不吃香菜”的偏好记忆,据此给出推荐。

第三轮:测试偏好记忆

你:我之前说过不吃什么来着?Agent: 你之前提到不吃香菜,我已经记下了这个偏好。需要我推荐不含香菜的菜品吗?

Agent 在回复前执行了记忆检索,通过偏好查询(WHERE memory_type IN ('profile', 'preference'))找到了”不吃香菜”这条 preference 记录。这是普通的 SQL 查询,不是语义搜索——因为偏好数据不需要向量嵌入,直接按类型检索即可命中。

第四轮:测试语义检索(进阶)

如果之前还聊过其他话题,比如”Python 的装饰器怎么用”,可以测试:

你:上次聊到的那个编程概念是什么?Agent: 你上次问的是 Python 装饰器。装饰器是一种高阶函数,可以在不修改原函数代码的情况下增强功能……

Agent 生成查询的 embedding ,通过 VEC_DISTANCE() 语义相似度搜索,从 semantic 类型的记忆中找到了关于 Python 装饰器的对话记录。

07

一些进阶优化方向

上面的流程展示了核心能力,实际使用还可以进一步扩展:

• 记忆衰减:太久远的记忆降低权重,或者归档到冷存储

• 记忆摘要:定期把零散对话总结成结构化知识,减少检索量

• 多模态记忆:支持图片、文件的存储和检索( PolarDB-X 的 JSON 列可以存元数据)

• 隐私控制:敏感信息加密存储,用户可删除自己的记忆数据

• 多 Agent 共享记忆:多个 Agent 共用同一个 PolarDB-X Zero 实例,实现团队知识共享

08

写在最后

整个流程,从创建数据库到 Agent 拥有记忆能力,大概 10 分钟。其中大部分时间在理解记忆模型设计,而不是折腾数据库配置。

这就是 PolarDB-X Zero 的价值 —— 它让”有数据库可用”这件事变得足够简单。对于 AI Agent 的记忆存储、状态管理、语义检索这类场景,你不再需要组合 Redis + 向量数据库 + 关系型数据库,一个 PolarDB-X Zero 就够了。

你在做 AI Agent 时,是怎么处理记忆和上下文的? 欢迎在评论区分享你的方案。如果这篇实战对你有帮助,请点 「在看」 让更多人看到,也欢迎转发给正在做 Agent 的朋友。


系列阅读

• [第一期]从72小时到1分钟:PolarDB-X Zero 如何解决 AI 开发者的数据库配置困境

• [第二期]Zero背后的故事:我们为什么要做一款”无感”数据库