AI编码助手持久化内存系统

AgentKits Memory是为AI编码助手设计的本地持久化内存系统,通过SQLite数据库自动捕获和存储会话上下文、决策模式和错误解决方案,实现跨会话记忆功能。

  • by aitytech
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 aitytech/agentkits-memory

使用说明

AgentKits Memory

by AityTech


Persistent Memory System for AI Coding Assistants

Your AI assistant forgets everything between sessions. AgentKits Memory fixes that.
Decisions, patterns, errors, and context — all persisted locally via MCP.

Website • Docs • Quick Start • How It Works • Platforms • CLI • Web Viewer

English · 简体中文 · 日本語 · 한국어 · Español · Deutsch · Français · Português · Tiếng Việt · Русский · العربية


特性

特点 优点
100%本地 所有数据都保留在您的机器上。没有云,没有API密钥,没有帐户
快速燃烧 原生SQLite(better-splite3)=即时查询,零延迟
零配置 开箱即用。无需设置数据库
多平台 Claude Code、Cursor、Windsurf、Cline、OpenCode——一个设置命令
MCP服务器 9个工具:保存、搜索、时间线、详细信息、召回、列表、更新、删除、状态
自动捕获 钩子自动捕获会话上下文、工具使用、摘要
人工智能丰富 背景工作人员通过人工智能生成的摘要丰富观察结果
向量搜索 sqlite-vec语义相似性与多语言嵌入(100多种语言)
网络观众 浏览器用户界面,用于查看、搜索、添加、编辑、删除记忆
三层搜索 渐进式披露节省了约87%的代币,而获取一切
生命周期管理 自动压缩、存档和清理旧会话
导出/导入 以JSON格式备份和恢复内存

运作原理

Session 1: "Use JWT for auth"          Session 2: "Add login endpoint"
┌──────────────────────────┐          ┌──────────────────────────┐
│  You code with AI...     │          │  AI already knows:       │
│  AI makes decisions      │          │  ✓ JWT auth decision     │
│  AI encounters errors    │   ───►   │  ✓ Error solutions       │
│  AI learns patterns      │  saved   │  ✓ Code patterns         │
│                          │          │  ✓ Session context        │
└──────────────────────────┘          └──────────────────────────┘
         │                                      ▲
         ▼                                      │
    .claude/memory/memory.db  ──────────────────┘
    (SQLite, 100% local)
  1. 设置一次 — npx @aitytech/agentkits-memory 配置您的平台
  2. 自动捕获 --Hooks在您工作时记录决策、工具使用和摘要
  3. 上下文注入 --下一节课从往届课的相关历史开始
  4. 后台处理 --工作人员用人工智能丰富观察结果,生成嵌入,压缩旧数据
  5. 随时搜索 --AI使用MCP工具(memory_search → memory_details)查找过去的上下文

所有数据都保留在 .claude/memory/memory.db 在你的机器上。没有云。不需要API密钥。


重要的设计决策

大多数内存工具将数据分散在markdown文件中,需要Python运行时,或者将代码发送到外部API。AgentKits Memory做出了根本不同的选择:

设计选择 为什么重要
单一SQLite数据库 一个文件(memory.db)包含一切——记忆、会话、观察、嵌入。无需同步分散的文件,无合并冲突,无孤立数据。备份=复制一个文件
原生Node.js,零Python 在Node运行的任何地方运行。没有conda,没有pip,没有virtualenv。与您的MCP服务器使用相同的语言 npx 命令,完成
代币高效三层搜索 首先搜索索引(~50个标记/结果),然后是时间线上下文,然后是完整的细节。只取你需要的东西。其他工具将整个内存文件转储到上下文中,在不相关的内容上燃烧令牌
通过钩子自动捕捉 决策、模式和错误会在发生时记录下来,而不是在你记得保存它们之后。会话上下文注入在下次会话启动时自动发生
本地嵌入,无API调用 矢量搜索使用本地ONNX模型(多语言e5-small)。语义搜索离线运行,无需任何成本,支持100多种语言
后台工作人员 AI富集、嵌入生成和压缩异步运行。您的编码流程从未被阻塞
从第一天起就支持多平台 一个 --platform=all flag同时配置Claude Code、Cursor、Windsurf、Cline和OpenCode。相同的内存数据库,不同的编辑器
结构化观测数据 通过类型分类(读/写/执行/搜索)、文件跟踪、意图检测和AI生成的叙述来捕获工具使用情况,而不是原始文本转储
无工艺泄漏 后台工作程序在5分钟后自动终止,使用基于PID的锁文件进行过时锁清理,并优雅地处理SIGTERM/SIGINT。没有僵尸进程,没有孤立的工人
无内存泄漏 钩子作为短时间进程运行(而不是长时间运行的守护进程)。数据库连接在关闭时关闭。嵌入子流程具有有界重生(最多2个)、挂起请求超时以及所有计时器和队列的优雅清理

