Skip to content

Agent Server 扩展

请注意,从 v0.221.x 开始,ACP Registry 是在 Zed 中安装外部智能体的首选方式。 您可以在发布博客文章中了解更多信息。

在不久的将来,Agent Server 扩展将被弃用。

Agent Server 是通过 Agent Client Protocol (ACP) 提供 AI 代理实现的程序。 Agent Server 扩展允许您打包一个 Agent Server,以便用户可以安装扩展并在 Zed 中使用您的代理。

您可以通过在 Zed 中打开"扩展"选项卡(执行 zed: extensions 命令)并将筛选器从"全部"更改为"Agent Servers",或访问 Zed 网站来查看当前的 Agent Server 扩展。

定义 Agent Server 扩展

扩展可以在 extension.toml 中注册一个或多个代理服务器:

toml
[agent_servers.my-agent]
name = "我的代理"

[agent_servers.my-agent.targets.darwin-aarch64]
archive = "https://github.com/owner/repo/releases/download/v1.0.0/agent-darwin-arm64.tar.gz"
cmd = "./agent"
args = ["--serve"]

[agent_servers.my-agent.targets.linux-x86_64]
archive = "https://github.com/owner/repo/releases/download/v1.0.0/agent-linux-x64.tar.gz"
cmd = "./agent"
args = ["--serve"]

[agent_servers.my-agent.targets.windows-x86_64]
archive = "https://github.com/owner/repo/releases/download/v1.0.0/agent-windows-x64.zip"
cmd = "./agent.exe"
args = ["--serve"]

必填字段

  • name: 代理服务器的可读显示名称(在菜单中显示)
  • targets: 用于下载和运行代理的平台特定配置

目标配置

每个目标键使用 {os}-{arch} 格式,其中:

  • os: darwin (macOS), linux, 或 windows
  • arch: aarch64 (ARM64) 或 x86_64

每个目标必须指定:

  • archive: 用于下载存档的 URL(支持 .tar.gz.zip 等)
  • cmd: 运行代理服务器的命令(相对于解压后的存档)
  • args: 传递给代理服务器的命令行参数(可选)
  • sha256: 存档字节的 SHA-256 哈希字符串(可选,但建议用于安全)
  • env: 特定于此目标的环境变量(可选,会覆盖同名的代理级别环境变量)

可选字段

您还可以在代理服务器级别选择性地指定:

  • env: 在代理的子进程中设置的环境变量。默认情况下,这些变量适用于所有目标。
  • icon: 用于在菜单中显示的 SVG 图标路径(相对于扩展根目录)。

环境变量

环境变量可以在两个级别配置:

  1. 代理级别 ([agent_servers.my-agent.env]): 适用于所有平台的变量
  2. 目标级别 ([agent_servers.my-agent.targets.{platform}.env]): 特定于平台的变量

当同时指定两者时,目标级别的环境变量会覆盖同名的代理级别变量。仅在代理级别定义的变量会被所有目标继承。

完整示例

这是一个包含所有可选字段的更完整示例:

toml
[agent_servers.example-agent]
name = "示例代理"
icon = "icon/agent.svg"

[agent_servers.example-agent.env]
AGENT_LOG_LEVEL = "info"
AGENT_MODE = "production"

[agent_servers.example-agent.targets.darwin-aarch64]
archive = "https://github.com/example/agent/releases/download/v2.0.0/agent-darwin-arm64.tar.gz"
cmd = "./bin/agent"
args = ["serve", "--port", "8080"]
sha256 = "abc123def456..."

[agent_servers.example-agent.targets.linux-x86_64]
archive = "https://github.com/example/agent/releases/download/v2.0.0/agent-linux-x64.tar.gz"
cmd = "./bin/agent"
args = ["serve", "--port", "8080"]
sha256 = "def456abc123..."

[agent_servers.example-agent.targets.linux-x86_64.env]
AGENT_MEMORY_LIMIT = "2GB"  # Linux 特定覆盖

安装过程

当用户安装您的扩展并选择代理服务器时:

  1. Zed 为用户的平台下载相应的存档
  2. 存档被解压到缓存目录
  3. Zed 使用指定的命令和参数启动代理
  4. 环境变量按配置设置
  5. 代理服务器在后台运行,准备协助用户

存档被缓存到本地,因此后续启动速度很快。

分发最佳实践

使用 GitHub Releases

GitHub Releases 是分发代理服务器二进制文件的可靠方式:

  1. 为每个平台构建您的代理(macOS ARM64、macOS x86_64、Linux x86_64、Windows x86_64)
  2. 将每个构建打包为压缩存档(.tar.gz.zip
  3. 创建一个 GitHub release 并上传存档
  4. 在您的 extension.toml 中使用 release URL

SHA-256 哈希

为了更好的供应链安全,请在 extension.toml 中包含您存档的 SHA-256 哈希。生成方法如下:

macOS 和 Linux

bash
shasum -a 256 agent-darwin-arm64.tar.gz

Windows

bash
certutil -hashfile agent-windows-x64.zip SHA256

然后将该字符串添加到您的目标配置中:

toml
[agent_servers.my-agent.targets.darwin-aarch64]
archive = "https://github.com/owner/repo/releases/download/v1.0.0/agent-darwin-arm64.tar.gz"
cmd = "./agent"
sha256 = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"

测试

要测试您的 Agent Server 扩展:

  1. 将其作为开发扩展安装
  2. 打开 Agent Panel
  3. 从列表中选择您的 Agent Server
  4. 验证它是否正确下载、安装和启动
  5. 通过与代理对话并查看 ACP 日志来测试其功能

图标指南

如果您的代理服务器有徽标,请将其添加为 SVG 图标。 为了保持一致的渲染效果,请遵循以下指南:

  • 将您的 SVG 调整为适合 16x16 边界框,并留出一两个像素的填充
  • 通过 SVGOMG 处理 SVG 标记,以保持其简洁
  • 避免使用渐变,这通常会增加 SVG 的复杂性并可能导致渲染不一致

请注意,我们会自动将您的图标转换为单色,以保持 Zed 的设计一致性。 (您仍然可以在 SVG 的不同路径中使用不透明度来增加视觉层次。)

发布

当您的扩展准备就绪后,请参阅发布您的扩展了解如何将其提交到 Zed 扩展注册表。