跳到主要内容

DiscussKit 在 ARC 上重新构建

ArcBlock
ProductARCBlockletCommunityUser-Owned Data

ArcBlock Community 已经迁移到 ARC,原有帖子、回复和社区身份继续保留。承载它的 DiscussKit,也已在 ARC(Agentic Realm Computer) 上重新构建。

这次变化不是给旧应用换一个运行环境。新版仍然叫 DiscussKit,也仍然负责帖子、回复和围绕内容发生的讨论,但它与旧版已经是两种不同的实现。旧版是一套功能很多的 Web 应用;新版把身份、数据空间、索引和通用界面能力交给 ARC,DiscussKit 自己重新聚焦于讨论。

这是一次重大更新,也是一场重新分工。新版让社区继续像原来一样使用,同时改变了讨论内容在底层如何保存、归属和复用。

从一次内部 Hackathon 开始

DiscussKit 最早来自 ArcBlock 的一次内部 Hackathon。全团队用一个星期站到开发者的位置上,在自己的 Blocklet Server 上做产品。最初的 DiscussKit 只是一个简单论坛,最后成了那次活动的优胜项目。

论坛本身并不新鲜。真正让这个项目继续下去的,是团队在立项时发现:论坛、博客评论、相册回复、文档批注,以及设计协作里的区域讨论,看起来是不同产品,信息结构却很接近。都有一份主体内容,下面有人回应;回应可以继续产生分支,也可以附着在某个对象或位置上。

Blocklet 的价值正是复用这种共性。我们不想为博客、论坛、评论、批注和相册讨论各自维护一套几乎相同的系统。DiscussKit 因而从论坛扩展为一块可以配置、组合的通用内容与协作部件。

它后来真的成了一个多面手。Blocklet Server 时代的 DiscussKit 曾经同时承载讨论、博客、文档、网摘和网页聊天,也支持板块、标签、全文搜索、回应、权限和操作历史。ArcBlock 主站、团队协作空间和 ArcBlock Community 都使用过它。许多基于 Blocklet Server 部署的网站,常见组合就是 Pages Kit 加 DiscussKit:前者负责页面,后者接住内容、评论与社区。

Blocklet Server 时代的 DiscussKit,同时包含讨论、文档、网摘和其他模块

Blocklet Server 时代的 DiscussKit 界面,来自 2024 年的 Discuss Kit v2.0 发布记录

这种高抽象带来了很大的复用价值,也让 DiscussKit 逐渐承担了太多职责。到了 ARC 时代,我们不想把这只“多面手”原样搬进新架构。

新版先做了一次减法

新版 DiscussKit 回到三个核心形态:讨论区、评论和批注。它管理帖子、回复、分类、回应、搜索和围绕一个对象展开的讨论,不再同时扮演博客系统、文档系统、收藏工具和聊天工具。

静态页面、文章和文档已经成为 ARC Web Device 的基础能力,由 AFS 中的内容和 AUP 页面直接表达。实时消息与讨论有交集,但在数据节奏、通知和扩展方式上是另一类服务,会在 ARC 中单独承载。这样,DiscussKit 可以专注于真正需要复用的讨论能力。

减法之后,DiscussKit 的产品边界反而更清楚:任何 Blocklet 需要一块讨论区、一组评论,或一个附着在内容上的协作表面,都可以使用同一种讨论能力。

这也解释了为什么新版虽然比旧版“少”,却不是一次降级。过去由 DiscussKit 自己承担的许多基础工作,现在已经下沉到 ARC。

从应用自己的数据库,到 ARC 的数据空间

旧版 DiscussKit 是经典的 Web 应用。应用维护自己的逻辑和界面,帖子、评论、标签与权限记录在它自己的数据库里,默认通常是 SQLite。这个模型简单、成熟,也让旧版能够在 Blocklet Server 上长期运行。

难题出现在数据归属和多实例协作上。内容只存在某个论坛实例的数据库里时,实例管理员当然可以管理它,但作者很难同时保有一份属于自己的记录。另一个 DiscussKit 实例想识别同一个作者、引用同一份内容或建立联邦网络,也必须先解决身份、复制、冲突和索引。

新版在 ARC 中声明帖子和评论的数据形状,内容通过 AFS(Agentic File System) 写入空间。可以把三者的关系理解为:ARC 是运行环境,AFS 提供统一的数据资源层,ArcSpace 则把这些数据空间交给用户持有和使用。

当前实现使用 ARC 的 replicated collection。以一篇帖子为例:社区需要一份记录来展示、搜索和管理讨论,作者的用户空间也会保留一份镜像副本。DID 识别作者,ARC 处理权限、复制和索引,DiscussKit 只负责讨论应该怎样呈现与交互。这一数据模型已经为用户副本建立基础,但不代表完整的跨实例迁移和同步体验已经完成。

