AT Protocol 推出 Spaces alpha:讓一向「全公開」的資料協定第一次長出私密房間
AT Protocol Blog · 2026-08-20
Bluesky 團隊的 Daniel Holmgren 於 2026 年 8 月 20 日在官方部落格發表 AT Protocol Spaces alpha,這是 atproto 自問世以來最大的一次擴充。對應的規格提案 0016-permissioned-data 同步公開,並附上參考實作分支與範例應用。核心目的是讓協定第一次支援非公開資料,而不破壞既有的可攜身分與去中心化特性。
背景
要理解這次擴充的意義,得先知道 atproto 的資料倉庫(repository)模型:每個帳號對應一個 DID(去中心化識別碼),資料實際存放在使用者選擇的 PDS(Personal Data Server)上,PDS 用 Merkle Search Tree 組織記錄並以使用者金鑰簽署每次變更,讓資料可驗證、可攜帶到別的 PDS。這個設計的前提是「一切公開」——任何人都能抓取、驗證你的倉庫內容,這也是 Bluesky 等應用得以去中心化運作的基礎。問題在於書籤、草稿、訂閱制內容、封閉社群這類場景天生就不該公開,過去 atproto 對此無能為力。
規格細節
Spaces 的設計是在每個使用者的 PDS 上,為每個「空間」另外開一份permissioned repo(受權限管控的倉庫),用三元組識別:空間權威(一個 DID)、空間類型(NSID)與空間鍵(skey 字串)。定址方式改用專屬 URI 格式,明確與公開資料的路徑區隔:
at://{spaceDid}/space/{spaceType}/{skey}/{authorDid}/{collection}/{rkey}空間類型透過 Lexicon 宣告,例如:
{
"type": "space",
"description": "A discussion forum",
"key": "any",
"name": "AtmoBoards Forum",
"collections": ["com.atmoboards.thread", "com.atmoboards.reply"]
}權限並非逐筆記錄授權,而是以空間為邊界的全有或全無,透過 OAuth space: scope 字串(可帶 authority、skey、collection、action、manage 等參數)宣告可讀寫的空間與集合。每個 PDS 都必須實作 com.atproto.simplespace 作為預設的空間建立與成員管理介面,提供:
createSpace/updateSpace/deleteSpace/getSpace- 成員清單管理(policy 可設 member-list、public 或 managing-app)
- App 存取控制(open 或需 client attestation 的 allowList)
同步機制也做了輕量化:permissioned repo 用 LtHash 累加雜湊取代 Merkle 樹作 commit 摘要,簽章採「可否認式簽章」——簽章只覆蓋每次隨機產生的 ikm,倉庫摘要則透過 HMAC-SHA256(mac)綁定,讀者能驗證真偽但無法把簽章轉發成可公開驗證的證明。增量同步靠 listRepoOps 搭配 since revision 參數拉取異動;完整狀態還原則靠 CAR 檔序列化,內含簽署過的 commit 與一份把 {collection}/{rkey} 對應到記錄 CID 的索引。
影響範圍
官方明確強調 Spaces 只做存取控制,不做加密——被授權的成員能讀到空間內所有資料,端到端加密留給應用層自行處理。目前提供的參考實作位於 atproto 倉庫的 spaces 分支,並有範例應用 bulletin 展示封閉討論板等場景。這個 alpha 階段的目標場景包括個人化資料(書籤、靜音清單、草稿)與訂閱制/封閉社群內容,對想在 atproto 生態上做私有功能的第三方應用是重要的新積木。
Hister:把瀏覽紀錄與本機檔案,變成一份你自己掌控的全文搜尋索引
Hister(asciimoo) · 2026-08-23
開發者 asciimoo 持續在 GitHub(同步在 Codeberg)維護 Hister,一套自架的全文搜尋索引,用來把使用者主動選擇保存的網頁與本機檔案內容,全部收進自己控制的資料庫。專案以 Go 1.26 撰寫後端、搭配 npm 前端,採 AGPLv3 授權,官網提供可直接體驗的 demo。它想解決的不是「搜尋全世界」,而是「把我看過、想保留的內容,用得起、找得回」,且不必把資料交給雲端服務或接受背景追蹤。
核心設計
資料進來的管道很多元:Chrome / Firefox 擴充套件可在瀏覽時自動送出頁面內容供索引,另外也支援本機檔案監看、瀏覽歷史匯入與網站爬取四種收錄方式。伺服器端負責內容擷取、斷詞索引與語言辨識,儲存後端可選 SQLite(單機)或 PostgreSQL(多人共用伺服器)。查詢語法支援欄位過濾、片語比對、萬用字元、否定詞、日期區間與查詢別名,另外可選接第三方 embeddings 服務做語意搜尋——但只有在使用者主動設定時,文件文字才會送到該服務。
- 介面:網頁版、終端機 TUI、CLI,以及供 AI 助理串接的 MCP server
- 部署:單機二進位執行檔(
./hister listen,預設監聽127.0.0.1:4433)、Docker compose,或 systemd 常駐服務 - 多人模式:同一台伺服器可服務多個帳號各自的索引
影響範圍
對比商業雲端搜尋或瀏覽器內建的歷史搜尋,Hister 的差異在於索引內容、儲存位置與是否留存都由使用者決定,且原生附上 MCP server,代表可以直接接進 Claude 之類的 AI 助理當作個人知識庫的檢索後端。專案目前活躍開發(GitHub 上累積近兩千次 commit),並維護獨立的 SECURITY.md 安全回報流程,以及 Discord/IRC 社群管道。
原始來源:Hister 官網、GitHub README