mcpField
L
link

link

ローカル
github.com/gowtham0992メモリ・ナレッジ2193 日前に更新

link について

Linkは複数のローカルAIエージェント向けのメモリレイヤーです。出典付きの知識をレビュー後にMarkdownで保存し、エージェント間で簡潔なコンテキストを共有できます。

主な機能

  1. 01確認可能なMarkdownメモリ
  2. 02レビュー後のメモリ保存
  3. 03意味に基づく検索と想起
  4. 04ツール呼び出し前のルール確認
  5. 05リポジトリ関連メモリの陳腐化確認
  6. 06セッションのメモリ受領記録

活用シーン

  1. 01ローカルエージェント間で設定を共有
  2. 02新しいセッションでプロジェクトの決定事項を検索
  3. 03保存前にメモリ案を確認
  4. 04リポジトリ関連メモリの陳腐化を確認

MCP 対応

LinkはMCPサーバーを通じてエージェントにメモリ検索を提供します。各セッションの最初の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 エージェントのためのローカルメモリ。

Link を使うと、Codex、Claude、Cursor、Kiro、VS Code、Copilot、Antigravity などのローカルエージェントが、Markdown としてローカルに保存された、出典に裏付けられた同じメモリを利用できます。

ウェブサイト · 仕組み · メモリ · ツールと CLI · セットアップ · ドキュメント · MCP Registry · PyPI · Homebrew

GitHub のスター CI MCP Registry PyPI PyPI のダウンロード数 MCP Toplist の順位

Link のデモ:エージェントとのセッションで一度伝えた好みが自動的に記録され、あなたの承認後、翌日にまったく新しいターミナルで呼び出されます。プレーンな Markdown ファイルを使います

クイックスタート

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

あとは普段どおりに作業してください。エージェントに「火曜日にデプロイすることを覚えておいて」と伝え、一度承認すれば、翌日の新しいセッションでは、ほかのすべてのエージェントもその内容を思い出します。

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 エージェント向けのオープンソースのメモリレイヤーです。元の情報は、確認可能な Markdown の Wiki になります。「これを覚えておいて」という明示的なリクエストは、確認可能なメモリになります。エージェントは CLI、MCP、公式スキル、またはローカルビューアーを通じて、出典に裏付けられたコンパクトなコンテキストを取得できます。Wiki 全体をチャットウィンドウに読み込む必要はありません。

Wiki はストレージレイヤーです。この製品が提供するのは、あなたのマシンに保存され、プレーンなファイルとして読みやすく、単一のベンダーのプロファイルに閉じ込められずに複数のエージェント間で共有できる、永続的なメモリです。

lnk recall は、まったく異なる言葉で保存されたメモリを見つけます。キーワードではなく意味に基づいて照合します

自分の言葉で質問してください。Link はキーワードではなく意味に基づいて照合します。すべてローカルに、すべてプレーンなファイルで保存されます。

## 仕組み

Link では、エージェントが次の5つのシンプルな操作を行えます。

  1. 取り込む メモ、文字起こし、ドキュメント、スクリーンショット、プロジェクトのコンテキストを raw/ に保存します。
  2. 整理する ソースに裏付けられたページを wiki/ に作成します。
  3. 記憶する 明示的な設定、決定事項、事実、プロジェクトのコンテキストを、レビュー可能なメモリとして保存します。
  4. 取得する CLI、MCP、公式スキル、ローカルのウェブビューアーを通じて、簡潔なクエリパケットを取得します。
  5. 承認した内容を保持する ツール呼び出しの前にルールを適用し、コードに関するメモリをリポジトリと照合して、各セッションに何が渡されたかをレシートで確認できます。

エージェントとのセッションは、ほとんどの場合、何もない状態から始まります。設定、リポジトリの決定事項、プロジェクトの制約、何かが重要な理由を、何度も説明し直す必要があります。Link は、繰り返されるこうしたコンテキストを、エージェントが照会できるローカルメモリに変えます。

