插件注册表是中央市场的去中心化继承者。没有单一机构拥有它或决定哪些插件被列出,使插件可被发现的索引——聚合器——是任何人都可以运行的。当您将站点指向注册表时,管理仪表板会从那里而不是从市场浏览和安装插件。
它构建在 AT Protocol 之上,这是 Bluesky 背后的网络。
注册表 vs. 市场
市场和注册表都允许管理员从管理仪表板浏览、安装、更新和移除沙箱插件。安装体验——能力同意、校验和验证、沙箱运行器——是相同的。它们的区别在于谁控制目录以及您信任谁。
| 市场 | 注册表 | |
|---|---|---|
| 控制 | 一家公司拥有和运营 | 没有中央所有者;任何人都可以运行聚合器 |
| 发现 | 由市场服务提供 | 由索引网络的聚合器提供 |
| 审核 | 运营者审查列表并可以移除 | 标签者发出您选择接受的下架和验证标签 |
| 您信任谁 | 市场运营者 | 您指向的聚合器,加上您接受的任何标签者 |
您为给定站点配置其中一个。当设置了 experimental.registry 时,管理员的浏览和安装流程使用注册表。
启用注册表
注册表需要 sandboxRunner,因为注册表插件始终在沙箱中运行。有关运行器设置,请参阅安装插件。
以下配置将站点指向参考聚合器:
import { defineConfig } from "astro/config";
import emdash from "emdash/astro";
export default defineConfig({
integrations: [
emdash({
sandboxRunner: "@emdash-cms/sandbox-cloudflare",
experimental: {
registry: "https://registry.emdashcms.com",
},
}),
],
});
简单的 URL 字符串是简写形式。当您需要标签者或发布经过时间策略时,使用对象形式:
emdash({
sandboxRunner: "@emdash-cms/sandbox-cloudflare",
experimental: {
registry: {
aggregatorUrl: "https://registry.emdashcms.com",
acceptLabelers: "did:plc:emdashverification",
policy: {
minimumReleaseAge: "48h",
minimumReleaseAgeExclude: ["did:plc:yourfirstpartydid"],
},
},
},
})
聚合器 URL 在生产环境中必须是 HTTPS(开发环境允许 http://localhost)。
配置选项
acceptLabelers— 转发给聚合器的标签者 DID 的逗号分隔列表。标签者应用下架和验证标签;聚合器根据您接受的标签过滤和注释结果。未设置时,聚合器应用其运营者默认集。policy.minimumReleaseAge— 在选择要安装或更新的版本时,保留比此经过时间更新的发布,扩大下架到达的时间窗口,防止受损发布到达您的站点。接受持续时间字符串("24h"、"7d")或秒数。policy.minimumReleaseAgeExclude— 免于保留的 DID,用于您明确接受其发布节奏的发布者(如您自己的第一方插件)。每个条目是裸的发布者 DID,或用于免除单个包的<did>/<slug>对。仅接受 DID,不接受句柄。
浏览和安装
- 打开管理面板,导航到 插件 > 注册表。
- 浏览或搜索。每个结果显示发布者的已验证句柄、最新版本和任何标签。
- 打开插件查看其 README、截图、声明的访问权限和发布历史。
- 点击 安装 并查看能力同意对话框。
- 确认。
安装会验证下载的字节与发布校验和是否匹配,确认捆绑包的插件 ID 和版本与发布匹配,并确认其声明的能力与您批准的内容匹配。更新和卸载的工作方式与市场插件相同。
信任模型
注册表是去中心化的,因此信任是明确的。在激活插件之前,EmDash 独立验证工件字节的哈希是否与发布校验和匹配,捆绑包是否对应其声明的插件 ID 和版本,以及其能力是否与同意对话框匹配。