0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

osFoundryのLoopとGraphの違いは?定期実行と分岐するワークフローの使い分け

0
Posted at

月曜の朝9時。マーケ担当の佐藤さんは、コーヒーを片手に競合3社のサイトを順番に開いて、料金ページと更新情報を見比べています。毎週の決まった作業ですが、地味に時間を取られます。同じころ、隣の席のエンジニアは「直しました」と言うAIに、落ちたままのテスト結果をもう一度貼り付けていました。

この2つは、どちらも「AIエージェントに、人が見張らなくても仕事を回してもらう」話です。osFoundryのデスクトップアプリでは、そのための機能がLoop(ループ)とGraph(グラフ)の2つに分かれています。実際の画面で、それぞれの中身と使い分けを見ていきます。

LoopとGraphをひとことで言うと

Loopは、エージェントのチームに「ゴール」と「答え合わせの方法」と「上限」を持たせて、ゴールを満たすまでラウンドを重ねさせる仕組みです。最大ラウンド数や「何回続けて失敗したら止まるか」が決まっていて、必要ならスケジュールなどのトリガーで定期実行もできます。Graphは、途中の結果によって次の動きが変わる仕事のためのワークフローです。条件で分岐する、失敗した部分だけやり直す、複数のエージェントに同時に振る、人の承認を待つ、別のGraphを呼び出す、といったことを1つのプログラムとして保存しておけます。

どちらもデスクトップアプリのサイドバーにあり、「ループ」のすぐ下に「グラフ」が並んでいます。アプリのコードにも書かれている見分け方は、とてもシンプルです。Loopはいつも同じ道を通り、Graphは進みながら道を選びます。なお、名前から誤解されやすいのですが、Graphはグラフ(図表)を描く機能でも、ナレッジグラフでもありません。エージェントを動かすワークフローの実行機能です。

Loopの画面で見るところ

osFoundryで実行が終わったLoopのセッション。ラウンド数、ラウンドタブ、ゴールの進捗が表示されている

テストを通すLoopが終わったあとの画面です(テスト名などは表示例です)。最初に覚えておくと便利なのは次の5か所です。

  • 左のセッション一覧。Loopの実行は1回ごとに独立したセッションになります。名前の下の「Verified」は、最後のラウンドがチェックを通ったという意味で、AIの自己申告ではありません。
  • 中央上部のラウンド表示。「ラウンド3 of 4」と、何で判定しているか(ここでは npm test の終了コードが0なら完了)、そして「連続で検証に失敗した回数」が出ます。空回りしているLoopを止めるのは、このカウンターです。
  • 「ラウンド」タブ。ラウンドごとに「1 / 3 達成」「2 / 3 達成」「3 / 3 達成」と並び、開くとそのラウンドでどの条件を満たしたかが見られます。
  • 右側のインスペクター。「ゴール」「トリガー」「フック」のタブがあり、ゴールの進捗、起動条件、ガードレールを確認できます。
  • 上部の「一時停止」と「キャンセル」。次のチェックを待たずに今止めたいときに使います。

使いどころ1:毎朝の競合チェックをLoopに任せる(非エンジニア)

冒頭の佐藤さんのケースです。コードは書きませんし、ターミナルも開きません。

サイドバーの「ループ」を開いて「新しいセッション」を押すと、「新規ループ実行」というダイアログが出ます。一覧のいちばん上にある「最初に使うならこちら(設定不要)」の欄に、Watch the competitors(競合ウォッチ)があります。ウェブを調べるだけで、手元のファイルには触れないので、準備なしで使えるという扱いです。

手順は次のとおりです。

  1. Watch the competitors を選び、「この実行のゴール(任意)」に見張る相手と見る項目を書きます(例:3社の料金、新機能、採用情報)。
  2. 開始方法で「今すぐ1回実行」を選び、「今すぐ実行」を押します。
  3. 届いたレポートを読みます。載るのは前回から変わった点だけで、どの行にも日付と出どころが付きます。会社の自己申告は「本人の主張・未検証」として、事実とは分けて書かれます。

osFoundryの競合ウォッチLoop。チャットにレポートが表示され、ゴールの3項目がすべて達成になっている

内容に納得できたら、定期実行にします。右側の「トリガー」タブで「スケジュールを追加」を押すと、スケジュールの設定画面が開きます。「Every 30 min」「Hourly」「Daily 09:00」「Weekdays 09:00」のプリセットから選ぶと、cronの式と次の3回の実行予定が表示されます。あわせて2つ聞かれるのが実務的で、前の実行がまだ終わっていないときはスキップするか待つか、パソコンがスリープしていたときは何時間遅れまで実行するか、を選べます。

osFoundryのスケジュール設定画面。Weekdays 09:00が選ばれ、次の3回の実行予定が表示されている

保存すると、トリガータブに「On a schedule」と次回の実行時刻が出ます。これで佐藤さんの月曜の朝は、サイトを巡回する時間から、届いたレポートを読む時間に変わります。スケジュールはデスクトップアプリが開いている間にこのパソコン上で動くので、スリープ時の遅延実行の設定はそのためにあります。

osFoundryのLoopのトリガータブ。平日9時のスケジュールと次回実行時刻が表示されている

使いどころ2:テストが本当に通るまで回す(開発者)

次は隣の席のエンジニアのケースです。AIの「直しました」を信じるのではなく、テストランナーに合否を決めさせます。

