详细分析 ▾
运行时依赖
版本
安装命令 点击复制
技能文档
面向 AI 代理的零依赖记忆系统。 无需 API 密钥。无外部服务。无云端依赖。仅使用本地存储配合智能搜索。
架构
┌─────────────────────────────────────────────────┐
│ SIMPLE LOCAL MEMORY │
├─────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ │ │ │ │
│ │ HOT RAM │ │ COLD STORE │ │
│ │ │ │ │ │
│ │ │ │ │ │
│ │ SESSION- │ │ Indexed │ │
│ │ STATE.json │ │ Memories │ │
│ │ │ │ │ │
│ │ (active │ │ (JSON + │ │
│ │ context) │ │ Search) │ │
│ │ │ │ │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ │
│ └────────────────┼─────────────────┘
│ ▼
│ ┌─────────────┐
│ │ │
│ │ MEMORY.md │ ← 人类可读
│ │ + daily/ │
│ │ │
│ └─────────────┘
│ │
└─────────────────────────────────────────────────┘
三层记忆系统
第一层:HOT RAM (SESSION-STATE.json)
快速、活跃的工作记忆
{
"current_task": "...",
"key_context": ["...", "..."],
"pending_actions": ["...", "..."],
"recent_decisions": ["..."],
"last_updated": "2026-03-15T10:30:00Z"
}
优势:
- 快速 JSON 读写
- 能在压缩后保留
- 易于程序化解析
第二层:COLD STORE(索引记忆)
持久化、可搜索的记忆
# 存储一条记忆
memory-store --type preference --content "User prefers dark mode" --importance 0.9# 搜索记忆
memory-search "what did user say about CSS"
# 列出最近的记忆
memory-list --limit 10
存储位置: 包含索引 JSON 文件的 memories/ 目录
第三层:CURATED ARCHIVE(MEMORY.md + daily/)
人类可读的长期记忆
workspace/
├── MEMORY.md # 精选的洞察
├── SESSION-STATE.json # 活跃上下文
└── memories/
├── 2026-03-15.json # 每日记忆导出
├── preferences.json # 用户偏好
├── decisions.json # 关键决策
└── lessons.json # 经验教训
快速设置
第一步:初始化
npm install -g simple-local-memory
cd your-project
memory-init
这将创建:
SESSION-STATE.json- 活跃工作记忆MEMORY.md- 长期精选记忆memories/- 记忆存储目录
第二步:与你的 AI 代理配合使用
对于 Claude Code:
# 添加到你的自定义指令中当我给你重要信息时:
- 首先写入 SESSION-STATE.json
- 然后使用 memory-store 存储
- 然后回复我
开始对话时:
- 读取 SESSION-STATE.json
- 使用 memory-search 搜索相关记忆
- 查看 MEMORY.md 获取上下文
对于 ChatGPT/Cursor: 添加到你的系统提示中:
你可以访问本地记忆工具:
- memory-store:保存重要信息
- memory-search:查找相关的过去上下文
- 回复前读取 SESSION-STATE.json
- 用户分享偏好时更新 SESSION-STATE.json
记忆 CLI 命令
# 初始化记忆系统
memory-init# 存储一条记忆
memory-store --type preference --content "User loves TypeScript" --importance 0.9
# 搜索记忆
memory-search "TypeScript preferences"
# 列出最近的记忆
memory-list --limit 10 --type preference
# 显示记忆统计
memory-stats
# 导出记忆
memory-export --format json --output backup.json
# 导入记忆
memory-import --file backup.json
WAL 协议(预写日志)
关键:在回复之前先写入记忆
| 触发条件 | 操作 |
|---|---|
| 用户声明偏好 | 更新 SESSION-STATE.json → 存储 → 回复 |
| 用户做出决策 | 更新 SESSION-STATE.json → 存储 → 回复 |
| 用户给出截止日期 | 更新 SESSION-STATE.json → 存储 → 回复 |
| 用户纠正你 | 更新 SESSION-STATE.json → 存储 → 回复 |
记忆存储格式
memories/YYYY-MM-DD.json
{
"date": "2026-03-15",
"memories": [
{
"id": "uuid",
"type": "preference|decision|fact|lesson",
"content": "User prefers dark mode",
"importance": 0.9,
"tags": ["ui", "preferences"],
"timestamp": "2026-03-15T10:30:00Z",
"context": "Discussed during UI setup"
}
]
}
memories/preferences.json
{
"preferences": [
{
"key": "css_framework",
"value": "Tailwind",
"set_at": "2026-03-15T10:30:00Z",
"reason": "User prefers over vanilla CSS"
}
]
}
memories/decisions.json
{
"decisions": [
{
"id": "uuid",
"title": "Use React for frontend",
"reason": "User requested component-based architecture",
"made_at": "2026-03-15T10:30:00Z",
"status": "active"
}
]
}
搜索算法
基于 TF-IDF 的本地搜索:
- 对查询和记忆进行分词
- 计算词频
- 按相关性 + 重要性 + 时效性排序
- 返回前 N 个结果
// 示例搜索逻辑
function searchMemories(query, limit = 5) {
const queryTokens = tokenize(query);
const allMemories = loadAllMemories();
const scored = allMemories.map(memory => {
const score = calculateTFIDF(queryTokens, memory.content);
const recencyBoost = calculateRecencyBoost(memory.timestamp);
const importanceBoost = memory.importance || 0.5;
return {
...memory,
totalScore: score + recencyBoost + importanceBoost
};
});
return scored
.sort((a, b) => b.totalScore - a.totalScore)
.slice(0, limit);
}
示例工作流程
用户:"让我们用 Tailwind 来做这个项目,不用原生 CSS"代理处理流程:
- 用决策更新 SESSION-STATE.json
- 执行:memory-store --type decision --content "Use Tailwind, not vanilla CSS" --importance 0.9
- 执行:memory-store --type preference --content "User prefers Tailwind over vanilla CSS" --importance 0.95
- 然后回复:"明白了 — 用 Tailwind。我已经保存了这个偏好。"
记忆分类
| 类型 | 使用场景 | 重要性 |
|---|---|---|
preference | 用户表达喜欢/不喜欢 | 0.8-1.0 |
decision | 项目决策做出 | 0.9-1.0 |
fact | 重要信息 | 0.6-0.8 |
lesson | 从错误中学习 | 0.9-1.0 |
context | 背景信息 | 0.4-0.6 |
维护
每日
# 检查记忆健康状态
memory-stats# 查看今天的记忆
memory-list --date today
每周
# 归档旧记忆
memory-archive --days 7# 清理重复项
memory-deduplicate
# 用洞察更新 MEMORY.md
#(手动:查看 memories/ 并添加到 MEMORY.md)
每月
# 导出备份
memory-export --format json --output monthly-backup.json# 清理旧的每日文件
memory-cleanup --days 30
记忆卫生建议
- 具体明确 - "用户喜欢深色模式" > "用户有偏好"
- 添加上下文 - 为什么会做出这个决定?
- 使用重要性评分 - 不是所有事都是 1.0
- 正确标记 - 有助于检索
- 定期归档 - 保持 SESSION-STATE.json 精简
故障排除
搜索返回空结果:
→ 检查 memories/ 目录是否存在 → 验证 JSON 文件是否有效 → 尝试更宽泛的搜索词
SESSION-STATE.json 增长过大:
→ 将旧项目移至 memory-store → 归档已完成的任务 → 只保留活跃上下文
记忆没有被保存:
→ 检查文件权限 → 验证磁盘空间 → 检查 JSON 语法
高级功能
记忆关联
{
"id": "uuid",
"content": "Use React for frontend",
"related_to": ["uuid-of-other-memory"],
"followed_by": ["uuid-of-decision"]
}
置信度评分
{
"confidence": 0.95,
"source": "explicit_user_statement",
"verified_count": 3
}
过期日期
{
"expires_at": "2026-04-15T00:00:00Z",
"auto_archive": true
}
与 elite-longterm-memory 对比
| 功能 | Elite | Simple Local |
|---|---|---|
| 需要 API 密钥 | 是(OpenAI) | 否 |
| 外部依赖 | LanceDB, Mem0 | 无 |
| 云同步 | 是 | 否(可添加) |
| 向量搜索 | 是 | TF-IDF 本地 |
| 自动提取 | Mem0 | 手动/简单规则 |
| 设置复杂度 | 中等 | 简单 |
| 隐私 | 依赖云端 | 100% 本地 |
| 成本 | 免费额度有限 | 100% 免费 |
从 elite-longterm-memory 迁移
# 从 elite 系统导出
memory-export > elite-backup.json# 转换格式
node convert-elite-to-simple.js elite-backup.json > simple-backup.json
# 导入到 simple 系统
memory-import --file simple-backup.json
未来增强(可选)
- 添加本地嵌入模型(Transformers.js)
- 为旧记忆添加压缩
- 为敏感数据添加加密
- 通过 GitHub Gist 添加同步
- 添加 Web UI 用于记忆管理
无需 API 密钥。无云端。无追踪。仅纯本地记忆。
适用于:
- 注重隐私的用户
- 离线开发
- 学习记忆系统工作原理
- 构建自定义 AI 代理
- 有严格数据政策的项目
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制