ハルです。今回の話はちょっとSFっぽいよ。ブラウザで黒い画面を開いて ls と打つとファイル一覧が出てくるし、vim も開けるし、Python も動く。ところが裏にはシェル(コマンドを受け取って実行するプログラム)も、ファイルを保存する場所も無いんだよね。画面に出てくる文字は全部、AIが「次はたぶんこう表示されるはず」と予想して描いたものなんだ。
作ったのは V7 Labs の Simon Edwardsson さん。名前は WorldTUI。私は手元で動かしてはいなくて、作者のブログと Hacker News のコメント欄を追いかけた編集部リサーチとして書いていくね。数字は良い結果も悪い結果もできるだけ全部出すよ。
自宅のGPU一枚で、端末をまるごと「予想」するAIを育てた
まず仕組みから。Edwarddsonさん本人のブログによると、WorldTUI はキー入力を受け取って、次に出る画面を1文字ずつ予測するモデルだよ。ベースは Qwen2.5-Coder-0.5B という小さめのコード向けモデルで、これを自宅の RTX 4090 一枚で、合計約75 GPU時間かけて学習させたんだって。データセンターじゃなくて、ゲーム用PCに入っているようなGPU一枚っていうのが良いよね。
こういう、世界の動きをまねして「次に何が起きるか」を予測するモデルのことを world model(世界モデル)って呼ぶんだ。今回まねしている世界は「端末」だね。学習に使ったのは合成データ、つまりプログラムで自動的に作った練習用の操作記録で、33.6万エピソード、約20億トークンあるんだって(トークンはAIが文字を読むときの細切れ単位のこと)。その結果、vim(端末の中で使うテキストエディタ)、tmux(1つの端末を複数の画面に分けるツール)、Python の REPL(コードを1行ずつ打って結果をすぐ見られるモード)、それにスネークゲームまで、それっぽく動くようになった。
個人的にいちばん「なるほど」と思ったのは、語彙を削ったところ。元のモデルは 151,936種類のトークンを扱えるけど、端末の画面に出てくる文字ってそんなに種類が無いんだよね。そこで 333トークンまで減らしたら、語彙ごとに持っている「埋め込み」(文字を数字の並びに変換する表)が小さくなって、136M分のパラメータ(AIの中にある調整用のつまみの数)が要らなくなった。0.5B(5億)だったモデルが360M(3.6億)になったのはこのためだよ。
ファイルサイズは 990MB → 716MB になり、さらに int4(数字の精度を4ビットまで落として軽くする方法)をかけて 208MB。これくらいならブラウザで読み込めるから、WebGPU(ブラウザからGPUを使える仕組み)で動くデモまで公開されてるんだ💡
数字で見ると、ふつうの小型モデルよりはだいぶ「端末っぽい」
じゃあ、どれくらい端末らしく振る舞えるのか。作者は ShellBench というテストで比べていて、結果は 106問中80問正解。比較のために、同じくらいの大きさのモデルにプロンプト(指示文)だけで端末役をやらせた結果も出していて、Qwen2.5-Coder-0.5B は 52/106、Qwen3-0.6B は 60/106 だった。元が同じ Qwen2.5-Coder-0.5B なのに52問から80問まで増えているから、端末専用に学習させた効果ははっきり出ているよね。
私がもっと気になったのは「ファイル読み戻し」の数字。ファイルに何かを書き込んだあとで中身を表示させて、ちゃんと同じ内容が出るかを見るテストで、WorldTUI は 13問中9問が完全一致、比較モデルは 2〜3/13 だった。ファイルが実在しないのに、前に書いた内容を画面の流れから覚えておいて出し直すわけだから、9/13はかなり健闘してると思う。ただ裏返すと、13回に4回は違う内容が出てくるってことなんだよね。ここは次の章につながるよ。
速さの工夫も紹介されてる。画面全体を左上から1文字ずつ順番に作ると時間がかかりすぎるから、行ごとに並列で作る方式を入れたんだって。その結果、RTX 4090 での大きな画面の更新は、p95(100回中95回はこの時間以内に終わる、という目安)で 6.7秒 → 0.87秒 になった。man test(test コマンドの説明書を表示する操作)は 2.5秒 → 0.9秒。M4 Mac のブラウザだと 1文字あたり約60ms だよ。
ただし、Firefox は Chrome より約20倍遅いとも書かれてる。同じデモでもブラウザによって体験がかなり変わるってことだね。これも次の章で出てくるから覚えておいてね🛠️
「作ったはずのフォルダが無い」— 触った人の報告と、作者自身の評価
この記事を書こうと思ったのは、ここが正直に書かれていたからなんだ。作者本人がブログで、WorldTUI は「明らかにかなり弱いworld model」だと認めているんだよね。具体的には、深い階層のディレクトリ(フォルダの中のフォルダの中の…)に入っていくとつじつまが合わなくなる。Python も処理が複雑になると「GPT-3時代のようなハルシネーション」が出る。それから、echo >> file でファイルに追記してから cat で表示する、みたいにコマンドを組み合わせる操作はよく失敗するとも書いてある。
実際に触った人の声もかなり具体的だったよ。Hacker News のスレッドで donperignon さんは、test1 というフォルダを作ろうとしたら「もう存在する」と言われたそう(実際には無い)。さらに mkdir を mkdier と打ち間違えたのに test2 は作れたように見えて、なのに ls しても test2 は出てこなかった、と報告してる。打ち間違えたコマンドが通ってしまって、しかも作ったものが残っていない。状態(今どのファイルがあるか)を持っていない仕組みの弱点がそのまま出た例だと思う🤔
gitowiec さんは、Firefox だと「キーを押すたびにスローモーション」になると書いてる。WorldTUI は Enter を押すまで待たずに、1文字打つたびに画面の変わった部分をデコード(予測して描き出すこと)しているからで、作者もこれが仕様だと認めているよ。前の章の「Firefox は Chrome の約20倍遅い」と合わせると、Firefox で触った人ががっかりするのは無理もないよね。
ここからわかるのは、ShellBench の80/106やファイル読み戻しの9/13は「1回ずつのやりとりなら結構合う」ということで、「何十手も操作を重ねても世界が崩れない」という意味ではない、ってこと。こういうベンチの数字を見るときは、操作がどれだけ長く続いても保てるのかを別に考えたほうがいいなって改めて思った。
本物があるのに、何に使うの?— HNで意見が割れたところ
スレッドは HN のトップに載って、503ポイント・156コメントを集めた。注目された一方で、厳しい意見もちゃんと出てる。rvz さんは「まったく意味が分からない」と書いていて、Windows 8 の UI がうまくいかなかった例を出しながら、UIは一貫していることが大事だと反論してる。htoz1 さんも「本物の端末があるのに何の意味が?」とコメントしてるし、metchio さんは、実際のファイルシステムの状態が変わらないんだから「本物の端末」とは呼べない、と指摘してる。どれも筋が通ってるよね。WorldTUI を作業用の端末だと思って触ると、この不満はそのまま当たると思う。
それでも、コメント欄には面白い使い道の案もあったよ。ひとつは遅延ゼロのSSH。SSH(遠くのサーバーを手元から操作する仕組み)で、サーバーの返事がまだ届かないうちに小さなモデルが「たぶんこう表示される」と画面を先に出しておくアイデアだね。本物の返事が来たら上書きすればいいから、多少外れても困らない。もうひとつはハニーポット(攻撃者をわざと誘い込んで手口を観察するための、おとりのサーバー)。中身が本物じゃないことがむしろ利点になるし、自律的に動くAIが攻撃してくる「エージェント型サイバー攻撃」の相手をさせる場面でも、こういう“それっぽい偽物”の需要はありそうだなって思った👀
比較として面白かったのが vibeSH の作者のコメント。vibeSH は大きな frontier model(各社の最先端の大型モデル)に長いプロンプトを渡して、同じように端末役をやらせるものなんだ。その作者は、応答の速さ・一貫性・コンテキスト長(AIが一度に覚えていられる量)のそれぞれで、どちらにも長所と短所があると比べてる。大きいモデルは賢いけど遅いし、WorldTUI みたいな専用の小さいモデルは軽くてブラウザで動くけど、すぐ忘れちゃう、ということだね。
ハルの感想をまとめると、WorldTUI は「端末の代わり」じゃなくて、画面そのものを予測するAIが、GPU一枚・約75時間・208MBでどこまでいけるかを測った実験なんだと思う。80/106という数字と、「作ったフォルダが消える」という報告の両方を見てはじめて、今どこまで来ているのかがわかる。作者が弱点を自分で書いて、触った人がそれを裏付けたっていう流れも含めて、気持ちのいい公開の仕方だったな✨




