mcpField
P
Palace

Palace

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

Palace について

Palaceは、コーディングエージェント向けのローカル優先型メモリーMCPサーバーです。プロジェクト情報をSQLiteファイルに原文のまま保存し、ローカル埋め込み、自動フック、出典付き検索によってセッションをまたいで活用します。

主な機能

  1. 01SQLiteへの原文保存
  2. 02ローカル埋め込みとハイブリッド検索
  3. 03フックによるセッション記憶の自動想起
  4. 04出典情報付きの検索結果
  5. 05日記と時刻付き事実グラフ

活用シーン

  1. 01セッションをまたいだプロジェクト決定の確認
  2. 02過去の修正、コマンド、好みの再利用
  3. 03エージェントやCLIからのプロジェクトノート検索

MCP 対応

Palaceは、検索、ステータス、日記、ナレッジグラフなどのメモリーツールをMCPクライアントに提供します。エージェントは埋め込みモデルの移行ツールも利用できます。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbpalace-0.18.2.mcpb0.18.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Palace バナー:今日のセッションでの決定事項、コマンド、設定をローカルの宮殿に保存し、次のセッションでエージェントが覚えていられるようにします

CI の状態 最新リリース ライセンス:MIT プラットフォーム:Linux、macOS、Windows Rust 1.82 以上 MCP レジストリに登録済み mcpservers.org に登録済み Claude Code、Codex、Cursor、Gemini CLI、VS Code、OpenCode、Cline、Zed、Goose、Windsurf、Claude Desktop に対応

コーディングエージェントのためのローカルファーストなメモリ。
セッションをまたいで、エージェントが決定事項、修正内容、コマンド、設定を覚えておけます。
バイナリは1つ、SQLiteファイルは1つ。APIキーもクラウドも不要です。

クイックスタート · インストール · 仕組み · クライアント · CLI · MCP ツール · FAQ


Palace を使うと、Claude Code、Codex、Cursor、Gemini CLI、VS Code、OpenCode、 Cline、Zed、Goose、Windsurf、Claude Desktop が、セッションをまたいで 記憶を保持できます。起きたことをそのまま保存し、関連する場面で自動的に呼び出して、 それぞれの回答の出典を示します。

You:    why did we switch the queue to SQLite last month?
Agent:  [palace_search → wing my_api, room decisions, filed 2026-09-03]
        You dropped Redis because the deploy target had no persistent volume.
        The benchmark you ran is in the same drawer.

🧭 Palace を選ぶ理由

新しいエージェントのセッションは、記憶がない状態で始まります。アーキテクチャを もう一度説明することになります。エージェントは、先週却下した修正を繰り返します。 数か月前に決めた規約を見つけ直すため、リポジトリ全体を grep します。

Palace は次の方法でこれを解決します。

  • テキストをそのまま保存します。 コード、メモ、会話は、詳細が失われる LLM の要約ではなく、 書かれたとおりに保存されます。
  • ローカルで動作します。 埋め込みには、CPU 上で ONNX Runtime を使い、 all-MiniLM-L6-v2(または対応モデル)を実行します。 リモートモードを有効にしない限り、データがマシンの外に出ることはありません。
  • 頼まれなくても記憶を呼び出します。 セッション開始時、プロンプト送信時、 エージェントの調査中に、フックが関連する記憶を挿入します。 エージェントが検索を覚えておく必要はありません。
  • 出典を示します。 すべての検索結果に、ウィング、部屋、ソースファイル、引き出し ID、 スコアの内訳が含まれるため、回答の出典を確認できます。
  • 単一のバイナリとして提供します。 Python、ベクトルデータベース、Docker は不要です。 palace 実行ファイル1つと palace.db ファイル1つだけです。

ソフトウェアプロジェクト以外でも使えます。creative および personal プロファイルは、世界観の構築、創作、コーチング、家庭のメモに合わせて 設定を調整します。


📦 インストール

いずれかの方法を選んでください。どの方法でも palace バイナリがインストールされます。その後、palace install を実行してエージェントを接続します。

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/AncientiCe/palace-rs/main/scripts/install.sh | sh

Windows(PowerShell)

irm https://raw.githubusercontent.com/AncientiCe/palace-rs/main/scripts/install.ps1 | iex

スクリプトは対応する GitHub Release バイナリをダウンロードし、SHA-256 チェックサムを検証してインストールします。後でアップグレードする場合は、同じコマンドをもう一度実行してください。

Homebrew(macOS Apple Silicon / Linux)

brew tap AncientiCe/palace
brew install palace

アップグレードするには、先に tap を更新してください。brew update を実行しないと、Homebrew が古いバージョンをインストール済みとして報告し続ける場合があります。

brew update && brew upgrade palace

リリースでメモリプロトコルのルールが変更された場合(CHANGELOG に記載されます)、その後 palace install をもう一度実行して、エージェントに新しいルールのテキストを反映してください。

MCP registry / MCPB bundle。 Palace は公式の MCP registry に io.github.ancientice/palace-rs として登録されています。各リリースには palace-<version>.mcpb バンドル(Linux x86_64、macOS arm64、Windows x86_64)も含まれており、Claude Desktop など、MCPB 対応ホストにワンクリックでインストールできます。

ソースから

git clone https://github.com/AncientiCe/palace-rs && cd palace-rs
cargo build --release   # binary at target/release/palace
プラットフォーム状態
Linux x86_64対応
macOS Apple Silicon対応
Windows x86_64対応
macOS Intel非対応(ONNX Runtime のビルドがないため)

埋め込みモデル(約 90 MB)は、初回のマイニングまたは検索時に Hugging Face からダウンロードされ、その後 ~/.cache/huggingface にキャッシュされます。


⚡ クイックスタート

palace install            # connect every supported agent on this machine
palace doctor             # check that every client is wired up
palace init ~/my-project --yes --auto-mine   # detect rooms, write palace.yaml, mine

MCP 設定を再読み込みするため、エージェントアプリを再起動してください。次に、以下を試してみてください。

「このプロジェクトではデータベースのマイグレーションをどのように処理するか、何が分かっていますか?」

エージェントは palace_search を呼び出し、使用した引き出しを示しながら、メモリに基づいて回答します。ターミナルから検索することもできます。

palace search "how did we decide on the database schema"

以降、エージェントはまとまった作業の後に日誌エントリーを記録し、長期的に保持する決定事項を事実として保存します。翌日には、どのエージェントからでも、今日の続きから作業を始められます。


🔍 仕組み

palace

メモリは建物のように整理されるため、検索対象を絞り込めます。

宮殿の内部:backend、decisions、testing という部屋と、引き出しが並ぶ my_api プロジェクト棟、sales_notes トピック棟、my_api uses_queue SQLite という知識グラフの事実、claude と codex のエージェント日誌

図 1. 1 つの宮殿に複数の棟があります。部屋ごとに引き出しがまとめられ、知識グラフと日誌はそれらと並んで配置されます。

概念内容例
棟プロジェクトまたはトピックmy_api、sales_notes
部屋棟の中の領域backend、testing、decisions
引き出し原文テキストの一まとまりと、その埋め込みおよびメタデータdb.rs の段落、日誌エントリー
知識グラフタイムスタンプ付きの事実:主語 → 述語 → 目的語my_api → uses_queue → SQLite(2026-09-03 から有効)
日誌継続性を保つためのエージェントごとのセッションメモ「不安定なマイグレーションテストを修正した。方法は…」
トンネル異なる棟にある部屋同士をつなぐリンクmy_api/auth ↔ my_web/login

棟には、プロジェクト棟(ディスク上のフォルダー。palace mine で作成)と、トピック棟(フォルダーを持たず、チャット履歴や会議メモなどを扱い、palace_create_wing で作成)があります。

検索
flowchart LR
    Q["💬 Question<br/>from you or the agent"] --> S["Sanitize<br/>strip pasted dumps"]
    S --> I["Classify intent<br/>decision · how_to · preference …"]
    I --> H["Hybrid search<br/>BM25 + cosine"]
    H --> B["Coding boosts<br/>+ preference pass"]
    B --> R{"Rerank?<br/>optional"}
    R --> OUT["📎 Results<br/>scores + source + neighbours"]
    DB[("palace.db<br/>local embeddings")] -.-> H

図 2. クエリが処理される流れ。すべての処理はローカルの CPU 上で実行されます。

検索では、BM25 キーワードスコアとローカル埋め込みのコサイン類似度を組み合わせます。その後、コーディングに関する質問には意図に応じたブーストを適用します。各クエリは preference、decision、how_to、definition、temporal、unknown のいずれかに分類されます。「コミットの好みはどうでしたか?」のような、好みに関する質問には、タグ付けされた好みのスパンを対象とする専用の検索処理が行われます。ローカルのクロスエンコーダーによる再ランク付けもオプションとして利用できます(--rerank または PALACE_RERANK=1)。

埋め込みモデル

Palace には all-MiniLM-L6-v2 が付属しており、Palace を別の ローカルモデルに切り替えることができます。各ベクトルは保存済みのテキストから再構築されるため、切り替えても メモリが失われることはありません。

モデル IDモデル精度備考
minilm-l6-v2all-MiniLM-L6-v2fp32デフォルト
minilm-l6-v2-q8all-MiniLM-L6-v2int8インデックス作成が約 2 倍高速で、ベイクオフでは再現率は同等
bge-smallbge-small-en-v1.5fp32試験的、インデックス作成は約 2.5 倍低速
bge-small-q8bge-small-en-v1.5int8試験的
bge-base-q8bge-base-en-v1.5int8試験的、768 次元

試験的なモデルはコーディングエージェント評価では MiniLM を下回りましたが、 実際の Palace から抽出したプローブではより高いスコアを記録しました( ベイクオフを参照)。ご自身の Palace で試すことができます。 切り替えるかどうかは検証によって決まります。

palace embeddings list                       # models, which is active, which are downloaded
palace embeddings estimate minilm-l6-v2-q8   # time, disk and latency, measured on this machine
palace embeddings migrate minilm-l6-v2-q8    # build, verify, switch
palace embeddings rollback                   # back to the previous model, instantly
palace embeddings cleanup                    # drop the previous model's vectors

migrate は検索で現在のモデルを使い続けながら、新しいベクトルをバッチ処理で構築するため、 中断して再実行しても安全です。ベクトルの構築後、Palace から取得した既知アイテムのプローブ 200 件を使って、 新しいモデルと現在のモデルを比較します(ハイブリッドとベクトルのみの recall@1/@5、およびクエリの レイテンシ)。recall@5 の低下が 0.01 以下で、p95 クエリレイテンシが 予算内に収まる場合にのみ切り替えます。予算は現在のモデルの p95 の 2 倍、かつ 最低 25 ms です。強制的に切り替えるには palace embeddings cutover --force を、 現在のモデルを維持するには palace embeddings cancel を実行してください。

config.json の embedding_model(または PALACE_EMBEDDING_MODEL)を設定すると、 新規の空の Palace に使用するモデルを指定できます。既存の Palace が自動で切り替わることは ありません。palace status、palace_status、palace_session_context は、 migrate を実行するまで保留中の移行を報告します。移行が自動で行われることはありません。 migrate を実行するか、エージェントに実行を依頼してください。エージェントは palace_embeddings MCP ツールを使用します(サーバーのバックグラウンドで同じ手順を実行します)。 リモートモードではサーバーがモデルを管理するため、これらのコマンドはサーバー上で実行されます。

エージェントが生成したクエリダンプは、検索前にクリーンアップされます。結果には スコアの由来(combined、cosine、bm25、coding_boost、 preference_match、rerank_score、intent)と、同じソースファイル内の 隣接するチャンクが含まれます。

自動想起(フック)

palace install はユーザーレベルのフックを登録するため、プロジェクトごとのファイルを編集しなくても、すべてのプロジェクトでメモリが機能します。

1つのエージェントセッションに4つのフック:セッション開始、プロンプト送信、ツール使用後に palace.db から情報を想起し、停止時にエージェントへ日誌と決定事項の保存を促します

図3。3つのフックがメモリをセッションに読み込みます。4つ目のフックは、セッションで得た教訓が確実に書き戻されるようにします。

フック動作
セッション開始メモリプロトコル、general/preferences にある常設ルール(すべてのプロジェクトに逐語的に適用)、このプロジェクトの最近の日誌エントリー(あらゆるエージェントによるもの)、プロジェクトのウィングにある上位の引き出しを読み込みます。
プロンプト送信実際の質問を使って Palace を検索し、エージェントが回答する前に一致する引き出しを読み込みます。履歴に関する質問で何も見つからない場合は、エージェントに palace_search の実行を指示します。Claude Code では、セッション中に Palace ツールが呼び出されるまで、1行のリマインダーも追加します。短いプロンプトとスラッシュコマンドはスキップします。Claude Code と Codex のみが対象です。
ツール使用後エージェントがファイルを grep して読み取る間に、関連するメモリを想起させ、検索しなくても以前の決定事項が表面化するようにします。Claude Code では、セッション中の Palace の呼び出しも記録します。
停止セッションで実際の作業が行われたのに何も保存されていない場合、終了前に日誌エントリーを書き、決定事項を記録するよう、エージェントに一度だけ促します。Claude Code では、Palace を一度も使っていないセッションも含め、セッションごとに判定します。他のエージェントでは、最近のアクティビティ期間を基準にします。

自動想起の対象は現在のプロジェクトに限られます。他のプロジェクトのウィングにある引き出しや、他のプロジェクトの日誌は含まれません。トピックウィングは引き続き表示されます。

すべてのフックはフェイルオープンで動作します。palace が存在しないか空の場合、エージェントは通常どおり動作します。

メモリプロトコル

palace install は、各クライアントの指示ファイルにも短いルールを書き込みます。このルールでは、エージェントがメモリを使うタイミングを指定します。

  1. セッション開始時: palace_status → palace_session_context → palace_diary_search。
  2. 過去の決定事項、好み、履歴に関する質問に回答する前: grep より先に palace_search と palace_kg_query。
  3. 作業後: palace_diary_write に加えて、長期保存する事実には palace_kg_add。

現在のシンボル、正確な定義、解析後に変更された可能性のあるコードについては、引き続き grep を最初に使うのが適切です。

9つのプロトコルツールには _meta."anthropic/alwaysLoad" = true が設定されているため、Claude Code 2.1.121 以降では、ツール検索の背後に保留されず、読み込まれた状態が維持されます。

メモリレイヤー
レイヤー名前内容
L0アイデンティティ~/.palace/identity.txt。常時読み込み(約100トークン)
L1重要なストーリー重要度順の上位の引き出し。部屋ごとにグループ化(約600~900トークン)
L2オンデマンドウィングと部屋で絞り込んだ検索
L3詳細検索palace 全体を対象とした完全なハイブリッド検索

palace wake-up は L0 と L1 を出力します。エージェントは MCP ツールを通じて L2 と L3 にアクセスします。


🔌 サポート対象のクライアント

palace install はデフォルトですべてのサポート対象クライアントを設定します (--client all)。Gemini CLI、VS Code、Windsurf、OpenCode、Cline、Zed、Goose は、 設定フォルダーが存在する場合にのみ含まれるため、Palace が未導入のエージェントを設定することはありません。 特定のクライアントを明示的に設定するには、--client <name> を使用します。

クライアント--clientMCP 設定ルールファイルフック
Claude Codeclaude~/.claude.json~/.claude/CLAUDE.md~/.claude/settings.json
Codexcodex~/.codex/config.toml~/.codex/AGENTS.md~/.codex/hooks.json(Codex CLI で /hooks を一度実行して信頼してください)
Cursorcursor~/.cursor/mcp.json~/.cursor/rules/palace.mdc~/.cursor/hooks.json
Gemini CLIgemini~/.gemini/settings.json~/.gemini/GEMINI.md~/.gemini/settings.json(Gemini で信頼できるフォルダー内でのみ実行してください)
VS Code (Copilot)vscodeCode/User/mcp.jsonCode/User/prompts/palace.instructions.md~/.copilot/hooks/palace.json(プロンプト時の想起機能はありません。VS Code はそこに挿入できないためです)
OpenCodeopencode~/.config/opencode/opencode.json~/.config/opencode/palace.md。instructions に記載~/.config/opencode/plugins/palace.js
Clinecline~/.cline/data/settings/cline_mcp_settings.json~/.cline/rules/palace.mdDocuments/Cline/Hooks(プロンプト時とツール実行後の想起。Cline はタスクの完了後に続行できないため、保存を促す通知はありません)。独自のフックスクリプトは上書きされません。
ZedzedZed の settings.json(context_servers)Zed のグローバル AGENTS.mdなし。Zed のエージェントにはフックがありません。Zed 内の外部エージェントは、それぞれ独自の Palace 設定を使用します。
GoosegooseGoose の config.yaml(extensions)Goose の .goosehints~/.agents/plugins/palace(保存を促す通知のみ。Goose のフックはコンテキストを挿入できません。Windows では sh が必要です)
Windsurfwindsurf~/.codeium/windsurf/mcp_config.json~/.codeium/windsurf/memories/global_rules.mdなし。Cascade のフックはコンテキストを挿入できません。Devin Local は Claude Code のフックを再利用します。
Claude Desktopclaude-desktopclaude_desktop_config.json~/.claude/CLAUDE.mdなし。代わりに MCP プロンプト を使用してください。

ルールファイルは管理ブロックとして書き込まれます。既存の内容は保持されます。

palace install --client claude                       # one client only
palace install --scope project --path ./my-project   # project-level rule files
palace install --no-rule                             # MCP wiring only, no rule
palace install --dry-run                             # preview the changes
palace uninstall                                     # undo everything

--scope project を指定すると、ルールは <project>/CLAUDE.md、<project>/AGENTS.md (Codex、OpenCode、Cline、Zed、Goose)、<project>/GEMINI.md、<project>/.github/copilot-instructions.md、 <project>/.windsurf/rules/palace.md、<project>/.cursor/rules/palace.mdc に書き込まれます。 Cursor、VS Code、OpenCode には、プロジェクト用の MCP 設定(.cursor/mcp.json、.vscode/mcp.json、opencode.json)も追加されます。

手動での MCP 設定

どの MCP クライアントでも、palace mcp を使って Palace を stdio サーバーとして実行できます。

JSON クライアント(Claude Code、Cursor、Claude Desktop):

{
  "mcpServers": {
    "palace": { "command": "palace", "args": ["mcp"] }
  }
}

Codex(~/.codex/config.toml):

[mcp_servers.palace]
command = "palace"
args = ["mcp"]

Claude Code CLI:

claude mcp add palace -- palace mcp
MCP プロンプト

Claude Desktop はフックを実行できないため、サーバーのプロンプト選択画面で次の 2 つのプロンプトを利用できます。

プロンプト機能
continue-sessionウォームスタート用のコンテキストを読み込み、エージェントが前回の続きから再開できるようにします
save-sessionセッションをメモリに保存し、次回に引き継げるようにします
プロファイル

プロファイルを変更すると、エージェントのルール、プロトコルのテキスト、palace init が検索するルームが変わります。

プロファイル用途典型的なルーム
coding(デフォルト)ソフトウェアプロジェクトフロントエンド、バックエンド、テスト、ドキュメント、設定
creativeワールドビルディング、D&D、フィクションキャラクター、場所、設定、派閥、年表
personalコーチング、介護、家事、クライアントのメモ人々、健康、財務、家、予定
palace install --profile creative

プロファイルは ~/.palace/config.json に保存されます。1 つのプロセスでのみプロファイルを上書きするには、PALACE_PROFILE を設定してください。

リモートモード(チームで共有するメモリー)

デフォルトでは、palace mcp はローカルの Palace を提供します。リモートモードでは、これを商用のセルフホスト可能なチーム版である Palace Server への stdio-to-HTTP ブリッジとして動作させます。クライアントの登録方法は変わりません。

palace remote set --endpoint https://palace.yourco.com   # prompts for the ps_… API key
palace remote on
palace remote test      # runs the MCP handshake and reports the tool count
palace remote status    # mode, endpoint, masked key
palace local            # back to the local palace

🧰 CLI リファレンス

すべてのフラグを確認するには、palace <command> --help を実行してください。

セットアップ

コマンド機能
palace installMCP サーバー、ルール、フックをエージェントに登録します
palace uninstallそれらを削除します
palace doctorバイナリ、データベース、MCP の設定、ルールを確認します
palace seed-adoption-factsエージェントの記憶の想起を測定可能にするナレッジグラフの事実を投入します

メモリーの追加

コマンド機能
palace init <dir>ルームを検出して palace.yaml を書き込みます(--yes はプロンプトをスキップし、--auto-mine は直後にマイニングを実行します)
palace mine <dir>プロジェクトファイルを分割し、埋め込みを生成して保存します。再実行時は変更されたファイルのみを処理します。
palace watch <dir>作業中に変更されたファイルを自動的に再マイニングします
palace mine-convos <dir>チャットのエクスポートを取り込みます:Claude Code と Codex の JSONL、Claude.ai、ChatGPT、Slack
palace sweep <path>トランスクリプト JSONL ファイルを、メッセージごとに 1 つのドロワーとして保存します
palace split連結された Claude Code のトランスクリプトを、セッションごとに 1 ファイルに分割します

メモリーの検索

コマンド機能
palace search <query>ハイブリッド検索(--wing、--room、--limit、--rerank)
palace wake-upL0 のアイデンティティと L1 の重要なストーリーを表示します
palace statusウィングとルームごとのドロワー数を表示します
palace wings登録済みのウィングを、種類、ドロワー数、最終マイニング時刻とともに表示します
palace timelineナレッジグラフの事実を時系列順に表示します(--entity で絞り込み)
palace gainエージェントによる Palace の利用状況と、それによる節約量を表示します

