課題:許可待ちで止まった AI は、席に答える人がいないと動かない
夕方、電車に乗る直前にスマホが震えます。
テストを走らせる前に、依存関係を入れ直していいですか。
yes と返せば続きが走ります。答えなければ、家に着くまで止まったまま。
この差は 20 分ではありません。家に着いて答えて、そこから作業が始まるので、実際には 1 時間以上違います。長めのタスクを 3 つ並列で走らせていれば、1 時間 × 3 のロスになります。
AI は危ない操作の前に必ず人に聞いて止まる作りになっています。これ自体は正しい。問題は、「気づく」と「答える」のあいだに通信経路が無いことです。通知アプリがポップアップを出しても、押しても、yes が AI に届かない。知るためだけの通知は、待たされていることを知るだけの機能で、むしろ気分が悪くなります。
既存のやり方とそのコスト
SSH で手元のマシンに戻る
VPN か SSH トンネルを張って、スマホのターミナルアプリから tmux attach する。可能ではあります。
ただし、
- スマホのキーボードで矢印キー・Esc・Enter を送るのは実用に耐えない
- 回線が切り替わるたびに接続が落ちて、張り直す
- 鍵をスマホに置くか、置かない代わりに毎回パスワード
電車の中で片手でやる作業ではない。結果として、ほとんどの人は諦めて家まで待ちます。
通知音だけ入れて、答えは諦める
スマホ通知を入れて「来たことは知る、でも返事はしない」で割り切る。
これは精神衛生に悪い選択です。知ってしまうと気になるので、結局 30 分おきにスマホを見ることになります。見ても何もできないので、カフェに入り直して SSH を張る、を繰り返す。
通知の値は、返せることとセットです。片方だけでは半分未満になります。
MulmoTerminal の解決:PWA から画面を見て、一言返す
MulmoTerminal のスマホ側は mulmoserver.web.app という PWA です。ホーム画面に追加するとアプリのように動きます。
通知と同じ Google アカウントでサインインするだけで、パソコン側の格子に並んでいる会話が一覧で出ます。会話を選ぶとその瞬間に動いているターミナル画面が表示され、下に返信の手段が並びます。
接続は、スマホ通知を入れたのと同じ RemoteHost 経路です。通知が届いているなら準備は済んでいます。
詳細
画面上部に出るもの
会話を選ぶと、パソコンの格子のセルが見せているのと同じ情報が並びます。
- 作業ディレクトリ
- git ブランチ
- その会話の AI による要約
- 直近のターンを始めたプロンプト
ディレクトリが GitHub のリポジトリなら、リンクになります。リンク先は現在のブランチではなく リポジトリのトップです。未 push のブランチや、PR マージ時に消えたブランチだと 404 になるためです。
返す手段が 3 通り
| 手段 | 使う場面 |
|---|---|
クイック返信ボタン(yes / no / ok / continue / stop) |
AI が待っていることが多い答え |
| AI 自身の提案(ゴーストテキスト) | Claude が薄い文字で続きを提案しているときにチップとして出る。スマホに Tab キーが無いので、これが受け入れ手段 |
| 一行入力欄 | キーボードで打ったのと同じ |
選択肢の質問は「カード」で来る
Claude が「A と B のどちらにしますか」で止まったときは、画面の下にカードが出ます。質問と選択肢それぞれがボタンです。
押すと、実際のダイアログの矢印キーと Enter を代わりに押します。上に出ているターミナル画面はそのまま残り、答えが届くと更新されます。パソコン側で先に答えてもスマホで先に答えても、先に通ったほうが勝ちます。
- 複数問まとめて訊かれたときは、問ごとにまとまって出る。全問に答えが入るとボタンが押せる
- 1 問だけのときは、ボタンの下に入力欄が出て自分の言葉でも答えられる
- Claude 以外(Codex・shell)や、権限の確認プロンプト(番号メニュー)は、普通のクイック返信や入力欄で答える
パソコン側の同じ機能は 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 ステップ」から。
動作確認の最小シナリオ
- パソコンでツールバーの RemoteHost を開いて Connect → Google アカウントでサインイン
- スマホで mulmoserver.web.app を開き、同じアカウントでサインイン(iPhone は先に「ホーム画面に追加」)
- パソコン側で AI に許可が必要なこと(たとえば
yarn installの実行)を頼む - スマホ側で会話を開き、下の
yesボタンを押す - パソコン側のセルで続きが走れば成功
Settings の Phone quick commands に 1 つ登録しておくと、よく送る文がワンタップで入力欄に入ります。送信は送信ボタンなので、押しただけでは送られません。
やめるときは、RemoteHost のパネルで切断すればスマホからは見えなくなります。パソコン側の格子には何も起きません。
まとめ
- AI は危ない操作で必ず止まる。止まったものは、答える人が席にいないと動かない
- 通知だけ入れても、返す経路が無ければ待たされていることを知るだけの機能になる
- MulmoTerminal の PWA は、クイック返信・AI の提案チップ・一行入力の 3 通りで返せる
- 選択肢の質問はカードで来る。パソコンでは opt-in、スマホは逆
- 新しいターミナルは起動できるがフォルダは選べない。紛失時の被害を狭くする意図
関連: MulmoTerminal 公式ガイドの「スマホから使う」ページ / MulmoTerminal のスマホ通知を 2 種類で選び分ける / Cursor の代替としての MulmoTerminal / tmux で Claude Code を並列に走らせる限界


