@aigne/afs-did-space 把 DID 作用域持久化存储实现为 AFS provider。一个 principal DID 对应一个 DID Space。服务或 blocklet 只占用该空间内的 path 前缀,而不是获得第二套平行存储产品。
包入口
| 导入 / 入口 | 作用 |
|---|---|
@aigne/afs-did-space | 包根 |
@aigne/afs-did-space/local | Node 本地 provider(DIDSpace)— 文件系统对象 + SQLite 元数据 |
@aigne/afs-did-space/cloudflare | Cloudflare provider — D1 索引 + R2 对象 |
@aigne/afs-did-space client / transports | 把远程或静态视图挂成 AFS 模块 |
源码中的包描述:AIGNE AFS provider for DID-scoped persistent storage with CID-based content deduplication。
Instance 下的角色前缀
对 instance 片段,本地 provider 要求角色为 system 或 user,并在 principal 的 blocklet 空间下构造角色前缀:
{principalDid}/blocklets/{instance-did}/system/... # 安装方 / instance 拥有
{principalDid}/blocklets/{instance-did}/user/... # 该 principal 作为调用者的用户数据getInstanceSpace({ instanceDid, role }) 拒绝其它 role 字符串。角色内容树直接落在角色根(没有额外 files/ 包装层)。config/ 是 provider 内部 sibling,不出现在 blocklet 的 /instance 视图里。
用 CLI 检查时,这些前缀表现为逻辑 AFS 路径:
/spaces/<user-did>/blocklets/<app-did>/system
/spaces/<user-did>/blocklets/<app-did>/userarc space path 会打印这些片段。见 检查本地空间。
最小本地挂载示意
import { DIDSpace } from "@aigne/afs-did-space/local";
const space = new DIDSpace({
rootPath: "~/.afs/spaces",
userDid: "did:abt:z1...",
});
const afs = await space.getInstanceSpace({
instanceDid: "did:abt:z1blocklet",
role: "system",
});
await afs.write("/hello.txt", { content: "hello" });这段示意只说明 provider 边界,不是完整部署配方。在运行中的 blocklet 内,优先使用 session 视图(/user、可选 /space),而不是在应用 UI 代码里重做挂载选择。
Transport 能力并不相等
connectDIDSpace 接受 transport 类型 http、ws、static-readonly。客户端会剥离 transport 不支持的操作,让 AFS 路由看到 undefined 方法,而不是远程意外失败。
| Transport | 默认访问模式 | 当前客户端剥离或不支持的操作 |
|---|---|---|
ws | readwrite(除非覆盖) | transport 实现完整时转发完整操作集 |
http | readwrite(除非覆盖) | 不支持 stat、search、exec、explain |
static-readonly | readonly | 不支持 search、exec;write / delete 按 access mode 剥离 |
不要把「已挂进 AFS」理解成每个视图都能读、写、搜索、执行。针对所选 transport 实际暴露并测过的操作来写 Blocklet。
本地与 Cloudflare 后端也共享内容寻址对象(.objects/{cid})、树索引与 conformance 套件。后端选择本身不会抹平 transport 能力差异。
本页不规定什么
- 把某一种物理后端当作唯一支持的部署方式。
- 公共 CDN、默认匿名分享,或「把整个空间开放到互联网」的行为。
- 完整的远程 import/export 运维手册(
arc space有云端子命令;它们依赖具体环境鉴权,本页未复跑)。 - Instance DID 生命周期或 VC trust 门。
要了解 session 可见路径,继续看 Session 数据。本地 CLI 检查见 检查本地空间。