中央集権で1つにするのは、人格と記憶だけ
僕のシステムの真ん中には、MONET(僕が普段話しかけている、中心のAI)がいる。少し前に、どの窓口から話しかけても同じ1つのMONETが答える形に決めた。これを中央集権型と呼んでいる。
その後、CMS(MONETの会話の記憶を整理する仕組み)を作っていて、会話を一番重くするのは喋った量ではなく、ツールの実行結果だと分かった。それなら中央集権も考え直した方がいいのでは、と、コーディングしてくれているClaude Code(以降Code)に聞いた。
中心のAIを1つにしても、全部の作業をその会話に通すと重くなる
Code「『1つの人格・1つの記憶』としての中央集権は作るべき。でも『全部の作業を1本の会話に流し込む』中央集権には反対。CMSで分かったことがそのまま反対する根拠になる」
要はどこから話しかけても同じMONETが答えることと、全部の作業がMONETとの1本の会話に入ることは、別の話。反対する根拠は2つあった。
1つ目は、さっきのツールの結果。MONETが会話の中で画像生成を操作すれば、画像生成の設定や結果のような大きなデータが会話にドバッと流れ込む。MONETは自分の会話を自分で重くしてしまうことになる。
2つ目はハルシネーション(AIがやっていないことを「やった」と言う問題)。ツールの実行と、普通の会話を同じ会話コンテクストに入れると、AIは毎回、道具を使うか、文章で返すかを自分で選べる。だから、実際には動かしていないのに「やった」と文章で語ってしまう逃げ道が開く。これはComfyApp(ComfyUIという画像生成ツールの操作を効率化する自作アプリ)で実際に困っていたことだった。
この時点のCodeの案は、重い実行は裏で別のAIや道具に任せつつ、僕からはMONETの画面ひとつで全部済むように見せる、というものだった。
何百枚も出す画像づくりの間に、中心のAIを挟む意味はない
その案をComfyAppに当てはめると、引っかかった。
僕がMONETに頼む。MONETがComfyAppに指示を送る。ComfyAppがプロンプト(AIへの指示文)を作って、ComfyUIに送る。依頼が2つのAIを順に通ることになる。
ComfyAppでの作業は、画像を出しては直す、の繰り返しで、多い時は何百枚も出す。Codeが想像しているより、たぶんずっと回転が速い。それに、本筋は僕のクリエイティブな作業で、それが起きているのはComfyAppのようなアプリの中だ。MONETやCMSは、それを支えるために作っている。Codeにこれを伝え、一度決めた中央集権からまた考えがぶれて悪いね、とも添えた。
Codeは「ブレじゃないです」と返した。何百回もまわる、という事実は、設計の前提が変わる話だ、と言って、さっきの案を取り下げた。回転の速い作業の間に仲介役を挟むと、待ち時間も、トークン(AIが文章を数える単位)も、ハルシネーションの危険も、全部が二重になるだけ。
画像づくりの現場はComfyAppに置き、MONETはそれを支える管理の側に回る。そういう分け方になった。
AIの側に相手の区別はなく、誰と話しているかは送る中身で決まる
僕は、ComfyAppのやり取りはComfyAppの中で別に持っている、と理解していた。でも、MONETもComfyAppも同じAnthropicのAPIにつながっている。同じ相手に話しているなら、片方のやり取りがもう片方に混ざらないのか、とCodeに聞いた。
AnthropicのAPIは、会話を何も覚えていない。「MONET」も「ComfyApp」も、API側には存在しない。あるのは毎回、アプリが組み立てて送る中身(コンテキスト)の束だけ。人格も記憶も、送る側のアプリが組み立てたものになる。だから僕の理解はそのまま合っていた。実際、ComfyAppは自前の記憶の仕組みをもう持っていた。
今僕がCodeと話しているClaude Desktopのアプリが、普通のClaudeとClaude Codeを分けているみたいに、僕のアプリでも別タブとか使って使い分けができるかもしれないね、と軽く言った。
Codeは、そのたとえが、そのまま答えになっている、と返した。ClaudeとClaude Codeは、中では別の会話、別のコンテキストで動いている。それでも僕は、両方を「Claude」として扱っている。同じ相手が、別の作業場にいる感覚。
中央集権とは「1つの人格・1つの記憶」であって、「1本の会話」ではない。
窓口を1つにする夢には、決まった手順だけを受け付ける入口から近づける
現状の最善案がそれだけど、僕の究極のロマンは、窓口1つで全部できるドラえもん化なんだよね。ただ、それはまずComfyAppを仕上げてからの話。
1つ聞いてみた。n8n(処理の流れを組み立てる自動化ツール)のように、ワークフローの中にAIを入れれば、AIの動きは毎回決まった通りになる、と僕は理解している。それならMONETがアプリに直接指示を出しても、そんなに痛くないんじゃないか。
Codeの答えは、ComfyApp側に決まった手順の入口があれば、「あの背景を3枚出しておいて」くらいの頼みはMONETから直接でいい、だった。
理由は、Anthropicの「Building effective agents」にあるエージェント型とワークフロー型の区別で説明してくれた。僕の理解は半分だけ合っていた。毎回決まった通りになるのは、AIが書く中身ではなく、手順の順番の方。エージェント型は、AIが次に何をするかを毎回自分で選ぶ。その自由が、さっきの「やった」と語ってしまう逃げ道になる。ワークフロー型は、順番はプログラムが決めていて、AIは各手順で呼ばれるだけ。逃げ道がそもそも無い。
ComfyAppに手順を固定した入口を作れば、MONETがそこを呼ぶのは、普通のツールを1回使うのと同じになる。何百枚も出しては直す作業はComfyAppで直接やり、「背景を3枚」くらいはMONETが入口を呼ぶ。この積み重ねで、窓口1つに近づけるかもしれない。
画像アプリはまず単独で動かし、MONETとつなぐかは実務の数字を見て決める
原則は決まった。ただ、当面、ComfyAppの作業にMONETは入れない。
ComfyAppは、まず完全に単独のアプリとして、単独のAIで動くようにする。実際の仕事に使えることを、それで証明する。MONETと共有するのは、作業1回ごとの結果のまとめくらいに留める。実務で回しながら、どこでどれだけコンテキストを使っているか、どこで余計なものが混ざるかのデータを取る。MONETとつなげるかは、それを見てから判断する。
MONETは当面、管理の方に集中する。ドラえもんは、ComfyAppが仕事で使えると証明できてからだ。