Blocklet Server 时代ARC 时代
DiscussKit 自己维护应用数据库数据形状声明在 ARC 中,由 AFS 与数据空间承载
身份、权限和搜索由应用逐项集成DID、访问控制与实例索引成为运行环境能力
一个实例保存社区内容社区空间保存社区记录,作者的用户空间保有镜像副本
前端与应用逻辑紧密绑定页面由 AUP 表达,帖子与评论能力可以被其他 Blocklet 复用

数据空间可以包含文件、结构化记录、全文索引和向量索引。开发者面对的是同一套 AFS 资源,不必再为附件、正文、索引和个人副本分别搭一套存储。

这套结构也让我们多年来想做的去中心化社交软件第一次有了实际基础。不同实例之间如何发现彼此、怎样同步、如何处理内容治理和冲突,仍要继续做。当前已经完成的是数据模型的改变:社区保有可管理的记录,作者空间也能够保留副本。

Community 是这次迁移的证明

架构只有放进真实服务才有意义。ArcBlock Community 长期运行在 Blocklet Server 上,也是 DiscussKit 最持续、最复杂的使用场景之一。这里有历史帖子、回复、板块、标签、用户身份和每天继续发生的新讨论。

现在,www.arcblock.community 已由 ARC 上的新版 DiscussKit 承载。原有内容已经迁移,用户仍然可以浏览板块、搜索帖子、登录、发起讨论和回复。对社区成员来说,这应该是一场平滑的迁移;对我们来说,它验证的是另一件事:ARC 不只可以发布静态站点,也可以承载持续写入的 UGC 社区。

运行在 ARC 上的 ArcBlock Community 首页

ArcBlock Community,截图于 2026 年 9 月。

最直接的使用方式就是进入 Community。未登录用户可以浏览公开讨论;登录后可以发表帖子、回复并参与回应。开发者也可以把新版 DiscussKit 作为 ARC Blocklet 的参考实现,查看帖子、评论、复制型集合和 AUP 页面怎样组合在一起。

接下来,讨论可以连接更多能力

旧版 DiscussKit 曾经加入打赏等区块链能力,但这些集成主要由应用自己完成。ARC 改变了这条边界。链能力可以通过运行环境显式挂载,DiscussKit 不必为 ArcBlock Chain、Ethereum 或其他网络各自维护一套独立连接。

这给后续留下了更自然的空间:社区贡献可以关联徽章或 Verifiable Credential;成员资格和访问权可以由可验证凭证表达;适合的场景也可以加入打赏、数字资产或链上记录。这些目前是继续建设的方向,不是本次迁移已经交付的功能。每一项都需要先说明用户授权、数据可见性与内容治理边界,再进入产品。

更近的一步,是继续把讨论变成 ARC 中可复用的应用能力。一个产品页可以带自己的讨论,一个仪表盘里的对象可以被评论,一份文档的某一段可以附着批注,而不必每次安装一套完整论坛。

这一版的边界

这次发布聚焦讨论区、帖子、评论、回应、分类、搜索和原有 Community 内容的迁移。旧版的博客、文档、收藏和聊天模块没有被原样放进新版 DiscussKit;它们分别由 ARC Web Device 或后续独立能力承接。

用户空间的镜像副本已经进入新版的数据模型,但完整的跨实例联邦体验仍在继续实现。与区块链、可验证凭证和数字资产有关的更丰富互动也仍是后续方向。我们会用实际可用的功能逐项展示。

新版 DiscussKit 仍然让人围绕内容展开讨论。不同之处在于,它不再需要自己背着数据库、身份、索引和整个内容平台一起走。讨论能力可以附着在产品页、应用对象或文档段落上,而不必为每个场景重新搭一套论坛。

这一次,DiscussKit 更小了。它可以进入的地方反而更多。

相关链接

本页涉及

产品

  • ARC active

    Blocklet 的运行时。它给开发者一个地方来运行以 Blocklet 描述的应用,连同那个 Blocklet 声明自己需要的资源。

  • ARC Space active

    与一个 DID 关联的数据空间。可以建一个个人空间,也可以按某项任务所需的权限和数据模型接入一个应用。

  • DiscussKit active

    在 ARC 上重新构建的可复用讨论组件,支持帖子、评论、分类、回应和搜索,现已承载 ArcBlock Community。

术语

  • AFS

    AFS(Agentic File System)把与任务有关的文件、服务和正在进行的工作组织成可查看的资源视图。它不是把一整台机器或一堆 API 交给 agent,而是给任务一块有名字、有边界的工作范围。

  • AUP

    AUP(Agentic UI Protocol)先表达应用要呈现什么、可以做什么;运行时再根据设备能力呈现合适的部分。重点不是复刻同一张屏幕,而是让同一项应用保留自己的内容和动作。

  • Blocklet

    Blocklet 是 ARC 的可部署单元。它把应用声明的内容、配置和运行需求放在一起,让开发者面对的是一个清楚的应用单位,而不是散落在不同位置的部署线索。

  • DID

    DID 是一种数字身份标识。它帮助持有者和验证方确认某个身份由谁控制,也让一项声明有明确的关联对象。账户、登录和授权各自仍有自己的角色。