网络观众

通过现代网络界面查看和管理您的记忆。

npx @aitytech/agentkits-memory web

然后打开 http://localhost:1905 在您的浏览器中。

会话列表

使用时间线视图和活动详细信息浏览所有会话。

内存列表

通过搜索和命名空间过滤浏览所有存储的内存。

添加内存

使用键、名称空间、类型、内容和标签创建新的内存。

内存详情

使用编辑和删除选项查看完整内存详细信息。

管理嵌入

生成和管理语义搜索的向量嵌入。


快速开始

选项1:克劳德代码插件市场(建议用于克劳德代码)

只需一个命令即可作为插件安装——无需手动配置:

/plugin marketplace add aitytech/agentkits-memory
/plugin install agentkits-memory@agentkits-memory

这将自动安装钩子、MCP服务器和内存工作流技能。安装后重新启动Claude Code。

选项2:自动设置(所有平台)

npx @aitytech/agentkits-memory

此自动检测您的平台并配置所有内容:MCP服务器、钩子(Claude Code/OpenCode)、规则文件(Cursor/Windsurf/Cline),并下载嵌入模型。

针对特定平台:

npx @aitytech/agentkits-memory --platform=cursor
npx @aitytech/agentkits-memory --platform=windsurf,cline
npx @aitytech/agentkits-memory --platform=all

选项3:手动MCP配置

如果您更喜欢手动设置,请在MCP配置中添加:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@aitytech/agentkits-memory", "server"]
    }
  }
}

配置文件位置:

  • 克劳德代码: .claude/settings.json (嵌入 mcpServers 按键)
  • 光标: .cursor/mcp.json
  • 帆板运动: .windsurf/mcp.json
  • Cline/OpenCode: .mcp.json (项目根)

3.MCP工具

配置后,您的AI助手可以使用这些工具:

工具 说明
memory_status 检查内存系统状态(先调用!)
memory_save 保存决策、模式、错误或上下文
memory_search [步骤1] 搜索索引——轻量级ID+标题(~50个标记/结果)
memory_timeline [步骤2] 获取内存周围的时间上下文
memory_details [步骤3] 获取特定ID的完整内容
memory_recall 快速主题概述——分组总结
memory_list 列出最近的回忆
memory_update 更新现有内存内容或标签
memory_delete 删除过时的记忆

渐进式披露(代币高效搜索)

AgentKits内存使用 三层搜索模式 与预先获取完整内容相比,这节省了约70%的令牌。

运作原理

┌─────────────────────────────────────────────────────────────┐
│  Step 1: memory_search                                      │
│  Returns: IDs, titles, tags, scores (~50 tokens/item)       │
│  → Review index, pick relevant memories                     │
└─────────────────────────────────────────────────────────────┘
                             ↓
┌─────────────────────────────────────────────────────────────┐
│  Step 2: memory_timeline (optional)                         │
│  Returns: Context ±30 minutes around memory                 │
│  → Understand what happened before/after                    │
└─────────────────────────────────────────────────────────────┘
                             ↓
┌─────────────────────────────────────────────────────────────┐
│  Step 3: memory_details                                     │
│  Returns: Full content for selected IDs only                │
│  → Fetch only what you actually need                        │
└─────────────────────────────────────────────────────────────┘

工作流示例

// Step 1: Search - get lightweight index
memory_search({ query: "authentication" })
// → Returns: [{ id: "abc", title: "JWT pattern...", score: 85% }]

// Step 2: (Optional) See temporal context
memory_timeline({ anchor: "abc" })
// → Returns: What happened before/after this memory

// Step 3: Get full content only for what you need
memory_details({ ids: ["abc"] })
// → Returns: Full content for selected memory

代币节省

