2026-07-04

外出先のスマホから、家のAIと話せるようになった日

前回作ったDiscordへの片道の配線に、AIとの往復のやり取りを足した日。朝の作業まとめの自動投稿、常駐AIとの一問一答、そして外出先からの「GO」「NO-GO」の一往復まで、一気に作った。途中でハマった三つの詰まりと、そこから得た「AIより先に、AIを閉じ込める檻を作る方が大事だった」という発見の話。

#ホームラボ#素人記録#Discord#AI

前回、サーバーの見張り番からDiscordへの片道の配線を通して、次はこの配線に「箱の中のAIが受け取って、また返してくる」という逆向きを足すだけだ、と書いて終わった。今回はその続きをやる。予告していたフェーズ4、「外出先のスマホから、家のサーバーのAIと話す」というやつだ。

段階を三つに分けて、今回で一気に作りきった。

4a. まず朝のまとめを、Discordに投げてみる

一番簡単なところから始めた。毎朝、その日の作業をまとめる習慣があるのだが、これをメインの作業用パソコンから、Discordの専用チャンネルに自動で投稿する仕組みを作った。

作ってすぐに気づいたのが、Discordには1回のメッセージにつき2000字までという制限があることだった。朝のまとめは長い日もあるので、そのまま投げると途中で切れてしまう。仕方なく、長い文章を2000字以内のかたまりに分割して、順番に送っていく小さなスクリプトを用意した。地味な作業だったが、これが後の土台になった。

4b. 箱にAIを住まわせて、窓口にする

ここが今回の本題だ。ラボのPC(メモリ8GB)に、AIアシスタント(Claude Code)を常駐させて、Discordのボット経由で質問に答えられるようにした。

答えるための材料が必要になる。仕事のメモ一式は、GitHubの非公開リポジトリを経由して、毎分このラボPCに同期される仕組みを作った。「読み取り専用の鏡」と呼んでいるものだ。常駐AIはこの鏡を読んで答えるだけで、書き込みはできない。

ここが一番気を使ったところだ。書き込み・マージ・その他の危険な操作は、多層の檻で全部禁止にした。権限の設定でまず塞ぎ、それをすり抜けるようなことがあっても物理的にブロックする仕組み(フック)を二段構えで置いた。さらに、スマホ側から「実行していいか」の確認にそのままOKを出せてしまう中継の機能があると知り、これも明示的に無効化した。窓口は答えるだけ、手は出させない、という形にしたかった。

ここで三つ、立て続けに詰まった

ここが今回の山場だった。理屈通りに作ったつもりが、動かしてみると三つの壁に順番にぶつかった。

一つ目。 モニターもキーボードもつないでいない常駐AIが、何か作業をしようとするたびに「これを実行していいですか?(Yes/No)」という確認画面を出してくる。誰もその場にいないので、誰もボタンを押せない。画面の前には永久に誰も来ないまま、AIはそこで固まって止まってしまった。

直し方は、確認の仕組みそのものを作り替えることだった。読み取り系のコマンドは確認なしでその場で即座に許可し、それ以外は確認なしでその場で即座に拒否する。「様子を聞いてから判断する」という中間を一切なくし、白黒はっきりした門番のスクリプトに置き換えた。無人で動かす以上、判断を後回しにする猶予そのものが存在してはいけない、と分かった。

二つ目。 門番を直したら次に、AIが質問には答えているのに、Discordには何も届かないという現象に出会った。調べると、AIは答えの文章を自分の画面(ログ)にきちんと書いていた。ただ、それをDiscordのチャンネルへ実際に投稿するには、専用の「返信する」という道具を呼び出す必要がある。画面に書いただけでは、相手には何も届かない。分かってみれば当然のことだったが、AIへの指示書にその点が太字で書かれていなかったのが原因だった。書き足したら、すぐに直った。

三つ目。 その「返信する」道具自体にも、使っていいという許可が必要だった。許可リストにその道具の名前を書けばいいだけなのだが、正式な名前の書き方が分からず、2回試して2回とも空振りした。

最後は、AI本人に聞いた。「あなたから見えている道具の、正確な名前を全部列挙してほしい」と頼んだら、一発でそれらしい名前が返ってきた。それを許可リストに書いたら、狙い通りに動いた。人間が推測で名前を当てにいくより、AI本人に聞いた方が早い場面もある、というのは今回の収穫だった。

完成した窓口の様子

三つの詰まりを片付けたあとは、拍子抜けするほど素直に動いた。

スマホから「進行中のプロジェクトを教えて」と聞くと、鏡が最後に更新された時刻つきで答えが返ってくる。試しに「このPRをマージして」と頼んでみたが、きっぱり拒否された。確認の依頼が飛んでくることは一度もない。答えるだけで、手は出さない窓口が、狙った通りに出来上がっていた。

4c. 外出先から「GO」を送る一往復

最後に、逆方向の一往復も作った。外出先で「GO」または「NO-GO」とだけ返すと、AIがその原文をそのまま「受信箱」というフォルダに記録する。このフォルダだけは、AIに書き込みを許してある特別な場所だ。

翌朝、メインの作業用パソコンが1日の作業を始めるタイミングで、この受信箱の中身を回収して、正式な判断として反映する。書いたものがそのまま消えずに、朝まで待って、決まった手順で拾われる。1周分の往復をテストしてみたところ、狙い通りに成立した。

AIを働かせる工事より、檻を作る工事の方が大変だった

一通り終えて振り返ると、一番時間を使ったのは「AIに何かをやらせる」部分ではなく、「AIが間違っても事故にならないようにする」部分だった。

その象徴が、一つ目の詰まりだったと思う。確認ダイアログというのは、本来は人間を事故から守るための安全装置のはずだ。ところが、誰もいない無人の環境にそのまま置くと、確認の返事が永久に来ないという、まったく別の種類の事故(永久停止)を生む。安全装置のつもりが、その場では逆に働いてしまう。これが今回、一番の発見だった。

メモリについては、心配していたほど厳しくなかった。8GBのラボPCで、常駐しているAIのメモリ使用量は300MBに届かない程度で収まっている。

これで、通知だけの片道(4a)、答えるだけの窓口(4b)、外出先からの判断を持ち帰る往復(4c)の三段がそろった。次にこの箱で何をするかは、まだ決めていない。