Memory Recallとチャットの要約
AIモデルが一度に読めるテキストの量には限りがあり、この範囲をコンテキストウィンドウと呼びます。長いチャットでは古いメッセージからこの範囲の外に出てしまい、AIはその内容を忘れます。Marinara Engine(以下Marinara)には、その履歴を取り戻す方法がいくつかあります。このガイドでは、それぞれをオンにする方法と、うまく動かないときの直し方を説明します。
使う記憶機能の選び方
まずはMemory Recall(記憶の呼び出し)から始めてください。Marinaraは自分のコンピューター上の内蔵埋め込みモデルを使えるので、追加の設定なしで動きます。チャットがとても長くなったら、要約も加えてください。
| 機能 | できること | 使えるモード |
| Memory Recall | 直前の発言に関連する部分を過去のメッセージから探し、プロンプトに加えます。 | すべてのモード |
| Chat Summary(チャットの要約) | 古いメッセージを短いあらすじに置き換えます。 | Roleplay |
| Automatic Summarization(自動要約) | 1日ごとに要約し、さらに1週間ごとに要約します。常にオンです。 | Conversation |
| Advanced Memory Recall(高度な記憶の呼び出し) | 現在の履歴、シーンの要約、呼び出した抜粋をまとめて管理します。任意です。 | RoleplayとGame Mode |
Memory Recallと要約は役割が違い、同時に使えます。Game ModeではMemory Recallと、必要に応じてAdvanced Memory Recallを使えます(Game Modeでの動作を参照)。Game Mode独自の要約機能はありません。
Memory Recall
Memory Recallは埋め込み(embedding)を使います。埋め込みとは、メッセージの意味を数値で表した指紋のようなものです。Marinaraは過去のメッセージを、チャンクと呼ぶ小さなまとまりに分けて保存します。新しいメッセージの指紋を保存済みの指紋と比べ、もっとも近いチャンクをプロンプトに加えます。
Memory Recallをオンにする
- チャットを開き、Chat Settings(チャット設定)をクリックします。
- Memory Recallセクションを探します。
- Enable Memory Recallをオンにします。
この設定はチャットごとです。Conversationチャットと、シーンが有効になっているRoleplayチャットやGameチャットでは、最初からオンです。それ以外のチャットでは最初はオフです。オフにすると記憶の呼び出しは止まりますが、保存済みの記憶は削除されません。
うまくいかなかった場合: Memory Recallには埋め込みソースが必要です(次のセクションを参照)。何も設定しなければMarinaraは内蔵モデルを使うので、ほとんどの人はそのセクションを飛ばせます。そもそもMemory Recallが表示されているかを確認してください。Marinara Liteと呼ばれる一部のコンテナー版では、この機能が完全にオフになっています。
埋め込みソースを設定する(任意)
Memory Recallには、指紋を作るモデルが必要です。何も設定しなければ、Marinaraは内蔵の埋め込みモデルを使います(下記を参照)。ほとんどの人にはこれがいちばん簡単です。代わりにサービスを使う場合は、チャット設定ではなくアカウントで設定します。
始める前に: 埋め込みを提供するアカウントが必要です。AIプロバイダーへの接続を参照してください。
- Connections(接続)を開き、そのアカウントを編集します。
- Semantic search (embeddings)(埋め込みによるセマンティック検索)セクションを探します。
- 埋め込みモデルの名前を入力します。例えば
text-embedding-3-smallです。 - 任意: アドレスを変えるには、Embedding endpoint URL(埋め込みエンドポイントのURL)を設定します。
- 任意: Embedding provider(埋め込み用のプロバイダー)を使うと、別のアカウントのキーとアドレスを借りられます。Same as this provider(このプロバイダーと同じ)では、このアカウント自身のものを使います。
埋め込みを提供しないサービスもあります。その場合Marinaraは、OpenAI互換のアカウント、Google、内蔵モデルなど、埋め込み専用のアカウントを選ぶよう求めます。
どこでも同じソースを使うには、Connections → Defaults(接続 → デフォルト)のEmbeddings(埋め込み)でそれを選びます。自分の埋め込みモデルを持たないアカウントは、それを使います。アカウント自身の設定は引き続き優先されます。
埋め込み用のアカウントもEmbeddingsのデフォルトもない場合、Marinaraは内蔵の埋め込みモデルを使います。このモデルは一度だけダウンロードされ、APIキーなしで自分のコンピューター上で動きます。内蔵モデルのセットアップを参照してください。
同じ設定がロアブックのセマンティック検索にも使われるので、一度設定すれば両方に使えます。
保存済みの記憶の確認と管理
- Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)を開きます。
- Access memories for this chatをクリックします。Memories for This Chatウィンドウが開きます。Advanced Memoryがオンの場合、ビューアーはRoleplayのドロワーの中に表示されます。
このウィンドウには、保存されているチャンクの数とおおよそのトークン数が表示されます。チャンクのカードごとに、対象の期間、メッセージ数、作成日時、状態が表示されます。
| 状態 | 意味 |
| Vectorized | 指紋の作成が終わり、検索に使えます。 |
| Waiting for vector | 指紋をまだ作成中です。 |
| Embedding unavailable | どの埋め込みソースでも指紋を作れませんでした。 |
ツールバーには、記憶のエクスポート、インポート、再構築、全消去のアイコンがあります。
- チャンクのゴミ箱アイコンをクリックすると、Forget Memoryが開きます。Forgetで確定します。
- 全消去のアイコンをクリックすると、Clear Memoriesが開きます。Clearで確定します。消えるのは呼び出し用の記憶で、チャットのメッセージは消えません。
- 更新アイコンは、現在のメッセージからすべてのチャンクを作り直します。埋め込みモデルを変えたあとに使ってください。
- エクスポートすると
.marinara.jsonファイルが保存されます。インポートは.jsonまたは.marinaraのファイルを受け付け、既存の記憶に統合します。
Memory Recallの動作
- 埋め込みソースがあれば、Enable Memory Recallがオフでも、Marinaraはバックグラウンドでチャンクを保存します。トグルが決めるのは、記憶をプロンプトに加えるかどうかだけです。
- チャンクが作られるには、新しいメッセージが5件以上必要です。
- 関連の弱いものは除外されるため、記憶があっても何も呼び出されないことがあります。呼び出した記憶に使われるのは、プロンプトのごく一部だけです。
- 埋め込みモデルを変えると、古いチャンクは一致しなくなります。チャンクを再構築してください。
- チャットのメッセージを削除すると、そのチャンクも削除されます。
Chat Summary(Roleplay)
Chat Summaryは、古いメッセージを要約エントリーと呼ぶ短いあらすじにまとめます。エントリーはAIに書かせることも自分で書くこともでき、1件ずつオンとオフを切り替えられます。この機能はRoleplayチャット専用です。
Chat Settings(チャット設定)を開き、Lorebooks(ロアブック)の下にあるChat Summary(チャットの要約)を展開します。コンピューターでは、独立したウィンドウとして切り離せます。Chat Settingsの概要を参照してください。
要約エントリーの作成
- Summary Scopeでは、直近のメッセージならLastを、メッセージの範囲ならRangeを選びます。
- AIにエントリーを書かせるにはGenerateを、自分で入力するにはWriteをクリックします。
各エントリーには、タイトル、元になった範囲またはメッセージ数、推定トークン数が表示されます。エントリーはオンとオフを切り替えたり、展開したり、Editで編集したり、Deleteで削除したりできます。Show InactiveとHide Inactiveで、一覧に表示する内容を切り替えます。Activate AllとDeactivate Allで、すべてのエントリーをまとめて切り替えます。
複数のエントリーを変更するには、チェックを入れて選び(コンピューターでは、Shiftを押しながらクリックすると範囲を選べます)、Enable selected(選択項目を有効化)またはDisable selected(選択項目を無効化)を使います。
Review Agent Outputs(エージェント出力の確認)がオンの場合、AIの要約は承認されるまで待機します。エージェントの承認とAgent Suiteを参照してください。
Automatic Summaries
Automatic Summariesパネルは、チャットを続けるあいだ要約を最新の状態に保ちます。
- Enabledをオンにします。
- Everyには、要約と要約のあいだに送る自分のメッセージの件数を設定します。デフォルトは5で、範囲は1から200です。
- 任意: 要約が一度も作られていない古いチャットを要約するには、Backfill Summaryをクリックします。進捗バーが表示されます。途中でやめるにはStopをクリックします。
要約プロンプト、プロバイダー、出力サイズ
- Summary Prompt: Editをクリックすると、AIが使う指示を変更できます。Templatesをクリックすると、New template、Duplicate、Edit、Deleteで保存済みのプロンプトを管理できます。テンプレートはアプリ全体で共通です。あるRoleplayチャットでテンプレートを選ぶと、すべてのRoleplayチャットのプロンプトが変わります。
- Summary Provider: 要約を書くアカウントです。まずデフォルトのエージェント用アカウントを使い、次にチャット自身のアカウントを使います。
- Maximum output size: 要約の長さの上限です。デフォルトは4096トークンで、範囲は1から32768です。
表示の設定
- Hide summarised messages: 要約に含まれた元のメッセージを隠します。デフォルトはオフです。
- Recent message tail: 隠す設定がオンでも、新しいメッセージをこの件数だけ表示したままにします。デフォルトは10です。0以上の整数なら何でも指定できます。0にすると、要約されたまとまり全体を隠します。値を大きくするとプロンプトが長くなり、費用も増えます。
- Collapse hidden messages: 隠したメッセージを会話記録の中でどう見せるかを変えます。
末尾の件数で制限されるのは、要約済みのメッセージです。末尾より古い要約済みのメッセージは、次の要約で隠される前でも、すぐにプロンプトから外されます。まだどの要約にも含まれていない古いメッセージは、外すと失われてしまうため、引き続き送信されます。そのようなメッセージがある場合、Chat SummaryではRecent message tailの下にその件数が表示されます。それらを要約するには、Backfill Summaryをクリックしてください。
まとめて返信するグループチャット
まとめて返信するグループチャットでは、1回の返信で全キャラクターが発言します。エントリーのうち、{{#if char == "Kaito"}}…{{/if}}のように特定のキャラクター向けに書かれた部分は、それが当てはまるすべてのキャラクターについて残され、「known only to Kaito」のように、知っているキャラクターが示されます。Advanced MemoryのNarrator(ナレーター)だけが受け取る部分は含めません。キャラクターが1人ずつ返信するグループチャットと、キャラクターが1人のチャットでは、これまでどおり各キャラクターがエントリーを読み、Narratorはすべての部分を読みます。
Automatic Summarization(Conversation)
Conversationチャットでは、暦の1日ごとに要約を作り、終わった週はまとめて週の要約にします。その後プロンプトに含まれるのは、週の要約、今週の日ごとの要約、今日のメッセージだけです。この処理は自動で動き、オフにはできません。
要約の編集
- Conversationチャットを開き、Chat Settings(チャット設定)をクリックします。
- Automatic Summarization(自動要約)を探します。
- Edit Summaries(要約を編集)をクリックします。
ウィンドウには週が先に並び、そのあとにまだ週にまとめられていない日が並びます。項目を展開すると、Summary(要約)の本文とKey Details(重要な詳細)の行を編集できます。
1日の区切りの設定
- Day Rollover Hour: 要約のうえで新しい1日が始まる時刻です。デフォルトは4 AMです。12 AM(深夜0時)から11 AMまでの任意の時刻を選べます。この時刻より前のメッセージは、前日ぶんとして数えます。チャットをしない時間帯を選んでください。要約がすでにある状態で変更すると、古い要約は以前の時刻で作られていることをMarinaraが警告します。
- Recent Message Tail: 要約されたあとも、今日の新しいメッセージを何件そのままの文章で残すかです。デフォルトは10です。値を大きくするとプロンプトが長くなり、費用も増えます。
足りない日の要約を補う
古いチャットをインポートしたあとなど、ある日の要約が作られないことがあります。ウィンドウのMissing SummariesパネルにBackfillボタンがあります。直近の日を、一度に最大14日ぶんやり直します。要約に使うモデルを変えても、すでにある日や週の項目は書き直されません。
Advanced Memory Recall(RoleplayとGame Mode)
Advanced Memory Recallは、現在の履歴の範囲、話の継続のための要約、過去の抜粋をまとめて管理する任意のモードです。チャットをシーンに分け、終わったシーンごとに要約し、返信ごとに重要なシーンと元のメッセージそのものを呼び出します。Agentsのスイッチとは関係なく動き、ダウンロードするエージェントは必要ありません。
オンにする
- Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)を開きます。
- Advanced Memory Recall(高度な記憶の呼び出し)をオンにします。Roleplayのセットアップウィザードで、Agentsの下にあるAutomatic context and memory handling(コンテキストと記憶の自動管理)をオンにすることもできます。
- Maximum allowed context before compression (tokens)(圧縮前に許容する最大コンテキスト、トークン単位)を、モデルのコンテキストウィンドウの範囲内で設定します。
- Summary and recall budget (tokens)(要約と呼び出しの予算、トークン単位)を、その上限の範囲内で設定します。
- 任意: Helper model(補助モデル)を選びます。
すでに履歴のあるチャットでは、まずPrepare existing history(既存履歴を準備)をクリックしてください(下記を参照)。設定と進捗は、デスクトップでもモバイルでも、ウィザードとChat Settingsのドロワーの両方に表示されます。アーカイブビューアーはドロワー内に表示されます。
設定項目
| 設定 | デフォルト | 内容 |
| Maximum allowed context before compression (tokens)(圧縮前に許容する最大コンテキスト、トークン単位) | 65,000 | 送信プロンプトがこのサイズに達すると、古いコンテキストが切り捨てられ、呼び出し用に要約されます。 |
| Summary and recall budget (tokens)(要約と呼び出しの予算、トークン単位) | 6,500 | コンテキストのうち記憶に使う量です。最大値の10%以上を推奨します。 |
| Helper model(補助モデル) | エージェント用アカウント、次にチャットのアカウント | シーンの判定、要約、話の継続の処理を行います。 |
| Maximum recalled scenes(想起するシーンの最大数) | 3 | 1回の返信で呼び出すシーンの上限です。0にすると、任意のシーンの呼び出しをオフにします。 |
| Moving context(移動コンテキスト) | 3~5件のメッセージ | 呼び出した抜粋ごとのメッセージ数です。両方を0にすると、抜粋なしの要約になります。 |
| Standalone scene check interval (messages)(独立したシーン確認の間隔、メッセージ数) | 5 | シーン確認と次のシーン確認のあいだに入る新しいメッセージの数です。 |
| Use Decision model(判断モデルを使用) | オフ | Decisionモデルにシーンの終わりを見つけさせ、記憶を選ばせます。 |
| Decide who sees new messages(新しいメッセージを見られる相手を決める) | オフ | キャラクターが1人ずつ返信するグループチャット専用です。 |
| Character recollections(キャラクターの回想) | オフ | 各キャラクターに、シーンについての自分だけの記憶を持たせます。 |
予算のデフォルトは、最大値のデフォルトの10%です。後から最大値を変えても、予算は変わりません。上限は、送信プロンプト全体の推定量(指示、メッセージ、呼び出したコンテキスト、ツール、添付ファイル)に適用されます。応答トークンと安全のための余裕は別枠です。これは推定値で、正確なトークナイザーの計数や課金の上限ではありません。
記憶の要約の呼び出しはすべてChat Summary → Maximum output size(チャットの要約 → 最大出力サイズ)を使い、推論の余裕として少なくとも8,196出力トークンを確保します。
既存履歴の準備
- Prepare existing history(既存履歴を準備)をクリックします。開始前に、実際に使われるモデルが表示されます。
- 待ちます。古い履歴をバッチごとに処理し、現在の段階を表示します。
- 止めるにはCancel(キャンセル)を使います。完了した作業は保持されます。続けるにはResume(再開)を使います。ドロワーを閉じたあとでも、サーバーを再起動したあとでも、アプリをアップデートしたあとでも続けられます。
モデルの呼び出しが失敗しても、それまでの有効な記憶は保持され、再試行できるエラーが表示されます。失敗したあとに記憶をリセットしないでください。Resumeは完了済みの要約を再利用します。最後の進行中のシーンは開いたままで、閉じた時点で要約されます。
復元した履歴によって、手動の修正が対象とするシーンが変わった場合は、その文章を参照用に残すためにその記憶をオフにするか、削除してから、もう一度準備してください。Fix(修復)は処理を止めずにそのシーンを飛ばし、一覧に表示します。
準備済みのチャットからBranch from here(ここから分岐)などで作った分岐は、Advanced Memoryを引き継ぎます。シーンの途中で作った分岐では、そのシーンが再び開いた状態になります。古い要約は破棄され、シーンが閉じたときに新しい要約が書かれます。新しい分岐としてインポートしたチャットは、通常どおり準備されます。
記憶の問題を直す
チャットの記憶に壊れた部分があると、Chat Settings(チャット設定)ボタンにアクセントカラーの点が点滅せずに表示され、問題のあるシーンの数が通知されます。同じ問題が通知されるのは1回だけで、点は問題が片付くまで表示されたままです。Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)では、問題が設定の上に一覧表示されます。Access memories for this chatにも同じ点が表示されます。
通知または一覧でFix(修復)を押すと、印の付いたシーンを1回の実行ですべて修復します。Helper model(補助モデル)を使います。Pause processing(処理を一時停止)で止め、Resume processing(処理を再開)で続けます。Fixは次のことを行います。
- Check who was thereの印が付いたシーンについて、誰がいたかを補助モデルにもう一度尋ねます。それでも判断できない場合、新たにアクセス権を得るキャラクターはおらず、そのシーンは確認用に一覧に表示されます。
- 参加者の確認が導入される前に保存された古いシーンについて、誰がいたかを確認します。
- メッセージ、非表示にしたメッセージ、キャラクター名、または元になる要約が変わったシーンと、要約のない完了済みのシーンについて、新しい要約を書きます。削除した要約は削除されたままです。
- エラーで止まった記憶の処理を再開します。
Fixは、手動で編集した要約を書き換えることはありません。そうした要約はneed your reviewの下に表示し、処理を続けます。キャラクターの知識範囲や、動作するDecision接続など、設定を代わりに変えることはできません。
Fixが終わると、「Advanced Memory fixed N scenes」と、確認が必要なシーンの番号が表示されます。番号を選ぶと、そのシーンがAccess memories for this chatで開きます。Chat Settingsを閉じていた場合は、Show(表示)付きの通知からその画面へ移動できます。Fixが判断できなかったシーンは、次回のFixで再び尋ねられることはないため、そのシーンのキャラクターのアクセス権は自分で保存してください。
シーンの再スキャン
シーンの変わり目が見落とされた場合、たとえばシーンが終わらないままになった場合は、Chat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)のRe-scan scenes(シーンを再スキャン)を使います。
- 確認する最初と最後のメッセージ番号を入力します。最初は進行中のシーンの範囲が入っています。
- Re-scan(再スキャン)を押します。
Advanced Memoryは、それらのメッセージにあるシーンの変わり目を探し直し、変わったシーンを要約します。Use Decision model(判断モデルを使用)がオンならDecisionモデルを、オフなら補助モデルを使います。範囲外のシーンは、境界と要約をそのまま保ちます。手動で編集した要約が変わってしまう場合、再スキャンはそこで止まり、そのシーンを示します。
任意のDecisionモデル
Decisionモデルとは、はい・いいえで答える質問に回答する小さなモデルです。デフォルトではオフで、Roleplayチャットごとに保存されます。
- Advanced MemoryでUse Decision model(判断モデルを使用)をオンにします。
- Memory Decision connection(記憶用の判断接続)でモデルを選びます。Built-in model(内蔵モデル)の下には、グローバルなDecision model(判定モデル)と同じモデルが並びます。まだ回答できないモデルは理由付きでグレー表示され、停止中のモデルは問い合わせたときに起動します。Connections(接続)の下には、保存済みのDecisionアカウントが並びます。Decisionモデルを参照してください。
この選択は、グローバルなDecisionのデフォルトとは別です。
このモデルは、履歴の準備中と、進行中のシーンの確認中に、シーンの境界を見つけます。新しい返信の前には、2段階で記憶を選びます。詳しくは判断による呼び出しの仕組みを参照してください。
ホスト型のアカウントには、最近の会話のテキストと、評価対象として絞り込まれた要約やメッセージが送られ、返信ごとに複数のリクエストの料金がかかることがあります。記憶の呼び出しでは、候補を送る前にキャラクターのアクセス権で絞り込みます。
新しいメッセージを見られる相手の決定
キャラクターが1人ずつ返信するRoleplayのグループチャットでは、新しいメッセージをどのキャラクターが見られるかをAdvanced Memoryに決めさせることができます。そうすれば、シーンから去ったキャラクターから、すべての行を自分で隠す必要はありません。まとめて返信するグループチャットや、キャラクターが1人のチャットには、この機能はありません。
- Advanced MemoryでDecide who sees new messages(新しいメッセージを見られる相手を決める)をオンにします。
自分のメッセージでもキャラクターのメッセージでも、新しいメッセージはそのシーンにいないキャラクターから隠されます。メッセージ自身のボタンと同じ、キャラクターごとのHide from AI(AIから隠す)を使うため、目に斜線のマークで誰が見られないかがわかります。自分のメッセージは、投稿した時点で判断されます。それより前のメッセージは、次のキャラクターが返信する前に判断されます。
- ここで選んだNarrator(ナレーター)と、Roleplayのコマンド設定で選んだNarrator character(ナレーター役のキャラクター)は、すべてのメッセージを見られます。メッセージの書き手は、自分のメッセージを常に見られます。シーンにいないささやきの受信者も、そのささやきは受け取ります。
- Use Decision model(判断モデルを使用)がオンの場合は、キャラクターごとに、そのメッセージを明らかに見聞きできないかどうかをそのモデルに尋ねます。物語の中でそのシーンに一度も登場しないキャラクターは、別の場所にいるものとして扱います。オフの場合はHelper model(補助モデル)が判断します。メッセージを隠すのは、モデルが確信しているときだけです。
- モデルは現在のシーンのこれまでのメッセージを読み、少なくとも直前の数件は必ず読みます。また、シーンが始まってから発言したキャラクターの一覧も渡されます。この一覧は手掛かりにすぎません。黙って聞いているキャラクターも、その場にいるものとして扱われます。
- メッセージのHide from AIを自分で変更したり、
/hideや/unhideを使ったりすると、その選択が保たれ、Advanced Memoryがそのメッセージを変更することは二度とありません。 - 各メッセージの判断は1回だけです。モデルが失敗したり時間切れになったりした場合は、何も隠されず、エラーはサーバーログに記録されます。
Advanced Memoryがオンの場合、キャラクターの新しい返信が**、---、 のような区切り線でシーンや視点を切り替えることがあります。その場合、返信は部分ごとに、同じキャラクターの別々のメッセージとして保存されます。
- 部分ごとに、見られる相手が決まります。Decide who sees new messages、Hide from AI、ささやきは、各部分に適用されます。
- 書き手は引き続きすべての部分を見られます。書き手に見せたくない部分は、自分で隠してください。
- 区切り線は、その後に続く部分の先頭に残ります。コードブロックや、
<details>のようなHTMLブロックの中にある区切り線は数えません。 - 返信の思考は最初の部分に表示されます。Exclude Past Reasoning(過去の推論を除外)がオフでも、思考がモデルに送り返されることはありません。
- メッセージの情報、トラッカー、エージェントの結果は、最後の部分に付きます。
- Prose Guardianなどの書き換えエージェントは、各部分を個別に書き換えます。Hold Message Until Rewriteがオンの場合、各部分はそれぞれの書き換えを待ちます。ある部分の書き換えに失敗した場合、その部分は書かれたときのまま残ります。
- 読み上げの自動再生では、すべての部分を順番に読み上げます。
- 部分をスワイプまたは再生成すると、そのメッセージだけの新しいバージョンができます。前のほうの部分では、新しいバージョンは最初の区切り線より前のテキストを保ちます。
- ContinueとImpersonateでは分割されません。
Character recollections
Character recollections(キャラクターの回想)をオンにすると、各キャラクターがシーンについて自分だけの記憶を持つようになります。デフォルトはオフです。
- 完了したシーンにいた各キャラクターに、短い記憶が1つずつ作られます。長さは50~100語ほどで、一人称で、そのキャラクター自身の口調で書かれます。何に目が向くかは、キャラクターカードで決まります。Narrator(ナレーター)、自分のペルソナ、別の場所にいたキャラクターには作られません。
- モデルが使えるのは、各キャラクターが知り得たことだけです。キャラクターが知り得なかった内容から4語続けて写した回想は使われません。別の言葉で言い換えた事実を防ぐのは、指示だけです。
回想が正しく保たれる仕組みは次のとおりです。
- 回想が有効なのは、そのキャラクターが読める内容が、回想を書いたときとまったく同じである間だけです。後からシーンのメッセージがそのキャラクターから隠されたり、見えるようになったりすると、生成された回想は書き直されます。自分で編集した回想は、確認して保存し直すまでプロンプトから外れます。
- 新しいシーンの回想は、そのシーンの要約と同じリクエストで作られます。そのリクエストにはキャラクターカードが大きすぎる場合、回想はその後に別のリクエストで作られます。補助モデルがそのシーンに使える容量の半分を超えるカードを持つキャラクターには、回想は作られません。
- 要約済みのシーンがあるチャットでこの設定をオンにすると、1シーンずつ回想が追加され、Writing character recollectionsと表示されます。シーンの要約は変わりません。Resume(再開)で、失敗したシーンを再試行します。
- モデルが使える内容を何も書かなかった場合、そのシーンには、要約か読める内容が変わるまで空の回想が残ります。Access memories for this chatで自分で書くこともできます。
回想が表示される場所とコストは次のとおりです。
- 回想は呼び出したシーンにだけ付き、シーンの要約の下、抜粋の前に、キャラクターごとに1行ずつ入ります。キャラクターが1人ずつ返信するグループチャットでは、各キャラクターには自分の回想だけが見えます。まとめた返信では、チャットにいてそのシーンを覚えているすべてのキャラクターの回想が、名前付きで表示されます。
- 回想はSummary and recall budget(要約と呼び出しの予算)に含まれます。要約が最初で、次に回想、最後に抜粋です。まず抜粋が短くなり、次に回想が丸ごと外れます。回想が途中で切られることはありません。
- 回想がChat Summariesに入ったり、呼び出すシーンを決めたりすることはありません。
- シーンの要約が変わると、そのシーンの生成された回想は、返信のたびに最大3シーン分、新しいシーンから順に書き直されます。Prepare existing history(既存履歴を準備)、Re-scan scenes(シーンを再スキャン)、Resumeでは、すべてが書き直されます。
編集とオフにしたときの動作は次のとおりです。
- Access memories for this chatでシーンを開くと、各回想を読んだり編集したりできます。編集した回想にはManually editedの印が付き、置き換えられることはありません。Delete(削除)を選ぶと、その回想はプロンプトから完全に外れますが、新しい回想を入力することはできます。
- 設定をオフにしても保存済みの回想は残り、プロンプトには入りません。エクスポート、インポート、分岐にも回想が含まれます。
Game Modeでの動作
Game Modeのチャットでも、同じようにChat Settings → Memory Recall(チャット設定 → 記憶の呼び出し)でAdvanced Memory Recallをオンにします。オフの場合、Gameのセッションはコンテキストの上限に達するまで毎ターン履歴全体を送るため、長いセッションでは1ターンあたりの入力トークンがはるかに多くなります。オンにすると、プロンプトはMaximum allowed context before compression(圧縮前に許容する最大コンテキスト)の範囲内に保たれます。現在のシーンはそのままのメッセージとして送られ、以前のシーンは要約と、呼び出しが選んだ場面として送られます。
- Game Masterはすべての記憶を読みます。 Narratorの選択、知識範囲、メッセージの可視性の自動設定、キャラクターの回想はありません。
- 記憶が入る位置。 要約と呼び出したシーンは、履歴の後、GMのターン指示の直前に入ります。その前にある指示と履歴はターンごとに変わらないため、プロンプトのキャッシュに対応した接続では再利用できます。シーンが終わると、1回のリクエストでキャッシュが使われなくなります。
- 記憶が読む内容。 要約は、画面に表示される物語に沿って作られます。部分ごとの編集が反映され、GMのコマンドタグは除かれます。
- セッション。 新しいセッションは設定を引き継ぎますが、独自のアーカイブを作り始めます。GMには、これまでどおり以前のセッションの要約も渡されます。
- Decisionモデル。 任意で、デフォルトはオフです。任意のDecisionモデルを参照してください。ターンごとに小さなリクエストが追加されます。
- 費用。 補助モデルはシーンごとに要約を1つ書き、数ターンごとにシーンの変わり目を確認します。これらのリクエストは、長いセッションを送り直す場合に比べると小さいものです。
- Gameチャットのプロンプトプレビューには、まだAdvanced Memoryは表示されません。最終プロンプトインスペクターを使ってください。
トラブルシューティング
| 問題 | 対処法 |
| Memory Recallが何も呼び出さない | 埋め込みソースが設定されているか確かめてください。チャンクがEmbedding unavailableになっている場合は、Semantic search (embeddings)(埋め込みによるセマンティック検索)のモデルを設定するか、内蔵モデルを使ってください。内蔵モデルのセットアップを参照してください。 |
| チャンクがWaiting for vectorのままになっている | 少し待ってください。指紋は返信のあとに作られます。 |
| 関連するものがないように見える | 呼び出されるのは、関連の強い記憶だけです。何も追加されないのは正常な動作です。 |
| 埋め込みモデルを変えたら呼び出しの精度が落ちた | Memories for This Chatの再構築アイコンを使ってください。 |
| 要約が生成されない | チャットで使えるテキスト用のアカウントが必要です。Chat SummaryはSummary Providerを使います。どれも使えない場合、生成は行われません。 |
| AIの要約がいつまでも表示されない | Review Agent Outputs(エージェント出力の確認)が承認を待っている可能性があります。 |
| 要約が止まったまま進まない | 失敗した要約は、少し時間をおいて再試行されます。Backfill Summary(Roleplay)またはBackfill(Conversation)を実行してください。 |
| シーンにCheck who was thereの印が付いている | Fix(修復)を押すか、そのシーンをAccess memories for this chatで開き、Edit character access(キャラクターのアクセス権を編集)を使ってください。 |
そのほかの問題については、Marinara Engineのトラブルシューティングを参照してください。
Advanced Memoryのリファレンス
ほとんどの読者には必要のない詳細です。これを読まなくても、上記の設定は使えます。
シーンの検出と要約の仕組み
- シーン検出は、Roleplayの主応答を保存した後に実行されます。間隔の分だけ新しいメッセージが届くと、確認処理には、前回の確認以降のすべてのメッセージ(最大で間隔の2倍まで)、前回の確認が最後に見たメッセージ、シーンの指示、出力形式が渡されます。確認処理は、各シーンを終える正確なメッセージを返し、シーンが続いている場合は何も返しません。ペルソナとキャラクターの両方のメッセージを数えます。
- 判断モードがオフの場合、確認の時期が来ていて、可視性とコンテキストの予算が許せば、対象となる生成後のトラッカー呼び出しを共有します。そうでなければ、補助モデルが単独で呼び出されます。不明確な転換ではシーンを開いたままにします。
- そのシーンの要約とメッセージの索引をバックグラウンドで準備するのは、終わりが検出された場合だけです。Chat Settings → Agent activity(チャット設定 → エージェントの動作)には、通常のエージェントがオフでも、Advanced Recallとして進捗が表示されます。
- 各シーンの要約リクエストには、要約の指示、そのシーンの対象メッセージ、該当する範囲の修正、JSON出力形式が含まれます。1回のリクエストに収まらない大きなシーンは、保存されるバッチに分けて処理し、後で統合します。要約には2~3段落を求めます。デフォルトのプロンプトは過去の出来事をまとめ、現在の状況の節は作りません。Summariesで選んだ独自のプロンプトは、引き続き適用されます。
- 最初の履歴のシーン検出には、メインのモデルか補助モデルを使えます。要約には常に補助モデルを使います。
- 各要約には、参加したキャラクターも記録されます。Kaito Nakamuraを「Kaito」と呼ぶ場合のように、参加者の名前がキャラクターカードと異なっていても、ちょうど1人のキャラクターに当てはまり、自分のペルソナの名前でなければ参加者として数えます。共通する名前、「Kaito's sister」のような説明、「(mentioned)」のような注記付きの名前では、アクセス権は与えられません。補助モデルが誰が参加したかを示さない場合、そのシーンはすべてのキャラクターに割り当てられ、グループチャットではCheck who was thereの印が付きます。自分だけが記載されたシーンは、ナレーター専用のままです。参加者の確認が導入される前に保存されたシーンは、Fix(修復)かPrepare existing history(既存履歴を準備)が確認するまで、ナレーター専用のままです。シーンを終える返信ごとにも、最大3件を確認します。
- 以前からある、キャラクターが1人ずつ返信するグループチャットでは、未設定の知識範囲を一度確認してください。キャラクターの最初の発言は、それ以前の内容をすべて知っていた証拠にはなりません。参加範囲の制限を外してよい場合だけ、実際のキャラクターをNarrator(ナレーター)に選んでください。全体のHide from AI(AIから隠す)は、そのターンを現在の会話記録から取り除くだけです。Advanced Memoryは引き続きそのターンを走査し、要約し、インデックスに登録します。開始マーカーは、現在の会話記録を切り詰めます。
現在の履歴の範囲と予算
- プロンプトでの優先順位は、常時要約(常にプロンプトに入る要約)、選択したシーン要約、キャラクターの回想、メッセージの抜粋の順です。常時要約は、予算の最大70%を目標とします。記憶全体では、必要に応じて最大2,000トークンを追加で使えますが、コンテキストの上限内に収めます。現在のメッセージは、常時要約の枠に含まれません。
- 送信プロンプトが上限に達すると、すべてのキャラクターについて、現在の履歴の範囲が最新シーンの先頭までリセットされ、そこから再び増えていきます。関数呼び出しやダイスロールの後に続く生成は数えません。切り捨て位置は、Mark as new start(新しい開始点にする)でAllが選択された状態で表示されます。Allのチェックを外すと取り消せます。個別の開始フラグは引き続き適用されます。未完のシーンや大きすぎる常時要約が収まらない場合、リクエストには印の付いたソース抜粋を使い、最新のメッセージを残します。保存済みの要約とメッセージが上書きされることはありません。
- 主生成は、保存済みの記憶をすぐに読みます。話の継続の処理を待つことはありません。
- 主応答の後、Advanced Memoryは、まだどの要約にも含まれていないアーカイブ済みのメッセージについてChat Summariesを追加します。キャラクターが1人ずつ返信するグループチャットでは、あるシーンを読んだ全員が、そのシーンの1つの要約を共有します。
- 1人のキャラクターが読む有効な要約が予算の70%を超えると、応答後にUpdating continuityが補助モデルを使って、それらを合計の約半分の大きさの1つの要約に統合します。応答がこの処理を待つことはありません。まだ現在のメッセージを対象にしている要約は、それらのメッセージが現在の履歴の範囲から外れるまで待ちます。統合した要約がまだ枠を超えている場合は、次の更新でもう一度半分にします。
- 各リクエストに含まれるのは、Combine prompt(結合用のプロンプト)、約半分の長さにするよう求める1行、要約のテキストだけです。テキストに
{{user}}のようなマクロが含まれる場合、その1行では、マクロを書かれたとおりに残すことも求めます。1回のリクエストに収まらない長いテキストは分割して送られ、各部分がそれぞれ半分にされます。補助モデルの返信は、テキストの長さに1,024トークンを足した長さまで許されます。ただし上限は8,196トークンで、Chat Summary → Maximum output size(チャットの要約 → 最大出力サイズ)のほうが大きい場合はその値になります。 - 読むキャラクターが異なる要約も、自分で書いたものを含めて1つに統合されます。非公開部分は、それを知っていたキャラクターだけを対象にしたまま、
{{#if char == "Name"}}…{{/if}}のセクションに残ります。キャラクターのグループごとに、そのグループが読むテキストは、条件を外して専用のリクエストで短くされ、同じ条件の中に戻されます。グループの順序は、それぞれが最初に現れた順です。64トークン未満の部分は、リクエストを送らずにそのまま残します。ほかのマクロを使う要約は、そのまま残ります。それらだけで1人のキャラクターの枠が埋まる場合は、手動で短くするか、予算を増やしてください。置き換えられた項目は無効になるため、あとで再びオンにできます。 - 補助モデルの返信が上限で途切れた場合、空の場合、短くなっていない場合、マクロを追加した場合、または結果によってある部分を読めるキャラクターが変わる場合は、要約はそのまま残り、それでも更新は完了します。同じ要約は、いずれかの要約が変わるか、補助モデルまたはCombine promptを変更するまで、再び送られることはありません。Resume processing(処理を再開)は、エラーで止まった更新を再試行します。
- キャラクターのプロンプトに表示される要約のメッセージ範囲と日付は、そのキャラクターが見られるメッセージだけから求めます。Narratorは、単独で返信するとき、すべての部分を1回ずつ読みます。
呼び出しで返される内容
- 1つのRecalled Scenesセクションに、各要約と、その後に続く抜粋(ある場合)が、1つの範囲見出しの下に入ります。このブロックには、現在の履歴の範囲と最後のユーザーメッセージの番号が示されるため、過去の出来事が現在のターンと取り違えられることはありません。
- シーンが呼び出されるのは、そのすべてのソースメッセージが、送信する現在の履歴の外にある場合だけです。範囲付きのChat Summariesは、対象のメッセージが1つでも現在の履歴に残っている間は省かれます。保存されたまま、有効な状態も保たれます。対象となる常時要約は、任意の呼び出しより優先されます。選択したすべての要約の領域を確保してから、抜粋を追加します。
- 呼び出すテキストと新しい要約の入力からは、イラストの添付と画像の説明文を省きます。読み取れるテキストの添付は残します。
- 判断モードがオフの場合、呼び出しは準備済みの記憶を読みます。検索用の埋め込みには短い時間制限があり、間に合わなければ文字列検索に切り替えます。文字列検索では、返信するキャラクターが最後に話してから送った自分のメッセージにある特徴的な語を重く評価します。それらのメッセージに出てくる名前は、最も重く評価されます。ただし、返信するキャラクターや自分のペルソナの名前、ほとんどの記憶に出てくる名前は対象外です。モデルの呼び出しは増えません。
- 呼び出しは、Roleplayの主生成でだけ実行されます。エージェントの呼び出し、エージェントの手動での再実行、試行実行は、呼び出しを起動することも、その結果を受け取ることもありません。
- スワイプは、その返信で保存された最初の互換性のある記憶を再利用します。その返信の後で、キャラクターが呼び出せる以前のシーンが保存、編集されたり、オンまたはオフに切り替えられたりした場合は、スワイプで記憶を呼び出し直します。返信の続きを生成するときは、開始時の記憶を保ちます。履歴、アクセス設定、要約、記憶を変更すると、保存済みのスナップショットは無効になります。
- 元のメッセージを編集、スワイプ、非表示、削除すると、影響を受ける記憶は使う前に再確認されます。過去の返信を再生成するときは、対象より前のソースだけを使います。
- 記憶の呼び出しの記録には、推定コンテキストサイズ、選択した境界、呼び出したソースが表示されます。何も呼び出されなかった場合は、以前のシーンがなかったのか、空きが残っていなかったのか、関連するものがなかったのかが示されます。プロンプトのプレビューは準備済みの記憶を使い、モデルの呼び出しを開始しません。最終プロンプトインスペクターには、モデルに送られた内容が表示されます。
- 呼び出したシーンに抜粋がない場合は、その理由が呼び出しの記録に示されます。要約の後に空きが残らなかったか、引用できるメッセージが1件もなかったかのどちらかです。
Access memories for this chat
これを開くと、番号付きのシーン要約の検索、その期間と読み手の確認、Summary text(要約本文)の編集ができ、Inspect source messages(元のメッセージを確認)で元のメッセージを読めます。記録をオフにしたり、Reindex(再インデックス)したり、エクスポートとインポートをしたりできます。Delete all memories(すべての記憶を削除)を使うと、チャットと設定を残したまま準備をやり直せます。手動の要約への修正は保持され、それに依存する継続用の要約は無効になります。要約の下部にあるDelete summary(要約を削除)は、対象の要約と読み手を確認した後で、その要約を削除します。旧形式のContinuity(連続性)やOngoing scene(進行中シーン)の項目にも使えます。削除した要約は、通常の準備では再生成されません。
シーンを呼び出しから除外するには、その記憶の記録をオフにしてください。キャラクターごとの非表示は、引き続き誰がアクセスできるかを制御します。全体の非表示では、アーカイブから取り除かれません。
シーンを読めるキャラクター
- シーンの一部にいたキャラクターは、一部のメッセージが隠されていても、そのシーンの記憶へのアクセスを共有します。アクセスできる元のメッセージが1つもないシーンは利用できません。不在のキャラクターに言及しても、そのキャラクターが参加者になることはありません。
- 新しい要約では、メッセージの可視性を示し、共有する出来事は通常の文章で書き、非公開部分には
{{#if character == "Name"}}…{{/if}}を使います。可視性や、要約の対象キャラクターが変わった場合、そのシーンをもう一度準備する(該当するシーンはすべてFix(修復)で準備し直されます)か、非公開部分の条件を確認して保存するまで、部分的なアクセス権しかない読み手には古い要約を渡しません。後から参加したキャラクターは、シーンの一部しか見えない場合を除き、変更として扱いません。古い要約は、キャラクターが参加した後に一度Fixを実行する必要があります。すべての元のメッセージにアクセスできる読み手は、引き続きそのシーンを呼び出せます。手動で修正した文章が、黙って書き換えられることはありません。 - シーンの日付は、割り当てられたすべての参加者で共有されます。原文の抜粋に、キャラクターから隠したメッセージやささやきが含まれることはありません。一部のキャラクターだけに向けた部分を持つ要約にも抜粋が付き、その抜粋はそのキャラクターが見たものだけを引用します。あるメッセージをキャラクターの記憶に残したくない場合は、そのキャラクターから隠してください。
- まとめて返信するグループチャットでは、少なくとも1人のキャラクターが覚えている記憶を呼び出しに含めます。すべてのキャラクターが知っているわけではないシーンや非公開部分には、「known only to Kaito」のように印が付きます。抜粋は、そのシーンを覚えているすべてのキャラクターが見たメッセージだけを引用します。ナレーター専用のシーンなど、どのキャラクターも覚えていない記憶は含めません。キャラクターが1人ずつ返信するグループチャットでは、各キャラクターは自分の記憶だけを呼び出します。
判断による呼び出しの仕組み
- まず通常の呼び出しが、シーン要約を最大24件の候補に絞り込みます。Maximum recalled scenes(想起するシーンの最大数)のほうが大きい場合は、その件数まで絞り込みます。候補は、文字列検索と埋め込みを組み合わせて決めます。埋め込みでは、返信するキャラクターが最後に話してから送った自分のメッセージ(最大6件)と各シーンを比べます。最初の返信では、最新の自分のメッセージを使います。ほぼすべてのシーンに埋め込みができるまでは、通常の呼び出しの順位で候補を決めます。上位3件のシーンそれぞれの直後のシーンにも、候補の枠が与えられます。
- モデルが判定する各要約の先頭には、メッセージの範囲、物語の中の日付、発言者を示す1行が付きます。モデルは関連するシーンを選び、続いて選んだシーンごとに、最も一致した元のメッセージを最大12件判定して、そのシーンの抜粋を選びます。最も適した1件が中心になり、ほかに選ばれたメッセージはMaximum messages per excerpt(抜粋あたりの最大メッセージ数)まで抜粋を伸ばします。
- また、新しいメッセージごとに、物語が別の場所や時間へ移ったか、別の場所にいるキャラクターへ切り替わったか、シーンの区切り線の後に続いているかを確認します。このとき、直前の3件のメッセージと、それぞれの書き手も参照します。境界が不確かな場合はシーンを開いたままにします。正常な判断で何も選ばないこともあります。
- 時間制限: 各段階には、おおよそ、モデルが1つの質問に必要とする時間に質問の数を掛け、さらにその半分を足した時間が与えられます。最短10秒、最長25秒です。2つの段階を合わせても、返信ごとに最長40秒です。モデルがすべての質問を時間内に処理できない場合は、一致度の高いものから順に、判定する数を減らします。リクエストは短いため、時間内に届いた回答は有効です。その間、返信にはいつものThinking…の表示が出ます。
- 1つのリクエストが失敗した、時間切れになった、または大きすぎた場合は、その記憶だけが通常の呼び出しに戻り、モデルが選んだシーンの後に並びます。呼び出しの記録にもその旨が示されます。接続がない場合や、回答が1つも返らなかった段階では、すべてが候補の順位と文字列検索に戻ります。シーンの判断を利用できない場合は、標準のシーン確認に戻ります。
- このモードでも埋め込みは作られます。新しく要約したシーンには、すぐに埋め込みが作られます。古いシーンや、別の埋め込みモデルで作ったシーンには、返信の後に少しずつ埋め込みが作られます。Reindex(再インデックス)を使うと、すべてを一度に作れます。
- Peek Prompt → Decision diagnostics → Advanced Memory activity(Peek Prompt → Decision診断 → Advanced Memoryの動作記録)には、最新の記憶の呼び出しとシーン確認の保存済み結果が表示され、モデル、時間、スコア、選択した記憶やシーンの開始位置、フォールバックの状態、シーンに抜粋がない理由を確認できます。最大128件の結果を保存します。これは過去の動作の記録で、予測ではありません。開いても判断は再実行されません。互換性のあるスワイプは、保存した選択を再利用します。続きを生成するときは、記憶を選び直します。
- ホスト型のDecisionアカウントには、コンテキストの予算内に収まるバッチで送ります。管理対象のOpen-Jevモデルは、計測した質問あたりの時間を使います。Decisionアカウントは1つのリクエストに含まれる質問にまとめて答えるため、リクエストごとに1回分として数えます。
プリセット内の配置
プリセットの作成者は、通常のセクション順序、名前、ロール、グループの設定を使い、次のコンテンツマーカーを配置できます。
| マーカー | 内容 |
chat_summary | Chat Summariesの対象となる常時要約。 |
current_scene_summary | 進行中のシーンの古い部分から取ったソース抜粋。 |
recalled_scenes | 選択したすべてのシーン要約。それぞれの直後に抜粋が続きます。 |
それぞれ、プリセットのXML、Markdown、Noneの形式に従います。空の要素は何も出力しません。最初の有効なマーカーが位置を決めます。有効なマーカーがない要素は、履歴の前に1回だけ挿入されるため、古いプリセットも動作します。プリセットのピッカーにはRecalled Scenesだけが表示されます。古いrecalled_messagesマーカーはエイリアスで、有効なrecalled_scenesマーカーが優先されます。Advanced Memoryがオフの場合、これらのマーカーは空です。
制限
呼び出しは選択的で、要約は細部を失うことがあります。重要な修正は、元の会話記録か要約エディターに残してください。埋め込みが失敗しても、範囲を絞った文字列による呼び出しと、有効な継続情報は残ります。アーカイブ全体が挿入されることはありません。指示や添付ファイルが上限に収まらない場合は、それらを減らすか上限を上げてください。応答用の予約がモデルの総コンテキストに収まらない場合は、出力サイズを下げるか、コンテキストの大きいモデルを選んでください。Advanced Memoryは、指示を黙って削除する代わりに停止します。
Advancedモードがオンの間はこのモードが検索を担当するため、Standard Recallが同じ内容をもう一度挿入することはありません。そのチャットの通常のRoleplay自動要約スケジュールも置き換えます。オフにすると、通常の設定に戻ります。既存のロアブックやダウンロードするエージェントは、それぞれの適用範囲の規則に従います。
関連ガイド
- 内蔵モデルのセットアップ
- AIプロバイダーへの接続
- Conversationモード: はじめに
- Roleplayモード: はじめに
- Marinara Engineのトラブルシューティング