Adapter 是 Huoban 的异形活字转接件:它把外部 skill、MCP tool、规则文件、团队脚本或工具能力,转成 Huoban 可理解、可排版、可审查的对象声明。
它不是调用桥,也不是 MCP server。Adapter 的职责是声明外部能力如何进入 Huoban:来源是什么、提供哪些 capability、依赖哪些环境事实、输入输出如何映射、声明哪些 side effects、是否建议 checkpoint,以及信任信息在哪里。
本页属于核心概念,解释 Adapter 的设计边界和使用模型;字段级定义、必填项和 schema 约束见 Adapter 规范。
Adapter 不是调用桥
Adapter 的第一性职责是把外部能力标准化,而不是执行外部能力。
一句话:
Skill 是标准活字,Adapter 是异形活字转接件。
与 Skill 的边界
外部SKILL.md、MCP tool、Cursor Rule、团队脚本或内部 workflow 默认不应直接变成 trusted Skill。
Adapter 可以经过 review 后派生或提升为
Skill,但这不是自动过程。导入外部 SKILL.md 时,默认结果应是 Adapter。
与 Tool / MCP 的边界
MCP tool、CLI、API 和内部脚本是外部能力来源;Adapter 是它们进入 Huoban 的标准化声明。
Adapter 不替代 MCP server,也不规定某个工具的调用协议。它只声明:
- 这个外部来源提供哪些 capability。
- Huoban 输入输出如何映射到外部输入输出。
- 可能产生哪些 declared side effects。
- 使用前需要满足哪些 Requirement。
- 是否有 checkpoint hints。
- 信任记录由哪个
Trust对象承载。
mapping 只保留槽位映射,checkpoint 只保留非标准化提示。
source.type: mcpTool 必须带 url 和 tool,用于标识外部来源;实际可用性应另用 requirements[] 中的 mcpTool 声明并通过 Preflight 发现。source identity 与 readiness 不能合并成一个模糊字段。
与 Profile 的边界
Profile 处理“按什么上下文判断”,Adapter 处理“外部能力如何被使用和审查”。
不要把所有 Markdown 都导成 Adapter,也不要把可执行能力塞进 Profile。
与 Policy 的边界
Adapter 声明外部能力可能产生哪些 side effects;Policy 决定这些 side effects 在当前 trust level 下允许、拒绝或需要审批。
Policy.spec.defaults.unknownSideEffect 保守处理;当前 side effect enum 没有 unknown。
与 Run binding 的边界
Adapter 是可复用外部能力声明;Run.spec.bindings 是一次执行中的绑定结果。
Flow声明需要 capability。Adapter声明外部来源可以满足哪些 capability。Run.spec.bindings在一次具体执行中选择 Skill 或 Adapter。Run.spec.snapshot.bindingHash可以记录 binding map。
Requirement 与 Lifecycle provider
Adapter 是声明外部依赖最重要的所有者之一:huoban.dev/stageReporting,Run 再把 handler role 绑定到这个 Adapter。Preflight 检查 capability、binding、Trust 引用和 MCP tool readiness;实际投递仍受 Policy 与执行权限约束。
Adapter 本身不监听事件,也不调度 handler。它只是 provider 的标准声明。详见 Requirement 与 Lifecycle Handler。
与 Trust 的边界
Adapter 可以通过 trustRef 指向 Trust,但 Adapter 本身不证明可信。
Trust 记录来源、level、review、signatures、sandbox 和 policyRefs。外部来源默认应按 unknown level 处理,review 后才可能成为 reviewed 或 trusted。无论 trust level 多高,执行仍受 Policy 约束。
source type
v1alpha1 的Adapter.spec.source.type 只支持以下值:
这些是外部来源类型,不是 Huoban 的自我定位。
harness 只表示某类外部来源可以被 Adapter 标准化,不能把 Huoban 写成 harness。
locator 由 source type 决定:mcpTool 使用 url + tool,文件型来源与 local 使用 path,harness 不携带 locator。任何 path 或 MCP tool 依赖仍必须由精确匹配的 required Requirement 显式声明。
mapping
Adapter.spec.mapping 只表达输入输出槽位的映射约定。
mapping.inputs 和 mapping.outputs 是字符串 map,不是完整转换语言。类型转换、模板执行、参数校验和复杂输出解析属于实现层或未来扩展。
checkpoint 与 fallback
Adapter.spec.checkpoint 是开放结构,只能提供实现或导入时的校对提示:
recommended 和 reason 是当前示例约定,不是 v1alpha1 固定字段。真正的决策边界由 Checkpoint 对象承载。
fallback 不属于 Adapter。替代实现必须在 Run.spec.bindings.<role>.fallback 中显式锁定,这样同一个 Adapter 不会在不同 Run 中隐式改变行为。fallback provider 仍需满足 capability 并通过同一次 Preflight;reference implementation 尚不提供自动切换 runtime。
为什么 Adapter 是顶层对象
Adapter 与其余九个顶层 kind 具有相同的协议地位。实现可以只支持协议对象的一个明确子集;但只要声明支持 Adapter,就必须按 schema 和这里的边界解释外部 SKILL.md、MCP tool、Cursor Rule、团队脚本与内部工具。
没有 Adapter,Huoban 要么只能重写所有能力,要么会把外部自然语言资产误认为原生可信 Skill。
行业语言映射
用当前行业语言看,Adapter 位于 tool adapter、MCP wrapping、skill import 和 capability normalization 的交叉点。
Huoban 不要求已有生态全部重写成原生对象。Adapter 让外部能力先进入同一套对象模型,再逐步 review、标准化和复用。
结构示例
examples/adapters/grill-me-skill-md.yaml。它展示的是 SKILL.md 导入后的 Adapter:声明来源、能力、映射、副作用、checkpoint hint 和 trust 引用。