🧪 Skills

Pidan Memory

Local persistent vector memory system using LanceDB and Ollama for semantic search and multi-user isolated long-term AI assistant memory.

v1.1.2
❤️ 0
⬇️ 144
👁 1
Share

Description

Pidan Memory Skill

本地持久化向量记忆系统,为 AI Assistant 提供长期记忆能力。支持多用户/共享模式。

概述

基于 LanceDB + Ollama 实现的本地向量记忆系统,支持语义搜索和多用户隔离。

架构

用户输入 → Ollama (向量化) → LanceDB (存储/搜索)
                    ↑
              nomic-embed-text (768维向量)

功能

1. 自动记忆(推荐)

安装 Hook 后自动生效,无需手动调用!

每次对话后自动评估并存储重要信息,覆盖 16 大类场景。

安装方式:

# 1. 复制文件
mkdir -p ~/.openclaw/hooks/pidan-memory
cp HOOK.md handler.ts ~/.openclaw/hooks/pidan-memory/
cp auto_memory.py ~/.openclaw/workspace/memory/

# 2. 启用
openclaw hooks enable pidan-memory
openclaw gateway restart

2. 记住信息 (remember)

手动存储重要信息到向量数据库

参数:

  • content: 记忆内容 (必填)
  • summary: 摘要 (可选)
  • importance: 重要程度 1-5 (默认 3)
  • user_id: 用户 ID (默认 default)

示例:

{
  "command": "remember",
  "parameters": {
    "content": "用户最喜欢吃火锅",
    "summary": "饮食偏好",
    "importance": 4,
    "user_id": "default"
  }
}

3. 搜索记忆 (recall)

语义向量搜索

参数:

  • query: 搜索关键词
  • limit: 返回数量 (默认 5)
  • user_id: 用户 ID

4. 获取最近记忆 (recent_memories)

获取用户的有权限访问的记忆

5. 模式管理

获取当前模式 (get_mode)

{
  "command": "get_mode",
  "parameters": {}
}

设置模式 (set_mode)

{
  "command": "set_mode",
  "parameters": {
    "mode": "private"  // 或 "shared"
  }
}

模式说明:

  • private: 多用户模式(默认),每个用户记忆独立隔离
  • shared: 共享模式,所有用户可互相查询共享记忆

6. 删除记忆 (delete_memory)

删除记忆(需二次确认,只有创建人可删除)

参数:

  • memory_id: 记忆 ID (必填)
  • confirm: 是否确认删除 (默认 false)

首次请求(获取确认):

{
  "command": "delete_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "confirm": false
  }
}

确认删除:

{
  "command": "delete_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "confirm": true
  }
}

权限规则:

  • ✅ 创建人本人可以删除
  • ❌ 非创建人无法删除
  • ⚠️ 删除前必须二次确认

7. 共享记忆 (share_memory)

将记忆共享给指定用户(只有创建人可以共享)

参数:

  • memory_id: 记忆 ID (必填)
  • visible_to: 可见用户列表 (默认 []) - 空=私有
  • user_id: 请求者 ID (用于权限校验)

示例 - 共享给指定用户:

{
  "command": "share_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "visible_to": ["user_a", "user_b"],
    "user_id": "default"
  }
}

示例 - 取消共享(设为私有):

{
  "command": "share_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "visible_to": [],
    "user_id": "default"
  }
}

权限规则:

  • ✅ 创建人本人可以共享
  • ❌ 非创建人无法共享
  • ⚠️ visible_to 为空时 = 私有模式

8. 列表记忆 (list_memories)

列出用户有权限访问的所有记忆

8. 手动去重 (deduplicate)

手动触发去重(每 20 条自动触发)

9. 统计 (stats)

获取记忆统计信息

配置

配置文件:~/.openclaw/workspace/memory/config.yaml

memory:
  mode: private              # private | shared
  deduplicate_after: 20      # 每N条自动去重

或通过环境变量:

MEMORY_MODE=private
MEMORY_DEDUP_AFTER=20

存储位置

~/.openclaw/workspace/memory/lance/  # LanceDB 数据

技术栈

组件 作用
LanceDB 向量存储/搜索
Ollama 本地 embedding 模型
nomic-embed-text 768维向量

CLI 测试

# 添加记忆
echo '{"command": "remember", "parameters": {"content": "测试"}}' | python3 run.py

# 搜索
echo '{"command": "recall", "parameters": {"query": "测试"}}' | python3 run.py

# 获取模式
echo '{"command": "get_mode", "parameters": {}}' | python3 run.py

# 设置模式
echo '{"command": "set_mode", "parameters": {"mode": "shared"}}' | python3 run.py

# 删除记忆(首次)
echo '{"command": "delete_memory", "parameters": {"memory_id": "xxx"}}' | python3 run.py

安全说明

用户身份验证

所有命令通过 环境变量 OPENCLAW_USER_ID 获取真实用户ID,防止伪造:

# 设置用户ID
export OPENCLAW_USER_ID=your_user_id
python3 run.py ...

权限控制

  • 删除/共享记忆:只有创建人可以操作
  • 查询记忆:根据模式(private/shared)决定访问权限
  • 参数中的 user_id:无效,必须通过环境变量

Hook 模式

通过 Hook 自动触发时,用户ID由平台传递( DingTalk openid 等),自动注入环境变量。

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs