Palace について
Palaceは、コーディングエージェント向けのローカル優先型メモリーMCPサーバーです。プロジェクト情報をSQLiteファイルに原文のまま保存し、ローカル埋め込み、自動フック、出典付き検索によってセッションをまたいで活用します。
主な機能
- 01SQLiteへの原文保存
- 02ローカル埋め込みとハイブリッド検索
- 03フックによるセッション記憶の自動想起
- 04出典情報付きの検索結果
- 05日記と時刻付き事実グラフ
活用シーン
- 01セッションをまたいだプロジェクト決定の確認
- 02過去の修正、コマンド、好みの再利用
- 03エージェントやCLIからのプロジェクトノート検索
MCP 対応
Palaceは、検索、ステータス、日記、ナレッジグラフなどのメモリーツールをMCPクライアントに提供します。エージェントは埋め込みモデルの移行ツールも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
コーディングエージェントのためのローカルファーストなメモリ。
セッションをまたいで、エージェントが決定事項、修正内容、コマンド、設定を覚えておけます。
バイナリは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
メモリは建物のように整理されるため、検索対象を絞り込めます。
図 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-v2 | all-MiniLM-L6-v2 | fp32 | デフォルト |
minilm-l6-v2-q8 | all-MiniLM-L6-v2 | int8 | インデックス作成が約 2 倍高速で、ベイクオフでは再現率は同等 |
bge-small | bge-small-en-v1.5 | fp32 | 試験的、インデックス作成は約 2.5 倍低速 |
bge-small-q8 | bge-small-en-v1.5 | int8 | 試験的 |
bge-base-q8 | bge-base-en-v1.5 | int8 | 試験的、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 はユーザーレベルのフックを登録するため、プロジェクトごとのファイルを編集しなくても、すべてのプロジェクトでメモリが機能します。
図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 は、各クライアントの指示ファイルにも短いルールを書き込みます。このルールでは、エージェントがメモリを使うタイミングを指定します。
- セッション開始時:
palace_status→palace_session_context→palace_diary_search。 - 過去の決定事項、好み、履歴に関する質問に回答する前: grep より先に
palace_searchとpalace_kg_query。 - 作業後:
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> を使用します。
| クライアント | --client | MCP 設定 | ルールファイル | フック |
|---|---|---|---|---|
| Claude Code | claude | ~/.claude.json | ~/.claude/CLAUDE.md | ~/.claude/settings.json |
| Codex | codex | ~/.codex/config.toml | ~/.codex/AGENTS.md | ~/.codex/hooks.json(Codex CLI で /hooks を一度実行して信頼してください) |
| Cursor | cursor | ~/.cursor/mcp.json | ~/.cursor/rules/palace.mdc | ~/.cursor/hooks.json |
| Gemini CLI | gemini | ~/.gemini/settings.json | ~/.gemini/GEMINI.md | ~/.gemini/settings.json(Gemini で信頼できるフォルダー内でのみ実行してください) |
| VS Code (Copilot) | vscode | Code/User/mcp.json | Code/User/prompts/palace.instructions.md | ~/.copilot/hooks/palace.json(プロンプト時の想起機能はありません。VS Code はそこに挿入できないためです) |
| OpenCode | opencode | ~/.config/opencode/opencode.json | ~/.config/opencode/palace.md。instructions に記載 | ~/.config/opencode/plugins/palace.js |
| Cline | cline | ~/.cline/data/settings/cline_mcp_settings.json | ~/.cline/rules/palace.md | Documents/Cline/Hooks(プロンプト時とツール実行後の想起。Cline はタスクの完了後に続行できないため、保存を促す通知はありません)。独自のフックスクリプトは上書きされません。 |
| Zed | zed | Zed の settings.json(context_servers) | Zed のグローバル AGENTS.md | なし。Zed のエージェントにはフックがありません。Zed 内の外部エージェントは、それぞれ独自の Palace 設定を使用します。 |
| Goose | goose | Goose の config.yaml(extensions) | Goose の .goosehints | ~/.agents/plugins/palace(保存を促す通知のみ。Goose のフックはコンテキストを挿入できません。Windows では sh が必要です) |
| Windsurf | windsurf | ~/.codeium/windsurf/mcp_config.json | ~/.codeium/windsurf/memories/global_rules.md | なし。Cascade のフックはコンテキストを挿入できません。Devin Local は Claude Code のフックを再利用します。 |
| Claude Desktop | claude-desktop | claude_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 install | MCP サーバー、ルール、フックをエージェントに登録します |
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-up | L0 のアイデンティティと 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 mcp | MCP 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_status | Palace の概要:引き出しとウィングの数、最近のセッション(verbose を指定すると、部屋、プロトコルのテキスト、AAAK 仕様が追加されます) |
palace_verify | MCP ツール、データベースのヘルス、埋め込み、モデルキャッシュを確認します |
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_drawer | ID で引き出しを取得します |
palace_list_drawers | 引き出しを一覧表示します。ウィングと部屋で絞り込むこともできます |
palace_update_drawer | コンテンツを更新し、メタデータを再生成します |
palace_delete_drawer / palace_forget | 引き出しを削除します |
palace_explain | 完全な出所情報:保存者、日時、保存元、重要度 |
palace_prune | 古くなった引き出しや価値の低い引き出しを削除します |
palace_export / palace_import | Palace のデータをエクスポートまたはインポートします |
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_tunnels | 2 つのウィングをつなぐ部屋を探します |
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_spec | AAAK 圧縮メモリの方言仕様 |
palace_hook_settings | フックの設定 |
palace_memories_filed_away | 停止フックが使用する確認応答 |
🔧 設定
設定は、環境変数、~/.palace/config.json、デフォルト値の順に読み込まれます。
| 環境変数 | デフォルト値 | 説明 |
|---|---|---|
PALACE_PALACE_PATH | ~/.palace/palace | データディレクトリです。データベースはその中の palace.db です。 |
PALACE_PROFILE | coding | coding、creative、または personal |
PALACE_RERANK | オフ | 1 にすると、すべての検索でローカルの再ランキング機能が有効になります |
PALACE_RERANK_MODEL | 組み込み | 再ランキングモデルを上書きします |
PALACE_ENTITY_LANGUAGES | en | エンティティ検出に使用する言語をカンマ区切りで指定します |
PALACE_GAIN_DISABLED | オフ | 1 にすると、使用状況の記録が無効になります |
PALACE_PROJECT | 自動 | 利用状況の帰属先として使用するプロジェクト名です |
PALACE_SOURCE_DIR | ~/Desktop/transcripts | palace split のデフォルトのソースです |
PALACE_MINE_TRACE | オフ | 1 にすると、マイニングのステージごとの所要時間が表示されます |
PALACE_MCP_MODE | local | local または remote |
PALACE_EMBEDDING_MODEL | minilm-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.000 | 0.804 / 0.961 |
minilm-l6-v2 | 0.902 / 1.000 | 0.902 / 1.000 |
minilm-l6-v2-q8 | 0.922 / 1.000 | 0.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.000 | 0.850 / 0.970 | 112ドロワー/秒 | 2.3 ms |
minilm-l6-v2-q8 | 0.922 / 1.000 | 0.860 / 0.980 | 204ドロワー/秒 | 2.6 ms |
bge-small | 0.863 / 1.000 | 0.910 / 0.985 | 55ドロワー/秒 | 7.2 ms |
bge-small-q8 | 0.863 / 1.000 | 0.915 / 0.985 | 103ドロワー/秒 | 5.5 ms |
bge-base-q8 | 0.863 / 1.000 | 0.920 / 0.985 | 39ドロワー/秒 | 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@1 | R@5 | R@10 |
|---|---|---|---|---|
oracle 分割(健全性チェック) | minilm-l6-v2 | 1.000 | 1.000 | 1.000 |
| セッションごとに1つのドロワー | minilm-l6-v2 | 0.889 | 0.979 | 0.991 |
| セッションごとに1つのドロワー | minilm-l6-v2-q8 | 0.891 | 0.979 | 0.991 |
| 交換ペア、Palaceがチャットを取り込む方式 | minilm-l6-v2-q8 | 0.906 | 0.985 | 0.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-update | 0.944 / 1.000 | 0.958 / 1.000 |
| multi-session | 0.909 / 0.983 | 0.901 / 0.992 |
| single-session-assistant | 1.000 / 1.000 | 1.000 / 1.000 |
| single-session-preference | 0.633 / 0.833 | 0.767 / 0.900 |
| single-session-user | 0.922 / 1.000 | 0.984 / 1.000 |
| temporal-reasoning | 0.835 / 0.976 | 0.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 は引き続き互換性があり、自動的に読み込まれます。
📜 ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。