方法 使用的代币
老的 获取所有内容 ~500个令牌×10个结果=5000个令牌
新 渐进式披露 50×10+500×2=1500个代币
储蓄 减少70%

CLI命令

# One-command setup (auto-detects platform)
npx @aitytech/agentkits-memory
npx @aitytech/agentkits-memory setup --platform=cursor   # specific platform
npx @aitytech/agentkits-memory setup --platform=all      # all platforms
npx @aitytech/agentkits-memory setup --force             # re-install/update

# Start MCP server
npx @aitytech/agentkits-memory server

# Web viewer (port 1905)
npx @aitytech/agentkits-memory web

# Terminal viewer
npx @aitytech/agentkits-memory viewer
npx @aitytech/agentkits-memory viewer --stats
npx @aitytech/agentkits-memory viewer --json

# Save from CLI
npx @aitytech/agentkits-memory save "Use JWT with refresh tokens" --category pattern --tags auth,security

# Settings
npx @aitytech/agentkits-memory hook settings .
npx @aitytech/agentkits-memory hook settings . --reset
npx @aitytech/agentkits-memory hook settings . aiProvider.provider=openai aiProvider.apiKey=sk-...

# Export / Import
npx @aitytech/agentkits-memory hook export . my-project ./backup.json
npx @aitytech/agentkits-memory hook import . ./backup.json

# Lifecycle management
npx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30
npx @aitytech/agentkits-memory hook lifecycle-stats .

程序化使用

import { ProjectMemoryService } from '@aitytech/agentkits-memory';

const memory = new ProjectMemoryService({
  baseDir: '.claude/memory',
  dbFilename: 'memory.db',
});
await memory.initialize();

// Store a memory
await memory.storeEntry({
  key: 'auth-pattern',
  content: 'Use JWT with refresh tokens for authentication',
  namespace: 'patterns',
  tags: ['auth', 'security'],
});

// Query memories
const results = await memory.query({
  type: 'hybrid',
  namespace: 'patterns',
  content: 'authentication',
  limit: 10,
});

// Get by key
const entry = await memory.getByKey('patterns', 'auth-pattern');

自动捕捉挂钩

Hooks会自动捕获您的AI编码会话(仅限Claude Code和OpenCode):

钩子 触发器 动作
context 会话开始 注入前一个会话上下文+内存状态
session-init 用户提示 初始化/恢复会话,记录提示
observation 工具使用后 通过意图检测捕获工具使用情况
summarize 会话结束 生成结构化会话摘要
user-message 会话开始 向用户显示内存状态(stderr)

设置挂钩:

npx @aitytech/agentkits-memory

自动捕获的内容:

  • 带路径的文件读/写
  • 代码更改为结构化差异(之前→ 之后)
  • 开发人员意图(错误修复、功能、重构、调查等)
  • 会议总结,包括决定、错误和下一步行动
  • 会话内的多提示跟踪

多平台支持

平台 MCP 挂钩 规则文件 设置
克劳德代码 .claude/settings.json ✅ 完整 CLAUDE.md(技能) --platform=claude-code
光标 .cursor/mcp.json — .cursorrules --platform=cursor
帆板运动 .windsurf/mcp.json — .windsurfrules --platform=windsurf
克莱恩 .mcp.json — .clinerules --platform=cline
OpenCode .mcp.json ✅ 已满 -- --platform=opencode
  • MCP服务器 适用于所有平台(通过MCP协议的内存工具)
  • 钩子 在Claude Code和OpenCode上提供自动捕获
  • 规则文件 教Cursor/Windsurf/Cline记忆工作流程
  • 内存数据 始终存储在 .claude/memory/ (单一事实来源)

背景工作者

每次会话后,后台工作人员都会处理排队的任务:

工人 任务 描述
embed-session 嵌入 生成用于语义搜索的向量嵌入
enrich-session AI丰富 用AI生成的总结、事实、概念丰富观察结果
compress-session 压缩 压缩旧观测值(10:1-25:1)并生成会话摘要(20:1-100:1)

工作进程在会话结束后自动运行。每位工人:

  • 每次运行最多可处理200个项目
  • 使用锁文件防止并发执行
  • 5分钟后自动终止(防止僵尸)
  • 最多检索3次失败的任务

AI提供者配置

AI富集使用可插拔的提供者。默认值为 claude-cli (不需要API密钥)。

