入门 Zed Industries 2026-09-14 17:42:20 · 0 阅读

第130章 Zed 扩展能力系统详解:权限限制与配置指南

Zed 扩展能执行哪些操作,由一套能力(capability)系统来管控。

限制能力

作为用户,你可以限制授予扩展的能力。

这通过 granted_extension_capabilities 设置来控制。

一旦限制或移除了某项能力,扩展在缺少足够权限的情况下调用对应的扩展 API 时,就会返回错误。

例如,要把文件下载限制为只允许来自 GitHub,可以为 download_file` 能力设置 `host

{
  "granted_extension_capabilities": [
    { "kind": "process:exec", "command": "*", "args": ["**"] },
-   { "kind": "download_file", "host": "*", "path": ["**"] },
+   { "kind": "download_file", "host": "github.com", "path": ["**"] },
    { "kind": "npm:install", "package": "*" }
  ]
}

如果你不想让扩展执行任何能力,可以移除所有已授予的能力:

{
  "granted_extension_capabilities": []
}

注意,这很可能会导致许多扩展无法正常工作,至少在默认配置下是如此。

能力列表

process:exec

process:exec` 能力允许扩展通过 `zed_extension_api::process::Command` 调用命令。

示例

允许执行任意命令、带任意参数:

{ kind = "process:exec", command = "*", args = ["**"] }

允许执行某个特定命令(如 `gem`)、带任意参数:

{ kind = "process:exec", command = "gem", args = ["**"] }

download_file

download_file 功能允许扩展程序使用 zed_extension_api::download_file 下载文件。

示例

允许下载任意文件:

{ kind = "download_file", host = "*", path = ["**"] }

允许从 github.com 下载任意文件:

{ kind = "download_file", host = "github.com", path = ["**"] }

允许从特定的 GitHub 仓库下载任意文件:

{ kind = "download_file", host = "github.com", path = ["zed-industries", "zed", "**"] }

npm:install

npm:install 功能允许扩展程序使用 zed_extension_api::npm_install_package 安装 npm 包。

示例

允许安装任意 npm 包:

{ kind = "npm:install", package = "*" }

允许安装特定的 npm 包(例如 typescript):

{ kind = "npm:install", package = "typescript" }

评论 (0)