Files
nexus/openclaw/memory-setup/memory-lancedb-pro 使用手册.md

702 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: 1) 备份
source:
author: shenwei
published:
created:
description:
tags: [lancedb, longterm-memory, memory, memory-lancedb-pro, openclaw]
---
#memory-lancedb-pro #openclaw #memory #longterm-memory #lancedb
## 为什么选 memory-lancedb-pro
大多数 AI 智能体都有"失忆症"——每次新对话,之前聊过的全部清零。
**memory-lancedb-pro** 是 OpenClaw 的生产级长期记忆插件,把你的智能体变成一个真正的 **AI 记忆助理**——自动捕捉重要信息,让噪音自然衰减,在恰当的时候回忆起恰当的内容。无需手动标记,无需复杂配置。
### AI 记忆助理实际效果
**没有记忆——每次都从零开始:**
> **你:** "缩进用 tab所有函数都要加错误处理。"
> *(下一次会话)*
> **你:** "我都说了用 tab 不是空格!" 😤
> *(再下一次会话)*
> **你:** "……我真的说了第三遍了tab还有错误处理。"
**有了 memory-lancedb-pro——你的智能体学会了、记住了**
> **你:** "缩进用 tab所有函数都要加错误处理。"
> *(下一次会话——智能体自动回忆你的偏好)*
> **智能体:** *(默默改成 tab 缩进,并补上错误处理)* ✅
> **你:** "上个月我们为什么选了 PostgreSQL 而不是 MongoDB"
> **智能体:** "根据我们 2 月 12 日的讨论,主要原因是……" ✅
这就是 **AI 记忆助理** 的价值——学习你的风格,回忆过去的决策,提供个性化的回应,不再让你重复自己。
### 还能做什么?
| | 你能得到的 |
|---|---|
| **自动捕捉** | 智能体从每次对话中学习——不需要手动调用 `memory_store` |
| **智能提取** | LLM 驱动的 6 类分类:用户画像、偏好、实体、事件、案例、模式 |
| **智能遗忘** | Weibull 衰减模型——重要记忆留存,噪音自然消退 |
| **混合检索** | 向量 + BM25 全文搜索,融合交叉编码器重排序 |
| **上下文注入** | 相关记忆在每次回复前自动浮现 |
| **多作用域隔离** | 按智能体、按用户、按项目隔离记忆边界 |
| **任意 Provider** | OpenAI、Jina、Gemini、Ollama 或任意 OpenAI 兼容 API |
| **完整工具链** | CLI、备份、迁移、升级、导入导出——生产可用 |
---
## 快速开始
### 方式 A一键安装脚本推荐
社区维护的 **[安装脚本](https://github.com/CortexReach/toolbox/tree/main/memory-lancedb-pro-setup)** 一条命令搞定安装、升级和修复:
```bash
curl -fsSL https://raw.githubusercontent.com/CortexReach/toolbox/main/memory-lancedb-pro-setup/setup-memory.sh -o setup-memory.sh
bash setup-memory.sh
```
> 脚本覆盖的完整场景和其他社区工具,详见下方 [生态工具](#生态工具)。
### 方式 B手动安装
**通过 OpenClaw CLI推荐**
```bash
openclaw plugins install memory-lancedb-pro@beta
```
**或通过 npm**
```bash
npm i memory-lancedb-pro@beta
```
> 如果用 npm 安装,你还需要在 `openclaw.json` 的 `plugins.load.paths` 中添加插件安装目录的 **绝对路径**。这是最常见的安装问题。
`openclaw.json` 中添加配置:
```json
{
"plugins": {
"slots": { "memory": "memory-lancedb-pro" },
"entries": {
"memory-lancedb-pro": {
"enabled": true,
"config": {
"embedding": {
"provider": "openai-compatible",
"apiKey": "${OPENAI_API_KEY}",
"model": "text-embedding-3-small"
},
"autoCapture": true,
"autoRecall": true,
"smartExtraction": true,
"extractMinMessages": 2,
"extractMaxChars": 8000,
"sessionMemory": { "enabled": false }
}
}
}
}
}
```
**为什么用这些默认值?**
- `autoCapture` + `smartExtraction` → 智能体自动从每次对话中学习
- `autoRecall` → 相关记忆在每次回复前自动注入
- `extractMinMessages: 2` → 正常两轮对话即触发提取
- `sessionMemory.enabled: false` → 避免会话摘要在初期污染检索结果
验证并重启:
```bash
openclaw config validate
openclaw gateway restart
openclaw logs --follow --plain | grep "memory-lancedb-pro"
```
你应该能看到:
- `memory-lancedb-pro: smart extraction enabled`
- `memory-lancedb-pro@...: plugin registered`
完成!你的智能体现在拥有长期记忆了。
<details>
<summary><strong>更多安装路径(已有用户、升级)</strong></summary>
**已在使用 OpenClaw**
1.`plugins.load.paths` 中添加插件的 **绝对路径**
2. 绑定记忆插槽:`plugins.slots.memory = "memory-lancedb-pro"`
3. 验证:`openclaw plugins info memory-lancedb-pro && openclaw memory-pro stats`
**从 v1.1.0 之前的版本升级?**
```bash
# 1) 备份
openclaw memory-pro export --scope global --output memories-backup.json
# 2) 试运行
openclaw memory-pro upgrade --dry-run
# 3) 执行升级
openclaw memory-pro upgrade
# 4) 验证
openclaw memory-pro stats
```
详见 `CHANGELOG-v1.1.0.md` 了解行为变更和升级说明。
</details>
<details>
<summary><strong>Telegram Bot 快捷导入(点击展开)</strong></summary>
如果你在使用 OpenClaw 的 Telegram 集成,最简单的方式是直接给主 Bot 发消息,而不是手动编辑配置文件。
以下为英文原文,方便直接复制发送给 Bot
```text
Help me connect this memory plugin with the most user-friendly configuration: https://github.com/CortexReach/memory-lancedb-pro
Requirements:
1. Set it as the only active memory plugin
2. Use Jina for embedding
3. Use Jina for reranker
4. Use gpt-4o-mini for the smart-extraction LLM
5. Enable autoCapture, autoRecall, smartExtraction
6. extractMinMessages=2
7. sessionMemory.enabled=false
8. captureAssistant=false
9. retrieval mode=hybrid, vectorWeight=0.7, bm25Weight=0.3
10. rerank=cross-encoder, candidatePoolSize=12, minScore=0.6, hardMinScore=0.62
11. Generate the final openclaw.json config directly, not just an explanation
```
</details>
---
## 生态工具
memory-lancedb-pro 是核心插件。社区围绕它构建了配套工具,让安装和日常使用更加顺畅:
### 安装脚本——一键安装、升级和修复
> **[CortexReach/toolbox/memory-lancedb-pro-setup](https://github.com/CortexReach/toolbox/tree/main/memory-lancedb-pro-setup)**
不只是简单的安装器——脚本能智能处理各种常见场景:
| 你的情况 | 脚本会做什么 |
|---|---|
| 从未安装 | 全新下载 → 安装依赖 → 选择配置 → 写入 openclaw.json → 重启 |
| 通过 `git clone` 安装,卡在旧版本 | 自动 `git fetch` + `checkout` 到最新 → 重装依赖 → 验证 |
| 配置中有无效字段 | 自动检测并通过 schema 过滤移除不支持的字段 |
| 通过 `npm` 安装 | 跳过 git 更新,提醒你自行运行 `npm update` |
| `openclaw` CLI 因无效配置崩溃 | 降级方案:直接从 `openclaw.json` 文件读取工作目录路径 |
| `extensions/` 而非 `plugins/` | 从配置或文件系统自动检测插件位置 |
| 已是最新版 | 仅执行健康检查,不做改动 |
```bash
bash setup-memory.sh # 安装或升级
bash setup-memory.sh --dry-run # 仅预览
bash setup-memory.sh --beta # 包含预发布版本
bash setup-memory.sh --uninstall # 还原配置并移除插件
```
内置 Provider 预设:**Jina / DashScope / SiliconFlow / OpenAI / Ollama**,或自带任意 OpenAI 兼容 API。完整用法`--ref``--selfcheck-only` 等)详见 [安装脚本 README](https://github.com/CortexReach/toolbox/tree/main/memory-lancedb-pro-setup)。
### Claude Code / OpenClaw Skill——AI 引导式配置
> **[CortexReach/memory-lancedb-pro-skill](https://github.com/CortexReach/memory-lancedb-pro-skill)**
安装这个 Skill你的 AI 智能体Claude Code 或 OpenClaw就能深度掌握 memory-lancedb-pro 的所有功能。只需说 **"help me enable the best config"** 即可获得:
- **7 步引导式配置流程**,提供 4 套部署方案:
- 满血版Jina + OpenAI/ 省钱版(免费 SiliconFlow 重排序)/ 简约版(仅 OpenAI/ 全本地版Ollama零 API 成本)
- **全部 9 个 MCP 工具** 的正确用法:`memory_recall``memory_store``memory_forget``memory_update``memory_stats``memory_list``self_improvement_log``self_improvement_extract_skill``self_improvement_review` *(完整工具集需要设置 `enableManagementTools: true`——默认快速配置仅暴露 4 个核心工具)*
- **常见坑规避**workspace 插件启用、`autoRecall` 默认 false、jiti 缓存、环境变量、作用域隔离等
**Claude Code 安装:**
```bash
git clone https://github.com/CortexReach/memory-lancedb-pro-skill.git ~/.claude/skills/memory-lancedb-pro
```
**OpenClaw 安装:**
```bash
git clone https://github.com/CortexReach/memory-lancedb-pro-skill.git ~/.openclaw/workspace/skills/memory-lancedb-pro-skill
```
---
## 视频教程
> 完整演示:安装、配置、混合检索内部原理。
[![YouTube Video](https://img.shields.io/badge/YouTube-Watch%20Now-red?style=for-the-badge&logo=youtube)](https://youtu.be/MtukF1C8epQ)
**https://youtu.be/MtukF1C8epQ**
[![Bilibili Video](https://img.shields.io/badge/Bilibili-Watch%20Now-00A1D6?style=for-the-badge&logo=bilibili&logoColor=white)](https://www.bilibili.com/video/BV1zUf2BGEgn/)
**https://www.bilibili.com/video/BV1zUf2BGEgn/**
---
## 架构
```
┌─────────────────────────────────────────────────────────┐
│ index.ts (入口) │
│ 插件注册 · 配置解析 · 生命周期钩子 │
└────────┬──────────┬──────────┬──────────┬───────────────┘
│ │ │ │
┌────▼───┐ ┌────▼───┐ ┌───▼────┐ ┌──▼──────────┐
│ store │ │embedder│ │retriever│ │ scopes │
│ .ts │ │ .ts │ │ .ts │ │ .ts │
└────────┘ └────────┘ └────────┘ └─────────────┘
│ │
┌────▼───┐ ┌─────▼──────────┐
│migrate │ │noise-filter.ts │
│ .ts │ │adaptive- │
└────────┘ │retrieval.ts │
└────────────────┘
┌─────────────┐ ┌──────────┐
│ tools.ts │ │ cli.ts │
│ (智能体 API)│ │ (CLI) │
└─────────────┘ └──────────┘
```
> 完整架构解析见 [docs/memory_architecture_analysis.md](docs/memory_architecture_analysis.md)。
<details>
<summary><strong>文件说明(点击展开)</strong></summary>
| 文件 | 用途 |
| --- | --- |
| `index.ts` | 插件入口,注册 OpenClaw 插件 API、解析配置、挂载生命周期钩子 |
| `openclaw.plugin.json` | 插件元数据 + 完整 JSON Schema 配置声明 |
| `cli.ts` | CLI 命令:`memory-pro list/search/stats/delete/delete-bulk/export/import/reembed/upgrade/migrate` |
| `src/store.ts` | LanceDB 存储层:建表 / 全文索引 / 向量搜索 / BM25 搜索 / CRUD |
| `src/embedder.ts` | Embedding 抽象层,兼容任意 OpenAI 兼容 API |
| `src/retriever.ts` | 混合检索引擎:向量 + BM25 → 混合融合 → 重排序 → 生命周期衰减 → 过滤 |
| `src/scopes.ts` | 多作用域访问控制 |
| `src/tools.ts` | 智能体工具定义:`memory_recall``memory_store``memory_forget``memory_update` + 管理工具 |
| `src/noise-filter.ts` | 过滤智能体拒绝回复、元问题、打招呼等低质量内容 |
| `src/adaptive-retrieval.ts` | 判断查询是否需要记忆检索 |
| `src/migrate.ts` | 从内置 `memory-lancedb` 迁移到 Pro |
| `src/smart-extractor.ts` | LLM 驱动的 6 类提取,支持 L0/L1/L2 分层存储和两阶段去重 |
| `src/decay-engine.ts` | Weibull 拉伸指数衰减模型 |
| `src/tier-manager.ts` | 三级晋升/降级:外围 ↔ 工作 ↔ 核心 |
</details>
---
## 核心功能
### 混合检索
```
查询 → embedQuery() ─┐
├─→ 混合融合 → 重排序 → 生命周期衰减加权 → 长度归一化 → 过滤
查询 → BM25 全文 ─────┘
```
- **向量搜索** — 基于 LanceDB ANN 的语义相似度(余弦距离)
- **BM25 全文搜索** — 通过 LanceDB FTS 索引进行精确关键词匹配
- **混合融合** — 以向量分数为基础BM25 命中结果获得加权提升(非标准 RRF——针对实际召回质量调优
- **可配置权重** — `vectorWeight``bm25Weight``minScore`
### 交叉编码器重排序
- 内置 **Jina**、**SiliconFlow**、**Voyage AI** 和 **Pinecone** 适配器
- 兼容任意 Jina 兼容端点(如 Hugging Face TEI、DashScope
- 混合打分60% 交叉编码器 + 40% 原始融合分数
- 优雅降级API 失败时回退到余弦相似度
### 多阶段评分管线
| 阶段 | 效果 |
| --- | --- |
| **混合融合** | 结合语义召回和精确匹配召回 |
| **交叉编码器重排序** | 提升语义精确命中的排名 |
| **生命周期衰减加权** | Weibull 时效性 + 访问频率 + 重要性 × 置信度 |
| **长度归一化** | 防止长条目主导结果锚点500 字符) |
| **硬最低分** | 移除无关结果默认0.35 |
| **MMR 多样性** | 余弦相似度 > 0.85 → 降权 |
### 智能记忆提取v1.1.0
- **LLM 驱动的 6 类提取**:用户画像、偏好、实体、事件、案例、模式
- **L0/L1/L2 分层存储**L0一句话索引→ L1结构化摘要→ L2完整叙述
- **两阶段去重**向量相似度预过滤≥0.7)→ LLM 语义决策CREATE/MERGE/SKIP
- **类别感知合并**`profile` 始终合并,`events`/`cases` 仅追加
### 记忆生命周期管理v1.1.0
- **Weibull 衰减引擎**:综合分数 = 时效性 + 频率 + 内在价值
- **三级晋升**`外围 ↔ 工作 ↔ 核心`,阈值可配置
- **访问强化**:频繁被召回的记忆衰减更慢(类似间隔重复机制)
- **重要性调制半衰期**:重要记忆衰减更慢
### 多作用域隔离
- 内置作用域:`global``agent:<id>``custom:<name>``project:<id>``user:<id>`
- 通过 `scopes.agentAccess` 实现智能体级别的访问控制
- 默认:每个智能体访问 `global` + 自己的 `agent:<id>` 作用域
### 自动捕捉与自动回忆
- **自动捕捉**`agent_end`):从对话中提取偏好/事实/决策/实体,去重后每轮最多存储 3 条
- **自动回忆**`before_agent_start`):注入 `<relevant-memories>` 上下文(最多 3 条)
### 噪音过滤与自适应检索
- 过滤低质量内容:智能体拒绝回复、元问题、打招呼
- 跳过检索:打招呼、斜杠命令、简单确认、表情符号
- 强制检索:记忆关键词("记得"、"之前"、"上次"
- 中文感知阈值中文6 字符 vs 英文15 字符)
---
<details>
<summary><strong>与内置 <code>memory-lancedb</code> 的对比(点击展开)</strong></summary>
| 功能 | 内置 `memory-lancedb` | **memory-lancedb-pro** |
| --- | :---: | :---: |
| 向量搜索 | 有 | 有 |
| BM25 全文搜索 | - | 有 |
| 混合融合(向量 + BM25 | - | 有 |
| 交叉编码器重排序(多 Provider | - | 有 |
| 时效性提升和时间衰减 | - | 有 |
| 长度归一化 | - | 有 |
| MMR 多样性 | - | 有 |
| 多作用域隔离 | - | 有 |
| 噪音过滤 | - | 有 |
| 自适应检索 | - | 有 |
| 管理 CLI | - | 有 |
| 会话记忆 | - | 有 |
| 任务感知 Embedding | - | 有 |
| **LLM 智能提取6 类)** | - | 有v1.1.0 |
| **Weibull 衰减 + 层级晋升** | - | 有v1.1.0 |
| 任意 OpenAI 兼容 Embedding | 有限 | 有 |
</details>
---
## 配置
完整配置示例
```json
{
"embedding": {
"apiKey": "${JINA_API_KEY}",
"model": "jina-embeddings-v5-text-small",
"baseURL": "https://api.jina.ai/v1",
"dimensions": 1024,
"taskQuery": "retrieval.query",
"taskPassage": "retrieval.passage",
"normalized": true
},
"dbPath": "~/.openclaw/memory/lancedb-pro",
"autoCapture": true,
"autoRecall": true,
"retrieval": {
"mode": "hybrid",
"vectorWeight": 0.7,
"bm25Weight": 0.3,
"minScore": 0.3,
"rerank": "cross-encoder",
"rerankApiKey": "${JINA_API_KEY}",
"rerankModel": "jina-reranker-v3",
"rerankEndpoint": "https://api.jina.ai/v1/rerank",
"rerankProvider": "jina",
"candidatePoolSize": 20,
"recencyHalfLifeDays": 14,
"recencyWeight": 0.1,
"filterNoise": true,
"lengthNormAnchor": 500,
"hardMinScore": 0.35,
"timeDecayHalfLifeDays": 60,
"reinforcementFactor": 0.5,
"maxHalfLifeMultiplier": 3
},
"enableManagementTools": false,
"scopes": {
"default": "global",
"definitions": {
"global": { "description": "Shared knowledge" },
"agent:discord-bot": { "description": "Discord bot private" }
},
"agentAccess": {
"discord-bot": ["global", "agent:discord-bot"]
}
},
"sessionMemory": {
"enabled": false,
"messageCount": 15
},
"smartExtraction": true,
"llm": {
"apiKey": "${OPENAI_API_KEY}",
"model": "gpt-4o-mini",
"baseURL": "https://api.openai.com/v1"
},
"extractMinMessages": 2,
"extractMaxChars": 8000
}
```
Embedding 服务商
兼容 **任意 OpenAI 兼容 Embedding API**
| 服务商 | 模型 | Base URL | 维度 |
| --- | --- | --- | --- |
| **Jina**(推荐) | `jina-embeddings-v5-text-small` | `https://api.jina.ai/v1` | 1024 |
| **OpenAI** | `text-embedding-3-small` | `https://api.openai.com/v1` | 1536 |
| **Voyage** | `voyage-4-lite` / `voyage-4` | `https://api.voyageai.com/v1` | 1024 / 1024 |
| **Google Gemini** | `gemini-embedding-001` | `https://generativelanguage.googleapis.com/v1beta/openai/` | 3072 |
| **Ollama**(本地) | `nomic-embed-text` | `http://localhost:11434/v1` | 取决于模型 |
重排序服务商
交叉编码器重排序通过 `rerankProvider` 支持多个服务商:
| 服务商 | `rerankProvider` | 示例模型 |
| --- | --- | --- |
| **Jina**(默认) | `jina` | `jina-reranker-v3` |
| **SiliconFlow**(有免费额度) | `siliconflow` | `BAAI/bge-reranker-v2-m3` |
| **Voyage AI** | `voyage` | `rerank-2.5` |
| **Pinecone** | `pinecone` | `bge-reranker-v2-m3` |
任何 Jina 兼容的重排序端点也可以使用——设置 `rerankProvider: "jina"` 并将 `rerankEndpoint` 指向你的服务(如 Hugging Face TEI、DashScope `qwen3-rerank`)。
智能提取LLM— v1.1.0
`smartExtraction` 启用(默认 `true`)时,插件使用 LLM 智能提取和分类记忆,替代基于正则的触发方式。
| 字段 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| `smartExtraction` | boolean | `true` | 是否启用 LLM 智能 6 类别提取 |
| `llm.auth` | string | `api-key` | `api-key` 使用 `llm.apiKey` / `embedding.apiKey``oauth` 默认使用 plugin 级 OAuth token 文件 |
| `llm.apiKey` | string | *(复用 `embedding.apiKey`* | LLM 提供商 API Key |
| `llm.model` | string | `openai/gpt-oss-120b` | LLM 模型名称 |
| `llm.baseURL` | string | *(复用 `embedding.baseURL`* | LLM API 端点 |
| `llm.oauthProvider` | string | `openai-codex` | `llm.auth``oauth` 时使用的 OAuth provider id |
| `llm.oauthPath` | string | `~/.openclaw/.memory-lancedb-pro/oauth.json` | `llm.auth``oauth` 时使用的 OAuth token 文件 |
| `llm.timeoutMs` | number | `30000` | LLM 请求超时(毫秒) |
| `extractMinMessages` | number | `2` | 触发提取的最小消息数 |
| `extractMaxChars` | number | `8000` | 发送给 LLM 的最大字符数 |
OAuth `llm` 配置(使用现有 Codex / ChatGPT 登录缓存来发送 LLM 请求):
```json
{
"llm": {
"auth": "oauth",
"oauthProvider": "openai-codex",
"model": "gpt-5.4",
"oauthPath": "${HOME}/.openclaw/.memory-lancedb-pro/oauth.json",
"timeoutMs": 30000
}
}
```
`llm.auth: "oauth"` 说明:
- `llm.oauthProvider` 当前仅支持 `openai-codex`
- OAuth token 默认存放在 `~/.openclaw/.memory-lancedb-pro/oauth.json`
- 如需自定义路径,可设置 `llm.oauthPath`
- `auth login` 会在 OAuth 文件旁边快照原来的 `api-key` 模式 `llm` 配置;`auth logout` 在可用时会恢复这份快照。
-`api-key` 切到 `oauth` 时不会自动沿用 `llm.baseURL`;只有在你明确需要自定义 ChatGPT/Codex 兼容后端时,才应在 `oauth` 模式下手动设置。
生命周期配置(衰减 + 层级)
| 字段 | 默认值 | 说明 |
|------|--------|------|
| `decay.recencyHalfLifeDays` | `30` | Weibull 时效性衰减的基础半衰期 |
| `decay.frequencyWeight` | `0.3` | 访问频率在综合分数中的权重 |
| `decay.intrinsicWeight` | `0.3` | `重要性 × 置信度` 的权重 |
| `decay.betaCore` | `0.8` | `核心` 记忆的 Weibull beta |
| `decay.betaWorking` | `1.0` | `工作` 记忆的 Weibull beta |
| `decay.betaPeripheral` | `1.3` | `外围` 记忆的 Weibull beta |
| `tier.coreAccessThreshold` | `10` | 晋升到 `核心` 所需的最小召回次数 |
| `tier.peripheralAgeDays` | `60` | 降级过期记忆的天数阈值 |
访问强化
频繁被召回的记忆衰减更慢(类似间隔重复机制)。
配置项(在 `retrieval` 下):
- `reinforcementFactor`0-2默认 `0.5`)— 设为 `0` 可禁用
- `maxHalfLifeMultiplier`1-10默认 `3`)— 有效半衰期的硬上限
---
## CLI 命令
```bash
openclaw memory-pro list [--scope global] [--category fact] [--limit 20] [--json]
openclaw memory-pro search "查询" [--scope global] [--limit 10] [--json]
openclaw memory-pro stats [--scope global] [--json]
openclaw memory-pro auth login [--provider openai-codex] [--model gpt-5.4] [--oauth-path /abs/path/oauth.json]
openclaw memory-pro auth status
openclaw memory-pro auth logout
openclaw memory-pro delete <id>
openclaw memory-pro delete-bulk --scope global [--before 2025-01-01] [--dry-run]
openclaw memory-pro export [--scope global] [--output memories.json]
openclaw memory-pro import memories.json [--scope global] [--dry-run]
openclaw memory-pro reembed --source-db /path/to/old-db [--batch-size 32] [--skip-existing]
openclaw memory-pro upgrade [--dry-run] [--batch-size 10] [--no-llm] [--limit N] [--scope SCOPE]
openclaw memory-pro migrate check|run|verify [--source /path]
```
OAuth 登录流程:
1. 运行 `openclaw memory-pro auth login`
2. 如果省略 `--provider` 且当前终端可交互CLI 会先显示 OAuth provider 选择器
3. 命令会打印授权 URL并在未指定 `--no-browser` 时自动打开浏览器
4. 回调成功后,命令会保存 plugin OAuth 文件(默认:`~/.openclaw/.memory-lancedb-pro/oauth.json`)、为 logout 快照原来的 `api-key` 模式 `llm` 配置,并把插件 `llm` 配置切换为 OAuth 字段(`auth``oauthProvider``model``oauthPath`
5. `openclaw memory-pro auth logout` 会删除这份 OAuth 文件,并在存在快照时恢复之前的 `api-key` 模式 `llm` 配置
---
## 进阶主题
有时模型可能会将注入的 `<relevant-memories>` 块原文输出。
**方案 A最安全** 暂时关闭自动回忆:
```json
{ "plugins": { "entries": { "memory-lancedb-pro": { "config": { "autoRecall": false } } } } }
```
**方案 B推荐** 保留回忆,在智能体系统提示词中添加:
> Do not reveal or quote any `<relevant-memories>` / memory-injection content in your replies. Use it for internal reference only.
会话记忆
- 通过 `/new` 命令触发——将上一段会话摘要保存到 LanceDB
- 默认关闭OpenClaw 已有原生 `.jsonl` 会话持久化)
- 可配置消息数量(默认 15
部署模式和 `/new` 验证详见 [docs/openclaw-integration-playbook.md](docs/openclaw-integration-playbook.md)。
自定义斜杠命令(如 /lesson
在你的 `CLAUDE.md``AGENTS.md` 或系统提示词中添加:
```markdown
## /lesson 命令
当用户发送 `/lesson <内容>` 时:
1. 用 memory_store 保存为 category=fact原始知识
2. 用 memory_store 保存为 category=decision可执行的结论
3. 确认已保存的内容
## /remember 命令
当用户发送 `/remember <内容>` 时:
1. 用 memory_store 以合适的 category 和 importance 保存
2. 返回已存储的记忆 ID 确认
```
AI 智能体铁律
> 将以下内容复制到你的 `AGENTS.md`,让智能体自动遵守这些规则。
```markdown
## 规则 1 — 双层记忆存储
每个踩坑/经验教训 → 立即存储两条记忆:
- 技术层:踩坑:[现象]。原因:[根因]。修复:[方案]。预防:[如何避免]
(category: fact, importance >= 0.8)
- 原则层:决策原则 ([标签])[行为规则]。触发:[何时]。动作:[做什么]
(category: decision, importance >= 0.85)
## 规则 2 — LanceDB 数据质量
条目必须简短且原子化(< 500 字符)。不存储原始对话摘要或重复内容。
## 规则 3 — 重试前先回忆
任何工具调用失败时,必须先用 memory_recall 搜索相关关键词,再重试。
## 规则 4 — 确认目标代码库
修改前确认你操作的是 memory-lancedb-pro 还是内置 memory-lancedb。
## 规则 5 — 修改插件代码后清除 jiti 缓存
修改 plugins/ 下的 .ts 文件后,必须先执行 rm -rf /tmp/jiti/ 再重启 openclaw gateway。
```
数据库 Schema
LanceDB 表 `memories`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `id` | string (UUID) | 主键 |
| `text` | string | 记忆文本(全文索引) |
| `vector` | float[] | Embedding 向量 |
| `category` | string | 存储类别:`preference` / `fact` / `decision` / `entity` / `reflection` / `other` |
| `scope` | string | 作用域标识(如 `global``agent:main` |
| `importance` | float | 重要性分数 0-1 |
| `timestamp` | int64 | 创建时间戳(毫秒) |
| `metadata` | string (JSON) | 扩展元数据 |
v1.1.0 常用 `metadata` 字段:`l0_abstract``l1_overview``l2_content``memory_category``tier``access_count``confidence``last_accessed_at`
> **关于分类的说明:** 顶层 `category` 字段使用 6 个存储类别。智能提取的 6 类语义标签(`profile` / `preferences` / `entities` / `events` / `cases` / `patterns`)存储在 `metadata.memory_category` 中。
故障排除
### "Cannot mix BigInt and other types"LanceDB / Apache Arrow
在 LanceDB 0.26+ 上,某些数值列可能以 `BigInt` 形式返回。升级到 **memory-lancedb-pro >= 1.0.14**——插件现在会在运算前使用 `Number(...)` 进行类型转换。
---
## 文档
| 文档 | 说明 |
| --- | --- |
| [OpenClaw 集成手册](docs/openclaw-integration-playbook.md) | 部署模式、验证、回归矩阵 |
| [记忆架构分析](docs/memory_architecture_analysis.md) | 完整架构深度解析 |
| [CHANGELOG v1.1.0](docs/CHANGELOG-v1.1.0.md) | v1.1.0 行为变更和升级说明 |
| [长上下文分块](docs/long-context-chunking.md) | 长文档分块策略 |
---
## Beta智能记忆 v1.1.0
> 状态Beta——通过 `npm i memory-lancedb-pro@beta` 安装。使用 `latest` 的稳定版用户不受影响。
| 功能 | 说明 |
|------|------|
| **智能提取** | LLM 驱动的 6 类提取,支持 L0/L1/L2 元数据。禁用时回退到正则模式。 |
| **生命周期评分** | Weibull 衰减集成到检索中——高频和高重要性记忆排名更高。 |
| **层级管理** | 三级系统(核心 → 工作 → 外围),自动晋升/降级。 |
反馈:[GitHub Issues](https://github.com/CortexReach/memory-lancedb-pro/issues) · 回退:`npm i memory-lancedb-pro@latest`
---
## 依赖
| 包 | 用途 |
| --- | --- |
| `@lancedb/lancedb` ≥0.26.2 | 向量数据库ANN + FTS |
| `openai` ≥6.21.0 | OpenAI 兼容 Embedding API 客户端 |
| `@sinclair/typebox` 0.34.48 | JSON Schema 类型定义 |