メンテナンス

コマンド機能
palace export / palace import <file>ドロワーを JSON としてバックアップまたは復元します(インポート時に埋め込みを再構築します)
palace prune --older-than-days <n>古いドロワーを削除します(--dry-run でプレビューできます)
palace repairベクトルが欠落しているドロワーの埋め込みを再生成します
palace upgrade-embeddingsアクティブなモデルを使ってすべての埋め込みを再生成します(設定の埋め込み範囲には --refresh-preferences を指定します)
palace embeddings …埋め込みモデルの一覧表示、見積もり、移行、検証、切り替え、ロールバックを行います
palace migrate <db>別の Palace データベースからドロワーをコピーします
palace compressドロワーを AAAK 方言に圧縮します

サーバー

コマンド機能
palace mcpMCP stdio サーバーを起動します
palace remote … / palace localリモートモードを設定して切り替えます
palace hook <event> --client <c>インストール済みのフックから呼び出されるフックランナーです
プロジェクトのマイニング
flowchart LR
    DIR["📁 Your repo"] --> F["Filter<br/>.gitignore + skip build dirs"]
    F --> C{"Changed since<br/>last mine?"}
    C -- no --> SKIP["Skip"]
    C -- yes --> CH["Chunk + pick room<br/>using palace.yaml"]
    CH --> E["Embed locally<br/>all-MiniLM-L6-v2"]
    E --> DB[("palace.db")]

図 4. 変更されたファイルのみを処理するため、マイニングは何度実行しても低コストです。

palace mine は .gitignore を尊重し、.git、node_modules、 target、build、dist、vendor などのビルド出力をスキップします。一般的なテキスト形式とソース形式を読み込みます:md、txt、rs、py、js、ts、tsx、go、 java、rb、sh、sql、json、yaml、toml、html、css、csv など。

palace mine ~/my-project \
  --wing my_project            # override the wing name
  --limit 100                  # process at most 100 new or changed files
  --dry-run                    # preview without storing
  --no-gitignore               # ignore .gitignore rules
  --include vendor,third_party # force-include these paths

--limit を指定した実行は再開できます。次回の実行では、前回停止した位置から続行します。

palace gain で価値を測定する
palace gain                       # last 30 days
palace gain --project my_project --since 7d
palace gain --history             # recent tool calls
palace gain --json
palace gain --record <query_id> <drawer_id> useful   # or not_useful / wrong_answer
palace gain - last 30d (my_project)
  Tool calls         : 412   (sessions: 27)
  Hit rate           : 88%   (search hits 142/162)
  Precision@1        : 92%
  Precision@5        : 95%
  Tokens saved (est) : ~78,400
  Re-index skipped   : 31    (duplicate drawers avoided)
  KG facts recalled  : 56
  Diary recalls      : 8
  Repeat Qs avoided  : 19
  p95 latency        : 41 ms

利用状況のメタデータは、ローカルの palace.db に保存されます。記録を無効にするには、PALACE_GAIN_DISABLED=1 を設定してください。


🧩 MCP ツール

全 50 ツール

ステータスとヘルス

ツール説明
palace_statusPalace の概要:引き出しとウィングの数、最近のセッション(verbose を指定すると、部屋、プロトコルのテキスト、AAAK 仕様が追加されます)
palace_verifyMCP ツール、データベースのヘルス、埋め込み、モデルキャッシュを確認します
palace_recall_checkプロジェクトメモリのプローブを実行し、期待されるヒットを報告します
palace_gain利用による効果と節約を確認します。フィードバック用の任意の record ペイロードを受け付けます。
palace_memory_report読みやすい一覧:プロファイル、ウィング別・部屋別の数、最近のアクティビティ

ウィングと分類体系

ツール説明
palace_project_statusこのプロジェクトはマイニング済み、登録済みだが未マイニング、または不明ですか?
palace_mine必要に応じてコードリポジトリをマイニングします(ユーザーの同意後)
palace_create_wingトピックまたはプロジェクトのウィングを宣言します
palace_list_wings登録済みウィングと、その種類、パス、最終マイニング日時、件数
palace_list_roomsウィング内の部屋を一覧表示します
palace_get_taxonomyウィング → 部屋 → 件数の完全なツリー

検索

ツール説明
palace_searchスコアの出所情報とソースコンテキストを含むハイブリッド検索
palace_preference_search好みや規約に関する質問に特化した検索
palace_check_duplicateコンテンツがすでに存在するか確認します

引き出し

ツール説明
palace_add_drawerウィングと部屋にコンテンツを保存します
palace_remember重要度 5 で重要な事実を保存します
palace_get_drawerID で引き出しを取得します
palace_list_drawers引き出しを一覧表示します。ウィングと部屋で絞り込むこともできます
palace_update_drawerコンテンツを更新し、メタデータを再生成します
palace_delete_drawer / palace_forget引き出しを削除します
palace_explain完全な出所情報:保存者、日時、保存元、重要度
palace_prune古くなった引き出しや価値の低い引き出しを削除します
palace_export / palace_importPalace のデータをエクスポートまたはインポートします
palace_upgrade_embeddings引き出しを再度埋め込み、好みのベクトルを更新します
palace_embeddingsモデルの一覧表示と見積もりを行い、指定に応じて別の埋め込みモデルへ移行します

ナレッジグラフ

ツール説明
palace_kg_queryエンティティの関係を検索します
palace_kg_add事実を追加します(主語 → 述語 → 目的語)
palace_kg_invalidate事実がもはや正しくないことを示します
palace_kg_timeline時系列順の事実
palace_kg_statsグラフの概要
palace_conflicts古くなった事実や矛盾する事実を見つけます
palace_seed_adoption_facts導入と品質ゲートに関する事実を登録します

