专题/Hook 组合

ADPS 专题研究

Hook 组合 · 把隐藏回调变成可读的控制结构

在生命周期事件上编排治理、观测、恢复与阶段流转,并显式处理顺序、幂等和失败。

Hook 把确定性代码放到 Agent 生命周期的固定事件上。它可以在模型调用前收缩上下文,在工具调用前检查权限,在阶段结束后启动下一位 Agent,也可以记录 trace、保存 checkpoint 或清理资源。

Hook 是机制。具体职责来自它所在的事件、读取的状态、拥有的权限以及失败后的处理方式。

四类职责

类别 典型事件 主要动作
编排 artifact accepted、stage completed 启动下一阶段、路由任务、聚合结果
治理 before tool、before commit 鉴权、策略裁决、审批、限额与参数复核
观测 model/tool/step completed 写入事件、版本、状态差异和外部回执
恢复 failure、timeout、cancel 保存 checkpoint、补偿、回收租约、升级人工

组合图

before_model
  → context_policy
  → prompt_trace

before_tool
  → identity_check
  → policy_decision
  → approval_if_needed

after_tool
  → receipt_capture
  → state_diff
  → next_stage_or_recovery

运行时需要展示最终顺序。两个 Hook 都修改参数时,先后顺序会改变结果;一个审计 Hook 失败时,是阻断业务还是降级记录,也必须提前定义。

以薪酬提交为例:before_tool 先验证调用身份,再读取策略并决定是否需要审批;恢复后,before_commit 重新检查员工状态和 Intent 摘要;工具成功后,after_tool 保存回执与写后读取。若审计写入失败,系统可以把低风险只读调用降级记录,但生产写入通常应阻断。顺序和失败语义属于 Hook 组合本身,不能依赖插件注册的偶然先后。

HookSpec

hook_id: payroll.before_commit.policy
event: before_tool
priority: 200
reads: [principal, intent, tool_digest, resource_scope]
writes: [policy_decision]
idempotency_key: run_id + intent_digest
on_failure: deny
emits: [policy.decided]
owner: security-platform
version: 7

与 G5 的关系

G5 保留历史编号,聚焦治理中的确定性执行点。Hook 组合覆盖更大的范围,所以不增加新的协作模式编号。若未来出现无法由现有模式和机制说明的独立问题,再讨论目录调整。

常见问题

评审问题

  1. 每个 Hook 由什么事件触发,读写哪些状态?
  2. 顺序和冲突规则是否显式?
  3. 重试、恢复和重复事件是否幂等?
  4. 失败时 fail-open、fail-closed 还是升级人工?
  5. 运行记录能否显示最终 Hook 集合和版本?

来源

治理研讨会明确了策略来源、裁决、执行与证据的分层;协作研讨会补充了阶段流转、跨 Agent 触发和恢复职责。本专题合并两场讨论,G5 继续作为历史与治理入口。

引用建议:ADPS,《Hook 组合 · 把隐藏回调变成可读的控制结构》,ADPS 专题研究,2026-08-26。

专题目录 · 协作研讨会 · CC BY 4.0

溯源记录

来源记录
正文关联的研讨会与案例:协作研讨会
来源日期
本页首次公开

在 ADPS Chronicle 中查看