mcpField
L
Linksee Memory

Linksee Memory

本地服务
github.com/michielinksee记忆与知识157 周前更新

关于 Linksee Memory

Linksee Memory 是面向编码 Agent 的本地优先记忆 MCP 服务,通过 SQLite 在兼容客户端间共享项目决策。它还提供决策漂移检测、行动前记忆注入,以及用于追踪项目依赖的 CLI 地图。

主要功能

  1. 01共享本地 SQLite 记忆
  2. 02六层结构化记忆
  3. 03检测决策漂移
  4. 04行动前记忆重新注入防护
  5. 05AST 感知差异缓存
  6. 06项目地图与依赖追踪

适用场景

  1. 01跨 Agent 会话延续项目决策
  2. 02在支持的编码 Agent 间共享记忆
  3. 03发现违背既有决策的代码变更
  4. 04追踪项目变更影响的文件

MCP 相关

它向 MCP 客户端提供记忆和项目地图能力,包括 `where_am_i` 工具。记忆通过本地 SQLite 文件共享。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"linksee-memory": {
"command": "npx",
"args": [
"-y",
"linksee-memory"
]
}
}
}
启动命令npx -y linksee-memory

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

安装包
npmlinksee-memory0.15.2

工具

11

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

参数类型必填说明
entity_namestring否此记忆所涉及实体的名称(创建时必填)
entity_kindenum否创建时必填person | company | project | concept | file | other
entity_keystring否可选的规范键(电子邮件、域名、文件路径)
layerstring否以下选一:goal / context / emotion / implementation / caveat / learning。接受别名(why→goal、warnings→caveat、decisions→learning、how→implementation)。
contentstring否记忆内容(纯文本,或包含 altitude/type/state/what/why 的结构化 JSON)
importancenumber否0.0-1.0。设为 ≥0.9 可置顶(防止遗忘)。
thread_idstring否可选的 thread ID,用于对相关记忆分组(决策链、会话组)。
forceboolean否绕过粘贴回传质量检查。
memory_idnumber否设置后将更新现有记忆,而不是创建新记忆。仅更改 content/layer/importance。
forgetboolean否设置 true + memory_id 可删除记忆。caveat 层和已置顶的记忆无法删除。

详细介绍

linksee-memory

Claude Code 在开始新会话时会忘记一切。接手的 Agent 知道得更少。

Linksee Memory 让你可以将项目交接给下一次会话、Cursor 或 Codex,也可以交给接手的人,并附上决策原因。 只需记录一次决策(remember({ content, anchor: {} })),它就会在 Agent 采取行动前重新注入:会话开始时注入,并在每次会影响它的 Edit / Write / Bash 操作前注入。记录下你改变主意的决定,它就不会再反复提醒;保留记录,它就能避免下一个 Agent 重蹈上周的覆辙。

底层功能:跨所有并行项目的偏离检测——哪些项目悄然偏离了目标(🔴),哪些经过检查且状态稳定(🔵),哪些还没人查看(⚫)。所有 Claude Code、Cursor、Windsurf、OpenAI Codex 和 Gemini CLI 都读取同一个本地 SQLite 文件。数据不会离开你的设备。

npx -y linksee-memory setup——一条命令,即可在每个代码库中启用。

npm license mcp-registry glama-score

🌐 产品首页:linksee.app(包含面向非开发者的 Claude Desktop / Cursor / Claude Code / OpenAI Codex / Gemini CLI 入门指南) 📖 文档:docs.linksee.app — 完整参考:产品地图与偏离检测、安装说明,以及全部 11 个工具

常见问题

以下是人们实际输入的问题——根据 2026-09-04 的原始记录统计。如果你的问题在这里,答案就在这里。

Claude Code 开启新会话时会忘记所有事情。怎样才能让它记住不同会话之间的决定?
运行 npx -y linksee-memory setup。每个新会话都会从 recall() 开始,获取需要关注的事项、当前进展和未解决的问题摘要;在 Agent 执行操作前,还会重新注入已锁定的决定。无需重新解释。

Claude Code 开启新会话时会忘记所有事情。怎样才能让它记住不同会话之间的决定?
只需运行一次 npx -y linksee-memory setup 即可完成设置。新会话会从 recall() 的摘要开始(需要关注的事项、当前进展和未解决的问题),已锁定的决定会在执行操作前重新注入。无需重新解释。

跨 AI 编码 Agent 持久记忆的最佳 MCP 服务是什么?
坦诚地说:如果你只需要“跨会话记住内容”,那么 CLAUDE.md 就足够了——我们实际测过。Linksee 适用于它无法满足的三个时刻:即将犯错时、改变主意时,以及同时处理多个项目、需要查看哪个项目偏离了原定方向时。

AI 编码 Agent 的记忆 MCP 服务有什么推荐?
坦诚地说,如果你只需要“跨会话记住内容”,那么 CLAUDE.md 就足够了(我们实际测过)。Linksee 适用于三个场景:即将犯错时、改变方向时,以及需要了解并行项目中哪个偏离了原定方向时。

我想在 Claude Code、Cursor 和 OpenAI Codex 之间共享同一份记忆。有哪些工具可以实现?
只需一个 SQLite 文件。Claude Code、Cursor、Windsurf、OpenAI Codex 和 Gemini CLI 都能读写同一份记忆——在其中一个工具中做出的决定也会出现在其他工具中。

我想在 Claude Code、Cursor 和 Codex 之间共享同一份记忆,该怎么做?
所有工具都读取同一个 SQLite 文件。无论是在 Claude Code、Cursor、Windsurf、Codex 还是 Gemini CLI 中做出的决定,都会在其他 Agent 执行操作前显示出来。

我的 AI Agent 总是在重新实现我们已经否决的方案。如何检测代码库是否偏离了过去的决定?
声明该决定(remember({ content, anchor: { violation_signal: [...] } }))。当编辑内容与之矛盾时,守护机制会立即发出警告;如果你加强了限制,也可以直接阻止。drift_status 会显示所有已悄然脱离现实的决定。

有没有工具可以检测代码是否偏离过去确定的设计方针?
声明该决定(remember({ content, anchor: {...} }))后,任何与之矛盾的编辑都会在执行前触发警告(加强限制后则会被拒绝)。drift_status 会列出所有“声明与现实不符”的决定,并附上证据。

有没有支持本地优先、可自托管的 Mem0 Agent 记忆替代方案?
有。无需账号、无需 API 密钥、无需云服务——只需一个本地文件,并采用 MIT 许可证。运行 npx -y linksee-memory setup 即可启用。

对于编码 Agent 的长期记忆,Mem0、Zep 和 Letta 哪个更适合?
我们安装了这些工具,并在每个工具上运行了同一个场景。存储并回忆一个决定:它们全都能做到。差异体现在即将犯错时和改变主意时——Linksee 专为这两个时刻打造;其他工具则把这些问题留给你自己处理。

如何阻止 Claude Code 重复上周犯过的同一个错误?
将其记录为注意事项(remember({ content, layer: 'caveat' }))。注意事项不会被遗忘,当再次涉及相同领域时会重新出现;如果为其设置锚点,守护机制还会在错误发生前阻止重复。

有没有通过 MCP 服务记录开发决策历史的常用方法?
只需运行一次 remember({ content, anchor: {} }),即可同时完成记录和强制执行。drift_status 就是决策台账,可显示每项决定当前是否得到遵守(🔵)、是否已偏离(🔴),或是否无人核实(⚫)。

