mcpField
D
dark-memory-mcp

dark-memory-mcp

本地服务
github.com/Opita-Code记忆与知识12 周前更新

关于 dark-memory-mcp

dark-memory-mcp 是基于 Go 和 SQLite 的持久记忆 MCP 服务,供需要跨会话保留项目笔记的 AI Agent 使用。它还包含 vibe-loop,可对照原始规格评估交付物;项目目前处于预发布阶段。

主要功能

  1. 01跨会话保存和检索 Agent 记忆
  2. 02按会话、项目或操作者划分笔记范围
  3. 03用 vibe-loop 对比规格与交付物
  4. 04支持漂移判定与解决工具
  5. 05通过本地 SQLite 文件存储

适用场景

  1. 01在新会话中恢复项目决策与待办
  2. 02保存并查询数据库或架构约定
  3. 03检查交付物是否符合任务规格

MCP 相关

该服务通过 MCP over stdio 向 Agent 提供记忆管理和 vibe-loop 工具。服务器作为本地进程运行,数据存储在本地 SQLite 文件中。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"opita-code-dark-memory": {
"command": "npx",
"args": [
"-y",
"@opitacode/dark-memory-mcp"
]
}
}
}
启动命令npx -y @opitacode/dark-memory-mcp

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

安装包
npm@opitacode/dark-memory-mcp4.0.0-alpha.32

工具

73

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

参数类型必填说明
nli_configobject否可选的 v2.20.0 T07 每项目 NLI 配置。启用后,项目的 drift_judge 会使用配置的主要 NLI 提供方(以及可选的备用提供方),而不是回退到 nli.Config{}.DefaultsFor()。
nli_config.enabledboolean否
nli_config.primaryobject否
nli_config.primary.endpointstring是
nli_config.primary.model_revstring否
nli_config.primary.auth_tokenstring否Bearer 令牌;绝不会在工具结果中回显。
nli_config.primary.timeout_msinteger否
nli_config.primary.provider_idstring是
nli_config.fallbackobject否
nli_config.fallback.endpointstring是
nli_config.fallback.model_revstring否
nli_config.fallback.auth_tokenstring否Bearer 令牌;绝不会在工具结果中回显。
nli_config.fallback.timeout_msinteger否
nli_config.fallback.provider_idstring是
nli_config.fallback_enabledboolean否
nli_config.cache_ttl_secondsinteger否
nli_config.latency_budget_msinteger否
nli_config.max_cache_entriesinteger否
nli_config.max_premise_bytesinteger否
nli_config.max_hypothesis_bytesinteger否
project_idstring是Kebab-case 公共 ID(3-64 个字符,小写字母数字 + 连字符,必须以字母数字开头和结尾)。
descriptionstring否可选的自由格式描述(最多 512 个字符)。
display_namestring是面向用户的标签(1-128 个字符)。
constitution_idstring否可选的章程 ID,用于将项目绑定到章程(INV-7 章程范围限定)。
constitution_verstring否可选的章程版本(与 constitution_id 配套)。
default_agent_idstring否可选的 v2.4.1 Mem0 agent_id(LLM 身份),用于指定项目所有者。session_start 和 publish_vibe 按优先级解析 agent_id(调用方输入 > 此默认值 > 空)。空 = 无默认 Agent(v2.4.0 行为)。为多 Agent 项目设置此项,使每个 LLM 的 ContextRecap 和 drift_judge 增强处理仅筛选其自身记忆。

详细介绍

╔════════════════════════════════════════════════════════════════════════════════════╗
║                                                                                    ║
║         ██████╗  ██████╗██████╗ ███╗   ███╗      ███╗   ███╗ ██████╗██████╗        ║
║        ██╔═══██╗██╔════╝██╔══██╗████╗ ████║      ████╗ ████║██╔════╝██╔══██╗       ║
║        ██║   ██║██║     ██║  ██║██╔████╔██║      ██╔████╔██║██║     ██████╔╝       ║
║        ██║   ██║██║     ██║  ██║██║╚██╔╝██║      ██║╚██╔╝██║██║     ██╔═══╝        ║
║        ▚██████╔╝╚██████╗██████╔╝██║ ╚═╝ ██║      ██║ ╚═╝ ██║╚██████╗██║            ║
║         ╚═════╝  ╚═════╝╚═════╝ ╚═╝     ╚═╝      ╚═╝     ╚═╝ ╚═════╝╚═╝            ║
║                                                                                    ║
║                     MEMORIA PERSISTENTE PARA AGENTES DE IA                         ║
║                                                                                    ║
╚════════════════════════════════════════════════════════════════════════════════════╝

