コンテンツへスキップ
Mammoth

Mammoth

DOTベースのパイプラインランナー。有向グラフをチェックポイント、リトライ、ヒューマン・イン・ザ・ループゲートを備えたマルチステージAIコーディングワークフローに変換する。

GitHub ← 全プロダクト

MammothはパイプラインのグラフをDOTファイルから読み込み、各ステージをLLMコーディングエージェントに振り分けながらノードごとに実行する。ワークフローを有向グラフとして定義する — ノードはタスク、エッジはトランジション、属性で動作を設定 — あとはmammothが実行、リトライ、チェックポイント、ヒューマン承認ゲートをすべて処理する。

インストール

# From source
go install github.com/2389-research/mammoth/cmd/mammoth@latest

# Or grab a binary from GitHub releases
# macOS (arm64/amd64), Linux (arm64/amd64)

何をするのか

DOTファイルからパイプライン実行。 ビルドの各ステージ — セットアップ、コード生成、テスト、検証、インテグレーション — をノードとして.dotファイルに書く。Mammothがグラフを解析し、21のlintルールで検証し、startからexitまでDAGを歩く。

マルチプロバイダーLLMエージェント。 各codegenノードはOpenAI、Anthropic、Geminiをバックエンドにしたエージェントセッションを起動する。APIキーを設定すればmammothがプロバイダーを選ぶか、ノード属性でモデルを固定できる。

チェックポイントと自動再開。 成功したノードごとにチェックポイントを保存する。実行が失敗または中断されても、mammoth pipeline.dotは中断したところから再開する。クリーンスタートを強制するには--freshを使う。

並列ブランチとファンイン。 複数のブランチに作業をフォークして並列実行し、設定可能なジョインポリシー(all-success、majority、first-success)でファンインノードに結果をマージする。

ヒューマンゲート。 shape=houseのノードは実行を一時停止してヒューマン入力を促す — 承認、却下、またはガイダンスの提供。無人実行向けのデフォルト選択付き設定可能タイムアウト。

検証ノード。 八角形のノードはシェルコマンド(swift testgo vetなど)を実行し、終了コードで進行をゲートする。LLMなし、トークンコストなし、確定的なpass/fail。

ターミナルUI。 --tuiでライブDAG、イベントログ、ノード詳細を表示するBubble Teaダッシュボードを起動。またはmammoth serveでウェブUIを使う。

仕組み

3つのレイヤー、下から順に:

  1. llm/ — OpenAI Responses API、Anthropic Messages API、Geminiをストリーミング、リトライ、バックオフを備えた単一インターフェースに正規化するユニファイドクライアント。
  2. agent/ — ツール呼び出し(ファイル読み書き、シェル実行、パッチ適用)でLLMを駆動するエージェントループ。ステアリング、ループ検出、サブエージェント生成を含む。
  3. attractor/ — パイプラインエンジン。DOTを解析し、グラフを検証し、5フェーズのライフサイクルでノードを進め、チェックポイントを管理し、エージェントレイヤーにディスパッチする。

パイプラインファイルは設定のためのノード属性を持つ標準DOT構文を使う:

digraph build_app {
    setup [shape=box, prompt="Set up the project structure"]
    implement [shape=box, prompt="Implement the core logic"]
    verify [shape=octagon, command="go test ./..."]
    done [shape=doublecircle]

    setup -> implement -> verify -> done
    verify -> implement [condition="outcome=fail"]
}

必要要件

  • Go 1.25以上(ソースからビルドする場合)
  • 少なくとも1つのLLM APIキー: ANTHROPIC_API_KEYOPENAI_API_KEY、またはGEMINI_API_KEY
  • Graphviz(オプション、SVG/PNGグラフ描画用)
GitHub で見る →
31 ページ · hugo 0.148.2 · 1ee4278 · 構築済み Aug 10 22:58
2389 Radio
2389 RADIO ステーションを選択