本地长记忆

Polar Sponsor
爱发电 赞助
.NET 9.0

面向隐私敏感与离线场景的本地向量记忆系统。基于 LanceDB + 纯本地 embedding(Ollama/nomic-embed-text),实现零外部 API 调用、零数据出域、完全离线可用的语义记忆检索。 核心能力包括本地 embedding 引擎(Ollama nomic-embed-text,毫秒级延迟)、LanceDB 向量库(本地 SQLite 存储)、embedding 结果缓存(避免重复计算)、WAL 写前日志、三层冷热分层、资源占用控制(内存上限/压缩/清理)、一键初始化与维护命令

本地长记忆(LocalMemo Pro)

功能概述

本地长记忆(LocalMemo Pro)是一项面向实际任务的技能,主要用于零 API、零云端、零数据出域 的本地向量记忆系统;基于 Ollama + LanceDB,在本地完成 embedding 生成与语义检索,适合隐私敏感、离线、成本敏感场景;

核心要点

  • 痛点与对策速查;
  • 本系统对策;
  • 数据隐私担忧;

使用与执行

云端 embedding 数据出域;纯本地 Ollama embedding,数据不出本机;API 费用高;云端 emb。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

本地长记忆(LocalMemo Pro)

零 API、零云端、零数据出域的本地向量记忆系统。基于 Ollama + LanceDB,在本地完成 embedding 生成与语义检索,适合隐私敏感、离线、成本敏感场景。

痛点与对策速查

用户痛点 发生场景 本系统对策
数据隐私担忧 云端 embedding 数据出域 纯本地 Ollama embedding,数据不出本机
API 费用高 云端 embedding 按 token 收费 本地 nomic-embed-text 完全免费
离线不可用 无网络时记忆系统瘫痪 本地运行,完全离线可用
重复计算浪费 相同文本反复生成 embedding embedding 结果缓存,命中即返回
内存膨胀 向量库无限增长占满内存 资源占用控制 + 压缩 + 清理
质量担忧 本地模型不如云端 提供模型选择指南,质量够用且可切换
部署复杂 本地栈搭建门槛高 一键初始化 + 详细故障排查

本地 vs 云端对比

对比维度 云端 API(OpenAI) 本地方案(Ollama)
费用 按 token 收费 完全免费
延迟 网络往返 100-500ms 本地 10-50ms
隐私 数据出域 完全本地
离线 不可用 完全可用
质量 text-embedding-3-large nomic-embed-text(足够)
资源占用 零本地资源 需 2-4GB 内存
部署难度 仅需 API Key 需安装 Ollama

结论:个人/小团队/隐私场景用本地;追求极致质量且不敏感数据用云端。

架构

┌───────────────────────────────────────────────────────────────┐
│                   LOCALMEMO PRO 本地架构                        │
├───────────────────────────────────────────────────────────────┤
│                                                                │
│  L1 热内存     SESSION-STATE.md    活跃任务上下文(抗压缩)     │
│      ↓                                                         │
│  L2 温向量     LanceDB            本地向量检索(embedding缓存)│
│      ↓         ↑ embedding 由 Ollama 本地生成                  │
│  L3 冷存储     Git-Notes          结构化决策(永久)           │
│      ↓                                                         │
│  L4 精选归档   MEMORY.md + daily/ 人类可读长期记忆             │
│                                                                │
│  全程零外部 API · 零数据出域 · 离线可用                        │
└───────────────────────────────────────────────────────────────┘

快速开始(3 步)

第 1 步:安装本地 embedding 引擎

# 安装 Ollama
# macOS/Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windows: 从 https://ollama.com/download 下载安装包

# 拉取 embedding 模型(约 274MB)
ollama pull nomic-embed-text

# 验证
ollama --version

第 2 步:初始化记忆系统

cd skills/localmemo-pro
npm install
node bin/init.js

初始化创建:

  • SESSION-STATE.md — 热内存
  • MEMORY.md — 长期记忆
  • memory/ — 每日日志目录
  • memory/vectors/ — LanceDB 向量数据库
  • memory/cache/ — embedding 缓存目录

第 3 步:使用记忆工具

# 存储
node bin/memory.js store "用户喜欢深色模式" --importance 0.9 --category preference

# 搜索
node bin/memory.js search "用户界面偏好"

