关于 Linksee Memory
Linksee Memory 是面向编码 Agent 的本地优先记忆 MCP 服务,通过 SQLite 在兼容客户端间共享项目决策。它还提供决策漂移检测、行动前记忆注入,以及用于追踪项目依赖的 CLI 地图。
主要功能
- 01共享本地 SQLite 记忆
- 02六层结构化记忆
- 03检测决策漂移
- 04行动前记忆重新注入防护
- 05AST 感知差异缓存
- 06项目地图与依赖追踪
适用场景
- 01跨 Agent 会话延续项目决策
- 02在支持的编码 Agent 间共享记忆
- 03发现违背既有决策的代码变更
- 04追踪项目变更影响的文件
MCP 相关
它向 MCP 客户端提供记忆和项目地图能力,包括 `where_am_i` 工具。记忆通过本地 SQLite 文件共享。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
11收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| entity_name | string | 否 | 此记忆所涉及实体的名称(创建时必填) |
| entity_kind | enum | 否 | 创建时必填person | company | project | concept | file | other |
| entity_key | string | 否 | 可选的规范键(电子邮件、域名、文件路径) |
| layer | string | 否 | 以下选一:goal / context / emotion / implementation / caveat / learning。接受别名(why→goal、warnings→caveat、decisions→learning、how→implementation)。 |
| content | string | 否 | 记忆内容(纯文本,或包含 altitude/type/state/what/why 的结构化 JSON) |
| importance | number | 否 | 0.0-1.0。设为 ≥0.9 可置顶(防止遗忘)。 |
| thread_id | string | 否 | 可选的 thread ID,用于对相关记忆分组(决策链、会话组)。 |
| force | boolean | 否 | 绕过粘贴回传质量检查。 |
| memory_id | number | 否 | 设置后将更新现有记忆,而不是创建新记忆。仅更改 content/layer/importance。 |
| forget | boolean | 否 | 设置 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——一条命令,即可在每个代码库中启用。
🌐 产品首页: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 就能通过文件和行号证据发现偏差:

