Skip to content
Back to skills

Pidan Memory

ASecurity

Pidan Memory

  • 33 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
ai-agentspythonbash

Works with

  • cli

Security analysis

A100/100

Pro scans all 13 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill pidan-memory --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pidan Memory?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Pidan Memory
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-pidan-memory/badge)](https://www.skillsdirectory.com/skills/dvcrn-pidan-memory)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: pidan-memory
description: "Pidan Memory"
---

# Pidan Memory Skill

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

## 概述

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

## 架构

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

## 功能

### 1. 自动记忆(推荐)

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

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

**安装方式:**
```bash
# 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)

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

### 3. 搜索记忆 (recall)

语义向量搜索

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

### 4. 获取最近记忆 (recent_memories)

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

### 5. 模式管理

#### 获取当前模式 (get_mode)
```json
{
  "command": "get_mode",
  "parameters": {}
}
```

#### 设置模式 (set_mode)
```json
{
  "command": "set_mode",
  "parameters": {
    "mode": "private"  // 或 "shared"
  }
}
```

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

### 6. 删除记忆 (delete_memory)

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

**参数:**
- `memory_id`: 记忆 ID (必填)
- `confirm`: 是否确认删除 (默认 false)

**首次请求(获取确认):**
```json
{
  "command": "delete_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "confirm": false
  }
}
```

**确认删除:**
```json
{
  "command": "delete_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "confirm": true
  }
}
```

**权限规则:**
- ✅ 创建人本人可以删除
- ❌ 非创建人无法删除
- ⚠️ 删除前必须二次确认

### 7. 共享记忆 (share_memory)

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

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

**示例 - 共享给指定用户:**
```json
{
  "command": "share_memory",
  "parameters": {
    "memory_id": "uuid-xxx",
    "visible_to": ["user_a", "user_b"],
    "user_id": "default"
  }
}
```

**示例 - 取消共享(设为私有):**
```json
{
  "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`

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

或通过环境变量:
```bash
MEMORY_MODE=private
MEMORY_DEDUP_AFTER=20
```

## 存储位置

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

## 技术栈

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

## CLI 测试

```bash
# 添加记忆
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,防止伪造:

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

### 权限控制

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

### Hook 模式

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

Files in this skill

  • HOOK.md915 B
  • README.md3.4 KB
  • SKILL.md5 KB
  • auto_memory.py10.5 KB
  • config.yaml839 B
  • handler.ts2.8 KB
  • memory_lance.py19 KB
  • requirements.txt49 B
  • run.py7.5 KB
  • scripts/download_accelerator.sh1.6 KB
  • scripts/install_ollama.sh1.2 KB
  • scripts/start_ollama.sh1.3 KB
  • skill.json6.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…