大理
一 主控程序 服务器,为Claude Code提供跨会话的持久长期内存。存储带有自动向量嵌入的内存,用于语义搜索,以及工具调用的完整审计跟踪。
特性
- 语义搜索 --通过Ollama实现768维向量嵌入(
nomic-embed-text)基于余弦相似度排序和项目上下文提升 - 内存类型 --对话、决策、文件更改、工具使用——每个都有可选的元数据、标签和项目范围
- 审核日志记录 --每次工具调用都会记录时间戳、输入和截断的输出,以供以后查询
- 优雅降级 --如果Ollama不可用,记忆仍然会被存储,基于文本的搜索仍然有效;当Ollama重新上线时,嵌入物会自动回填
- 软删除 --通过级联清理嵌入和向量映射来存档或永久删除内存
建筑
src/
index.ts -- Entry point, stdio MCP transport
server.ts -- MCP tool and resource definitions (7 tools, 2 resources)
types.ts -- Zod schemas and TypeScript types
db/
client.ts -- SQLite wrapper (WAL mode, sqlite-vec extension)
schema.ts -- DDL, migrations, 6 tables + 10 indexes
embeddings/
ollama.ts -- Ollama HTTP client, batch embedding (chunks of 32)
memory/
store.ts -- CRUD operations, embedding backfill on startup
search.ts -- Vector KNN search with CTE, text fallback
audit/
logger.ts -- Audit log recording (10KB output truncation)
query.ts -- Paginated audit queries with date/filter supportMCP工具
| 工具 | 说明 |
|---|---|
store_memory | 使用自动向量嵌入存储内存 |
search_memory | 语义向量搜索(余弦相似度,可配置最小相关性) |
search_by_type | 使用可选的文本查询按类型筛选内存 |
get_audit_log | 带有日期范围和过滤器的分页审计跟踪查询 |
get_session_summary | 会话详细信息及所有相关记忆 |
list_recent_memories | 按时间顺序列出类型/项目筛选器 |
forget_memory | 软删除(存档)或级联永久删除 |
MCP资源
| 资源 | 描述 |
|---|---|
dali://memories/recent | 10个最近的回忆 |
dali://sessions/{sessionId}/memories | 一次会议的所有回忆 |
安装
1.先决条件
- Node.js 18+
- 奥拉玛 在本地运行
nomic-embed-text模型(可选,但建议用于矢量搜索)
2.安装Ollama(可选,用于矢量搜索)
# macOS
brew install ollama
# Pull the embedding model
ollama pull nomic-embed-text
# Start Ollama (if not already running)
ollama serve没有Ollama,Dali仍然可以工作——记忆被存储,基于文本的搜索是可用的。当Ollama可用时,矢量嵌入会自动回填。
3.克隆、安装和构建
git clone https://github.com/linnaxis/dali-memory.git
cd dali-memory
npm install
npm run build4.配置克劳德代码
在Claude Code配置中添加Dali作为MCP服务器。编辑 ~/.claude/mcp.json (或你的项目 .mcp.json):
{
"mcpServers": {
"dali": {
"command": "node",
"args": ["/absolute/path/to/dali-memory/dist/index.js"],
"env": {
"OLLAMA_BASE_URL": "http://localhost:11434",
"OLLAMA_MODEL": "nomic-embed-text",
"DALI_DB_PATH": "~/.claude/dali/dali.db"
}
}
}
}替换 /absolute/path/to/dali-memory 使用克隆仓库的实际路径。
5.验证
重新启动克劳德代码。您应该在MCP工具列表中看到Dali的7个可用工具。试着让克劳德“存储记忆”或“搜索记忆”,以确认它是否有效。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
DALI_DB_PATH | ~/.claude/dali/dali.db | SQLite数据库文件的路径 |
DALI_PROJECT | 当前目录名 | 内存作用域的默认项目名 |
OLLAMA_BASE_URL | http://localhost:11434 | API终点 |
OLLAMA_MODEL | nomic-embed-text | 用于生成嵌入的Ollama模型 |
跑
# Production
npm start
# Development (auto-rebuild on changes)
npm run dev服务器通过stdio(MCP标准)进行通信——它意味着由Claude Code启动,而不是在终端中独立运行。
数据库
Dali使用SQLite和WAL模式 sqlite-vc 矢量搜索的扩展。数据库在首次运行时自动创建,路径由指定 DALI_DB_PATH.
模式
memories--核心存储(类型、内容、摘要、标签、项目、会话)memory_vec_map--将sqlite-vec的UUID映射到整数行ID的桥表memory_embeddings--具有768维浮点向量的vec0虚拟表audit_log--工具调用审计跟踪sessions--会话元数据file_changes--链接到内存的文件更改详细信息
技术栈
许可证
麻省理工学院
