以前から機械的なボディに、記号化された発光する顔がついているモチーフが好きだった。最近のゲームで言うと『プラグマタ』のキャビンとか、『Stellar Blade』のdiggerとか。無機質なはずのボディに、ドットで表現された最小限の表情がつくだけで、急に感情移入できてしまう。(ちなみにコレといった固有の名称はないらしい)
ふと思い立って、Claude Codeとターミナルを連携させて、あのモチーフをバイブコーディングで再現してみた。作ったのは ascii-face というプロトタイプ。
動く様子はリポジトリのトップページを参照。
やっていること
Claude Codeの作業状態を idle / thinking / working / done の4フェーズに分けて、それぞれに対応するアニメーションパターンを再生する、というシンプルな仕組み。Ghosttyというターミナルは背景にGLSLシェーダーを設定できるので、そこにドットマトリクス風の顔を描画して、フェーズごとに表情を切り替えている。
ただし何でもできるわけではない
とはいえ、任意のパラメーターを自由に渡せるような仕組みではないため制限もある。GLSL側が見ているのはカーソルの色だけで、色の切り替えはClaude Codeのhooksを利用している。UserPromptSubmitやPreToolUse、Stopといったイベントを拾って、調査中/実装中/完了、といった状態をカーソル色(OSC 12エスケープシーケンス)として送っている。
思ったより、表情の効果は大きかった。指示が伝わらずにやりとりの往復になったとしても困り顔だったら許せそうな気がする。
Claudeに足りないのは表情(断言)

No comments yet