Smasher は strongDMのattractor をRustで再実装したものです。DOT有向グラフとしてAIワークフローを定義し、smashterがノードごとに実行します。5つのクレートが生のLLM呼び出しからWebダッシュボードまでを処理し、ブラウザでパイプラインの実行を監視してヒューマンゲートの質問に回答できます。
インストール
git clone https://github.com/2389-research/smasher.git
cd smasher
cargo build --release
少なくとも1つのプロバイダーキーを設定:
export ANTHROPIC_API_KEY=sk-ant-...
# or OPENAI_API_KEY, or GEMINI_API_KEY
できること
DOTグラフパイプラインエンジン。 9つのノードタイプが一般的なワークフローパターンをカバー: LLMエージェントタスク用 box、条件分岐用 diamond、人間へのインタビュー用 oval、承認ゲート用 house、人間へのインタビュー用 hexagon、ツール用 parallelogram、並列ファンアウト用 component。エッジはトランジション。属性が動作を設定します。標準のGraphviz DOT — プロプライエタリな要素なし。
マルチプロバイダーLLMクライアント。 smasher-llm は1つの統合インターフェースでOpenAI (Responses API)、Anthropic (Messages API)、Geminiと通信します。ストリーミング、リトライ、プロバイダー固有の癖はこのレイヤーで処理されるため、上位レイヤーが気にする必要はありません。
ツール付きエージェントループ。 smasher-agent は6つの組み込みツール — read、write、edit、shell、grep、glob — を持つコーディングエージェントを実行します。ステアリングルールがノードごとのエージェント動作を制約します。サブエージェントでパイプラインステップ内に委譲できます。
Webダッシュボード。 smasher serve でポート21541にHTMXフロントエンドを起動。ライブSSEイベントストリーム、ステータスオーバーレイ付きグラフビジュアライゼーション、ヒューマンインザループゲート用のQ&Aインターフェース。ブラウザまたはCLIからパイプラインを送信できます。
その他すべてのCLI。 ワンショットプロンプト用 smasher complete、6つのツール付きインタラクティブREPL用 smasher chat、ヘッドレスパイプライン実行用 smasher run、さらに resume、render、ingest、archive、lint。
仕組み
5つのクレート、各クレートは下のレイヤーにのみ依存:
| Layer | Crate | Role |
|---|---|---|
| 1 | smasher-llm | LLMクライアント、プロバイダーカタログ、リクエスト/レスポンス型 |
| 2 | smasher-agent | エージェントループ、ツールディスパッチ、ステアリング、イベントシステム |
| 3 | smasher-attractor | DOTパーサー (winnow)、グラフエンジン、ノードハンドラー |
| 4 | smasher-cli | CLIバイナリ (clap) |
| 5 | smasher-web | Webダッシュボード (axum + askama + HTMX) |
DOTパーサーはwinnowで標準のGraphviz有向グラフを読み込みます。ノードシェイプがハンドラータイプにマッピングされます。グラフエンジンはDAGを走査し、各ノードをそのハンドラーにディスパッチし、Webダッシュボードの SSEストリーム用に tokio::broadcast でイベントをブロードキャストします。
必要要件
- Rust 1.85+
- 少なくとも1つのAPIキー: Anthropic、OpenAI、またはGemini