問題Link の答え
エージェントはセッションをまたぐと、あなたのことを忘れてしまいます。レビュー済みの設定、決定事項、事実、プロジェクトのコンテキストを保存します。
メモが非公開だったり、まとまりがなかったりします。生のソースをローカルに保管し、ソースに裏付けられた Markdown に変換します。
コンテキストウィンドウはコストがかかります。出典情報と次のアクションを含む、簡潔なクエリパケットを返します。
メモリには信頼性が必要です。すべてのページとメモリを確認、レビュー、アーカイブ、または破棄できます。
エージェントはルールを読んでも、結局それを破ります。レビュー済みのメモリに、実行前に確認を求めるルールや、呼び出しをブロックするルールを設定できます。
コードの更新に伴い、メモリが古くなります。ファイル、スクリプト、依存関係、関数を参照するメモリはリポジトリと照合され、信頼するのではなく、問題の可能性があるものとしてフラグが付けられます。
エージェントに何が渡されたかを確認できません。lnk receipt ですべてのセッションに渡されたメモリと、その内容が完全な状態で届いたかどうかを一覧表示します。

Link は Andrej Karpathy の LLM Wiki パターン に従っています。知識をチャットウィンドウの外に保ち、主張を検証可能にし、時間とともにコンテキストを積み重ねていきます。

Link が他と異なる理由

