HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Kastor – AIエージェントのためのTerraform風仕様

Show HN: Kastor – Terraform-style specs for AI agents (github.com)

12 pointsby weirdguy12 コメント

要約

Kastorは、AIエージェントの定義を宣言的かつベンダーニュートラルに行うためのツールです。HCL形式の仕様ファイル(.agent, .tool, .prompt)とGoツールチェーンを提供し、LangGraphなどのフレームワーク向けに実行可能なプロジェクトを生成したり、ホストプラットフォーム上のエージェントの状態管理やドリフト検出を行ったりします。現時点では初期段階の概念実証ですが、LangGraphプロジェクトのビルドやローカル状態管理などが計画されています。

全文翻訳

Kastor Kastorは「AIエージェントのためのTerraform」です。今日のAIエージェントは、フレームワーク(LangGraph、CrewAI)内で命令的に定義されるか、プラットフォームUI(OpenAI Assistants、Bedrock Agents)で組み合わされますが、ベンダーニュートラルでバージョン管理可能、レビュー可能な真実の情報源が存在しません。Kastorはそれを一つ提供します。型付けされた宣言的な仕様(HCL形式の.agent、.tool、.promptファイル)と、2つのパスを持つGoツールチェーンです。kastor buildはターゲットフレームワーク向けの実行可能なプロジェクトを生成し、kastor plan / kastor applyは、状態、差分、ドリフト検出を備えたホストプラットフォーム上の長期的なリソースとしてエージェントを調整します。完全な設計はSPEC.mdにあります。 ステータス Kastorは初期の概念実証です。 現在動作するもの: .agent、.tool、.prompt、およびkastor.hclの解析 参照とプロンプト変数の検証 実行可能なLangGraphプロジェクトのビルド 例:天気エージェント、コンテンツスケジューラエージェント v0で計画されているもの: kastor plan/apply(ローカル状態ファイルとドリフト検出) aws/azureプラットフォームへのデプロイ これは別のエージェントランタイム/フレームワークではありません。 インストール Homebrew: brew tap weirdGuy/tap && brew install kastor インストールスクリプト(リリースチェックサムを検証し、/usr/local/binまたは~/.local/binにインストールします。sudoは不要です): curl -fsSL https://raw.githubusercontent.com/weirdGuy/kastor/main/scripts/install.sh | sh Go 1.26+の場合: go install github.com/weirdguy/kastor/cmd/kastor@latest または、releasesページからプラットフォーム用のアーカイブをダウンロードし、checksums.txtに対して検証してから、kastorバイナリをPATHに配置してください。 クイックスタート:天気例のビルド 前提条件:Go 1.26+、Python 3.11+、OpenAI APIキー、Tavily APIキー(例の検索ツールはTavilyのホストMCPサーバーに対して実行されます)。 仕様をLangGraphプロジェクトにコンパイル: go build ./cmd/kastor ./kastor validate examples/weather/ ./kastor build examples/weather/ kastor buildは、生成されたプロジェクトをexamples/weather/gen/langgraphに書き込みます(ターゲットの宣言された出力)。生成された出力はコミットされません。仕様から再現可能であり、コード生成の決定性はテストによって強制されます。 生成されたプロジェクトの設定: cd examples/weather/gen/langgraph python3 -m venv .venv . .venv/bin/activate pip install -r requirements.txt 例のweb_searchツールは、その仕様URI、mcp://search-server/tavily_searchによってMCPサーバーとツールにピン留めされています。そのサーバーに到達する方法は、仕様ではなくデプロイメント構成です。作業ディレクトリにmcp_servers.jsonを作成するか(またはKASTOR_MCP_CONFIG環境変数を別のファイルに向ける)、KASTOR_MCP_CONFIG環境変数を別のファイルに向けるかしてください。 Tavilyのホストサーバーの場合: { "search-server": { "transport": "streamable_http", "url": "https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-YOUR-KEY" } } URLにはAPIキーが埋め込まれているため、mcp_servers.jsonはgitignoreされています。秘密情報として扱い、決してコミットしないでください。また、仕様URIの最後のパスセグメント(tavily_search)は、サーバーが実際にアドバタイズするツールを名前付けする必要があることに注意してください。そうでない場合、呼び出しは「does not expose tool」というエラーで失敗します。 モデル認証情報をエクスポートします(例のモデル「fast」ブロックはプロバイダーopenaiを使用します): export OPENAI_API_KEY=sk-... エージェントを実行します: python3 main.py weather --inputs '{"location": "Lisbon", "date": "tomorrow"}' エージェントの宣言された出力契約をJSONとして出力します: { "weather": "..." } gen/langgraph内の生成されたREADME.mdは、プロジェクト実行側の全責任を負います。すべてのエージェントの入力と出力、ツールバインディング、MCP構成が含まれます。 v0の注意点(SPEC.md §3.2/§4):agent.weatherのオプションのforecast_context入力は、agent.forecastの出力を参照します。その参照はコンパイル時に検証され、依存関係グラフを順序付けしますが、生成されたコードはアップストリームエージェントを自動的に実行しません。コンテキストが必要な場合は、forecastを自分で実行し、その要約を--inputs経由で渡してください。 開発 go build ./... # すべてをビルド go test ./... # すべてのテストを実行 SPEC.mdは設計上の決定に関する真実の情報源であり、CLAUDE.mdは日々の慣習を文書化しています。