GateDecision
门面决策:decision 三态 + 决策来源(全部落审计,见 protocol DecisionSource)
adjudication?
Section titled “adjudication?”optional adjudication?: { chain: readonly AdjudicationChainEntry[]; childAgentId: string; childDescription: string; endorsed: boolean;};派生裁决链语境:子代理 ask 经父裁决后 endorse/escalate 上升到用户终审时,执行器把逐级裁决留痕挂在此位—— 终审弹卡呈现完整责任链(「父 X 为子 Y 的操作 Z 担保,理由 W,责任人 X」)。仅裁决链路径携带;主代理直接询问恒缺省。
chain: readonly AdjudicationChainEntry[];逐级裁决条目(单层派生恒一级;递归派生为多级)
childAgentId
Section titled “childAgentId”childAgentId: string;发起 ask 的子代理身份(弹卡「子 Y」位)
childDescription
Section titled “childDescription”childDescription: string;派生时的任务标签(弹卡语境:这个子代理是干什么的)
endorsed
Section titled “endorsed”endorsed: boolean;true = 父担保上报(endorse);false = 父不能决上升(escalate)
classifierAdjudication?
Section titled “classifierAdjudication?”optional classifierAdjudication?: AdjudicationChainEntry;分类器裁决意见段(审计词表归一):引擎真实模型 咨询归一意见后经装配层网关透传至此(结构与 kernel permissions/ types.ts 的 PermissionAdjudicationEntry 同构——本目录不 import permissions/,结构兼容由装配层保证,sourceLayer 同例)。执行器把本段 并入决策记录 adjudicationChain(与 Task 链共存时分类器条目在前); 纯审计位,恒不参与执行语义;不进 tool.permission.decided 事件。
decision
Section titled “decision”decision: PermissionDecision;matchedRule?
Section titled “matchedRule?”optional matchedRule?: string;命中的规则原文(contract-v0.2):引擎侧 PermissionDecisionResult.matchedRule 的透传位,调度器原样落进 tool.permission.decided 事件体;无规则命中(模式短路/兜底 ask)时缺省。
reason?
Section titled “reason?”optional reason?: string;裁决理由(自由文本;恒不进 tool.permission.decided 事件,契约零改动)。
- deny(deny-and-continue;source=‘classifier’ 的收紧、hook 收紧、 hard-safety 等):调度器把理由并入 isError tool_result 文本回喂模型—— 模型据此调整路线继续本轮;
- ask(姿态 rejectEffect=‘ask’;source=‘classifier’):裁决人
判为危险但升到询问面——调度器把本决策整体作 askUser 第三参
decision透传,询问面据reason呈现「裁决人判为危险:…」供用户 终审;该 ask 终局为 deny(用户拒 / 无询问通道地板)时理由同样进 deny-and-continue 文本(拒绝 ≠ 信息灭失)。非分类器 ask 无本键。 引擎侧 PermissionDecisionResult.reason 经装配层网关(cli permission-gate / sdk permission)逐出口透传至此。
source
Section titled “source”source: DecisionSource;sourceLayer?
Section titled “sourceLayer?”optional sourceLayer?: "user" | "policy" | "projectLocal" | "projectShared";命中规则所在层(归因;仅规则命中携带)。字面量联合与 kernel permissions/types.ts 的 RuleLayerName 逐字对齐——本目录不 import permissions/(分层铁律),结构兼容由装配层保证。询问面据此 显示项目来源(仓库 deny/ask 即时生效,但用户须看见是谁在约束)。
updatedArgs?
Section titled “updatedArgs?”optional updatedArgs?: Record<string, unknown>;入参替换(PreToolUse hooks 的 updatedInput): 存在时调度器以此覆盖 call.args 执行(询问对话框同样展示替换后入参, 用户看到的即将执行的真实参数)。仅门面(L4 装配)可产出;引擎侧无此位。
本文是否有帮助?
感谢反馈,我们会持续改进这篇文章。