peon-mem について
peon-memは、コーディングエージェント向けのローカル優先メモリーサーバーです。全体とプロジェクト別の記憶を信念記録と逐語的なセッション記録に整理し、フックによる取得と関連コンテキストの注入を行います。
主な機能
- 01全体・プロジェクト別の階層型メモリー
- 02セッションの自動記録とプロンプト注入
- 03信念と逐語的なエピソード記憶
- 04語彙・意味検索の組み合わせ
- 05メモリーモニターと日次自己監査
活用シーン
- 01コーディングセッションをまたいだ決定事項の保持
- 02同じプロジェクトの複数エージェント間での記憶共有
- 03要約から漏れた具体的な詳細の検索
MCP 対応
セッション、コンテキスト、メモリー操作用のMCPツールを16個提供します。MCPクライアントはstdio経由でローカルサーバーに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
16掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| cwd | string | いいえ | |
| client | string | はい | |
| projectPath | string | はい |
詳細
🧠 Peon — AI コーディングエージェントのためのメモリーブレイン
Claude Code、Codex、およびあらゆる MCP クライアントに対応した、ローカルファーストで階層型の自己改善メモリーです。
AI はセッションが終わるたびにすべてを忘れてしまいます。Peon は違います。セッションを記録し、LLM を使って種類別の信念に整理して、関連するものを各プロンプトに再び注入します。お使いのマシン上でデーモンとして動作し、データが外部に送信されることはありません。
PEON GLOBAL BRAIN ← user-level facts & preferences, inherited everywhere
/ | \
project A project B project C ← rooted child brains (.peon/ in each project)
Peon を選ぶ理由
- 階層型のブレイン。 1つのグローバルな親ブレインに、あなたが何者か、ルール、ツールを保存します。プロジェクトごとに独立した子ブレインが作られます。注入される内容には両方が含まれます。
- 2層のメモリーを、正直に評価。 統合された信念(決定、好み、事実、アーティファクト)で要点を把握できます。さらに、エピソードの逐語的なレイヤーで、情報を失う要約からこぼれ落ちた詳細を正確に取り戻せます。私自身が実施した LongMemEval では、生のエピソード記憶の再現率が61%だったのに対し、信念のみでは17%でした。独立したベンチマークではなく、自己評価の結果です。
npm run evalで再現できます。 - 自動記録と注入。 Claude Code のフックがメッセージとイベントを記録し、クエリに基づいて順位付けしたメモリーブロック(
⚠ MOST RELEVANTの見出し付き)を各プロンプトに注入します。保存を覚えておく必要はありません。 - コストを考慮した統合。 新しいメモリーが十分に蓄積されたときだけ、LLM がセッションを信念に要約します。既存の信念を置き換えたり、統合したり、競合を示したりできます。破壊的に削除されることはありません。
- ハイブリッド検索。 字句検索とセマンティック検索の RRF 融合、MMR による多様性、強化、最新性を組み合わせます。クエリの埋め込みはディスクにキャッシュされるため、同じプロンプトを再実行しても費用はかかりません。
- ニューラルユニバース。
localhost:3737/monitorのライブモニターでは、すべての信念が星として表示されます。プロジェクトは銀河になり、検索すると一致する星が明るく輝き、自律的なキュレーションが脈打ちます。 - 毎日の自己監査(STL)。 Peon は毎日、自らをチェックします。記録した内容、注入した内容、失敗した内容、統合で行った処理を確認し、判定付きのレポートを作成します。
- 評価で品質を担保する開発。 コミットされた結果台帳には、各行に Git SHA、qrels、ブレインのフィンガープリントが記録され、検索の変更を主張ではなく証拠で示せます。否定的な結果も記録に残ります。
- ローカルファーストで、厳重に保護。 読み取り可能なプレーンな JSONL、DNS リバインディング対策を備えたループバック専用デーモン、注入境界でのシークレットの秘匿、パストラバーサル対策を備えています。
ライブモニター:実際の1万8千件の信念が星として表示されます。入力すると一致する信念が明るく輝き、クリックすると詳細を確認できます。