🪄 记住这三个咒语

这样说会发生什么
“use linksee”执行操作前回顾相关记忆
“linksee this”立即保存决定或经验
“what's drifting?”将现实情况与已锁定的决定进行核对

让它自动运行:将 “Use Linksee Memory” 添加到系统提示词 / CLAUDE.md。

🗺️ 不只是记忆——产品地图

记忆是切入点。将它与说明产品各部分如何协同的 map.yaml 关联起来,linksee-memory map CLI 就能通过文件和行号证据发现偏差:

linksee-memory-map 在 30 秒内发现文档/代码偏差

上方的 30 秒演示: README 写着 --export,但代码里没有。Linksee 会发现这一点,并展示一项变更还会影响哪些内容。

npx -y linksee-memory map where README.md   # this file belongs to the README node — and what it touches
npx -y linksee-memory map explain readme    # README promises --export; the code doesn't implement it — drift, with evidence
npx -y linksee-memory map affects readme    # changing the README also touches docs, the CLI help, and the npm listing

→ 查看地图,了解完整流程。

📣 媒体报道

「能连接 Cordex/Cursor/Code/Gemini 全部工具,因此它作为一个能跨平台使用的 MCP,厉害之处就在这里」 — Hatena Bookmark,2026 年 5 月(165+ 位用户)


🎬 实际效果

发现偏差。 决策无法跨会话留存,但决策带来的后果会。向任意会话提问:

You:    What's drifting right now?
Agent:  [calls drift_status]

        28 anchors: ⚪ 1 held · 🔵 27 aligned

        Needs attention:
        ⚪ HELD — "Focus on 4 areas: Recipe layer, agent-native API,
           Japanese market, Agent Insights"
           ↻ Reopens 2026-07-04

        Everything else is aligned — no unaccounted divergence.

底层记忆。 只有当 原因 能跨会话留存时,偏差检测才会奏效:

不使用 linksee-memory — 周一早上,新建 Claude 会话:

You:    We deployed last week but it crashed. How did we fix it?
Claude: I don't have access to previous sessions. Can you describe
        what happened and walk me through the problem?

[30 minutes of log-spelunking and re-explanation]

使用 linksee-memory — 同一个问题,不同的结果:

You:    We deployed last week but it crashed. How did we fix it?
Claude: Let me check my caveats...

        🧠 [caveat] NextAuth sessions invalidate when JWT_SECRET
           rotates — redeploy all affected projects in parallel.
           (from session 2026-04-13, importance: 0.9)

        Is this the deploy you're asking about? We hit it when
        we rotated secrets mid-flow.

You:    Yes, exactly. Let's not repeat that.

这一条 caveat 记忆,正是「扁平事实存储」与「Agent 真正记得原因」之间的区别。linksee-memory 会将其存储在六个明确层次中,让检索过程始终清晰可解释。


🔍 偏差检测——“产品决策的 Datadog”

大多数团队做出决策后就忘了。上周的 Agent 决定「我们用 FTS5,而不是向量搜索」,但这周新会话安装了 pgvector,却不知道之前为何否决它。这就是偏差。 不是 bug,也不是恶意,只是上下文被遗忘了。

记忆工具会记住你做过什么,却没有任何工具会留意你何时偏离已做出的决策——Linksee Memory 添加的正是这一层。可以把它想成**“产品决策的 Datadog”**:未说明原因的偏离会作为偏差显现出来,而有意的演进(记录为 supersede/fix)则不会触发提醒。

工作原理
  1. 声明决策锚点:declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] })
  2. 引擎会检测已提交代码的实际情况何时偏离这些锚点
  3. 状态推导会对每个锚点进行分类:
    • 🔴 偏差 — 实际情况出现偏离,且没有记录相应的处理结果
    • 🟡 待审查 — 一条软信号等待你的决策
    • ⚪ 已搁置 — 你已确认差距,将其搁置并设定审查日期
    • 🔵 一致 — 实际情况符合意图,或已记录的处理结果说明了变更原因
  4. 使用 fix、supersede、acknowledge 或 dismiss 解决问题——还可以使用两个门控选项:harden(PreToolUse 将阻止操作)和 soften(恢复为警告)

决定成败的规则:若偏离已由记录的处理结果(supersede/fix/acknowledge)说明原因,就不属于偏差。系统只会标记未说明原因的差距。这样,有意的演进不会触发提醒,而悄无声息地放弃决策则会被发现。

4 种分类

锚点分为 4 种,显示格式各不相同:

分类图标显示格式示例
假设🧪决策卡片(日志格式)"We'll launch English-first on HN"
约束🔒规则(通过/失败检查清单)"All writes go through remember()"
承诺🔁心跳(存活/失效)"Ship a new version every week"
唯一事实来源📍参考(稳定锚点)"MCP server runs on stdio, single SQLite"

🗺️ 地图 — linksee-memory map

漂移检测(上文)会检查单个锚点。地图将检查范围扩展到整个产品:通过 map.yaml 描述价值如何传递给用户(discover → understand → try → adopt → retain → monetize → expand),并为各部分之间的依赖关系指定类型——README、npm 列表、引导流程,以及为它们提供支持的引擎。协调器会根据实际代码检查这张地图,而 CLI 可以回答工程师真正想问的问题:

我正在修改这个文件——它在地图上的哪个位置,还有什么也必须随之调整?

1. 我在哪里?——定位一个文件(或不带参数,根据你最近的编辑推断):

$ npx -y linksee-memory map where README.md
"README.md" belongs to this Map node:

  readme  [understand]  convergence
    changes ripple to:
      must fix together (hard):  lp, docs-site
      should align (soft):       onboarding, client-configs
      fyi (may ripple):          telemetry-contract

影响范围会分级——必须一同修复、应该保持一致和供参考——这样大范围的连锁影响就不会变成一片噪声。

2. 为什么它处于这种状态?——诊断结果,并附带 file:line 证据:

$ npx -y linksee-memory map explain readme

STATUS
  declared: healthy (active)
  reality:  implemented / matches
  verdict:  declared and reality agree (verified)

EVIDENCE
  ✓ README's Tools section lists where_am_i
      README.md:424 — found "where_am_i" in section "Tools"

声明状态与实际情况判定会分别显示——例如,扫描器推翻了手动声明的 suspect,结果会显示为*“已声明为 suspect,但实际情况不支持该判断(→ 收敛)”*,而不是让人困惑地混在一起。

3. 整个项目的分流检查:npx -y linksee-memory map status——查看健康度百分比、哪些问题现在可以在代码中修复、哪些需要外部检查,以及是否有未设置到期时间的延期事项(避免“已计入”的事项悄然变成漂移垃圾场)。

工作原理

  • map.yaml(仓库根目录)是期望状态的唯一事实来源:旅程主线 × 界面/实现层 × 类型化边(must-stay-consistent-with / should-align-with / realizes)。
  • reconcile 会根据代码(signal / regex / section_contains / 文件检查)检查每个节点声明的 reality,并叠加判定结果——实际情况会覆盖手动声明的状态,并附上证据。
  • where_am_i 也是一个 MCP 工具,因此编码 Agent 可以在任务进行期间重新定位。

命令:where · affects · explain · status · next · reconcile · inspect --json · blueprint。添加 --lang ja 可显示日语标签。


🛡 重新注入防护 — 在执行操作之前强制落实决策