グラフとトンネル

ツール説明
palace_traverse部屋から幅優先でたどります
palace_find_tunnels2 つのウィングをつなぐ部屋を探します
palace_create_tunnel / palace_list_tunnels / palace_delete_tunnel保存済みのトンネルを管理します
palace_follow_tunnelsウィングと部屋からトンネルをたどります
palace_graph_statsグラフの概要

日記とセッション

ツール説明
palace_diary_write日記エントリーを書き込みます
palace_diary_read最近のエントリーを読み込みます
palace_diary_search日記を検索します。all_agents: true を指定すると、すべてのエージェントの日記を検索します。
palace_session_contextセッション開始時のコンテキスト。プロジェクトに関する他のエージェントの最近の作業を代わりに使用します。
palace_list_agentsエージェントの日記を一覧表示します

内部

ツール説明
palace_get_aaak_specAAAK 圧縮メモリの方言仕様
palace_hook_settingsフックの設定
palace_memories_filed_away停止フックが使用する確認応答

🔧 設定

設定は、環境変数、~/.palace/config.json、デフォルト値の順に読み込まれます。

環境変数デフォルト値説明
PALACE_PALACE_PATH~/.palace/palaceデータディレクトリです。データベースはその中の palace.db です。
PALACE_PROFILEcodingcoding、creative、または personal
PALACE_RERANKオフ1 にすると、すべての検索でローカルの再ランキング機能が有効になります
PALACE_RERANK_MODEL組み込み再ランキングモデルを上書きします
PALACE_ENTITY_LANGUAGESenエンティティ検出に使用する言語をカンマ区切りで指定します
PALACE_GAIN_DISABLEDオフ1 にすると、使用状況の記録が無効になります
PALACE_PROJECT自動利用状況の帰属先として使用するプロジェクト名です
PALACE_SOURCE_DIR~/Desktop/transcriptspalace split のデフォルトのソースです
PALACE_MINE_TRACEオフ1 にすると、マイニングのステージごとの所要時間が表示されます
PALACE_MCP_MODElocallocal または remote
PALACE_EMBEDDING_MODELminilm-l6-v2新しい palace に使用する埋め込みモデルです(埋め込みモデルを参照)
PALACE_EMBEDDING_LATENCY_BUDGET_MS現在の p95 の 2 倍palace embeddings verify のクエリレイテンシ予算です
PALACE_EMBED_THREADS全コア埋め込みに使用する ONNX スレッド数です
PALACE_REMOTE_ENDPOINTなしPalace Server の URL です(ホスト、ベース URL、または完全な /mcp URL)
PALACE_API_KEYなしPalace Server の API キーです(ps_…)

config.json では、同じ設定をキーとして指定します:palace_path、profile、 entity_languages、topic_wings、people_map、mcp_mode、 remote_endpoint、remote_api_key、embedding_model、 embedding_latency_budget_ms。Palace は、このファイルに所有者のみがアクセスできる 0600 権限を設定して書き込みます。

palace.yaml(プロジェクトごと)

palace init でこのファイルが作成されます。ファイルと部屋の対応付けを調整するには、編集してください:

wing: my_project
rooms:
  - name: backend
    description: Server and API code
    keywords: [api, server, routes, models]
  - name: frontend
    description: UI components
    keywords: [ui, components, pages, views]
  - name: general
    description: Everything else
    keywords: []

📊 ベンチマーク

コーディングエージェントのメモリ評価

現実的なプロジェクトの記憶(決定事項、過去の失敗、コマンド、 規約、好み、現在の方針)を用いたフィクスチャで、次のような質問が 51 件あります:

  • なぜバンドル版 sqlite を選んだのか?
  • 前回、マイグレーションテストの失敗をどのように修正したのか?
  • どの clippy コマンドを実行すればよいのか?
cargo test --test coding_agent_eval -- --nocapture

テストでは recall@1 と recall@5 が報告され、検索結果が固定のしきい値を下回ると失敗します。重要な問いに答えるものです。コーディングエージェントは、必要なときに適切なプロジェクトコンテキストを見つけられるでしょうか?

この評価は、意図的に一部調整されています。 ランカーのコーディングエージェント向けブーストには、評価用の質問から抽出したいくつかのフレーズ(「explain themselves」、「proof priority」、「release theme」など)が含まれているため、ここおよび以下の比較評価での調整済みスコアは、一般的なランキングだけの場合より高くなります。一般的な改善によって同じ数値に到達するまで、これらのフレーズを維持し、その後削除します。同じコードで、これらのフレーズを削除して測定した結果:

モード評価用フレーズあり(調整済み)R@1 / R@5フレーズなし R@1 / R@5
キーワードのみ(このテスト)0.863 / 1.0000.804 / 0.961
minilm-l6-v20.902 / 1.0000.902 / 1.000
minilm-l6-v2-q80.922 / 1.0000.902 / 1.000

これらのフレーズは、この評価以外には影響しません。実際の palace のプローブと、セッションごとの LongMemEval のランキングはすべて、フレーズの有無にかかわらず同一です。

埋め込みモデルの比較

tests/embedding_bakeoff.rs は、埋め込みドロワーを使ったこの評価と、実際のパレスから取得した既知アイテムのプローブ200件で、すべての埋め込みモデルを評価します。また、インデックス作成のスループットとクエリのレイテンシも測定します。各プローブはドロワー内の文で、単語の約30%を削除しています。

