压缩后要补上下文,用 SessionStart 的 compact 匹配

matcher 写成 ^compact$。自动压缩发生在一轮中间时,钩子给出的 additionalContext 会立刻送进续写,不必等下一句用户输入。

SessionStartsourcestartupresumeclearcompact。仓库根下的示例:

[[hooks.SessionStart]]
matcher = "^compact
quot; [[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 / PostCompactmatchermanualautoPreCompact 返回 continue: false 会取消压缩。

命令钩子默认会堵住触发它的操作。async = true 可放到后台;SessionEnd 永远同步,输出也不能转向 agent。相对路径 .codex/hooks/... 在子目录启动会漂,用 git 根锚定。

来源