Dark Memory 能将你的 Agent 从健忘者变成记得住事的同事。

它是一个保存在你磁盘上的笔记本。你的 Agent 会在其中记录信息,并在 不同会话之间查询,还会自动验证交付结果是否符合你的要求。不需要远程服务,没有遥测,也没有费用。

MIT Go 1.25+ MCP tools Schema Install

简介 · 快速开始 · 78 个工具 · Vibe 用例 · 帮助 · 当前状态 · 贡献

状态:v4-alpha.32 — 预发布版。78 个规范工具,schema 32, MIT。哪些功能可用、哪些尚未测量,请查看 docs/v4-status.md — 在考虑将其用于生产环境前, 请先阅读。(alpha.32 发布:tag → HEAD,CI 发布 npm + registry。)


它解决的问题

Lunes:   "Vamos a refactorizar el módulo de autenticación."
         El agente trabaja. Tomas 5 decisiones de arquitectura.
         Cierras la sesión.

Martes:  "Continuemos con el refactor."
         El agente: "¿Qué refactor? ¿Qué módulo? ¿Quién eres?"
         Tienes que explicarle TODO otra vez. 20 minutos perdidos.

使用 Dark Memory:

Lunes:   "Vamos a refactorizar el módulo de autenticación."
         El agente anota: proyecto, decisión #1, decisión #2...
         Todo queda en tu disco.

