压缩后要补上下文,用 SessionStart 的 compact 匹配
matcher 写成 ^compact$。自动压缩发生在一轮中间时,钩子给出的 additionalContext 会立刻送进续写,不必等下一句用户输入。
SessionStart 的 source 是 startup、resume、clear 或 compact。仓库根下的示例:
[[hooks.SessionStart]]
matcher = "^compactquot;
[[hooks.SessionStart.hooks]]
type = "command"
command = '/usr/bin/python3 "$(git rev-parse --show-toplevel)/.codex/hooks/session_start.py"'
additionalContextLimit = 5000
压缩后、下一次模型请求前会跑。自动 compact 插在一轮中间时也一样。钩子返回 continue: false 会结束这一轮、不再发请求。
压缩前后还有 PreCompact / PostCompact,matcher 对 manual 或 auto。PreCompact 返回 continue: false 会取消压缩。
命令钩子默认会堵住触发它的操作。async = true 可放到后台;SessionEnd 永远同步,输出也不能转向 agent。相对路径 .codex/hooks/... 在子目录启动会漂,用 git 根锚定。