mcpField
L
Linksee Memory

Linksee Memory

ローカル
github.com/michielinkseeメモリ・ナレッジ157 週間前に更新

Linksee Memory について

Linksee Memoryは、コーディングエージェント向けのローカル優先型メモリMCPサーバーです。SQLiteでプロジェクトの決定事項を対応クライアント間で共有し、ドリフト検出、行動前の記憶再注入、依存関係を追跡するCLIマップを備えています。

主な機能

  1. 01ローカルSQLiteメモリの共有
  2. 026層構造のメモリ
  3. 03決定事項のドリフト検出
  4. 04行動前のメモリ再注入ガード
  5. 05AST対応の差分キャッシュ
  6. 06プロジェクトマップと依存追跡

活用シーン

  1. 01エージェントのセッション間で決定事項を引き継ぐ
  2. 02対応するコーディングエージェント間で記憶を共有
  3. 03決定事項に反するコード変更を検出
  4. 04変更の影響を受けるファイルを追跡

MCP 対応

`where_am_i`ツールを含む、メモリとプロジェクトマップ機能をMCPクライアントに提供します。メモリはローカルのSQLiteファイルを介して共有されます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"linksee-memory": {
"command": "npx",
"args": [
"-y",
"linksee-memory"
]
}
}
}
起動コマンドnpx -y linksee-memory

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmlinksee-memory0.15.2

ツール

11

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
entity_namestringいいえこのメモリの対象となるエンティティ名(作成時に必須)
entity_kindenumいいえ作成時に必須person | company | project | concept | file | other
entity_keystringいいえ任意の正規キー(メールアドレス、ドメイン、ファイルパス)
layerstringいいえ次のいずれか:goal / context / emotion / implementation / caveat / learning。エイリアスも使用できます(why→goal、warnings→caveat、decisions→learning、how→implementation)。
contentstringいいえ記憶内容(プレーンテキスト、または altitude/type/state/what/why を含む構造化 JSON)
importancenumberいいえ0.0-1.0。≥0.9 に設定するとピン留めされます(忘却を防止)。
thread_idstringいいえ関連する記憶をグループ化するための任意の thread ID(意思決定チェーン、セッショングループ)。
forcebooleanいいえ貼り戻し品質チェックを回避します。
memory_idnumberいいえ設定すると、新規作成ではなく既存の記憶を更新します。変更されるのは content/layer/importance のみです。
forgetbooleanいいえtrue + memory_id を設定すると記憶を削除します。caveat レイヤーとピン留めされた記憶は削除できません。

詳細

linksee-memory

Claude Code は新しいセッションを開始するたびにすべて忘れてしまいます。次の担当者は、さらに何も知りません。

Linksee Memory を使えば、理由も添えてプロジェクトを引き継げます。次のセッションにも、Cursor や Codex にも、あなたの後任にも。 決定事項を一度記録すると(remember({ content, anchor: {} }))、エージェントが作業する前に再び提示されます。セッション開始時と、それに関わる Edit / Write / Bash の実行前に再注入されます。記録を更新して考えが変わったことを示せば、しつこく通知されなくなります。そのまま残しておけば、次のエージェントが先週の失敗を繰り返すのを防げます。

裏側では、並行して進めているすべてのプロジェクトのドリフト検出を行います。気づかないうちに目標から外れたもの(🔴)、確認済みで問題のないもの(🔵)、まだ誰も確認していないもの(⚫)を把握できます。ローカルの SQLite ファイルを、Claude Code、Cursor、Windsurf、OpenAI Codex、Gemini CLI がすべて読み取ります。マシンの外にデータが出ることはありません。

npx -y linksee-memory setup — 1 つのコマンドで、すべてのリポジトリで有効になります。

npm license mcp-registry glama-score

🌐 ランディングページ: linksee.app(Claude Desktop / Cursor / Claude Code / OpenAI Codex / Gemini CLI の開発者以外向けの導入方法も掲載) 📖 ドキュメント: docs.linksee.app — 製品マップとドリフト、インストール、全 11 種類のツールに関する詳細なリファレンス

Questions this answers

These are the questions people actually type — measured, verbatim (2026-09-04). If yours is here, this is the answer.

Claude Code forgets everything when I start a new session. How do I make it remember decisions across sessions?
Run npx -y linksee-memory setup. Every new session opens with recall() — a brief of what needs attention, where you are, what's unresolved — and your locked decisions are re-injected before the agent acts. Nothing to re-explain.

Claude Codeがセッションをまたぐと過去の経緯を忘れてしまいます。記憶を持たせる方法を教えてください。
npx -y linksee-memory setup の一回で入ります。新しいセッションは recall() の brief(注意すべきこと・いまどこか・未解決)から始まり、固定した決定は行動の直前に再注入されます。説明し直す必要はありません。

What is the best MCP server for persistent memory across AI coding agents?
Honest answer: if "remember across sessions" is all you need, a CLAUDE.md is enough — we measured it. Linksee is for the three moments it isn't: right before a mistake, when you change your mind, and when you run many projects and need to see which one drifted.

AIコーディングエージェント用の記憶MCPサーバーでおすすめはありますか?
正直に言うと、「セッションを跨いで覚える」だけなら CLAUDE.md で足ります(実測しました)。Linksee が要るのは、間違いかけたとき・方針を変えたとき・並行案件のどれが外れたかを知りたいとき、の3場面です。

I want one shared memory between Claude Code, Cursor, and OpenAI Codex. What tools exist for that?
One SQLite file. Claude Code, Cursor, Windsurf, OpenAI Codex and Gemini CLI all read and write the same memory — a decision made in one shows up in the others.

Claude CodeとCursorとCodexで同じ記憶を共有したいのですが、どうすればいいですか?
SQLite ファイル1つを全員で読みます。Claude Code / Cursor / Windsurf / Codex / Gemini CLI のどこで決めた決定も、他のエージェントの行動の直前に出てきます。

My AI agent keeps re-implementing things we already decided against. How can I detect that a codebase has drifted from past decisions?
Declare the decision (remember({ content, anchor: { violation_signal: [...] } })). The guard then warns — or blocks, if you hardened it — the moment an edit contradicts it, and drift_status shows every decision that reality has quietly left.

過去に決めた設計方針とコードがずれていないかを検出できるツールはありますか?
決定を宣言しておくと(remember({ content, anchor: {...} }))、それに反する編集の直前に警告(hardened なら拒否)が出ます。drift_status は「宣言と現実がずれた決定」を証拠つきで一覧します。

Is there a local-first, self-hosted alternative to Mem0 for agent memory?
Yes. No account, no API key, no cloud — one local file, MIT licensed. npx -y linksee-memory setup and it's on.

