mcpField
D
devin-memory

devin-memory

本地服务
github.com/Icaro0310记忆与知识1今天更新

关于 devin-memory

devin-memory 是为 Devin 及其他 MCP 客户端设计的持久化记忆存储,面向 AI 工程师和开发者。它记录来源和版本、筛查写入内容,并将可疑条目隔离待审,避免未经核验地信任记忆。

主要功能

  1. 01带来源追溯的记忆条目
  2. 02写入筛查与隔离
  3. 03版本管理和冲突跟踪
  4. 04按工作区和配置范围管理
  5. 05按有效期与新近度检索
  6. 06CLI、Python 库和 MCP 服务

适用场景

  1. 01在 Agent 会话间保存持久事实
  2. 02追溯记忆对应的会话消息行
  3. 03使用前审查可疑或注入内容
  4. 04检索工作区专属上下文

MCP 相关

其 stdio MCP 服务提供 retain、recall、筛查、列表、隔离、验证等记忆操作。写入会经过隔离门控;只有显式启用后才提供提升条目的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"icaro0310-devin-memory": {
"command": "uvx",
"args": [
"devin-memory-mcp"
],
"env": {
"DEVIN_MEMORY_DB": "<DEVIN_MEMORY_DB>"
}
}
}
}
启动命令uvx devin-memory-mcp
需要配置的环境变量
DEVIN_MEMORY_DBPath to memory.db (default: ./memory.db)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidevin-memory-mcp0.3.1

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
tagsstring否
contentstring是
workspacestring否
source_rowidany否
source_sessionstring否

详细介绍

devin-memory

ci PyPI OpenSSF Scorecard M8ven Score Glama Score 收录于 mcpservers.org mcprush Score MCP 注册表

许可证:MIT Python 3.10+ GitHub 星标 最近一次提交 devin-* 生态系统 欢迎提交 PR

属于 DEVIN 生态系统
方向:构建 · 类型:产品
面向:AI 工程师、开发者、数据科学家
接口:命令行 / Python 库 / MCP 服务 / 服务
路径:AI 工程师 · 第 3/3 步 — 位于 devin-orchestrator 之后

适用场景

devin-memory

已更名(2026 年 10 月): 此代码库已从 Icaro0310/devin-memory 迁移至 Icaro0310/devin-brain — PyPI 软件包、命令行命令和 MCP 服务 名称仍为 devin-memory;GitHub 重定向会保留星标、问题和历史记录。

非官方社区项目。 与 Cognition AI 无关,未获其认可或 赞助。“Devin” 是 Cognition AI 的商标。

Linux · 个人版 Windows · 企业版 Windows

属于 awesome-devin 生态系统:精选的 devin-* 工具中心。

Devin 的防投毒记忆存储:持久保存带有来源信息和版本记录的事实, 并设置隔离门槛 — 防止 Agent 记忆被不良会话或注入内容悄然 篡改。

问题

Agent 记忆是一种投毒途径。任何会在会话之间持久化“事实”的工具,都可能被单次糟糕的会话污染——一条注入的指令或粘贴的机密,会在之后的每次会话中变成可信的认知,既没有审核步骤,也无法回答 “这条信息从何而来?”。

既有方案

  • Devin memory MCP(通过 .devin/memory/memories.jsonl 执行 retain/recall/reflect)——仅追加,不做筛查,也不记录会话来源。devin-memory 会导出为完全相同的行格式。
  • MemGPT / LangChain memory——侧重优化信息召回,而非审计或质疑所存内容的持久化层。

devin-memory 改造了记忆存储的思路,并加入这些工具所不具备的功能:隔离审核关卡,以及可追溯到真实会话行的来源信息。

