# Zed 很快。智能体照样得先找到代码。

Canonical source: https://maguyva.ai/zh-hans/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   ← mock

→ 智能体打开的是 dispatch.ts:41，而不是 mock。
[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，然后问一个你能核实的问题。