PALACE_RUN_BAKEOFF=1 PALACE_BAKEOFF_DB=~/.palace/palace/palace.db \
  cargo test --release --test embedding_bakeoff -- --nocapture
モデルコーディング評価 R@1 / R@5(調整後)パレスのプローブ R@1 / R@5インデックス作成クエリ p95
minilm-l6-v2(デフォルト)0.902 / 1.0000.850 / 0.970112ドロワー/秒2.3 ms
minilm-l6-v2-q80.922 / 1.0000.860 / 0.980204ドロワー/秒2.6 ms
bge-small0.863 / 1.0000.910 / 0.98555ドロワー/秒7.2 ms
bge-small-q80.863 / 1.0000.915 / 0.985103ドロワー/秒5.5 ms
bge-base-q80.863 / 1.0000.920 / 0.98539ドロワー/秒11.0 ms

10,700ドロワーのパレスから抽出した400ドロワーでのハイブリッド再現率。Windows、16スレッド。BGEは、コサイン類似度の下限を0.5にし、コサイン類似度とBM25を均等に組み合わせると最高の順位付けを実現します。この設定はレジストリエントリに含まれています。コーディングエージェントの評価でMiniLMと同等の結果を出したモデルのみ、非実験版として提供されます。そのため、実際のパレスでのプローブでは優れた結果を出しているものの、BGEモデルは現時点では実験版のままです。verify は切り替える前に、ユーザー自身のパレスで同じ測定を行います。

LongMemEval

LongMemEval s_cleaned での検索再現率。評価対象は質問470件で、それぞれ約50セッション、11万5千トークンのヘイスタックを対象とします。標準的な手順に従い、回答保留の質問30件は除外しています。

構成モデルR@1R@5R@10
oracle 分割(健全性チェック)minilm-l6-v21.0001.0001.000
セッションごとに1つのドロワーminilm-l6-v20.8890.9790.991
セッションごとに1つのドロワーminilm-l6-v2-q80.8910.9790.991
交換ペア、Palaceがチャットを取り込む方式minilm-l6-v2-q80.9060.9850.994

交換ペアの行は、Palaceが実際に会話を保存する方法です。各セッションは palace mine-convos と同じノーマライザーとチャンク分割器を通り(ユーザーの各ターンとその返答を1チャンクにまとめる)、セッション内で最も評価の高いチャンクに基づいて順位付けされます。セッションごとの行は、他のシステムと比較するための、LongMemEvalで一般的な粒度です。

手法とタイプ別の結果
  • 粒度: 各行に記載のとおりです。LLMによるフィルタリング、要約、抽出は行いません。ユーザーとアシスタントのターンはまとめて保存されます。
  • 埋め込みモデル: MiniLM-L6-v2(384次元、ONNX、フル精度またはint8)、トークン上限512、ローカル実行。
  • 検索: Palaceの通常のハイブリッド検索(BM25とコサイン類似度を組み合わせ、順位付けのブーストを適用)、上位10件。
  • いずれの段階でもLLMは不使用。GPUも使わず、LongMemEvalに合わせた調整も行っていません。
  • 指標: セッション単位の recall_any@K。
  • ハードウェア: Windows、16スレッド。
質問タイプセッション単位、minilm-l6-v2 R@1 / R@5交換ペア、q8 R@1 / R@5
knowledge-update0.944 / 1.0000.958 / 1.000
multi-session0.909 / 0.9830.901 / 0.992
single-session-assistant1.000 / 1.0001.000 / 1.000
single-session-preference0.633 / 0.8330.767 / 0.900
single-session-user0.922 / 1.0000.984 / 1.000
temporal-reasoning0.835 / 0.9760.835 / 0.976

oracle 分割には正解セッションのみが含まれるため、検索性能ではなくパイプラインを検証します。最も結果が弱いのは好みに関する質問です。「私は…が好きです」という文は、質問とキーワードが一致しないことが多いためです。残る時間に関する誤りの大半は相対的な日付(「1週間前」など)について尋ねるもので、現在の順位付けではまだ考慮されません。

以前の実行(2026年5月、コーディングエージェント向けブーストを適用する前)では、セッション単位で0.889 / 0.981 / 0.991でした。その後のランカー変更で2件の質問の結果が悪化しました。うち1件は修正済みで、もう1件は「should」に対して慣例ブーストが適用されることが原因です。


🔒 プライバシーとデータ

  • デフォルトですべてローカルに保存されます。 SQLite ファイルは ~/.palace/palace/palace.db にあります。埋め込みは CPU 上で計算されます。
  • ネットワークアクセスは、Hugging Face からの初回のモデルダウンロードと、リモートモードを有効にした場合のご自身の Palace Server に限られます。
  • テレメトリーはありません。 palace gain の統計情報はローカルデータベースのみに書き込まれます。
  • バックアップには palace export を使うか、palace.db をコピーしてください。
  • 削除するには、palace_forget で単一のメモリを削除するか、~/.palace を削除してすべてを消去してください。

Palace は、マイニングした内容をすべて保存します。リポジトリをマイニングする前に、.gitignore で秘密情報を除外してください。


🩺 トラブルシューティング

