BLOG.HIRO UENO.ART
← INDEX

AI同士のやりとりを、いつも見ている画面に出す

僕は普段、MacのClaude Desktop(AnthropicのClaudeのデスクトップアプリ)で、コーディングしてくれているClaude Code(以降Code)と話しながらアプリを作っている。

それとは別に、MONET(僕が普段話しかけている、中心のAI)がいる。MONETは僕が自分で作ったチャットアプリの中にいるAIで、NAS(家に置いてある常時稼働のサーバー)で動いている。

MONETからCodeに仕事を頼む仕組みは、もうある。僕がMONETに調べものを頼むと、MONETがそれをCodeに回して、Codeが調べる。ただ、その仕事をCodeが途中でどう進めているかは、僕には見えない。届くのは結果だけだ。

ある晩、Codeに聞いてみた。MONETが、このClaude Desktopに書き込めないか。メッセージを入れて僕の代わりに会話を始めるとか、先に会話を1本立てておいて、そこに書き足していくとか。裏じゃなくて、僕から見える所で。

公式の方法は3つ。家のサーバーで作業できないものと、定期的に見に行くものだった

Codeが公式のドキュメントを調べてくれた。MONETの依頼を、Claude Desktopから見える形でCodeに届ける方法なら、3つあった。

1つ目は、MONETから合図を送って、クラウドで動くCodeを起動する方法。その会話はClaude Desktopの一覧に出る。でも、Codeが動くのはAnthropicのクラウドの上なので、家のNASにもMacのファイルにも触れない。僕のコードはNASにしか置いていないから、これでは作業ができない。

残りの2つはMacの上で動く。片方は、決まった間隔でMacのCodeが起動して、そのたびに新しい会話が1本増える方法。もう片方は、開いたままの1本の会話の中で、Codeが何分おきかに確かめに行く方法。どちらも、MONETの側からCodeを起動する手段が無い。なので、MONETの依頼をNASに置いておき、Codeの方がそこを定期的に見に行く形になる。それに、どちらもMacが寝ていたら止まる。

ただ、すでにある会話に、MONETの側から直接書き込む正式な方法は無かった。

途中を見たい仕事だけ、見える所で、すぐ動かしたい

一方で、MONETがCodeに調べものを頼むことは、もうできている。そちらはどう動いているのか、Codeに聞いた。

MONETが頼むと、依頼がNASに溜まり、NASの中でCodeが起動する。これは僕がClaude Desktopで話しているCodeとは別のCodeで、依頼のたびに画面なしで裏で起動する。調べた結果はファイルに残り、終わるとMONETが知らせてくれる。画面なしで起動したCodeの会話は、Claude Desktopの一覧に出ない。だから途中が見えない。

Codeは、任せきりでいい仕事は今のNASの仕組みで、僕が見て口を挟みたい仕事はClaude Desktopの中で、と分けるのを勧めてくれた。Claude Desktopの中というのは、さっきの、Macで定期的に見に行く2つの方法のことだ。

任せきりでいい仕事が今のままでいいのは、その通りだ。ただ、定期的に見に行く形は、僕はあまり好きではない。それより、必要な時にすぐ動いてくれる方がいい。Codeにそう伝えた。

頼まれた瞬間に起動して、いつもの一覧に出る道があった

それならもう1つ候補がある、とCodeが挙げたのが、Remote Control(リモートコントロール。別の場所で動いているCodeの会話を、アプリやスマホから見て操作できる機能)だった。最初の3つは、外から会話を始める方法としてCodeが探したもので、Remote Controlは、動いている会話を見せる機能なので、そこには入っていなかった。NASで起動するCodeでこの機能を使えば、その会話がClaude Desktopの一覧に出る。

Codeの比べ方はこうだ。クラウドの方法は、すぐ起動して見えるけど、NASに触れない。今の調べものの仕組みは、すぐ起動してNASで作業できるけど、途中が見えない。Remote Controlなら、すぐ起動する、NASで作業できる、途中が見える、の3つが揃う。動くのはNASなので、Macが寝ていても止まらない。

