外掛註冊表是中央市場的去中心化繼承者。沒有單一機構擁有它或決定哪些外掛被列出,使外掛可被發現的索引——聚合器——是任何人都可以執行的。當您將站點指向註冊表時,管理儀表板會從那裡而不是從市場瀏覽和安裝外掛。
它建構在 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 和版本,以及其能力是否與同意對話框相符。