DevMemory——人工智能编码代理的持久记忆
\[!警告\] 已弃用(第5阶段迁移状态)。 这一遗产.NET实现现在处于受控弃用状态,而Go实现(nemesis312/bc-dev-memory)是主动的战略后端bc-agentic工作流程。 - 使用bc-dev-memory用于新的设置和活动操作。 - 此回购是 冻结用于非关键工作 (仅限关键修复,例外)。 - 档案是 时间门控 在稳定审查后(不是立即)。 完整的政策和迁移路径:请参阅DEPRECATION.md.
给你的人工智能一个能够在环境重置中幸存下来的大脑。
   
______________________________________________________________________
问题
每次您使用Claude Code、Cursor或Copilot启动新会话时,您的AI代理都会启动 完全新鲜。它不记得:
- 你为什么选择那种架构
- 你上周花了4个小时调试的那个bug
- 您团队的安全规则和模式
- 你所做的决定塑造了整个代码库
你最终会一遍又一遍地解释同样的背景——有时会花钱 30+分钟 只是让你的AI恢复速度。
DevMemory修复了这个问题。
______________________________________________________________________
什么是DevMemory?
DevMemory是一个 模型上下文协议(MCP)服务器 这为您的AI编码代理提供了跨会话、项目甚至整个团队的持久、可搜索的内存。
它作为一个轻量级的本地二进制文件运行。没有云。没有订阅。没有数据发送到你无法控制的地方。
Your AI Agent ←→ DevMemory MCP ←→ SQLite / PostgreSQL / Neo4jAI保存它所学到的东西。下一个会话,它会检索它。就是这样。
______________________________________________________________________
为什么选择DevMemory?
随着时间的推移,你的AI会变得更聪明
每次会话后,DevMemory都会存储结构化的观察结果——错误修复、架构决策、模式、发现。下次你的AI启动时,它会加载该上下文 已经知道你的代码库.
不再重复自己
停止解释你的多租户规则、安全约束、存储过程模式——一个接一个的会话。救他们一次,永远回忆。
这不是云服务,它是你的
您的记忆存储在本地SQLite文件中(~/.devmemory/devmemory.db)或者在您自己的PostgreSQL/Neo4j实例中。除非您明确配置远程数据库,否则任何数据都不会离开您的计算机。
团队共享知识
将您的团队连接到共享的PostgreSQL或Neo4j实例,每个开发人员的AI代理都会从其他开发人员所学到的知识中受益。在几分钟内,而不是几周内,就可以让新开发人员入职。
隐私是内置的
将敏感内容包裹起来 ... 标签。DevMemory 自动剥离 在将任何内容写入数据库之前。你的秘密要保密。
content: "Use
API_KEY=sk-1234
for auth. Pattern: Bearer token in header."
# Stored as: "Use [REDACTED] for auth. Pattern: Bearer token in header."零设置,可单独使用
下载二进制文件,在MCP配置中添加5行JSON,完成。SQLite不需要数据库服务器。你的第一个记忆是一个命令。
______________________________________________________________________
安全吗?它是开源的吗?
是的,是的。
- 麻省理工学院许可 --商业化使用,分叉,构建,嵌入。永远免费。
- 可审计的 --完整的来源在这里。读每一行。这是一个简单的C#。
- 没有遥测,没有分析,没有电话回家 --除非您自己配置远程数据库,否则二进制文件永远不会进行出站网络调用。
- 先离线 --完全在您的机器上使用SQLite。
______________________________________________________________________
特性
| 功能 | 详细信息 |
|---|---|
| MCP本地 | 通过以下方式实施MCP 标准 (默认)和 HTTP+SSE 运输工具 |
| 3个存储后端 | SQLite(本地)、PostgreSQL(团队)、Neo4j(图表) |
| 会话管理 | 开始/结束会话,保存摘要,在上下文压缩中生存 |
| 全文搜索 | 搜索所有回忆 mem_search |
| 13种观察类型 | bugfix, architecture-decision, pattern, discovery,以及更多 |
| 图表关系 | 链接观察、跟踪决策链(Neo4j) |
| 隐私保护 | ` |
| ` 存储库层的标签剥离 | |
| 跨平台 | 适用于Windows x64、macOS ARM64/x64、Linux x64/ARM64的本机二进制文件 |
| 无需运行时间 | 单个自包含的可执行文件 |
| 包含CLI | 导出、导入、搜索、统计数据——全部来自终端 |
______________________________________________________________________
MCP工具参考
| 工具 | 它做什么 |
|---|---|
mem_save | 保存带有类型、标题、内容和标签的结构化观察 |
mem_search | 在所有已保存的记忆中进行全文搜索 |
mem_context | 加载项目的最近会话历史记录 |
mem_get_observation | 按ID检索特定观察结果 |
mem_timeline | 获取观察结果的时间背景 |
mem_session_start | 明确启动新的编码会话 |
mem_session_end | 以总结结束会话 |
mem_session_summary | 在会议中期更新当前会议摘要 |
mem_stats | 总观察、会议、项目概览 |
mem_save_prompt | 将用户提示保存到当前会话 |
mem_link _(Neo4j)_ | 在两个观察之间创建类型化关系 |
mem_related _(Neo4j)_ | 查找与给定观测值传递相关的观测值 |
mem_decision_chain _(Neo4j)_ | 追踪导致结论的决策链 |
______________________________________________________________________
安装
1.下载二进制文件
去 发布页面 并下载适用于您平台的二进制文件:
| 平台 | 文件 |
|---|---|
| Windows x64 | devmemory-mcp-win-x64.zip |
| macOS苹果硅(M1–M4) | devmemory-mcp-osx-arm64.zip |
| macOS英特尔 | devmemory-mcp-osx-x64.zip |
| Linux x64 | devmemory-mcp-linux-x64.zip |
| Linux ARM64(Graviton,Pi 4+) | devmemory-mcp-linux-arm64.zip |
2.提取并放置二进制文件
macOS:
mkdir -p ~/.local/bin
unzip devmemory-mcp-osx-arm64.zip -d ~/.local/bin
chmod +x ~/.local/bin/devmemory-mcp
# If macOS Gatekeeper blocks the binary:
xattr -d com.apple.quarantine ~/.local/bin/devmemory-mcpLinux:
mkdir -p ~/.local/bin
unzip devmemory-mcp-linux-x64.zip -d ~/.local/bin
chmod +x ~/.local/bin/devmemory-mcp窗户: 提取至:
C:\Users\\AppData\Local\devmemory\devmemory-mcp.exe3.配置您的代理
选择您的代理并添加下面的配置。就这样
______________________________________________________________________
配置
克劳德代码
编辑 ~/.claude/mcp.json (全球)或 .mcp.json 在项目根目录中:
{
"mcpServers": {
"devmemory": {
"type": "stdio",
"command": "/Users//.local/bin/devmemory-mcp"
}
}
}在Windows上,使用 C:\\Users\\\\AppData\\Local\\devmemory\\devmemory-mcp.exe光标
编辑 ~/.cursor/mcp.json 或 .cursor/mcp.json 在您的项目中:
{
"mcpServers": {
"devmemory": {
"command": "/Users//.local/bin/devmemory-mcp",
"args": []
}
}
}VS代码(GitHub Copilot/Claude扩展)
- macOS:
~/Library/Application Support/Code/User/mcp.json - 窗户:
%APPDATA%\Code\User\mcp.json
{
"servers": {
"devmemory": {
"type": "stdio",
"command": "/Users//.local/bin/devmemory-mcp"
}
}
}SQLite数据自动存储在 ~/.devmemory/devmemory.db --不需要数据库设置。______________________________________________________________________
PostgreSQL团队设置
通过将每个人指向同一个PostgreSQL数据库,在整个团队中共享内存。
1.创建数据库
CREATE DATABASE devmemory;
CREATE USER devmemory_user WITH PASSWORD 'your-password';
GRANT ALL PRIVILEGES ON DATABASE devmemory TO devmemory_user;2.配置MCP服务器
{
"mcpServers": {
"devmemory": {
"type": "stdio",
"command": "/Users//.local/bin/devmemory-mcp",
"env": {
"DEVMEMORY_STORAGE": "PostgreSQL",
"DEVMEMORY_POSTGRES_CONNECTION": "Host=your-server;Database=devmemory;Username=devmemory_user;Password=your-password"
}
}
}
}架构迁移在首次启动时自动运行。无需手动设置。
______________________________________________________________________
使用Neo4j的图形内存
对于想要了解的团队 _怎么_ 决策是相互关联的,而不仅仅是搜索它们,Neo4j为您提供了一个完整的知识图。
Docker快速入门
docker run \
--name devmemory-neo4j \
-p 7474:7474 -p 7687:7687 \
-e NEO4J_AUTH=neo4j/your-password \
-v $HOME/.devmemory/neo4j:/data \
neo4j:5配置
{
"mcpServers": {
"devmemory": {
"type": "stdio",
"command": "/Users//.local/bin/devmemory-mcp",
"env": {
"DEVMEMORY_STORAGE": "Neo4j",
"DEVMEMORY_NEO4J_URI": "bolt://localhost:7687",
"DEVMEMORY_NEO4J_USER": "neo4j",
"DEVMEMORY_NEO4J_PASSWORD": "your-password",
"DEVMEMORY_NEO4J_DATABASE": "devmemory"
}
}
}
}DevMemory在首次启动时自动创建所有约束、索引和全文搜索索引。
图形专用工具
将两个观察结果联系起来:
{
"fromId": "8a7f3c12-...",
"toId": "b2e9f1a0-...",
"reason": "This bugfix influenced the architecture decision",
"strength": 0.9
}追踪决策链:
{ "id": "8a7f3c12-..." }返回对最终决策有贡献的每一个观察结果——对您推理的完整审计跟踪。
______________________________________________________________________
HTTP+SSE传输
默认情况下,DevMemory通过以下方式进行通信 标准,这是大多数桌面代理配置(Claude Code、Cursor、VS Code)所期望的。如果您需要通过网络公开服务器,例如在Docker中作为共享守护进程运行它,或者支持使用较新的Streamable HTTP规范的客户端,请设置 DEVMEMORY_TRANSPORT=http.
协议流
传统SSE (MCP规范2024-11-05,大多数客户都支持):
- 客户端打开
GET /sse→ 服务器发送endpoint具有会话特定POST URL的事件 - 客户端向发送JSON-RPC请求
POST /message?sessionId=→ 服务器响应202 - 服务器通过打开的SSE流将每个JSON-RPC响应推回
流式HTTP (新客户端):
- 客户端发送
POST /sse带有JSON-RPC请求→ 服务器直接将响应流式传输回来
每30秒发送一次心跳ping,通过代理和负载均衡器保持连接畅通。
以HTTP模式启动
# Stdio (default — same as omitting the variable)
DEVMEMORY_TRANSPORT=stdio ./devmemory-mcp
# HTTP + SSE on the default port 8080
DEVMEMORY_TRANSPORT=http ./devmemory-mcp
# HTTP + SSE on a custom port
DEVMEMORY_TRANSPORT=http DEVMEMORY_PORT=3100 ./devmemory-mcp为HTTP+SSE配置代理
克劳德代码(~/.claude/mcp.json):
{
"mcpServers": {
"devmemory": {
"type": "sse",
"url": "http://localhost:8080/sse"
}
}
}VS代码(mcp.json):
{
"servers": {
"devmemory": {
"type": "sse",
"url": "http://localhost:8080/sse"
}
}
}Docker示例 (还可以根据需要设置存储环境变量):
docker run -d \
--name devmemory \
-p 8080:8080 \
-e DEVMEMORY_TRANSPORT=http \
-e DEVMEMORY_STORAGE=SQLite \
-v $HOME/.devmemory:/root/.devmemory \
devmemory-mcp在HTTP模式下运行时,进程 不 从stdin读取--它绑定到 `0.0.0.0:
` 并通过HTTP处理请求。保持流程运行;代理根据需要连接和断开连接。
______________________________________________________________________
环境变量引用
| 变量 | 默认值 | 描述 |
|---|---|---|
DEVMEMORY_STORAGE | SQLite | 后端: SQLite, PostgreSQL,或 Neo4j |
DEVMEMORY_SQLITE_PATH | ~/.devmemory/devmemory.db | SQLite文件路径 |
DEVMEMORY_POSTGRES_CONNECTION | _(无)_ | 完整的PostgreSQL连接字符串 |
DEVMEMORY_NEO4J_URI | bolt://localhost:7687 | Neo4j螺栓URI |
DEVMEMORY_NEO4J_USER | neo4j | Neo4j用户名 |
DEVMEMORY_NEO4J_PASSWORD | _(无)_ | Neo4j密码 |
DEVMEMORY_NEO4J_DATABASE | neo4j | Neo4j数据库名称 |
DEVMEMORY_TRANSPORT | stdio | 运输方式: stdio 或 http (HTTP+SSE) |
DEVMEMORY_PORT | 8080 | HTTP端口(仅在以下情况下使用 DEVMEMORY_TRANSPORT=http) |
______________________________________________________________________
教你的代理使用DevMemory
将此添加到您的 CLAUDE.md, copilot-instructions.md,或代理系统提示:
## Memory
You have access to DevMemory persistent memory via MCP tools.
### Session start
- Call `mem_context` with the current project name to load recent history.
- Review returned observations before writing any code.
### During work
- After any significant decision, call `mem_save` with type `architecture-decision`.
- After fixing a bug, call `mem_save` with type `bugfix`.
- Save proactively — don't wait to be asked.
### Session end
- Call `mem_session_end` with a 2–3 sentence summary of what was accomplished.
### After context reset or compaction
- Immediately call `mem_context` to recover session state.______________________________________________________________________
观察类型
用正确的类型构建你的知识:
| 类型 | 何时使用 |
|---|---|
bugfix | 发现并修复了一个错误 |
architecture-decision | 做出了设计或结构选择 |
security-pattern | 安全约束或模式 |
performance-fix | 性能优化 |
multi-tenant-rule | 租约隔离或范围界定规则 |
stored-procedure-pattern | 数据库存储过程模式 |
config-change | 配置或环境更改 |
pattern | 可重用的代码模式 |
discovery | 从代码库中学到了一些东西 |
preference | 用户或团队偏好 |
idea | 未来的改进或探索 |
tech-debt | 已知技术债务 |
new-feature | 添加了一项新功能 |
______________________________________________________________________
命令行用法
DevMemory还附带了一个CLI,用于在代理会话之外管理内存:
# Search memories
devmemory-mcp search "authentication middleware"
# View statistics
devmemory-mcp stats
# Export all memories to JSON
devmemory-mcp export --format json --output memories.json
# Import from a JSON export
devmemory-mcp import --file memories.json______________________________________________________________________
故障排除
macOS上“找不到命令”
chmod +x ~/.local/bin/devmemory-mcp
xattr -d com.apple.quarantine ~/.local/bin/devmemory-mcp手动测试MCP连接(stdio模式)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | ~/.local/bin/devmemory-mcp预期响应:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": { "tools": { "listChanged": false } },
"serverInfo": { "name": "devmemory", "version": "1.0.0" }
}
}手动测试MCP连接(HTTP+SSE模式)
使用启动服务器 DEVMEMORY_TRANSPORT=http,然后在单独的终端中:
# 1. Open SSE stream (keep this running in a terminal tab):
curl -N http://localhost:8080/sse
# Server responds: event: endpoint\ndata: /message?sessionId=
# 2. Send an initialize request using the sessionId from step 1:
curl -X POST "http://localhost:8080/message?sessionId=" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'
# Response arrives on the SSE stream in step 1列出可用工具
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | ~/.local/bin/devmemory-mcp备份SQLite数据库
cp ~/.devmemory/devmemory.db ~/.devmemory/devmemory.db.bak______________________________________________________________________
从源头构建
需要 .NET 10 SDK.
git clone https://github.com/nemesis312/devmemory.git
cd devmemory
dotnet build src/DevMemory.sln要发布自包含的本机二进制文件,请执行以下操作:
dotnet publish src/DevMemory.Mcp/DevMemory.Mcp.csproj \
-c Release \
-r osx-arm64 \
--self-contained true \
-p:PublishSingleFile=true______________________________________________________________________
贡献
欢迎提出问题、想法和PR。这个项目遵循标准的GitHub流程:
- 分叉回购
- 创建分支(
git checkout -b feat/your-feature) - 提交您的更改
- 打开拉取请求
______________________________________________________________________
许可证
麻省理工学院 --免费用于个人和商业用途。
______________________________________________________________________
_专为那些厌倦了向AI代理解释自己的代码库的开发人员而设计。_