フィールドに問いかけましょう。「wulver cluster」と入力すると、400件以上の一致する信念が明るく輝き、残りが暗くなり、カメラがそれらの場所まで移動します。
なぜ「Peon」なのか?
この名前は、インドのオフィスに由来します。どのオフィスにもペオンと呼ばれる人がいました。一日中、机から机へと歩き回り、このテーブルから書類を集め、誰が何を必要としているかを記録し、次のテーブルまで運び、すべての場所を覚えておく人です。彼は上司でもスターでもありませんでしたが、オフィス全体はひそかに彼によって支えられていました。彼なしでは何も進まず、彼は物の場所を決して忘れませんでした。
このフレームワークは、それを AI で実現したものです。Peon はセッションとプロジェクトの間を行き来します。ある机(セッション)で起きたことを集め、適切なキャビネット(プロジェクトの脳)にファイルし、頼まれる前に関連する書類を次の机へ運び(注入)、上の階にはマスター台帳(グローバルの脳)を保管します。静かな事務員。完璧な記憶力。オフィスは彼によって支えられています。
Peon と既存のメモリーツールの違い
| Peon | mem0 | Letta/MemGPT | Zep/Graphiti | フラットなメモリーファイル(MEMORY.md) | |
|---|---|---|---|---|---|
| 実行環境 | 100% ローカルのデーモン | クラウドまたはセルフホスト | サーバー | クラウド/サーバー | ローカル |
| ストレージ | cat で読める、人間にも理解しやすい JSONL | ベクターデータベース | データベース | グラフデータベース | Markdown |
| メモリーモデル | 信念+逐語的なエピソード層 | 抽出された事実 | 自己編集ブロック | 時系列ナレッジグラフ | 散文 |
| 階層構造 | グローバル親脳 → プロジェクトごとの子脳。すべてのプロンプトで継承 | ユーザー/エージェント/セッションのスコープ | エージェントごと | ユーザーごと | プロジェクトごとのファイル |
| 記録 | フックによる自動記録(手間ゼロ) | 自分で記述する SDK 呼び出し | エージェントが管理 | SDK 呼び出し | エージェントが自分で書き込む必要あり |
| 矛盾への対応 | 上書き/統合。復元可能で、完全削除はしません | LLM が削除する可能性あり | 自己編集 | 無効化 | 上書き |
| 正確な想起 | エピソード層の回帰テスト済み(LongMemEval では、信念のみの 17% に対して 61%。自己測定) | 要約のみ | 要約のみ | グラフの事実 | 書き込まれた内容による |
| 可観測性 | リアルタイムの Neural Universe モニター+日次セルフ監査(STL)+サービステレメトリー | ダッシュボード | — | — | — |
| 検証 | コミット済み評価台帳。否定的な結果も保持 | ベンダーのベンチマーク | — | ベンダーのベンチマーク | — |
要するに、mem0 と Zep は、あなたが構築する製品向けのメモリープラットフォームです。Peon は、すでに使っているコーディングエージェント向けのメモリーです。Claude Code または Codex に約 5 分で接続でき、Peon が考える様子を確認し、主張する数値をすべて監査できます。
エージェントはひとつの脳を共有します
複数のコーディングエージェント(たとえば、Claude Code と Codex)を実行している場合、通常、それぞれが独立した環境で動作します。一方のエージェントと一緒に解決したことは、もう一方に切り替えると失われてしまいます。
両方を同じプロジェクトに向けると、Peon がその壁を取り払います。どちらのエージェントも同じ.peon/の脳を使います(Peon はプロジェクトパスを正規化するため、フック、MCP の直接呼び出し、Codex のいずれも同じストアを使います)。そのため、メモリーはエージェント間を流れます。
- Codex がビルドパイプラインの実行方法を解明して記録します。次にそのリポジトリで Claude Code を開いたときには、すでに注入されたコンテキストに含まれています。
- Claude Code が注意点に遭遇して記録します。Codex は
get_contextまたはsearch_memoryを呼び出した時点ですぐにそれを確認できます。 - グローバルの脳は両方の上位にあるため、あなたの好みやルールは、すべてのプロジェクトの、すべてのエージェントに引き継がれます。
両者がリアルタイムで会話するわけではありません。共有ノートに両方が書き込み、両方が読み込むため、一方のエージェントで決めたことが、説明し直さなくてももう一方に反映されます。プロジェクトはひとつ、メモリーもひとつ。エージェントの数はいくつでも構いません。
クイックスタート
要件:Node 20 以降、macOS または Linux。OpenRouter の API キーを推奨します(統合+セマンティック埋め込みに使用)。キーがなくても、Peon は語彙検索のみで動作します。
ワンライナー:
npm install -g peon-mem && peon-mem install
(Node がない場合:curl -fsSL https://raw.githubusercontent.com/VineetV2/peon-mem/main/install.sh | bash)
ガイド付きセットアップでは、次の 4 項目を確認します。
- グローバルブレインの保存場所(デフォルト:
~/Library/Application Support/Peon) - 使用する LLM:OpenRouter(キー 1 つで任意のモデル)・OpenAI・Anthropic・Ollama(完全ローカルで無料)、またはスキップ
- デーモンを自動起動サービスとしてインストールします(macOS では launchd、Linux では systemd ユーザーユニット)
- AI アプリを検出し、選択したアプリに MCP サーバー(および Claude Code 用フック)を接続します。自動設定に対応:Claude Code、Claude Desktop、Codex、Gemini CLI、Cursor、Windsurf、Cline、VS Code(Copilot MCP)、Zed、LM Studio。アプリ内の手順を表示して検出に対応:ChatGPT Desktop、Perplexity Desktop。変更した設定ファイルはすべて
.peon-backupとしてバックアップされます。
これによりパッケージをビルドし、デーモンをサービスとして起動し、Claude Code のフックと MCP サーバーを接続(設定のバックアップ付き)して、設定テンプレートを書き込みます。その後、~/Library/Application Support/Peon/.env にキーを追加して、モニターを開いてください。peon-mem install --dry-run で事前にすべての処理を確認できます。peon-mem uninstall でインストールを元に戻せます(メモリデータは変更されません)。
または、手動で設定します。
git clone https://github.com/VineetV2/peon-mem && cd peon-mem
npm install && npm run build
node bin/peon-mem.mjs install --dry-run # inspect, then run without --dry-run
リポジトリのルートに .env を作成します。
OPENROUTER_API_KEY=sk-or-...
PEON_PROCESSING_MODEL=google/gemini-2.5-flash-lite # cheap + good enough (measured)
PEON_EMBEDDING_MODEL=openai/text-embedding-3-small
デーモンを起動します(インストーラーに launchd/systemd の設定例が表示されます。または、次のコマンドを実行します)。
node dist/daemon-cli.js # serves 127.0.0.1:3737
次に、エージェントを接続します(インストーラーに使用するパスを埋め込んだ設定が表示されます)。
- Claude Code:フック(SessionStart / UserPromptSubmit / SessionEnd →
scripts/claude-peon-hook.mjs)と MCP サーバー(dist/index.js)を~/.claude/settings.jsonに追加します。 - Codex / 任意の MCP クライアント:
dist/index.jsを stdio MCP サーバーとして登録します。16 個のツール(start_session、get_context、search_memory、record_message、process_memory、…)を利用できます。
http://127.0.0.1:3737/monitor を開いて、ブレインが成長していく様子を確認してください。
仕組み
- 記録。 フックがメッセージ、イベント、ツール呼び出しを
<project>/.peon/raw/にストリーミングします(追記専用)。 - 統合。 サイズのしきい値を超えると、LLM がセッションの差分を型付きの信念レコードに変換し、
.peon/brain/memories.jsonlに保存します(重要度/確信度スコア、エンティティ、出典へのポインターを含む)。既存の信念と照合して、置き換え、統合、競合フラグ付けを行います。復元可能で、削除されることはありません。 - 検索+注入。 プロンプトごとに、信念を順位付け(RRF による語彙検索+セマンティック検索、MMR、強化)し、エピソード記録の逐語的な一致や継承されたグローバル信念とともに注入します。
- 自己キュレーション。 バックグラウンドのブレイン処理で、想起された信念を強化し、古くなったクラスターを圧縮して、重複を解消します。すべての処理がログに記録され、取り消し可能です。
- 自己監査(STL)。 毎日のジョブで、記録内容、注入内容、発生した問題、統合処理の正常性を、応答遅延のテレメトリと健全性判定とともに報告します。
完全なインストール手順(コピーして貼り付け)
1. デーモン(常時稼働、macOS launchd)
node scripts/install-peon.mjs # prints everything below filled in for YOUR paths
または手動で設定します — ~/Library/LaunchAgents/com.peon.daemon.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict>
<key>Label</key><string>com.peon.daemon</string>
<key>ProgramArguments</key><array>
<string>/opt/homebrew/bin/node</string>
<string>/ABSOLUTE/PATH/TO/peon/dist/daemon-cli.js</string>
</array>
<key>RunAtLoad</key><true/>
<key>KeepAlive</key><true/>
</dict></plist>
launchctl load ~/Library/LaunchAgents/com.peon.daemon.plist
curl http://127.0.0.1:3737/health # → {"ok":true}
Linux:インストーラーは ~/.config/systemd/user/peon-mem.service を書き込み、有効化します。手動で同等の設定を行う場合は、systemctl --user enable --now peon-mem.service を実行し、ログアウト後も稼働し続けるよう loginctl enable-linger $USER も実行してください。(Linux のサポートはまだ初期段階です — 実機からの報告はissue #1で追跡しています。)
2. Claude Code — フック(自動キャプチャ+注入)
~/.claude/settings.json にマージします(パスを置き換えてください)。
{
"hooks": {
"SessionStart": [{ "hooks": [{ "type": "command",
"command": "node /ABSOLUTE/PATH/TO/peon/scripts/claude-peon-hook.mjs" }] }],
"UserPromptSubmit": [{ "hooks": [{ "type": "command",
"command": "node /ABSOLUTE/PATH/TO/peon/scripts/claude-peon-hook.mjs" }] }],
"SessionEnd": [{ "hooks": [{ "type": "command",
"command": "node /ABSOLUTE/PATH/TO/peon/scripts/claude-peon-hook.mjs" }] }]
}
}
3. Claude Code — MCP サーバー(検索/確認ツール)
claude mcp add peon -- node /ABSOLUTE/PATH/TO/peon/dist/index.js
4. Codex / 任意の MCP クライアント
~/.codex/config.toml:
[mcp_servers.peon]
command = "node"
args = ["/ABSOLUTE/PATH/TO/peon/dist/index.js"]
[mcp_servers.peon.env]
PEON_DAEMON_URL = "http://127.0.0.1:3737"
Codex にはフックがないため、セッション開始時に start_session と get_context を呼び出し、長期保存する事実については record_message を呼び出すよう、~/.codex/AGENTS.md に使用ルールを追加してください(docs/ にサンプルブロックがあります)。
5. 検証
curl "http://127.0.0.1:3737/context?projectPath=$PWD&query=test" # JSON context
open http://127.0.0.1:3737/monitor # the Neural Universe
任意のプロジェクトで Claude Code のセッションを開始し、意思決定に関する内容を話してから、セッションを終了します。 1 分以内にモニターに信念が表示されます。次のセッションでは、それが注入されます。
公開される MCP ツール
start_session · record_message · record_event · end_session · get_context ·
search_memory · inspect_brain · build_injection · query_projects(プロジェクト横断検索) ·
quality_report · remember_global · search_global_memory · import_global_memory ·
evaluate_project · process_memory · maybe_process_memory
アンインストール
launchctl unload ~/Library/LaunchAgents/com.peon.daemon.plist
# remove the hook entries + MCP server from your agent config
# your memory stays in <project>/.peon/ and ~/Library/Application\ Support/Peon/ — plain files, delete when ready
トラブルシューティング/FAQ
- 注入が表示されない場合
curl http://127.0.0.1:3737/healthを実行し、フックが登録されていることを確認してください (claudeで任意のプロンプトを実行し、モニターの「Systems」ページでリクエストを確認します)。 - 大きなプロンプトで 431 エラーが発生する場合 対応済みです。フックが検索クエリを最大 2k 文字に制限します。
- OpenRouter キーがない場合 それでもすべて動作します。検索は字句検索とエピソード検索のみです
(セマンティックランキングと統合にはモデルが必要です)。
PEON_EMBEDDING_MODE=ollamaも利用できます。 - コストについて 統合は条件に基づいて実行されます(デフォルトでは、新たに約 6k 文字増えるごとに実行され、flash-lite なら 1 日あたり数セント程度です)。クエリの埋め込みはディスクにキャッシュされるため、繰り返しの利用は無料です。
- 複数のマシンを使う場合 脳はリポジトリ内の通常のファイルです。記憶を持ち運びたい場合は
.peon/をコミットしてください(先に機密情報を削除してください。raw レイヤーにはセッションのテキストが含まれます)。 - データはどこかに送信されますか? 設定したモデルプロバイダーへの統合/埋め込みリクエストに限られます。テレメトリーもクラウドストアもありません。デーモンはループバック以外からの呼び出しを拒否します。
設定(環境変数)
| 変数 | デフォルト | 用途 |
|---|---|---|
OPENROUTER_API_KEY | — | 統合+埋め込み |
PEON_PROCESSING_MODEL | google/gemini-2.5-flash-lite | 統合モデル |
PEON_EMBEDDING_MODE | auto | api / ollama / local / off |
PEON_EMBEDDING_MODEL | — | 例:openai/text-embedding-3-small または Ollama モデル |
PEON_OLLAMA_URL | http://127.0.0.1:11434 | ローカル埋め込みサーバー |
PEON_AI_MODE | gated | off にすると、すべての LLM 呼び出しが無効になります |
PEON_FLUSH_MIN_CHARS | 6000 | 統合のコスト制限 |
PEON_MEMORY_DIR | .peon | プロジェクトごとの脳のディレクトリ名 |
PEON_DAEMON_URL | http://127.0.0.1:3737 | デーモンのアドレス |
PEON_CONSOLIDATION_MAX_DELTA_CHARS | 60000 | 切り詰めによる停滞を防ぐチャンク分割 |
PEON_CONSOLIDATION_CONCURRENCY | 1 local, 2 hosted | プロジェクト間で同時に実行できる統合の数 |
PEON_LLM_TIMEOUT_MS | 600000 | 1 回の統合リクエストの制限時間 |
PEON_QUERY_EMBED_TIMEOUT_MS | 2000 | クエリの埋め込みが完了して字句検索によるランキングに切り替わるまで、プロンプトが待機する時間 |
PEON_EMBED_TIMEOUT_MS | 90000 | 1 回の埋め込みリクエストの制限時間(新しい接続で 1 回再試行) |
PEON_DISABLED | — | A/B テスト用の完全な無効化スイッチ |
プロジェクトごとの脳
- 脳は
<project>/.peon/に、人が読める JSONL および Markdown として保存されます。コミットするか無視するかは自由です(同梱の.gitignoreでは無視されます)。 .peon/rootは脳の境界を示します。新しい脳はルート付きで作成されるため、親ディレクトリの記憶にプロジェクトの記憶が取り込まれることはありません。- グローバル脳は
~/Library/Application Support/Peon/global/にあります(macOS)。
AI を一切使わずに Peon を使う
モデルを一度も呼び出さないメモリーシステムを求める人もいます。API キーも、ローカル LLM も、埋め込みも使いません。Peon はそれに対応しています。インストールウィザードで skip を選ぶか、<memory-home>/.env に次の 2 つの環境変数を設定してください。
PEON_AI_MODE=off
PEON_EMBEDDING_MODE=off
モデルを使わない場合、パイプラインは次のようになります。フックは引き続き、操作内容をすべて <project>/.peon/raw/ にプレーンな JSONL として記録します。イベントが届くたびに、ルールベースの抽出処理が内容を読みやすい脳ファイルに振り分けます。「we decided」や「always use」で始まる行は decisions.md に、設定は preferences.md に、ファイルパスは artifacts.md に記録されます。モデルが読み取ることはありません。これはパターンマッチングであり、ファイルを開けば、何が抽出されたかを正確に確認できます。次のセッションの開始時には、フックがデーモンにコンテキストを要求し、デーモンがキーワードの一致度、直近性、重要度で記録をランク付けして、最適なものをプロンプトに挿入します。完全になくなるのは、重複を排除した信念へ生の履歴を圧縮する夜間の LLM 処理である統合だけです。統合がなければ、メモリーは要約されたものではなく、適切にインデックス化された日記になります。検索では引き続き情報が見つかりますが、要約はされません。
引き続き使える機能(すべて決定論的なコードで動作し、モデルは一切使いません):
- 記録。 フックは、すべてのプロンプト、ツール呼び出し、セッションイベントを
<project>/.peon/raw/にプレーンな JSONL として記録します。 - リアルタイムの脳ファイル。 イベントが届くたびに、ルールベースの抽出処理によって、決定、設定、未解決の質問、成果物が読みやすい
.mdファイルにリアルタイムで書き込まれます。 - 挿入。 セッション開始時のコンテキストは、いつもと同じように、クエリに焦点を当てて予算内に収めたうえで、これらのリアルタイムファイルから取得されます。
- 検索。 語彙検索(キーワード順位、直近性、重要度、種類の事前確率に基づく RRF)です。埋め込みは不要です。これはセマンティックスタックがフォールバックする際と同じ縮退経路なので、常に実行されています。
- エピソード想起。 発言内容をそのまま検索する機能は、設計上、語彙検索を使うため影響を受けません。
- モニター UI、トークン追跡、プロジェクト横断検索、バックアップ。 すべてモデルを使わずに動作します。
使えなくなるのは、統合(生のイベントが重複排除された信念に整理されないため、メモリーは追記専用の日記として増えていきます)、セマンティック検索(言い換えたクエリでは共通のキーワードが必要です)、自動エンティティ抽出、古くなったシャドウの降格(埋め込みを比較する処理です)です。
外部 AI を使わずに情報を整理する方法が 2 つあります。
process_memoryは、事前に構築したaiResultを受け付けます。すでに使っているコーディングエージェント(Claude Code、Codex)がセッション中に自ら情報を整理し、構造化された結果を Peon に渡すことができます。メモリーは整理された状態を保ち、Peon 自体はトークンを一切消費しません。- すべてのデータは、ディスク上のプレーンな JSONL/Markdown です。信念は手動で編集するか、モニターのメモリーエンドポイントから編集できます。また、Peon は変更のたびに事前にバックアップを作成します。
測定:メモリは実際にトークンを節約するのでしょうか?
実際の claude -p セッションで A/B テストを実施しました。各セッションで質問は1つ、同じリポジトリ、同じモデルを使用しています。
ON は Peon のフックが有効(セッション開始時にメモリを注入)、OFF は PEON_DISABLED=1 により、
エージェントがファイルを読み取る方式です。手順、過去の結果、決定事項、現在の状態に関する事実について20問をテストし、ツールの問題を乗り越えた15組の ON/OFF ペアを分析しました。トークン数は Claude Code 自身のセッション記録から取得しています。
| ペア比較、各 n=15 | ON(Peon) | OFF | 差 |
|---|---|---|---|
| トークン平均(入力+出力) | 511 | 878 | −42% |
| トークン中央値 | 225 | 1,048 | −79% |
| キャッシュ読み取りトークン | 81.6k | 110.5k | 1.35×少ない |
| より低コストの条件 | ON が12/15で勝利 |
リポジトリの正解情報に照らして回答品質を評価した結果は、同点が8件、Peon の明確な勝利が1件、ベースラインの勝利が5件、両方とも弱かったケースが1件でした。注目すべきなのは Peon が勝ったケースです。会話の中でしか述べられていなかったルール(メールに記載された教授の引用方針)について、ベースラインは「そのようなルールは見つかりません」と回答しましたが、Peon は正確に説明しました。会話から得られた知識には、grep できるファイルがありません。
正直なところ、注意点もあります。テスト対象のリポジトリには、よく整備されたドキュメント(更新が続けられている研究ログ)があり、ベースラインに有利でした。ほとんどのリポジトリはそうではありません。n=15 は小規模です。質問は実際の利用状況から抽出したのではなく、答えが分かっているものを選びました。また、このテストで Peon 自体の実際のバグも2つ見つかりました。古くなった、すでに置き換えられた信念が新しい事実より優先される問題と、統合処理がフックのタイムアウトを超えるとトークンの行が失われる問題です。どちらも修正済みです(取得時の古い情報の優先度を下げる処理、統合前の使用状況ログ記録)。
正直さについて
Peon の開発では評価を必須とし、否定的な結果も保持しています。連想型エンティティグラフを構築して測定したところ(Recall@10 が −2.9%)、デフォルトで OFF にしました。統合処理は設計上、情報を失います。そのためエピソード層を設け、回帰テストを行っています。評価ハーネスとコミット済みの台帳(npm run eval)を使えば、ご自身のメモリで取得処理の変更を検証できます。
セキュリティ
- デーモンは
127.0.0.1のみにバインドし、ループバック以外のHost/Originヘッダーを拒否します (DNS リバインディング対策)。 - シークレット(API キー、トークン、JWT)は注入境界で秘匿化されます。
- パストラバーサルを防止しています。書き込みにはプロジェクトごとのロックとアトミックな tmp+rename を使用し、 破壊的な操作に近い処理の前には自動バックアップを作成します。完全に削除されることはありません。
ライセンス
MIT © Vineet Vora
コントリビュート — ご協力をお待ちしています
Peon は1人で開発・保守しており、より良くするためのご協力を歓迎します。Issue、 PR、アイデア、アーキテクチャへの批判、あるいはお使いのマシンで問題が起きた場所を教えていただくだけでも、 すべて役に立ちます。
現在、特にご協力いただきたい分野は次のとおりです。
- Windows と Linux のサポート。 現在、デーモンのインストールは macOS の launchd に対応しています。systemd と Task Scheduler に相当する仕組みには、実際にテストしてくださるユーザーが必要です。
- エージェントとの連携の拡充。 ウィザードは11個のアプリに対応していますが、Codex、Cursor などにも Claude Code 連携のようなフックレベルの情報取得を追加できれば、あらゆる環境でメモリがより豊かになります。
- 取得品質。 評価ハーネス(
npm run eval)を使えば、手軽に実験できます。統合プロンプトの改善、古さへのより賢い対処、 デフォルトにふさわしいローカル埋め込みモデルなどが対象です。 - ベンチマーク。 ご自身のリポジトリでトークンの A/B テストを実行し、数値を共有してください。特に Peon が 劣るケースを歓迎します。否定的な結果も、ここでは重要な成果です。
- ドキュメントと導入。 README やウィザードで戸惑った点があれば、それもバグ報告になります。
github.com/VineetV2/peon-mem/issues で Issue を作成するか、 直接 PR をお送りください。
開発上のルール:取得や品質に関する変更には、必ずテストと評価台帳の実行(npm run eval)を添えること。否定的な結果は削除せずに記録すること。ユーザーのメモリを完全に削除することは禁止です。npm test は常に成功する状態を保つ必要があります。
Peon が役に立ったら、★ GitHub でスターを付けてください — それが、コーディングエージェントを使って開発するほかの人たちに Peon を知ってもらう方法です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。