「新しいセッション」から「新規ループ実行」を開き、検索欄に「JS suite」と入れると Get the JS suite green が見つかります。右側のカードで、始める前に動き方を確認できるのがポイントです。

  • 実行担当:debuggerがリードし、vitest-expert、jest-expert、typescript-expert が加わる
  • 停止のしかた:最大4ラウンド、3回連続で失敗したら停止
  • 自己採点の方法:npm test を実行し、終了コードが0のときだけ完了

ゴールの文面には、テストのアサーションを書き換えて通すのは禁止、とも書かれています。AIにありがちな「テスト側を直して通す」ハマりどころを、最初から塞いでいるわけです。

osFoundryの新規ループ実行ダイアログ。Get the JS suite greenが選ばれ、実行担当、停止のしかた、自己採点の方法が表示されている

開始方法を「今すぐ1回実行」にして、プロジェクトと作業フォルダを選び、「今すぐ実行」を押します。あとは「ラウンド」タブを開いて待つだけです。表示例では、1ラウンド目で3つ中1つ、2ラウンド目で2つ、3ラウンド目で3つすべてが通り、そこでLoopが自分で止まって、セッションにVerifiedが付きました。

残るのは「直しました」というメッセージではなく、どのラウンドでどのテストが通ったかの記録です。同じ一覧には Python、Go、Rust、Java のテストや、型エラー、lint 向けのLoopもあります。

使いどころ3:問い合わせを振り分けるならGraph(チーム)

最後はサポートチームのリーダーのケースです。共有の受付窓口に、不具合報告、使い方の質問、機能要望が混ざって届きます。内容を一度判定して、担当の専門エージェント1人にだけ回したい、という状況です。

ここでLoopは合わなくなります。Loopは毎ラウンド同じ手順を繰り返すので、「内容によって行き先を変える」ことができません。こういう「途中の結果で道が分かれる」仕事がGraphの出番です。

  1. サイドバーの「グラフ」を開き、一覧の横の「+」を押します。「グラフを作成」で「動作するグラフから始める」か「スターターを選択」を選べます。
  2. スターターを選ぶと、よくある形のサンプルが使いどころの説明つきで並びます。今回は Triage and route(一度だけ分類して、専門エージェント1人に回す)を使います。全員を走らせない分、スターターの中でいちばん安く済む形です。
  3. 「セッションを設定」で、「同時に実行する最大エージェント数」「トークンのハード上限」、既定の入力、各ステップに使うエージェントとモデルを決めます。
  4. 「実行」を押すと、実行画面で各ステップの進み具合がライブで見えます。「一時停止」「キャンセル」も効きます。

ほかのスターターも、使い分けの参考になります。Review each item, then merge は項目ごとに1エージェントを同時に走らせて最後にまとめる形、Propose, ask, then apply は変更案を作って人に確認し、承認されたときだけ実行する形です。承認待ちになると「承認」「却下」のカードが出て、並行して進んでいる他の処理はそのまま続きます。

Graphのプログラム自体はコードで、ドラッグ&ドロップの図ではありません。ただ一から書く必要はなく、Maestroやエージェントに書かせ、入力や上限はセッション設定で変える、という分担になります。

実行後は「変更」タブで、その実行が作成・編集したファイルを確認でき、一部は元に戻せます。「履歴」タブには過去の実行が並ぶので、失敗した回と直したあとの回を見比べられます。なお、Graphはブラウザでも中身を読めますが、実行にはデスクトップアプリが必要です。

ほかの機能とのつながり

  • Loopの「チーム名簿」に入るエージェントは、Agent teamやAgent Registryで用意したものです。Loop自体は再利用できるプリセットとしてosStudioでバージョン管理できるので、品質の基準やリトライ上限を変えても履歴が残ります。
  • Graphには作成時に固定の識別子が付きます。これは、Loopや別のGraphから呼び出せるようにするためです。つまり「平日9時に起動するLoopが、分岐するGraphを呼ぶ」という組み方ができます。
  • Messageでは、LoopやGraphも人や単体エージェントと並んでチャンネルのメンバーになれます。次のチェックの予定や承認待ちの知らせが、チームのいつもの部屋に届きます。

スケジュール実行の詳しい説明はエージェントのcron実行、起動条件全般はエージェントのトリガーのページにまとまっています。

よくある質問

Loopはcronジョブと同じですか?
違います。スケジュールはLoopの一部分で、付けなくても使えます。Loopの本体は「チーム+ゴール+答え合わせ+上限」で、ラウンドごとにどの条件を満たしたかの記録が残ります。

Loopでも並列に動くなら、Graphはいつ必要ですか?
並列かどうかは決め手になりません。前のステップの結果で次の行き先が変わるとき、失敗した部分だけやり直したいとき、人の承認を挟みたいとき、別のワークフローを呼びたいときはGraphです。毎回同じ手順で済むなら、Loopのほうがシンプルです。

止まらなくなってAPI料金がかさむことはありませんか?
用意されているLoopには最大ラウンド数と連続失敗での停止があり、始める前にカードで確認できます。Graphには「同時に実行する最大エージェント数」と「トークンのハード上限」があります。

プログラミングができなくても使えますか?
Loopはダイアログで選んで、ゴールとトリガーを設定するだけなので使えます。Graphの中身はコードですが、スターターから始めてMaestroに手直しを頼めば、入力や上限、ステップごとのエージェントは画面上で変えられます。

デスクトップアプリはosfoundry.io/ja/downloadから入手できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?