# Zed 很快。代理還是得先找到程式碼。

Canonical source: https://maguyva.ai/zh-hant/for-zed

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).

Zed 代理依據你開啟的檔案和你給的指示工作。Maguyva 為整個程式碼庫建立索引並透過 MCP 回傳，所以代理會直接問某個符號在哪裡，而不是用猜的。

> 一筆 context_servers 項目：一個 URL，加一個 Authorization 標頭。

## 關於 Zed 你需要知道的

四項 Zed 專屬事實，沒有一項困難。

### settings.json

遠端伺服器放在 `context_servers` 底下。用 `zed: open settings file` 開啟檔案，或從 Settings → AI → MCP Servers 新增伺服器。

### 遠端，以 URL 連線

Zed 透過 HTTP 直接連到 Maguyva 的遠端端點。不需要本機程序，也不需要 Node.js。

### 直接寫在標頭裡

本指南沒有驗證 Zed 標頭中的環境變數展開，所以金鑰直接寫進 `Authorization` 標頭。請把它放在使用者設定裡，而不是會提交的檔案裡。

### 工具權限

Zed 預設在每次呼叫工具前都會詢問。可以在 `agent.tool_permissions.tools` 底下，用 `mcp:maguyva:find_symbol` 這類鍵，逐一允許 Maguyva 的工具。

## 專案指示是一份工作約定，儘管用。

```text
# .rules
- 宣告變更完成前，先執行程式碼庫的測試指令。
- 只在被要求修改的套件內編輯。
```

Zed 只載入一個專案指示檔：在一份以 `.rules` 開頭、包含 `AGENTS.md` 與 `CLAUDE.md` 的固定清單中，第一個符合的那個。個人指示放在 `~/.config/zed/AGENTS.md`。適合寫進去的有：

- 建置、測試與 lint 指令。
- 代理老是弄錯的慣例。
- 代理不該碰的目錄。

指示檔告訴代理該怎麼工作。它沒辦法告訴代理，四千個檔案裡有哪些在呼叫它正要修改的那個函式。

## 開啟的緩衝區不夠用的地方

Zed 代理無法從眼前檔案學到的三件事。

### // 開啟的檔案不是整個程式碼庫

代理只看得到你開啟的和它 grep 到的。另一個套件裡同名的輔助函式看起來一模一樣，直到錯的那個被出貨。

### // 呼叫端不在畫面上

“改了這個簽章會壞掉什麼？”是圖譜的問題。沒有索引，代理只能一個檔案一個檔案地讀，直到回合數或脈絡用完。

### // 脈絡有預算

代理為了摸清狀況而開啟的每個檔案，都在消耗原本能用在變更本身的 token。一個附 file:line 的排序答案，比十次試探性讀取更省。

## 作為 Zed 脈絡伺服器的 Maguyva

一筆 context_servers 項目讓 Zed 代理獲得：

- **針對已索引程式碼庫的 11 個工具**: 語意、結構（AST）、圖譜與文字搜尋，外加符號查找、依賴方與檔案擷取。
- **附檔案路徑與行號的答案**: 涵蓋 285+ 種語言，代理第一次就能開對檔案。
- **隨時保持最新的工具清單**: 伺服器宣告有變更時，Zed 會重新載入該伺服器的工具，不需要重新啟動。

> Zed 給代理*一個快速的編輯器*。
> Maguyva 給代理*一張程式碼地圖*。

## 兩種工作流程

先問地圖，再動手編輯。

### 01. 在代理開啟分頁之前找到實作

```text
zed agent> 對外 Webhook 的重試策略在哪裡？

find_symbol("retryPolicy")
  src/webhooks/dispatch.ts:41   retryPolicy()   ← 實作
  src/webhooks/__mocks__/dispatch.ts:9   ← 測試替身

→ 代理開啟的是 dispatch.ts:41，而不是測試替身。
[exit 0]
```

一次排序查詢取代一輪 grep。答案以代理能直接開啟的路徑和行號回傳。

### 02. 修改簽章前先查依賴方

```text
zed agent> 幫 fetchInvoice 加一個 timeout 參數

dependency_search("fetchInvoice", dependents)
  分布在 4 個套件中的 7 個呼叫端

→ 代理一次更新全部七個呼叫點。
[exit 0]
```

影響範圍在第一次編輯前就到手，而不是在建置失敗之後。

## 在 Zed 中設定

三個步驟。Free 方案：3 個儲存庫, 最多索引 5 萬行儲存庫程式碼，免信用卡。

### 01. 在 maguyva.ai 索引一個程式碼庫

挑一個你已經熟悉的，這樣你才能評分答案。

### 02. 在 Zed 設定的 context_servers 中加入 Maguyva

`~/.config/zed/settings.json`

```json
{
  "context_servers": {
    "maguyva": {
      "url": "https://maguyva.tools/mcp",
      "headers": {
        "Authorization": "Bearer mgv_xxxx"
      }
    }
  }
}
```

### 03. 替換預留位置，然後問一個問題

把 `mgv_xxxx` 換成你的 API 金鑰並儲存。問代理一個你已經知道答案的問題，再開啟它引用的檔案。

Zed 官方的 [MCP 文件](https://zed.dev/docs/ai/mcp) 說明了脈絡伺服器、代理設定檔與工具權限。

## 索引一個你已經熟悉的程式碼庫。

透過 MCP 連接 Zed，然後問一個你能查證的問題。
