AgentRun - AIエージェントをワークフロー化するDSL
Show HN: AgentRun: DSL to turn agents into Workflows

AgentRunは、既存のAIエージェントに繰り返し可能なワークフローを追加するDSLです。Jevによる型付き判断とエージェント呼び出しを組み合わせ、サポート対応やリサーチなどのタスクを自動化。ツール、モデル、権限、予算はアプリ側で管理でき、JSONまたはTypeScriptビルダーでワークフローを定義。Pi拡張で簡単に試せます。
AgentRunは、すでに動かしているエージェントのためのワークフロー言語です。
HNでの議論
11- speckzzz
エッジにコストやエフォートの属性がなく、終了状態に報酬もないなら、グラフワークフローなんて役に立たない。そんなワークフローは、グラフを知っている人なら誰でも一発でバイブコーディングできてしまう。
少し前、SDLCをハーネスツールの組み合わせとして表現することを考えた。エッジに重み(エフォート)、いくつかの状態に報酬を持つ有限状態機械としてね。目標は、タスクのキューをサブワークフローとしてモデル化し、最も価値のあるものを実装すること。マルコフ決定過程を使って、最小のコストとリスクで報酬を最大化できるアプローチを設計しようとした。仮想的には実装できる。でも、状態機械、スクリプト用のカスタムランタイム、エージェントループの制御、スーパーバイザーの制御メカニズムといった要素のせいで、頭に収めるのが本当に難しくなってしまう。さらに重み付けモデルをチューニングしなければならない。そのモデルは強化学習のモデルに似たものになり得る。たとえやり遂げたとしても、他の誰か一人にでも理解してもらうには、よほどの幸運が必要だろう。そしてそのプロジェクトはGitHubで星3から5くらいになる。なぜなら、それが何なのか、どう使うのかをほとんど誰も理解しないだろうから。
- JustFinishedBSG
ワークフロー定義言語はどうあるべきか、といろいろ試しているところなので、これを研究してみます。
今の自分のビジョン、そしてプロトタイプは、できるだけ「本物の」言語に近づけるべきだというものです。そうすればユーザーもエージェントも、どう使うか、どう機能するかをすぐに理解できます。
つまり `pi` の場合、TypeScriptを使うということです。
そしてUIは、できるだけAST/コードから導出され、そうきれいにできない部分については、最終的にUIを定義する小さなセマンティックヘルパーを追加します。
たとえば「plan -> execute」はこうです:
await flow.unroll(
remaining.map(point => ({
key: point.id,
label: point.objective,
})),
async () => {
for (const point of remaining) {
await flow.item(point.id, async () =>
await flow.agent(executePoint, {
title: `Point ${point.id}`,
prompt: point.objective,
}));
}
},
{ title: `Plan r${planRevision}` },
);
(簡略化したコード)
自分の実装ではこうで、`unroll` は、ただの「Plan · 1/3」という詳細のないUI(forループをそのまま使えばそうなる。もちろん動きはする)の代わりに、
● Plan r1 · 1/3 · active
1. Inspect parser behavior
● 2. Add empty-input coverage
○ 3. Run focused checks
という素敵なUIにするためだけに存在します。
- JonathanAgosto
¡Wepa Miguel! ¡Felicidades y mucho éxito con el release!
おめでとう、そしてこのリリースがうまくいくことを願っています!