Devin 原生特性

  1. **并行使用:**每条记录都可以携带 source_session_id + source_rowid,并通过 devin-internals 的只读存储对照 Devin 的 sessions.db 进行审计——memory MCP 无法验证所声称的来源会话(或特定消息行)是否真实存在。隔离审核关卡还会筛查每次写入,识别机密和注入内容的特征。
  2. **不使用 Devin:**没有 sessions.db,就没有可供审计的会话来源信息——这项额外功能也就不存在。
  3. 一句话概括: 这是一个会记住每条记忆来源的记忆存储,并会隔离可疑内容,直到人工放行。

安装

需要 Python ≥ 3.10;使用 uv(推荐)或 pipx 安装。

uv tool install 'devin-memory[mcp]'

或使用 pipx(替代方案):

pipx install 'devin-memory[mcp]'

开发环境安装:

pip install -e ".[dev]"
pytest

用法

# Store a fact (screened on write; suspect content lands in quarantine)
devin-memory retain "CI is green on Windows + Linux" --tags ci,status
devin-memory retain "..." --source-session <session-id> --source-rowid <n>
devin-memory retain "..." --workspace /path/to/project   # scope to a workspace
devin-memory retain "..." --expires-at 2026-12-31T00:00:00Z  # TTL: drops
                                   # out of recall/prime after this instant

# Keyword-ranked recall — returns active, unexpired entries only;
# scores are weighted by recency decay so fresh memories outrank stale ones
devin-memory recall "ci status" [--json] [--limit 5] [--tags a,b]
devin-memory recall "ci status" --include-expired  # also surface expired

# Quarantine lane: list, mark an existing entry, or release one
devin-memory quarantine                          # list with reasons
devin-memory quarantine <id> [--reason manual:x] # mark entry as quarantined
devin-memory quarantine --release <id>           # human override -> active
devin-memory quarantine --digest [--json]        # audit hash (read-only)

# Contradictions: a conflicting retain is linked, not overwritten
devin-memory conflicts [--json]     # (newer, older) pairs; resolve with
                                    # supersede / retract / quarantine <id>

# Mine a session for durable knowledge -> proposed entries (inactive
# until reviewed); extraction is heuristic — see "Limitations"
devin-memory extract <session-id> --sessions-db path/to/sessions.db
devin-memory extract --latest --sessions-db path/to/sessions.db [--auto-approve]
devin-memory list --status proposed   # review queue
devin-memory approve <id>             # proposed -> active

# Context block for a UserPromptSubmit hook — active entries only,
# filtered by workspace + machine profile, bounded by ~4 chars/token
devin-memory prime [--workspace PATH] [--max-tokens N]

# Versioning and housekeeping
devin-memory supersede <id> "corrected fact" [--expires-at <iso>]
                                          # default: inherit old expiry
devin-memory retract <id>
devin-memory list [--status active|proposed|quarantined|retracted] [--json]
devin-memory compact [--json]   # dedup report (dry-run)
devin-memory compact --apply    # retract copies + vacuum the file

# Audit an entry's provenance against a real sessions.db (read-only)
devin-memory verify <id> --sessions-db path/to/sessions.db

# Export active memories to a memory-MCP-compatible JSONL
devin-memory export --out memories.jsonl

MCP 服务

devin-memory 也是一个真正的 MCP 服务(stdio)——采用相同的保留/回忆流程,并在每次写入时执行隔离门控,可从 Devin、 Claude Desktop、Cursor 或任何 MCP 客户端调用:

pipx install "devin-memory-mcp"

devin-memory-mcp 控制台脚本也包含在基础版 devin-memory 发行包中,因此直接运行 uv tool install devin-memory(不添加额外项)后,脚本会退出并显示 error: The MCP server needs the 'mcp' extra。恢复步骤请参阅各平台指南中的故障排除部分(Linux、 个人版 Windows、 企业版 Windows)。

客户端配置:

{
  "mcpServers": {
    "devin-memory": {
      "command": "devin-memory-mcp",
      "args": ["--db", "/path/to/memory.db"]
    }
  }
}

同一个 stdio 服务也可注册到其他 MCP 宿主:

Zed —— settings.json 中的 context_servers:

