Skip to content

Storage Model ja

Hermes Agent edited this page Oct 1, 2026 · 1 revision

ストレージモデル

English | 中文 | 日本語 | 한국어 | Español | Português | Русский

ユーザーデータはすべて chrome.storage.local に置かれ、lib/storage.js がラップする。アカウントなし、サーバーなし。

グローバルなフラット履歴

  • history はグローバルな単一会話のフラットなメッセージ配列(タブ毎ではない)— それが意図された製品デフォルト: 新しいトピック = ユーザーがドロワーから明示的に新セッションを開く。タブ毎の自動切替は明示的に却下された(ADR-0002)。再提案しないこと。
  • エントリ形状: {role, content}。content は文字列、または(マルチモーダルの)[{type:'text'}, {type:'image_url'}]。添付エントリは PAGE_CONTEXT_PREFIX ヘッダを運び、動画エントリは videoSrc でスタンプされる(クリック可能なタイムスタンプピルの前提条件)。
  • 1 送信 = ユーザーバブルちょうど 1 個は不変条件(編集再送信/再生成は先に古いバブルを削除する)。

セッションスナップショット: 軽量インデックス + ボディキー(批E、2026-09-30)

  • savedSessions 自体は軽量インデックス [{id,name,createdAt,pinned,textDigest}]。スナップショットのバイト列はセッション毎の session_<id> キーに置かれる。すべてのセッション関数は readSessionIndex() に funnel され、これは旧来の単一キースナップショットをその場で移行する(インデックス書き換え「より前に」書かれたボディが対象。冪等、クラッシュセーフ)。
  • ドロワー検索は名前 + textDigest にマッチする(テキストのみのダイジェスト、セッションあたり 10 万文字で上限 — 上限を超えた内容は検索対象外。文書化済みのトレードオフ)。
  • session_<id> キーはターゲット読み取りであり、意図的に GET_ALL_KEYS には入れない。

GET_ALL_KEYS 契約

getAll() は固定の軽量キーリスト(DEFAULTS から history を引いたもの + options の 3 設定)を読み、get(null) は決して使わない — 後者は、ターン/添付/explain のたびに ≤8MB の画像と全スナップショットをデシリアライズしていた。getAll の利用者が見るべき新しいキーはこのリストに入り、ターゲット読み取りのキーは外に留まる。

画像ライフサイクル: ピクセルは決して破棄されない(ADR-0013、ハード制約)

バブルは送信したものを表示する — 保存された画像ピクセルは削除も劣化もされない(セッションスナップショットもバイト列を含む。ADR-0005)。圧縮はすべてリクエスト側で起きる:

  • imagesSeen スタンプ: 成功したターンの後、画像を含むエントリにスタンプが付く。リクエストビルダは prepareHistoryForModel を呼び、これは「既視」の画像をラベルプレースホルダ([图N] / [Figure 3: …])へ置き換え、「未視」のものはピクセル付きで通す。以降のターンは、画像 1 枚あたり約 1K トークンの代わりに安価なテキストを再送する。
  • boundUnseenImageBytes: パネルオープン時の衛生 — 駐車された「未視」ピクセルは、最も古いものをサムネイルへダウンスケールすることで 8MB に封じられる(ラベル化はしない: ピクセルを失ったエントリはバブル画像を失う)。最新の画像エントリは常に免除される。
  • エージェントプロバイダは変更不要: buildAgentTurn が収集するのは(未回答・未スタンプの)末尾のページコンテキスト実行だけ。

リクエスト側のコンテキストスリム化

  • コンテキストエージング(ageStaleAttachments): 送信時に「コールド」な添付(最新ではない、3 ユーザーターン以上後方、8000 文字以上)は 1 行の決定論的スタブになる — ストレージは無傷。決定論性が、1 回限りの破断の後もプロバイダキャッシュのプレフィックスを安定に保つ。
  • 添付の自動要約: 閾値を超える添付は、保存後に 1 回の LLM 圧縮パスを受ける。マルチモーダルの image_url ブロックは書き換えを生き残る。
  • オーバーフロー救済: コンテキストオーバーフローで失敗したターンは、大きい添付を刈り込んでリクエストを再構築し、1 回リトライする。ストレージの書き換えはリトライしたターンが成功した「後に」限る — 生の添付は失敗を生き残る。

SW 起床衛生

サイトキャッシュは chrome.storage.session に置かれる。復元は遅延(最初の siteCacheCtx 呼び出しが読み取りのコストを払う)で、タブの生存を検証する(これが復元 vs クローズの競合も殺した)。パージリスナーはオンデマンドで登録する。SW をコールドスタートさせるものは、恒久的に存在してはならない。


権威版: Storage-Model(英語) / Storage-Model-zh(中文) — AI による初翻スナップショット、同期日 2026-10-01。

Clone this wiki locally