入门 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" }