{
  "context_servers": {
    "devin-memory": {
      "command": { "path": "devin-memory-mcp", "args": ["--db", "/path/to/memory.db"] }
    }
  }
}

JetBrains —— Settings → Tools → AI Assistant → Model Context Protocol → Add:

{ "mcpServers": { "devin-memory": { "command": "devin-memory-mcp", "args": ["--db", "/path/to/memory.db"] } } }

Antigravity —— ~/.gemini/config/mcp_config.json:

{ "mcpServers": { "devin-memory": { "command": "devin-memory-mcp", "args": ["--db", "/path/to/memory.db"] } } }

工具:retain、recall、screen(对门控进行试运行,不写入)、list、 retract、supersede、quarantine、release、approve、conflicts、 prime、verify、extract、compact、quarantine_digest。只有在服务以 DEVIN_MEMORY_MCP_PROMOTE=1 运行时,才会注册 release 和 approve 这两个提升覆盖工具;否则,提升操作仅限人工通过 CLI 执行(devin-memory quarantine --release <id> / devin-memory approve <id>)。同一标志也控制 extract 的 auto_approve 参数;未选择启用时,该参数会被强制关闭,防止 AI 客户端跳过审核步骤。 每个工具都会返回结构化数据或 {"error", "detail"} 对象——不会有异常通过传输层抛出。DEVIN_MEMORY_DB 可替代 --db 使用。

VS Code: adapters/vscode/ 提供一个扩展,可通过编辑器内置的 MCP 支持(服务定义提供程序,VS Code ≥1.102)注册此 服务——其中声明了启动命令、可选的 DEVIN_MEMORY_DB 和工作区 cwd;提升操作的启用选项固定为关闭,因此面向编辑器的服务不会提供提升功能。

adapters/ 是一个独立的 Devin 插件根目录 (adapters/.devin-plugin/plugin.json + adapters/skills/devin-brain/SKILL.md), 通过 devin plugins install Icaro0310/devin-brain#adapters 安装——它包含在 仓库中,而不在 wheel 中。清单通过 uvx --from 'devin-memory[mcp]' devin-memory-mcp 启动服务;提升操作的启用选项(DEVIN_MEMORY_MCP_PROMOTE)始终不会设置,因此面向插件的服务不会提供提升功能。若要使用本地检出版本而非 PyPI,请将本地清单副本指向 uvx --from '.[mcp]' devin-memory-mcp。

从会话中学习:devin-learning

这个配套 CLI 会从 sessions.db 中提取候选经验,并写入可供审核的技能草稿。默认情况下,它不会将草稿安装到工作区。

devin-learning extract --sessions-db path/to/sessions.db --out ./learning-drafts
devin-learning review --out ./learning-drafts

# After reviewing drafts, explicitly allow output to a live skill directory:
devin-learning extract --sessions-db path/to/sessions.db --out .devin/skills --apply

除非指定 --apply,否则 review 只会试运行;review --apply 会将被拒绝的草稿移至 _rejected/。提取器会读取会话内容,因此在审核之前,请将其输出保密。

草稿放入技能树后,catalog-bridge 会将其注册到 devin-skill-catalog 注册表,作为 proposed 条目——从而完成写入→审核→晋升的闭环:

# scans .devin/skills/learned-*/SKILL.md and registers each as `proposed`
devin-learning catalog-bridge .devin/skills

# then the catalog gates and promotes them (its own CLI):
devin-skill-catalog quarantine skill:learned-testing . --apply
devin-skill-catalog promote  skill:learned-testing --apply
devin-skill-catalog activate skill:learned-testing --apply

