运维123 - at协议
type: channel
link: https://www.sddts.cn/index.php/tag/at%E5%8D%8F%E8%AE%AE/
items: 社交文件系统 AT 协议技术分析

社交文件系统 AT 协议技术分析
type: item
date: 2026-01-19T01:22:47+00:00
description: 社交文件系统 AT 协议技术分析一、概述1. 文章信息A. 标题A Social Filesystem（社交文件系统）B. 作者Dan AbramovC. 来源overreacted.ioD. 发布时间2026 年 1 月 18 日2. 核心主题本文探讨了如何将传统文件系统的理念应用到社交网络中，介绍了 AT 协议（Authenticated Transfer Protocol）如何实现数据与应用的分离，让用户数据真正归属于用户而非平台。二、背景分析1. 传统文件系统的优势A. 数据归属文件不属于创建它的应用程序，而是属于用户。用户可以检查文件、发送给朋友、用其他应用打开。B. 文件格式的作用文件格式就像一种语言，应用可以"说"多种格式，同一种格式可以被多个应用理解。应用和格式是多对多的关系。C. 应用无关性我们的记忆、思想、设计应该比创建它们的软件更持久。应用无关的存储（文件系统）强制实施这种分离。2. 社交应用的现状问题A. 数据被困在 Instagram、Reddit、Tumblr、GitHub、TikTok 等社交应用中，用户数据被困在应用内部，无法自由迁移。B. 应用主导传统模式是应用主导，用户的数据存储在应用的服务器上，由应用控制。C. 缺乏互操作性不同社交平台之间数据无法互通，用户需要重复创建内容。三、核心理念：社交文件系统1. 万物文件夹概念假设有一个文件夹包含你的在线角色所有发布过的内容：你的帖子、点赞、音乐播放记录、食谱等，可以称为"万物文件夹"。在这个世界中：在 Tumblr 发帖会在你的文件夹中创建一个"Tumblr 帖子"文件在 Instagram 关注会在你的文件夹中放入一个"Instagram 关注"文件在 Hacker News 投票会在你的文件夹中添加一个"HN 投票"文件2. 文件作为真实来源文件是真实来源，应用只是反映文件夹中的内容。对文件夹的任何写入都会同步到相关应用。删除"Instagram 关注"文件与应用中取消关注效果相同。3. 应用反应式设计在这个范式下，应用对文件是反应式的。每个应用的数据库主要成为派生数据——应用特定的缓存物化视图，反映所有人的文件夹。四、AT 协议架构1. 系统组成graph TB User[用户] --> owns[拥有] owns --> Repo[Repository 仓库] Repo --> contains[包含] contains --> Collection[Collection 集合] Collection --> containsRecord[包含] containsRecord --> Record[Record 记录] Repo --> hostedBy[托管于] hostedBy --> PDS[Personal Data Server] PDS --> syncWith[同步] syncWith --> Relay[Relay 中继] App1[App 1] --> subscribes[订阅] subscribes --> Relay App2[App 2] --> subscribes App3[App 3] --> subscribes2. 核心概念A. Record（记录）记录是社交文件系统的基本单位，是一个 JSON 文件。例如一条推文记录：{ "text": "no", "createdAt": "2008-09-15T17:25:00.000Z" }关键原则：只包含用户创建的数据不包含派生数据（如点赞数、转发数）可以独立验证和解析B. Collection（集合）集合是包含特定词表类型记录的文件夹。命名规则采用反向域名表示法：com.twitter.post：Twitter 帖子com.instagram.follow：Instagram 关注fm.last.scrobble：Last.fm 播放记录io.letterboxd.review：Letterboxd 影评graph LR subgraph Collections A[com.twitter.post] B[com.instagram.follow] C[fm.last.scrobble] D[org.schema.recipe] end App1[App 1] --> defines[定义] defines --> A App2[App 2] --> defines defines --> B App3[App 3] --> defines defines --> CC. Repository（仓库）仓库是用户的"万物文件夹"，由 DID 标识，包含集合，集合包含记录：graph TD DID[DID:did:plc:xxx] --> Repo[Repos…