Mem0 vs Zep vs Letta for a coding agent's long-term memory — which should I pick?
We installed them and ran one scenario across all of them. Storing and recalling a decision: everyone passes. The difference appears before a mistake and when you change your mind — Linksee is built for those two moments; the others leave them to you.

How do I stop Claude Code from repeating the same mistake it made last week?
Record it as a caveat (remember({ content, layer: 'caveat' })). Caveats are protected from forgetting and come back when the same ground is touched again — and if you anchor it, the guard stops the repeat before it lands.

開発の意思決定履歴をMCPサーバーで残しておく定番のやり方はありますか?
remember({ content, anchor: {} }) の1回で、記録と強制が同時に入ります。drift_status がその台帳で、各決定が いま守られているか(🔵)・ずれているか(🔴)・誰も確かめていないか(⚫)を示します。

🪄 Three spells to remember

Say thisWhat happens
"use linksee"Recalls relevant memories before acting
"linksee this"Saves the decision / lesson right now
"what's drifting?"Reconciles reality against your locked decisions

Make it automatic: add "Use Linksee Memory" to your system prompt / CLAUDE.md.

🗺️ Not just memory — a product map

Memory is the entry point. Tie it to a map.yaml of how your product fits together, and the linksee-memory map CLI catches drift with file:line evidence:

linksee-memory-map catching doc/code drift in 30 seconds

The 30-second demo above: the README says --export. The code doesn't. Linksee catches it — and shows what else a change would touch.

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

→ see The Map for the full flow.

📣 As featured on

「Cordex/Cursor/Code/Gemini 全部につなげられるから、 横断的にできてる MCP ってところがこれのすごいところ」 — Hatena Bookmark, May 2026 (165+ users)


🎬 See it in action

Drift, caught. Decisions don't survive session boundaries — but their consequences do. Ask any session:

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.

The memory underneath. Drift detection only works because the why survives the session boundary:

Without linksee-memory — Monday morning, new Claude session:

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]

With linksee-memory — Same question, different outcome:

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.

That single caveat memory is what separates "flat fact storage" from "the agent actually remembers the WHY". linksee-memory stores it across six explicit layers so retrieval stays explainable.


🔍 Drift Detection — "Intent Datadog"

Most teams make decisions, then forget them. The agent from last week decided "we'll use FTS5 instead of vector search" — but this week a new session installs pgvector without knowing why that was rejected. That's drift. Not a bug. Not malice. Just forgotten context.

Memory tools remember what you did. Nothing notices when you drift from what you decided — that's the layer Linksee Memory adds. Think "Datadog for product decisions": unaccounted divergences surface as drift, intentional evolution (recorded as supersede/fix) stays quiet.

How it works
  1. Declare decisions as anchors: declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] })
  2. The engine detects when committed code reality diverges from these anchors
  3. State derivation classifies each anchor:
    • 🔴 Drift — reality diverges with no recorded resolution
    • 🟡 Review — a soft signal awaits your decision
    • ⚪ Held — you acknowledged the gap, parked it with a review date
    • 🔵 Aligned — reality matches intent, or a recorded resolution explains the change
  4. Resolve with fix, supersede, acknowledge, or dismiss — plus two gates: harden (PreToolUse will block) and soften (back to a warning)

The make-or-break rule: a divergence accounted for by a recorded resolution (supersede/fix/acknowledge) is NOT drift. Only unaccounted gaps are flagged. This means intentional evolution stays quiet while silent abandonment gets caught.

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

ドリフト検出(上記)は個々のアンカーを確認します。マップは対象を製品全体に広げます。ユーザーに価値が届くまでの流れ(discover → understand → try → adopt → retain → monetize → expand)と、その各要素(README、npm の掲載情報、オンボーディング、それらを支えるエンジン)間の型付き依存関係を記述した map.yaml を使います。照合ツールはこのマップを実際のコードと照合します。また、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

影響範囲は重要度別に分類されます。must fix together(同時に修正必須)、should align(整合させるべき)、fyi(参考情報)に分かれるため、影響が広範囲に及んでも、すべてが同じ重要度の情報として扱われることはありません。

2. なぜこの状態なのかを確認する — ファイルと行番号の根拠を添えた診断を確認します。

$ 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 は、各ノードで宣言された reality をコード(signal / regex / section_contains /ファイルチェック)と照合し、判定を重ねて表示します。手動で宣言した内容よりも実態が優先され、根拠も示されます。
  • where_am_i はMCP ツールでもあるため、コーディングエージェントはタスクの途中で現在地を再確認できます。

コマンド:where · affects · explain · status · next · reconcile · inspect --json · blueprint。日本語のラベルを表示するには --lang ja を追加します。


🛡 再注入ガード — アクションの前に決定を徹底する

ドリフト検出(上記)は事後的なものです。変更が反映された後に実態が乖離したことを知らせます。再注入ガードはそのアクション前の仕組みです。エージェントが決定を破るツールを実行する前に、ロックした決定を再提示します。

この仕組みは、特定の厄介な失敗パターンを防ぐためにあります(anthropics/claude-code#15443)。*「Claude はルールを読み、理解したのに、それでも cp を使った」*というものです。ルールをコンテキストに含めるだけでは不十分です。そのため、このガードは Claude Code のフックとして、エージェントの意思とは無関係に実行されます。

フックイベント発生条件動作
PreToolUseEdit / Write / Bash実行待ちのアクションを、承認済みのアンカーと照合します。gate_mode:'hard' の矛盾は拒否され、より緩やかな一致の場合は決定をリマインダーとして再注入されます。一致しない場合は何も起こりません。
SessionStartstartup / resume / compactロックした決定と未解決の分岐を新しいセッションに再適用します。新しいエージェントが先週の判断を繰り返す「毎日が同じ日のような」健忘を防ぎます。

これは設計上、フェイルオープンです。解析/DB/ロジックでエラーが発生しても何も表示されず、アクションは続行されます。ブロックされるのは、あなたが宣言した決定に明示的な hard の矛盾がある場合だけです。

有効にする

npx -y linksee-memory setup を実行すると、~/.claude/settings.json(ステップ 4)に設定されるため、すべてのリポジトリで有効になります。メモリが保存されるのと同じスコープです。1 つの SQLite ファイルにすべてのプロジェクトのアンカーが保存されます。リポジトリごとに適用する方式では、決定を一度宣言しても、どこにも適用されませんでした。

  • --project-guard — このリポジトリのみ。以前の動作です
  • --no-guard — 適用しません

affects グロブを指定したアンカーは、一致するパスでのみ適用されます。スコープを指定していないアンカーは、それ自体の 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 }
        ]
      }
    ]
  }
}

