Rust製のAIエージェント基盤「OpenFang」がバージョン0.6.0をリリースしました。1つのcronジョブを複数チャンネルへ同時配信できるfan-out Cron、スキルのテンプレート化、スラッシュコマンドの一元管理という3つの機能が中核を担っています。
この記事でわかること:
- fan-out Cronでレポートを複数の宛先に同時送信する仕組み
- スキルテンプレートによって設定を注入し、同じロジックを使い回す方法
- スラッシュコマンドレジストリが解決する「コマンド定義の分散」問題
OpenFangとは
OpenFangはRustで実装されたオープンソースのAIエージェントフレームワークです。スケジューラーとチャンネル配信機能を組み合わせており、CLI・Web・APIのどこからでも制御できます。設計の軸は「自律エージェントの運用管理」で、コードベースは137,000行超、14クレート、2,460以上のテストで構成されています。ライセンスはMITです。
競合のOpenClawがエージェントのランタイムロジックとツール活用に特化しているのに対し、OpenFangはスケジューリングや複数チャンネルへの配信といったオーケストレーション面に比重を置いています。どちらも「スキル」という概念を持ちますが、強調する側面が異なります。
1つのジョブを複数チャンネルへ同時配信
fan-out Cronは、1つのcronジョブが複数のターゲットに結果を並行して送れる機能です。設定は1つのジョブ定義にまとめて記述でき、以下の4種類のターゲットを組み合わせられます。
- Channel — Slack、Telegram、Discord、Teams、WhatsAppなど40以上のチャンネルアダプタ
- Webhook — JSON(
{job, output, timestamp})をPOST。Authorizationヘッダも設定可能 - LocalFile — パスとappend/overwriteフラグを指定
- Email — 件名テンプレートに対応
ターゲットへの配信が失敗した場合はログに記録されますが、ジョブ全体はアボートしません。本番環境で自動レポートをSlackチャンネル・BI連携Webhook・監査ログファイルに同時送信するといった運用が、1つの定義で完結します。スケジューラーUIのダッシュボードまたは新設の PUT /api/schedules/{id} エンドポイントからターゲットを管理できます。
同じスキルを設定を変えて使い回す
スキルをテンプレートとして宣言できるようになりました。SKILL.md のfrontmatterに設定変数を記述します。
config:
github_token:
description: GitHub personal access token
env: GITHUB_TOKEN
required: true
default_branch:
description: Default branch name
default: main
required: false
実行時の解決順序は「config.toml → 環境変数 → デフォルト値」の優先順です。必須パラメータが欠落している場合は実行をアボートし、エラーを返します。*_token、*_key、*_secret、password といった名前の変数は、生成されるスキルプロンプト内で自動的にマスクされます。
これにより、同じスキルロジックを異なるSlackチャンネルやデータソースに向けて複数展開できます。設定はWebインターフェース上の「Skills」ページ、またはconfig.tomlの [skills.<name>] セクションから行います。
32のスラッシュコマンドを1か所で管理
これまで分散していたスラッシュコマンドの定義が、単一のレジストリに集約されました。各コマンドにはカテゴリ、エイリアス、適用するサーフェス(CLI/Channel/Web)のフィルタが付与され、そこからヘルプテキストとオートコンプリートが自動生成されます。
新設された GET /api/commands?surface=web|cli|channel|all エンドポイントがダッシュボードからコマンドを取得するAPIとして機能します。CLI・Web UI・Discord・Slack・Telegramなど37以上のチャンネルにまたがってコマンドの挙動が統一されるため、「インターフェースごとにコマンドの挙動が異なる」という問題が解消されます。
その他の改善点
config.toml への書き込みがアトミック操作(一時ファイル生成+リネーム)になりました。クラッシュ時の設定ファイル破損を防ぐための変更です。カーネルの skill_config_overrides により、設定変更をサービスの再起動なしにライブ適用できます。
テスト面では51の新規テストが追加され(cron_delivery 16件、commands 18件、config_injection 10件、API integration 7件)、ワークスペース全体で2,460以上のテストがすべてパスしています。cargo clippy の警告はゼロです。
まとめ
0.6.0はオーケストレーション層の実用性を高めるリリースです。fan-out Cronで配信ロジックの記述を一元化し、スキルテンプレートで設定の再利用を実現し、コマンドレジストリでインターフェース間の一貫性を保ちます。詳細はGitHubのリリースノートで確認できます。