mcpField
L
link

link

本地服务
github.com/gowtham0992记忆与知识2192 天前更新

关于 link

Link 是面向多种本地 AI Agent 的记忆层,将经审核、带来源的内容存为 Markdown,并为不同 Agent 提供精简上下文。

主要功能

  1. 01可检查的 Markdown 记忆
  2. 02经审核后写入记忆
  3. 03按含义检索与搜索
  4. 04工具调用前检查规则
  5. 05检查仓库相关记忆是否过时
  6. 06会话记忆回执

适用场景

  1. 01在本地 Agent 间共享偏好
  2. 02在新会话中检索项目决策
  3. 03保存前审核待写入的记忆
  4. 04检查仓库相关记忆是否过时

MCP 相关

Link 通过 MCP 服务向 Agent 提供记忆检索。每个会话的首个 MCP 工具响应会附带有长度限制的记忆简报。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"gowtham0992-link": {
"command": "uvx",
"args": [
"link-mcp"
]
}
}
}
启动命令uvx link-mcp

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

安装包
pypilink-mcp5.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Link

Link

为 AI Agent 提供本地记忆。

Link 为 Codex、Claude、Cursor、Kiro、VS Code、Copilot、Antigravity 和 其他本地 Agent 提供相同的、有来源依据的记忆,并以 Markdown 格式存储在本地。

网站 · 工作原理 · 记忆 · 工具与命令行 · 设置 · 文档 · MCP 注册表 · PyPI · Homebrew

GitHub 星标 CI MCP 注册表 PyPI PyPI 下载量 MCP Toplist 排名

Link 演示:在 Agent 会话中提过一次的偏好会被自动捕获,经你批准后,第二天在全新的终端中即可找回——内容来自普通 Markdown 文件

快速开始

brew install gowtham0992/link/link   # or: pip install link-mcp
lnk setup                            # wires every agent you have

然后照常工作。告诉 Agent“记住我们在周二部署”, 批准一次,明天每个其他 Agent 都会在新会话中记起这件事。

lnk status                                   # is it wired up and being used?
lnk import claude-code                       # bring existing memory in
brew install --cask gowtham0992/link/linkbar # macOS menu bar app

记忆存储在可供你打开的普通 Markdown 文件中,未经你批准, 任何内容都不会成为持久记忆。

什么是 Link?

Link 是面向本地 AI Agent 的开源记忆层。原始来源会整理成可检查的 Markdown 知识库。明确提出的“记住这个”请求会成为可审核的记忆。Agent 可通过命令行、MCP、官方技能或本地查看器检索精简且有来源依据的上下文,而无需将整个知识库都倾倒进聊天窗口。

知识库是存储层。Link 提供的是持久记忆:保存在你的设备上,以普通文件形式保持可读,并可供多个 Agent 共享,而不是锁定在某个供应商的个人资料中。

lnk recall 能找到用完全不同措辞保存的记忆——按含义而非关键词匹配

用自己的话提问;Link 按含义而非关键词进行匹配。一切都在本地,全部采用普通文件。

## 工作原理

Link 为 Agent 提供五种简单的操作:

  1. 捕获 在 raw/ 中记录笔记、转录文本、文档、屏幕截图和项目上下文。
  2. 整理 在 wiki/ 下创建有来源支持的页面。
  3. 记忆 将明确的偏好、决策、事实和项目上下文保存为可供审核的记忆。
  4. 检索 通过 CLI、MCP、官方技能或本地 Web 查看器获取精简的查询数据包。
  5. 约束 执行你批准的内容:在工具调用前执行规则,依据代码仓库核查与代码相关的记忆,并生成回执,显示每个会话收到的内容。

大多数 Agent 会话都从零开始。你需要一遍遍解释自己的偏好、代码仓库决策、 项目约束,以及某件事为何重要。Link 将这些重复出现的上下文转化为 Agent 可查询的本地记忆。

痛点Link 的解决方案
Agent 会在会话之间忘记你。保存经过审核的偏好、决策、事实和项目上下文。
笔记内容私密或杂乱。将原始来源保存在本地,再整理成有来源支持的 Markdown。
上下文窗口成本高昂。返回附带来源信息和后续操作的精简查询数据包。
记忆需要可信。每个页面和记忆都可供检查、审核、归档或遗忘。
Agent 看过规则后还是会违反规则。经过审核的记忆可以包含一条规则,在工具调用执行前征求你的同意,或直接阻止调用。
代码不断变化,记忆会过时。对于提及文件、脚本、依赖项或函数的记忆,系统会依据代码仓库进行核查并标记,而不是直接当作事实。
你无法确认 Agent 收到了什么。lnk receipt 会列出每条进入会话的记忆,以及它是否完整送达。

