技能详情(站内镜像,无评论)
作者:MoonCoder @2830201534
许可证:MIT-0
MIT-0 ·免费使用、修改和重新分发。无需归因。
版本:v1.1.2
统计:⭐ 0 · 223 · 2 current installs · 2 all-time installs
⭐ 0
安装量(当前) 2
🛡 VirusTotal :良性 · OpenClaw :可疑
Package:2830201534/pidan-memory
安全扫描(ClawHub)
- VirusTotal :良性
- OpenClaw :可疑
OpenClaw 评估
The skill's code mostly matches its stated purpose (local vector memory using Ollama + LanceDB), but there are inconsistencies and higher-risk install actions (remote installer via curl|sh) and undeclared environment/binary requirements that you should review before installing.
目的
Name/description align with the code: the Python/TS files implement a LanceDB + Ollama local memory system with automatic hook-based capture, storage, search, deduplication, and per-user isolation. However, registry metadata claims no required binaries/env-vars while HOOK.md, SKILL.md and the code expect python3 and a running Ollama (localhost:11434). That metadata mismatch is inconsistent and worth flagging.
说明范围
The hook (handler.ts + auto_memory.py) will execute on message events and spawn a Python process that receives message content on stdin and may persist data under ~/.openclaw/workspace/memory. The runtime relies on the OPENCLAW_USER_ID environment variable for access control (SKILL.md and code require it), but the skill metadata did not declare this. The code reads/writes only within the ~/.openclaw workspace and calls localhost Ollama for emb…
安装机制
There is no formal install spec in the registry, but the package includes helper scripts. scripts/install_ollama.sh performs curl -fsSL https://ollama.ai/install.sh | sh on Linux (a remote installer piped to sh). scripts/download_accelerator.sh repeatedly starts and kills 'ollama pull' invocations to accelerate downloading a model. These scripts execute remote code/operations and spawn background services (ollama serve). Running curl|sh instal…
证书
The skill does not declare required environment variables in the registry, but the code and SKILL.md depend on OPENCLAW_USER_ID for authentication and optionally respect MEMORY_MODE and MEMORY_DEDUP_AFTER. handler.ts explicitly passes the full process.env into spawned Python processes, exposing any environment variables present to the child. No external API keys are requested, and network calls appear limited to localhost (Ollama) and local la…
持久
always is false and the skill is user-invocable. Installing the Hook (per SKILL.md) grants the skill automatic execution on message events — this is expected for an auto-memory hook. The skill writes to ~/.openclaw/workspace/memory (its own data); it does not modify other skills or global agent configs. No 'always: true' or implicit global privileges were found.
安装(复制给龙虾 AI)
将下方整段复制到龙虾中文库对话中,由龙虾按 SKILL.md 完成安装。
请把本段交给龙虾中文库(龙虾 AI)执行:为本机安装 OpenClaw 技能「Pidan Memory」。简介:Local persistent vector memory system using LanceDB and Ollama for semantic sea…。
请 fetch 以下地址读取 SKILL.md 并按文档完成安装:https://raw.githubusercontent.com/openclaw/skills/refs/heads/main/skills/2830201534/pidan-memory/SKILL.md
(来源:yingzhi8.cn 技能库)
SKILL.md
# 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 等),自动注入环境变量。
```