漂移检测(上文)是事后检查——它会在变更落地后告诉你实际情况已经偏离。重新注入防护则负责操作前的环节:在 Agent 运行可能破坏决策的工具之前,重新呈现你已锁定的决策。

它专门针对一种令人抓狂的失败情形(anthropics/claude-code#15443):"Claude 读过规则、理解了规则,却还是用了 cp。" 仅仅让规则出现在上下文中还不够——因此防护机制会作为 Claude Code 钩子,不受 Agent 意志左右地运行:

钩子事件触发条件功能
PreToolUseEdit / Write / Bash根据已接受的锚点检查待执行的操作。gate_mode:'hard' 的矛盾会被拒绝;较弱的匹配会重新注入决策作为提醒;没有匹配项 → 不执行任何操作。
SessionStartstartup / resume / compact将已锁定的决策和未解决的分支重新载入新会话,消除“土拨鼠日”式的失忆问题,避免新 Agent 重复上周的决定。

它的设计原则是故障时放行:任何解析、DB 或逻辑错误都不会显示内容,并会放行操作。唯一会阻止操作的情况,是与你亲自声明的决策明确存在 hard 矛盾。

启用

npx -y linksee-memory setup 会将此配置写入 ~/.claude/settings.json(步骤 4),因此它会在每个仓库中启用——与你现有记忆的作用范围相同。一个 SQLite 文件保存所有项目的锚点;若按仓库强制执行,就意味着声明一次决策,却不会在任何地方执行。

  • --project-guard — 仅限此仓库,即旧行为
  • --no-guard — 跳过

带有 affects glob 模式的锚点只会在匹配的路径上触发;未限定范围的锚点则依据自身的 detect_terms / violation_signal 触发。除非你明确强化了规则(resolve_drift(action:'harden')),否则绝不会阻止任何操作——其他情况都会将该决策作为上下文重新注入。

若要手动配置,可将此代码块放入 .claude/settings.json(项目根目录,或 ~/.claude/settings.json 以应用于每个仓库)——它指向全局安装的 linksee-memory-guard 可执行文件,因此无需构建:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume|compact",
        "hooks": [
          { "type": "command", "command": "npx -y linksee-memory guard", "timeout": 15 }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write|Bash",
        "hooks": [
          { "type": "command", "command": "npx -y linksee-memory guard", "timeout": 8 }
        ]
      }
    ]
  }
}

它有意按项目限定范围——守卫会强制执行此仓库的决策,你可以按项目选择启用,而不是让它在所有地方拒绝工具调用(相比之下,setup 添加的 Stop hook 是用户全局的)。使用 declare_anchor(...) 声明它应监控的内容;在某个锚点上设置 card_policy.gate_mode:'hard',即可让矛盾直接阻止操作,而不只是发出警告(软模式为默认设置,只会重新注入决策)。已过时(at_risk)、已被取代或已禁用卡片的锚点都不会拦截操作。

正在开发 linksee-memory 本身?该仓库通过一个(被 gitignore 忽略的).claude/settings.json 使用本地构建版本(node ${CLAUDE_PROJECT_DIR}/dist/bin/guard-hook.js)自用守卫,以便针对未提交的更改运行。终端用户项目应使用上文发布的 npx -y linksee-memory guard 形式。


它的作用

大多数“Agent 记忆”服务(Mem0、Letta、Zep)都会保存一份扁平的事实列表。之后,Agent 看到“文件 X 已编辑 30 次”,却完全不知道原因。而且它们都不会发现本周的工作与上周的决策相矛盾。linksee-memory 保留 WHY,并监控偏移。

它是一个包含 11 个工具的模型上下文协议(MCP)服务,为任何 AI Agent 提供结构化记忆和偏移检测:

Mem0 / Letta / ZepClaude Code 自动记忆linksee-memory
偏移检测❌❌✅ 跟踪意图 ↔ 现实的偏离
跨 Agent△(云端)❌ 仅 Claude✅ 单个 SQLite 文件
6 层 WHY 结构❌ 扁平❌ 扁平 Markdown✅ 目标 / 上下文 / 情绪 / 实现 / 注意事项 / 经验
文件差异缓存❌❌✅ 感知 AST,重新读取时节省 50-99% token
主动遗忘△❌✅ 艾宾浩斯曲线,注意事项层受保护
本地优先 / 隐私❌✅✅

四大支柱

  1. 偏移检测 — 将决策声明为锚点,随后引擎会自动检测已提交的现实何时偏离既定意图。可以把它想成“产品决策的 Datadog”——未说明的偏离会显示为偏移,而有意的演进(记录为取代 / 修正)则不会触发提示。
  2. 跨 Agent 可移植性 — 单个 SQLite 文件,路径为 ~/.linksee-memory/memory.db。Claude Code、Cursor、Windsurf、OpenAI Codex、Gemini CLI 共用同一个大脑。
  3. WHY 优先的结构化记忆 — 六个明确的层(goal / context / emotion / implementation / caveat / learning)。解决“没有目标的扁平事实记忆毫无用处”这一问题。
  4. 通过 read_smart 节省 token — 使用 sha256 + AST / 标题 / 缩进分块。重新读取时只返回差异。实测:典型 TS 文件编辑节省 86%,未更改文件的重复读取节省 99%。

🧠 6 层结构

┌─────────────────────────────────────────────────────────────┐
│ 🎯 goal           ← what the user is working toward         │
├─────────────────────────────────────────────────────────────┤
│ 🧭 context        ← why this, why now — constraints, people │
├─────────────────────────────────────────────────────────────┤
│ 💗 emotion        ← user tone signals (frustration, etc.)   │
├─────────────────────────────────────────────────────────────┤
│ 🛠  implementation ← how it was done (+ what failed)         │
├─────────────────────────────────────────────────────────────┤
│ ⚠️  caveat         ← "never do this again" · auto-protected │
├─────────────────────────────────────────────────────────────┤
│ 🌱 learning       ← patterns distilled from cold memories   │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
           Ranked recall via relevance × heat × momentum × importance
                  Returns match_reasons explaining each hit

每条记忆都带有且仅带有一个层标签。caveat 层条目不会被自动遗忘。服务器启动时,会自动将冷却且重要性较低的记忆整合为 learning 条目。


快速开始 — 一条命令

npx -y linksee-memory setup

此命令会完成以下所有操作:

  1. 将 MCP 服务注册到 Claude Code
  2. 安装 Agent 技能(教 Agent 何时回想/记忆)
  3. 配置自动捕获(将每个会话保存到本地大脑)
  4. 提议将重新注入防护接入此项目(强制执行操作前决策)

重启 Claude Code,然后像平常一样聊天。在任何提示词中加入 “Use Linksee”,即可触发记忆回想。

手动设置(如果你更喜欢逐步操作)
点击展开手动安装步骤

安装并注册:

claude mcp add -s user linksee -- npx -y linksee-memory

工具会显示为 mcp__linksee__remember、mcp__linksee__recall、mcp__linksee__read_smart。

安装技能(自动调用):

npx -y linksee-memory install-skill

将 SKILL.md 复制到 ~/.claude/skills/linksee-memory/。遇到“前に…(之前……)”“また同じエラー(又出现相同错误)”“覚えておいて(记住这件事)”等短语、新任务开始、文件编辑等情况时,Agent 会自动触发。

配置自动捕获(Stop 钩子):

添加到 ~/.claude/settings.json:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          { "type": "command", "command": "npx -y linksee-memory sync" }
        ]
      }
    ]
  }
}