他のエージェントメモリシステムは、メモリをベクトルデータベースの埋め込みとして、または LLM が抽出したグラフとして保存します。Link は、そうした設計では後付けできない5つのアーキテクチャ上の方針を定めました。

  1. 読めるメモリ。 すべてのメモリはプレーンな Markdown ファイルです。開いて、grep し、git-diff で差分を確認できます。明日 Link がなくなっても、メモリはあなたのものです。
  2. レビューを経て書き込む。 エージェントが提案し、あなたが承認します。自動セッションフックでさえ、事実ではなく提案を取り込みます。
  3. メモリ層に LLM を使わない。 取り込みと想起は決定論的です。書き込み処理にモデルがないため、事実が捏造されてメモリに書き込まれることはありません。
  4. ローカルであることを保証。 CI はランタイム内の外部ネットワークコードをブロックし、オプションのセマンティックモデルは、明示的なセットアップを一度行った後、オフライン専用で読み込まれます。
  5. エージェントの動作時にも有効なメモリ。 レビュー済みのメモリには、モデルを使わず、ミリ秒未満でエージェントのツール呼び出し前に確認されるルール(ask command: git push --force、deny write: migrations/**)を設定できます。コードに関するメモリはリポジトリと照合して再確認され、コードが更新されていればフラグが付けられます。エージェントが説明対象のファイルを開くとメモリが提示され、lnk compile はレビュー済みのメモリをすべてのエージェントがすでに読み込んでいるファイルに書き込み、レシートで各セッションに何が届いたかを証明できます。

また、主張は断言ではなく、ベンチマークで測定されています。Mem0/OpenMemory、Zep/Graphiti、Letta との具体的な比較はこちらをご覧ください。 Why Link?

ベンチマーク

メモリレイヤーに LLM を使わない通常のファイルを、あらゆる場所で LLM を使うシステムと比較して測定しています。

内容リンク比較対象
LoCoMo のエンドツーエンド QA — mem0 独自のオープンなハーネスで、全 1,540 問を評価84.8%同じ判定モデルでの mem0 のクラウドプラットフォームは 83.2% — 回答の作成には GPT-5 を使用し、Link の回答作成には予算重視のモデル(claude-haiku-4-5)を使用しています。2 つ目の独立した判定モデル(Tencent Hunyuan 3)でも確認済みです:85.5% vs 83.6%
LongMemEval のエビデンス検索 — メモリレイヤーは正解のエビデンスをコンテキストに含めたか?(決定的な評価で、LLM の判定モデルは不使用)500 問中 99.4%回答に失敗した 102 問のうち、検索ミスはわずか 3 問で、残りはエビデンスがすでに検索された状態で発生しました
メモリの衛生管理 — 数か月分のセッションの流れをシミュレーションした際に保存された不要情報0%(設計上、CI で強制)ガバナンスを無効にした同じパイプラインでは 35.7%
メモリポイズニング — キャプチャパイプラインに対する、作成者が用意した 18 件のプロンプトインジェクション攻撃(ガードレールの回避、データ持ち出しの慣習、認証情報の埋め込み、承認の偽装、MemGhost クラスの信頼できないチャネル経由の書き込み)ラベルなしで受信トレイに届くものは 0 件。無害な指示に対する誤検知は 0 件(CI で強制)私たちの知る限り、エージェントのメモリ書き込み経路に関する、公開された唯一の敵対的ベンチマークです
トークンの経済性 — クエリ経路を通して測定した実際のリコールパケットリコール 1 回あたり 1,697~3,752 トークン(マイクロ~大規模の予算);ストアが 64 倍大きくなってもパケットは 1.56 倍に増加し、最後の 4 倍増では 0.3% 増加します上限を決めるのは記憶した量ではなく、指定した予算です。CI で強制されています。MCP 経由では、セッションの 最初の 応答に一度だけメモリ概要も含まれ、最大 4,000 文字の予算(測定済みのオーバーヘッドは約 365 トークン)に収まります — RESULTS.md を参照
強制ルール — シェルの偽装(cd x && sudo …、引用符、bash -c)を含む 17 件の禁止されたツール呼び出しを、通常のコーディングエージェントによる 34 件の呼び出しに対して評価17 件中 17 件を検出、34 件中 0 件を停止。判定あたり 0.2 ms 未満ルールはレビュー後にのみ動作します。エージェントがルールを承認、解除、回避することはできません
古さのチェック — リポジトリを対象に、メモリと指示ファイル(AGENTS.md、CLAUDE.md、Cursor のルールなど)をチェック誤検知 0 件:Link 自身のドキュメント内のメモリ参照 345 件と、8 つの公開リポジトリにおける指示ファイルの参照 604 件を対象に評価し、仕込んだ削除をすべて検出しましたgit の履歴から対象が存在したことを確認できた場合にのみ、参照を報告します
同梱の 1,176 ケースのリコールベンチマーク — 決定的な評価で、ネットワークも LLM も不使用pip のデフォルト(語彙検索)の hit@1 は 0.671;lnk setup はデフォルトで高速なローカル層を用意し、0.740;オプションの品質層は 0.789、再ランキングを加えると 0.7981 つのコマンドで再現可能です。CI はテストスイートを実行し、スコアではなくデータセットの整合性を検証します

すべての数値には、設定、判定モデル、注意事項、そして 成績が及ばなかった実験が付属しています — 中立的な Hunyuan 3 の 判定者のもとで双方を再評価した、LongMemEval のエンドツーエンド評価も 含まれます。mem0 の GPT-5 による回答は 91.0%、Link の予算重視モデルに よる回答は 80.6% です。公開済みの数値は妥当であり、その差はメモリ レイヤーではなく回答モデルに起因します — これを切り分けて示すのが、 上記のエビデンス検索の行にある 99.4% です。 方法の詳細と再現手順: benchmarks/RESULTS.md。

どこへでも持ち運べるメモリ — そして、機能していることを証明できます

あらゆるメモリシステムが答えられるべき3つの質問と、Linkが約束ではなく仕組みで答える方法をご紹介します。

「すべてのマシンで使えますか?」 lnk sync は、プライベートなGitHubリポジトリやホームラボのベアリポジトリなど、自分で管理するGitリモートを通じて、確認済みのメモリを同期します。サーバーもアカウントも必要ありません。外部に送信する前にシークレットをスキャンし、競合はGitのマーカーではなく確認項目として扱われ、非公開のキャプチャは同期されません。lnk team-sync は、同じ仕組みでチーム共通のブレインを運用します。

「あの頃、何を信じていましたか?」 自然な言葉で質問してみましょう。lnk recall "where does local data live in March" は、日付付きファイルとその置き換え履歴に基づいて再構成した、当時の情報を返します。同じ質問を日付なしで行うと、今日の情報が返ります。これは決定論的な処理で、使うのは正規表現とカレンダーだけです。自然な言葉で指定した時点の正確性は、ハイジーンベンチマークの改訂済み事実で1.00を達成し、ISO形式の日付を指定した場合と同じです。

「エージェントは本当にこれを使っていますか?」 これは、ほとんどのメモリシステムが自分自身について答えられない質問です。Linkは取得履歴をローカルに記録します。エージェントに送られたセッションブリーフや、エージェントが選んで実行した再呼び出しなどです。lnk wins は件数を回答し、lnk digest は一度も取得されたことのないメモリも含めて、週ごとの状況を報告します。台帳に保存されるのは、どのメモリがいつ読み込まれたかであり、質問の内容ではありません。同期されることもなく、LINK_USAGE=off で無効にできます。また、メモリはフックされたエージェントだけでなく、すべてのエージェントに届きます。セッションで最初に返される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 は、マシンにインストールされているエージェント(Claude Code、 Codex、Cursor、Windsurf、Zed、Kiro、Gemini CLI)を検出し、すべてを一度に接続します。Link は設計上、特定のエージェントに依存しません(1 つの MCP サーバー、1 つのワークスペース、すべてのエージェントが同じメモリを読み取ります)。何度実行しても問題ありません。brew upgrade の後にもう一度実行すれば、ワークスペースのランタイム、MCP のプロビジョニング、フックなど、すべてが更新されます。エージェントを 1 つだけ明示的に接続したい場合は、lnk onboard --agent claude-code --write --hooks を実行すれば、引き続き同じ設定を行えます。

lnk proof は一時的なワークスペースを作成し、レビュー済みのメモリを 1 件書き込み、CLI、スキル、MCP と同じ経路でそれを呼び出します。これにより、核となる価値(ローカルメモリを 1 つ用意し、クラウドのプロフィールなしで異なるエージェントが再利用できること)を 1 秒で確認できます。

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 ランタイムをプロビジョニングして、エージェントを接続します。claude-code は codex、cursor、kiro、copilot、antigravity、windsurf、zed、または vscode に置き換えられます。セッションフック(セッション開始時の簡単な概要と、セッション終了時に記録される提案)に対応しているのは Claude Code、Cursor、Codex です(Codex にはセッション終了イベントがないため、開始時の概要のみが表示されます)。その他のエージェントは MCP 経由でメモリを取得し、セッション中の最初のツール応答に同じ概要が含まれます。--write を省略すると、何も変更せずにプレビューできます。--agent を省略すると、ワークスペースだけが作成されます。lnk disconnect <agent> --write を実行すると、Link の MCP エントリーとフックだけが削除され、それ以外は変更されません。

link はすでに POSIX/macOS のシステムユーティリティとして使われているため、インストールされるコマンド名は lnk です。ソースチェックアウトからは、代わりに python3 link.py ... を使用してください。

まず UI、グラフ、ソースページを見てみたいですか?lnk try && lnk serve link-demo を実行してください。Windows、ソースチェックアウト、MCP のみ、スキル優先の手順については、First 10 Minutes ガイドをご覧ください。

または、実際の最初の呼び出しで何も表示されないことがないよう、現在のリポジトリを別の手順としてシードできます。

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、エディターのルールファイルなど、許可リストにあるプロジェクトファイルを読み取ります。秘密情報らしき値をブロックし、ソースに基づくプロジェクトページを書き込み、グラフを再構築します。永続的なメモリは作成しません。設定や決定には、引き続きエージェントがレビュー済みのメモリ提案を使用する必要があります。

Homebrew フォーミュラは、公開されている 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 を使用してください。準備状況、プロジェクトコンテキストのシード、最初のメモリ、エージェントの接続、スタータープロンプトを確認できます。ウェブビューアーはローカル利用専用です。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 の範囲を絞ったパケットによって、エージェントに送信する広範な Wiki コンテキストがどれほど削減されたかの推定値が含まれます。

/health ページでは、準備状況の確認フローをブラウザー上で確認できます。検証状態、中断された書き込み、メモリのレビュー状況、コピー可能な修復コマンドが表示されます。ビューアーはドキュメントを中心に構成されています。よく使うページは上部のナビゲーションに、より詳細なツールは more の下に配置され、構造化されたページには目次のアウトラインとグラフ関連のリンクが表示されます。

生成されたデモは公開用のプルーフ Wiki です。wiki/、raw/、link-demo/ 内の生成コンテンツは Git の対象外となるため、個人のメモリが誤って公開されることはありません。

LinkBar — メニューバーアプリ(macOS)

Link のメモリーを、いつでも利用できます。LinkBar はレビューゲートをメニューバーに配置します。グローバルパレット(⌥⌘M)を使えば、どのアプリからでも記憶を呼び出したり保存したりできます。セッションのキャプチャが届くと、ワンタップで承認できるネイティブ通知が表示され、エージェントが書き込み中はライブパルスで知らせます。すべてのメモリーファイルを閲覧できるほか、リポジトリに存在しなくなったファイル名を記載したメモリーを検出するステータスダッシュボードも利用できます。これらはすべて、CLI と同じレビュー済みの lnk コマンドで実行されます。Settings でワークスペースを選択できます。デフォルトは ~/link です。

LinkBar のタブを巡るツアー:承認前にメモリーが適用するルールと直近のセッションのレシートを確認できるレビューボックス、メモリーブラウザー、設定

brew install --cask gowtham0992/link/linkbar

意図的に未署名です(Apple の手数料で価格を上げないためです)。インストール時に cask が隔離フラグを削除するので、ほかのアプリと同じように起動できます。ソースからビルドする場合は、次を実行します:cd apps/LinkBar && bash Scripts/bundle.sh --install。

目玉デモ:1つのメモリー、2つのエージェント

Link が実現するのは、まさにこの場面です。

  1. 1つ目のエージェントに、次のように伝えます:

    remember that I prefer local, source-backed memory for AI agents
    
  2. 同じ ~/link ワークスペースに接続された2つ目のエージェントに、次のように伝えます:

    start with Link before we continue
    what does Link remember about local agent memory?
    
  3. 2つ目のエージェントは、あなたに同じことを繰り返し尋ねる代わりに、レビュー済みのメモリーをローカルの Markdown から呼び出すはずです。

同じ内容を自動で試すには、次を実行します:

lnk proof

Link の使い方

自分の作業スタイルに合ったインターフェースを選んでください。どのインターフェースも、同じローカルの Markdown ウィキを読み書きします。

各インターフェースは独立しています。lnk serve / serve.py はローカルのウェブビューアー専用です。CLI コマンド、公式スキル、MCP ツールは同じ wiki/ ファイルを直接読み取るため、ウェブビューアーを起動していなくても、Claude、Codex、Kiro、Cursor などのエージェントから Link を利用できます。

ウェブ UI
ローカルウィキを読み、メモリーのレビュー、取り込み、グラフ、監査、キャプチャ、説明を利用できます。
CLI
スクリプト対応状況、クエリパケット、ブリーフ、検証、バックアップ、コンテキスト節約のベンチマーク、修復を利用できます。
MCP
Codex、Claude、Cursor、Kiro、VS Code、Copilot などのエージェントから、メモリーを呼び出せます。

Link ローカルコンソールのツアー:ホーム、メモリーダッシュボード、ヘルス、グラフ

ローカルのウェブビューアー:ソースに裏付けられたメモリーを閲覧し、ナレッジグラフを探索できます。すべて 127.0.0.1 上で動作し、アカウントもバックエンドも不要です。

MCP ではなくスキルを使いたい場合は、Link に含まれる skills/ の小さな遅延読み込み可能な CLI スキルを利用できます。これにより、MCP の設定やウェブビューアーの起動なしで、エージェントが 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 Skills。

エージェントへのインストール

クローンしたチェックアウトから、インストーラーを1つ実行します。

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 をインストールまたはアップグレードして、簡潔なエージェント向け指示を書き込みます。再インストール時も既存の 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

続いて、エージェントに次のように尋ねてください。

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

CLI 中心のエージェントや Link スキルでは、同じスタートアップループを直接使用します。

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

実際のワークスペースとエージェントをまとめてガイド付きでセットアップする場合は、lnk onboard --agent AGENT を使用してください。エージェントにすでに指示があり、MCP の接続設定だけが必要な場合は、より低レベルの接続ヘルパーを使用してください。どちらもまず正確な設定内容をプレビューします。Link にエージェントの設定ファイルを更新させる場合は、--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

セッションフックに対応するエージェント(Claude Code、Codex、Cursor)では、--hooks(lnk onboard でも使用できます)を追加すると、メモリループが自動化されます。ブリーフはセッション開始時に注入され、提案のみのメモはセッション終了時に記録されるため、エージェントが Link の呼び出しを覚えている必要はありません。空のセッションと重複する終了イベントはスキップされます。バックログが増えると、ブリーフはエージェントに読み取り専用の lnk consolidate を実行するよう促します。Claude Code では、シェルツールとファイルツールの呼び出し前にもフックが実行され、その時点でレビュー済みメモリの強制ルールが確認され、読み取りまたは編集するファイルに関連付けられたメモリが提示されます。Cursor でも、シェルコマンドのチェックが同様に実行されます。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
オプション:ハイブリッドなセマンティック検索(完全ローカルのまま)

語句検索が常にデフォルトであり、フォールバックとしても使われます。言い換えの照合はオプトインです。以下の2つのセットアップコマンドを実行すると、「プルリクエストをどのように構成すべきか」と尋ねた際に、コミットスタイルについて保存されたメモリが見つかります。それまでは、共通する語句に基づいて検索され、見つからなかった場合は言い換えの照合を有効にする方法が案内されます。オプションのセマンティック機能をインストールすると、小型のローカル静的埋め込みモデルが追加されます。検索でネットワークにアクセスすることはありません。明示的なセットアップを一度行った後、モデルはオフラインのみで読み込まれ、埋め込みは .link-cache/ 内のプレーンな JSON に保存されます。類似度の計算はベクトルデータベースを使わずにプロセス内で実行され、セマンティック検索のみで見つかった結果には上限付きの信頼度ラベルが付与されるため、エージェントは信頼する前に確認できます。

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ミリ秒で実行されます。サードパーティの 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"]
    }
  }
}

--surface slim は、エージェントに推奨される MCP サーフェスです。検索、記憶、取り込み、レビュー、ステータス、管理用の緊急手段という、分かりやすい6つのツールを提供します。完全な互換サーフェスも引き続き --surface full で利用できます。

macOS/Homebrew の Python で pip が externally-managed-environment を報告する場合は、専用の venv を使用してください。

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

詳しいセットアップについては、MCP ガイドを参照してください。

Obsidian ユーザーは、既存の vault を raw/ にインポートしてエージェントによる取り込みに使用するか、~/link/wiki を vault として直接開き、Link ページを編集できます。

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

インポート、編集、検証の手順については、Obsidian ガイドを参照してください。

ストレージモデル

内部では、Link はソースに基づくナレッジと、永続的なエージェントメモリを分けています。

  1. 生のメモ、文字起こし、記事、プロジェクトのコンテキストを raw/ に入れます。
  2. エージェントはこれらのソースを、wiki/ 内の確認可能なページにまとめます。
  3. 明示的な「記憶して」というリクエストは、レビュー可能なメモリページになります。
  4. クエリは、Wiki とメモリレイヤーの両方から、エージェント向けの簡潔なコンテキストを取得します。

Link のアーキテクチャ:生のソースから Wiki のナレッジが作られ、明示的に記憶された内容はレビュー済みメモリになり、エージェントは簡潔なコンテキストを取得します

ストレージモデルはシンプルで、内容を確認できます。

レイヤー内容
raw/元のメモ、文字起こし、記事、PDF、スクリーンショット、プロジェクトファイル。
wiki/ソースに基づくページ、概念、エンティティ、調査、比較、メモリ。
エージェントインターフェースWiki 全体をコンテキストに詰め込まずに済む、CLI、スキル、MCP、ローカルビューアーの各経路。

取り込み済みの raw ファイルが後から編集されると、lnk ingest-status はそのファイルを古くなったものとして示し、重複を作成する代わりに、既存のソースページを更新するようエージェントに伝えます。

対応するスキーマを持つ構造化エクスポートでは、決定論的な取り込みを利用できます。計画の作成は読み取り専用です。適用時には、結果全体をステージングし、グラフを再構築して検証し、出力の所有権を記録してから、稼働中の 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 が必要です。任意のメモや記事は、ファイル形式だけから有用な構造を安全に推測できないため、引き続きエージェントが作成する取り込み経路を利用します。

エージェントが利用できる機能

エージェントが推奨される MCP インターフェースを通じて Link を利用すると、モデル向けの 6 つのツールを使用できます。CLI とスキルのワークフローは、lnk を通じて同じコア機能を呼び出します。

  • status:準備状況、スキーマの状態、検証、中断された書き込み、安全な次のアクションを確認します。
  • recall:起動時の概要、回答に使えるクエリパケット、Wiki 検索、グラフのコンテキスト、トークン予算、フォローアップアクションをまとめた、唯一の読み取り経路です。取得した各メモリには confidence ラベル(strong、moderate、weak)と match フィールド(オプションのローカルセマンティック層がインストールされている場合は lexical、semantic、hybrid)が付与されます。そのためエージェントは、信頼度の低い一致や言い換えによる一致を鵜呑みにせず、ユーザーに確認できます。
  • remember:ユーザーの明示的な承認を得た場合に限り、永続的なローカルメモリを保存します。重複・競合の確認、出典情報、レビュー状態、可視性、メモリのレビュー後にツール呼び出しに適用される任意の強制ルール、任意の review_after、任意の expires_at に対応します。
  • ingest:raw ファイル、ソースの安全性、古くなった取り込みの検出、検証、再構築チェックに関する、正確な次のステップを提示します。
  • review:メモリの受信箱、プロフィール、監査、ログ、説明、アーカイブ、復元、忘却、ライフサイクルレビューの各ワークフローに対応します。また、review(action="consolidate") は読み取り専用のバックログ計画を作成し、個々のアクションについてユーザーの承認を得た場合にのみ適用します。
  • admin:バックアップ、移行、検証、グラフのエクスポート、ページ、キャプチャ、再構築、互換性アクション、高度な更新のための、最後の手段となるツールです。

エージェント向けの安定した利用手順は、Link Memory Contract に記載されています。まず準備状況を確認し、範囲を限定して情報を取得し、明示的なメモリ書き込みを行い、監査ツールと共有のセマンティクスを利用します。 時間に左右される好みや決定には review_after を使用します。その日付になると、メモリーが Link のレビュー受信トレイに再表示され、エージェントは古くなったコンテキストをそのまま信頼するのではなく、ユーザーに確認、更新、アーカイブ、または削除を依頼できます。日付以降、デフォルトの想起対象から自動的に外す一時的なコンテキストには 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 はデフォルトで非公開のままです。監査ログは単一マシンのハッシュチェーンを使用するため、ローカルに保存されます。複数ユーザーのログをマージすると、改ざんに関する誤警告が発生するためです。また、メモリー受信トレイが空でない場合や、アクティブな visibility: private メモリーが広範な git add wiki に含まれる場合、チーム同期ではステータスが「準備完了」になりません。

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

チームメイト、レビュー担当者、または別のエージェントにページを共有するには、lnk share でページ、メモリー、タイトル、別名、または検索フレーズをローカルのビューアー URL に解決します。

lnk share "Prefer local memory" ~/link

静的な読み取り専用のレビューパケットには、lnk snapshot を実行すると、デフォルトで raw/、キャプチャ、操作マーカー、ライブ MCP の状態、メモリーページを含めずに、レンダリング済みの Wiki HTML をエクスポートします。--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

エージェント契約

MCP クライアントでは、エージェントは次の順序で 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 は、--include-raw を明示的に指定しない限り、raw/ を除外します。
  • API キー、プロバイダートークン、JWT、レジストリ認証情報、秘密鍵ブロックなど、シークレットと思われる情報を、生のソース、キャプチャ、リリース前のチェックで検出します。lnk validate と lnk doctor も、ローカル UI 経由で配信されたり、エージェントのコンテキストを通じて返されたりする前に、Wiki ページ内でシークレットと思われる値が見つかると失敗します。
  • オプションのセマンティック検索もローカルで動作します。モデルは検索時にオフライン専用で読み込まれ(モデルを一度だけ取得するのは、明示的に実行した lnk semantic --setup の場合のみです)、埋め込みは .link-cache/ 内のプレーンな JSON に保存されます。
  • 自動セッションフックが保存するのは提案のみのメモです。トランスクリプトの抽出ではツールの呼び出しと出力をスキップし、レビューなしに永続的なメモリが書き込まれることはありません。
  • ローカル Web サーバーは 127.0.0.1 にバインドされます。追加の認証なしでインターネットに公開することは想定されていません。

リポジトリ、デモ、または Wiki を共有する前に:

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

詳しくは、セキュリティガイドをご覧ください。

ドキュメント

必要なこと参照先
Link を初めて使う最初の10分
「Link は会話を読み取りますか?」誰もが尋ねる3つの質問
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

コントリビューションの詳細なガイドは、コントリビューションをご覧ください。

個人の Wiki データ、生のソース、レジストリトークン、.env ファイル、ローカルの MCP 認証情報を PR に含めないでください。

Link がエージェントの記憶力向上に役立ったら、GitHub でスターを付けてください。より多くの人に見つけてもらえます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。