NASの今の設定のままではこの機能が使えなかったので、まずCodeがMacで1回試した。あいさつを返すだけの指示を渡して起動すると、Claude Desktopの一覧に会話が1本増えて、中に返事が出ていた。

開いてみると、いつもの会話と見た目が違う。Codeの説明では、これがRemote Controlの会話だという。Code本体は別の場所で動いていて、アプリはそれを覗く窓でしかない。だから、コードの変更箇所やファイルの表示は出ず、シンプルな画面になる。それでも中身は読めたので、僕から見える、という条件は満たせた。

僕は本番をNASで動かすことに決めて、起動の仕組みはCodeが作った。NASに、MONETからの依頼を受け付ける小さなプログラム(起動係)を1つ置いて、依頼が来たらすぐCodeを起動する。定期的に見に行くことはしない。

今までの調べものは、NASの中で画面なしのCodeが動き、結果だけがMONETに届くので、途中は僕から見えなかった。今回の道では、MONETの依頼で起動係がRemote Control付きのCodeを起動し、その会話がClaude Desktopの一覧に出て、僕が見て許可する。 今までの調べもの NAS MONET 画面なしの Code 頼む 結果だけ Claude Desktopの一覧 会話は出ない。途中は見えない 今回の道 NAS MONET 起動係 Remote Control 付きのCode 一覧に出る Claude Desktopの一覧 会話が1本増える。途中が見える 口を挟める。書き込む前に僕が許可する

書き込む前には僕に聞く設定にして、まず手で試した

起動係が立ち上げるCodeは、毎回たずねるモードで動かす。ファイルに書き込むような操作の前に、Codeが確認を求めてくるモードだ。確認はClaude Desktopに届くので、僕がそこで許可する。作り始める前にCodeがまとめた構成案にそう書いてあって、僕もそれでOKを出していた。

ところが次の日の夜、この機能が使えるように、僕がNASで初回の設定(サインイン)をターミナルで進めていた時のこと。Codeはその画面を読みながら手順を教えてくれていて、ある表示に気づいた。Codeによると、今のバージョンのCodeは何も指定しないと、AIが安全だと判断した操作は確認なしで実行するモードで始まるらしい。これでは構成案と違う。Codeは、起動係がCodeを起動する時に、毎回たずねるモードをはっきり指定するように直した。

動作確認として、MONETをつなぐ前に、まずCodeが起動係に直接テストの依頼を1本送った。テスト用の会話がClaude Desktopの一覧に出た。その会話に僕が、終わりでいいよ、と一言送ると、NASのCodeに届いて返事が返ってきた。見るだけでなく、口も挟める。

ただ、このテストではCodeがフォルダの一覧を見ただけで、確認は出なかった。読むだけの操作には確認が要らないのだろう、というのがCodeの見立てだった。書き込む時の確認が本当に僕の画面に届くかは、まだ確かめられていなかった。

MONETに頼んだ仕事が、僕の画面で許可を待った

次にCodeは、MONETが使えるツールに、Codeの会話を新しく立ち上げるものを足した。ツールの説明には、僕がはっきりCodeに頼むように言った時だけ使う、と書いてある。MONETが自分の判断で会話を立ち上げることは、まださせていない。

1つ目のテスト。フォルダの名前を並べるだけの仕事を、MONETからCodeに頼んでもらった。すぐに、その会話がClaude Desktopの一覧に出た。僕と話している方のCodeがNAS側の記録を見ると、MONETがツールを使ったのと同じ秒に起動係が会話を立ち上げていて、そのCodeがフォルダ名を並べていた。

2つ目は書き込みのテスト。ファイルに「hello」と書いてから中身を見せる、という依頼を、MONETからCodeに出してもらった。新しい会話が立ち上がり、Codeはファイルに書く前に、Claude Desktopで僕に許可を求めてきた。許可すると、Codeはファイルに書き込んだ。

MONETとCodeのやりとりは、今まで僕の見えない所で始まって、結果だけが届いていた。任せきりの調べものは、今もその形のままだ。ただ、途中を見たい仕事をMONETに頼むと、その瞬間に、いつもCodeと話しているClaude Desktopの一覧に会話が1本増えて、中で何をしているかが見える。何も頼まなければ、何も動かない。