复利工作台阶段 1(Codex hooks)

今天做了什么

  • 复利工作台阶段 1 上线:项目级 .codex/hooks.json(官方 schema,需 /hooks 信任后生效)。
    • SessionStart(startup/clear/compact):自动注入 memory/working.md + 复利指标(累计会话/近7天活跃/本周会话/晋升回链)+ 最近时间流 + session-log 最近行 + 协议提示。
    • Stop(turn 级):按会话尾号在 memory/session-log.md upsert 一行元数据(日期/项目/会话/技能/token/摘要待补),技能按 skills-registry 白名单过滤,token 取 transcript 累计值;只写元数据不写对话内容(隐私边界)。
    • PreCompact(manual/auto):把 working.md + session-log.md 快照到 .codex/snapshots/(gitignored),防压缩丢状态。
  • 约定文件同步:AGENTS.md / memory/PROTOCOL.md / preferences.md / INDEX.md / projects/demoSpace.md / working.md;todo #13 → done。
  • 三个 hook 脚本本地模拟测试通过(SessionStart 输出注入 JSON、Stop 追加/更新行、PreCompact 建快照)。

过程与坑

  • 官方文档确认:SessionStart 注入走 hookSpecificOutput.additionalContext(唯一可注入事件);Stop 只能 systemMessage、不能注入,所以用「每会话一行」日志表而非注入;PreCompact matcher 过滤 manual/auto 触发;additionalContextLimit 超限会被 spill 成预览,本地上下文控制在限制内。
  • 关键修复:session-log 表头从 5 列(日期/项目/做了什么/下一步/经验切片候选)统一为 6 列(日期/项目/会话/技能/token/摘要),Stop 按会话尾号 upsert 并保留人工已补写的摘要;todo 晋升回链从正则解析 todo.data.ts 改为直接扫 site-data/todo/*.md 的 promoted_to 字段(更稳)。
  • PowerShell 5.1 写 UTF-8 带 BOM:所有文件改用 .NET UTF8Encoding(false) 写入,避免 frontmatter/JSON 解析踩坑。
  • 提醒:新 hooks 需在 Codex 里 /hooks 审查并信任后才会运行;信任记录按 hook 定义 hash,改动后需重新信任。

下一步

  • 阶段 2:经验切片工作流(会话→候选→人终审→promote 笔记);日报/周报自动化;skillUsage 由分析器自动生成。
  • 观察 hooks 实际运行(SessionStart 注入量、Stop 行准确性),决定是否把 resume 源也纳入注入。
  • 把 session-log 摘要列从「摘要待补」升级为 Stop 自动抓「做了什么/下一步」草稿(人终审)。