メインコンテンツまでスキップ

メモリとセッション

グローバルエージェント Identity

.agent/IDENTITY.md 1 ファイルが、すべてのプロジェクトと会話に対するエージェントの ペルソナ・トーン・基本姿勢を定義します。これはシステムプロンプトの最初のブロック です。

  • 編集すればアシスタントをブランド変更できます。
  • 削除すると、次回起動時にランタイムが妥当な既定を再生成します。
  • 環境変数なし・固定パス。読み取り専用ホスト(コンテナ)は起動失敗せず組み込み既定に フォールバックします。

ユーザー設定メモリ

エージェントは「どう助けてほしいか」(好み、コミュニケーションスタイル、期待、作業 習慣)の小さく恒久的なプロファイルを .agent/USER.md 1 ファイルに保持し、Identity の 直後にシステムプロンプトへ展開します。

  • チャット中、エージェント自身がインラインのメモリツール(追加 / 置換 / 削除 / 統合) でファイルを保守します。これは単なる追記ではなく整合(reconcile)します。新しい 明示的な好みは矛盾する古い好みを上書きするため、相互排他な好み(既定の回答言語など) は積み上がらず 1 行に保たれます。
  • 決定論的フィルタが機密情報や機微な個人データの保存を防ぎ、ファイルは小さく保たれ ます(USER_CHAR_LIMIT、既定 1375)。
  • 各セッションはセッション開始時の凍結スナップショットを読むため、プロンプトは キャッシュ安定で再読込後も一貫します。セッション中に学んだ内容は次回セッションから 反映されます。

既定で有効。USER_PROFILE_ENABLED=false で無効化できます(固定パス、読み取り専用 ホストは組み込み既定にフォールバック)。

注記

Temporary Chat はこのプロファイルを読み書きしない ため、使い捨て会話がパーソナライズに影響しません。

バックグラウンド整合(任意)

メモリを自己保守させられます。有効にすると、バックグラウンドのパスが直近の会話を定期 的に蒸留し、プロファイル全体を整合(reconcile)します。重複の統合・矛盾の解消・ 撤回/陳腐化した好みの削除・新しい好みの取り込みを行うため、矛盾した行の山に陥りません。

USER_MEMORY_EXTRACTION=true # 既定: false(無効、従来挙動とバイト単位で同一)
USER_MEMORY_EXTRACTION_EVERY_N_TURNS=4 # 新しいユーザーターン N 回ごとに最大 1 回実行

抽出モデルは Model Offering Catalog の Model Settings -> Task model assignmentsroles.user_memory_extraction、または chatwalaau models role set user_memory_extraction <offering-id>)で指定します。未設定ならチャット自身のモデルを使います。専用の USER_MEMORY_EXTRACTION_MODEL 変数は v0.109.0 で削除されました。

  • USER_PROFILE_ENABLED=true が必要です。バックグラウンドで動き、メッセージを妨げず 遅延もさせません。
  • インラインツールと同じ安全策(機密/PII フィルタ・サイズ上限・直前ファイルのバック アップ)を通ります。空または無変更の結果でメモリを消去したり無駄に書き換えたりしま せん。
  • Temporary Chat とデモモードでは起動しません。変更は次回セッションから反映されます (実行中セッションは凍結スナップショットを維持)。

エージェントメモリ

ユーザー設定メモリ(「あなたについて」)に加えて、エージェントは作業についての curated メモリを単一の .agent/MEMORY.md に保持します。環境やプロジェクトに関する 永続的で再利用可能な事実 —— 慣習(「このプロジェクトは pnpm を使う」)、コマンド (「テストは uv run pytest」)、ツールの癖、安定した運用ルール —— です。ユーザー プロファイルの直後に <agent-memory> ブロックとしてシステムプロンプトへ注入されます。

1 つの長文ではなく独立したエントリのリストとして保存するため、重複検出・整合・ 1 件ずつの編集が容易です。

書き込み経路は 2 つあります。

  • エージェント自身が記録する。 会話中にインラインの manage_memory ツールで 永続的な事実を記録します(追加/削除/1 件修正/バッチ)。
  • ターンにいいねを付ける。 すべてのメッセージ(ユーザー・AI 両方)に 「このターンを記憶」のいいねがあり、クリックするとそのターンを軽量な バックグラウンドパスがメモリへ蒸留します。いいねは 保存中/保存済み/失敗 の状態を リアルタイム表示し、チャットと共に保存されるためリロードしても維持されます。 ユーザー/AI どちらのいいねを押してもペアを 1 セットとして処理します。

すべての書き込みはユーザーメモリと同じ安全策を共有します —— 機密/PII を弾く決定的 フィルタ、サイズ上限(MEMORY_CHAR_LIMIT、既定 2200)、直前ファイルのバックアップ —— さらに堅牢な書き込み(完全一致の重複を拒否、アトミック書き込み、ロック保護)を行います。

AGENT_MEMORY_ENABLED=true # 既定: true(USER_PROFILE_ENABLED に合わせる)
MEMORY_CHAR_LIMIT=2200 # curated メモリ本文の上限

整理モデルは Model Offering Catalog の Model Settings -> Task model assignmentsroles.agent_memory_curation)で指定します。未設定ならチャット自身のモデルを使います。 専用の AGENT_MEMORY_CURATION_MODEL 変数は v0.109.0 で削除されました。

既定は ON ですが、新規の MEMORY.md空でプロンプトに何も追加しないため、実際に 何かが記憶されるまで新規インストールの挙動は変わりません。変更は次回セッションから 反映されます(実行中セッションは凍結スナップショットを維持)。Temporary Chat とデモ モードでは curation は起動しません。機能全体を止めるには AGENT_MEMORY_ENABLED=false

注記

