いまの 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