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.fasttool.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 文件。
  • 驗證引用與提示詞變數。
  • 記憶體內平台支援: planapply 工作流程可以在內建的記憶體內平台目標上進行測試,而無需 API 金鑰。
  • 狀態管理: 本地狀態文件、三方差異比較(three-way diffs)以及偏差檢測。
  • 範例實作: 包含一個天氣 agent 和一個內容排程器。

Sources