For AI agents: the complete documentation index is available at https://devcodex-labs.github.io/capability-graph/llms.txt, the full documentation bundle is available at https://devcodex-labs.github.io/capability-graph/llms-full.txt, and this page is available as Markdown at https://devcodex-labs.github.io/capability-graph/concepts/provider-scope.md.

作用域、修订与完整性

可用

有效 Provider 范围是三层集合的交集:

hostAllowedProviders
∩ integrationEnabledProviders
∩ requestProviderScope(若提供)

请求只能收窄,不能扩大宿主或集成配置。V1 的授权粒度是 Provider 集合;ID 前缀、父节点和分类是查询过滤,不是节点级授权。

“未被 Agent 选择”也不等于“被 scope 拒绝”。能力仍可在目录中被发现,Runtime instanceOf 也可引用它;只有知识查询必须限制在非空已选能力集合内。

Adapter 与 Core 在同一进程中运行,Provider scope 不是进程沙箱。接入层仍需负责用户、租户和项目授权。

例如宿主允许 acme.httpacme.database,集成只启用前者,那么请求加入后者不能扩大范围,会被拒绝。只选择 acme.http 中的 route.validation 是知识选择;同 Provider 的 schema.request 仍可被发现,它不是因此被禁止访问。

故障排查见 配置与作用域

修订模型

Static Revision 是经过完整校验的 Provider 静态快照身份。Runtime Revision 是 Adapter 对运行观察的身份,两者不能互换。

单 Provider 目录查询返回 meta.staticRevision;多 Provider 查询使用 meta.staticRevisionByProvider。后续绑定同一 Provider 的详情、关系、知识或 Runtime 查询可以传 requiredStaticRevision,保证一次任务继续使用同一静态视图。

例如 Acme 的目录返回修订 S1,Agent 选择验证能力后继续用 S1 读取知识。此时作者发布 S2,仍可读取的 previous 允许任务继续用 S1;若 S1 已退休,调用失败并要求重新发现,不能以 provider.version = '0.1.0' 替代 S1。

reload() 只有在新候选完整校验成功后才替换 current。Core 保留 current 和 previous:

  • 刷新失败时,仍可读取的旧 current 保留,并通过 refreshFailed 暴露失败;
  • 指定 previous 修订时可读取前一视图;
  • 更旧或已不可读的指定修订返回 CG_REVISION_MISMATCH
  • 首次加载失败没有旧视图可回退。

Runtime 观察会记录依据的静态修订。仅身份相同但修订变化,不自动等于兼容。

结果完整性

查询成功不代表返回全集。消费结果时同时查看数据、meta.completenesswarnings 和游标。

状态含义调用方动作
complete当前请求范围内完整可继续业务选择
truncated命中数量或页预算上限使用 nextCursor 续页或收窄过滤
partial某些来源、分组或条目失败保留正常项,检查 warning 和逐项错误

批量查询保留输入槽位,每个 BatchItem 都要检查 ok。单个 Provider 离线不应清空其他来源的合法结果;指定权威修订不可读则是查询级失败。

预算不会通过静默删除 whenToUsedistinction 制造“成功”。无法取得任何进展时返回 CG_BUDGET_EXCEEDED。实践见 处理错误与部分结果