每轮结束约需 100 ms。失败时不会显示提示。日志位于 ~/.linksee-memory/hook.log。

其他编辑器/CLI

Linksee Memory 是标准的 MCP 服务(stdio)。任何支持 MCP 的工具都可以连接:

Cursor

添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}

重启 Cursor。记忆工具会显示在 Agent 面板中。

Windsurf

添加到 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}
OpenAI Codex CLI
codex mcp add linksee -- npx -y linksee-memory

或者添加到 ~/.codex/config.toml:

[mcp_servers.linksee]
command = "npx"
args = ["-y", "linksee-memory"]
Gemini CLI

添加到 ~/.gemini/settings.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}
Claude Desktop

将相同的 stdio 命令添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}

配置文件:macOS 为 ~/Library/Application Support/Claude/,Windows 为 %APPDATA%\Claude\。重启 Claude Desktop。

所有编辑器共用同一个 ~/.linksee-memory/memory.db。在 Claude Code 中做出的决策,可以在 Cursor 中回想起来。在 Windsurf 中记录的注意事项,可以避免在 Codex 中重蹈覆辙。

数据库位置

默认位置:~/.linksee-memory/memory.db。使用 LINKSEE_MEMORY_DIR 环境变量覆盖。

卸载
# 1. Remove the MCP server registration
claude mcp remove linksee

# 2. Remove the hooks from settings.json (edit the file, delete the linksee entries):
#    ~/.claude/settings.json          → the Stop hook running "npx -y linksee-memory sync"
#    <project>/.claude/settings.json  → the SessionStart/PreToolUse hooks running "npx -y linksee-memory guard"

# 3. Remove the installed skill and all local memory (optional)
rm -rf ~/.claude/skills/linksee-memory
rm -rf ~/.linksee-memory   # deletes all stored memory — nothing is kept anywhere else

任何数据都不会离开你的设备,因此第 3 步会彻底擦除 Linksee 存储的所有内容。

v0.9 新增内容

功能详情
重新注入防护漂移检测中操作前的部分。Claude Code 的 PreToolUse 钩子会在 Agent 执行 Edit/Write/Bash 之前,重新呈现已接受的决策(若存在 hard 级别的矛盾,则会阻止操作);SessionStart 启动摘要会在每个新会话中重放已锁定的决策。该机制按设计采用故障开放模式。参见重新注入防护。
可发布的钩子接入配置linksee-memory-setup 现在会提议将防护钩子合并到项目的 .claude/settings.json(指向已发布的 linksee-memory-guard 二进制文件),并提供文档说明,方便复制粘贴。此前,该接入配置仅存在于 Git 忽略的内部试用配置中。

v0.8 有哪些新内容

功能详情
4 个偏差检测工具drift_status、check_decision、declare_anchor、resolve_drift——Agent 现在可以查询并处理意图 ↔ 现实之间的偏差。Agent 记忆中最大的缺口(决策会在不同会话间被遗忘)现已补上。
真相引擎状态推导逻辑(偏差/待审查/暂缓/一致)现在位于 MCP 引擎中,而不再仅限于仪表板。任何 MCP 客户端都可以查询偏差状态。
4 类实体分类体系锚点分为假设/约束/承诺/事实来源,并采用与类别相适应的显示格式。
解决方案优先级当某个锚点有多个解决方案时,以最新的解决方案为准(防止过时的确认掩盖较新的修复)。
v0.7 有哪些新内容
功能详情
统一为 3 个工具8 个工具 → 3 个:remember(创建 + 更新 + 删除)、recall(搜索 + 文件历史 + 概览)、read_smart(节省令牌的读取)。工具更少,跨大模型的一致性更好。采用 Context7 经验证有效的模式。
自动整合服务启动时自动运行整合(非阻塞,阈值为 7 天)。无需手动调用 consolidate()。
弃用迁移指南旧工具名称(forget、recall_file 等)会返回具体的迁移示例,而非无提示地失败。
“使用 Linksee Memory”触发词在任何提示词中添加“使用 Linksee Memory”,即可强制执行记忆回忆——采用与 Context7 相同的推广模式。
Claude Code 插件claude plugin add -- linksee-memory——一次安装即可提供 MCP 服务和自动调用技能。
v0.4 有哪些新内容
功能详情
一条命令完成设置npx -y linksee-memory setup——注册 MCP 服务、安装技能并配置自动捕获钩子。用一条命令取代三条。
结构化记忆 v2每条记忆都采用三轴分类(高度 × 类型 × 状态)。从会话中自动提取的内容会生成机器可扫描的 JSON,而非原始聊天记录。
精准回忆指南SKILL.md 现在会教 Agent 如何编写有效查询、何时回忆而非跳过,以及何时应在执行高风险操作前主动提示注意事项。
五大 MCP 基元工具 + 资源 + 提示词 + 采样 + 根目录 + 引导。大多数 MCP 服务只开放工具;linksee-memory 实现了全部五种基元。
## 6 个工具

两大支柱,同一界面。记忆和漂移各自只提供必要功能,不暴露其他内容。 此前有 11 个工具,导致行为因模型而异(Claude / GPT / Cursor / Codex / Gemini)——六个工具是 Agent 无需手册也能掌握的数量。

工具功能
recall从这里开始。 不传参数 → 返回会话摘要:需要关注的事项、你在地图上的位置、尚未解决的问题和重要实体。query → 搜索;path → 查看文件的编辑历史,以及每次编辑背后的用户意图;where: "<topic>" → 查看你在当前真实情况地图上的位置,以及影响范围;dream: true → 返回分诊会话(北极星、孤立提案、提炼队列、摩擦)。
remember保存 / 更新 / 删除。 content 是唯一必填字段——实体和层默认使用当前项目。添加 anchor: {},即可在一次调用中记录决策并强制执行(在 Edit/Write/Bash 前及会话开始时重新注入)。
read_smart节省 Token 的文件读取器,带 AST 差异缓存。重新读取未更改的文件约需 50 个 Token;文件已修改时则只读取更改的片段。
drift_status“当前有哪些漂移?” 真实情况地图:🔴 漂移 / 🟡 待审查 / ⚪ 暂存 / 🔵 已验证 / ⚫ 未验证,并附上各项依据。anchor_id → 深入查看一项决策。
declare_anchor记录规范性主张——检测器会根据实际情况核对的 decision / prohibition / constraint,或 proposal:你提出但用户从未回应、暂存为待审查事项的选项。
resolve_drift了结问题。 fix · supersede · acknowledge · dismiss(带上 hit_term,门禁就会停止对此触发)· harden / soften。传入 candidate_id:可将孤立提案 surface 或 dismiss。

此前的五个名称——where_am_i、check_decision、flag_proposals、dream、resolve_proposal——已合并到上述六个工具中。它们不会显示在 tools/list 中,但仍可响应调用,因此,针对旧版本编写的技能或 Agent 仍可正常工作。 设置 LINKSEE_LEGACY_TOOLS=1 可列出它们。

