CodexやClaude Codeはもう古い。Goal Buddyがすべてを解決する

AAI LABS
컴퓨터/소프트웨어창업/스타트업AI/미래기술

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ご視聴ありがとうございます。また次の動画でお会いしましょう。

Key Takeaway

Goal BuddyはClaude Codeの「goal」コマンドが抱える文脈維持とタスク評価の不安定さを、専門化された3つのエージェントとローカル状態管理によって解決する。

Highlights

  • Claude Codeの「goal」コマンドはチャット履歴のみに依存するため、長時間タスク実行時にコンテキスト肥大化による品質低下が発生する。

  • Goal Buddyは「スカウト」「ワーカー」「ジャッジ」という3つの専門エージェントを構成し、ローカルに状態を保持することでタスクを安定化させる。

  • Goal BuddyはTOML形式で各エージェントの役割を厳密に定義し、タスク開始前に完了基準となる「オラクル」を明確化する。

  • ジャッジエージェントは読み取り専用の権限でリスクを分析し、ワーカーエージェントのみが編集権限を持ってタスクを実行する。

  • 状態管理ファイル「state.yaml」がタスクID、担当者、進行状況を記録し、ダッシュボード上で進捗を可視化する。

Timeline

goalコマンドの限界と課題

  • Claude Codeのgoalコマンドはチャット履歴を唯一の真実のソースとするため、長期タスクでコンテキストが肥大化し品質が低下する。
  • 条件の評価がモデルの主観に依存しており、完了基準が明確ではないためタスクが途中で停滞しやすい。

Claude Codeのgoalコマンドは特定の条件が満たされるまで動作するが、ナレッジベースやファイルシステムを介した状態管理機能がない。そのため、長時間実行時にコンテキストの圧縮(compaction)が発生し、エージェントの推論能力が著しく低下する。また、タスクを小さなステップに分解しない構造により、進行状況の追跡が困難で、何をもって「完了」とするかの定義が曖昧なまま実行されるリスクがある。

Goal Buddyの構造と役割定義

  • Goal Buddyはスカウト、ワーカー、ジャッジの3エージェント体制でタスクを管理する。
  • 各エージェントにはアクセスレベルと役割が厳格に定義されており、CodexやClaude Codeのプラグインとして動作する。

Goal Buddyは、作業状態をローカルのstate.yamlに保持し、チャット履歴に頼らない安定した運用を実現する。スカウトは現状のマッピングと証拠作成を担当し、ジャッジは読み取り専用でリスク分析と批判的評価を行い、ワーカーが唯一の編集権限を持ってタスクを遂行する。これらはTOML形式で設定され、役割が重ならないよう厳密に分離されている。

ワークフローの実行と完了基準

  • ワークフローは人間からの要望をオラクル(観測可能な完了シグナル)に変換することから始まる。
  • プロジェクトは「スライス」と呼ばれる小さな実行可能な単位に分解され、state.yamlで管理される。

初期化コマンドであるgoal prepを実行すると、エージェントは曖昧な要望を具体的な「オラクル」と目標定義に変換する。タスクはスライスという小さな単位に分解され、それぞれに許可された操作や検証方法が明示される。全タスクの進捗はダッシュボードで常に監視可能であり、最終監査を経て目標達成が認定される。

定性的なタスクへの適用と結論

  • ウェブサイト作成のようなUIデザインタスクでも、技術スタックの定義と完了基準の策定により自動化が可能である。
  • Goal Buddyは通常のgoalコマンドよりも詳細な計画立案と高い実装品質を提供する。

具体的なパス・フェイル判定が難しいUI開発タスクにおいても、Goal Buddyは詳細な質問セッションを通じて完了基準を明確にする。開発サーバーの起動とブラウザでの動作確認を完了条件として定義することで、定量化しにくいタスクを管理可能なプロセスへと変換する。結果として、自動化されたワークフローは単純なgoalコマンドによる出力よりも優れた成果をもたらす。

Community Posts

No posts yet. Be the first to write about this video!

Write about this video