OpenClaw + OpenViking:给你的 AI Agent 装上"长期记忆"
一、问题:AI 的”失忆症”
你有没有遇到过这种情况?
和 AI 聊了一个下午,讨论了项目方案、定了技术选型、甚至聊到了你的偏好。
第二天再打开对话,它问你:
你好,我是 AI 助手,有什么可以帮你?
一切归零。
这不是 AI 的错。是 context 上下文窗口的限制。
两种记忆
人的记忆分两种:
- 短期记忆:工作记忆,容量有限,持续几秒到几分钟
- 长期记忆:永久存储,容量近乎无限
AI 也一样。
| 类型 | 人类 | AI Agent |
|---|---|---|
| 短期记忆 | 工作记忆 | context 上下文窗口 |
| 长期记忆 | 大脑皮层 | ?(缺失) |
context 上下文窗口是 AI 的”工作内存”,但它没有”硬盘”。
对话一结束,工作内存清空。下次见面,它不认识你。
二、方案:两层记忆架构
OpenClaw 的解决方案很直接:
给 Agent 加一个”硬盘”。
1 | ┌─────────────────────────────────────────────┐ |
短期记忆让 Agent 能对话,长期记忆让 Agent 能成长。
三、OpenViking:记忆系统的核心
OpenViking 是 OpenClaw 官方的记忆插件。
它做了三件事:
1. 向量化存储
把文本变成向量,存进向量数据库。
1 | "用户偏好 Python,不喜欢 JavaScript" |
2. 语义检索
用户说:”上次那个项目”
系统搜索向量库,找到相关记忆。
不需要精确匹配。
“上次那个项目” ≈ “3月15日讨论的数据分析平台”
3. 自动闭环
这是最关键的部分。
Auto-Capture(自动捕获):对话结束,自动提取有价值的记忆
Auto-Recall(自动召回):用户提问前,自动注入相关记忆
1 | 用户提问 → 自动召回 → 注入上下文 → 模型回答 |
自动召回 + 自动捕获 = 记忆闭环
用户无感知。AI 自己”记住”了。
四、实战:安装与配置
OpenViking 提供了一键安装脚本,支持三种部署模式:
| 模式 | 适用场景 | 特点 |
|---|---|---|
| 本地部署 | 个人使用 | 在本机启动 OpenViking 服务 |
| 远端连接 | 多人共享 | 连接已有的 OpenViking 服务 |
| 火山引擎 ECS | 生产环境 | 云端部署 + WebConsole 管理 |
快速安装
方式一:npm 安装(推荐,全平台)
1 | npm install -g openclaw-openviking-setup-helper |
方式二:curl 一键安装(Linux / macOS)
1 | curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/openclaw-plugin/install.sh | bash |
安装助手会自动:
- 检测 Python / Node.js 环境
- 提示输入火山引擎 Ark API Key
- 生成配置文件
~/.openviking/ov.conf - 配置 OpenClaw 插件
启动与验证
1 | # 加载环境变量并启动 |
完整安装指南:OpenViking 官方文档
⚠️ 兼容性提示:OpenClaw
2026.3.12+存在已知兼容性问题,可能导致对话卡死。如遇到此问题,临时回退到2026.3.11:npm install -g openclaw@2026.3.11
五、零成本方案:Hugging Face Space
Embedding API 要钱?
用 Hugging Face Space,免费。
方案对比
| 方案 | 成本 | 限制 |
|---|---|---|
| OpenAI text-embedding-3-small | $0.02/百万 tokens | 需要信用卡 |
| Gemini embedding-001 | 免费额度有限 | 需要绑定 billing |
| HF Space + BGE | 完全免费 | CPU,适合个人使用 |
五分钟搭建
1. 创建 Space
访问 https://huggingface.co/new-space
- SDK:Docker
- Hardware:CPU(免费)
2. 添加三个文件
创建 Dockerfile、requirements.txt、app.py:
Dockerfile
1 | FROM python:3.10-slim |
requirements.txt
1 | fastapi |
app.py(带 Token 认证)
1 | import os |
3. 推送,等待构建完成
4. 配置 OpenViking
1 | "embedding": { |
api_key 说明:如果你在 HF Space 设置了
API_TOKEN环境变量,需要在配置中添加对应的api_key。如果未设置认证,可省略此字段。
搞定。
记忆系统不再依赖付费 API,个人开发者零成本使用。
六、高级功能:为什么它比你想的更强
混合检索:Dense + Sparse Vector
纯向量检索有个问题:
擅长”意思是这个”,但不擅长”精确匹配 ID/代码”
比如搜索 sessionKey = "agent:main:feishu",向量可能找不到。
因为语义上它和其他 sessionKey 太像了。
OpenViking 的解决方案:混合向量存储
1 | 存储层: |
Dense vs Sparse vs BM25 对比:
| 特性 | Dense Vector(稠密向量) | Sparse Vector(稀疏向量) | BM25(传统全文检索) |
|---|---|---|---|
| 原理 | 语义压缩为低维向量 | 高维稀疏表示,保留词项权重 | 基于词频统计 |
| 语义理解 | ✅ 强 | ⚠️ 中等 | ❌ 弱 |
| 关键词匹配 | ⚠️ 模糊 | ✅ 精确 | ✅ 精确 |
| 存储成本 | 低(固定维度) | 中(随词表增长) | 低(倒排索引) |
| 适用场景 | 语义相似、同义改写 | 专业术语、ID匹配 | 大规模文档检索 |
Sparse Vector 是 BM25 的”神经网络升级版”——既保留关键词精确匹配能力,又能学习词项重要性,效果更好。
检索流程:
1 | Query → Intent Analysis(LLM 意图分析) |
两全其美:语义理解 + 关键词精确匹配。
这是 OpenViking 内置能力,无需额外配置。
时间衰减:新信息更重要
你有 100 条记忆,今天的和去年的,哪个更相关?
时间衰减算法:
1 | decayedScore = score × e^(-λ × ageInDays) |
| 时间 | 权重 |
|---|---|
| 今天 | 100% |
| 7 天前 | 84% |
| 30 天前 | 50% |
| 90 天前 | 12.5% |
新信息自然排名更高。
Session 隔离:安全第一
一个 Agent 服务多个用户,会不会串话?
不会。
1 | sessionKey = agent:<id>:<channel>:<type>:<peer> |
不同的 sessionKey = 不同的对话宇宙。
sessionKey 是上下文的宇宙边界,正确的隔离配置是安全的基础。
七、对比:为什么选 OpenClaw + OpenViking
| 方案 | 特点 | 适用场景 |
|---|---|---|
| OpenClaw + OpenViking | 开箱即用,本地优先,无外部依赖 | 个人/小团队 |
| Mem0 | 云服务,多平台 SDK | 产品级应用 |
| MemGPT | 复杂架构,多层级记忆 | 研究/实验 |
| Claude Code Memory | 单文件 Markdown | 轻量级场景 |
我的选择理由:
- 零依赖:不需要 Redis、PostgreSQL,文件系统就是数据库
- 可调试:JSONL 文件,人类可读
- 免费可用:HF Space 托管 Embedding,成本为零
- 安全隔离:Session 机制天然防止信息泄露
八、总结
AI Agent 的记忆问题,本质是存储问题。
context 上下文窗口是工作内存,会清空。
OpenViking 是硬盘,永久保存。
配置五分钟,Agent 从”失忆”变”有记忆”。
更关键的是:这套方案免费可用。
HF Space 托管 Embedding 模型,个人开发者零成本体验。
短期记忆让 Agent 能对话,长期记忆让 Agent 能成长。
给你的 Agent 装个”硬盘”吧。


