Registry 是 Huoban 的字架:声明对象来源和索引范围,让 Skill、Adapter、Flow、Profile、Policy、Artifact 和 Trust 可以被发现、校验和复用。
它不是 marketplace,也不是对象仓库。Registry 不托管对象、不发布对象、不排序推荐对象、不选择对象,也不证明对象可信。
本页是扩展对象概念页,解释 Registry 的设计边界和使用模型;字段级定义、必填项和 schema 约束见 Registry 规范。
Registry 不是 marketplace
Registry 的第一性职责是声明对象来源和索引范围,而不是建设分发平台。
| 对象 | 职责 | 不承担 |
|---|---|---|
Registry | 声明从哪里发现对象、索引哪些 kind、应用哪个 trust policy。 | 不托管对象,不排名推荐,不选择对象,不证明可信。 |
Skill | 声明 Huoban 原生或已标准化能力。 | 不声明对象从哪里被发现。 |
Adapter | 声明外部能力如何进入 Huoban。 | 不管理对象来源集合。 |
Trust | 记录来源、review、level、signatures、sandbox 和 policyRefs。 | 不替代 Registry 的发现范围。 |
Run | 锁定一次执行实际使用哪些对象。 | 不扫描来源,不维护对象索引。 |
Registry 是字架,不是市场;是发现入口,不是分发平台。
Standard Extension
Registry 属于 Standard Extension,不是 Core。
最小 Huoban 链路可以不依赖 Registry:手动引用 Skill、Profile、Flow、Run 和 Checkpoint,就能验证协议对象链路。进入复用、跨项目导入、对象发现和生态共享后,Registry 才成为基础设施对象。
这个边界很重要:Huoban 先定义可验证对象,再定义对象如何被发现;不是先建设 hosted registry。
sources
v1alpha1 的Registry.spec.sources[].type 只支持以下值:
| source type | 语义 | 常见定位字段 |
|---|---|---|
local | 本地目录或文件来源。 | path |
git | Git 仓库来源。 | url |
http | HTTP 可访问来源。 | url |
mcp | 通过 MCP 暴露的对象来源。 | url |
path 或 url。当前 schema 没有 auth、branch、version、priority、cache、signature 或 credentials 字段,不能把这些写成已经受支持的 Registry 能力。
index.includeKinds
index.includeKinds 是索引范围过滤,不是实际对象列表。
- 这些 kind 一定存在。
- 索引结果一定有效。
- 对象已经可信。
- Registry 已经建立 capability 索引。
- 对象有排序、排名、优先级或 fallback。
includeKinds,实现可以按自己的默认策略扫描 source;但不能把默认策略写成 v1alpha1 schema 已经强制规定。
什么应该进入 Registry
进入 Registry 的不是“所有文件”,而是已经能被 Huoban schema 识别、需要发现、复用、校验或治理的对象。| 适合进入 Registry | 不应默认进入 Registry |
|---|---|
Skill | 普通 Markdown 文档 |
Adapter | 临时聊天记录 |
Flow | 未 schema 化的脚本 |
Profile | 未审查的公司内部实践笔记 |
Policy | 工具缓存 |
Run | runtime 日志 |
Checkpoint | 不能被 Huoban kind 识别的文件 |
Artifact | 一次性 scratch 内容 |
Trust | 任意外部网页 |
与 Trust 的边界
Registry 声明来源,Trust 判断来源或对象是否可信。
Registry.spec.sources只说对象从哪里被发现。Registry.spec.trustPolicyRef只引用信任策略。Trust记录对象或来源的信任等级、review、signatures、sandbox 和 policyRefs。- Registry 不因为收录某个对象就让它可信。
- Registry 不替代 Policy;Policy 仍决定副作用、审批和权限边界。
与 Skill / Adapter 的边界
Registry 发现对象,Skill / Adapter 声明能力。
| 对象 | 回答的问题 |
|---|---|
Skill | 这个标准能力是什么?输入、输出和 side effects 是什么? |
Adapter | 这个外部能力如何映射到 Huoban capability 和边界? |
Registry | 从哪些 source 能发现这些对象?索引哪些 kind? |
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 可以包括:
| condition | 语义 |
|---|---|
RegistryLoaded | Registry 对象已被读取。 |
SourceIndexed | 某个 source 已被索引。 |
SourceUnavailable | 某个 source 不可访问。 |
TrustPolicyApplied | trust policy 引用已被处理。 |
ObjectInvalid | source 中存在不符合 schema 的对象。 |
安全边界
Registry 扩大可发现性,也扩大攻击面。 安全边界是:git、http、mcpsource 都可能引入不可信对象。- Registry 收录对象后,仍需要 schema validation。
- 执行相关对象仍受
Trust和Policy约束。 - 导入自然语言文件或外部 tool 时,应先通过
Adapter,不要直接当成 trustedSkill。 trustPolicyRef是引用,不是内联完整信任策略。- Registry 不应绕过 review。
结构示例
examples/registry/local-registry.yaml。它展示的是本地 Registry:从 ./examples 发现 Huoban 对象,并限制索引的 kind 范围。它不声明远程托管、不声明对象可信,也不决定执行时使用哪个对象。