Martes:  Abres sesión. El agente recibe:
           - Proyecto: dark-memory-mcp
           - Decisiones del lunes: 5 (la #3: "RS256, no HS256")
           - Pendientes: 2
         "OK, ayer elegimos RS256, terminemos los tests."
         0 minutos de re-explicación.

你不需要直接与 Dark Memory 交互。你的 Agent(Claude、opencode、Cursor) 会通过 MCP 使用它,就像查阅笔记本一样。


Vibe 循环

打通你的要求与交付结果之间的闭环。

Sin supervisión:
  Tú:    "Crea una API que devuelva productos filtrados por categoría."
  Agente: [200 líneas]
  Tú:    "También devuelve los borrados..."
  Agente: "Cierto." [150 líneas más]
  Tú:    "No tiene paginación."
  Agente: "..."  ← iteración sin fin
Con vibe-loop:
  1. CREAS LA PROMESA (spec)      → dark_memory_vibe_spec
  2. EL AGENTE TRABAJA
  3. ENTREGA EL ARTEFACTO         → dark_memory_vibe_publish
  4. EL JUEZ COMPARA entrega vs promesa:
        "aligned"        → cumple, adelante        ✅
        "drift_detected" → se desvió, reintenta    🔄
        "needs_human"    → no está seguro, te pregunta 🤔
  5. CIERRE — queda registrado qué pediste, qué entregaron, qué dijo el juez

你不必逐行检查。由裁判根据最初的承诺评估每次交付,Agent 会自行修正。


快速开始

你需要 Node.js 18+(npm 包装器)或 Go 1.25+(从 source 构建)。

// Agrega esto a la config MCP de tu agente
{
  "mcpServers": {
    "dark-memory": {
      "command": "npx",
      "args": ["-y", "@opitacode/dark-memory-mcp"]
    }
  }
}
Agent配置位置
opencodeopencode.jsonc → mcp.dark-memory
Claude Code.claude.json
Claude Desktopclaude_desktop_config.json
Cursor.cursor/mcp.json

npx 首次运行时会下载适用于你系统的二进制文件。无需编译。

验证是否正常运行
> "Llama a dark_memory_health_ping y dime qué responde."
{
  "server": { "version": "4.0.0-alpha.32", "name": "dark-memory-mcp" },
  "db": { "live": true, "schema_version": 32 },
  "registry": { "canonical_tools": 78 }
}

78 是实时测得的注册数量。server.version 是构建标记 (已发布的 tag 或本地伪版本);重要的是上面的格式:运行状态 + schema + 数量。

server.version 会显示构建标记:如果编译时未使用 -ldflags,你会看到 dev 而不是版本号。这不是错误。

入门
1. "Inicia sesión en dark-memory. Operador: [tu nombre]. Proyecto: mi-proyecto."
2. "Guarda: 'Estamos usando Postgres 16 con uuidv7 como PKs.'"
3. "¿Qué tenemos anotado sobre la base de datos?"
4. "Cierra la sesión."

从 source 构建:go build -o bin/dark-mem-mcp ./cmd/dark-mem-mcp 各主机的详细说明:docs/npm-install.md。


选择你的级别

级别 1 — 笔记本。 Agent 能在不同会话之间记住信息。适合第一天使用。 session_start、agent_memory_save、agent_memory_recall、session_close。

级别 2 — Vibe 循环。 验证交付结果是否符合要求。 用 vibe_spec 作出承诺,用 vibe_publish 交付,用 pipeline_status 获取 判定结果,用 resolve_drift 接受或拒绝。

级别 3 — 委派。 适用于大型任务:delegate_intent 决定直接执行还是交由 子 Agent 执行,mindset_apply 则组合它们的提示词。

级别 4 — 扩展。 添加工具、调整评分标准、改进搜索。 从 CONTRIBUTING.md → 适合新手的议题 开始。


你会在代码中看到的概念

术语含义
MCPAgent 使用外部工具所遵循的标准协议。
会话一段工作过程。session_start … session_close。
Spec承诺:“我将使用任务 T1、T2、T3 完成 X。”
Artifact交付物:代码、文本、图像,或其他内容。
Drift交付物不符合承诺时的偏差。由评判器检测。
Vibe-loop循环过程:spec → 工作 → artifact → 评判器 → 重试或接受。
Agent 记忆Agent 的持久笔记本,可跨会话保留。
Vibe-caseC1–C8。工件类型;决定评判器使用的评分标准。

完整目录:docs/tools.md。


如果出现问题

症状可能原因
“我的 Agent 看不到工具”更改配置后未重启 Agent。在 Windows 上,二进制文件可能会被锁定:请关闭所有终端。
“提示 ‘session required’”几乎所有工具都需要活动会话。请先启动一个会话。
“我保存了东西,却找不到”笔记有作用范围:会话、项目或操作员级别。你可能不知不觉切换了项目。
“schema_version 错误”你使用的是旧版本;数据库需要迁移。./bin/dark-mem-cli migrate --apply

目前还做不到的事

坦诚相告,因为只会推销的 README 无助于做出判断:

  • 预发布版。 注册表中测得 78 个规范工具 (+3 个通过环境变量组装的额外工具 = 81 个)。工具范围会随着 release 增长,并由 freeze test 固定——相较于 alpha.31,变化量为 +5 (vibe_compile + 包含 4 项的 OAUTH 命名空间)。各命名空间的详情见 docs/v4-status.md §1。
  • Phase 21 只覆盖 9 个原语中的 2 个。 Vibe-loop 引擎是一个已经验证、 正在开始接线的库,而非完成的产品。剩余 7 个原语会改变行为,需要 instrument → measure → decide → flip。
  • Postgres 尚未在实际环境中测试。 58 个方法返回 notImpl(SQLite 中为 0 个)。 生产路径使用 SQLite。
  • 目前还没有外部使用者。 作者自 2026-10-08 起每天都在使用。

所有这些数据都附有测量时间和来源,详见 docs/v4-status.md。 如果该文档与正在运行的代码不一致,internal/tools/v4_status_consistency_test.go 会导致构建失败,因此内容不会悄无声息地过时。


内部工作原理

Tu agente (Claude / opencode / Cursor)
    │  MCP (JSON-RPC sobre stdin/stdout)
    ▼
dark-mem-mcp.exe  ←── proceso local, 78+3 herramientas
    │  SQL
    ▼
SQLite (archivo .db en tu disco)   ←── o Postgres con DARK_DRIVER=postgres
  • 数据库 Schema: 32,存储在 schema_migrations.version 中。运行实例中有 66 张表, 包括 FTS5 的影子表。
  • 外部依赖: 运行时无外部依赖。Go 标准库 + 嵌入式 SQLite。
  • 测试: 权威数字以 CI 中的为准,而非本 README 中的数字。把数字复制到 README 中, 正是这个项目不再做的事。

贡献

MIT。欢迎各种水平的贡献。

  1. CONTRIBUTING.md — 项目规范
  2. §10 保持已发布声明的准确性 — 项目曾付出惨痛代价才学到的规则
  3. 所有贡献都必须经过 vibe-loop:spec → artifact → drift_judge → merge

设计原则:

  • 仅追加:迁移永不编辑,只能新增
  • 规范顺序:工具顺序固定,不重新编号
  • 尽力而为:VLP、清理器和遥测永不阻塞主要操作
  • 不硬编码:每个数字、名称和版本都只有一个事实来源

由 Opita Code 在哥伦比亚 Huila 省 Neiva 倾心打造 ❤️。

“我们构建软件,不是为了让它在演示文稿中看起来漂亮,而是为了让它每天都能与你并肩工作。”

opitacode.com · github.com/Opita-Code · dark-research-mcp

评论

支持 Markdown

第一次接触 MCP?

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

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