上方的 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
→ 查看地图,了解完整流程。
📣 媒体报道
- Zenn:你的 Claude Code,其实完全不记得上一次会话 — 在 Zenn 上获 73 ♡,Hatena Bookmark 上有 165+ 位用户收藏,获科技博客和 YouTube Shorts 报道(2026 年 5 月)
- Zenn:你的 MCP server,其实只用了 Tools(完整实现全部 5 个区块 / v0.3.0) — 实现 MCP 全部 5 个区块的那 1% MCP 服务之一
- Zenn:你的 Claude memory,其实只留在 Claude 里(跨越 5 个 LLM 的方法) — 跨 LLM 记忆模式(2026 年 5 月 12 日)
- Zenn:在 Glama listing 上卡了 3 周的经历(5 个陷阱与解决方案) — npm + Glama 部署复盘
「能连接 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)则不会触发提醒。
工作原理
- 声明决策锚点:
declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] }) - 引擎会检测已提交代码的实际情况何时偏离这些锚点
- 状态推导会对每个锚点进行分类:
- 🔴 偏差 — 实际情况出现偏离,且没有记录相应的处理结果
- 🟡 待审查 — 一条软信号等待你的决策
- ⚪ 已搁置 — 你已确认差距,将其搁置并设定审查日期
- 🔵 一致 — 实际情况符合意图,或已记录的处理结果说明了变更原因
- 使用
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 意志左右地运行:
| 钩子事件 | 触发条件 | 功能 |
|---|---|---|
PreToolUse | Edit / Write / Bash | 根据已接受的锚点检查待执行的操作。gate_mode:'hard' 的矛盾会被拒绝;较弱的匹配会重新注入决策作为提醒;没有匹配项 → 不执行任何操作。 |
SessionStart | startup / 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 / Zep | Claude Code 自动记忆 | linksee-memory | |
|---|---|---|---|
| 偏移检测 | ❌ | ❌ | ✅ 跟踪意图 ↔ 现实的偏离 |
| 跨 Agent | △(云端) | ❌ 仅 Claude | ✅ 单个 SQLite 文件 |
| 6 层 WHY 结构 | ❌ 扁平 | ❌ 扁平 Markdown | ✅ 目标 / 上下文 / 情绪 / 实现 / 注意事项 / 经验 |
| 文件差异缓存 | ❌ | ❌ | ✅ 感知 AST,重新读取时节省 50-99% token |
| 主动遗忘 | △ | ❌ | ✅ 艾宾浩斯曲线,注意事项层受保护 |
| 本地优先 / 隐私 | ❌ | ✅ | ✅ |
四大支柱
- 偏移检测 — 将决策声明为锚点,随后引擎会自动检测已提交的现实何时偏离既定意图。可以把它想成“产品决策的 Datadog”——未说明的偏离会显示为偏移,而有意的演进(记录为取代 / 修正)则不会触发提示。
- 跨 Agent 可移植性 — 单个 SQLite 文件,路径为
~/.linksee-memory/memory.db。Claude Code、Cursor、Windsurf、OpenAI Codex、Gemini CLI 共用同一个大脑。 - WHY 优先的结构化记忆 — 六个明确的层(
goal/context/emotion/implementation/caveat/learning)。解决“没有目标的扁平事实记忆毫无用处”这一问题。 - 通过
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
此命令会完成以下所有操作:
- 将 MCP 服务注册到 Claude Code
- 安装 Agent 技能(教 Agent 何时回想/记忆)
- 配置自动捕获(将每个会话保存到本地大脑)
- 提议将重新注入防护接入此项目(强制执行操作前决策)
重启 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 实现了全部五种基元。 |
两大支柱,同一界面。记忆和漂移各自只提供必要功能,不暴露其他内容。 此前有 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-memory | MCP 服务(stdio) |
npx -y linksee-memory sync | Claude 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_id | d7924ced-3879-… | 首次选择加入时在本地生成的随机 UUID。存储在 ~/.linksee-memory/telemetry-id 中——删除此文件即可重置。 |
linksee_version | 0.0.3 | 软件包版本 |
session_turn_count | 120 | 会话包含的轮次数 |
session_duration_sec | 3600 | 会话持续时间 |
file_ops_edit/write/read | 12, 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。
- 确认技能已安装:
如果没有,请运行ls ~/.claude/skills/linksee-memory/SKILL.mdnpx -y linksee-memory install-skill。 - 重启 Claude Code。技能会在会话启动时编入索引。
- 检查 MCP 是否以
linksee为名称注册(该技能需要mcp__linksee__*工具名称):
如果注册名称不同,请重新注册,或编辑claude mcp list | grep linksee~/.claude/skills/linksee-memory/SKILL.md使其匹配。
Stop 钩子没有记录我的会话。
- 查看钩子日志:
cat ~/.linksee-memory/hook.log - 手动测试:
echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync - 确保
~/.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 工具:
- 首次读取时会对文件内容进行哈希,并返回完整内容以及分块元数据(AST/标题/缩进边界)。
- 重新读取时,如果 mtime+sha256 未发生变化,则返回
~50 tokens的“未更改”确认信息,而不是重新发送文件。 - 如果文件确实有编辑,则仅将更改过的分块作为完整内容返回,并将未更改的分块作为仅含元数据的引用返回。
在 Agent 循环中编辑典型的 TypeScript 文件时,这可将往返 token 开销降低约 86%。如果只是重新读取(用户返回之前读过的文件),节省幅度则超过 99%。
“本地优先”是否意味着无法在多台设备间同步?
默认情况下不会同步——SQLite 文件位于 ~/.linksee-memory/memory.db,并保留在该位置。如果你需要在多台设备间同步,可以将该目录放在 Syncthing / iCloud Drive / Dropbox / Google Drive 下——它只有一个文件,因此任何文件同步工具都能使用。(当 MCP 服务同时在两台设备上运行时,请避免同时编辑;SQLite 的 WAL 模式很适合单写入者场景,但多写入者冲突可能导致数据损坏。)
数据库变得很大时会怎样?
有两种机制:
- 艾宾浩斯遗忘:较冷且重要性较低的记忆会自然衰减,可由自动遗忘清理处理。
caveat层和importance ≥ 0.9的记忆始终受到保护。 - 自动整合:每次服务启动时运行(阈值为 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。
支持
- 问题与 Bug 报告:github.com/michielinksee/linksee-memory/issues
- 功能请求:创建带有
enhancement标签的问题 - 安全问题:如果存在,请参阅 SECURITY.md;也可以在 GitHub 上提交私密安全公告
- 公司:Synapse Arrows PTE. LTD.(新加坡)
更新日志
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 mapCLI —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 工具集中移除。调用它们会返回迁移指南:
| 旧工具 | 新的对应方式 |
|---|---|
forget | remember({ forget: true, memory_id: <id> }) |
update_memory | remember({ memory_id: <id>, content: "..." }) |
recall_file | recall({ path: "server.ts" }) |
list_entities | recall({})(不带参数 = 实体概览) |
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.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。