マルチプレイヤーメモリ
Sonzaiにおいてメモリが境界を越えるすべての方法を1つの傘の下に — エージェント間(inter-agent)は共有ナレッジベースを通じて、1つのエージェントを共有するユーザー間(intra-agent)はウィズダムと共有メモリを通じて。閉じたループの会社のブレインとチームのブレインを組み合わせる。
デフォルトのエージェントメモリモデルはペアごと — すべての会話は1つの (agent, user) ペアにスコープされた事実プロファイルを構築します。この分離はプライバシーのための正しいデフォルトですが、製品に複数のエージェントまたはエージェントごとに複数のユーザーがある瞬間から、メモリが管理された観測可能な方法で境界を越えることが望まれます。
マルチプレイヤーメモリは、これらの境界越え機能の傘です。2つの軸できれいに分かれます:
| 軸 | 何が越えるか | 実世界の形 | 機能 |
|---|---|---|---|
| エージェント間(Inter-agent) | 同じプロジェクト(またはテナント)のエージェント間の知識 | 閉じたループの会社のブレイン — エージェントAが学び、エージェントBが受け取る | knowledgeBase(読み取り)、knowledgeBaseWrite(自律更新)、knowledgeBaseScopeMode(組織全体カスケード) |
| エージェント内(Intra-agent) | 同じエージェントと話すユーザー間のメモリ | チームのブレイン — 1つのエージェントがユーザーBで学んだことでユーザーAに応答 | wisdom(非属性、デフォルトオン)、sharedMemory(属性付き、オプトイン) |
両方の軸を同時に実行できます。完全な絵:同じプロジェクトのエージェントは学んだ世界を共有し(エージェント間)、かつ単一のエージェントが担当する人々のコンテキストを共有します(エージェント内)。同じ複利の曲線、2つの次元。
エージェント間 (Inter-agent)
共有ナレッジベース、自律更新、組織全体スコープ、
閉じたループの会社のブレイン
|
v
+-------------------------+ +-------------------------+
| エージェント A | | エージェント B |
| KBの読み書き |<---->| KBの読み書き |
+-------------------------+ +-------------------------+
^ ^ ^ ^ ^ ^
| | | エージェント内 (Intra-agent) | | |
| | | wisdom (非属性)、 | | |
| | | shared memory (属性付き) | | |
+--------+ | +---------+ +-------+ | +---------+
| | | | | |
user X1 user X2 user X3 user Y1 user Y2 user Y3
エージェント間:どのエージェントが学んだことも、
プロジェクト上の他のすべてのエージェント
にとって根拠データになる。
エージェント内:単一のエージェントが担当するユーザー間で
メモリを保持する -- プライバシーガードレール付き。
エージェント間メモリ — エージェント ↔ エージェント
エージェント間メモリは、プロジェクトナレッジベースを閉じたループの会社のブレインに変えます:1つのエージェントが会話中に学んだ・検証したものは、他のすべてのエージェントが次のセッションで取り出す根拠データになります。3つの層がベースラインから組織全体まで積み重なります。
1. ベースライン読み取り — すべてのエージェントが応答をプロジェクトKBに裏付ける
knowledgeBase: true を持つエージェントは、会話中に knowledge_search ツールを通じてプロジェクトナレッジグラフを読み取ります。グラフは手動キュレーション、ETLロード、または両方 — 2つの取り込みパスについては ナレッジベースへのデータ取り込み を参照。
await client.agents.updateCapabilities("agent_abc", {
knowledgeBase: true,
});2. 自律編集 — エージェントが学んだことを書き戻す
knowledgeBaseWrite: true を反転すると、エージェントは knowledge_create / knowledge_update / knowledge_delete ツールを取得します。会話中にエージェント自身が検証済みの事実を記録し、完全な監査証跡(source = "agent:<agent-id>")と、管理者の編集が黙って上書きされないコンペア・アンド・スワップの更新セマンティクスを備えます。同じトピックで knowledge_search を実行する次のエージェントは、前のエージェントが書き留めたものを取り出します。
await client.agents.updateCapabilities("agent_abc", {
knowledgeBase: true,
knowledgeBaseWrite: true,
});会話そのものが信頼できるソースである場合に使用 — サポートエージェントが検証済みインシデント詳細を記録、カスタマーサクセスが更新コンテキストを取得、書記係エージェントが議事録を書く。詳細:エージェントがナレッジベースに書き込む。
3. 組織スコープ — プロジェクトの上のテナント全体ナレッジ
エージェントに knowledgeBaseScopeMode: "cascade" を設定すると、すべての検索でプロジェクトKBと組織スコープKBの両方から読み取ります。組織スコープはテナント全体のアーティファクト用:ポリシー、ローレ、ブランド、リファレンスカタログ。衝突時はプロジェクトが勝ち、組織がデフォルトを埋めます。
await client.agents.updateCapabilities("agent_abc", {
knowledgeBase: true,
knowledgeBaseScopeMode: "cascade",
});詳細:組織ナレッジベース。
エージェント内メモリ — 1つのエージェントを共有するユーザー間
エージェント内メモリは、単一のエージェントをチームのブレインに変えます:複数のユーザーを担当する1つのエージェントが、ユーザー境界を越えるメモリを保持し、ユーザーBと話して得たコンテキストでユーザーAに応答できるようにします。2つの補完的な層。
1. ウィズダム — デフォルトオン、非属性
wisdom は新しいエージェントすべてでオンです。日次の昇格ジョブがユーザーごとの事実履歴からパターンを抽出し、k-匿名化し、結果をLLMを通してエージェント全体の知識として書き直します。個別のユーザーは識別不可能。すべてのエージェントが「何がうまくいく傾向があるか/何がよく出てくるか」の恩恵を受けますが、誰が何を言ったかは決して漏らしません。
// ウィズダムはデフォルトオン。オプトアウトする場合のみ false を渡す
// (稀 — 通常は厳密な単一ユーザー製品のみ)
await client.agents.updateCapabilities("agent_abc", { wisdom: false });これは安全なエージェント内層 — 構築上プライバシー保護され、オプトイン不要。
2. 共有メモリ — オプトイン、属性付き
sharedMemory: true は強力なエージェント内層です。エージェントが個人/エンティティ属性付きの事実(役割、専門性、ビジネスコンテキスト、関係)を記録し、エージェントを共有する他のユーザーに公開します — 名前は表示されます。「アリスは移行担当、ボブはインシデント対応」「キャロルはデザート、デイブはセットアップ」。
await client.agents.updateCapabilities("agent_abc", {
wisdom: true, // 前提条件;デフォルトオン
sharedMemory: true,
});オンにすると3つのことが切り替わります:エージェントは sonzai_wisdom_set/update/delete/relate ツールを取得;プロンプトに慎重さの条項付き「Shared facts」セクションが追加;すべての書き込みはプライバシーフロア(報酬・健康・政治がブロック)に対してサーバー側で検証されます。すべての開示は監査テーブルに記録されます。完全な詳細:共有メモリ。
エージェント間とエージェント内を組み合わせる
2つの軸は独立しています — すべての組み合わせが有効です:
| エージェント間 | エージェント内 | 得られるもの |
|---|---|---|
| オフ | オフ | ペアごとメモリのみ。単一ユーザーのコンパニオン製品の正しいデフォルト |
| オン(読み取りのみ) | オフ | エージェントは応答をKBに裏付けるが、ユーザー間で共有しない。標準的な読み取り専用ドキュメントアシスタント |
| オン(読み書き) | オフ | 閉じたループの世界知識。エージェントは製品・価格・インシデントについて検証済みの事実を捕捉 — 他のすべてのエージェントが恩恵を受ける |
| オフ | オン | チームのブレイン — 1つのエージェントがグループを担当するが、エージェント間で共有された世界知識はない |
| オン(読み書き) | オン | 完全なマルチプレイヤーメモリ。 閉じたループの世界知識 + チームのブレイン。共有ビジネスコンテキスト製品に最適 |
// 1回の機能更新で完全なマルチプレイヤーメモリ
await client.agents.updateCapabilities("agent_abc", {
knowledgeBase: true,
knowledgeBaseWrite: true, // エージェント間:閉じたループKB
knowledgeBaseScopeMode: "cascade", // エージェント間:組織スコープ
wisdom: true, // エージェント内:非属性(デフォルトオン)
sharedMemory: true, // エージェント内:属性付き
});動作確認
各機能には、ループが閉じることを確認するためのライブな読み取りエンドポイントがあります。$AGENT_ID、$PROJECT_ID、$API_KEY を自分のものに置き換えてください。
エージェント間 — KB書き込み
curl 'https://api.sonz.ai/api/v1/projects/$PROJECT_ID/knowledge/search?q=YourQuery' \
-H "Authorization: Bearer $API_KEY"エージェント内 — 属性付き共有メモリ
curl 'https://api.sonz.ai/api/v1/agents/$AGENT_ID/wisdom/attributed?limit=20' \
-H "Authorization: Bearer $API_KEY"
curl 'https://api.sonz.ai/api/v1/agents/$AGENT_ID/wisdom/audit?limit=50' \
-H "Authorization: Bearer $API_KEY"エージェント内 — ウィズダム(デフォルトオン)
非属性のウィズダム層は、日次の昇格ジョブがユーザーごとの事実履歴をスキャンするとエージェントが実行するすべてのプロンプトにインラインで表示されます — 別の読み取りエンドポイントはありません。実行を確認するには、複数ユーザートラフィックの後の48時間ウィンドウでエージェントのコンテキストサイズを観察します;ウィズダムブロックが populate されるのが見えるはずです。
プライバシーと制御
マルチプレイヤーメモリは設計上センシティブです。各機能には独自の制御があります — どれもLLMを信頼することを必要としません:
| 機能 | サーバー側の制御 |
|---|---|
knowledgeBaseWrite | 書き込みごとのスキーマ検証、書き込みクォータ、プロジェクトスコープチェック、完全な監査証跡(source = "agent:<agent-id>")、CAS更新、ソフト削除のみ(ハード削除は管理者のみ) |
wisdom | 昇格前のk-匿名性しきい値、識別詳細を削除するLLMゲート付き書き換え、単一のノイジーセッションが漏れないよう日次のケイデンス |
sharedMemory | セマンティック・プライバシーフロア・バリデーター(報酬・健康・政治をブロック)、すべてのプロンプトでの慎重さの条項、すべての事実ロードでの開示監査、ソフト削除のトゥームストーン、ソースは developer_api にピン留め(呼び出し側はプロベナンスを偽装できない) |
すべての境界越えフローには対応する読み取りエンドポイントがあるため、いつでも遡って監査できます。
詳しく学ぶ
- ナレッジベース — エージェント間サーフェス:取り込みパス、スキーマ、自律編集の詳細
- 組織ナレッジベース — 組織全体カスケードの詳細
- 共有メモリ — エージェント内サーフェス:有効化/無効化、4つのウィズダムツール、プライバシーフロア、完全な検証プローブ
- 自己改善 — マルチプレイヤーメモリがペアごとオンライン学習の上にどのように重なるか
- Wisdom API — 共有メモリCRUD + 監査の完全なエンドポイントリファレンス