Registry 是 Huoban 的字架:声明对象来源和索引范围,让十种 Huoban 顶层对象可以被发现、校验和复用。
它不是 marketplace,也不是对象仓库。Registry 不托管对象、不发布对象、不排序推荐对象、不选择对象,也不证明对象可信。
本页解释 Registry 的设计边界和使用模型;字段级定义、必填项和 schema 约束见 Registry 规范。
Registry 不是 marketplace
Registry 的第一性职责是声明对象来源和索引范围,而不是建设分发平台。
一句话:
Registry 是字架,不是市场;是发现入口,不是分发平台。
使用边界
Registry 与其他九个顶层 kind 具有同等协议地位,但不是每条工作链路都必须引用它。手动提供对象的 workspace 可以直接解析 refs;需要跨项目发现、来源索引和复用时,再引入 Registry。
这个边界很重要:Registry 解决“从哪里发现候选对象”,不解决“这次 Run 选哪个对象”,也不意味着必须先建设 hosted registry。
sources
v1alpha1 的Registry.spec.sources[].type 只支持以下值:
每个 source 必须包含
path 或 url。当前 schema 没有 auth、branch、version、priority、cache、signature 或 credentials 字段,不能把这些写成已经受支持的 Registry 能力。
index.includeKinds
index.includeKinds 是索引范围过滤,不是实际对象列表。
- 这些 kind 一定存在。
- 索引结果一定有效。
- 对象已经可信。
- Registry 已经建立 capability 索引。
- 对象有排序、排名、优先级或 fallback。
includeKinds,实现可以按自己的默认策略扫描 source;但不能把默认策略写成 v1alpha1 schema 已经强制规定。
共享结构不进入 includeKinds
Requirement、Preflight Report、Lifecycle Handler 和 Lifecycle Event Envelope 都不是顶层 kind,因此不能写进 includeKinds:
- Requirement 随 Skill、Profile 或 Adapter 被发现。
- Lifecycle Handler 随 Flow 被发现。
- Preflight Report 以
Artifactkind 被索引,并通过spec.type区分。 - Lifecycle Event Envelope 是投递结构,不是可注册对象。
什么应该进入 Registry
进入 Registry 的不是“所有文件”,而是已经能被 Huoban schema 识别、需要发现、复用、校验或治理的对象。
Registry 的价值是标准对象发现,不是文件扫描器。如果什么都扫,Registry 会变成噪声入口。
与 Trust 的边界
Registry 声明来源,Trust 判断来源或对象是否可信。
Registry.spec.sources只说对象从哪里被发现。Registry.spec.trustPolicyRef只引用信任策略。Trust记录对象或来源的信任等级、review、signatures、sandbox 和 policyRefs。- Registry 不因为收录某个对象就让它可信。
- Registry 不替代 Policy;Policy 仍决定副作用、审批和权限边界。
与 Skill / Adapter 的边界
Registry 发现对象,Skill / Adapter 声明能力。
capability 匹配、binding 和执行选择发生在 Registry 之外的解释层、Run binding 流程或 runtime 层,不是 Registry 自己做。Registry 可以让工具更容易找到候选对象,但不自动决定使用哪个对象。
Preflight 可以验证 Run 锁定的对象是否在当前 workspace 中可解析,但当前 reference implementation 不把 Registry 当成自动远程解析器,也不会因 Registry 中存在候选对象而替 Run 选择 binding。
Registry 把活字放上字架;排版时具体选哪枚活字,不由字架决定。
与 Flow / Run 的边界
Flow 声明结构,Run 锁定本次使用的对象,Registry 只帮助发现候选对象。
边界是:
Flow声明需要哪些 capability、stage 和 outputs。Registry提供可搜索或可索引的对象来源。Run.spec.bindings锁定这次实际使用的Skill或Adapter。- Registry 不应改写 Flow。
- Registry 更新后,新的 Run 可以选择新对象;旧 Run 的 snapshot 和 bindings 不应被污染。
Registry 是找字架,Run 是这次实际取了哪些字来印。
与 Artifact 的边界
Artifact 是印张,Registry 是把值得复用或归档的印张归架。
边界是:
Artifact保存产物元数据、contentRef、hash 和 review 状态。Registry可以索引有复用、审查或归档价值的 Artifact。- Registry 不保存 Artifact 内容。
- 普通临时产物不需要进入 Registry。
- 跨项目复用的 Artifact 才值得被 Registry 发现。
hosted registry 不是当前承诺
v1alpha1 的 Registry 目标是本地发现、静态索引、schema validation 和来源边界声明。 当前对象没有承诺:- hosted registry
- marketplace
- 排名和推荐
- 商业分发
- 权限托管
- 版本解析
- 签名分发
- 远程对象缓存
Registry 对象已经支持。
status
Registry.status 使用通用 status 结构。常见 conditions 可以包括:
这些是推荐或常见取值,不是 v1alpha1 schema enum。实现可以通过 validate / explain 暴露对象是否可读、是否符合 schema、是否被 includeKinds 过滤、是否受 trust policy 约束。
安全边界
Registry 扩大可发现性,也扩大攻击面。 安全边界是:git、http、mcpsource 都可能引入不可信对象。- Registry 收录对象后,仍需要 schema validation。
- 执行相关对象仍受
Trust和Policy约束。 - 导入自然语言文件或外部 tool 时,应先通过
Adapter,不要直接当成 trustedSkill。 trustPolicyRef是引用,不是内联完整信任策略。- Registry 不应绕过 review。
结构示例
examples/registry/local-registry.yaml。它展示的是本地 Registry:从 ./examples 发现 Huoban 对象,并限制索引的 kind 范围。它不声明远程托管、不声明对象可信,也不决定执行时使用哪个对象。