Skip to content

Latest commit

 

History

History
53 lines (39 loc) · 3.09 KB

DESIGN.md

File metadata and controls

53 lines (39 loc) · 3.09 KB

DESIGN.md

当前版本:0.1.1(唯一真源为 package.json)

1. 产品定位

一套自建 any-sync 网络 + 自研 userDomain 客户端的研习与验证工程:

  • 网络侧:从源码拉起协调节点、共识节点、同步节点、文件节点,形成可复现的本地网络;
  • 客户端侧:不依赖 anytype-heart,自己实现「用户域 → 库 → 信息对象」的读写与自举。

2. 核心概念(用户视角)

概念 用户理解 系统对应
用户域 我的空间,一个身份下的总容器 any-sync 的 Space(spaceId + readKey)
库 用户域里的一个分类容器,例如「产品库」 空间内一棵派生根树
信息对象 库里的具体一条内容 空间内一棵独立对象树,载荷 lib 指向所属库
库注册表 记录“这个用户域有哪些库”的清单 空间内一棵派生根树,变更即登记

3. 主要用例

  1. 建立用户域:生成 12 词助记词 → 派生密钥 → 在网络中创建空间 → 本机记录 spaceId/readKey。
  2. 用助记词登录:清空本地残留 → 握手网络 → 按账户切换到对应用户域 → 全量拉取。
  3. 新建库:用当前密钥创建库树并推送网络,同时在注册表登记。
  4. 写信息对象:在指定库下创建对象树,库树里登记 addInfo。
  5. 删除:删除库(注册表 del)、删除记录(库树 delInfo),都是网络变更;「删除本地数据」只清本地。
  6. 从网络拉取:视本地为空,按 注册表 → 库树 → 信息对象 逐层重建。
  7. 多实例协作:主实例与副本实例(OTHER)共用同一网络,副本定时拉取保持同步。

4. 模块划分

模块 职责
网络层 连接协调节点取配置;与同步节点建 DRPC 连接;接受节点反向流
空间层 建空间(SpaceSign/SpacePush)、读空间(SpacePull)、ACL 头维护
对象层 建根、追加变更、推送、按 ID 拉取、解密
索引层 库注册表树、库树的 addInfo/delInfo 回放
本地存储 用户域记录、库记录与信息对象索引(本地文件,权限 0600)
Web 界面 三栏布局:网络信息 / 操作与库面板 / 用户域历史;底部版本页脚

5. 用户界面(用户视角)

  • 左栏:网络配置与节点清单(只读,便于排障)。
  • 中栏:操作区(生成用户域 / 用助记词登录 / 清空)、库面板(新建库 / 删除本地数据 / 刷新本地 / 从网络拉取)、库卡片(字段定义、信息对象列表、每条记录的删除按钮)。
  • 右栏:用户域历史,点击只把助记词填入中栏,不自动登录。
  • 底部:40px 页脚,显示版本与提交号。

6. 边界与不做的事

  • 不使用 anytype-heart(协议不同、许可证不同),只用 any-sync 的协议与库。
  • 网络只承担“搬运”,不理解库/记录语义;对象类型由应用自定义。
  • 目前不支持跨设备“枚举全部对象”,依赖注册表的确定性推导来定位。