改完代码让 Agent 提交,diff 里 package-lock.json 有 8000 行变动。以为它乱动了,查了半天。
原因:项目里既有 package-lock.json 又有 pnpm-lock.yaml。Agent 在根目录跑了 npm install,npm 按 package.json 重新生成了 lock 文件。
两个教训:
- CLAUDE.md 里明确写用哪个包管理器。不写它会挑最熟悉的那个,通常是 npm。
- hook 里禁止改动 lock 文件,除非显式要求。
顺带清理了仓库:删掉 package-lock.json,.gitignore 加规则,package.json 里加 packageManager 字段锁定版本。
现在 lock 文件再没被误改过。这类问题的共性是:仓库里有多个等价方案时,Agent 会自己选一个,而它的选择标准是训练数据里的常见程度,不是你的项目约定。
主楼同样的坑,我这边是配置文件权限不对,排查了半天。
继续逛逛