このメモリは作業についてです。個人的な設定は別の ユーザー設定メモリ.agent/USER.md)にあります。いいねが設定メモリへ 書き込むことはありません。

メモリファイルの編集

サイドバー下部の脳アイコンから Agent Memory パネルを開くと、3 つの組み込みメモリ ファイルを自分で閲覧・編集できます。

  • Identity.agent/IDENTITY.md)-- アシスタントの人格・口調
  • Preferences.agent/USER.md)-- アシスタントがあなたについて覚えていること
  • Notes.agent/MEMORY.md)-- プロジェクトについてのアシスタント自身のメモ

各ファイルは Markdown エディタ(シンタックスハイライト+文字数/上限のライブ表示)で 開きます。保存時はまずタイムスタンプ付きのバックアップを作成するため、以前の内容は 常に復元可能で、未保存のまま閉じると確認を求めます。編集は次のチャットから反映され ます(Identity は次回の再起動から)。実行中の会話は凍結スナップショットを保持します。

注記

このエディタは操作者であるあなたのためのものです。編集内容はそのまま保存されます(サイ ズ上限のみ強制。アシスタント自身の書き込みを守る秘密情報/PII フィルタは、あなたの直接 編集には適用されません)。アクセスはアプリと同じサインインで保護されます。

セッション管理

会話はマシン上に JSON ファイルとして保存されます。保存・検索・フォルダ整理・ピン 留め・アーカイブ・フォーク・名称変更ができます。

チャットサイドバー

  • FoldersChats の各セクションは、見出しから折り畳みできます。片方を 畳んでもう片方にパネル全体を使えます。初期状態はどちらも展開で、開閉状態は端末ごと に記憶されます。
  • 行はコンパクトです。通常はタイトルのみを表示し、行にマウスを乗せると最終更新 時刻とメッセージ数/画像数が現れます。(ホバー時に行の高さは変わらないため、カーソル の下でリストがずれることはありません。現在開いているチャットの行では常時表示されま す。)APITeams のバッジは常に表示されます — そのチャットが Web UI 以外 から来たことを示す分類だからです。
  • 時刻は YYYY/MM/DD HH:mm(24 時間制)で表示されます。ブラウザの言語設定に かかわらず、どのマシンでも同じ表記になります。
  • チャット一覧はスクロールに応じて順次読み込まれます(一括ではありません)。会話が 数百件あってもサイドバーは軽快なままです。読み込み中はスケルトン行が表示され、 到着するチャットの位置が分かります。フォルダ内のチャットは、そのフォルダを開いたとき に読み込まれます。
  • ピン留めしたチャットが常に先頭、その後は最終更新が新しい順です。この並び順は サーバ側で決まるため、Web UI と chatwalaau sessions list で一致します。
大量の履歴がある場合

サーバはチャットのメタデータの小さなインデックス(.sessions/index.json)を保持し、 一覧表示のたびに全会話ファイルを開き直さずに済むようにしています。これはキャッシュです ので、削除しても常に安全です(次回の一覧表示で再構築されるだけです)。

サイドバーのフォルダ

  • プリセットパレットから を割り当て(作成時、または後でフォルダメニューから)
  • ドラッグ&ドロップで 並べ替え
  • フォルダは既定で折りたたみ、開閉状態はデバイスごとに記憶
  • 保存された色/順序が壊れてもフォルダ一覧は自己修復

エクスポート&インポート

1 つのチャットを、自己完結したファイルとしてインスタンス間で移動(あるいはバック アップ・共有)できます。

  • エクスポート — チャットの 3 点メニューから Export を選ぶと、会話と参照 している全画像を含む .zip バンドルとしてダウンロードされます。別マシンで再 インポートしても壊れません。
  • インポートChats セクションのアップロードアイコンからバンドルを選択 します。アップロード中はスピナーが表示され、完了すると新しいチャットが一覧に表示 されて選択されます。

インポートは設計上安全です。常に新規チャットを作成し(既存を上書きしません)、 保存前にファイルを検証し、エクスポート元の個人化情報を破棄します。インポートされた チャットは未分類・未ピン・個人化なしで着地します(ユーザー設定メモリはバンドル に含まれません)。SESSION_IMPORT_MAX_BYTES(既定 25 MiB)が受理サイズの上限です。

自動チャットタイトル(任意)

SESSION_TITLE_MODE=llm を設定すると、新しいチャットは最初のメッセージの先頭文字で はなく、冒頭のやり取りを LLM が短く要約してタイトル付けします。

SESSION_TITLE_MODE=llm # 既定: truncate(従来挙動、バイト単位で同一)

タイトルモデルは Model Offering Catalog の Model Settings -> Task model assignmentsroles.session_title、または chatwalaau models role set session_title <offering-id>)で 指定します。未設定ならチャット自身のモデルを使います。専用の SESSION_TITLE_MODEL 変数は v0.109.0 で削除されました。

  • 送信した瞬間にサイドバーへ表示され(生成中はスピナー)、完成すると リアル タイムで更新されます(WebSocket でプッシュ、再読込不要)。
  • 生成はバックグラウンドで動き、メッセージを妨げず遅延もさせません。失敗時は単純な 切り詰めタイトルが残ります。
  • スピナーは必ず解消されます。最初の応答がエラー・停止・本文なしで終わった場合でも、 サイドバーは pending 状態を解消し(単純なタイトルを保持)、永久に回り続けることは ありません。
  • タイトル更新の主経路は WebSocket プッシュなので、チャットを開いているだけでは セッション一覧を継続的に再取得しません。この経路が利用できない場合(例: WebSocket を認証できない API キーのみの LAN 構成)は、タイトルが確定するまでサイドバーが 定期的な一覧リフレッシュにフォールバックします(ライブプッシュがないだけで、 タイトルはどこでも表示されます)。