MulmoTerminal のスマホ・リモコン — 出先から一言返して AI の作業を続行させる仕組み

MulmoTerminal のスマホ・リモコン — 出先から一言返して AI の作業を続行させる仕組み

課題:許可待ちで止まった AI は、席に答える人がいないと動かない

夕方、電車に乗る直前にスマホが震えます。

テストを走らせる前に、依存関係を入れ直していいですか。

yes と返せば続きが走ります。答えなければ、家に着くまで止まったまま。

この差は 20 分ではありません。家に着いて答えて、そこから作業が始まるので、実際には 1 時間以上違います。長めのタスクを 3 つ並列で走らせていれば、1 時間 × 3 のロスになります。

AI は危ない操作の前に必ず人に聞いて止まる作りになっています。これ自体は正しい。問題は、「気づく」と「答える」のあいだに通信経路が無いことです。通知アプリがポップアップを出しても、押しても、yes が AI に届かない。知るためだけの通知は、待たされていることを知るだけの機能で、むしろ気分が悪くなります。

既存のやり方とそのコスト

SSH で手元のマシンに戻る

VPN か SSH トンネルを張って、スマホのターミナルアプリから tmux attach する。可能ではあります。

ただし、

電車の中で片手でやる作業ではない。結果として、ほとんどの人は諦めて家まで待ちます。

通知音だけ入れて、答えは諦める

スマホ通知を入れて「来たことは知る、でも返事はしない」で割り切る。

これは精神衛生に悪い選択です。知ってしまうと気になるので、結局 30 分おきにスマホを見ることになります。見ても何もできないので、カフェに入り直して SSH を張る、を繰り返す。

通知の値は、返せることとセットです。片方だけでは半分未満になります。

MulmoTerminal の解決:PWA から画面を見て、一言返す

MulmoTerminal のスマホ側は mulmoserver.web.app という PWA です。ホーム画面に追加するとアプリのように動きます。

通知と同じ Google アカウントでサインインするだけで、パソコン側の格子に並んでいる会話が一覧で出ます。会話を選ぶとその瞬間に動いているターミナル画面が表示され、下に返信の手段が並びます。

接続は、スマホ通知を入れたのと同じ RemoteHost 経路です。通知が届いているなら準備は済んでいます。

詳細

画面上部に出るもの

会話を選ぶと、パソコンの格子のセルが見せているのと同じ情報が並びます。

ディレクトリが GitHub のリポジトリなら、リンクになります。リンク先は現在のブランチではなく リポジトリのトップです。未 push のブランチや、PR マージ時に消えたブランチだと 404 になるためです。

返す手段が 3 通り

手段 使う場面
クイック返信ボタン(yes / no / ok / continue / stop) AI が待っていることが多い答え
AI 自身の提案(ゴーストテキスト) Claude が薄い文字で続きを提案しているときにチップとして出る。スマホに Tab キーが無いので、これが受け入れ手段
一行入力欄 キーボードで打ったのと同じ

選択肢の質問は「カード」で来る

Claude が「A と B のどちらにしますか」で止まったときは、画面の下にカードが出ます。質問と選択肢それぞれがボタンです。

押すと、実際のダイアログの矢印キーと Enter を代わりに押します。上に出ているターミナル画面はそのまま残り、答えが届くと更新されます。パソコン側で先に答えてもスマホで先に答えても、先に通ったほうが勝ちます。

パソコン側の同じ機能は opt-in(頼むまで off)です。目の前のターミナルにペインが打鍵する機能だからです。スマホは逆で、矢印キーが無い以上このカードが無ければ答えられない。同じ機能が、打鍵の先に人が座っているかで判断を変えています。

自分の定型文(quickCommands)はチップに登録できる

クイック返信は短い言葉だけです。何度も送る文 ——「PR 作って」「マージして」「テスト通して」—— は自分のチップとして登録できます。Settings → Phone quick commands、または ~/.mulmoterminal/config.json の quickCommands を直接編集。

初期状態は空です。登録するまでスマホには何も出ません。

安全側の作りが 1 つあります。チップを押すと入力欄に入るだけで、送信はされません。送信は送信ボタン。満員電車のポケットの中で誤タップしても、送られません。

会話の種類で出し分けもできます(claude / codex / shell)。「マージして」は 3 つ全部で、git status は shell だけ、といった使い分け。

新しいターミナルは起動できる。ただしフォルダは選べない

見ている会話から、同じディレクトリで新しいターミナルを起動できます(shell / claude / codex)。画面を見てその場で対応したいとき、パソコンまで戻らずに済みます。

選べるのはプログラムだけです。ディレクトリは選べません。常に見ていた会話のディレクトリで、スマホからパスを送ることはできません。

これは意図的な制約です。スマホを紛失した、あるいはアカウントを奪われた、という状況で、任意の場所でプロセスを起動されないため。できることを狭くしてある。

前提が 1 つあります。パソコン側で MulmoTerminal のタブが開いている必要があります。格子の状態はブラウザ側にあるので、実際にセルを開くのはそのタブです。タブが 1 つも繋がっていないときは、黙って失敗せずスマホにその旨が出ます。

読めるが打てない会話がある

一覧に出るのは、いま格子にあるものです。アプリの再起動をまたいで生き残った会話も表示はできますが、打ち込めません。キー入力を中継していたプロセスがもう無いためです。

再起動前に何をしていたかを読めることには意味があります。打つのを許すと、復活できたと誤解させてしまう。

接続状態がツールバーに出る

Online / Reconnecting… / Offline(最後のエラー付き)の 3 つ。スリープや回線切替で切れても自力で戻りますが、諦めた場合はベル通知が出るので、「スマホから繋がらなくて初めて気づく」にはなりません。

使ってみる

既存の MulmoTerminal インストールがあれば、スマホ側は追加設定なしに動きます。初めての方は MulmoTerminal 完全ガイド の「使い方 3 ステップ」から。

動作確認の最小シナリオ

  1. パソコンでツールバーの RemoteHost を開いて Connect → Google アカウントでサインイン
  2. スマホで mulmoserver.web.app を開き、同じアカウントでサインイン(iPhone は先に「ホーム画面に追加」)
  3. パソコン側で AI に許可が必要なこと(たとえば yarn install の実行)を頼む
  4. スマホ側で会話を開き、下の yes ボタンを押す
  5. パソコン側のセルで続きが走れば成功

Settings の Phone quick commands に 1 つ登録しておくと、よく送る文がワンタップで入力欄に入ります。送信は送信ボタンなので、押しただけでは送られません。

やめるときは、RemoteHost のパネルで切断すればスマホからは見えなくなります。パソコン側の格子には何も起きません。

まとめ

関連: MulmoTerminal 公式ガイドの「スマホから使う」ページ / MulmoTerminal のスマホ通知を 2 種類で選び分ける / Cursor の代替としての MulmoTerminal / tmux で Claude Code を並列に走らせる限界

この記事をシェア

関連記事

記事一覧に戻る