← 返回
未分类

redis-memory-system

跨会话自动记忆系统 v3.3.0 — 单脚本+配置驱动+语义标签索引。支持标签检索、倒排索引、语义搜索。
跨会话自动记忆系统 v3.3.0,单脚本+配置驱动,支持语义标签检索、倒排索引和语义搜索。
hualang-c hualang-c 来源
未分类 clawhub v3.3.0 6 版本 100000 Key: 无需
★ 0
Stars
📥 824
下载
💾 1
安装
6
版本
#latest

概述

Redis 记忆系统 v3.3.0

核心思路:Agent 零负担,系统自动完成。cron 子 session 绕过 dmScope 限制,通过文件系统直读 transcript。

架构

┌──────────────────────────────────────────────────────┐
│ OpenClaw Cron (每1h, isolated session)               │
│                                                      │
│  ① 分布式锁 (SET NX EX 600) 防并发                   │
│  ② ls -t 找最新 transcript 文件(排除cron自引用)     │
│  ③ extract_dialog.py 提取末尾200行对话               │
│  ④ LLM 语义去重 + 摘要生成                           │
│  ⑤ Lua EVAL 原子写入(HSET+EXPIRE+last_seen)       │
│  ⑥ 锁释放                                           │
└───────────────────────┬──────────────────────────────┘
                        │
┌───────────────────────┴──────────────────────────────┐
│ 系统 Cron (每1h) — 监控哨兵                          │
│                                                      │
│  ① 心跳写入隔离 key: cron:health                     │
│  ② 逐用户检查 memory:<用户> 今天有无摘要              │
│  ③ 异常时写告警 flag 到 /tmp/                        │
└───────────────────────┬──────────────────────────────┘
                        │