意図的にプロジェクト単位のスコープになっています。ガードはこのリポジトリの決定を適用するため、ツール呼び出しをあらゆる場所で拒否するのではなく、プロジェクトごとに有効にします(対照的に、セットアップで追加される Stop フックはユーザー全体に適用されます)。declare_anchor(...) で監視対象を宣言してください。アンカーの card_policy.gate_mode:'hard' を設定すると、矛盾が単なる警告ではなくブロックされます(デフォルトのソフトモードでは再注入のみが行われます)。古くなった(at_risk)、置き換えられた、またはカードが無効になっているアンカーは、ゲートとして機能しません。

linksee-memory 自体を開発していますか?このリポジトリでは、ローカルビルド(node ${CLAUDE_PROJECT_DIR}/dist/bin/guard-hook.js)を参照する(Git で無視される).claude/settings.json を使ってガードを実運用しています。これにより、コミット前の変更に対して実行されます。エンドユーザーのプロジェクトでは、上記の公開済み npx -y linksee-memory guard 形式を使用してください。


できること

ほとんどの「エージェントメモリ」サービス(Mem0、Letta、Zep)は、事実を平坦なリストとして保存します。その後、エージェントが「ファイル X を 30 回編集した」という情報を見ても、その理由は分かりません。また、今週の作業が先週の決定と矛盾していることにも気づきません。linksee-memory は WHY(理由)を保持し、ドリフトを監視します。

これは、あらゆる AI エージェントに構造化メモリとドリフト検出を提供する、11 個のツールを備えた Model Context Protocol(MCP)サーバーです。

Mem0 / Letta / ZepClaude Code の自動メモリlinksee-memory
ドリフト検出❌❌✅ 意図 ↔ 実態の乖離を追跡
エージェント間での共有△(クラウド)❌ Claude のみ✅ 単一の SQLite ファイル
6 層の WHY 構造❌ 平坦❌ 平坦な Markdown✅ goal / context / emotion / impl / caveat / learning
ファイル差分キャッシュ❌❌✅ AST 対応。再読み込み時のトークンを 50〜99% 節約
アクティブな忘却△❌✅ エビングハウス曲線。caveat 層は保護
ローカル優先/プライベート❌✅✅

4 つの柱

  1. ドリフト検出 — 決定をアンカーとして宣言すると、エンジンがコミット済みの実態と明示された意図との乖離を自動的に検出します。「プロダクトの決定に対する Datadog」のようなものです。説明のつかない乖離はドリフトとして表面化し、意図的な進化(supersede/fix として記録)は問題になりません。
  2. エージェント間での移植性 — ~/.linksee-memory/memory.db にある単一の SQLite ファイルを使います。Claude Code、Cursor、Windsurf、OpenAI Codex、Gemini CLI で同じ脳を共有します。
  3. WHY 優先の構造化メモリ — 6 つの明示的な層(goal / context / emotion / implementation / caveat / learning)を使います。「目標のない平坦な事実のメモリは役に立たない」という問題を解決します。
  4. read_smart によるトークンの節約 — 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

各メモリには必ず 1 つのレイヤーがタグ付けされます。caveat レイヤーの項目は自動忘却から保護されます。重要度の低い古いメモリは、サーバー起動時に自動的に統合され、learning の項目になります。


Quick Start — One Command

npx -y linksee-memory setup

This does everything:

  1. Registers the MCP server with Claude Code
  2. Installs the agent skill (teaches the agent when to recall/remember)
  3. Configures auto-capture (every session saved to your local brain)
  4. Offers to wire the re-injection guard into this project (pre-action decision enforcement)

Restart Claude Code, then just chat normally. Add "Use Linksee" to any prompt to trigger memory recall.

Manual setup (if you prefer step-by-step)
Click to expand manual installation

Install & register:

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

Tools appear as mcp__linksee__remember, mcp__linksee__recall, mcp__linksee__read_smart.

Install the skill (auto-invocation):

npx -y linksee-memory install-skill

Copies SKILL.md to ~/.claude/skills/linksee-memory/. Agent auto-fires on phrases like "前に…", "また同じエラー", "覚えておいて", new task starts, file edits, etc.

Configure auto-capture (Stop hook):

Add to ~/.claude/settings.json:

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

Each turn end takes ~100 ms. Failures are silent. Logs at ~/.linksee-memory/hook.log.

Other editors / CLIs

Linksee Memory is a standard MCP server (stdio). Any tool that speaks MCP can connect:

Cursor

Add to ~/.cursor/mcp.json:

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

Restart Cursor. Memory tools appear in the agent panel.

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

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

Or add to ~/.codex/config.toml:

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

Add to ~/.gemini/settings.json:

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

Add the same stdio command to claude_desktop_config.json:

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

Config file: macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\. Restart Claude Desktop.

All editors share the same ~/.linksee-memory/memory.db. A decision made in Claude Code is recalled in Cursor. A caveat recorded in Windsurf prevents the same mistake in Codex.

Database location

Default: ~/.linksee-memory/memory.db. Override with LINKSEE_MEMORY_DIR env var.

Uninstall
# 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

Nothing ever leaves your machine, so step 3 fully erases everything Linksee stored.

What's new in v0.9

FeatureDetail
Re-injection guardThe pre-action half of drift detection. A Claude Code PreToolUse hook re-surfaces (or, on a hard contradiction, blocks) an accepted decision before the agent runs Edit/Write/Bash; a SessionStart boot digest replays your locked decisions into each fresh session. Fail-open by design. See Re-injection Guard.
Shippable hook wiringlinksee-memory-setup now offers to merge the guard hooks into your project's .claude/settings.json (pointing at the published linksee-memory-guard bin), and the block is documented for copy-paste. Previously the wiring lived only in a gitignored dogfood config.

v0.8 の新機能