Link 遵循 Andrej Karpathy 的 LLM Wiki 模式: 将知识保存在聊天窗口之外,让声明可供检查,并让上下文随时间不断积累。

Link 有何不同

所有其他 Agent 记忆系统都将记忆存为向量数据库中的嵌入,或由大模型提取的图谱。 Link 作出了五项这类设计无法轻易补上的架构承诺:

  1. 可读的记忆。 每条记忆都是纯 Markdown 文件——可以打开、搜索,也可以通过 git-diff 查看差异。如果 Link 明天消失,你的记忆仍属于你。
  2. 经审核后才写入。 Agent 提议,由你批准。即使是自动会话钩子,也只会捕获提议,不会直接记录事实。
  3. 记忆层不使用大模型。 内容摄取和检索具有确定性——写入路径中没有模型,因此没有模型能将虚构的事实写进你的记忆。
  4. 可证实的数据本地化。 CI 会阻止运行时执行出站网络代码;可选的语义模型则会在一次明确的设置后,以仅离线模式加载。
  5. Agent 行动时仍有效的记忆。 你审核过的记忆可以包含一条规则(ask command: git push --force、deny write: migrations/**),在 Agent 发起工具调用前进行检查,无需模型,耗时不到一毫秒。系统会根据你的代码仓库重新读取与代码相关的记忆,并在代码发生变化时标记。Agent 打开相关文件时,记忆会随之呈现;lnk compile 会将经过审核的记忆写入每个 Agent 都会读取的文件中;回执则会证明每个会话实际收到的内容。

这些主张都有数据佐证,而非空口断言——请参阅下方的基准测试。与 Mem0/OpenMemory、Zep/Graphiti 和 Letta 的具体对比见: 为什么选择 Link?

基准测试

纯文件方案,记忆层中没有大模型;与处处使用大模型的系统进行对比:

项目链接对比说明
LoCoMo 端到端问答 — 在 mem0 自有的开源测试框架下完成全部 1,540 个问题84.8%mem0 的云平台在相同评判模型下为 83.2%:他们用 GPT-5 撰写答案,而 Link 使用预算型模型(claude-haiku-4-5)。经第二个独立评判模型(Tencent Hunyuan 3)确认:85.5% vs 83.6%
LongMemEval 证据检索 — 记忆层是否将黄金证据放入上下文?(确定性评估,不使用大模型评判)500 个问题中 99.4%102 个答案失败案例中,只有 3 个是检索未命中;其余案例中证据均已检索到
记忆卫生 — 模拟数月会话流中存储的垃圾内容0%(按设计实现,由 CI 强制保障)关闭治理时,同一流水线的比例为 35.7%
记忆投毒 — 针对捕获流水线编写的 18 种提示词注入攻击(绕过防护栏、外传惯例、植入凭证、伪造审批、MemGhost 类不可信渠道写入)0 条未标记地进入收件箱;对无害指令的误报为 0(由 CI 强制保障)据我们所知,这是首个公开发布的 Agent 记忆写入路径对抗性基准测试
令牌经济性 — 通过查询路径测量真实召回数据包每次召回 1,697–3,752 个令牌(微型→大型预算);存储量扩大 64×,数据包仅扩大 1.56×;最后一次扩至 4 倍,数据包仅增长 0.3%上限取决于你设定的预算,而非已记忆的内容量;由 CI 强制保障。通过 MCP 时,会话的第一个响应还会附带一次性记忆摘要,硬性上限为 4,000 个字符(实测开销约 365 个令牌)——详见 RESULTS.md
强制执行规则 — 针对 34 次普通编码 Agent 调用,拦截 17 种禁止的工具调用,包括伪装成 shell 命令的写法(cd x && sudo …、引号、bash -c)17 次拦截 17 次,34 次中 0 次被阻止,每次判定耗时低于 0.2 ms规则只有在你审核后才会生效;Agent 无法批准、清除或绕过规则
过时检查 — 对照代码库检查记忆和指令文件(AGENTS.md、CLAUDE.md、Cursor rules 等)0 次误报:Link 自身文档中的 345 条记忆引用,以及 8 个公开代码库中的 604 条指令文件引用;所有人为植入的删除均被发现只有在 git 历史记录显示目标内容曾经存在时,才会报告引用
捆绑的 1,176 案例召回基准测试 — 确定性评估,无网络、无大模型pip 默认值(词法检索)hit@1 0.671;lnk setup 默认配置快速本地层:0.740;可选质量层 0.789,加上重排序后为 0.798一条命令即可复现;CI 会运行测试套件并检查数据集完整性,不对分数设门槛

每个数字都附有其配置、评判模型、注意事项,以及结果不理想的实验——包括 LongMemEval 端到端评估。在中立的 Hunyuan 3 仲裁模型下,我们重新评判了双方:mem0 使用 GPT-5 生成的答案得分为 91.0%,Link 使用预算型模型生成的答案得分为 80.6%。他们公布的数字经得起检验,差距反映的是答案生成模型,而非记忆层——上方的 99.4% 证据检索数据正是对此的单独衡量。 完整方法和复现步骤: benchmarks/RESULTS.md。

随身携带的记忆——并证明它确实有效

每个记忆系统都应该回答的三个问题,以及 Link 如何用机制而非承诺来作答:

“我的所有设备上都有这些记忆吗?” lnk sync 会通过由 你 控制的 git 远程仓库同步经过审核的记忆——可以是私有 GitHub 仓库,也可以是家庭实验室中的裸仓库——无需服务器,也无需账户。任何内容离开设备前都会经过机密信息扫描;冲突会变成待审核项,而不是 git 标记;私密记录绝不会同步。lnk team-sync 则基于同一套机制运行共享团队大脑。

“那时候我相信什么?” 用自然语言提问:lnk recall "where does local data live in March" 会返回 当时 真实的信息,并根据带日期的文件及其取代关系脉络还原——而不带日期提问,则会返回今天的真实信息。结果是确定性的:只用正则表达式和日历,不用模型。用自然语言精确还原历史时点:在卫生基准测试的修订事实上得分为 1.00,与使用 ISO 日期提问完全一致。

“我的 Agent 实际上在使用这些记忆吗?” 这是大多数记忆系统无法回答的关于自身的问题。Link 会在本地记录检索情况——推送给 Agent 的会话简报,以及 Agent 主动进行的回忆——而 lnk wins 会给出次数,lnk digest 则会汇报每周情况,包括 从未 被检索过的记忆。台账会记录读取了哪条记忆以及读取时间,但绝不记录你的提问;它永不同步,且可通过 LINK_USAGE=off 停用。记忆会触达每个 Agent,而不只是已接入钩子的 Agent:每个会话中的首个 MCP 工具响应都会携带简报,无论调用了哪个工具。

首次运行详解

上方的快速入门就是完整的安装流程。以下是每个步骤的作用。

brew install gowtham0992/link/link
lnk proof     # see the promise (~1 second, no setup)
lnk setup     # wire every agent you have — workspace, MCP, session hooks, one command

记忆已经散落在各种工具中了?将它们汇集起来,作为可审核的提案——不会自动接受:

lnk import claude-code   # or: cursor, codex, file --file chatgpt.txt

lnk setup 会检测你机器上已安装的 Agent——Claude Code、 Codex、Cursor、Windsurf、Zed、Kiro、Gemini CLI——并一次性完成所有配置;Link 在设计上与 Agent 无关(一个 MCP 服务、一个工作区, 每个 Agent 都读取同一份记忆)。该命令具有 幂等性:每次执行 brew upgrade 后,再运行一次即可刷新所有内容—— 工作区运行时、MCP 配置和钩子。想明确配置单个 Agent?lnk onboard --agent claude-code --write --hooks 仍会照常完成这些操作。

lnk proof 会创建一个临时工作区,写入一条经过审核的记忆,再通过 CLI、技能和 MCP 使用的同一路径将其召回——用一秒钟验证核心承诺(单一本地记忆,可供不同 Agent 重用,无需云端个人资料):

Cross-agent memory continuity works
Memory: created and reviewed: Cross-agent Link proof
Recall: found through the same bounded recall path used by CLI, skills, and MCP.
Result: proof passed

lnk onboard --agent claude-code --write --hooks 会创建 ~/link、配置 MCP 运行时并连接 Agent。将 claude-code 替换为 codex、 cursor、kiro、copilot、antigravity、windsurf、zed 或 vscode。 Claude Code、Cursor 和 Codex 支持会话钩子——会话开始时提供简报,会话结束时收集提案—— (Codex 没有会话结束事件,因此只会收到开始简报)。其他 Agent 通过 MCP 获取记忆,每个会话的第一个工具响应会提供相同的简报。去掉 --write 可在不更改任何内容的情况下预览;去掉 --agent 则只创建工作区。lnk disconnect <agent> --write 会移除 Link:只移除其 MCP 条目和钩子,不影响其他内容。

安装的命令是 lnk,因为 link 已是 POSIX/macOS 系统 实用程序。从源码检出目录运行时,请改用 python3 link.py ...。

想先查看界面、图谱和源页面?运行 lnk try && lnk serve link-demo。 Windows、源码检出、仅 MCP 和优先使用技能的路径,请参阅 前 10 分钟指南。

也可以单独为当前仓库生成初始内容,这样第一次真正召回时就不会是空的:

cd /path/to/your/project
lnk seed . ~/link
lnk query "what is this project about?" ~/link --budget small

lnk seed 会读取允许列表中的项目文件,例如 README.md、AGENTS.md、 CLAUDE.md、.cursorrules 和编辑器规则文件,拦截看起来像密钥的值, 写入有来源依据的项目页面,并重建图谱。它不会创建持久记忆;对于偏好和决策,Agent 仍应使用经过审核的记忆提案。

Homebrew formula 由公开的 gowtham0992/homebrew-link tap 维护。

打开:

http://127.0.0.1:3000
http://127.0.0.1:3000/onboard
http://127.0.0.1:3000/graph
http://127.0.0.1:3000/health

想在本地 UI 中查看相同的首次运行清单,请使用 /onboard: 就绪状态、项目上下文初始化、首条记忆、Agent 配置和入门提示词。Web 查看器仅供本地使用。它绑定到 127.0.0.1,没有用户 账户或身份验证;除非你添加自己的身份验证层,否则不应将其暴露到互联网。

体验价值循环:

lnk start link-demo --task "working on agent memory"
lnk query "why does Link help agents?" link-demo --budget small
lnk brief "working on agent memory" link-demo
lnk benchmark "agent memory" link-demo
lnk health link-demo

lnk benchmark 会同时报告性能和价值证据:缓存/搜索/查询 耗时、图谱载荷结构,以及 Link 的有界上下文包避免向 Agent 发送多少宽泛 wiki 上下文的估算值。

/health 页面会在浏览器中呈现就绪检查:验证状态、 中断的写入、记忆审核状态,以及可复制的修复命令。查看器以文档为中心——常用路径位于顶部导航中,更深入的工具位于 more 下;结构化页面还提供目录提纲和图谱相关链接。

生成的演示就是公开的证明 wiki。wiki/、 raw/ 和 link-demo/ 中生成的内容会被 git 忽略,避免意外发布个人记忆。

LinkBar — 菜单栏应用(macOS)

Link 的记忆,无处不在。LinkBar 将审核关卡放进菜单栏:使用全局调色板(⌥⌘M),即可在任意应用中回忆或记忆;会话捕获完成时收到原生通知,一键接受;Agent 写入期间可查看实时动态;浏览所有记忆文件;还可通过状态仪表板标出提及的文件已不在仓库中的记忆——所有操作都基于与 CLI 相同、经过审核的 lnk 命令。 在设置中选择工作区;默认路径为 ~/link。

LinkBar 标签页切换演示:审核收件箱显示记忆批准前将执行的规则以及上次会话的回执、记忆浏览器和设置

brew install --cask gowtham0992/link/linkbar

故意不签名(不收取 Apple 费用,不抬高价格):安装时,cask 会移除隔离标记,因此它可以像其他应用一样打开。若要从源代码构建:cd apps/LinkBar && bash Scripts/bundle.sh --install。

杀手级演示:一条记忆,两个 Agent

这就是 Link 为之打造的时刻:

  1. 在一个 Agent 中,说:

    remember that I prefer local, source-backed memory for AI agents
    
  2. 在另一个连接到同一 ~/link 工作区的 Agent 中,说:

    start with Link before we continue
    what does Link remember about local agent memory?
    
  3. 第二个 Agent 应从本地 Markdown 中回忆经过审核的记忆,而不是让你重复说明。

要以自动化方式清晰演示同一思路,请运行:

lnk proof

使用 Link 的方式

选择符合你工作方式的界面。它们都会读写同一个本地 Markdown 维基。

这些界面相互独立。lnk serve / serve.py 仅用于本地 Web 查看器。CLI 命令、官方技能和 MCP 工具会直接读取相同的 wiki/ 文件,因此即使 Web 查看器没有运行,Claude、Codex、Kiro、Cursor 或其他 Agent 也可以使用 Link。

Web UI
阅读本地维基,然后审核记忆、摄取内容、查看图谱、审计、捕获内容并查看说明。
CLI
脚本化检查就绪状态、查询数据包、简报、验证、备份、上下文节省基准测试和修复。
MCP
让 Codex、Claude、Cursor、Kiro、VS Code、Copilot 和其他 Agent 回忆记忆。

Link 本地控制台演示:主页、记忆仪表板、健康状态和图谱

本地 Web 查看器:浏览有来源依据的记忆并探索知识图谱——全部运行在 127.0.0.1,无需账户,也无需后端。

更喜欢用技能而不是 MCP?Link 随附 skills/ 下的小型、可延迟加载的 CLI 技能。它们让 Agent 无需配置 MCP,也无需运行 Web 查看器,即可直接使用 lnk health、lnk query、lnk ingest-status、lnk session-end 和 lnk remember。

skills/link-health/SKILL.md
skills/link-retrieve/SKILL.md
skills/link-ingest/SKILL.md
skills/link-memory/SKILL.md

完整指南:Link 技能。

为你的 Agent 安装

从克隆的代码库中运行一个安装程序:

bash integrations/codex/install.sh
bash integrations/kiro/install.sh
bash integrations/claude-code/install.sh
bash integrations/cursor/install.sh
bash integrations/copilot/install.sh
bash integrations/vscode/install.sh
bash integrations/antigravity/install.sh

安装程序会创建或更新 ~/link,安装或升级 link-mcp,写入轻量的 Agent 指令,并在重新安装时保留现有的 wiki 数据。如果仓库需要独立的项目记忆,请使用 --project。

在 Windows 上,请使用对应的 PowerShell 安装程序:

.\integrations\codex\install.ps1
.\integrations\kiro\install.ps1
.\integrations\claude-code\install.ps1
.\integrations\cursor\install.ps1
.\integrations\copilot\install.ps1
.\integrations\vscode\install.ps1
.\integrations\antigravity\install.ps1

然后向你的 Agent 提问:

is Link ready?
start with Link before we continue
seed this project into Link
ingest raw/notes.md into Link
remember that I prefer short release notes
query Link for the release process
what does Link remember about local personal memory?
end this session with Link memory proposals

对于命令行优先的 Agent 或 Link 技能,可直接使用相同的启动循环:

lnk seed . ~/link
lnk start ~/link --task "working on Link release"
lnk session-end session-notes.md ~/link --limit 3

如果你想为实际工作区和 Agent 一次性完成引导式设置,请使用 lnk onboard --agent AGENT。如果你的 Agent 已有指令,只需要配置 MCP 连接,请使用更底层的连接辅助工具。两者都会先预览确切的配置;想让 Link 更新 Agent 配置文件时,请添加 --write。

lnk onboard --agent codex
lnk onboard --agent codex --write
lnk connect codex ~/link
lnk connect codex ~/link --write
lnk connect kiro ~/link --write
lnk verify-mcp ~/link

对于支持会话钩子的 Agent——Claude Code、Codex 和 Cursor——添加 --hooks(lnk onboard 也适用)即可让记忆循环自动运行: 简报会在会话开始时注入,仅供提议的笔记会在会话结束时收集,因此记忆不再依赖 Agent 记得调用 Link。空会话和重复的结束事件会被跳过;待处理内容积压时,简报会提示 Agent 提议运行只读的 lnk consolidate。在 Claude Code 中,钩子还会在 shell 和 文件工具调用之前运行:在那里检查已审核记忆中的强制规则,并在读取或编辑文件时显示与该文件关联的记忆;在 Cursor 中,shell 命令检查也以同样方式运行。lnk receipt 会显示每个会话中实际收到的内容。持久记忆仍需经你批准。Codex 和 Cursor 的钩子支持是新功能(已按照其文档中的架构接入——欢迎报告问题)。

lnk connect claude-code ~/link --hooks --write
lnk connect codex ~/link --hooks --write    # session-start brief (Codex has no session-end event)
lnk connect cursor ~/link --hooks --write
lnk consolidate ~/link                      # read-only backlog plan, apply only with approval
可选:混合语义检索(仍完全在本地运行)

词法检索始终是默认方式和回退方案。释义匹配为可选功能:完成下面的两条设置命令后,搜索“我应该如何组织 pull request”就能找到关于提交风格的记忆。在此之前,检索会根据共有词语进行匹配;如果未找到结果,会告知你如何启用释义匹配。安装可选的语义扩展会添加一个轻量的本地静态嵌入模型。检索绝不会访问网络:模型仅在一次明确设置后离线加载,嵌入数据以纯 JSON 格式存储在 .link-cache/ 下,相似度计算在进程内完成,不需要向量数据库;仅由语义匹配得到的结果会带有置信度上限标签,让 Agent 在信任结果前先进行验证。

pip install "link-mcp[semantic]"          # fast tier: tiny static model, instant load
pip install "link-mcp[semantic-quality]"  # quality tier: contextual model, best recall
lnk semantic ~/link --setup   # one-time model fetch, with your approval
lnk semantic ~/link           # status: lexical only vs hybrid, active tier
python3 -m link_mcp --semantic-setup --wiki ~/link/wiki   # MCP-only installs

以实测为准,而非空口断言:在内置的 1,176 个案例基准测试中,质量档将词元重叠 hit@1 从 0.671 提高到 0.789;对于不含任何词元重叠的纯释义,在前 5 个结果中可找到一半,而词法检索只能找到 6%,每次检索耗时约 11 ms,且无需服务或向量数据库。在第三方 LoCoMo 检索测试中(涵盖 5,882 轮对话中的 1,536 个带证据标注的问题),混合检索将任意证据 hit@10 从 0.716 提高到 0.779;启用可选重排档后则提高到 0.826,hit@1 为 0.453。不使用重排器时,LoCoMo 上词法检索的前 5 个结果更强;RESULTS.md 解释了原因。完整的方法、客观的局限性和复现步骤见:benchmarks/RESULTS.md。

仅安装 MCP
python3 -m pip install --upgrade link-mcp
python3 -m link_mcp --version
{
  "mcpServers": {
    "link": {
      "command": "python3",
      "args": ["-m", "link_mcp", "--wiki", "~/link/wiki", "--surface", "slim"]
    }
  }
}

对于 Agent,推荐使用 --surface slim 这一精简 MCP 接口:提供六个直观的工具,用于检索、记忆、导入、审核、查看状态和管理操作。也可使用 --surface full 获取完整兼容接口。

在 macOS/Homebrew Python 上,如果 pip 报告 externally-managed-environment,请使用专用虚拟环境:

python3 -m venv ~/.link-mcp-venv
~/.link-mcp-venv/bin/python -m pip install --upgrade pip link-mcp

完整设置指南:MCP 指南。

Obsidian 用户可以将现有 vault 导入 raw/,供 Agent 导入内容;也可以直接将 ~/link/wiki 作为 vault 打开,以编辑 Link 页面:

lnk init ~/link
lnk import-obsidian ~/Documents/ObsidianVault ~/link

有关导入、编辑和验证流程,请参阅 Obsidian 指南。

存储模型

在底层,Link 将来源支持的知识与持久化 Agent 记忆分开:

  1. 将原始笔记、文字记录、文章和项目上下文放入 raw/。
  2. Agent 将这些来源整理为 wiki/ 下可检查的页面。
  3. 明确的“记住”请求会生成可供审核的记忆页面。
  4. 查询会从 wiki 和记忆层检索精简的 Agent 上下文。

Link 架构:原始来源转化为 wiki 知识,明确的记住请求转化为经审核的记忆,Agent 检索精简的上下文

存储模型简单明了,便于检查:

层内容
raw/原始笔记、文字记录、文章、PDF、屏幕截图和项目文件。
wiki/来源支持的页面、概念、实体、探索、比较和记忆。
Agent 接口CLI、技能、MCP 和本地查看器路径,避免将整个 wiki 全部载入上下文。

如果某个原始文件已被摄取,之后又经过编辑,lnk ingest-status 会将其标记为过时,并告知 Agent 刷新现有来源页面,而不是创建重复页面。

具有受支持架构的结构化导出可以使用确定性摄取。 规划操作为只读;应用操作会暂存完整结果、重建图谱、进行验证,并在更改在线 wiki 之前记录输出所有权:

lnk ingest raw/chezmoi-docs/export.jsonl ~/link \
  --adapter chezmoi-docs-graph-v1 \
  --exclude "Reference / Release history"

lnk ingest raw/chezmoi-docs/export.jsonl ~/link \
  --adapter chezmoi-docs-graph-v1 \
  --exclude "Reference / Release history" \
  --apply

后续运行只会更新由适配器管理的输出。手动编辑会形成冲突。 首次迁移到现有页面时必须使用 --replace-unmanaged,而退役不再列入计划的受管理页面时必须使用 --prune。 任意笔记和文章仍由 Agent 编写摄取内容,因为仅凭文件格式无法安全推断其中有用的结构。

Agent 能获得什么

Agent 通过推荐的 MCP 接口使用 Link 时,会获得六种面向模型的工具。CLI 和技能工作流通过 lnk 调用相同的核心行为。

  • status:就绪状态、架构状态、验证结果、中断的写入操作以及安全的后续操作。
  • recall:统一的读取路径,用于启动简报、可直接用于回答的查询包、wiki 搜索、图谱上下文、令牌预算和后续操作。每条检索到的记忆都带有 confidence 标签(strong、moderate、weak)和 match 字段(安装可选本地语义层时为 lexical、semantic、hybrid),让 Agent 对较弱或改述后的匹配结果向用户核实,而不是直接采信。
  • remember:只有在用户明确批准后,才写入持久化本地记忆;支持重复项/冲突检查、来源信息、审核状态、可见性、可选的强制规则(审核记忆后会对工具调用生效)、可选的 review_after 和可选的 expires_at。
  • ingest:针对原始文件、来源安全、过时摄取检测、验证和重建检查提供准确的后续步骤。
  • review:记忆收件箱、个人资料、审计、日志、解释、归档、恢复、遗忘和生命周期审核工作流;还包括 review(action="consolidate"),用于生成只读的待处理计划,只有逐项获得用户批准后才会应用。
  • admin:用于备份、迁移、验证、图谱导出、页面、捕获、重建、兼容性操作和高级更新的备用入口。

面向 Agent 的稳定工作循环见Link Memory Contract:先检查就绪状态,再进行有界检索、明确写入记忆、使用审计工具并遵循共享语义。 对于有时效性的偏好或决定,请使用 review_after。到达该日期时,这条记忆会重新出现在 Link 的审阅收件箱中,以便 Agent 可以询问用户是确认、更新、归档还是忘记,而不是依赖过时的上下文。 对于到期后应自动退出默认召回的临时上下文,请使用 expires_at;Link 会保留可供检查的 Markdown 页面,并询问用户是更新、归档还是删除它。 使用 visibility 区分记忆适用的范围与可查看对象:private 表示仅供个人使用,project 表示用于项目工作区,team 表示用户明确批准与团队共享。

对于团队交接或安全审查,lnk compliance-export --output audit.json 会写入一份经过脱敏的 JSON 数据包,其中包含就绪状态、验证结果、记忆审查状态、操作标记和近期审计日志条目。该数据包不包含原始源内容和记忆正文。

为了便于日常审计,lnk memory-log ~/link 会显示 Link 最近记住、更新、审查、归档、恢复、忘记或从原始捕获内容中接受的内容。

为了便于恢复,lnk backup ~/link 会创建本地归档,而 lnk restore-backup <archive> ~/link 会预览将要恢复的内容。传入 --confirm 后,会在可能的情况下先创建安全备份,再替换本地文件;除非明确指定 --include-raw,否则仍会排除 raw/。如果多文件写入中断,lnk operations ~/link 会显示标记和任何回滚快照;lnk operations ~/link --recover <marker> --confirm 会在你检查快照后将其恢复。

为了在本地证明价值,lnk wins ~/link 会显示可复用的记忆、经审查的记忆、来源信息、项目连续性、新鲜度防护措施和可复制的提示词,且不会跟踪用户行为。

对于由 Git 支持的团队记忆,lnk team-sync ~/link 会检查工作区是否已准备好共享经审查的 wiki/ 页面,同时默认将 raw/、缓存、备份、本地 MCP Python 标记和 wiki/log.md 保持为私有。审计日志仅保存在本地,因为它使用单机哈希链;合并多位用户的日志会造成错误的篡改警报。如果记忆收件箱尚未清空,或宽泛的 git add wiki 会包含处于启用状态且 visibility: private 的记忆,团队同步也会阻止显示“就绪”状态。

lnk team-sync ~/link --remote [email protected]:team/link-memory.git

对于队友、审阅者或其他 Agent,lnk share 会将页面、记忆、标题、别名或搜索短语解析为本地查看器 URL:

lnk share "Prefer local memory" ~/link

对于静态、只读的审阅数据包,lnk snapshot 会导出渲染后的 wiki HTML,默认不包含 raw/、捕获内容、操作标记、实时 MCP 状态或记忆页面。--include-memories 只会导出非私有记忆;仅在用于个人归档或经明确批准的审查时,才使用 --include-private-memories。如果 wiki 页面包含类似机密的值,该命令会阻止导出,除非你明确覆盖此限制。

lnk snapshot ~/link --output link-snapshot
lnk snapshot ~/link --output link-snapshot --include-memories --force
lnk snapshot ~/link --output personal-snapshot --include-memories --include-private-memories --force

Agent 约定

对于 MCP 客户端,Agent 应按以下顺序使用 Link:

  1. 使用 status 检查就绪状态和安全的后续操作。
  2. 在会话的第一个实质性轮次中,使用空查询调用一次 recall。
  3. 在广泛读取文件或要求用户重复提供持久上下文之前,调用 recall(query, budget="micro"|"small")。
  4. 在接触原始来源之前,以及编辑来源之后,调用 ingest 以进行验证和重建检查。
  5. 仅当用户明确要求 Link 记住某项内容,或批准了建议的记忆时,才使用 remember。
  6. 使用 review 处理记忆收件箱、个人资料、审计、日志、解释、归档、恢复和忘记等工作流。
  7. 使用 admin 处理备份、迁移、图谱导出、捕获、重建、兼容性操作和高级维护。

完整的 MCP 工具列表:MCP 设置。

隐私与安全

Link 本地优先:

  • 已安装的 CLI、MCP 服务、本地 Web UI 或 wiki 运行时均不包含遥测功能。
  • 不使用托管后端。
  • serve.py 或 link-mcp 不会调用外部 API。
  • 原始来源和生成的 wiki 页面默认会被 git 忽略。
  • lnk backup 会排除 raw/,除非你明确传入 --include-raw。
  • 系统会在原始来源、捕获内容和发布卫生检查中检测看起来像机密的 API 密钥、提供商令牌、JWT、注册表凭据和私钥块。lnk validate 和 lnk doctor 也会在 wiki 页面中发现看起来像机密的值时失败,确保这些内容不会通过本地 UI 提供,也不会通过 Agent 上下文返回。
  • 可选的语义召回保持本地运行:模型仅在召回时离线加载(只有显式运行 lnk semantic --setup 时才会下载一次模型),嵌入数据以普通 JSON 格式保存在 .link-cache/ 中。
  • 自动会话钩子只会存储提案性质的笔记;转录内容提取会跳过工具调用和输出,未经审核不会写入持久记忆。
  • 本地 Web 服务器绑定到 127.0.0.1,若未额外配置身份验证,不应将其暴露到互联网。

分享仓库、演示或 wiki 之前:

python3 link.py doctor
python3 link.py validate
python3 scripts/check_release_hygiene.py

更多详情:安全指南。

文档

需求前往
首次运行 Link前 10 分钟
“Link 会读取我的对话吗?”每个人都会问的三个问题
判断 Link 是否适合你为什么选择 Link?
使用本地查看器Web UI
了解 raw/wiki/memory概念
配置 MCPMCP 设置
查找命令CLI 参考
不配置 MCP 也能使用 Link官方技能
使用本地 HTTP 端点HTTP API
了解安全边界安全模型
检查规模限制并衡量 wikiLink Scale
评估 Link 是否适合小型团队团队安全审查
解决设置问题故障排除

贡献

请通过针对 main 分支的拉取请求提交贡献。对于较大型的发布工作,维护者会先在 develop 分支进行集成,然后再提交到 main。

创建 PR 之前:

python3 -m ruff check .
python3 -m pytest tests
python3 scripts/check_release_hygiene.py
python3 scripts/check_runtime_duplication.py
python3 scripts/check_tool_contract.py
git diff --check

完整的贡献者指南:贡献。

请勿在 PR 中包含个人 wiki 数据、原始来源、注册表令牌、.env 文件或本地 MCP 凭据。

如果 Link 能帮助你的 Agent 更好地记忆,请在 GitHub 上为它点星,让更多人发现它。

评论

支持 Markdown

第一次接触 MCP?

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

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