Dippin は AI パイプラインワークフローを記述するためのドメイン固有言語です。Tracker パイプラインのオーサリング形式として Graphviz DOT を置き換え、プロンプト、シェルスクリプト、モデル設定、条件分岐に専用の構文を与えます。すべてをエスケープされた文字列属性に詰め込む必要はありません。
インストール
go install github.com/2389-research/dippin-lang/cmd/dippin@latest
確認:
dippin help
既存の DOT パイプラインを移行:
dippin migrate --output pipeline.dip pipeline.dot
dippin validate-migration pipeline.dot pipeline.dip
機能
パイプラインオーサリング用の本格的な言語。 ワークフローはインデントベースの構造を持つ .dip ファイルです。エージェントノードには型付きの model: と provider: フィールドがあります。プロンプトとシェルコマンドは複数行ブロックで記述でき、エスケープや引用符は不要です。条件は不透明な文字列属性の代わりに when ctx.outcome == "fail" で書けます。
39の診断コード。 バリデーションは構造的な問題(開始ノードの欠如、到達不能ノード、重複エッジ)とセマンティックな問題(不明なモデル名、制限のない再試行、タイムアウトのないツールコマンド)を検出します。エラーメッセージは Rust コンパイラの慣例に従います — ソースの場所、説明、修正の提案。
DOT からの移行。 dippin migrate は既存の DOT パイプラインを .dip 形式に変換します。dippin validate-migration は元ファイルと変換後のファイルの構造的同等性を確認し、翻訳で何も失われないようにします。
分析ツール。 dippin simulate は LLM を呼び出さずに実行グラフをドライランします。dippin cost はモデルとプロバイダー別の実行あたりコストを見積もります。dippin coverage はエッジの到達可能性を確認します。dippin doctor はリント、カバレッジ、コストを文字評価にまとめます。dippin unused はデッドブランチノードを見つけてコストの無駄を見積もります。
サブグラフ合成。 subgraph ノードは ref: で別の .dip ファイルを参照し、params: でデータを渡すことで1つのワークフローを別のワークフロー内に埋め込みます。子ワークフローは自己完結しており、独立してリント、フォーマット、コスト計算できます。ツールチェーンはサブグラフを不透明に保ちます: 親は独自のリントパス、子は独自のリントパスを持ちます。共有パターンが変わると、1つのファイルを更新するだけで参照するすべてのワークフローに反映されます。設計の根拠はブログ記事を参照してください。
エディターサポート。 LSP サーバー(dippin lsp)がリアルタイム診断、ホバーツールチップ、定義へのジャンプ、オートコンプリートを提供します。VS Code 拡張機能がシンタックスハイライト、コメントトグル、インデント対応のフォールディングを追加します。
ブラウザで試す
Dippin Playground は WebAssembly でフルツールチェーンを実行します — 何もインストールせずにワークフローのリント、パース、フォーマットが試せます。
チュートリアル
Dippin ブログにツールチェーンのすべての部分についてのガイドがあります:
- Dippin 入門 — 5分以内で最初のワークフロー
- .test.json によるシナリオテスト — 非決定論的パイプラインの決定論的テスト
- DOT から Dippin への移行 — 同等性検証付きのステップバイステップ移行
- CI インテグレーション — リント、テスト、フォーマットを含む GitHub Actions
- エディターセットアップ: LSP、VS Code、Tree-sitter — エディターでの診断とハイライト
- エスケープなしの複数行プロンプト — クリーンなプロンプトのためのインデントベースブロック
- 条件付きエッジ —
whenを使ったパイプラインのルーティング - コスト見積もり — 実行前にコストを把握
仕組み
すべては中間表現(ir.Workflow)にコンパイルされます。パーサーは再帰下降パーサーに渡すインデント対応レキサーです。各コマンドは IR を読んでそれぞれの処理を行います — バリデーターは構造を確認し、リンターはセマンティクスを確認し、フォーマッターはきれいに出力し、DOT エクスポーターは視覚化用の Graphviz 出力を生成します。パッケージは ir をインポートしますが、互いはインポートしません。
DOT は引き続き視覚化のターゲットです。dippin export-dot は Graphviz レンダリング用の DOT を生成します。Dippin はオーサリングを担い、DOT は描画を担います。
必要要件
- Go 1.21+
- 視覚化用: Graphviz(
dotコマンド)
