ある開発者が、3.6億パラメータの言語モデルを微調整し、ターミナルとして動作させました。背後にはシェルもファイルシステムもありません。代わりに、キー入力のたびにモデルへ入力され、モデルが画面の変化を予測します。作者によると、ファイルの作成、vimとtmuxの実行、スネークゲームのプレイができ、数コマンド前に入力した内容も通常は覚えているとのことです。大きな改善は、モデルに自身の誤りを修正させることと、画面の行を並列にデコードすることから得られました。デモはブラウザで動作し、サイズは約208 MBです。ユーザーが「pythoon」と入力すれば、本物のシェルではないことを確認できます。
このプロジェクトは、アプリケーションをコーディングではなく学習によって作る未来を示唆したGenie 3に触発されたものです。作者はこの考えを、ゲームの世界からターミナルへと縮小して適用しました。ターミナルはピクセルではなく文字のグリッドであり、実際のシェルを動かすことで学習データを生成できます。モデルはQwen2.5-Coder-0.5Bをベースとし、Docker内で動く実際のプログラムから記録したターミナルセッションで微調整されています。
一般的な言語モデルはトークンを一つずつ追加していきますが、これはターミナルには適していません。一回のキー入力が単独で作用することがあり、出力が必ずしも画面の最下部に現れるとは限らないからです。そこで、このモデルは文字グリッドへの変化を予測します。各セッションは、画面サイズ、内容、カーソル位置のスナップショットから始まります。キー入力は、実際のターミナルが受け取るのと同じ生のバイト列として送られ、モデルは書き換えるべき行と新しいカーソル位置を返します。時間も入力の一つであり、WAITトークンによってキー入力がなくてもスネークが動き続けられます。
画面がスクロールするたびにすべての行を再生成しないよう、作者は前の画面から行を移動させるCOPY操作を追加しました。これにより、キー入力ごとに数千トークンが節約されます。デモは、WebGPUに対応したデスクトップブラウザと物理キーボードでの利用を想定しており、ChromeまたはEdgeが推奨されています。
出典: Hacker News · 要約:HeadlinesBriefing