提供者 类型 默认型号 备注
Claude CLI claude-cli haiku 用途 claude --print,不需要API密钥
OpenAI openai gpt-4o-mini 任何OpenAI模型
谷歌双子座 gemini gemini-2.0-flash 谷歌AI工作室密钥
开放路由 openai 任意 集 baseUrl 到 https://openrouter.ai/api/v1
GLM( 日语) openai 任意 集 baseUrl 到 https://open.bigmodel.cn/api/paas/v4
奥拉玛 openai 任意 集 baseUrl 到 http://localhost:11434/v1

选项1:环境变量

# OpenAI
export AGENTKITS_AI_PROVIDER=openai
export AGENTKITS_AI_API_KEY=sk-...

# Google Gemini
export AGENTKITS_AI_PROVIDER=gemini
export AGENTKITS_AI_API_KEY=AIza...

# OpenRouter (uses OpenAI-compatible format)
export AGENTKITS_AI_PROVIDER=openai
export AGENTKITS_AI_API_KEY=sk-or-...
export AGENTKITS_AI_BASE_URL=https://openrouter.ai/api/v1
export AGENTKITS_AI_MODEL=anthropic/claude-3.5-haiku

# Local Ollama (no API key needed)
export AGENTKITS_AI_PROVIDER=openai
export AGENTKITS_AI_BASE_URL=http://localhost:11434/v1
export AGENTKITS_AI_MODEL=llama3.2

# Disable AI enrichment entirely
export AGENTKITS_AI_ENRICHMENT=false

选项2:持久设置

# Saved to .claude/memory/settings.json — persists across sessions
npx @aitytech/agentkits-memory hook settings . aiProvider.provider=openai aiProvider.apiKey=sk-...
npx @aitytech/agentkits-memory hook settings . aiProvider.provider=gemini aiProvider.apiKey=AIza...
npx @aitytech/agentkits-memory hook settings . aiProvider.baseUrl=https://openrouter.ai/api/v1

# View current settings
npx @aitytech/agentkits-memory hook settings .

# Reset to defaults
npx @aitytech/agentkits-memory hook settings . --reset

优先: 环境变量覆盖settings.json。Settings.json会覆盖默认值。


生命周期管理

管理内存随时间的增长:

# Compress observations older than 7 days, archive sessions older than 30 days
npx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30

# Also auto-delete archived sessions older than 90 days
npx @aitytech/agentkits-memory hook lifecycle . --compress-days=7 --archive-days=30 --delete --delete-days=90

# View lifecycle statistics
npx @aitytech/agentkits-memory hook lifecycle-stats .
阶段 发生了什么
压缩 AI压缩观察结果,生成会话摘要
档案 将旧会话标记为已存档(从上下文中排除)
删除 删除已存档的会话(选择加入,需要 --delete)

出口/进口

备份和恢复您的项目记忆:

# Export all sessions for a project
npx @aitytech/agentkits-memory hook export . my-project ./backup.json

# Import from backup (deduplicates automatically)
npx @aitytech/agentkits-memory hook import . ./backup.json

导出格式包括会话、观察、提示和摘要。


内存类别

类别 用例
decision 架构决策、技术栈选择、权衡
pattern 编码惯例、项目模式、重复方法
error Bug修复、错误解决方案、调试见解
context 项目背景、团队惯例、环境设置
observation 自动捕获会话观察结果

存储

记忆存储在 .claude/memory/ 在您的项目目录中。

.claude/memory/
├── memory.db          # SQLite database (all data)
├── memory.db-wal      # Write-ahead log (temp)
├── settings.json      # Persistent settings (AI provider, context config)
└── embeddings-cache/  # Cached vector embeddings

CJK语言支持

AgentKits内存具有 自动CJK支持 用于中文、日文和韩文文本搜索。

零配置

当 better-sqlite3 如果已安装(默认),CJK搜索将自动工作:

import { ProjectMemoryService } from '@aitytech/agentkits-memory';

const memory = new ProjectMemoryService('.claude/memory');
await memory.initialize();

// Store CJK content
await memory.storeEntry({
  key: 'auth-pattern',
  content: '認証機能の実装パターン - JWT with refresh tokens',
  namespace: 'patterns',
});

// Search in Japanese, Chinese, or Korean - it just works!
const results = await memory.query({
  type: 'hybrid',
  content: '認証機能',
});

