跳到主要内容

ARC 开发者文档

工具

八个通用 AFS 工具始终存在。三个内容工具只在 blocklet 声明了集合时出现,且它们的 schema 会写明所声明的集合。

一个 blocklet 公布两类 MCP 工具。通用 AFS 工具始终注册。内容工具只在该 blocklet 声明了内容集合时注册,且它们的输入 schema 会写明它所声明的集合。

两类工具走同一个数据面。内容工具是 AFS search、list、read 的包装 —— 它们背后没有第二套存储。

通用 AFS 工具

工具必填其他参数匿名可调
afs_readpathentriesstartLineendLine
afs_listpathdepthpatternlimit
afs_searchpathquerypatternlimitexplain
afs_statpath
afs_explainpath
afs_writepathcontentmodepatchesifMatchentries
afs_deletepathrecursiveifMatchentries
afs_execpathargs

afs_readafs_writeafs_delete 的必填列是空的,因为它们接受二选一:单个 path,或一个 entries 数组 —— 两者必须给其一。请用数组批量提交,不要循环单次调用;afs_read 每次最多接受 16 条 entry。

afs_exec 执行一个已声明的动作。列出 {path}/.actions 即可发现可用动作及其输入 schema。

这些路径与操作的含义、以及某个 provider 实际实现了哪些操作,见 AFS

一个工具被列出、可调用,不代表它在某条路径上会成功:blocklet 的路径策略在调用内部检查。见访问分档

内容工具

工具必填其他参数
search_contentcollectionqueryfilterslocalelimit
list_contentcollectionfilterslocalelimit
get_contentcollectionidlocale

这三个只在 blocklet 声明了集合时出现。没有声明的 blocklet 一个都不注册 —— 这个门是 fail-closed 的,所以不完整或为空的声明不会产生一个集合列表为空的工具。

所声明的集合名会被写进每个工具的描述和 collection 参数,因此客户端在 tools/list 里就能看到,不需要试探。声明了四个集合的 blocklet,其工具描述末尾就是这四个名字的列表。

它们能否被匿名调用,取决于该 blocklet 为集合声明的读取 role。工具名本身在匿名白名单上;工具内部可见哪些集合,在注册时决定。

一个 host 返回哪一组

未声明集合的 blocklet,tools/list 返回八个工具;声明了集合的返回十一个。差别来自 blocklet 自己的声明,而不是调用方的凭证 —— 匿名客户端和已认证客户端看到的是同一份列表。

凭证改变的是这些工具中哪些会响应。见连接客户端

声明集合

声明写在 blocklet 自己的 manifest 里,和它其余的能力放在一起。那个面随 manifest 一起记录,不在本页;见 Blocklets