跳到主要内容

AFS

核心合同

通过拥有该路径的 provider 所声明的能力,使用 AFS 路径操作。

AFS 暴露的是路径操作。负责该路径的 provider 提供操作及其行为。不要把 API 建模成「每个动词都必须支持」的通用文件系统。

本页证据:packages/core/src/type.tsAFSModuleAFSRoot)、packages/core/src/afs.tspackages/core/src/capabilities/types.tsOperationsDeclaration)、packages/core/src/error.ts,对照 ARC 源码 44fbd616f 与 CLI arc 2.0.0-beta.28

操作族

操作模块方法(core)用途能力边界
listlist?枚举路径下条目选项与列举语义由 provider 定义;不支持的 list 旗标可能是 best-effort
read / batch readread?,可选 batchRead?读一个或多个资源取决于 provider 与路径;visibility: "meta" 只返回元数据
write / batch writewrite?,可选 batchWrite?创建或修改内容路径存在不蕴含可写;mode 含 replace/append/prepend/patch/create/update
delete / batch deletedelete?,可选 batchDelete?删除资源递归与谓词选项取决于 provider/feature
renamerename?在 provider 规则内移动/重命名并非每个 CLI 面都暴露 rename;查 core/API 与 provider
statstat?查看元数据共享结果信封;字段内容由 provider 定义
searchsearch?自由文本检索覆盖与排序由 provider 定义;见 Search and query
execexec?在路径上调用 action需要明确的 action 路径、参数与权限/严重级别策略
explainexplain?报告路径如何解析用于路由与归属巡检
queryquery?(可选)/.actions/query 的类型化集合查询可选且严格;要么完整声明执行,要么不声明

AFSModule 上的可选方法是真实的:省略某方法即未实现该操作。根 AFSRoot 在调度层要求常见 ops,但仍经 mount 能力路由。

能力声明

Provider 通过 OperationsDeclaration 声明操作(布尔或 { supported, features }):

字段说明
readlistwritedeletesearchexecstatexplain核心 op 旗标
query?镜像标准 collection-query action,供工具使用
batchWrite?batchDelete?常被派生;真正 pushdown 需要方法存在 + features.batchPushdown
subscribe?interact?可选事件 / 向人提问能力

子能力 feature 示例:

Feature声明后的含义
write.features.ifMatch通过不透明 meta.version 做乐观并发;必须强制执行或拒绝,禁止静默降级
list.features.orderBy服务端 list 排序
delete.features.where谓词删除

有声明时读取:

bash
arc afs read <mount>/.meta/.capabilities

Access mode 与 visibility

概念取值效果
accessModereadonly · create · append · readwrite约束模块/mount 允许的变更
visibilityfull · metameta:read 只返回元数据;search 被拒绝

不要因为路径能 list 子项就假定 readwrite

错误码(节选)

来自 packages/core/src/error.ts。应用应按 code 分支,不要只依赖英文文案。

CodeClass典型原因
AFS_NOT_FOUNDAFSNotFoundError路径不存在
AFS_UNSUPPORTEDAFSUnsupportedError操作不支持
AFS_VALIDATION_ERRORAFSValidationError参数错误或严格 query/spec 失败
AFS_READONLYAFSReadonlyError对只读面做变更
AFS_ACCESS_MODEAFSAccessModeError违反 mount access mode
AFS_ACCESS_DENIEDAFSAccessDeniedError底层访问拒绝
AFS_FORBIDDENAFSForbiddenError策略禁止
AFS_AUTH_REQUIREDAFSAuthRequiredError变更 action 需要认证
AFS_CONFLICTAFSConflictErrorifMatch 版本不匹配
AFS_ALREADY_EXISTSAFSAlreadyExistsError创建冲突
AFS_MOUNT_FAILEDAFSMountErrorMount 检查失败
AFS_ACTION_NOT_FOUNDAFSActionNotFoundError未知 action

CLI 在 beta.28 上的观察:arc afs read 对缺失路径打印 ERROR: Path not found: …,exit 5

CLI 与 core 面

常见暴露的操作
arc afs(beta.28)lsreadwritedeletestatexecexplainsearchmount
Core AFSModule以上,外加 rename、可选 query、可选 batch pushdown、subscribe

若某操作在 core 类型中有、但 CLI 组没有,使用程序/RPC 面,或检查根 /.actions/* 是否覆盖。见 arc afs

Provider 作者

实现 AFSModule(通常经 AFSBaseProvider 与操作装饰器),只暴露能强制执行的操作,并跑共享 conformance 测试。继续见 Author a provider