跳转到内容

ToolContext

工具执行上下文:由调度器在每次 execute 前注入——工作目录、取消信号、事件发射口、 会话级文件读取状态,以及若干可选的注入缝(fs 世界、检索聚合器、裁决语境、记忆写回)。

optional adjudicationAncestors?: readonly ParentAdjudicator[];

本执行器的裁决人链(递归上升):子代理执行器在场时 由调度器注入([直接父, 祖父, …] 由近及远,各级持自己的派生时点快照)。 Task 工具派生下一级时以 [本级新裁决器, …本链] 延长——孙的 ask 经 子→主逐级上升。主执行器恒缺省(子链即单级)。


cwd: string;

emit: (body) => void;

发结构化事件(tool.progress / tool.output.delta 等),包络由调度器补

EventBody

void


optional executionTarget?: ExecutionTarget;

由原调度器给定的受信执行目标;缺资源时禁止宿主回落。


fileReadState: Map<string, FileReadState>;

会话级共享:path → 读取状态


optional fs?: FsLike;

执行世界 fs 缝:工具的一切文件系统副作用经此面(缺省 defaultFs = node:fs/promises 直通薄壳,行为与直用逐字节一致)。可选—— 直调/最小执行器缺省时工具以 fsOf(ctx) 落缺省世界;调度器恒注入。 权限判定不经此面(gate.decide 恒先于工具 execute,红线 3)。


optional memoryWrite?: MemoryWriteContext;

记忆写上下文:门开时调度器自 执行器选项透传——Write/Edit 据此触发真实目标含入复核、写前秘密扫描 与索引写后体检。缺省 = 门关,工具行为与现状逐字节一致。


optional readjudicate?: (args) =>
| GateDecision
| Promise<GateDecision>;

派生目标重裁缝:工具在执行中途得到新的目标(WebFetch 的 3xx Location、后续同类派生面)时,以替换后的 args 请求门对同一 tool_use_id 重裁—— 调度器注入为 gate.decide({...call, args}, { derivedTargetRedecide: true })(同一 gate、跳过副作用面与裁决人咨询,只走引擎规则 / egress 判定)。可选——直调 / 无门 执行器缺省时工具按各自纪律 fail-closed(WebFetch:跨域跳转一律拒)。

Record<string, unknown>

| GateDecision | Promise<GateDecision>


optional registerResource?: (work) => void;

Retain a nested query’s actual cleanup; this does not delay its business result or cancel it.

Promise<QuerySettlement>

void


optional searchAggregator?: GrepRoundAggregator;

检索轮次聚合器:调度器会话级注入,Grep 工具 逐调用记样本;可选——直调场景可缺省,埋点静默不记。


signal: AbortSignal;

optional toolCallId?: string;

本次调用的 toolCallId(contract-v0.1 增补):由调度器注入, 工具据此构造 tool.progress / tool.output.delta 负载。可选——直调场景可缺省。


optional transcript?: () => readonly IRMessage[];

当前查询消息的快照 getter:调度器从 ToolExecutionContext 透传;Task 工具在派生时点调用一次,冻结「父上下文快照」作派生裁决链 的裁决语境。可选——直调/最小执行器缺省时 裁决链静默不可用(escalate 语义不受影响,只是无从起裁决查询)。

readonly IRMessage[]


optional turnId?: string;

原查询轮身份;远端精确重试证明使用,不从模型参数推导。