运作原理

  • 原生SQLite:用途 better-sqlite3 为了获得最佳性能
  • 三角图标记器:带有三元组的FTS5为CJK匹配创建3个字符序列
  • 智能回退:短CJK查询(<3个字符)自动使用LIKE搜索
  • BM25排名:搜索结果的相关性评分

高级:日语分词

对于具有适当分词的高级日语,可以选择使用lindera:

import { createJapaneseOptimizedBackend } from '@aitytech/agentkits-memory';

const backend = createJapaneseOptimizedBackend({
  databasePath: '.claude/memory/memory.db',
  linderaPath: './path/to/liblindera_sqlite.dylib',
});

需要 林德拉sqlite 建造。


API 参考

项目内存服务

interface ProjectMemoryConfig {
  baseDir: string;              // Default: '.claude/memory'
  dbFilename: string;           // Default: 'memory.db'
  enableVectorIndex: boolean;   // Default: false
  dimensions: number;           // Default: 384
  embeddingGenerator?: EmbeddingGenerator;
  cacheEnabled: boolean;        // Default: true
  cacheSize: number;            // Default: 1000
  cacheTtl: number;             // Default: 300000 (5 min)
}

方法

方法 说明
initialize() 初始化内存服务
shutdown() 关闭并保持更改
storeEntry(input) 存储内存条目
get(id) 按ID获取条目
getByKey(namespace, key) 按命名空间和键获取条目
update(id, update) 更新条目
delete(id) 删除条目
query(query) 使用筛选器查询条目
semanticSearch(content, k) 语义相似度搜索
count(namespace?) 计数条目
listNamespaces() 列出所有命名空间
getStats() 获取统计数据

代码质量

AgentKits内存已通过全面测试 970单元测试 在21个测试套件中。

度量 覆盖范围
声明 90.29%
分支 80.85%
函数 90.54%
线条 91.74%

测试类别

类别 测试 涵盖内容
核心内存服务 56 CRUD、搜索、分页、类别、标签、导入/导出
SQLite后端 65 架构、迁移、FTS5、事务、错误处理
sqlite-vec矢量索引 47 插入、搜索、删除、持久化、边缘情况
混合搜索 44 FTS+向量融合、评分、排名、过滤
代币经济学 27 三层搜索预算、截断、优化
嵌入系统 63 缓存、子流程、本地模型、CJK支持
Hook System 502 上下文、会话初始化、观察、总结、AI丰富、服务生命周期、队列工作器、适配器、类型
MCP服务器 48 所有9个MCP工具、验证、错误响应
CLI 34 平台检测、规则生成
集成 84 端到端流、嵌入集成、多会话
# Run tests
npm test

# Run with coverage
npm run test:coverage

需求

  • Node.js LTS:18.x、20.x或22.x(推荐)
  • MCP兼容AI编码助手

Node.js版本说明

此软件包使用 better-sqlite3 这需要本机二进制文件。 预构建的二进制文件仅适用于LTS版本.

节点版本 状态 注释
18.x长期支持服务 ✅ Works 预构建二进制文件
20.x长期支持服务 ✅ Works 预构建二进制文件
22.x长期支持服务 ✅ Works 预构建二进制文件
19.x、21.x、23.x ⚠️ 需要构建工具 没有预构建的二进制文件

使用非LTS版本(Windows)

如果您必须使用非LTS版本(19、21、23),请先安装构建工具:

选项1:Visual Studio生成工具

# Download and install from:
# https://visualstudio.microsoft.com/visual-cpp-build-tools/
# Select "Desktop development with C++" workload

选项2:windows构建工具(npm)

npm install --global windows-build-tools

选项3:巧克力

choco install visualstudio2022-workload-vctools

看 node-gyp Windows指南 了解更多详情。


AgentKits生态系统

Agent套件内存 是AityTech的AgentKits生态系统的一部分,这些工具使AI编码助手更智能。

产品 描述 链接
代理套件工程师 28家专业代理商,100+技能,企业模式 GitHub
代理套件营销 人工智能驱动的营销内容生成 GitHub
Agent套件内存 AI助手的持久内存(此包) npm

明星历史


许可证

麻省理工学院


Give your AI assistant memory that persists.

AgentKits Memory by AityTech

Star this repo if it helps your AI remember.