注册表默认位于 <config-dir>/.devin-ecosystem/skill-catalog.json(解析方式与 devin-skill-catalog 相同;DEVIN_CONFIG_DIR 优先)——可使用 --registry 覆盖。条目仅包含元数据(kind、name、state、SKILL.md 的 sha256、origin 目录、空的 history)——绝不会复制草稿正文。此桥接工具具有确定性且幂等:重新扫描未更改的草稿不会产生任何变化;编辑过的草稿会更新 sha256;目录中已从 proposed 状态转移的条目会报告为跳过,并保持不变。--dry-run 会打印计划,但不会写入内容。相关约定请参阅 docs/skill-catalog-bridge.md。

如需生成便于分享的摘要,可使用 weekly-report——这是该闭环的公开接口。它会生成 weekly-YYYY-Www.md,其中仅包含汇总计数(按主题分类的经验、已晋升的 learned-* 技能、待隔离的分类):不包含会话文本、ID 或路径,因此可以安全地提交该文件。它会从 devin-learning-weekly 游标继续;若没有游标,则回退到最近的 --days 天(默认值为 7 天)。

devin-learning weekly-report --sessions-db path/to/sessions.db --out ./docs/learning

记忆状态

active · proposed(已提取,等待 approve)· quarantined(已筛查或手动标记,等待 release)· retracted(已撤回或被取代)。只有 active 条目会显示在 recall/prime/export 中——隔离内容绝不会被打印或召回。

active 条目也可以带有 expires_at(ISO-8601,在 retain/supersede 时设置,或通过 set_expires_at 更改):超过指定时刻后,该条目会从 recall/prime 中排除——只是排除,并非删除,因此仍会显示在 list/export --all 中以供审计(recall --include-expired 可选择不排除过期条目)。没有 expires_at 的条目永不过期。此外,recall 会对关键词评分应用指数衰减的近期性权重(半衰期为 30 天,参数为 ops.RECALL_DECAY_HALF_LIFE_DAYS,可通过 half_life_days 在每次调用时调整)——在结果难分高下时,较新的记忆优先;但明显更强的陈旧匹配仍会排在前面。

冲突、提取与 prime(启发式)

  • 冲突 — 如果某条 retain 对同一规范化主题给出的指令与现有活动条目相反,则会将其与该条目一同存储,并添加 conflicts_with 链接(devin-memory conflicts)。该启发式会比较去除停用词后的“主题键”以及肯定/禁止极性——它有意漏掉改写后的矛盾,以避免错误关联事实。
  • extract 会扫描一个会话的 message_nodes(通过 devin-internals 只读访问),寻找持久知识信号——用户更正(“na verdade”“actually”“the right way”)、偏好(“always”“never”“sempre”“nunca”)、已发现的命令(反引号括起的已知工具)和路径。候选内容会像任何写入一样经过筛查:干净的内容进入 proposed,可疑的内容进入 quarantined。--auto-approve 会跳过审核步骤。
  • prime 会生成一个精简的 # devin-memory: recalled context (heuristic) 区块,适用于提示词钩子。通过 retain --workspace 指定工作区范围的条目,只会在该工作区内 prime;在不同机器配置下写入的条目绝不会 prime(配置默认为 corporate——失败时采取关闭策略)。
  • compact 会去重:共享完全相同 content + workspace + profile 的未撤回条目会合并为一个保留条目——状态最活跃的条目优先(active > proposed > quarantined),状态相同时保留最早的行。其他副本会变为 retracted(绝不删除——历史记录和原因仍可审计),保留条目会继承与其状态相同的副本标签并集——隔离或待审条目的标签绝不会混入活动条目。默认生成试运行报告(活动条目数 N→M、每组的 keep/retracted ID、截断的内容 sha256——绝不包含内容);--apply 会执行操作并对文件运行 VACUUM。
  • quarantine --digest 会输出该隔离区的确定性审计指纹:条目数、按分类族划分的原因类别(自由格式的手动原因会合并为 manual:*),以及基于排序后的逐条指纹 sha256(content)+sorted(reasons) 计算的 sha256。指纹以内容为依据,而非行 ID——存放相同隔离事实的两个存储会生成相同摘要,任何成员或原因的变更都会改变摘要。始终只读。

