いまの AI ロールプレイは、終わったら消える

AI キャラと 3 時間過ごす。彼女はあなたが助けたことを覚えている。4 号車での口論を覚えている。あなたがついた嘘を覚えている。そしてあなたはウィンドウを閉じる。

翌日戻ってくる。彼女はまだそこにいる —— でも、もう「あの彼女」ではない。コンテキストは切り詰められ、記憶は圧縮され、キャラはリセットされた。その 3 時間は、戻れる歴史ではない。蒸発した会話だ。

これは今日のほぼすべての AI ロールプレイ製品の共通の欠陥だ:プレイ状態が会話の副産物であって、一等市民ではない。 ある瞬間にセーブできない、分岐点に戻って選び直せない、「私の Elena はもうダークエンドに到達した」を友人に渡して続きを遊んでもらえない。

私たちの答え:世界も魂もバージョン管理可能にする

WorldLines はソフトウェア工学の実証済みのアイデアを借りる —— commit-tree(コミットツリー)。

コードを書く人なら git を知っている:意味ある変更ごとに 1 コミット、コミットは分岐できるツリーを成し、どのノードも正確に再現でき、そこから分岐でき、他人に push できる。

同じことを物語に適用する。WorldLines では 3 種類の「もの」がバージョンを持つ:

  • 世界(World) —— 遊べる物語の舞台。作者が dark-train@2.0 を公開する —— それが「クリエイター版」。

  • 魂(Soul) —— 人格のカーネルを持つキャラクター。自分の記憶・価値観・限界を持ち、あなたのアバターにも、世界の NPC にもなれる。

  • プレイそのもの —— ここが核心。意味あるターンを遊ぶたびに commit が生成される:その瞬間の世界状態 + 各キャラ魂の状態 + 各 agent の完全な会話コンテキストが、改竄不能なハッシュに固められる。

ハッシュは後から貼るラベルではない —— ハッシュこそがその状態の同一性だ。 同じ内容は、どのマシンでも同じハッシュになる。つまり:

  • 任意の瞬間にセーブ —— 「最後のオートセーブ」ではなく、毎ターンが記録に残る。

  • 分岐点に戻る —— どのコミットからでも新しいストーリーラインを分岐でき、元の歴史は無傷で残る。

  • 真にポータブル —— コミットを別マシン(ブラウザでも)に持っていき、その瞬間から続けると、元のマシンと同じ結果になる。

  • 共有可能 —— 「ここまで来た、ここから続けて」が 1 つの commit hash になる。

魂は、ウィンドウを閉じても忘れない

Soul はキャラクターカード 1 枚ではない。記憶は短期と長期に分かれ、感情と重要度で固定または忘却され、親密さで近づき価値の衝突で離れる —— そしてこれらの状態は、毎ターン、彼女自身の独立した commit チェーンに入る。

彼女は自分がどの世界にいるか知らない(コミットに世界の情報を書かない)。だから同じ「ダークトレインの結末をすでに経験した Elena」を、まったく別の物語に連れていける。魂は独立して流通できる資産だ。

実際に何が起きるか —— Elena を例に、ファイル単位で

キャラクターカードをインポートする。WorldLines はそれを soul フォルダに展開する。Elena が 誰なのか —— コア特性・価値観・背景 —— は persona/ と background/ に入り、これらは凍結される:作成後は何も上書きしない。これは今日のキャラクターカードがすでに与えている部分;私たちはそれを腐らせないだけだ。

そしてプレイする。すべての行動は特定のファイルに落ち、その書き込み権を持つ agent は 1 つだけ:

  • 剣を買う。 soul-action が character/inventory.json と character/wallet.json を書く。ゴールドが減り、剣が袋に入る —— コンテキストウィンドウではなく、ディスク上に。

  • 彼女と話す。 soul-dialogue と soul-memory が short-term-memo/(conversation_cache.json、recent_events.json)を書く —— このセッションの作業記憶。

  • 感情的に何かが刺さる —— 彼女があなたを信じ始める、またはあなたが彼女を裏切る。soul-memory がそれを long-term-memo/ へ統合する:important_events.md、そしてあなたが本当に訊いている部分 —— Elena があなたにどれだけ近いかは long-term-memo/emotional_memories.json に存在し、関係が動くたびに書き換えられる。persona/relationships.json のベースラインは決して変わらない;感じられる距離は長期記憶であって persona ではない。

毎ターン、その soul 状態全体が Elena 自身のチェーン上の 1 つの commit にハッシュ化される —— 彼女がどの世界にいるかを決して記録しないチェーンだ。

世界バージョンをまたいで反復する

世界作者が dark-train@2.0 を出す。あなたは同じ Elena を連れていく。彼女の commit チェーンは彼女のもので、世界データを持たないから:

  • persona/ / background/ —— 同一。彼女は同じ人物。

  • long-term-memo/ —— 彼女と一緒に来る。ダークトレインの結末をまだ覚えていて、あなたへの感情もまだ持っている。

  • short-term-memo/ —— 新しいインスタンスはクリーンに始まる;セッションのスクラッチはプレイ間で漏れない。

  • character/ —— fork 時のあなた次第:装備を新規に始めるか、引き継ぐか。含めるかどうかを選ぶだけのファイルだ。

短期はプレイごとのスクラッチ;長期と persona は彼女;世界は彼女が決して逆参照しない別のチェーンだ。

これが日常の AI 会話に何を変えるか

Character.AI や SillyTavern(酒場)のセッションでは、上のすべてが 1 つのもの:コンテキストウィンドウの token。あなたの持ち物、彼女がどれだけ近いか、3 時間前に何が起きたか —— それはウィンドウが満杯になるか、タブを閉じるまでしか存在しない。inventory.json はない。commit はない。「前回の続きから」はベストエフォートの再要約だ。

WorldLines はそのそれぞれを、あなたが所有するファイルと、任意のターンにセーブでき、分岐でき、友人に渡せ、別マシンで同一に再現できるハッシュ commit にする。同じくキャラクターカードから始まる —— 違いは、最初のメッセージ以降のすべてが蒸発しなくなることだ。

終局:遊ばれた世界は、コミュニティになる

この体系の本当の野心はもっと先にある。

ある世界の 1 コミットが配布できるようになると、それは「静的な物語モジュール」ではなくなる。それは 生きたノード だ:他人がそれを fork し、あなたが止めた場所から続け、彼らの続きをチェックインで戻し、その下に議論を形成できる。世界観そのものが、一人の作者ではなく、人々の集団によって、定期的に保守・拡張・継続されうる。

それが WorldLines の hub 体系が最終的に育っていく姿だ:物語のストアではなく、誰もが接ぎ木できる物語のツリー。git は世界中のプログラマーが同じコードベースで協働できるようにした;私たちは世界中のプレイヤーとクリエイターが、同じ成長し続ける物語世界で協働できるようにしたい。

いまどこにいるか

WorldHub と SoulHub の配布パイプライン、3 軸バージョンモデル(クリエイター版 / インスタンス / commit)、マシン間で再現可能な commit スナップショット —— 基盤は設計ロック済みで実装中。マルチ agent ランタイム(1 つの世界 agent が、独立した心を持ちそれぞれ自分のモデルを走らせる N 個のキャラ agent を統括する)が次の中核エンジニアリングだ。

あなたのあの 3 時間は、蒸発すべきではない。戻れるノードであるべきだ —— 育ち続けられるツリーであるべきだ。

—— Ludic Dynamics

Ludic Dynamics
Ludic Dynamics 東京からAI駆動の世界を構築。