# 统计
node bin/memory.js stats

# 遗忘
node bin/memory.js forget --query "深色模式"

Embedding 缓存机制(差异化核心)

相同文本反复生成 embedding 是本地系统的主要性能瓶颈。本系统实现 embedding 缓存:

文本 → SHA256(文本) → 查缓存目录
                          ├─ 命中 → 直接返回向量(<1ms)
                          └─ 未命中 → Ollama 生成 → 写入缓存(10-50ms)
操作 无缓存耗时 有缓存耗时 命中率(典型)
存储记忆 30-50ms <1ms(命中)/ 30-50ms(未命中) 70-90%
检索记忆 30-50ms × N <1ms × N(命中) 60-80%

缓存配置

{
  "embeddingCache": {
    "enabled": true,
    "path": "./memory/cache",
    "maxSizeMb": 500,
    "ttlDays": 90,
    "compression": true
  }
}

缓存达到上限时自动 LRU 淘汰最久未用的 embedding。

模型选择指南

模型 大小 维度 质量 速度 推荐场景
nomic-embed-text 274MB 768 中高 快 通用推荐
bge-m3 1.2GB 1024 高 中 多语言/高质量需求
mxbai-embed-large 670MB 1024 高 中 英文高质量
all-MiniLM-L6 90MB 384 中 极快 资源受限设备

推荐:默认用 nomic-embed-text(质量/速度/大小均衡)。资源紧张用 all-MiniLM-L6,质量优先用 bge-m3。

WAL 写前日志协议

原则:先写状态,再回复用户。 保证崩溃/压缩时不丢上下文。

触发条件 写入位置 写入时机
用户表达偏好 SESSION-STATE.md + memory store 回复前
用户做出决策 SESSION-STATE.md + Git-Notes 回复前
用户给出期限 SESSION-STATE.md 回复前
用户纠正错误 SESSION-STATE.md + lessons.md 回复前

资源占用控制(差异化核心)

本地系统最大风险:向量库无限增长导致内存/CPU/磁盘膨胀。

三级资源控制

级别 触发条件 控制措施
轻度 向量数 > 10000 自动压缩低重要性向量
中度 磁盘 > 500MB 归档 90 天前记忆到文件
重度 磁盘 > 1GB 告警 + 停止写入(仅检索)

维护命令

# 查看资源占用
node bin/memory.js stats --detailed

# 压缩向量库
node bin/memory.js compact

# 清理旧记忆
node bin/memory.js cleanup --before 30d

# 去重
node bin/memory.js dedup

# 导出备份
node bin/memory.js backup ./backups/memory-$(date +%Y%m%d).zip

# 清理 embedding 缓存
node bin/memory.js cache-clean --older-than 30d

Agent 配置集成

在 Agent 配置文件中启用本地记忆插件:

{
  "plugins": {
    "entries": {
      "localmemo-pro": {
        "enabled": true,
        "config": {
          "ollamaUrl": "http://localhost:11434",
          "embeddingModel": "nomic-embed-text",
          "dbPath": "./memory/vectors",
          "cachePath": "./memory/cache",
          "autoRecall": true,
          "autoCapture": false,
          "maxMemoryMb": 500,
          "minImportance": 0.5
        }
      }
    }
  }
}

启用后自动提供工具:

  • memory_recall — 搜索相关记忆
  • memory_store — 存储重要信息
  • memory_forget — 删除记忆

代理行为指令

会话开始时

  1. 读取 SESSION-STATE.md(热内存)
  2. 执行 memory_recall 搜索相关历史
  3. 检查 memory/YYYY-MM-DD.md 近期活动

对话进行中

情境 动作
用户给出具体细节 先写 SESSION-STATE.md,再回复
重要决策 memory_store 存储
表达偏好 memory_store --importance 0.9 --category preference
出现错误 写入 lessons.md

会话结束时

  1. 更新 SESSION-STATE.md 最终状态
  2. 重要内容移至 MEMORY.md
  3. 创建/更新 memory/YYYY-MM-DD.md

真实场景示例

场景 1:医疗隐私场景

用户:"记录患者对青霉素过敏"
→ 本地 embedding 生成(数据不出域)
→ memory_store:"患者青霉素过敏" importance=1.0 category=medical
→ 存储在本地 LanceDB,符合 HIPAA 合规

