一、前言为什么会有 ActivityStreams在现代 Web 世界中“事件流Activity Stream”已经成为了许多系统的核心组成部分。无论是 Facebook 的动态、Slack 的消息、GitHub 的提交记录还是企业内部的业务事件如“用户下单”、“任务完成”都可以抽象为一条“活动Activity”。问题在于不同平台的事件格式完全不同。一个“点赞”事件在 Facebook、Twitter、LinkedIn 上的结构都不一样。这就导致了系统间数据共享、事件订阅、聚合分析的复杂性。于是W3C 提出了一个统一的标准 ——ActivityStreams 2.0二、W3C ActivityStreams 标准简介ActivityStreams 2.0是由 W3C Social Web Working Group 制定的开放标准它定义了一种统一的数据模型和JSON-LD 格式用于描述社会化活动social activities。W3C 的定义非常清晰ActivityStreams provides a JSON-based vocabulary to describe activities in a social system — who did what, to whom, and with what result.换句话说ActivityStreams 关注的就是谁actor对什么object做了什么verb/action三、核心理念Activity Actor Verb ObjectActivityStreams 的核心抽象就是一个Activity 对象。一条 Activity 就是一件“发生的事”。一个典型的例子如下{context:https://www.w3.org/ns/activitystreams,type:Like,actor:https://example.org/user/alice,object:https://example.org/post/1234,published:2025-10-17T09:00:00Z}这条记录的语义是Alice 点赞了帖子 1234。在这条简单的 JSON 中你已经能看到 ActivityStreams 的三大核心字段字段含义type活动类型Like、Create、Follow、Announce…actor发起者通常是用户或系统object目标对象可以是文章、图片、视频、评论等四、ActivityStreams 的数据模型ActivityStreams 的模型体系非常优雅它将社交世界抽象为几类核心对象Object对象所有可以被操作的东西都是 Object。例如Note笔记、Image图片、Article文章、Video视频等。{type:Note,name:Hello world,content:My first post!}Actor行动者发起活动的实体可以是人、群组、应用或组织。{type:Person,id:https://example.org/user/bob,name:Bob}Activity活动描述 Actor 对 Object 所做的行为如 Create、Like、Follow、Delete 等。{type:Create,actor:https://example.org/user/bob,object:{type:Note,content:This is my first post!}}典型应用场景场景示例描述社交网络Mastodon、Misskey用户发布、点赞、关注的事件流企业内部事件总线微服务架构统一描述“谁做了什么”业务事件数据聚合平台Feedly、Zapier跨系统聚合不同来源的活动审计与日志系统安全或监控日志抽象系统行为为 Activity 对象