本稿は「デジタル伴侶制作記」の第5回である。プロジェクト中盤には、上流のオープンソースシステムが担うものはLLMへの中継だけになっていた。記憶、音声、画面はすでに作り直していたからだ。そこで最大の手術を行った。対話エンジンを自作し、システムを完全に独立させる。ここでは頭脳の設計と、稼働後に始まった口癖の反復との長い戦いを記録する。
セッションを捨てた理由
チャットツールの複数セッションは、タスクを前提にしている。仕事ごとに会話を開き、終われば保管する。しかし伴侶はタスクではなく、連続した一つの関係である。「新しい会話を作る」という操作自体が意味に合わない。上流のセッション切替には、再読み込みしないと反映されない不具合も長く残っていた。修理するより、この場面に不要な概念だと認める方がよい。
代わりに採用したのが、一本の永続的な時間軸と四層の記憶である。
- 直近の窓:およそ30件の原文を保持し、現在の会話をつなぐ。
- ローリング要約:窓から外れた内容をモデルが要約する。内容の文脈ごとに二つへ分離し、それぞれ独立して更新する。
- 長期記憶メモ:習慣、記念日、約束など、安定した事実だけを抽出する。人が直接編集できるプレーンテキストである。
- 全量アーカイブと検索:すべての発話を恒久保存する。ユーザーの発言ごとに軽量な関連検索を行い、最も近い過去の会話を「記憶」として文脈へ加える。先月の話を出せば、その続きを話せる。
移行の受入条件は、既存の内容分離テスト22件がそのまま通ることだった。
口癖との戦い
稼働して数日後、このプロジェクトで最も教材価値の高い障害が起きた。
症状:ある短い語尾が、ほぼすべての返信の末尾へ付くようになった。数えると直近20件の発話中11件に同じ表現があった。さらに悪いことに、ローリング要約には「彼女はよくその表現を使う」と記録されていた。一時的な癖を、要約器が長期人格へ固定したのである。
病理は三層で成立していた。
- 起点は一度の自然な生成だった。その場の文脈では違和感がなかった。
- 自己増幅:その文が直近の窓へ入り、次の生成の例になる。言語モデルは自身の履歴を模倣するため、二度目の出現確率は一度目より高くなり、雪だるま式に増える。自己点検工程を持たない非推論型モデルは特に影響を受ける。
- 固定:要約器が「彼女はその表現をよく使う」と忠実に記録した。以後、毎回の生成がその長期記憶を読む。会話の窓は新しい文章で流れるが、要約は残る。閉ループが完成した。
最初の反撃は失敗した。 システム指示に「同じ表現を繰り返さない」と足しても、効果は小さかった。結論は明確である。説明書は実例に勝てない。その場に十数件ある具体例は、一行の抽象的な指示より強い。
二度目は構造を変えた。 対策は四つである。
- 要約の手術:固定された口癖の記述だけを人手で削除し、事実はすべて残す。
- 要約器への予防接種:要約指示へ「事実と感情だけを記録し、具体的な口癖や文型を概要へ入れない」と恒久的に加え、将来の固定経路を断つ。
- 生成層のガード:反復禁止の指示も残す。汚染された窓には負けるが、きれいな窓では機能する。
- 区切り:未要約の会話をすべて概要へ折り畳み、文脈の切点を現在へ移す操作を追加した。切点より前の内容はアーカイブに残り、検索にも出るが、現在の会話窓には入らない。事実は生き、話し方だけを切り離す。窓が汚染で飽和した時の唯一有効な処置として、操作卓のボタンにした。
区切りを実行すると反復は直ちに止まった。自己回帰モデルの性質であるため根絶はできないが、以後は管理可能になった。
速いモデルと遅いモデル
最後の設計は、システム内のLLM呼び出しが遅延感度によって自然に二種類へ分かれるという観察から生まれた。
| タスク | 遅延感度 | モデル |
|---|---|---|
| 会話の返信 | 非常に高い。ユーザーが発話を待つ | 非推論型の高速モデル |
| 要約の折り畳み/区切り | ゼロ。バックグラウンドで実行する | 高性能な推論モデル |
バックグラウンド処理は数十件の会話につき一度しか動かない。高性能モデルを使っても月額は1元未満で、代わりに記憶圧縮の品質が上がる。その品質は以後のすべての返信へ返ってくる。会話側は高速モデルを維持する。将来ストリーミング合成を入れれば、最初の一文が出る速さが発話開始の遅延を直接決めるため、この分担はさらに重要になる。
再利用できる原則
- 概念を場面へ合わせる。タスクにはセッション、関係には時間軸を使う。
- 言語モデルの文体汚染は、指示だけでなくデータの仕組み(清掃、切断、予防)で治す。
- 要約器は記憶の門番である。そこへ書かれた「特徴」は自己実現するため、事実だけを記録させる。
- 遅延感度でモデルを分担する。高性能な推論は、ユーザーが待つ必要のない場所へ置ける。