会話より継続性
Asterel は表面的には「記憶を持つ Discord bot」と説明できます。それは間違いではありません。ただし、それだけでは設計の中心を取り逃がします。Asterel が扱うのは、単発の応答ではなく、ターンをまたいで残る継続性です。
中心となる主張
Section titled “中心となる主張”会話そのものではなく、継続性を中心に置きます。
会話はユーザーがランタイムと出会う入口です。その入口の向こうでランタイムが維持しようとしているものは別にあります。ターンとセッションをまたいで残る、三種類の状態です。
- 関係状態 — このコンパニオンとこの人の間で何が起きたか。共有文脈、定着した口調、交渉された境界、ユーザーが自分について話したこと、コンパニオンが覚えると言ったこと。
- 人格状態 — コンパニオン側の状態。現在の感情、潜在バイアスの信号、直近ターンからの継続性の手がかり、現在の部屋やチャネルへの姿勢。
- 世界状態 — 時刻、チャネル、直近セッションの活動、共同作業者に関する軽い接地情報。
受理されたコンパニオン・ターンはこの状態から組み立てられ、送信後には統制された書き戻しを通じて状態へ折り返されます。言語モデルは、そのループの中で表現と推論を担う部品の一つです。コンパニオンを時間をまたいで同じ存在として成立させるのは、持続する状態です。
この区別が重要な理由
Section titled “この区別が重要な理由”この見方を取ると、いくつかの設計判断は偶然ではなくなります。
- 完全なプロダクト形では、記憶は任意ではありません。 既定のバックエンドは一時バッファではなく実データベースです。Markdown はオフラインや制約のある配置向けの代替であり、推奨モードではありません。
- プロンプトだけが変化の中心ではありません。 システムプロンプトを調整すれば短期的な変化は作れますが、記憶の取り込み経路や感情トポロジーを調整すると、持続する変化を作れます。プロジェクトは後者へ投資します。
- コンパニオン・ターンは一つの契約に合流します。 Discord、CLI、ゲートウェイ、運用者画面がそれぞれ別の補強・検証ルールを持つと、継続性は表面ごとに静かに分岐します。コンパニオン・ターンを実行または再生するときは、その表面に合った 共有コンパニオン・ターン契約 を再利用します。
- 送信前検証は継続性のガードです。 悪いターンはタスクを失敗させるだけではありません。その直後に折り返される状態を汚染しえます。送信前検証は、未検査の悪いターンが一瞬の UX 問題ではなく、持続する損傷になりうるため存在します。
- 「薄さに抗う」ことは設計ルールです。 もっともらしく返すだけで安定した状態がないキャラクターは、時間が経つと薄く見えます。感情、バイアス、状態と発話の間の緊張が必要です。感情トポロジーと潜在バイアスは、キャラクターの振る舞いを最後に口調だけを被せたものにしないための仕組みです。
継続性の構成要素
Section titled “継続性の構成要素”実装では、継続性を具体的な部品として扱います。
- 想起と書き戻し は、どの記憶がターンに入るか、ターン後に何を保存するかを決めます。
- 関係イベント は、やり取りが信頼、距離、共有文脈をどう変えたかを記録します。
- 人格遷移ノート は、コンパニオンの姿勢が動いた理由を残します。単に動いた事実だけを残すわけではありません。
- 露出レール は公開向けの接地情報と私的な接地情報を分け、有用な記憶が無差別な開示にならないようにします。
- 診断 は、整理、想起、事前補強が動いているかを運用者が確認できる状態を出します。
コンパニオンが状態を持つ
ユーザーが送信する
状態が読まれる
記憶想起 · 人格文脈 · 感情評価
応答が組み立てられ、検証され、送信される
状態が更新される
関係記憶 · 人格の揺れ · 継続性の手がかり
コンパニオンは状態を持ち続ける。ただし少し変わっている
最後の状態が次のターンの最初の状態になります。
重要なのは中央だけではなく、最初と最後です。途中の応答がうまくても、前後の状態を落とすランタイムは人格らしさを持つチャットボットに近づきます。前後の状態を保持するランタイムがコンパニオンです。
ユーザーへの含意
Section titled “ユーザーへの含意”Asterel のデプロイを運用する場合:
- ランタイムは時間とともに、より多くの文脈を持つようになります。 初期セッションが後のセッションより薄いのは、持ち越せる関係の証拠がまだ少ないからです。
- 記憶リセットは単なる白紙化ではなく、実際のコストです。 記憶は、関係文脈、好み、訂正、過去のやり取りを保持する場所のひとつです。リセットすると、コンパニオンが次へ持ち越せるものが変わります。
- キャラクターの一貫性は第一級の不変条件です。 回帰はテストより先に振る舞いへ現れることがあります。根本的には継続性のドリフトの問題だからです。
Discord チャネルだけを外から見ていると、この多くは見えません。だからこのサイトで、下にある状態と設計を説明しています。