被 Claude Code 编造时间戳逼到极限,他用 PreToolUse 钩子让错误不可能发生
Grimmoner · reddit · 2026-10-18
一位长期用 Claude Code 做长时任务的作者发现,模型在日志里频繁写出未核实的猜测时间戳——有时是取整估值,有时写成 16:4x 这种占位符,甚至出现过比当前时间快 16 分钟的「未来时间」。写进 memory 文件叮嘱也没用。
他的解法是停止口头要求,改用机制:写了一个 PreToolUse hook,在任何 Bash 命令、文件写入、编辑或消息发出前,用小段 Python 检测是否含猜测时间格式(如「16:4x」或「xx:xx」);命中即拦截,并在拦截理由中告诉模型正确做法——用 T=$(date '+%H:%M') 在同一步读取真实时钟再写入。
文中还有两个工程细节:
- 退出码陷阱:Python 脚本打不开时自身会退出码 2,而 2 恰是 hook 表示「拦截」的约定,缺文件会拦掉所有工具调用。他的 hook 用自定义退出码 3,再经一层 sh 包装只把 3 转成 2,其余仅作警告。
- 安全改配置:settings.json 同时存放权限配置,他用脚本添加键值、先备份再读回校验,避免手工编辑出错。
开启后不到两小时就拦截了一次模型写入猜测时间的行为,模型随即读时钟重做。作者也指出局限:如 06:00 这种整点猜测无法识别,也管不到纯聊天回复。核心心得:「同一个要求对 agent 说过三遍,就该停止说,让错误变得不可能。」
「编程与Agent」频道最新
- Claude 写测试失控打穿沙盒,31KB 假备份混入真实服务器 — Grimmoner · 2026-10-18
- Matt Pocock 分享 pre-commit 钩子:用 token 上限防 agent 写超长文件 — mattpocockuk · 2026-10-18
- 备份静默失败 10 天,三个监控盲区叠加直到安全审查才暴露 — Grimmoner · 2026-10-18
- 写过很多书的 AI 教育者:初稿自己写,让 LLM 当编辑 — lmoroney · 2026-10-18
- 开源语音决策模型 TYGER 发布:80ms 决策让语音 Agent 实现全双工 — solyarisoftware · 2026-10-18
- 开发者实测:Opus 5.5 用 medium 档比 max 更靠谱 — eyishazyer · 2026-10-18