# Maguyva 對 Terraform 的支援：為 AI 代理提供基礎架構情境

Canonical source: https://maguyva.ai/zh-hant/languages/terraform

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva 透過 AST 剖析與符號擷取支援 Terraform，讓 AI 代理能在提出變更建議之前，先追蹤模組、locals、變數、資源參照與動態基礎架構模式。

## 支援概況

- 等級: AST 與符號支援
- 基礎設施
- 副檔名: .tf, .tfvars
- 真正的 AST 剖析，支援語法感知搜尋與結構化情境。
- 具名符號支援語意查詢與交叉參照。啟用關係擷取後，即可使用圖譜導覽。
- 這個語言已建立搜尋索引，但目前尚未持久化至程式碼圖譜中。
- 同時支援 AST 剖析與符號擷取。

## 最適合的情境

- 管理可重複使用的 Terraform 模組、環境資料夾與共用基礎架構模式的平台團隊。
- 應用程式碼變更經常需要相應基礎架構編輯或影響審查的儲存庫。
- 在動手修改基礎架構定義之前，需要先理解參照關係與影響範圍的代理工作流程。

## 代理工作流程

- 在編輯計畫之前，先追蹤變數、locals、模組與資源之間如何相互連結。
- 比較不同環境版本與模組使用方式，以維持變更的一致性。
- 在代理提出基礎架構修改建議之前，先檢視可能的下游影響。

## 為什麼 Terraform 需要儲存庫層級的情境

基礎架構程式碼，正是許多 AI 工具會不動聲色地退化成淺層文字處理的地方，但這樣並不夠好。Terraform 的變更通常相當敏感、參照關係密集，且散落在模組、locals、變數、資料來源與各環境專屬資料夾之中。困難之處，在於要先理解整份設定如何彼此串連，才能動手變更。

這正是為什麼 Terraform 支援很重要，即使你的主要應用程式碼位於別處。如果儲存庫中含有基礎架構程式碼，代理就需要把它視為同一套系統的一部分，而不是一個只能靠猜測的附加物。

## Maguyva 協助代理在 Terraform 中理解什麼

Maguyva 以結構化的方式支援 Terraform，這是追蹤模組參照、變數流動與資源關係的有效基礎。一旦程式碼使用了 `count`、`for_each`、動態區塊，以及讓實際的執行計畫更難從粗略瀏覽中理解的共用模組，這一點就變得更加重要。

實際帶來的好處是，代理能在提出變更建議之前，回答儲存庫層級的問題，例如「這個模組在哪裡被重複使用？」「什麼依賴於這個變數？」或「哪些環境資料夾偏離了既定模式？」。

## 這對 Maguyva 的語言涵蓋範圍證明了什麼

Terraform 是檢驗語言涵蓋範圍是否真正有用的一項好測試。它顯示了 Maguyva 能不能把應用程式碼、維運程式碼與基礎架構，視為同一個儲存庫層級的問題來處理，而不是各自獨立的孤島。

如果你的基礎架構與服務程式碼並存，[Go 指南](/zh-hant/languages/go) 是最接近的後端搭配。如果同一個儲存庫也包含 Web 或平台套件，[TypeScript 指南](/zh-hant/languages/typescript) 則是合適的相鄰頁面。

## 這個頁面適合什麼情境

如果你的問題是「代理能不能同時掌握基礎架構情境？」，就適合參考這個頁面——這比單純詢問應用程式語言，更貼近現實。若要查看完整矩陣，請參閱 [相容性](/zh-hant/docs/compatibility)。

## 引擎細節

- Import 正規化會移除 `module` 與 `source`，這讓模組層級的參照更容易比對。
- Terraform 的語言規則可辨識 `var`、`local`、`module`、`data` 與資源參照以擷取關係，但目前的圖譜政策不會將這些參照持久化至 Maguyva 的程式碼圖譜中。
- Terraform 專屬的控制流程，例如 `count`、`for_each` 與動態區塊，會被視為一級結構，而不只是純文字。

## 實用的 MCP 進入點

- `get_task_context`: 當你需要快速取得一份拼接好的答案時，用它來處理像「追蹤 VPC 模組輸出如何餵入 ECS 服務」這類提示。
- `text_pattern_search`: 在擴大分析範圍之前，用確切文字搜尋資源位址、模組名稱或變數鍵名。
