AFS UI 是把 AFS 资源与能力投影为人类或 agent 可交互之物的架构名称。它回答:给定路径、Provider 与操作,由哪类 UI 设备与合同来呈现?
它不是与 AUP、Web Device 并列的第三套大型 authoring board。交互应用写在 AUP。静态站点写在 Web Device。本页只用于让这些目标与 AFS 对齐。
当前代码里有什么
对照 ARC 源码 44fbd616f 与树内包版本 2.0.0-beta.31:
| 部件 | 包 / 位置 | 今日角色 |
|---|---|---|
| AUP 类型与纯函数 | @aigne/afs-aup(packages/aup) | 语义节点图、校验与降级辅助,供各设备共享 |
| 交互 UI 设备运行时 | @aigne/afs-ui(providers/runtime/ui) | Session、AUP 应用加载、节点存储、事件/exec 连线、web-page surface |
| Web Device provider | @aigne/afs-web-device(providers/runtime/web-device) | 读取站点树(pages、content、.web/)并渲染静态 HTML;可对站点渲染受支持的 AUP shell |
| AFS Provider 基座 | @aigne/afs(packages/core) | 挂载、list/read/write/search/exec、能力与访问模式 |
把 UI 接到 AFS 的 AUP 节点字段包括 src(只读绑定)、bind(读写绑定)、propBind(服务端解析的 prop 路径),以及映射到 AFS exec 的事件。这些字段属于 AUP 合同,不是另一套「AFS UI API」。
架构关系
AFS(路径 + Provider + 操作)
└─ AFS UI(投影视角)
├─ AUP + UI 运行时 → 交互 session / 设备 renderer
└─ Web Device → 静态 HTML 站点与内容对象| 关注点 | 归属 | 说明 |
|---|---|---|
| 路径操作与 Provider 能力 | AFS | UI 不能发明 Provider 未声明的操作 |
| 语义 tree、事件、降级 | AUP | 设备须报告能力;支持面并非处处相同 |
| Session 握手与交互渲染 | UI 运行时(@aigne/afs-ui) | 现在时行为随版本与目标而变 |
| 站点目录、markdown 内容、主题 | Web Device | 与交互 session 协议分离 |
| 站点上的 comments / collections surface | Web Device + UI surface 代码 | 存在平台 surface;不保证每个站点都开启 |
草稿架构文档有、本页没有的主张
内部草稿材料(例如 ARC 仓库中的 docs/architecture/afs-ui.md)描述了更宽的愿景:每个 UI 元素都是 AFS 路径、完整的 /dev/ui 设备模型、窗口管理器、多后端 renderer。把它们当作考古与设计意图。
本公开页只陈述:
- AFS UI 是把 UI 与 AFS 关联起来的有用视角。
- AUP 与 Web Device 才是已文档化的 authoring 与运行时合同。
- 没有公开、带版本的「实现任意第三方 AFS UI 设备」扩展指南,并附有对外部作者保证的 E2E 样例——除非某一专题 board 已对照当前代码写出。
不要推断:
- 每个 AFS path 都有 UI
- 每个 UI 都能经 AFS 写入
- 每个 renderer 支持同一套 primitive
- 旧 ArcBlock 管理 UI 已是稳定 ARC 产品
下一步
| 任务 | Board |
|---|---|
| 编写或校验 AUP 源 | AUP |
| 设备能力与降级 | AUP 设备能力与降级(及相关 AUP 页) |
| 构建静态站点 | Web Device |
| 挂载数据或实现 Provider | AFS |
| 打包应用 | Blocklets |
| Caller 与 session 数据视图 | Identity & Data Spaces |