关于 link
Link 是面向多种本地 AI Agent 的记忆层,将经审核、带来源的内容存为 Markdown,并为不同 Agent 提供精简上下文。
主要功能
- 01可检查的 Markdown 记忆
- 02经审核后写入记忆
- 03按含义检索与搜索
- 04工具调用前检查规则
- 05检查仓库相关记忆是否过时
- 06会话记忆回执
适用场景
- 01在本地 Agent 间共享偏好
- 02在新会话中检索项目决策
- 03保存前审核待写入的记忆
- 04检查仓库相关记忆是否过时
MCP 相关
Link 通过 MCP 服务向 Agent 提供记忆检索。每个会话的首个 MCP 工具响应会附带有长度限制的记忆简报。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Link
为 AI Agent 提供本地记忆。
Link 为 Codex、Claude、Cursor、Kiro、VS Code、Copilot、Antigravity 和 其他本地 Agent 提供相同的、有来源依据的记忆,并以 Markdown 格式存储在本地。
网站 · 工作原理 · 记忆 · 工具与命令行 · 设置 · 文档 · MCP 注册表 · PyPI · Homebrew
快速开始
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 共享,而不是锁定在某个供应商的个人资料中。
用自己的话提问;Link 按含义而非关键词进行匹配。一切都在本地,全部采用普通文件。
## 工作原理Link 为 Agent 提供五种简单的操作:
- 捕获 在
raw/中记录笔记、转录文本、文档、屏幕截图和项目上下文。 - 整理 在
wiki/下创建有来源支持的页面。 - 记忆 将明确的偏好、决策、事实和项目上下文保存为可供审核的记忆。
- 检索 通过 CLI、MCP、官方技能或本地 Web 查看器获取精简的查询数据包。
- 约束 执行你批准的内容:在工具调用前执行规则,依据代码仓库核查与代码相关的记忆,并生成回执,显示每个会话收到的内容。
大多数 Agent 会话都从零开始。你需要一遍遍解释自己的偏好、代码仓库决策、 项目约束,以及某件事为何重要。Link 将这些重复出现的上下文转化为 Agent 可查询的本地记忆。
| 痛点 | Link 的解决方案 |
|---|---|
| Agent 会在会话之间忘记你。 | 保存经过审核的偏好、决策、事实和项目上下文。 |
| 笔记内容私密或杂乱。 | 将原始来源保存在本地,再整理成有来源支持的 Markdown。 |
| 上下文窗口成本高昂。 | 返回附带来源信息和后续操作的精简查询数据包。 |
| 记忆需要可信。 | 每个页面和记忆都可供检查、审核、归档或遗忘。 |
| Agent 看过规则后还是会违反规则。 | 经过审核的记忆可以包含一条规则,在工具调用执行前征求你的同意,或直接阻止调用。 |
| 代码不断变化,记忆会过时。 | 对于提及文件、脚本、依赖项或函数的记忆,系统会依据代码仓库进行核查并标记,而不是直接当作事实。 |
| 你无法确认 Agent 收到了什么。 | lnk receipt 会列出每条进入会话的记忆,以及它是否完整送达。 |
Link 遵循 Andrej Karpathy 的 LLM Wiki 模式: 将知识保存在聊天窗口之外,让声明可供检查,并让上下文随时间不断积累。
Link 有何不同
所有其他 Agent 记忆系统都将记忆存为向量数据库中的嵌入,或由大模型提取的图谱。 Link 作出了五项这类设计无法轻易补上的架构承诺:
- 可读的记忆。 每条记忆都是纯 Markdown 文件——可以打开、搜索,也可以通过 git-diff 查看差异。如果 Link 明天消失,你的记忆仍属于你。
- 经审核后才写入。 Agent 提议,由你批准。即使是自动会话钩子,也只会捕获提议,不会直接记录事实。
- 记忆层不使用大模型。 内容摄取和检索具有确定性——写入路径中没有模型,因此没有模型能将虚构的事实写进你的记忆。
- 可证实的数据本地化。 CI 会阻止运行时执行出站网络代码;可选的语义模型则会在一次明确的设置后,以仅离线模式加载。
- 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。
brew install --cask gowtham0992/link/linkbar
故意不签名(不收取 Apple 费用,不抬高价格):安装时,cask 会移除隔离标记,因此它可以像其他应用一样打开。若要从源代码构建:cd apps/LinkBar && bash Scripts/bundle.sh --install。
杀手级演示:一条记忆,两个 Agent
这就是 Link 为之打造的时刻:
-
在一个 Agent 中,说:
remember that I prefer local, source-backed memory for AI agents -
在另一个连接到同一
~/link工作区的 Agent 中,说:start with Link before we continue what does Link remember about local agent memory? -
第二个 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 回忆记忆。 |
本地 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 记忆分开:
- 将原始笔记、文字记录、文章和项目上下文放入
raw/。 - Agent 将这些来源整理为
wiki/下可检查的页面。 - 明确的“记住”请求会生成可供审核的记忆页面。
- 查询会从 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:
- 使用
status检查就绪状态和安全的后续操作。 - 在会话的第一个实质性轮次中,使用空查询调用一次
recall。 - 在广泛读取文件或要求用户重复提供持久上下文之前,调用
recall(query, budget="micro"|"small")。 - 在接触原始来源之前,以及编辑来源之后,调用
ingest以进行验证和重建检查。 - 仅当用户明确要求 Link 记住某项内容,或批准了建议的记忆时,才使用
remember。 - 使用
review处理记忆收件箱、个人资料、审计、日志、解释、归档、恢复和忘记等工作流。 - 使用
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 | 概念 |
| 配置 MCP | MCP 设置 |
| 查找命令 | CLI 参考 |
| 不配置 MCP 也能使用 Link | 官方技能 |
| 使用本地 HTTP 端点 | HTTP API |
| 了解安全边界 | 安全模型 |
| 检查规模限制并衡量 wiki | Link 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 上为它点星,让更多人发现它。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。