# Maguyva 對 Kotlin 的支援：Android 與 JVM 的程式碼圖譜

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

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、符號與圖譜支援 Kotlin，讓 AI 代理能跨越 Android 與 JVM 程式碼，追蹤類別、擴充函式與協程。

## 支援概況

- 等級: AST 與符號支援
- 程式語言
- 副檔名: .kt, .kts
- 真正的 AST 剖析，支援語法感知搜尋與結構化情境。
- 具名符號支援語意查詢與交叉參照。啟用關係擷取後，即可使用圖譜導覽。
- 這個語言會為圖譜感知搜尋提供符號與關係；支援的邊類型會隨其原生構造而異。
- 同時支援 AST 剖析與符號擷取。

## 最適合的情境

- 擁有大型多模組應用程式的 Android 團隊，ViewModel、repository 與使用案例會跨模組彼此呼叫。
- 伺服器端 Kotlin 與 Kotlin/JVM 服務，其中 Kotlin 與較舊的 Java 程式碼混用。
- 以 Kotlin 腳本（`.kts`）撰寫、需要讓代理與應用程式碼一起閱讀的 Gradle 建置。

## 代理工作流程

- 在變更 repository 或使用案例類別的 API 之前，找出它的所有呼叫端。
- 從 ViewModel 的 `launch` 經過 `withContext` 一路追蹤到資料層的協程流程。
- 在重構之前，梳理哪些類別實作了某個介面或覆寫了某個基底方法。

## Kotlin 讓淺層 AI 工具絆倒的地方

Kotlin 之所以簡潔，是因為它把連接關係藏了起來。`apply`、`let`、`also`、`run` 與 `with` 會改變 `this` 與 `it` 的意義。擴充函式會把行為附加到在別處定義的型別上。協程讓工作在 `launch`、`async` 與 `withContext` 之間流轉。一次只讀一個檔案的代理看得到呼叫，卻看不到呼叫背後的接收者。

Maguyva 會在建立索引時解析出更多這類結構，因此代理問「誰呼叫了這個函式」時，能得到真正的答案。

## Maguyva 在 Kotlin 中擷取了什麼

Maguyva 涵蓋 `.kt` 與 `.kts`。函式、類別、物件與伴隨物件都會被擷取，函式簽章會記錄擴充接收者、參數名稱、預設值與 `vararg` 參數。

呼叫關係會保留類別限定名稱，因此 `OrderRepository.save` 會與其他 `save` 保持區別。接收者型別推斷會追蹤 `apply` 與 `run` 內的 `this`、`let` 與 `also` 內的 `it`，以及 `with` 的引數，讓作用域函式內的呼叫解析到正確的型別。協程建構器與 Flow 運算子（`launch`、`async`、`withContext`、`coroutineScope`、`supervisorScope`、`flow`、`emit`、`delay`、`Channel`）會刻意保留在圖譜中。

圖譜也會記錄繼承、介面實作、覆寫、實例化、註解、型別參照、讀寫，以及例外的拋出與捕捉邊。

## 代理提示範例

- 「誰呼叫了 `CheckoutUseCase.invoke`，來自哪些 ViewModel？」（先用 `find_symbol`，再用 `dependency_search` 的 incoming 方向）
- 「追蹤從 `SyncWorker` 到網路用戶端的同步流程。」（`get_task_context`）
- 「哪些類別實作了 `PaymentGateway`？」（`dependency_search`）

## 已知限制

- 約 250 個 Kotlin 標準函式庫與平台呼叫會從關係中過濾掉，因此 `listOf`、`map`、`filter` 與 `println` 等輔助函式不是圖譜的邊。查找它們請使用 `text_pattern_search`。

## 下一步

透過[快速入門](/zh-hant/docs/quickstart)連接儲存庫，然後在[相容性頁面](/zh-hant/docs/compatibility)查看支援矩陣。對於混合的程式碼庫，也請閱讀 [Java 指南](/zh-hant/languages/java)。

## 引擎細節

- Kotlin 支援涵蓋 `.kt` 與 `.kts`。簽章會記錄擴充接收者、參數名稱、預設值與 `vararg` 參數。
- 接收者型別推斷會追蹤 `apply` 與 `run` 中的 `this`、`let` 與 `also` 中的 `it`，以及 `with` 的引數，呼叫會保留類別限定名稱。
- `launch`、`withContext` 與 `flow` 等協程建構器與 Flow 運算子會保留在圖譜中，約 250 個標準函式庫呼叫則會被過濾掉。

## 實用的 MCP 進入點

- `find_symbol`: 需要定義與參照時，以類別、使用案例或擴充函式查找。
- `dependency_search`: 在變更 API 之前，對 repository 或介面使用 incoming 走訪，查看呼叫端與實作類別。
- `get_task_context`: 適合用於「追蹤從 `SyncWorker` 到網路用戶端的同步流程」這類提示。