機能詳細
4 つのドリフト検出ツールdrift_status、check_decision、declare_anchor、resolve_drift — エージェントが意図と現実の乖離を確認し、対処できるようになりました。エージェントのメモリにおける最大の課題(セッションをまたぐと決定事項が忘れられる問題)が解消されました。
トゥルースエンジン状態の導出ロジック(ドリフト/レビュー/保留/整合)が、ダッシュボードだけでなく MCP エンジンにも実装されました。どの MCP クライアントからもドリフトの状態を確認できます。
4 種類の分類体系アンカーを仮説/制約/コミットメント/信頼できる情報源に分類し、それぞれの種類に適した形式で表示します。
解決の優先順位1 つのアンカーに複数の解決策がある場合、最新のものが優先されます(古い確認が新しい修正を覆い隠すのを防ぎます)。
v0.7 の新機能
機能詳細
3 つのツールに統合したインターフェースツールを 8 つから 3 つに統合しました。remember(作成+更新+削除)、recall(検索+ファイル履歴+概要)、read_smart(トークン節約型の読み取り)です。ツールが少ないほど、LLM 間の一貫性が高まります。Context7 で実証されたパターンを採用しています。
自動統合サーバー起動時に統合が自動的に実行されます(ノンブロッキング、7 日間のしきい値)。手動で consolidate() を呼び出す必要はありません。
非推奨機能の移行ガイド古いツール名(forget、recall_file など)を使うと、何も通知せずに失敗するのではなく、具体的な移行例が返されます。
「Use Linksee Memory」トリガー任意のプロンプトに「Use Linksee Memory」を追加すると、メモリの呼び出しを強制できます。Context7 と同じ導入パターンです。
Claude Code プラグインclaude plugin add -- linksee-memory — MCP サーバーと自動呼び出しスキルを 1 回のインストールで導入できます。
v0.4 の新機能
機能詳細
1 コマンドでのセットアップnpx -y linksee-memory setup — MCP サーバーの登録、スキルのインストール、自動キャプチャフックの設定を行います。3 つのコマンドの代わりに 1 つのコマンドで完了します。
構造化メモリ v2すべてのメモリを 3 軸(高度×種類×状態)で分類します。セッションからの自動抽出により、生のチャットログではなく、機械で読み取れる JSON が生成されます。
高精度な想起ガイドSKILL.md では、効果的なクエリの書き方、想起する場合と省略する場合、リスクのある操作の前に注意点を先回りして提示する場合を、エージェントに指示するようになりました。
5 つの MCP プリミティブツール+リソース+プロンプト+サンプリング+ルート+エリシテーション。多くの MCP サーバーが公開するのはツールだけですが、linksee-memory は 5 つすべてのプリミティブを実装しています。
## 6 ツール

2 つの柱を、ひとつのインターフェースで。Memory と drift はそれぞれ必要最小限だけを提供し、それ以外は公開しません。 11 個のツールでは Claude / GPT / Cursor / Codex / Gemini ごとに異なる動作が混在していました。6 個なら、マニュアルなしでもエージェントが扱えます。

ツール機能
recallここから始めます。 引数なしの場合はセッション概要を返します。注意が必要なこと、Map 上の現在地、未解決の項目、主なエンティティを確認できます。query → 検索、path → ファイルの編集履歴と各編集の背後にあるユーザーの意図、where: "<topic>" → Current Truth Map 上の位置と影響範囲、dream: true → トリアージセッション(North Star、孤立した提案、整理キュー、摩擦)。
remember保存/更新/削除します。 必須フィールドは content のみで、エンティティとレイヤーは現在のプロジェクトがデフォルトになります。anchor: {} を追加すると、1 回の呼び出しで決定を記録し、適用できます(編集/書き込み/Bash の前とセッション開始時に再注入されます)。
read_smartAST 差分キャッシュを備えたトークン節約型のファイルリーダーです。変更されていないファイルの再読み込みは約 50 トークンで、変更がある場合は変更されたチャンクのみを読み込みます。
drift_status「今、何がずれていますか?」 真実マップを返します:🔴 drift / 🟡 review / ⚪ held / 🔵 verified / ⚫ unverified。各項目の根拠も表示します。anchor_id → ひとつの決定を詳しく確認します。
declare_anchor規範的な主張を記録します — 検出器が現実と照合する decision / prohibition / constraint、または proposal:提示したもののユーザーが反応しなかった選択肢を、レビュー項目として保留します。
resolve_drift未解決の項目に決着をつけます。 fix · supersede · acknowledge · dismiss(hit_term を指定すると、それに対するゲートの起動を停止します)· harden / soften。candidate_id を指定すると、孤立した提案を surface または dismiss できます。

以前の 5 つの名前 — where_am_i、check_decision、flag_proposals、dream、 resolve_proposal — は上記 6 つに統合されました。tools/list には表示されませんが、呼び出せば引き続き応答するため、以前のバージョンを対象に作られたスキルやエージェントも引き続き動作します。 LINKSEE_LEGACY_TOOLS=1 を設定すると一覧に表示されます。

CLI ユーティリティ
コマンド用途
npx -y linksee-memory setup1 コマンドでセットアップ:すべてのリポジトリに MCP サーバー + スキル + Stop フック + 再注入ガードを設定します(このリポジトリだけに設定するには --project-guard、スキップするには --no-guard)。冪等性があり、設定済みの項目はスキップします。
npx linksee-memoryMCP サーバー(stdio)
npx -y linksee-memory syncClaude Code の Stop フックのエントリーポイント
npx -y linksee-memory guard再注入ガードフック:PreToolUse ゲート(Edit/Write/Bash)+ SessionStart ブートダイジェスト。すべてのリポジトリで setup によって設定されます(再注入ガードを参照)。フェイルオープンです。
npx -y linksee-memory importClaude Code のセッション JSONL 履歴を一括インポート
npx -y linksee-memory install-skillrecall/remember/read_smart を呼び出すタイミングをエージェントに教える Claude Code Skill をインストール
npx -y linksee-memory statsローカル DB の概要(エンティティ数/レイヤー別内訳/主なエンティティ/編集回数の多いファイル)。機械可読な出力には --json を追加します。

6 つのメモリレイヤー

各エンティティ(人物/会社/プロジェクト/ファイル/概念)は、6 つのレイヤーにまたがるメモリを持てます。v0.4 以降、各メモリには3 軸構造化フォーマット(altitude × type × state)が使われます:

