跳到主要内容

ARC 2.0.0-beta.28

数据与 AFS

从 Blocklet 使用 AFS 路径、mount、seed 与集合声明,而不把产品契约绑到某个存储引擎。

对 Blocklet 而言,AFS 是公开数据边界:路径、操作与声明的能力。Provider 内部可用文件、SQLite、对象存储或远程服务。那不是应用契约。

本页覆盖 Blocklet 侧集成。核心 AFS 操作与 provider 编写见 AFS 文档板

Blocklet 如何对接 AFS

机制声明位置角色
Package 文件只读树构建进 dist/.afs/manifest.json静态 package 资产可寻址
mountsblocklet.yaml在绝对 target 挂接 provider
seed/package 目录 + 可选 instance.seedinstance 数据首次初始化
replicatedblocklet.yaml集合所有权/复制契约
sites.bindingsblocklet.yamlHTTP 路径 → AFS 路径 + AUP 页
networkReadblocklet.yaml允许对选定 /instance/** 的网络源读取
indexblocklet.yaml在声明路径上建索引域

Package 树 vs /instance

路径族含义
Package 根 / /packages 投影某版本下不可变的应用资产
/instancepackage 需要时的 instance 作用域数据空间
/user / 调用者叠加scope 与 session 模型需要时的用户数据

arc blocklet build 会报告 instance 姿态:

text
# basic
instance: stateless

# minimal-app
instance: requires /instance DID Space

规则:

  1. package 需要 /instance 且未绑定真实 DID Space 时,有状态能力必须 fail closed——不要把 seed 文件冒充活 instance space。
  2. seed/ 是初始化输入,不是首次运行后的绑定 instance DID Space 替代品。
  3. 静态或壳页面本地 HTTP 200 证明 /instance 写入成功。

Mounts

只声明 package 使用的 provider:

yaml
mounts:
  - uri: "ash://"
    target: /ash
    required: true
bash
arc blocklet dev ./demo-min
# Mount: agents/app-agent → /agents/app-agent
# Mount: pages → /pages

Seed 与 settings

完整 app recipe 会生成 seed/settings/…。把它们当作 instance 初始化的 package 默认值。改 seed 改 package;改线上 instance 设置改 instance 数据。

Replicated 集合(参考形态)

Discuss Kit 在 replicated: 下声明 posts/comments/anon 等集合。这是复制型讨论数据的参考实现——不是旧产品全量平台化的证明。

Discuss Kit 谱系。只读参考 ARC 树中的 blocklets/discuss-kit/blocklet.yaml

绑定:URL → AFS → 页面

yaml
sites:
  - name: discuss-kit
    domains:
      - discuss-kit.localhost
    bindings:
      - id: posts-list
        path: "/posts"
        afs: "/instance/app/content/posts"
        page: index

纯 Web Device 静态站优先 .route/web + pages/,见 构建第一个站点

继续读 AFS 板

需要AFS 页
操作与能力边界核心契约
list vs query vs search搜索与查询
Provider 编写编写 provider
本地检查命令本地检查

硬边界

不做
经 AFS 路径寻址数据把特定 SQL schema 当公开 API
声明 package 需要的 mount不理解 scope 就挂 host 全局路径
明确标注依赖 /instance 的功能声称仅 seed 即可证明多用户 instance 数据
操作目录链到 AFS 板在本板复制完整 AFS op 参考