插件注册表

本页内容

插件注册表是中心化市场的去中心化继承者。发布者拥有自己的记录,任何人都可以运行使它们可被发现的索引——即聚合器。每个聚合器定义哪些标签方必须批准一个列表才能显示。当您将站点指向注册表时,管理面板将从注册表而非市场浏览和安装插件。

它构建在 AT Protocol 之上,即 Bluesky 背后的网络协议。

注册表与市场的对比

市场和注册表都允许管理员从管理面板浏览、安装、更新和移除沙盒插件。安装体验——能力授权确认、校验和验证、沙盒运行器——是相同的。它们的区别在于谁控制目录以及您信任谁。

市场注册表
控制权由一家公司拥有和运营没有中心所有者;任何人都可以运行聚合器
发现由市场服务提供由索引网络的聚合器提供
审核运营方审查列表并可以移除它们标签方批准确切的列表修订版本,并可以发出屏蔽或下架通知
信任对象市场运营方您指向的聚合器及其策略所要求的标签方

您为给定站点配置其中之一。当设置了 experimental.registry 时,管理面板的浏览和安装流程将使用注册表。

启用注册表

注册表需要 sandboxRunner,因为注册表插件始终在沙盒中运行。有关运行器设置,请参阅插件沙盒

以下配置将站点指向参考聚合器:

import { defineConfig } from "astro/config";
import { sandbox } from "@emdash-cms/cloudflare";
import emdash from "emdash/astro";

export default defineConfig({
  integrations: [
    emdash({
      sandboxRunner: sandbox(),
      experimental: {
        registry: "https://registry.emdashcms.com",
      },
    }),
  ],
});

裸 URL 字符串是简写形式。当您需要声明接受的标签方或设置发布时效策略时,请使用对象形式:

emdash({
  sandboxRunner: sandbox(),
  experimental: {
    registry: {
      aggregatorUrl: "https://registry.emdashcms.com",
      acceptLabelers: "did:web:labels.emdashcms.com",
      policy: {
        minimumReleaseAge: "48h",
        minimumReleaseAgeExclude: ["did:plc:yourfirstpartydid"],
      },
    },
  },
})

在生产环境中聚合器 URL 必须是 HTTPS(开发环境允许 http://localhost)。

配置选项

  • acceptLabelers — 可选的逗号分隔裸标签方 DID 列表,作为经过验证的声明转发,并包含在客户端的缓存标识中。设置时,列表必须包含聚合器要求的每个来源。该声明不能更改聚合器的批准、屏蔽、下架或撤回策略。
  • policy.minimumReleaseAge — 在选择要安装或更新到的版本时,暂缓新于此时效的发布版本,为下架通知在受损的发布版本到达您的站点之前争取更多时间窗口。接受持续时间字符串("24h""7d")或秒数。
  • policy.minimumReleaseAgeExclude — 不受暂缓限制的 DID,用于您已明确接受其发布节奏的发布者(例如您自己的第一方插件)。每个条目是一个裸发布者 DID,或 <did>/<slug> 对以豁免单个包。只接受 DID,不接受 handle。

浏览和安装

  1. 打开管理面板并导航到 Plugins > Registry
  2. 浏览或搜索。每个已批准的结果显示其列表名称、已批准的作者名称或稳定的发布者 DID,以及最新版本。
  3. 打开一个插件以查看其 README、截图、声明的访问权限和发布历史。
  4. 点击 Install 并查看能力授权确认对话框。
  5. 确认。

安装会验证下载的字节是否与发布校验和匹配,确认包的插件 ID 和版本与发布匹配,并确认其声明的能力与您批准的内容匹配。更新和卸载的工作方式与市场插件相同。

信任模型

注册表是去中心化的,因此信任是显式的。参考标签方仅评估管理面板中显示的发布者控制的元数据和媒体。它不会获取或评估插件归档文件、源代码、清单、依赖项、软件物料清单或来源证据。其批准绑定到配置文件或发布记录的确切内容标识符(CID)。

插件代码检查保持独立。在激活插件之前,EmDash 会独立验证制品字节是否哈希到已批准的发布校验和,包是否对应其声明的插件 ID 和版本,以及其能力是否与授权确认对话框匹配。

接下来阅读