CLI 工具
命令用途
npx -y linksee-memory setup一键设置:为每个代码库配置 MCP 服务、技能、Stop hook 和重新注入保护机制(--project-guard 仅用于当前代码库,--no-guard 则跳过)。可幂等执行——跳过已完成的配置。
npx linksee-memoryMCP 服务(stdio)
npx -y linksee-memory syncClaude Code Stop-hook 入口
npx -y linksee-memory guard重新注入保护钩子:PreToolUse 门禁(Edit/Write/Bash)+ SessionStart 启动摘要。setup 会为每个代码库配置此钩子(参见重新注入保护机制);故障时放行。
npx -y linksee-memory import批量导入 Claude Code 会话 JSONL 历史记录
npx -y linksee-memory install-skill安装 Claude Code Skill,教会 Agent 在何时调用 recall/remember/read_smart
npx -y linksee-memory stats本地数据库摘要(实体数量 / 层分布 / 重要实体 / 编辑最多的文件)。添加 --json 可输出机器可读内容。

6 个记忆层

每个实体(人物 / 公司 / 项目 / 文件 / 概念)都可以包含六个层的记忆。从 v0.4 开始,每条记忆都采用三轴结构化格式(高度 × 类型 × 状态):

{
  "title": "freee OAuth token expires in 24h",
  "altitude": "implementation",
  "type": "outcome",
  "state": "done",
  "what": "freee OAuth token expires in 24 hours. Must refresh proactively.",
  "why": "freee uses short-lived tokens unlike most SaaS (usually 30-90 day expiry)",
  "affects": ["src/integrations/freee/auth.ts"],
  "next_action": null
}
  • caveat 记忆会自动受到保护,不会被遗忘(痛苦教训,永不丢失)。
  • 目标处于活动状态时,goal 记忆不会衰减。
  • state 跟踪生命周期:open → decided → in_progress → done / stalled / superseded。

架构

单个 SQLite 文件(better-sqlite3 + 用于 JP/EN 的 FTS5 trigram tokenizer)包含五层:

  • 第 1 层 — entities(事实:人物 / 公司 / 项目 / 概念 / 文件)
  • 第 2 层 — edges(关联、图邻接关系)
  • 第 3 层 — memories(每个实体对应的 6 层结构化含义)
  • 第 4 层 — events(用于计算热度 / 势头的时间序列日志)
  • 第 5 层 — file_snapshots + session_file_edits(差异缓存 + 对话↔文件关联)

对话↔文件关联是关键。Stop hook 捕获的每次文件编辑,都会与促成此次编辑的用户消息一同存储。因此,recall({ path: "server.ts" }) 会返回“此文件在 3 天内被编辑了 30 次,以及促使每次更改的实际用户指令”。

设计选择的原因

  • 本地优先 — 你的对话历史属于私人数据,不会离开你的设备。
  • 单个文件 — memory.db 是一个可移植的文件。备份 = 复制文件。
  • MCP stdio — 适用于所有支持 MCP 的 Agent,无需为每个宿主安装插件。
  • 复用经过验证的架构 — heat_score / momentum_score 移植自生产级销售情报代码库。基于规则,在关键路径上不依赖大模型。

路线图

  • ✅ 统一的 3 工具接口(remember / recall / read_smart)— v0.7.0
  • ✅ 服务启动时自动整合 — v0.7.0
  • ✅ Claude Code 插件(claude plugin add -- linksee-memory)
  • ✅ 五个 MCP Blocks(工具 + 资源 + 提示词 + Sampling + Roots + Elicitation)
  • ✅ Claude Code Stop hook 自动捕获
  • ✅ JP/EN trigram FTS5
  • ✅ 一条命令完成设置(npx -y linksee-memory setup)
  • ✅ 结构化记忆 v2(三轴分类:altitude × type × state)
  • ✅ 跨大模型支持:Claude Code、Cursor、Windsurf、OpenAI Codex、Gemini CLI
  • ✅ 落地页(linksee.app)
  • ✅ 漂移检测引擎 + 4 个 MCP 漂移工具 — v0.8.0
  • ✅ 4 类真相图(假设 / 约束 / 承诺 / 真实来源)— v0.8.0
  • ✅ 带决策登记可视化的仪表板
  • 🔮 Obsidian 插件(在你的库中读取真相图)
  • 🔮 通过 sqlite-vec 进行向量搜索(已在依赖项中,等待嵌入后端)
  • 🔮 跨设备云同步(Pro 版)

与 Claude Code 自动记忆功能的对比