默认存储路径为 ./memory.db——可通过 --db 或 DEVIN_MEMORY_DB 覆盖。这是此工具唯一会写入的存储;Devin 的 sessions.db、acp-messages/*.db 和 state.vscdb 始终只读。

仅与 Devin 配合使用(仅 Devin 模式)

devin-memory 会在本地维护一个带来源跟踪和隔离区的记忆存储(JSONL)——无需外部记忆服务,也不会发起网络调用。两个控制台脚本(devin-memory 和 devin-learning)都只在你的机器上运行。

坦诚说明:写入时筛查属于启发式方法,并非保证——可疑条目会进入隔离区供人工审核,因此请保持这一习惯。

平台支持

记忆存储使用明确指定的本地 SQLite 路径,会话数据库则通过 --sessions-db 提供;不会假设任何特定平台路径。Windows 和 Linux 均受支持,并由 CI 覆盖。

局限性

  • 提取基于启发式,默认会标记为待审核。 extract 会从一个会话中提取符合关键词特征的句子,放入 proposed 审核队列——除非执行 approve(或使用 --auto-approve),否则不会有任何内容生效。如需更完善的经验教训流程,请参阅 devin-learning。
  • 筛查只是过滤手段,并非万无一失。 基于模式的机密检测和注入启发式都会出现误报(→ 隔离,只需一条命令即可放行)和漏报。也请运行专用扫描工具(gitleaks、devin-redact)——本工具是对它们的补充。
  • 召回排序基于关键词,具有确定性且有文档说明——M1 中不使用嵌入或语义搜索。
  • 会记录溯源信息,但不会自行验证。 retain 会存储声称的 source_session_id/source_rowid;之后,verify 会对照真实的 sessions.db 审计这些信息。恶意用户可以伪造溯源信息——关键在于这些信息可以核查。
  • 被隔离的替代版本仍会使旧版本失效。 如果替代版本被隔离,请审核队列(quarantine --release)。
  • PyPI 分发包: CLI 和可选 MCP 扩展使用 devin-memory;独立的 MCP 注册表包为 devin-memory-mcp。

适用场景

  • 你需要在会话之间保留 Agent 记忆,并希望默认不信任任何内容:每次写入都经过筛查,可疑条目会被隔离,等待人工放行。
  • 你需要回答“这条记忆来自哪里?”——条目会携带 source_session_id/source_rowid,可通过 verify 审计。
  • 你需要记忆版本管理——supersede/retract 会保留历史记录,而非静默修改。
  • 你希望保持兼容性:export 会按 Devin memory MCP 的 memories.jsonl 行格式写入数据。

不适用场景

  • 你需要语义召回——排序基于关键词,不使用嵌入。
  • 你希望筛查能捕获所有问题——这只是一种启发式过滤手段;请同时运行专用扫描工具(gitleaks、devin-redact)。
  • 你希望 extract 能理解意图——它只匹配关键词信号,并且默认标记为 proposed,正是因为启发式判断可能出错。

常见问题

如何防止 Agent 记忆被有问题的会话污染? 使用 devin-memory retain,而不是直接向原始存储追加内容。每次写入都会经过机密和注入特征筛查——可疑条目会被隔离,只有人工运行 quarantine --release <id> 后才会生效。

devin-memory 能证明某条记忆来自真实会话吗? 可以,通过记录的溯源信息实现。retain --source-session <id> --source-rowid <n> 会存储声称的来源;devin-memory verify <id> --sessions-db <path> 会以只读方式对照 Devin 的实际 sessions.db 进行审计——伪造的来源可以核查,不会被默默信任。

devin-memory 会取代 Devin memory MCP 吗? 不会,它是对其的补充。该 MCP 只支持追加且没有筛查功能;devin-memory 增加了隔离、溯源和版本管理,而 devin-memory export --out memories.jsonl 会生成 MCP 读取的精确行格式。

许可证

MIT——详见 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。