{
  "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 + 日本語/英語向け FTS5 トライグラムトークナイザー)に、5 つのレイヤーを格納します。

  • レイヤー 1 — entities(事実:人/企業/プロジェクト/概念/ファイル)
  • レイヤー 2 — edges(関連付け、グラフの隣接関係)
  • レイヤー 3 — memories(エンティティごとの 6 層構造化された意味)
  • レイヤー 4 — events(ヒート/勢いの算出に使う時系列ログ)
  • レイヤー 5 — file_snapshots + session_file_edits(差分キャッシュ + 会話↔ファイルの関連付け)

会話↔ファイルの関連付けが鍵です。Stop フックで取得されたすべてのファイル編集は、編集を促したユーザーメッセージとともに保存されます。そのため、recall({ path: "server.ts" }) を実行すると、「このファイルは 3 日間で 30 回編集され、各変更のきっかけとなった実際のユーザー指示はこちらです」という情報が返されます。

設計上の選択理由

  • ローカル優先 — 会話履歴はプライベートです。情報がマシンの外に出ることはありません。
  • 単一ファイル — memory.db は持ち運び可能な単一のファイルです。バックアップはファイルをコピーするだけです。
  • MCP stdio — MCP に対応するすべてのエージェントで動作し、ホストごとにプラグインを導入する必要はありません。
  • 実績あるスキーマの再利用 — heat_score / momentum_score は、本番環境のセールスインテリジェンス用コードベースから移植されています。ルールベースで、ホットパスに LLM への依存はありません。

ロードマップ

  • ✅ 3 つのツールに統合されたインターフェイス(remember / recall / read_smart) — v0.7.0
  • ✅ サーバー起動時の自動統合 — v0.7.0
  • ✅ Claude Code プラグイン(claude plugin add -- linksee-memory)
  • ✅ 5 つの MCP ブロック(ツール + リソース + プロンプト + サンプリング + ルート + エリシテーション)
  • ✅ Claude Code 向け Stop フックによる自動取得
  • ✅ 日本語/英語のトライグラム FTS5
  • ✅ ワンコマンドセットアップ(npx -y linksee-memory setup)
  • ✅ 構造化メモリー v2(3 軸分類:高度 × 種別 × 状態)
  • ✅ LLM 横断対応:Claude Code、Cursor、Windsurf、OpenAI Codex、Gemini CLI
  • ✅ ランディングページ(linksee.app)
  • ✅ ドリフト検出エンジン + 4 つの MCP ドリフトツール — v0.8.0
  • ✅ 4 種類の真実マップ(hypothesis/constraint/commitment/source_of_truth)— v0.8.0
  • ✅ 意思決定レジスターを可視化するダッシュボード
  • 🔮 Obsidian プラグイン(Vault 内の真実マップを参照)
  • 🔮 sqlite-vec によるベクトル検索(依存関係には追加済み。埋め込みバックエンドは準備中)
  • 🔮 デバイス間のクラウド同期(Pro ティア)

Claude Code の自動メモリーとの比較

Claude Code には、~/.claude/projects/<path>/memory/*.md に組み込まれたメモリー機能があります。これはユーザーの好みを記録するフラットな Markdown メモです。linksee-memory は、これを補完します。

  • 自動メモリー =「X を好むことを覚えておいて」という内容を記録するスクラップブック
  • linksee-memory = ファイル差分キャッシュと編集ごとの理由を備えた、エージェント間で共有できる構造化された脳

両方をお使いください。

セキュリティとプライバシー

linksee-memory はローカルで動作し、読み取りと送信をできる限り少なくするように設計されています。

  • ローカルファーストです。 メモリは ~/.linksee-memory/memory.db にある 1 つの SQLite ファイルです。アカウント、クラウド、API キーは必要ありません。
  • テレメトリはオプトイン方式で、デフォルトでは OFF です。 setup で一度だけ確認します。同意するか、LINKSEE_TELEMETRY=basic を設定しない限り、何も送信されません。同意した場合も、ソースコード、ファイル内容、プロンプト、会話、エンティティ名/プロジェクト名、メモリ DB は送信されず、匿名のカウンターのみが送信されます(詳細)。
  • リポジトリを自動的にクロールしません。 linksee が読み取るのは、明示的に保存したメモリ、map.yaml、マップの整合性チェックで指定されたファイル、ローカルの SQLite DB、そして Stop フックの実行時に、何が起きたかを記録するためにローカルで読み取る Claude Code セッションのトランスクリプトです。リポジトリをクロールしたり、.env/シークレット/node_modules を読み取ったり、独自にホームディレクトリにアクセスしたりすることはありません。
  • クリーンな MCP トランスポートです。 サーバーは stdout に JSON-RPC のみを書き込み、ログはすべて stderr に出力します。
  • フックの動作は文書化されており、削除できます。 setup は Stop フック(セッションの記録)と、任意のガードフックを追加します。デフォルトではネットワーク通信を行わず、実行時間に上限があり、フェイルオープン方式です(フックのエラーでセッションが中断されることはありません)。フックの一覧はアンインストールに記載されています。
  • シェルインジェクションの攻撃対象がありません。 サブコマンドは固定の許可リストから shell: false と配列引数を使って spawn で実行します。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 を 1 回送信します。送信されるフィールドは次のものだけです。

フィールド例内容
anon_idd7924ced-3879-…オプトイン時にローカルで生成されるランダムな UUID です。~/.linksee-memory/telemetry-id に保存されます。ファイルを削除するとリセットできます。
linksee_version0.0.3パッケージのバージョン
session_turn_count120セッションのターン数
session_duration_sec3600セッションの継続時間
file_ops_edit/write/read12, 2, 40件数のみ
mcp_servers["kansei-link","freee","slack"]設定されている MCP サーバーの名前(~/.claude.json から取得)。名前のみで、コマンドのパスは送信されません。
file_extensions{".ts":60,".md":30}変更されたファイルの拡張子の割合
read_smart_*, recall_*countsツールの使用回数

送信されることは決してない情報:

  • ❌ 会話メッセージ(ユーザーまたはアシスタント)
  • ❌ ファイルの内容
  • ❌ エンティティ名、プロジェクト名、ファイルパス、URL
  • ❌ メモリレイヤーのテキスト(goal / context / emotion / impl / caveat / learning)
  • ❌ 認証トークン、API キー、シークレット
  • ❌ IP アドレス(不正利用の検出には、一方向ハッシュのみを使用します)
お尋ねする理由

集計された MCP の利用データは、KanseiLink プロジェクトが、実際の開発者にとってどのエージェント連携が機能するかを判断するのに役立ちます。データ提供にご協力いただける場合は、LINKSEE_TELEMETRY=basic を設定するだけで 1 秒で完了し、MCP エコシステム全体の改善につながります。

ペイロードの完全なスキーマと検証ロジックはオープンソースです。マシンから送信される内容を正確に確認したい場合は、src/lib/telemetry.ts をご覧ください。

料金

永久に無料です。

linksee-memory はローカルファーストで、すべてお使いのマシン上で動作します。料金が発生するホスト型のコンポーネントはありません。SQLite DB はホームディレクトリに保存されます。バックアップはファイルをコピーするだけです。

アカウントも、クレジットカードも、API キーも不要です。インストールするだけですぐに使えます。

トラブルシューティング

スキルが起動しません。過去の作業について尋ねても、Claude Code が recall を呼び出しません。
  1. スキルがインストールされていることを確認します。
    ls ~/.claude/skills/linksee-memory/SKILL.md
    
    インストールされていない場合は、npx -y linksee-memory install-skill を実行します。
  2. Claude Code を再起動します。スキルはセッション開始時にインデックス化されます。
  3. MCP が linksee という名前で登録されていることを確認します(スキルは mcp__linksee__* というツール名を想定しています)。
    claude mcp list | grep linksee
    
    別の名前で登録されている場合は、再登録するか、~/.claude/skills/linksee-memory/SKILL.md を編集して名前を合わせます。
Stop フックでセッションが記録されません。
  1. フックのログを確認します。cat ~/.linksee-memory/hook.log
  2. 手動でテストを実行します。
    echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync
    
  3. ~/.claude/settings.json の Stop フックが npx -y linksee-memory sync を参照していることを確認します(古い -import ではありません)。
v0.0.5 以前からアップグレードしたところ、記憶の大半に「Card_Navi」またはプロジェクトディレクトリ名がタグ付けされています。

v0.0.6 以降では、すべての記憶がセッション開始時の cwd にまとめられてしまうエンティティ検出のバグが修正されています。既存の履歴を正しいプロジェクト情報で再インデックス化するには、次を実行します。

npx -y linksee-memory import --all

インポーターは冪等です(再挿入する前に既存のセッションデータを消去します)。セッション数百件の場合、通常は数分かかります。その後、recall の精度が大幅に向上します。

recall の結果が多すぎて、コンテキストウィンドウがすぐにいっぱいになります。

max_tokens を減らします。

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

または、entity_name と layer で絞り込みます。

recall({ query: "...", entity_name: "my-project", layer: "caveat" })
すべての記憶をリセット/削除するにはどうすればよいですか?
rm -rf ~/.linksee-memory   # nuke everything; next run creates a fresh DB

または、remember({ forget: true, memory_id: <id> }) で個別の記憶を削除できます。

DB が大きくなっています(100 MB 超)。サイズを小さくするにはどうすればよいですか?

統合はサーバーの起動時に自動的に実行されます(7 日間のしきい値)。古くて参照頻度の低い記憶をクラスタリングし、圧縮した学習レイヤーの要約にまとめます。ただし、注意事項レイヤーとアクティブな目標レイヤーは常に保持されます。

手動で統合を実行するには、MCP サーバーを再起動します。自動統合は起動のたびに実行されます。

よくある質問

ドリフト検出とは何ですか?なぜ必要なのですか?

ドリフトとは、コードの実態が、決定した内容から気付かないうちに乖離することです。例:先週「ベクトル検索ではなく FTS5 を使う」と決めたのに、今週、新しいエージェントのセッションが過去の経緯を知らずに pgvector をインストールしてしまうケースです。

Linksee Memory では、決定を「アンカー」として宣言し、コミットされたコードがそれらに反していないかを自動的に確認することで、これを追跡します。成否を分けるルールは、**意図的な変更(修正/置き換えとして記録されたもの)は問題にならず、説明のない乖離にはフラグが付くことです。**サーバーのメトリクスではなく、プロダクトの決定を対象とした Datadog のようなものです。

linksee-memory のメリットを得るために、ドリフト検出を使う必要はありません。3 つの記憶ツール(remember/recall/read_smart)は単独で動作します。ドリフトツールは、複数のプロジェクトを管理するチームや個人開発者向けの追加レイヤーです。

Mem0 / Letta / Zep とは何が違うのですか? 3 つの軸: 1. **ローカルファースト**:これらのツールはクラウドアカウントを必要とし、データを各社のサーバーに送信します。linksee-memory はすべてお使いのマシン上で動作します。SQLite ファイル 1 つだけを使用し、デフォルトではネットワーク通信を行いません。 2. **WHY を階層化**:これらのツールは、フラットな事実やナレッジグラフのノードを保存します。linksee-memory は 6 つの明示的なレイヤー(`goal`/`context`/`emotion`/`implementation`/`caveat`/`learning`)を備えているため、検索結果としてデータだけでなく、構造化された推論が返されます。 3. **ファイル差分キャッシュ**:`read_smart` ツールは AST を考慮したチャンク分割によって、ファイルの再読み込み時のトークンを 86〜99% 節約します。これを実現するメモリサービスはありません。これは通常 IDE に搭載される機能です。
Claude の組み込み自動メモリを使うだけではだめですか?

Claude Code の自動メモリは Claude 専用です(Cursor、OpenAI Codex、Gemini CLI に切り替えた場合は役に立ちません)。また、構造のないフラットな Markdown を保存します。linksee-memory は同じローカルファーストの原則に基づいていますが、次の点が異なります。

  • Claude Code、Cursor、OpenAI Codex、Gemini CLI で共有の SQLite を使って動作します
  • 6 層の構造化形式により、記憶の呼び出し根拠を説明できます
  • 起動時に自動統合によって、しばらく使われていない記憶を圧縮します。注意事項は常に保護されます
トークンを 86% 節約できるというのは本当ですか?どのように実現していますか?

はい。リポジトリ内の tools/bench-read-smart.ts をご覧ください。read_smart ツールは次のように動作します。

  1. 初回読み込み時にファイル内容をハッシュ化し、全内容とチャンクのメタデータ(AST/見出し/インデントの境界)を返します。
  2. mtime と sha256 が変わっていないファイルを再読み込みする場合、ファイルを再送信する代わりに「変更なし」の確認として ~50 tokens を返します。
  3. 実際に編集されている場合は、変更されたチャンクを全内容で返し、変更されていないチャンクはメタデータのみの参照として返します。

エージェントのループで一般的な TypeScript ファイルを編集する場合、往復のトークンコストを約 86% 削減できます。純粋な再読み込み(ユーザーが以前読んだファイルに戻る場合)では、節約率は 99% を超えます。

「ローカルファースト」だと、マシン間で同期する方法はありませんか?

デフォルトでは同期しません。SQLite ファイルは ~/.linksee-memory/memory.db に保存され、その場所にとどまります。複数のマシン間で同期したい場合は、そのディレクトリを Syncthing/iCloud Drive/Dropbox/Google Drive の配下に置いてください。単一ファイルなので、どのファイル同期ツールでも使えます。(両方のマシンで MCP サーバーを起動したまま、同時に編集するのは避けてください。SQLite の WAL モードは単一の書き込み元には適していますが、複数の書き込み元による競合でデータが破損する可能性があります。)

データベースが巨大になったらどうなりますか?

次の 2 つの仕組みがあります。

  1. エビングハウスの忘却:重要度が低く、長期間使われていない記憶は自然に減衰し、自動削除の対象になります。caveat レイヤーと importance ≥ 0.9 の記憶は常に保護されます。
  2. 自動統合:サーバー起動のたびに実行されます(しきい値は 7 日です)。重要度が低く、長期間使われていない記憶のまとまりをエンティティごとに 1 つの learning レイヤーの要約に圧縮し、元の記憶を削除します。手動で実行をスケジュールする必要はありません。

実際には、個人開発者が集中的に使用すると、6 か月で約 100MB になります。私が試した、80K 件の記憶がある 1 年前のデータベースでも、10 ミリ秒未満で呼び出せます。

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 設定に追加します(Cursor → Settings → Features → Model Context Protocol)
  • OpenAI Codex:codex mcp add linksee -- npx -y linksee-memory を実行します(または [mcp_servers.linksee] ブロックを ~/.codex/config.toml に追加します)
  • Gemini CLI:~/.gemini/settings.json の mcpServers セクションに追加します
  • ChatGPT(Web/モバイルアプリ):一般向けアプリは stdio MCP に対応していません。HTTPS 経由のリモート MCP サーバーが必要です(現在はまだ利用できません)。
  • カスタムエージェント:MCP stdio プロトコルの仕様は modelcontextprotocol.io にあります
どのようなテレメトリを送信しますか? **デフォルトでは、ネットワーク呼び出しもテレメトリーもゼロです。** 有効にできるオプションのレベル1テレメトリーモードがあり、匿名化された集計メトリクス(ツール呼び出し数、エラー率、レイテンシのパーセンタイルなど)を送信します。メモリーの内容、ファイルパス、クエリは一切送信しません。送信されるペイロードの正確なスキーマは[テレメトリーのセクション](#telemetry-opt-in-off-by-default)に記載されており、オプトインする前にすべてのバイトを確認できます。
実際に動作していることを確認するにはどうすればよいですか?

インストール後、新しいClaudeセッションで次のように尋ねてください。「JavaScriptよりTypeScriptが好きだと覚えておいてくれますか?Linksee Memoryを使ってください。」 Claudeはmcp__linksee__rememberを呼び出して記憶したことを確認するはずです。その後、別のセッションで次のように尋ねてください。「私が好む言語は何ですか?Linksee Memoryを使ってください。」 mcp__linksee__recallを使って思い出し、理由を示すmatch_reasonsとともに好みを返すはずです。

サポート

  • 問題とバグ報告:github.com/michielinksee/linksee-memory/issues
  • 機能リクエスト:enhancementラベルを付けてissueを作成してください
  • セキュリティ上の懸念:SECURITY.mdがある場合はそちらを確認するか、GitHubで非公開のアドバイザリを提出してください
  • 会社:Synapse Arrows PTE. LTD.(シンガポール)

変更履歴

v0.11.3 — 堅牢性の向上とMCPの衛生管理(2026-06-16)
  • 破損データベースからの復旧: ~/.linksee-memory/memory.dbが読み取れない場合、linkseeはクラッシュして生のSQLiteエラーを表示する代わりに、ファイルをmemory.db.corrupt-<timestamp>として保持し、わかりやすいメッセージとともに新しいデータベースを作成します。古いメモリーはバックアップから復元できます。
  • 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経由でスタンドアロンのbin(linksee-memory-setupなど)を実行できませんでした。npxが解決するのはパッケージ名であり、同じパッケージ内の別のbin名ではないため、ワンコマンドインストールが404になっていました。メインのbinがサブコマンドをディスパッチするようになり、スタンドアロンのbinはエイリアスとして引き続き利用できます。
  • mapはmap.yamlがまだない場合、次の手順を示すメッセージを表示して正常に終了します(以前は初回利用時に生のスタックトレースが表示されていました)。
  • serverInfoが実際のパッケージバージョンを報告するようになりました(以前は古い文字列に固定されていました)。
v0.11.0 — マップ:where_am_i + linksee-memory map(2026-06-15)

メモリーが入り口となり、プロダクトマップが新たな操作画面になります。 ドリフト検出は個々のアンカーから発展し、CLIからたどれるプロダクト全体のマップになりました。

  • where_am_i(11番目のMCPツール)— Current Truth Map上で現在のトピック/ファイルを特定し、その影響範囲を取得します。引数なしで呼び出すと、最近の編集内容から自動的に場所を特定します。
  • linksee-memory map CLI — where · affects · explain · status · next · reconcile · inspect --json · blueprint。map.yaml(Gitを信頼できる唯一の情報源とする)が、ユーザーに価値が届く仕組みを記述します。リコンサイラーはファイルと行の根拠を使って、コードとの整合性を確認します。バイリンガル対応:--lang jaを追加してください。
  • 段階評価された影響範囲(must fix together/should align/fyi)、宣言と実態の判定、および把握済みドリフトを対象とするアンチ・グレイブヤードガード。
  • プロジェクトごとのキーにより、マップで複数のプロジェクトを同時に扱えます。
v0.8.0 — Drift Detection MCP Tools (2026-06-08)

3 tools → 7 tools. The biggest update since launch — agents can now detect, query, and resolve intent ↔ reality drift.

New tools:

  • drift_status — returns the truth map with 4-species classification and per-node drift state
  • check_decision — deep-dive into a single anchor: state, edges, pending candidates
  • declare_anchor — record a decision/constraint/prohibition as a truth-map node (with v9 ProjectCoreNode fields)
  • resolve_drift — close the feedback loop: fix / supersede / acknowledge / dismiss

New engine module:

  • truth-engine.ts — state derivation logic migrated from the dashboard into the MCP engine. Any MCP client can now query drift status without a dashboard.
  • Resolution priority fix: when multiple resolutions reference the same anchor, the most recent one wins (by resolved_at timestamp). Prevents a stale acknowledge from shadowing a newer fix.
  • 4-species classification: nodes classified by decision_mode into hypothesis / constraint / commitment / source_of_truth with display format guidance.

No breaking changes to existing memory tools. All 3 memory tools (remember, recall, read_smart) are unchanged.

v0.7.2 — Recall ergonomics + auto-edge detection + classifier precision (2026-05-30)

Quality pass on v0.7.0 / v0.7.1 — sharper day-to-day agent UX and cleaner data for the dashboard:

  • recall token discipline: drops the redundant content_raw from the response (parsed content was already there — it was a 2× duplicate), and actually enforces max_tokens by greedy assembly that measures real serialized size (was a flat ~100 tok/memory estimate). Adds approx_tokens to the response so the agent can see its budget usage. The same query that previously returned ~15,800 tokens for a 1200 budget now stays inside it.
  • recall precision: near-duplicate memories — same entity + near-identical core text, e.g. the same message captured under both goal and learning — collapse to one in the result set. Composite weights adapt to query specificity: multi-term queries weight relevance higher so off-topic-but-pinned memories don't crowd narrow recalls.
  • Capture dedup (write side): session-extractor now produces AT MOST one memory per user turn, with priority goal[first_intent] > caveat > decision > context. A first-intent message containing decision words (e.g. "決めた" / "これで進めよう") is no longer double-saved as both goal and learning.
  • memory_edges auto-detection: the previously-empty memory_edges table is now populated during the sleep-mode consolidation sweep. detectMemoryEdges() links a later DECISION memory to the most-recent earlier same-topic decision within an entity (chain, not clique) so the dashboard can render Pivot Chains. The default relation is extends — a same-topic later decision builds on, but does NOT deactivate, the earlier one. Explicit reversal markers (やめる / revert / instead of) produce contradicts; explicit replacement markers (の代わり / replaces / deprecate) produce supersedes. Prevents silent deactivation of still-valid decisions.
  • inferType / inferState precision: chitchat acknowledgements ("そうだね" / "ありがとう"), pasted terminal/git/email content, and meta-noise no longer classify as decision — they return note / open before pattern matching. The learning-layer default → decision is gated by this guard. Real decisions (採用 / 決めた, even after an acknowledgement opener) survive.

No schema migration, no breaking API changes. Existing rows keep their stored content; the classifier improvements apply to new captures going forward.

v0.7.1 — レビュー修正(2026-05-29)

v0.7.0 の Opus 4.7 デザインレビューに基づく変更:

  • P0 — 必須パラメーターのガイダンス:remember ツールの説明に「モード別の必須パラメーター」セクションを追加し、LLM が作成・更新・削除それぞれで必要なフィールドを正確に把握できるようになりました。
  • P0 — 移行ガイダンス:非推奨のツール名(forget、recall_file など)を呼び出すと、一般的なエラーではなく、具体的な移行例を返すようになりました。
  • P1 — recall のパスとクエリの結果を統合:recall に path と query の両方を指定した場合、ファイル履歴とメモリー検索の結果が単一の応答に統合されます。
  • P2 — 自動統合の安全性:クエリを実行する前に sqlite_master でテーブルの存在を確認し、新規データベースで consolidations テーブルが見つからずエラーになるのを防ぎます。
v0.7.0 — 3 ツールの統合インターフェース(2026-05-29)

8 ツールから 3 ツールへ。 Context7 で実証された「ツールが少ないほど、LLM 間の一貫性が向上する」というパターンに従っています。

破壊的変更:以下のツールは MCP のインターフェースから削除されました。呼び出すと移行ガイドが返されます。

旧ツール新しい代替手段
forgetremember({ forget: true, memory_id: <id> })
update_memoryremember({ memory_id: <id>, content: "..." })
recall_filerecall({ path: "server.ts" })
list_entitiesrecall({})(パラメーターなし=エンティティの概要)
consolidateサーバー起動時に自動実行(7 日のしきい値)

新しい統合ツール:

  • remember — 作成・更新・削除を 1 つのツールで実行します。モードはパラメーターから推定されます。
  • recall — 検索・ファイル履歴・概要を 1 つのツールで実行します。モードはパラメーターから推定されます。
  • read_smart — 変更はありません。

その他の変更:

  • サーバー起動時に自動統合(ブロッキングしない setTimeout、7 日のしきい値、sqlite_master による安全性チェック)
  • Claude Code Plugin バンドル(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」)でスキルを呼び出せるようになりました。
  • install-skill 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 を追加しました。
  • 内部変更:英語のワークフロー例として、KanseiLink スキルとの併用を SKILL.md に記載しました。

MCP プロトコルのインターフェースにコード変更はありません。既存の MCP クライアントはすべて、これまでどおり動作します。

v0.1.1 — ピン留めしきい値の調整(2026-04-19)

実際の使用において、意図に反して importance=0.95 のメモリが ピン留めとして扱われていないというフィードバックを受けて変更しました。

  • ピン留めのしきい値を >= 1.0 から >= 0.9 に引き下げました。 importance >= 0.9 のメモリは、自動忘却の対象外となり、recall と remember の応答に pinned: true が表示されるようになりました。正確に 1.0 を指定しなくても、「0.9 = 重要度が高い = クリーンアップ後も残るべき」という自然な考え方に合致します。
  • 既存の importance >= 0.9 のメモリ(以前に 0.9 や 0.95 に設定されたものを含む)は、すべて自動的にピン留めされます。移行は不要です。
  • 新しいしきい値に合わせて、ツールの説明とエラーメッセージを更新しました。
v0.1.0 — 大規模な UX アップデート(2026-04-18)

1 週間のドッグフーディングを経て、以下の変更を行いました。

新しいツール

  • update_memory — memory_id を維持したまま、アトミックに編集します。「forget+remember によって session_file_edits のリンクが壊れる」バグを解決します。
  • list_entities — セッション初期化用の「何について知っているか」を素早く確認するためのプリミティブです。kind/min_memories フィルターに対応し、レイヤーごとの内訳を返します。
  • npx -y linksee-memory stats — ローカル DB の概要を表示する CLI です。

recall の機能強化

  • 各メモリに match_reasons 配列を追加しました。例:["content_match_fts", "heat:hot", "pinned"]。
  • 各次元のスコア(関連性/熱量/勢い/重要度)を含む score_breakdown を追加しました。
  • offset/has_more/stopped_by によるページネーションに対応しました。
  • limit パラメーター(ハード上限)を追加し、max_tokens の予算を補完します。
  • ホット/ウォーム/コールド/フローズンのメモリのみを取得する band フィルターを追加しました。
  • 熱量を上げるべきでないプレビュークエリ用に mark_accessed=false を追加しました。
  • レイヤーの別名:decisions → learning、warnings → caveat、how → implementation など。
  • 修正:古くなったエンティティの勢いスコアを機会に応じて更新します。最後の remember() から 1 時間以上経過してエンティティを取得した場合も、古い勢いスコアが返されなくなりました。

remember の機能強化

  • 品質チェックを追加しました。force=true でない限り、貼り付けられたアシスタントの出力/CI ログ/スタックトレースを拒否します。
  • importance=1.0 を指定すると、メモリが暗黙的にピン留めされるようになりました(自動忘却後も保持されます)。
  • レイヤーの別名を受け付けるようになりました。

forget の変更

  • ピン留めされたメモリ(importance=1.0)も、caveat レイヤーのメモリと同様に保持されるようになりました。
  • 保護されたメモリ、または存在しないメモリを削除しようとした場合、明確なエラー応答を返すようになりました。
  • dry-run に sample_ids_to_drop が含まれるようになりました。

consolidate の変更

  • dry_run: true のプレビューモードを追加しました。書き込みを行わず、クラスター数と候補を報告します。

インフラ

  • 新規 DB の移行バグを修正しました(存在する前に meta テーブルをクエリしていました)。
  • 構造化言語機能の使用に対応するため、Node 20 以上に引き上げました。

すべての変更は後方互換性があります。既存の統合は引き続き動作します。Server.ts のバージョン表示は v0.1.0 を報告するようになりました。

以前のバージョン

GitHub Releases をご覧ください。

ライセンス

MIT — Synapse Arrows PTE. LTD.

コメント

MCP は初めてですか?

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

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