正在加载陈远的个人网站

用 Pre-commit 钩子限制 AI 生成文件体积的提示词

Matt Pocock 分享一条提示词:用 pre-commit 钩子拦截超 5000 token 的文件,迫使 Agent 拆分模块、保持代码库整洁。

提示词软件工程提示词Agent 工程研发效能

来源摘录

Prompt of the day: Create a pre-commit hook that prevents files over 5,000 tokens. Tokens = bytes/4. Run only on staged files. Ignore files which are not authored by agents, like lockfiles or codegen. Provide explicit instructions on how to split files in the error message. The simplest investment I ever made in my codebase. So good.

深度解析

是什么:Matt Pocock 的「每日提示词」:让 Coding Agent 编写一个 pre-commit 钩子,阻止超过 5000 token(按 bytes/4 估算)的文件被提交;只检查暂存文件,并排除 lockfile、codegen 等非 Agent 编写的产物;报错信息中直接写明如何拆分文件。他称之为「在代码库里做过的最简单也最值的投资」。

核心设计:四个细节构成闭环——1) 用 bytes/4 近似 token 数,零依赖、钩子内可秒级执行;2) 只扫 staged 文件,把耗时控制在提交路径可接受范围;3) 排除清单避免误伤机器生成文件;4) 最关键的是把「报错」变成「行动指引」,Agent 收到失败信息后能自主完成拆分并重试,形成自我修正回路。

关键洞察:Agent 天然倾向把逻辑持续堆进同一文件,导致上下文膨胀、审查困难和认知负担上升。与其事后重构,不如在提交入口设置硬约束,用一条提示词把架构纪律固化为自动化防线。这是「提示词即基础设施」的典型案例:一次配置,长期约束所有后续 Agent 行为,成本极低、杠杆极高。

边界与风险:5000 token 是经验阈值,对数据、样式或配置文件可能过严;bytes/4 仅为粗估;钩子只能拦提交,无法阻止 Agent 在工作区内继续膨胀文件。落地时应按语言和文件类型微调排除清单与阈值。