Policy 是 Huoban 的印坊规矩:它声明副作用、审批和权限边界。Policy 与 Profile 分离;上下文提示不是可执行授权。
设计背景见 Policy 模型。
字段
三个条件数组都没有
minItems 或 uniqueItems。when 只要求至少出现一个条件属性,因此 { sideEffects: [] } 能通过 schema;当前仓库没有 rule evaluator 赋予它执行语义。
标准副作用列表见 Skill 副作用枚举。
合法示例
examples/policies/safe-defaults.yaml。
当前 CLI 行为
从 Profile 派生
derive policy。它读取第一个 name: risk layer 的非空 data.requiresApproval 数组,去重后生成一条 requireApproval rule,并设置:
PolicyDerived=True 与 PolicyNeedsReview=True。生成结果需要 review。
Explain 与 Preflight
explain 输出 unknown-side-effect 默认值和 rule 摘要。Preflight 只检查 Flow、Run、Profile 或 Trust 关联的 Policy 对象是否可解析;它不匹配 rule、不计算优先级,也不执行 allow/deny/approval。
验证边界
- schema 不定义 rule 顺序、冲突消解、deny 优先级或默认 enforcement 行为。
trustLevels只验证为字符串,不与Trust.spec.level枚举联动。unknownSideEffect字段存在不代表当前 runtime 已检测未知副作用。Run.status.observedSideEffects是执行事实;Policy rules 是声明,两者当前没有 evaluator 连接。PreflightReady=True不是 Policy allow。
相邻概念边界
常见错误
- 声称
deny、requireApproval、allow已有标准优先级;当前 source 未实现 evaluator。 - 在
when中增加路径、命令、模型或正则字段。 - 把
trustLevels误写成单个字符串。 - 把 Profile risk layer 直接当成生效 Policy,而不生成并 review Policy 对象。
- 认为 Policy 引用能解析就表示规则已应用。
- 把 Preflight readiness 当作权限授权。