
2026/03/06 0:48
Show HN: Jido 2.0, Elixir Agent Framework → Show HN:Jido 2.0、Elixir エージェント・フレームワーク
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Jido 2.0 – BEAMファーストのエージェントフレームワークを更新したものが、Hexにリリースされました。2024年にBotHiveとして始まったこのプロジェクトは、AIブームの後で書き直され、Jido 1.0 の過剰設計に対処するため、より軽量で API‑centric なバージョン 2.0 が生まれました。
コアアーキテクチャでは、エージェントを単なるデータ構造として扱い、関数が副作用用の指示(ディレクティブ)を生成します。各エージェントは監督付き GenServer (cmd/2) 内で動作し、シグナルルーティングと親子階層を備えています。Jido.AgentServer
組み込み戦略には Direct(逐次処理)と FSM(状態機械)があり、さらに ReAct や Chain‑of‑Thought のようなプラグイン戦略が LLM 呼び出しを追加します。フレームワークは複数のパッケージを提供しています:(検証済みアクション契約、25 以上のプリビルトツール、DAG プランナー)とjido_action(CloudEvents ベースのメッセージング、Trie ルーター、pub/sub)。jido_signal
Jido の AI レイヤーは ReAct、Chain‑of‑Thought、Tree‑of‑Thoughts、Graph‑of‑Thoughts、TRM、Adaptive の六つの推論戦略を提供し、ReqLLM と統合しています。ReqLLM はストリーミング優先でマルチプロバイダークライアントであり、現在 11 社のプロバイダーと 665 以上のモデル(バージョン 1.6)をサポートします。
エコシステムは拡大中です:ビルダーがコード補助ツール、ワークフローオーケストレーター、リサーチエージェントなどを作成しており、今後のパッケージではブラウザ自動化、メモリシステム、評価ハーネス、MCP 統合が対象になります。Ash Framework の完全サポート()により、ユーザーは AI 呼び出し可能なツールをポリシー実行と型安全性で定義でき、ash_jidoは現在 ReqLLM を活用しています。ash_ai
詳細については、ドキュメント(jido.run/docs/getting-started)、エコシステム概要(jido.run/ecosystem)、GitHub リポジトリ(github.com/agentjido)を参照し、Discord(jido.run/discord)でコミュニティに参加してください。
本文
Jido 2.0 が完成し、Hex で入手可能になりました。
BotHive から Jido 2.0 へ
- BotHive (2024) – ボットプラットフォーム
- AI の波が押し寄せた頃に「BEAM(Elixir/OTP)がエージェントシステムには最適だ」と投資した
- TypeScript フレームワークはまるでおもちゃのようだった。Python エージェントは長時間稼働できず、
- その課題を解決するために BEAM を設計し直した
BEAM 上で 18 か月を費やした結果、その投資が実を結びました。
1.0 から 2.0 へ
Jido 1.0(昨年3月リリース)は過剰に設計され、抽象化とフローが複雑すぎていました。
フィードバックは明確でした――「フレームワークを操るのではなく、エージェントを作りたい」。
2.0 は次のように応えています。
- シンプルな API
- 少ない儀式(設定やコマンド)
- まさに BEAM ファースト設計
リリース内容
強固で耐久性のあるエージェント核
基盤は純粋関数型アーキテクチャです。
「エージェント=データ」 ― 状態、アクション、ツールを保持する構造体が GenServer 内で動作します。
すべてのフローは 1 つの関数に集約されます:
cmd/2 # アクション入力 → 更新されたエージェント + 出力ディレクティブ
副作用は ディレクティブ(型付きデータ構造)として扱われるため、
エージェントの挙動を容易に推論・テスト・デバッグできます。
例:
defmodule MyAgent do use Jido.Agent, name: "my_agent", description: "A simple agent", strategy: Jido.Agent.Strategy.Direct, actions: [MyApp.Actions.ProcessOrder], schema: [ order_count: [type: :integer, default: 0] ] end # 純粋関数 – プロセスも副作用も無し {:ok, updated_agent, directives} = Jido.Agent.cmd(agent, {ProcessOrder, order_id: "123"})
ユニットテストはネットワークを介さずに実行できます。
実行時と拡張機能
- Jido.AgentServer は任意のエージェントをスーパーバイズされた GenServer に包みます。
- Strategy(Direct, FSM)は
がアクションを処理する方法を決定し、プラグイン可能です。cmd/2 - AI レイヤー(ReAct、Chain‑of‑Thought 等)は LLM 呼び出しを追加する戦略実装に過ぎません。
他の戦略:行動木実行 (
jido_behaviortree) ― LLM を一切使用しない設計です。
パッケージ
| パッケージ | 目的 |
|---|---|
| jido_action | 汎用アクション契約。コンパイル時スキーマ検証、25+ 事前構築ツール、DAG ベースのワークフロープランナー |
| jido_signal | CloudEvents v1.0.2 をベースにしたメッセージング・神経系。標準化されたエンヴェロープ、Trie ベースルーター、pub/sub バス、9 つのディスパッチアダプタ |
Jido AI
コア上に Jido AI があり、生の LLM 呼び出しを構造化されたエージェント知能へ変換します。
- 付属で 6 種類の推論戦略:ReAct、Chain‑of‑Thought、Tree‑of‑Thoughts、Graph‑of‑Thoughts、TRM、Adaptive
- 例:
defmodule MyApp.SupportAgent do use Jido.AI.Agent, name: "support_agent", description: "Customer support agent with tool access", tools: [ MyApp.Tools.LookupOrder, MyApp.Tools.CheckInventory, MyApp.Tools.CreateTicket ], model: "anthropic:claude-sonnet-4-20250514", max_iterations: 6, system_prompt: """ You are a customer support agent. Use the available tools to look up orders, check inventory, and create tickets. Be concise and helpful. """ end {:ok, pid} = Jido.AgentServer.start_link(agent: MyApp.SupportAgent) {:ok, answer} = MyApp.SupportAgent.ask_sync( pid, "Order #4521 hasn't arrived. Can you check on it and open a ticket?", timeout: 60_000 )
Jido AI は ReqLLM(Elixir 用 LLM クライアント)を使用し、11 のプロバイダーと 665+ モデルに対応します。
成長するエコシステム
- ビルダーは BEAM を使ってコード補助ツール、ワークフローオーケストレーター、リサーチエージェントなどを構築
- ブラウザ自動化、メモリーシステム、評価ハーネス、MCP 統合パッケージが登場中
第一級 Ash Framework サポート
ash_jido は 2.0 と共にリリースされます。Ash リソースに Jido DSL ブロックを追加すると、CRUD アクションは AI 呼び出し可能なツールへ変換され、認可・データ層・型安全性が保持されます。
ash_ai は ReqLLM を LLM クライアントとして採用しています。
全エコシステムを確認するには jido.run/ecosystem へアクセスしてください。
感謝
このリリースは、Phoenix、LiveView、Ash、Req、Telemetry、NimbleOptions といった Elixir コミュニティのおかげです。
率直なフィードバックをくださった早期テスターとコントリビューターに感謝します―― 2.0 はその正直さの結晶です。
使い始める
# mix.exs def deps do [ {:jido, "~> 2.0"}, {:jido_ai, "~> 2.0"} ] end
- ドキュメント:jido.run/docs/getting-started
- Hexdocs:hexdocs.pm/jido
- GitHub:github.com/agentjido
- Discord:jido.run/discord