Kastor: 為 AI Agent 提供 Terraform 風格的宣告式層
Kastor: 為 AI Agent 提供 Terraform 風格的宣告式層
Kastor 為 AI agent 提供了一個宣告式的單一事實來源層(source-of-truth layer),讓開發者能夠使用 HashiCorp Configuration Language (HCL) 來定義 agent、工具、提示詞(prompts)和模型,並將其編譯成可執行的框架代碼或受管平台資源。這種方法將 agent 配置視為可版本化、可審查的合約,而不是分散在框架代碼、提示詞文件和平台 UI 中的碎片化設定。
宣告式 Agent 規格書
Kastor 使用一套宣告式文件來定義 AI agent 的完整合約。Kastor 將定義與執行分離,而不是將配置嵌入到運行時代碼中。
文件類型與結構
一個 Kastor 模組由包含以下文件類型的目錄樹組成:
- .agent: 定義 agent 的模型、提示詞、工具、輸入與輸出,以及其對其他 agent 的依賴關係。
- .tool: 指定工具介面及其實現來源。
- .prompt: 包含提示詞模板並識別所需的變數。
- *kastor.hcl / .kastor: 用於定義模型、目標(targets)和全域預設值的專案文件。
這些文件中的引用透過位址(例如 model.fast 或 tool.web_search)而非文件路徑來連接區塊,這使得 Kastor 能夠在編譯時建立並驗證依賴圖(dependency graph)。
工作流程:建置、計畫與套用
Kastor 實作了一套模仿 Terraform 工作流程的工具鏈,以確保 agent 的預期狀態與實際部署的狀態一致。
代碼生成路徑 (kastor build)
Kastor 可以將模組編譯成可執行的框架代碼。例如,它可以從 Kastor 規格書生成完整的 LangGraph 專案。生成的代碼是輸出產物,並非旨在作為單一事實來源;任何更改都應在 HCL 規格書中進行並重新建置。
調解路徑 (kastor plan / apply)
對於託管型 agent,Kastor 提供調解工具:
kastor plan: 一個唯讀操作,用於將目前的規格書與狀態文件和遠端資源進行比較,以識別偏差(drift)或所需的更改。kastor apply: 將託管型 agent 與規格書進行調解。kastor destroy: 移除受管 agent。
與 LangGraph 和 MCP 的整合
Kastor 目前支援生成 LangGraph 專案並與 Model Context Protocol (MCP) 整合。
LangGraph 生成
當針對 LangGraph 目標執行 kastor build 時,它會將生成的專案寫入指定的輸出目錄。該專案包含一個 README.md,詳細說明了 agent 的輸入/輸出合約與工具綁定。
MCP 工具化
Kastor 中的工具可以透過規格書 URI(例如 mcp://search-server/tavily_search)綁定到 MCP 伺服器與工具。實際的連接細節(例如 URL 和 API 金鑰)透過部署配置(例如 mcp_servers.json)處理,而不是透過規格書本身,從而避免將機密資訊暴露在受版本控制的 HCL 文件中。
架構與定位
Kastor 並非 agent 運行時(runtime);它位於運行時層之上,以提供標準化的配置介面。
與框架與 Terraform 的比較
- 與 LangGraph 相比: 雖然 LangGraph 是一個執行 agent 的運行時框架,但 Kastor 定義了合約並生成了專案。Kastor 並非 LangGraph 的替代品,而是位於其上方的層。
- 與 Terraform 相比: 雖然 Terraform 是為了管理遠端基礎設施資源而設計的,但 Kastor 專注於 agent 規格書本身。這使得 Kastor 能夠同時支援本地框架代碼的生成,以及託管平台 agent 的調解。
目前狀態與功能
Kastor 目前處於早期概念驗證階段。其目前的可用功能包括:
- 解析
.agent,.tool,.prompt, 和kastor.hcl文件。 - 驗證引用與提示詞變數。
- 記憶體內平台支援:
plan和apply工作流程可以在內建的記憶體內平台目標上進行測試,而無需 API 金鑰。 - 狀態管理: 本地狀態文件、三方差異比較(three-way diffs)以及偏差檢測。
- 範例實作: 包含一個天氣 agent 和一個內容排程器。