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/guides/model-a-provider.md.

建模 Provider

可用

1. 冻结 Provider 边界

先写清 Provider 拥有哪些能力、由哪个权威来源维护,以及哪些执行、认证和规范职责留在接入层。不要用一个 Provider 混合没有共同版本和所有权的系统。

2. 选择稳定身份

为 Provider 和能力选择稳定、Provider 内唯一的 ID。概念替换使用新 ID,不用改描述掩盖不兼容语义。

3. 建立平坦目录

先为每个可独立选择的能力填写 descriptionwhenToUsedistinction。用真实用户意图验证第一轮目录是否足以区分主能力。

选择能力粒度

把候选概念建模为独立能力前,回答四个问题:

  1. Agent 是否会在真实任务中单独选择它?
  2. 它是否有不同于相邻能力的 whenToUse 或限制?
  3. 它能否在不改变身份语义的情况下独立演进?
  4. 详情、关系或知识是否能帮助后续选择?

如果答案多数为否,它更可能是字段、参数或实现细节。不要把每个函数、HTTP 路由实例或配置键建成 Static Capability。反过来,一个节点若同时包含多个互斥意图,目录会失去判别力。拆分时保留主能力,再用 parentsspecializes 表达真实结构。

用至少三个相邻能力做首轮目录评审:只看 namedescriptionwhenToUsedistinction,评审者应能稳定选中目标。不能靠读详情猜出区别时,先修正文案或粒度。

4. 添加显式关系

只声明能解释的 parentsspecializesrelatedrequires。端点必须存在于同一 Provider;不要从名称或文件夹推导边。requires 表达任务必需的上下文,会进入 Selection 闭包,不要用它泛化弱关联。

5. 关联知识和 Runtime

本地文档使用 relative-file;需要检索或远程读取时配置相应 Adapter。Runtime 由独立 Adapter 观察,不把实例写成静态节点。

6. 从公共入口验证

使用 CapabilityGraph.open() 加载真实目录,执行目录、详情、关系、知识和负向 Fixture。直接调用内部校验函数不足以证明接入可用。

参考可运行定义:Seed 端到端示例

用一个任务验证模型

对“给现有 POST /users 增加请求校验”,先仅展示候选摘要,检查能否区分以下概念:

候选是否建成静态能力原因
HTTP 路由注册是,route.http可独立选择,有自己的步骤和限制
路由请求校验是,route.validation意图不同,不能只靠路由注册详情猜测
请求 Schema是,schema.request声明结构与执行校验职责不同
POST /users否,作为 Runtime 实例随项目和环境变化,不是框架的稳定能力
配置中的一个 boolean通常否多数只是某能力的参数,无独立发现价值

预期调用方先选验证,再根据显式关系决定是否需要 Schema,最后读取已选知识。若必须读完所有正文才知道选哪个,先修改 whenToUse/distinction;若 open() 成功但业务分类错误,Core 校验不会代替这一轮语义评审。确认粒度后进入设计关系