Install
openclaw skills install redis-memory-systemRedis-based cross-session memory system for OpenClaw agents. One-command setup, zero config. Automatically reads recent memory at session start (via bootstrap) and writes hourly summaries (via system cron). 7-day TTL, multi-user isolation via dual scripts. Use when agents need short-term memory that survives session resets without manual configuration, or when implementing multi-account memory isolation.
openclaw skills install redis-memory-system跨 session 短期记忆。所有数据 7 天自动过期,不撑磁盘。
Session → Redis(7天短期) → Heartbeat(自动续写) → MEMORY.md(长期提炼)
# 一条命令配好所有
chmod +x scripts/setup.sh
bash scripts/setup.sh
安装完成后自动生效:
# 1️⃣ 确保 Redis 运行
redis-server --daemonize yes
redis-cli PING
# 2️⃣ 设置脚本
chmod +x scripts/*.sh
# 3️⃣ 写入记忆
bash scripts/redis_memory.sh set aaa 2026-05-17 "今天聊了什么"
# 4️⃣ 查记忆
bash scripts/redis_memory.sh get aaa
scripts/redis_memory.sh — 通用版多用户,用 memory:<用户名> 的 hash 结构隔离。
bash scripts/redis_memory.sh get aaa # 查最近3天
bash scripts/redis_memory.sh get aaa 2026-05-17 # 查某天
bash scripts/redis_memory.sh set aaa 2026-05-17 "聊了xxx"
bash scripts/redis_memory.sh recent aaa 7 # 查最近7天
bash scripts/redis_memory.sh action 2026-05-17 # 记录系统操作
scripts/redis_memory_isolated.sh — 单用户隔离版硬编码 key 为固定用户名,通过环境变量指定用户,杜绝跨账号误操作。
REDIS_MEMORY_USER=aaa bash scripts/redis_memory_isolated.sh get # 查最近3天
REDIS_MEMORY_USER=aaa bash scripts/redis_memory_isolated.sh set 2026-05-17 "摘要"
memory:<用户名> → Redis Hash(用户记忆)
└─ 2026-05-16 → "今天的摘要内容"
└─ 2026-05-17 → "今天的摘要内容"
actions:system → Redis Hash(系统操作记录)
└─ 2026-05-16 → "下载了什么文件"
KEY 级 TTL = 7 天(604800 秒)。写入即刷新。
这些时刻之后 session 会丢失上下文,Redis 是唯一的找回路径。
一键安装会在 workspace 创建 .bootstrap/redis-memory.md,每次 session 启动时自动加载 Redis 查询指令。无需配置 SOUL.md 铁律。
Agent 在以下时刻应主动写入 Redis:
Heartbeat 中加一段自动检查逻辑,做保底写入:
## 🧠 Redis 记忆写入(每轮心跳执行)
1. 查今天是否已写过 Redis
2. 判断是否有新对话
3. 有更新就写入
4. 超过4小时无互动则跳过
这样即使会话意外中断,下一次 Heartbeat 也会把记忆存好。
| 场景 | 方案 |
|---|---|
| 单用户 | 直接用 redis_memory.sh |
| 多用户但互信 | 共用 redis_memory.sh,按用户名读写 |
| 多用户需完全隔离 | 每人一个隔离版脚本 + SOUL.md 铁律 |
隔离版脚本(redis_memory_isolated.sh)要求通过 REDIS_MEMORY_USER 环境变量指定用户,从技术层面杜绝硬编码错误。配合 SOUL.md 的铁律禁止跨账号读取,形成技术 + 行为双重保障。
## 🔴 Redis 隔离铁律(跨账号记忆保护)
| 用户 | 脚本 | 数据key |
|------|------|---------|
| 用户A | `scripts/redis_memory_a.sh` | `memory:用户A` |
| 用户B | `scripts/redis_memory_b.sh` | `memory:用户B` |
### 对话中的选择规则
- **用户A的 session** → 只用 `redis_memory_a.sh`
- **用户B的 session** → 只用 `redis_memory_b.sh`
### ❌ 绝对禁止
- 在用户A的对话里读取用户B的Redis记忆
- 用A的脚本查B的数据
- 主动告诉任何一方对方在Redis里存了什么
| 参数 | 默认值 | 说明 |
|---|---|---|
| Redis host | localhost | 可通过环境变量 REDIS_HOST 配置 |
| Redis port | 6379 | 可通过环境变量 REDIS_PORT 配置 |
| TTL | 604800 (7天) | 可通过脚本内 EXPIRE 命令调整 |
| 查询窗口 | 最近3天 | get 默认查3天;recent N 可调 |
每条记忆约 500 字节 - 2 KB。4个用户每天对话,一年的数据量 < 5 MB。 内存占用同理——7天窗口在 Redis 里不过几十 KB。