Huoban 当前是协议和本地 reference CLI 项目。它不托管 registry,不执行 agent workflow,不派发 Lifecycle Handler,也不调用 MCP tool。
支持版本
报告安全问题
不要在公开 issue、example 或协议反馈中包含 secret、credential、生产数据或私有仓库内容。
发现 CLI 或 schema 的安全敏感问题时,通过 repository owner 私下报告。在建立公开安全联系人前,不要公开 exploit details。
完整准备路径
每一步回答不同问题:
Preflight 不是授权。PreflightReady=True 只记录 reference CLI 在特定 Run.spec 和时刻观察到 declared required dependencies ready。
execute gate
execute Run 必须具有 Run scope 的:
stage scope 的 StagePreflightReady=True 不能授权整个 Run。即使 Run scope readiness 为 True,执行实现仍必须应用:
Policy allow / deny / requireApproval。
Trust source、review、sandbox 和 policy refs。
- unresolved
Checkpoint。
- runner isolation。
- platform permissions 与 user approval。
当前 CLI 没有 execute 命令,因此不会执行这套 gate。
Preflight evidence
Preflight 分开记录:
resolution:引用、generation、capability、binding 或动态 target 是否明确。
readiness:当前环境是否可访问、可执行或可发现。
Preflight report 的 snapshotHash 哈希整个 Run.spec。Preflight 还会重算并比对 flowSpecHash、profileRefHash、policyRefHash、bindingHash 和 inputBindingHash;任一缺失或不匹配都会阻断权威结果。修改 Run spec 后必须重新比较或生成 evidence。
这些 hash 锁定声明与选择,不归档每个 Skill 或 Adapter 的完整内容。文件输入与本地 file-backed Artifact 额外按原始 bytes 校验 SHA-256;无法取回内容的远程 Artifact readiness 保持 Unknown。报告未签名;通过 schema 也不能证明来源、未篡改或时钟可信。
text 与 object 输入会以内联值进入 Run.spec.inputBindings 和 inputBindingHash。不要把 secret、credential 或生产数据作为 inline input;explain 不输出这些值,但 Run 文件本身仍持有它们。敏感输入应使用受控内容引用,并由采用方施加存储、访问与保留策略。
inferred Requirement 如果是 reviewStatus: needsReview,resolution 与 readiness 都保持 Unknown。当前 CLI 没有自动接受或状态迁移。
默认 offline
不传 transport flag 时,Preflight 默认 offline。public npm run preflight 脚本也显式传入 --offline。
offline 会检查:
- object refs 与 generation。
- stage capability 与 Run binding。
- Flow required input、未知 binding、类型匹配与结构化 stage input source。
- 本地 file input 的原始 bytes hash,以及可解析 Artifact input 的 generation、声明 hash 与实际内容。
- local path access。
- executable 是否在
PATH 上。
- credential 环境变量是否存在,但不读取其值到 report。
- Trust 与 Policy refs。
remote context、MCP server、MCP tool 和 MCP resource readiness 保持 Unknown。
--live 网络边界
--live 允许对对象声明的 URL 做有界 discovery:
- remote context 只发送
HEAD。
- MCP 发送
initialize 与 notifications/initialized。
- MCP tool/resource 只通过最多 20 页的
tools/list 或 resources/list 查找。
- 单次请求超时为 5 秒。
- 每个 MCP 响应体最多读取 1 MiB。
- 不调用 MCP tool。
- report message 会去掉 URL user info、query、fragment、常见 credential 形式和远端 MCP error text。
- MCP response 必须满足 1 MiB 上限,并携带与请求完全匹配的 JSON-RPC id;不匹配、缺失或重复响应都不能形成 ready evidence。
把 --live 视为访问不可信、对象可控 endpoint 的网络行为。只在 egress、DNS、proxy 和 local-network access 符合预期 trust boundary 的环境运行。
成功 discovery 只能说明 readiness。它不会让 remote content 可信,不会改变 Trust.spec.level,也不会批准 networkAccess 或 sendMessage。
--at 只为可复现示例和测试提供固定时间。生产实现必须使用可信时钟,拒绝过期 validUntil,并重新比较当前 Run.spec。
任何带 source.path 的 Adapter source 必须有路径完全相同且包含 read 的 required localPath Requirement;MCP tool source 必须有 URL 与 tool name 完全相同的 required mcpTool Requirement。source metadata 不能绕过 Preflight。
Lifecycle 边界
Flow lifecycle 只允许有限事件。Handler 用于观察、上报和清理,不应承载业务状态改变、决策、权限或隐藏的外部能力。
Lifecycle event payload 应保持最小化。除非未来协议显式定义字段和 Policy 边界,实现不应包含:
- prompt 或 chat history。
- Profile 内容。
- secret。
- 完整 stage input/output。
当前仓库只有 schema、binding Preflight、explain 和 invocation status 形状,没有 dispatcher。authored Pending invocation 不会自动执行或迁移。
示例 Policy
下面逐字取自 source tree 的 examples/policies/safe-defaults.yaml:
examples/... 是 Huoban source repo 内的路径,不是文档站链接。
这个 Policy 是协议数据。当前 CLI 会 validate 和 explain 它,但不强制执行规则。
验证命令
涉及 Profile、Policy 或 Adapter 迁移时,再运行:
完整说明见 Preflight 与 Lifecycle。