Claude Code 内置了记忆功能,存放于 ~/.claude/projects/<path>/memory/*.md — 用于记录用户偏好的扁平 Markdown 笔记。linksee-memory 与之互补:

  • 自动记忆 = 你的剪贴簿,用来“记住我更喜欢 X”
  • linksee-memory = 结构化的跨 Agent 大脑,带有文件差异缓存和每次编辑的原因

两者可以一起使用。

安全与隐私

linksee-memory 在本地运行,旨在尽可能少地读取和发送数据。

  • 本地优先。 记忆存储在 ~/.linksee-memory/memory.db 这个 SQLite 文件中。无需账户、云服务或 API 密钥。
  • 遥测需主动选择加入,默认关闭。 setup 会询问一次;除非你同意(或设置 LINKSEE_TELEMETRY=basic),否则不会发送任何数据。即使启用,也绝不会发送你的源代码、文件内容、提示词、对话、实体/项目名称或记忆数据库——只发送匿名计数(详情)。
  • 不会自动扫描代码仓库。 linksee 会读取:你明确保存的记忆、你的 map.yaml、地图现实核查所指向的特定文件、本地 SQLite 数据库,以及——Stop 钩子触发时——你的 Claude Code 会话记录(在本地读取,以捕获发生的情况)。它不会扫描你的代码仓库、读取 .env/机密信息/node_modules,也不会自行访问你的主目录。
  • MCP 传输干净。 服务只向 stdout 写入 JSON-RPC;所有日志都写入 stderr。
  • 钩子有文档说明,且可以移除。 setup 会添加一个 Stop 钩子(会话捕获)和一个可选的守护钩子。默认情况下它们不会发起网络调用,有时间限制,采用失败放行机制(钩子出错绝不会中断你的会话),并列于卸载部分。
  • 没有 shell 注入攻击面。 子命令通过 spawn 使用数组参数和 shell: false 运行,且命令来自固定的允许列表;map.yaml 使用安全的 yaml 解析器解析(不会执行任意标签)。
  • 供应链。 采用 MIT 许可证,由单一所有者发布。npx -y linksee-memory 运行的是已发布的软件包——如果你需要确保 CI 中的结果可复现,请固定版本。

发现安全问题?请参阅 SECURITY.md。

遥测(需主动选择加入,默认关闭)

linksee-memory 提供需主动选择加入的匿名遥测,帮助我们了解哪些 MCP 服务和工作流在实际使用中确实有效。除非你明确启用,否则不会发送任何数据。 永远不会发送对话内容、文件内容、实体名称或项目路径。

启用
export LINKSEE_TELEMETRY=basic     # opt in
export LINKSEE_TELEMETRY=off       # opt out (or just unset the variable)
# `linksee-memory setup` also asks once and records your choice in
# ~/.linksee-memory/telemetry-consent (delete that file to be asked again).
实际发送的内容(第 1 级约定)

每次 Claude Code 会话结束后,Stop 钩子都会向 https://linksee-site.vercel.app/api/telemetry/linksee 发送一次 POST 请求,其中只包含以下字段:

字段示例含义
anon_idd7924ced-3879-…首次选择加入时在本地生成的随机 UUID。存储在 ~/.linksee-memory/telemetry-id 中——删除此文件即可重置。
linksee_version0.0.3软件包版本
session_turn_count120会话包含的轮次数
session_duration_sec3600会话持续时间
file_ops_edit/write/read12, 2, 40仅计数
mcp_servers["kansei-link","freee","slack"]已配置的 MCP 服务名称(来自 ~/.claude.json)。仅发送名称——绝不发送命令路径。
file_extensions{".ts":60,".md":30}所处理文件的扩展名占比分布
read_smart_*, recall_*计数工具使用计数器

绝不发送的内容:

  • ❌ 对话消息(用户或助手)
  • ❌ 文件内容
  • ❌ 实体名称、项目名称、文件路径、URL
  • ❌ 记忆层文本(目标/上下文/情绪/实现/注意事项/学习内容)
  • ❌ 身份验证令牌、API 密钥、机密信息
  • ❌ 你的 IP 地址(仅使用单向哈希进行滥用检测)
我们为何征求许可

汇总后的 MCP 使用数据有助于 KanseiLink 项目评估哪些 Agent 集成在真实开发者的使用中确实有效。如果你愿意贡献数据,只需设置 LINKSEE_TELEMETRY=basic,耗时 1 秒,就能帮助整个 MCP 生态系统改进。

完整的负载架构和验证逻辑均已开源——如果你想确切核实哪些数据会离开你的设备,请阅读 src/lib/telemetry.ts。

定价

永久免费。

linksee-memory 以本地为先,完全在你的机器上运行。无需为任何托管组件付费。SQLite 数据库位于你的主目录中;备份 = 复制文件。

无需账号、信用卡或 API 密钥。安装后即可使用。

故障排除

技能没有触发 — 我询问过去的工作时,Claude Code 没有调用 recall。
  1. 确认技能已安装:
    ls ~/.claude/skills/linksee-memory/SKILL.md
    
    如果没有,请运行 npx -y linksee-memory install-skill。
  2. 重启 Claude Code。技能会在会话启动时编入索引。
  3. 检查 MCP 是否以 linksee 为名称注册(该技能需要 mcp__linksee__* 工具名称):
    claude mcp list | grep linksee
    
    如果注册名称不同,请重新注册,或编辑 ~/.claude/skills/linksee-memory/SKILL.md 使其匹配。
Stop 钩子没有记录我的会话。
  1. 查看钩子日志:cat ~/.linksee-memory/hook.log
  2. 手动测试:
    echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync
    
  3. 确保 ~/.claude/settings.json 中的 Stop 钩子指向 npx -y linksee-memory sync(而不是旧的 -import)。
从 v0.0.5 或更早版本升级后,我的大多数回忆都标记为“Card_Navi”或我的项目目录名称。

v0.0.6+ 修复了实体检测错误,该错误会将所有记忆归入会话开始时的 cwd。若要使用正确的项目归属重新为现有历史记录编制索引,请运行:

npx -y linksee-memory import --all

导入器具有幂等性(重新插入前会清除现有会话数据)。数百个会话通常需要几分钟。之后,recall 的精准度预计会大幅提升。

recall 返回内容太多 — 上下文窗口很快就被填满。

降低 max_tokens:

recall({ query: "...", max_tokens: 800 })   // default is 2000

也可以用 entity_name 和 layer 缩小范围:

recall({ query: "...", entity_name: "my-project", layer: "caveat" })
如何重置 / 删除所有记忆?
rm -rf ~/.linksee-memory   # nuke everything; next run creates a fresh DB

也可以通过 remember({ forget: true, memory_id: <id> }) 删除单条记忆。

数据库越来越大(>100 MB)。如何缩减?

服务启动时会自动进行整合(阈值为 7 天)。系统会将较早的冷记忆聚类,并压缩为学习层摘要。注意事项层和活跃目标层始终会保留。

如果想手动强制整合,请重启 MCP 服务 — 每次启动时都会触发自动整合。

常见问题

什么是漂移检测?为什么需要它?

漂移 = 实际代码悄然偏离已做出的决策。例如:上周你决定“使用 FTS5,而不是向量搜索”,但本周一个新的 Agent 会话在不了解历史的情况下安装了 pgvector。

Linksee Memory 通过允许你将决策声明为“锚点”,并自动根据这些锚点检查已提交的代码,来跟踪这种情况。决定成败的规则是:有记录的有意演进(记录为修正/取代)不会触发告警,而未说明的差异则会被标记出来。 它就像 Datadog,不过监控的是产品决策,而不是服务器指标。

即使不使用漂移检测,你也能从 linksee-memory 中受益 — 3 个记忆工具(remember/recall/read_smart)可以独立工作。漂移工具是面向管理多个项目的团队和独立开发者的附加层。

这与 Mem0 / Letta / Zep 有何不同? 三个维度: 1. **本地优先**:这些工具需要云账户,并会将你的数据发送到它们的服务端。linksee-memory 完全在你的设备上运行——只需一个 SQLite 文件,默认不会发起网络请求。 2. **分层呈现 WHY**:它们存储的是扁平事实或知识图谱节点。linksee-memory 设有 6 个明确层级(`goal`/`context`/`emotion`/`implementation`/`caveat`/`learning`),因此检索结果包含结构化推理,而不只是数据。 3. **文件差异缓存**:`read_smart` 工具通过 AST 感知分块,在重新读取文件时可节省 86–99% 的 token。其他记忆服务都不具备此功能——它通常是 IDE 才会提供的功能。
为什么不直接使用 Claude 内置的自动记忆?

Claude Code 的自动记忆仅适用于 Claude(如果你改用 Cursor、OpenAI Codex 或 Gemini CLI,就无法提供帮助),而且它以扁平 Markdown 格式存储内容,没有结构。linksee-memory 遵循同样的本地优先原则,但还具备以下特点:

  • 可在 Claude Code、Cursor、OpenAI Codex、Gemini CLI 之间通用(共享 SQLite)
  • 结构化的 6 层格式让记忆召回过程更易理解
  • 启动时自动整合并压缩冷记忆;注意事项会受到永久保护
节省 86% 的 token 是真的吗?具体如何实现?

是的——请查看仓库中的 tools/bench-read-smart.ts。read_smart 工具:

  1. 首次读取时会对文件内容进行哈希,并返回完整内容以及分块元数据(AST/标题/缩进边界)。
  2. 重新读取时,如果 mtime+sha256 未发生变化,则返回 ~50 tokens 的“未更改”确认信息,而不是重新发送文件。
  3. 如果文件确实有编辑,则仅将更改过的分块作为完整内容返回,并将未更改的分块作为仅含元数据的引用返回。

在 Agent 循环中编辑典型的 TypeScript 文件时,这可将往返 token 开销降低约 86%。如果只是重新读取(用户返回之前读过的文件),节省幅度则超过 99%。

“本地优先”是否意味着无法在多台设备间同步?

默认情况下不会同步——SQLite 文件位于 ~/.linksee-memory/memory.db,并保留在该位置。如果你需要在多台设备间同步,可以将该目录放在 Syncthing / iCloud Drive / Dropbox / Google Drive 下——它只有一个文件,因此任何文件同步工具都能使用。(当 MCP 服务同时在两台设备上运行时,请避免同时编辑;SQLite 的 WAL 模式很适合单写入者场景,但多写入者冲突可能导致数据损坏。)

数据库变得很大时会怎样?

有两种机制:

  1. 艾宾浩斯遗忘:较冷且重要性较低的记忆会自然衰减,可由自动遗忘清理处理。caveat 层和 importance ≥ 0.9 的记忆始终受到保护。
  2. 自动整合:每次服务启动时运行(阈值为 7 天)。它会按实体将一组较冷且重要性较低的记忆压缩为单条 learning 层摘要,然后删除原始记忆。无需手动安排。

实际使用中,单人开发者重度使用 6 个月后,数据库通常会达到约 100MB。我测试过一个拥有 80K 条记忆、存续一年的数据库,其召回仍在 <10ms 内完成。

不使用 Claude Code 也能用吗?

可以——任何兼容 MCP 的客户端都能使用:

  • Claude Code:claude mcp add -s user linksee -- npx -y linksee-memory
  • Claude Desktop:添加到 claude_desktop_config.json(请参阅 LP 上的入门指南)
  • Cursor:在 Cursor 的 MCP 设置中添加 → Settings → Features → Model Context Protocol
  • OpenAI Codex:codex mcp add linksee -- npx -y linksee-memory(或者在 ~/.codex/config.toml 中添加 [mcp_servers.linksee] 配置块)
  • Gemini CLI:添加到 ~/.gemini/settings.json 的 mcpServers 部分
  • ChatGPT(网页/移动应用):消费版应用不支持 stdio MCP——需要通过 HTTPS 连接远程 MCP 服务(目前尚不可用)。
  • 自定义 Agent:MCP stdio 协议文档见 modelcontextprotocol.io
它会发送哪些遥测数据? **默认情况下:零网络调用,零遥测。**你可以选择启用可选的 1 级遥测模式,该模式会发送匿名聚合指标(工具调用次数、错误率、延迟百分位数——绝不发送记忆内容、文件路径或查询)。具体的载荷架构见[遥测部分](#telemetry-opt-in-off-by-default),你可以在选择加入前查看每一个字节。
如何确认它确实在运行?

安装后,在新的 Claude 会话中询问:“你能记住我偏好 TypeScript 而不是 JavaScript 吗?使用 Linksee Memory。” Claude 应确认它调用了 mcp__linksee__remember 并保存了这条信息。然后在另一个会话中询问:“我偏好哪些语言?使用 Linksee Memory。” 它应通过 mcp__linksee__recall 回忆这条信息,并返回偏好,同时提供说明原因的 match_reasons。

支持

更新日志

v0.11.3 — 稳健性 + MCP 规范(2026-06-16)
  • **损坏数据库恢复:**如果 ~/.linksee-memory/memory.db 无法读取,linksee 会将其保留为 memory.db.corrupt-<timestamp>,并以清晰的提示创建一个新的数据库,而不是因原始 SQLite 错误而崩溃。旧记忆仍可从备份中恢复。
  • recall 工具描述不再建议编辑系统提示词——更符合 MCP 规范。
v0.11.2 — 进一步强化冷启动(2026-06-16)
  • 全新数据库也能运行 stats,不再因 no such table 而崩溃——它会先确保架构已创建(这可能是新用户运行的第一条命令)。
  • map --help 会打印用法说明,而不是尝试导入地图。
v0.11.1 — 冷启动修复(2026-06-16)
  • 通过包名称运行任意 CLI:npx -y linksee-memory setup(以及 map、sync、guard、stats、import、install-skill)。新用户无法通过 npx 调用独立的二进制命令(linksee-memory-setup 等)——npx 解析的是包名称,而非同级二进制命令——因此一键安装会返回 404。现在主二进制命令会分发子命令;独立二进制命令仍作为别名保留。
  • 如果尚无 map.yaml,map 会正常退出并提示下一步操作(此前会输出原始堆栈跟踪——这正是初次使用时的状态)。
  • serverInfo 现在会报告真实的包版本(此前固定为旧版本字符串)。
v0.11.0 — 地图:where_am_i + linksee-memory map(2026-06-15)

**记忆是入口;产品地图是新的使用界面。**漂移检测不再局限于单个锚点,而是扩展为完整的产品地图,可通过 CLI 浏览。

  • where_am_i(第 11 个 MCP 工具)——在当前真相地图上定位当前主题或文件,并查看其影响范围。不带参数调用时,会根据近期编辑自动定位。
  • linksee-memory map CLI — where · affects · explain · status · next · reconcile · inspect --json · blueprint。map.yaml(Git 中的事实来源)描述价值如何传递给用户;协调器会使用文件:行证据,将其与你的代码进行核对。支持双语:添加 --lang ja。
  • 分级影响范围(must fix together / should align / fyi)、声明与实际情况的判定,以及用于防止已记录漂移变成无人维护内容的保护机制。
  • 采用项目专属密钥,让地图能够同时处理多个项目。
v0.8.0 — 漂移检测 MCP 工具(2026-06-08)

3 个工具 → 7 个工具。 自上线以来最大的一次更新——Agent 现在可以检测、查询并解决意图 ↔ 现实之间的漂移。

新增工具:

  • drift_status — 返回真相映射,其中包含 4 类分类和各节点的漂移状态
  • check_decision — 深入检查单个锚点:状态、边和待处理候选项
  • declare_anchor — 将决策/约束/禁止事项记录为真相映射节点(包含 v9 ProjectCoreNode 字段)
  • resolve_drift — 闭合反馈环:修复 / 替代 / 确认 / 忽略

新增引擎模块:

  • truth-engine.ts — 将状态推导逻辑从仪表板迁移到 MCP 引擎中。现在任何 MCP 客户端都可以在不使用仪表板的情况下查询漂移状态。
  • 解决优先级修复:当多个解决记录引用同一锚点时,以最新记录为准(根据 resolved_at 时间戳判断)。这可以防止过期的确认记录覆盖较新的修复记录。
  • 4 类分类:根据 decision_mode 将节点分类为 hypothesis / constraint / commitment / source_of_truth,并提供显示格式指导。

现有记忆工具没有任何不兼容变更。全部 3 个记忆工具(remember、recall、read_smart)均未改变。

v0.7.2 — 优化召回体验 + 自动检测边 + 提升分类器精度(2026-05-30)

针对 v0.7.0 / v0.7.1 的质量改进——提升 Agent 的日常使用体验,并为仪表板提供更整洁的数据:

  • recall 令牌控制:从响应中移除冗余的 content_raw(解析后的 content 已经包含相同内容——重复了 2 次),并通过贪心组装实际测量序列化后的大小,真正落实 max_tokens 限制(此前对每条记忆统一估算约 100 个令牌)。在响应中添加 approx_tokens,让 Agent 能查看预算使用情况。此前在预算为 1200 时会返回约 15,800 个令牌的同一查询,现在会控制在预算范围内。
  • recall 精度:合并近似重复的记忆——实体相同且核心文本近乎一致,例如同一条消息分别以 goal 和 learning 捕获——在结果集中只保留一条。复合权重会根据查询的具体程度进行调整:包含多个词项的查询会提高相关性权重,避免与窄范围召回无关、但已固定的记忆挤占结果。
  • 捕获去重(写入端):session-extractor 现在每个用户轮次最多生成一条记忆,优先级为 goal[first_intent] > caveat > decision > context。包含决策词(例如“決めた”/“これで進めよう”)的首个意图消息,不再同时作为 goal 和 learning 重复保存。
  • memory_edges 自动检测:此前为空的 memory_edges 表现在会在休眠模式的整合过程中填充。detectMemoryEdges() 会将较晚的 DECISION 记忆连接到同一实体中、主题相同且时间最近的较早决策(形成链,而非团簇),以便仪表板呈现 Pivot Chains。默认关系为 extends——同一主题下较晚的决策会在较早决策的基础上继续推进,但不会停用它。明确的反转标记(やめる / revert / instead of)会生成 contradicts;明确的替代标记(の代わり / replaces / deprecate)会生成 supersedes。这可以防止仍然有效的决策被悄然停用。
  • inferType / inferState 精度:闲聊式确认(“そうだね”/“ありがとう”)、粘贴的终端/git/邮件内容和元噪声不再被分类为 decision——在模式匹配前,它们会被识别为 note / open。学习层默认归类为 decision 的规则也受此防护逻辑约束。真实决策(採用 / 決めた,即使前面有确认语)仍会被识别。

无需迁移架构,也没有不兼容的 API 变更。现有行保留其存储内容;分类器改进会应用于之后的新捕获。

v0.7.1 — 审查修复(2026-05-29)

基于 Opus 4.7 对 v0.7.0 的设计审查:

  • P0 — 必填参数说明:remember 工具描述现在包含“各模式的必填参数”部分,让大模型确切了解创建、更新和删除分别需要哪些字段。
  • P0 — 迁移指南:已弃用的工具名称(forget、recall_file 等)现在会返回具体迁移示例,而非通用错误。
  • P1 — 合并 recall 的路径和查询结果:向 recall 同时提供 path 和 query 时,文件历史和记忆搜索结果会合并为单个响应。
  • P2 — 自动整合安全性:查询 consolidations 表之前,先通过 sqlite_master 检查表是否存在,避免在新数据库上出错。
v0.7.0 — 统一为 3 个工具(2026-05-29)

8 个工具 → 3 个工具。 借鉴 Context7 已验证的模式:工具越少,跨大模型的一致性越好。

重大变更:以下工具已从 MCP 工具集中移除。调用它们会返回迁移指南:

旧工具新的对应方式
forgetremember({ forget: true, memory_id: <id> })
update_memoryremember({ memory_id: <id>, content: "..." })
recall_filerecall({ path: "server.ts" })
list_entitiesrecall({})(不带参数 = 实体概览)
consolidate在服务启动时自动运行(7 天阈值)

新增统一工具:

  • remember — 在一个工具中实现创建、更新和删除。根据参数推断模式。
  • recall — 在一个工具中实现搜索、文件历史和概览。根据参数推断模式。
  • read_smart — 保持不变。

其他变更:

  • 服务启动时自动整合(非阻塞的 setTimeout、7 天阈值、sqlite_master 安全检查)
  • Claude Code Plugin bundle(claude plugin add -- linksee-memory)
  • 弃用错误中包含具体迁移示例

所有内部处理函数均予以保留——这是工具集层面的变更,而非逻辑重写。

v0.2.0 — 为英文优先的发布做好准备(2026-04-20)

为面向更广泛的受众(主要是英语用户)在 Reddit、Hacker News 和 Anthropic Discord 上发布做好准备。无破坏性 API 变更。

  • SKILL.md 双语化(自动调用技能)。linksee-memory-install-skill 会将随包提供的技能复制到 ~/.claude/skills/linksee-memory/SKILL.md;该文件此前以日语为主,现在改为英语优先,同时保留行内的日语触发短语。除了现有的日语触发短语外,英语用户现在也可以通过自然英语短语(“how did we solve this before?”、“same error again”、“remember this”)触发该技能。
  • 安装技能 CLI 输出改为双语:安装后显示的示例测试短语现同时包含英语和日语。
  • Session-extractor 英语覆盖(linksee-memory-import):扩展了决策、故障和注意事项的正则表达式模式,让英语版 Claude Code 会话日志也能正确自动标记。新增短语包括 let's go、pivot、switch to、settled on、approved、doesn't work、stuck、same error again、hit an error、debug、broke、revert。
  • 更清晰的注意事项遗忘错误提示:之前的消息称“先将重要性降至 0.9 以下,再遗忘”,容易造成误导——无论重要性如何,注意事项层级的记忆都会受到永久保护。现在的提示会正确区分层级保护和固定保护。
  • 为发布重新整理 README:新增“查看实际效果”的前后对比场景、ASCII 6 层示意图、MCP Official Registry 和 Glama 评分徽章、落地页链接,以及涵盖公开发布期间常见问题的 8 项 FAQ。
  • 内部变更:SKILL.md 现在将与 KanseiLink 技能配对使用作为英语工作流示例。

MCP 协议工具集没有代码变更;所有现有 MCP 客户端仍可照常使用。

v0.1.1 — 调整固定阈值(2026-04-19)

根据实际使用反馈,importance=0.95 的记忆虽然原本意在固定,却没有被视为固定记忆。

  • 固定阈值从 >= 1.0 降至 >= 0.9。 importance >= 0.9 的记忆现在不会被自动遗忘扫描清除,并会在 recall 和 remember 响应中显示 pinned: true。这符合自然的心理模型(“0.9 = 重要性高 = 应该在清理后保留”),无需精确设置为 1.0。
  • 所有现有的 importance >= 0.9 记忆(包括较早设置为 0.9 或 0.95 的记忆)都会自动固定,无需迁移。
  • 已更新工具描述和错误消息,以反映新的阈值。
v0.1.0 — 重大 UX 更新(2026-04-18)

经过一周的内部试用,以下是更新内容:

新工具

  • update_memory — 原子化编辑并保留 memory_id。解决了“先忘记再记忆会破坏 session_file_edits 链接”的问题。
  • list_entities — 用于初始化会话的快速“我了解哪些内容?”基础工具。支持 kind/min_memories 筛选,并返回分层细目。
  • npx -y linksee-memory stats — 本地数据库摘要 CLI。

recall 增强

  • 每条记忆新增 match_reasons 数组,例如:["content_match_fts", "heat:hot", "pinned"]。
  • 新增 score_breakdown,显示各维度的分数(相关性 / 热度 / 动量 / 重要性)。
  • 通过 offset / has_more / stopped_by 支持分页。
  • 新增 limit 参数(硬性上限,与 max_tokens 预算互为补充)。
  • 新增 band 筛选,可仅请求 hot/warm/cold/frozen 记忆。
  • 新增 mark_accessed=false,用于不应提升热度的预览查询。
  • 层别名:decisions → learning、warnings → caveat、how → implementation 等。
  • 修复:主动刷新过期的实体动量分数。在上次 remember() 后超过 1 小时才被召回的实体,不再返回过期的动量值。

remember 增强

  • 质量检查:拒绝粘贴的助手输出 / CI 日志 / 堆栈跟踪,除非设置 force=true。
  • importance=1.0 现在会隐式固定记忆(不会被自动遗忘)。
  • 接受层别名。

forget 变更

  • 固定记忆(importance=1.0)现在会与 caveat 层记忆一同保留。
  • 尝试删除受保护或不存在的记忆时,会返回明确的错误响应。
  • dry-run 现在会包含 sample_ids_to_drop。

consolidate 变更

  • dry_run: true 预览模式 — 报告集群数量和候选项,但不写入数据。

基础设施

  • 修复了新建数据库的迁移错误(此前会在 meta 表创建前查询该表)。
  • 升级至 Node 20+,以使用结构化语言功能。

所有变更均向后兼容——现有集成可继续使用。Server.ts 版本横幅现在显示 v0.1.0。

旧版本

请参阅 GitHub Releases。

许可证

MIT — Synapse Arrows PTE. LTD.

评论

支持 Markdown

第一次接触 MCP?

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

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