后续查询:
  memory_recall query="患者过敏史"
  → 本地检索,零数据外传

场景 2:离线开发场景

环境:飞机上无网络,本地开发

用户:"上次我们怎么解决 CORS 问题的?"
→ memory_recall query="CORS 跨域解决"
→ 本地 Ollama 生成 query embedding(离线)
→ LanceDB 本地检索
→ 召回:"CORS 用代理中间件解决,配置在 middleware/cors.js"
→ 无需网络即可回忆历史决策

场景 3:成本敏感场景

独立开发者,月 API 预算 $0

存储 1000 条记忆:
  云端方案:embedding 费用约 $0.5-1/月
  本地方案:$0(一次性模型下载 274MB)

检索 100 次/天:
  云端方案:embedding 费用约 $0.3/月
  本地方案:$0(embedding 缓存命中后 <1ms)

年度节省:约 $10-15

常见问题 FAQ

Q1:本地 embedding 质量够用吗? A:nomic-embed-text 在 MTEB 基准上表现接近 text-embedding-3-small,对个人/小规模记忆库完全够用。如需更高质量可切换 bge-m3。

Q2:Ollama 占多少内存? A:nomic-embed-text 运行时约 2-4GB 内存。资源紧张可用 all-MiniLM-L6(约 500MB)。

Q3:embedding 缓存会占多少磁盘? A:每条记忆的 embedding 约 3KB(768 维 float32)。10000 条记忆约 30MB,缓存上限可配置(默认 500MB)。

Q4:能和云端方案混用吗? A:可以。重要记忆用云端高质量 embedding,日常用本地。但需注意维度一致性,建议统一用一种。

Q5:向量库损坏怎么办? A:定期 node bin/memory.js backup 备份。损坏后从备份恢复,或从 MEMORY.md + daily/ 重建(记忆内容仍在文件中)。

故障排查

现象 排查步骤 解决方案
Ollama 连接失败 curl http://localhost:11434/api/tags ollama serve 启动服务
模型未找到 ollama list ollama pull nomic-embed-text
向量搜索无结果 node bin/memory.js stats 确认已存储记忆;检查 dbPath
内存占用过高 node bin/memory.js stats --detailed 运行 compact + cleanup
embedding 速度慢 检查缓存命中率 确认 cache.enabled=true
磁盘满 检查 vectors/ 和 cache/ 大小 清理缓存 + 归档旧记忆
检索质量差 检查 minScore 设置 降低 minScore 到 0.25;换更大模型

文件结构

workspace/
├── SESSION-STATE.md          # 热内存
├── MEMORY.md                 # 精选长期记忆
├── memory/
│   ├── vectors/              # LanceDB 向量库
│   ├── cache/                # embedding 缓存
│   ├── 2026-07-18.md         # 每日日志
│   ├── lessons.md            # 教训记录
│   └── topics/               # 主题文件
├── bin/
│   ├── init.js               # 初始化脚本
│   └── memory.js             # 记忆管理 CLI
└── localmemo-config.json     # 配置文件

依赖说明

运行环境

  • Agent 平台:支持 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
  • 操作系统:Windows / macOS / Linux
  • Node.js:16+(运行记忆管理脚本)
  • 内存:建议 8GB+(Ollama 运行需 2-4GB)
  • 磁盘:建议 2GB+ 可用空间

第三方依赖

依赖项 类型 是否必需 获取方式
LLM API API 必需 由 Agent 内置 LLM 提供
Ollama 本地推理引擎 必需 https://ollama.com/install
nomic-embed-text embedding 模型 必需 ollama pull nomic-embed-text
LanceDB 向量数据库 必需 npm install vectordb
Git 版本控制 可选 用于 Git-Notes 冷存储

API Key 配置

  • 本 Skill 核心功能无需任何 API Key
  • 完全本地运行,零外部 API 调用
  • 如需可选的云端备份功能,另行配置对应服务 Key

可用性分类

  • 分类:MD+EXEC(Markdown 指令 + exec 命令行执行)
  • 说明:基于 Markdown 的 AI Skill 驱动 Agent 执行本地记忆管理。核心记忆协议纯 Markdown 可工作;向量检索、embedding 生成需 Ollama + LanceDB 环境。

相关专题

更多
Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习