AIに開発を手伝ってもらっていると直感に反してこちらも疲弊していく。観察すると、AIの途中思考を読み、最終出力を読み、成果物を読み、それが動作することを確認している。確率的に避けられない幻覚がいつどこに混ざり込むか見逃すまいとして。
冷静に考えると無理がある。そのサイクルの高速化は結局人間側の限界に制約される。AI活用より精神薬ブーストで生き急いでいる方に近い。
どうすれば力仕事のようにうまく知能仕事を任せられるだろうか。今日も答えのない問いに直面している。最近OpenAIの最新モデルSolが登場したのをきっかけに自分なりに考えたりやってみたこと。
結論を言えば、ある種の覚悟を決めたということになると思う。少なくとも負担は減ったし「司令塔」との作戦会議から実装報告が消えて、自分の意図が進捗に反映される流れの見通しが非常に良くなった。
理想は「ドラえもんの四次元ポケット」
「~ができないかな」と伝えると、すぐに「それならこれ」とピッタリな道具をだしてくれる。自分の状況を熟知しているロボットが側でリッスンしてくれてるイメージ。
〇〇エンジニアリングはなるべく覚えたくない、使いこなしたくない。それも結局は疲弊させるハードル。あと道具の設計図まで見せないで。プロの専門家ではなく、のび太君のままで何ら問題ないと言ってほしい。
そういう考えから試作したワークスペース。ひとまず個人的には良い感触だけど、中長期的な効果は不明。この時点で紹介は明らかに尚早。ただアイデア部分が何か手掛かりになるタイミングが矢の如く飛んで行ってしまう時代なので。
ChatGPTデスクトップアプリを使用する
執筆時点で先端モデル提供元が開発しているから実質機能が足りないということは無い(すぐ解消される)はず。
Herdrとか個別技術も出てるけど、自助的なキャッチアップより純正のこれ一個使っとけば何とかしてくれそうな分かりやすさを取った。
マシンローカルにアクセス可能、リモート連携でスマホから指示も出せて十分高機能。
1つのプロジェクトがこんなスレッド構成になった。
- 対話 * 1
- 司令塔 * 1
- 実働チーム * 動的
自分は「対話」および「司令塔」と会話だけするイメージ。素寒貧の会話から必要なもの全て揃えて立ち上げてもらう。
「実働チーム」は「司令塔」が生成して監督する。(エンジンが動くところを覗きたければ覗く)
対話
いわばドラえもんとの生活部分。
対話でモデル(例えば Sol xhigh)の性格や自分の性格について話し合う。コンビニ前で賢い友達と駄弁るみたいに、自分の言葉でじっくり話し込む。お互いが納得できる関わり方を会話履歴として残す。プロジェクト横断的に再利用できる共有コンテキストになることを期待。いつでも困ったことや気がついた話題を投げる。
こんなことを話した。
- 時間をおいても使える分かりやすさがいい
- 常に判断に助言を添えてほしい
- 複雑なチェックを大量にこなすのは無理
- 負担比は9:1でも厳しいと思う
- 自分が関わらなくても問題を潰せたらすごい
- Solは利用者の能力を反映する鬼に金棒タイプらしい
- Fable5のように慎重に前提を詰めて迷走を避けてほしい
- ここで実際的な作業の話はしないで
- 次世代モデル出たら御破算の流れどうにかしたい
司令塔
道具をお願いする部分。
具体的なプロジェクトについての作戦を話し合う。方向性、使用する技術、達成したい事などなんでも。AGENTS.mdとかもろもろのドキュメントも会話内容から起こしてもらう。ある程度固まってきたら実装用の仕事を考えてもらい、キャンペーン(一連のタスク群)として、実作業を開始してもらう。
プロジェクト以外にもこんなことを話した。
- 実装やエラー対処など込み入った作業はもう追いかけたくない
- 実装チームは~みたいなの作れる?
- この体制の有効度を計測できるようにしてほしい
- 定期的にメタふり返りしてユーザー介入を少なくしたい
- すぐ停止して指示待ちしがちは勘弁してほしい
目標は回数制限があるから使わなくて済むように
- 報告時の用語は認知翻訳コストがないようにして
- 思いついた修正アイデアは後からでも反映できるように
- スレッド積み上がるの何とかして
実働チーム
四次元ポケット。ドラえもんが手を突っ込むブラックボックス。
以前の send_input が send_message_to_thread へアップグレードされ、親スレッドの創設まで可能になった*1。つまり実働チームは司令塔が即席でよしなにつくってくれるようになった。
自分なりにチームの構成案を伝えたら、それも機能するでしょう、ということで以下の形に。
- 司令塔がキャンペーンを考えてディスパッチャ(Sol xhigh)に投げる(ターン終了)
- ディスパッチャが実装タスクを切りだしワーカー(Terra high)に投げる(ターン終了)
- ワーカーがサブのレビュアーと相談して実装し、ディスパッチャに結果報告
- ディスパッチャ起動してコミットし、次のタスクを割り当てる
- 全タスクが終わったらディスパッチャは司令塔へ報告
- 司令塔起動し、作業要点を平易にまとめて自分へ報告
スレッド間通信が send_message_to_thread で行われターン終了をはさんでもループ継続する。自分の介入なしにキャンペーン消化まで完遂。タスク並列化し git worktree などの衝突回避テクニックは司令塔以下にまかせる。
1プロジェクトは1ディスパッチャが継続担当し、1タスクごとに専用の1ワーカーを創設、その仕事が終われば引退で再利用なし。親スレッドが積み上がらないようタスク終了ごとに即アーカイブ化してもらい、追跡調査できるようにしておく。
計測について
「面倒、進まない、疲れる」に対処する。
作業の量・時間・頻度や人間の介入回数を測って数値化する。もし介入割合が多ければ見直して改善しましょうという流れを作る。新しいモデルが登場しても計測が台無しにならないような指標を相談。
印象や効果など
好き勝手伝えるだけで上手くいく(地点まで辿り着いてみせる)と決める。詳細や整合性は当時点の最高モデルに最後まで任せきること、作業過程ではなく成果物から問題を見つけること、問題は何らかの形でシステムが検知できることが必要になる。実装、動作チェック、修正のサイクルを回し、より問題が起きにくいシステムをAIと一緒に模索する。正しさを補強するやり方は色々あると思う。Rustの型システムとかテストとかベンチマークとかコードスメル調査とか。
司令塔との会話だけでプロジェクトが進捗し、おかげでどこにいてもスマホから進められるようになった。ひとまず負担は減らせた。