┌───────────────────────┴──────────────────────────────┐
│ Agent Session 启动时                                  │
│                                                      │
│  redis_memory.sh get <用户>  → 查最近3天              │
│  cat /tmp/*.flag              → 检查告警              │
└──────────────────────────────────────────────────────┘

关键解决的问题

问题方案
------------
dmScope 隔离导致 cron 子 session 看不到主会话文件系统直读 transcript JSONL
exec 间变量丢失(各自独立 shell)合并为单个 exec 脚本,变量只在进程内传递
重复追加相同摘要LLM 语义去重—新旧摘要表达相同信息时跳过
cron 污染 memory hashcron 心跳写到隔离 key cron:health
并发执行风险Redis SET NX EX 分布式锁,防止两个 cron 同时写
非原子写入(HSET+EXPIRE 分开执行)Lua 脚本(EVAL)保证一个事务内完成全部操作
文件查找顺序错误ls -t 按修改时间取最新,而非按匹配数

文件说明

文件用途
------------
scripts/memory.sh核心脚本:sync / get / set / tag / search / heartbeat / ping / stats
scripts/extract_dialog.pytranscript 对话提取工具
scripts/setup.sh一键安装(Redis + 脚本 + 系统cron)

🔑 Redis Key 设计

Key类型TTL说明
----------------------
memory:<用户名>Hash7天每日对话摘要,field=日期,value=文本
cron:healthHash7天系统心跳(隔离,不污染记忆数据)
activity:<用户名>:last_seenString12h最后活跃时间标记
cron_lock:memory_syncString10min分布式锁,防并发

部署 / Deployment

1. 基础安装 / Setup

chmod +x scripts/setup.sh
bash scripts/setup.sh

2. 创建 OpenClaw cron(核心 / Core)

# Create auto-sync cron job (runs every 1h)
# 创建每 1 小时自动同步的 cron 任务

PROMPT=$(cat scripts/openclaw_cron_prompt.txt)
openclaw cron add \
  --name "memory-auto-sync" \
  --every 1h \
  --session isolated \
  --timeout-seconds 180 \
  --thinking minimal \
  --tools "exec,read" \
  --no-deliver \
  --message "$PROMPT"

重要 / Important:

  • --tools "exec,read" — restricts cron to script execution & file reading only, prevents recursive tool triggers
  • 限制 cron 只能执行脚本和读文件,防止递归触发其他工具
  • --session isolated — runs cron in an isolated container, won't affect main session context
  • 确保 cron 在独立容器跑,不影响主会话

Session 启动检查 / Session Startup Check

每次新 session 启动时加载近期记忆。

Load recent memory on each new session start:

# Read last 3 days of memory
# 读取最近 3 天的记忆
bash scripts/memory.sh get <user>

# Check for memory loss warnings
# 检查是否有记忆丢失告警
cat /tmp/memory_warning_<user>.flag 2>/dev/null

日常运维命令 / Daily Operations

# Check Redis connection  · 检查 Redis 连通性
bash scripts/memory.sh ping

# View system overview  · 查看系统概览
bash scripts/memory.sh stats

# Read user memory (last 3 days)  · 查用户记忆(最近 3 天)
bash scripts/memory.sh get <user>

# Read memory for a specific date  · 查指定日期记忆
bash scripts/memory.sh get <user> 2026-05-26

# Search by semantic tags  · 按语义标签搜索
bash scripts/memory.sh search <keyword>

# Manually write a summary  · 手动写入摘要
bash scripts/memory.sh set <user> 2026-05-26 "Summary text here"

## v3.2.3 相比 v3.2 的改动(2026-05-26)

#### 语义标签索引(v3.2.3 新增)
- **LLM 语义标签:** cron 同步时自动提取 5 个概念级标签,替代向量检索
- **倒排索引:** `tagidx:<标签>` → 日期集合,Redis SINTER O(1) 查询
- **标签搜索:** `memory.sh search <关键词>` 配合 Agent 语义匹配
- **零额外内存:** 不用 embedding 模型和向量数据库,每日标签仅占 ~200 字节

### 核心架构改动
- **合并exec调用:** 文件查找+对话提取+Redis查重合并为一个脚本,变量不会跨exec丢失(原v3.1三步分离,变量会在独立shell中丢失)
- **Redis原子写入:** 用 Lua 脚本(`EVAL`)替代三次独立 `redis-cli` 调用,保证 HSET + EXPIRE + SET last_seen 在同一事务中完成
- **分布式锁:** `SET NX EX 600` 防并发,cron 卡住时最长600秒自动释放(`trap cleanup EXIT` 保底)
- **重试机制:** 文件读取失败时最多重试 2 次,间隔 1 秒

### 修复的 bug
- **找文件:** 从按匹配数取最多改为按 `ls -t` 修改时间取最新,避免旧文件碾压新 session
- **shell语法:** `grep -c` 后加 `|| echo 0` 兜底,消除 `[: 0: integer expression expected`
- **阈值:** 从 5 降到 2,短对话也能被收录

### 脚本改进
- **参数校验完善:** 所有脚本增加参数个数和内容校验,防止因参数不足产生幽灵记录
- **用户名校验:** `redis_memory_user.sh` 启动时检测 USERNAME 是否仍为占位符,防止写入 `memory:your_username`
- **用户列表外部化:** `cron_heartbeat_ping.sh` 支持环境变量 `REDIS_MEMORY_USERS`、配置文件 `/etc/redis-memory-users.conf` 或硬编码数组三种方式
- **redis_memory.sh 新增:** `ping` 命令(检查Redis连通性)、`stats` 命令(统计各用户记忆天数/字符数)
- **天数限制:** `recent` 命令上限 30 天,防止误传大数字导致遍历全部历史

## 版本历史

- v1.0 (2026-05-16) — 基础 Redis 记忆存储
- v1.1 (2026-05-17) — 多用户隔离 + SOUL 铁律
- v2.0 (2026-05-20) — draft 机制 + 三层保底 + 启动恢复
- v2.1 (2026-05-21) — cron 脚本增强 + 用户专用脚本
- v3.0 (2026-05-23) — 系统自动读会话写摘要,Agent 零负担
- **v3.1 (2026-05-23) — 修复 dmScope 隔离问题,改用文件路径;增加去重/过滤逻辑**
- **v3.1.1 (2026-05-25) — 架构大修:合并exec、Lua原子写入、分布式锁、重试机制**
- **v3.2 (2026-05-25) — 单脚本+配置驱动+JSON输出**
- **v3.2.3 (2026-05-26) — 语义标签索引 + 倒排检索 + 标签搜索**
- **v3.3.0 (2026-05-27) — 统一版本号;修复跨夜日期写入错误:sync改用transcript文件修改时间确定日期key,避免凌晨写入时日期错位**

版本历史

共 6 个版本

  • v3.3.0 当前
    2026-05-28 12:54
  • v3.2.4
    2026-05-26 22:58
  • v3.2.2
    2026-05-26 17:36
  • v3.0.0
    2026-05-25 16:46 安全 安全
  • v2.1.0
    2026-05-23 16:15 安全 安全
  • v2.0.0
    2026-05-20 05:25 安全 安全

安全检测

腾讯云安全 (Keen)

队列中

腾讯云安全 (Sanbu)

队列中

🔗 相关推荐

ai-agent

Find Skills

guipi888
场景驱动+关键词双模式技能发现工具。当用户用自然语言描述场景/需求(如"我想做一个海报""帮我分析股票"),或明确说"安装技能/find skills/找个skill"时,自动从官方内置、本地已安装、SkillHub、虾评、GitHub、C
★ 1,479 📥 542,410
ai-agent

Self-Improving + Proactive Agent

ivangdavila
自我反思+自我批评+自我学习+自组织记忆。智能体评估自身工作、发现错误并持续改进。
★ 1,401 📥 323,431
dev-programming

HipoolMemorySystem

hualang-c
嵌入式纯C记忆系统,支持多线程、Fork快照、分片管理,提供高效键值存储与基于标签、时间的范围查询。
★ 0 📥 138