CodexやClaude Codeはもう古い。Goal Buddyがすべてを解決する
AAI LABS
Computing/SoftwareSmall Business/StartupsInternet Technology
Transcript
00:00:00これはカタツムリのゲイリー。彼はカタツムリ専用の出会い系プラットフォームを作るという市場の空白を見つけました。
00:00:04でも彼は動きが超遅いので、Claude Codeに長時間かかるタスクを自律的に処理してほしいと思っています。
00:00:09幸運なことに、エージェントは長時間タスクの処理が得意になっています。Claude Codeには
00:00:13タスクが完了するまでエージェントを動かし続ける「goal」コマンドがあります。しかし、私たちの
00:00:18テスト中、このgoalコマンドには多くの問題があることが分かりました。ゲイリーは最近
00:00:22離婚したばかりで、彼に幸せになってほしいので、この問題を実際に解決するオープンソースツールを見つけました。
00:00:28しかもClaude CodeだけでなくCodexでも動作します。あなたの母親のように愛を広めましょう。私は
00:00:32彼女が、就職しているあなたの兄弟と同じくらいあなたを愛していると確信しています。Claude Codeは以前、
00:00:38「goal」というコマンドをリリースしました。これは特定の条件が満たされるまでエージェントを稼働させるものです。私たちの
00:00:42チャンネルでは紹介しませんでしたが、すでにご存知でしょう。これ以前には「ラルフ・ウィガム」と呼ばれるプラグインがあり、
00:00:47多くの注目を集めました。本質的には同じことをするもので、フックを使ってプロンプトを
00:00:52条件が満たされるまでClaude Codeにフィードバックしていました。しかし、問題はこれらの条件が
00:00:57完全に一致する必要があることです。なぜならラルフのループはシェルスクリプトを使って文字通り
00:01:02空港の警備員が、あなたの男性用ボディスプレーが持ち込み制限を超えていると言って通してくれないのと
00:01:06同じだからです。goalコマンドの動作は異なります。条件とこれまでの会話を
00:01:11Haikuという小さなモデルに渡し、タスクが完了したかどうかをインテリジェントに評価します。
00:01:17モデルはイエスかノーで判断し、ノーであればClaudeに同じタスクを繰り返すよう指示します。上司が
00:01:22ページ上のボタンが見つからないからといってユーザーエクスペリエンスを改善しろと言ってくるようなものです。これにより
00:01:27評価が主観的になります。定量化できない事柄に対しては、これは真の改善と言えます。
00:01:32goalは多くのタスクでうまく機能しますが、依然として多くの問題があります。第一の問題は、
00:01:37タスクの進行状況を追跡するナレッジベースやファイルシステムを使用していないことです。そして
00:01:42そうしていないため、エージェントにとって唯一の真実のソースはチャット履歴になります。これは
00:01:47父親が2017年に付箋に書いた仮想通貨の運勢が、冷蔵庫から落ちてしまったことを思い出すかもしれません。
00:01:52セッションが何らかの理由で終了し、goalが完了しなかった場合、確かにClaudeのresumeコマンドで再開できます。
00:01:58goalが失われることはありませんが、どこで中断したかを知る唯一の方法は
00:02:03チャット履歴です。そして、このコマンドは単純なタスクではなく長時間かかるタスク用であるため、途中で
00:02:08おかしくなる可能性があります。当然、goalが何時間も実行されれば、コンテキストの肥大化と圧縮(compaction)による影響は
00:02:13避けられません。圧縮後、エージェントの出力は悪化します。
00:02:18私の祖母が認知症でこのチャンネルの名前を忘れかけているような振る舞いをし始めます。
00:02:22彼女のために最後の動画を観てください。もう一つの問題は、タスクを小さなものに分解しないことです。
00:02:27その代わり、メインエージェントだけを使ってタスクの分解を
00:02:32Claude Codeが通常行うように自分で行います。そのため計画に構造がなく、エージェントは何が残っているのか
00:02:37分からなくなる可能性があります。これは一部のケースではうまくいくかもしれませんが、エージェントにとって
00:02:42何をもって「完了」とするかの定義が不明確なのは、決して良いことではありません。goalは完全に
00:02:47モデルの評価に依存しているため、場合によっては効果的ではないかもしれません。スクリプトを使用して
00:02:52完全に厳格なラルフ・ウィガムよりはマシですが、少なくとも何をもって完了とするかを示す指標が必要です。
00:02:56イベントが終わるまで「あと一枚だけ」と言い続けた結婚式のカメラマンのように。
00:03:01つまりこれがgoalの欠点であり、小さなことに見えるかもしれませんが、実際の重いワークフローに入れると、深刻な問題を引き起こしかねません。
00:03:05さて、Goal Buddyはgoalコマンドを本来あるべき姿で機能させるためだけに作られたツールです。
00:03:10私たちが話したすべての問題を解決しますが、その有用性の割に注目されていません。
00:03:16まるでイケメンのベビーシッターのようですが、あなたを誘惑する代わりに、あなたの長時間タスクの面倒を見てくれるのです。
00:03:20goalは作業状態をローカルに保持しませんが、このツールはそれを修正し、
00:03:25チャット履歴に頼らずにローカルの状態を読み込み、更新するように強制します。
00:03:30また、証明とともに終了するため、エージェントは開始前に何をもって完了とするかを理解しています。
00:03:36進行状況を追跡するために、作業中のエージェントの動きを監視できるダッシュボードも備えています。
00:03:42これらすべてを処理するために、3つのエージェント、つまり
00:03:46「スカウト(偵察)」「ワーカー(作業員)」「ジャッジ(審判)」で構成されています。実質的にYコンビネーターのスタートアップチームですね。
00:03:51一人が実際に作業し、一人がそれを見守り、一人が両者をTwitterで批判するようなものです。
00:03:56インストールは非常に簡単で、インストールコマンドをコピーしてプロジェクトフォルダに貼り付けるだけです。
00:04:01Claude CodeとCodexの両方のプラグインとしてインストールされます。
00:04:06新しいセッションを開始すると、そのコマンドを使用できます。
00:04:10これら3つのエージェントには厳密に定義された役割とアクセスレベルがあります。このツールはCodex用でもあるため、
00:04:16エージェントの定義は標準のMarkdownではなくTOMLで行われます。
00:04:21最初の「ジャッジ」は読み取り専用で、リスクのあるスコープや矛盾するソースなど、難しい決定を
00:04:26タスクが安全に完了することを保証するために懐疑的に分析します。
00:04:31編集権限は禁止されています。なぜなら、ジャッジは判断を下すことだけを目的としているからです。
00:04:36タスクは極めて重要であるため、エージェントの推論努力は最高レベルに設定され、決定が正しく行われるようになっています。
00:04:42真夜中に4時間かけて思いを寄せる相手へのメッセージを一生懸命作成する時と全く同じですね。
00:04:47作業が終わると、承認・却下の決定と根拠をJSON構造で返します。
00:04:52「スカウト」も同じく読み取り専用で、アクティブなタスクをマッピングし、
00:04:57タスクの証拠レシートをコンパクトに作成します。タスクの状態を確認するだけなので、
00:05:02推論努力は低く抑えられています。お気に入りのストリップクラブの用心棒のように、本人はあまり興味がないのです。
00:05:07そして最後が「ワーカー」エージェントで、唯一編集権限を持っています。実際に作業を行い、
00:05:12一度に1つのタスクしか実行できません。また、プロジェクトマネージャー(PM)の役割もあり、これはワークフローを調整するメインスレッドです。
00:05:17実際のPMのように振る舞い、最小限の仕事しかしないのが特徴です。
00:05:22タスクを「完了」とマークできる唯一の権限を持っています。コアとなるワークフローは、タスクの意図を
00:05:27私たち人間がするような曖昧な表現ではなく、エージェントが適切に理解できる言葉で
00:05:33表現することから始まります。次に「オラクル」が定義されます。オラクルは基本的に
00:05:38結果を特定する観測可能なシグナルです。これはタスクを完了と見なせるかどうかを判断するために
00:05:43システムが繰り返し照らし合わせるものです。テストスイート、ブラウザ確認、アーティファクト、ベンチマーク、あるいは
00:05:49私の電子レンジをタイムマシンに変えるコードなど、何でも構いません。AIエージェントは何でもできるようになっていますから。
00:05:54次のステップは「サーフェイス(展開)」です。タスクを実行可能なステップに分解し、ダッシュボードを作成して
00:06:00タスクを視覚的なフォーマットにマッピングします。最後がPMで、彼がgoalの実行を管理し、
00:06:06最終監査で完了とマークされるまでgoalを稼働させ続けます。Goal Buddyを使うには、goal prepコマンドを実行します。
00:06:11これがワークフローを初期化するもので、達成したい目標を定義します。
00:06:16まずエージェントがインストールされ準備ができているかを確認し、ワークフローを開始しますが、
00:06:21ネイティブのgoalコマンドとは異なり、非常に慎重です。まず、あなたに質問して曖昧さを取り除き、
00:06:27実装を明確に定義できるようにします。疑い深い妻のように、
00:06:32理解できるまで質問し続けます。最初のステップはgoalファイルの作成です。あなたの要望と回答を
00:06:38エージェントが理解できる言語で適切な目標にマッピングします。
00:06:43これにはすべての情報の要約が含まれ、次にオラクルが定義されます。
00:06:48オラクルは最も重要な部分です。このタスクの場合、オラクルはシンプルに、「すべてのテストが
00:06:53適切な動作でパスすること」です。この種のgoalは具体的です。
00:06:57なぜならプログラムで評価可能だからです。あなたが昨夜奥さんに話した嘘の言い訳とは違いますね。Goal Buddyはワークフロー全体を
00:07:03小さな実行可能なタスクに分解します。これらは「スライス」と呼ばれますが、現実世界と違って
00:07:08スライスの大きさは重要ではありません。ここで大事なのは、安全で、簡単に検証でき、
00:07:14個別に実行できる単位であることです。ドキュメントには安全なスライスサイズが明示されています。また、
00:07:19プロジェクトとタスクを追跡し、PMループがどうなるかを定義するstate.yamlを作成します。state.yamlは
00:07:26すべてのゴールとルールを含み、タスクIDと担当エージェントごとに分解されます。
00:07:31アクティブなタスクを追跡するフィールドや、リンクされたダッシュボードもあります。ToDoタスクと
00:07:36進行中のタスクをすべてリストアップします。今回のケースでは、スカウトエージェントが現在ファイルをマッピングしています。
00:07:42ループを開始するには、このコマンドをコピーして実行するだけです。Claudeに
00:07:47goal.mdファイル内のすべてを実行するゴールを設定するよう指示します。ここから
00:07:52最初のタスクを取り上げ、それを遂行するために部下のエージェントを呼び出します。スカウトが
00:07:58作業を完了すると、その結果をすべて進行状況ファイルに更新し、別のディレクトリにドキュメント化します。
00:08:03また、ボードを「アクティブ」から「完了」に更新します。次にループは次のタスクを拾い上げ、
00:08:08「アクティブ」とマークし、ジャッジエージェントを起動します。ジャッジは結果を批判的にレビューし、
00:08:13レポートを可能な限り少ない垂直スライスに構造化し、ワーカーが独立して実行できるように分解します。
00:08:18その後、スライス数を更新し、stateファイルを更新します。各タスクには
00:08:22許可されたファイル、検証方法、停止条件が明示されています。このように各スライスを定義することで
00:08:28エージェントは明確な期待出力やチェック項目を把握できます。次に、一つずつ
00:08:33ワーカーエージェントを初期化し、最初のスライスを開始します。各エージェントの進行状況は
00:08:39ダッシュボードで追跡できます。何をしているか、どのエージェントがアクティブか、どのタスクが待機中で
00:08:44どれが完了したかが分かるため、自分で監視し続ける必要はなく、子供たちと過ごす時間を大切にできます。
00:08:48すべてのタスクが完了したら、PMとして最後の監査を行い、
00:08:53すべてのテストが適切に行われたかを確認します。監査が終わると、ジャッジエージェントの
00:08:58最終監査タスクを完了とし、goalを完了とマークします。この後は、
00:09:03エージェントが幻覚を起こしていないことを祈るしかありません。全体として、今回扱ったアプリの複雑さと規模を考えるとかなりうまく機能しました。
00:09:09しかし、もっと効果的な並列化が追加できると感じました。
00:09:13すべてを順次処理しており、Claude Codeの並列化能力を全く活かしていなかったからです。
00:09:18ダリオが見たらがっかりしたでしょうね。
00:09:23しかし、ワークフローの計画がいかにうまくできたかを考えれば、かなり良く動作しました。私たちのコンテンツを楽しんでいただけたなら、
00:09:28「Hype」ボタンを押してください。より多くのコンテンツを作成し、もっと多くの人々に届ける励みになります。
00:09:33また、Goal BuddyをUIデザインのような汎用的なものでテストし、
00:09:38プログラムで評価できないタスクをどう扱うかを見てみたかったのです。前回のテストは具体的なワークフローで
00:09:44パス・フェイルの基準が明確でしたが、床屋で髪をさっぱりしてもらうのと同じで、一部のタスクには
00:09:49そういった基準がありません。まずは通常のgoalコマンドに曖昧なプロンプトを渡しました。すぐに
00:09:54ゴールタスクを初期化し、アドバイザーに相談し、ウェブサイトを作成しました。手抜きをして、
00:10:00フレームワークを使わずに単純なHTMLページを作っただけですが、ランディングページは悪くありませんでした。そこで全く同じプロンプトを
00:10:05Goal Buddyにも渡してみました。開始すると、同じワークフローに従い、同様の質問セッションを行い、
00:10:10私たちに意図を明確にするよう求めてきました。ここでGoal Buddyは技術スタックまで聞いてきました。
00:10:14普通なら「キザだな」と思うところですが、私はAIエージェントに真剣なので「徹底している」と評価します。
00:10:20同様に、ボードとgoal.mdファイルを作成し、私たちの要望を適切な目標に翻訳しました。
00:10:26また、オラクルを適切に特定しましたが、前回のタスクは単純で、テストにパスするだけでよかったのに対し、
00:10:31今回は別のゴールがありました。開発サーバーが立ち上がり、
00:10:36ブラウザウォークスルーで全セクションの動作を確認できた時点で完了と定義しました。これが
00:10:41定量化できないタスクを定量化可能に変える手法です。また、オラクル、ルール、
00:10:47エージェント、全タスクをリストしたstate.yamlを再び作成し、同じように作業を開始しました。通常より
00:10:52時間がかかりましたが、最終的にアプリを適切に実装しました。これは
00:10:57ゲイリーにとって問題にはなりませんが、あなたは運動不足なので腕立て伏せでもしたらどうですか?
00:11:02ウェブサイト全体は、単純なgoalコマンドで作成したものより大幅に優れた出来栄えでした。
00:11:07あなたがチュートリアルを見るだけでなく、実際にモノ作りをするAI B2B SaaS創業者になりたいなら、
00:11:12「AI Labs Pro」に参加すべきです。私たちのチームのような同じ志を持つオタクたちがいて、
00:11:17動画で紹介したリソースなども手に入ります。説明欄にリンクを貼っておきますので、
00:11:22チェックしてみてください。動画は以上です。チャンネルをサポートして、
00:11:27今後もこのような動画を作り続けるための支援として、下の「Super Thanks」ボタンをご利用いただければ幸いです。いつも
00:11:32ご視聴ありがとうございます。また次の動画でお会いしましょう。
Community Posts
No posts yet. Be the first to write about this video!
Write about this video