問題対処方法
エージェントが Palace をまったく呼び出さないpalace doctor を実行し、エージェントアプリを完全に再起動してください。Codex CLI では、/hooks を一度実行してフックを信頼してください。
palace: command not found新しいターミナルを開いて、インストールディレクトリが PATH に反映されるようにするか、フルパスで palace doctor を実行してください。
検索結果が表示されないpalace status を確認してください。プロジェクトに引き出しがない場合は、palace init <dir> --yes --auto-mine を実行してください。
検索結果が最新ではないpalace mine <dir> を再実行してください(変更されたファイルのみ処理されます)。または、palace watch <dir> を実行したままにしてください。
モデルのダウンロードに失敗するhuggingface.co にアクセスできることを確認してから、再試行してください。モデルは初回のダウンロード成功後にキャッシュされます。
初回の検索が遅く感じる初回の呼び出しでは ONNX モデルを読み込みます。同じセッションでの以降の呼び出しは高速です。
ベクトルのない引き出しがあるpalace repair

❓ FAQ

エージェントに使うよう伝える必要がありますか?

いいえ。palace install の実行後、フックがセッション開始時、プロンプト送信時、エージェントがコードを読む間に、関連するメモリーを注入します。インストールされたルールにより、エージェントは過去の経緯に関する質問に答える前にメモリーを検索し、その後、学んだことを保存します。

CLAUDE.md や AGENTS.md とはどう違いますか?

これらのファイルは自分で作成して手動で管理する指示であり、すべての行がすべてのセッションに読み込まれます。Palace は作業とともに増えていく検索可能なメモリーです。現在の質問に関連する部分だけが呼び出され、Claude Code、Codex、Cursor、Claude Desktop で同じメモリーを共有します。ルールには引き続き指示ファイルを使い、過去の経緯には Palace を使ってください。

データはどこかに送信されますか?

いいえ。ストレージ、埋め込み、検索はすべてローカルで実行されます。ネットワーク通信が発生するのは、Hugging Face からのモデルの初回ダウンロードと、リモートモードを有効にした場合のご自身の Palace Server への接続のみです。プライバシーとデータをご覧ください。

エージェントの動作は遅くなりますか?

検索は通常、数十ミリ秒で完了します(実際の p50 と p95 は palace gain で確認できます)。セッション中の最初の呼び出しでは、埋め込みモデルが読み込まれます。フックはフェイルオープンなので、palace が見つからない場合や壊れている場合でも、エージェントの動作が妨げられることはありません。

メモリーの情報が古くなった場合はどうなりますか?

palace mine を再実行すると、変更されたファイルが更新されます。事実については、エージェントが palace_kg_invalidate を呼び出して新しい事実を追加するため、タイムラインには両方が保持されます。palace_conflicts は古くなった、または矛盾しているように見える事実を検出し、不要になった引き出しは palace_forget または palace prune で削除できます。

チーム全体で1つのメモリーを共有できますか?

同じマシン上の異なるエージェント間では、すでにメモリーが共有されています。Codex のセッションから Claude Code のセッションの日記を参照できます。チームで共有する場合は、リモートモードで、すべての palace mcp を共有のセルフホスト可能な Palace Server に接続します。

コード専用ですか?

いいえ。creative プロファイルと personal プロファイルは、Palace を世界観の構築、フィクション、コーチング、介護、家庭のメモ向けに調整します。Palace は Markdown ファイルとテキストファイルを読み込むため、Claude Desktop ユーザーは MCPB バンドルをインストールすれば、コードを書かずに使い始められます。


📚 Palace をライブラリとして使う

Palace は Rust クレート(palace)としても利用できます。Git の依存関係として追加してください。

[dependencies]
palace-rs = { git = "https://github.com/AncientiCe/palace-rs", default-features = false }
use palace::{db, knowledge_graph, store};

let conn = db::open_in_memory()?;
store::add_drawer(&conn, "wing_code", "backend",
    "We use SQLite with WAL mode for concurrent reads.",
    None, "architecture.md", 0, "example", 4.0)?;
knowledge_graph::add_triple(&conn, "Palace", "stores_data_in", "SQLite",
    Some("2026-04-01"), None, 1.0, None, None)?;

default-features = false を指定すると、CLI の依存関係が除外されます。完全な例については、examples/basic_usage.rs(cargo run --example basic_usage)をご覧ください。palace::palace::Palace::search_with_provenance は、MCP ツールと同じスコアの詳細を返します。


🧪 開発

cargo fmt
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features
cargo audit

テストではインメモリー SQLite を使用し、埋め込みモデルを必要とするテストのみがモデルを読み込みます。CONTRIBUTING.md、SECURITY.md、CHANGELOG.mdをご覧ください。


🚚 以前のバージョンからの移行

mempalace(0.1.x)から

バージョン 0.2.0 で、プロジェクト名が mempalace から palace に変更されました。0.2.x 系では、警告付きで旧名称も引き続き使用できました。0.3.0 で旧名称は削除されました。

0.1.x からアップグレードするには、まず 0.2.x リリースをインストールして palace install を実行し、設定を移行して ~/.mempalace を ~/.palace に移動する方法があります。または、手動で名前を変更してください。~/.mempalace → ~/.palace、mempalace.yaml → palace.yaml、MEMPALACE_* → PALACE_*、および mempalace_* MCP ツール → palace_* に変更します。mempalace mcp または python -m mempalace.mcp_server を実行していたフックは、今後 palace mcp を実行してください。

Python バージョンから

Rust バージョンでは、ChromaDB と SQLite の組み合わせが単一の palace.db に置き換わります。ChromaDB のデータは変換できないため、再取り込みしてください。

palace init ~/my-project --yes --auto-mine
palace mine-convos ~/Desktop/transcripts
palace status

~/.palace/ 内の identity.txt、people_map.json、known_names.json は引き続き互換性があり、自動的に読み込まれます。


📜 ライセンス

MIT

コメント

MCP は初めてですか?

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

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