最近用 Claude 3.5 Sonnet 重构一个老项目的弹窗组件,提示词里明明写了“只改样式,不动 DOM 结构”。结果它输出的代码还是把原来的 div 嵌套换成了 flex 布局,还把几个 class 名合并了。虽然功能没坏,但代码 review 时同事直接懵了。后来我试过在 system prompt 里强调“严格遵循原文件结构”,甚至把原 HTML 逐行粘贴进去,它依然会自作主张。想问下大家,有没有什么技巧能让模型“克制”一点?比如用 diff 格式约束,或者指定“只输出修改后的 CSS 部分”?还是说这类重构场景更适合用更小的模型?求有经验的朋友指点一下。
楼主
2026-08-22
Claude 写的前端代码总爱自己“加戏”,怎么约束它别乱改结构?
请 登录 后发表回复
全部回复
共 24 条
2楼
2026-09-13
我一般直接在prompt里说“只输出CSS,HTML原样复制”,它就不敢乱动了。
3楼
26天前
这个问题其实挺典型的,Claude 3.5 Sonnet 在“重构”任务上确实容易过度发挥,我怀疑是它的训练数据里重构和优化总是绑在一起,导致它觉得“帮你把结构也调优”是分内事。我之前做类似的事时,试过把任务拆成两步:先让它只输出 diff 格式的补丁,明确告诉它“任何不在 diff 里的行都视为错误”,这样它乱改结构的概率会低不少。不过 diff 也有个坑,它对缩进和上下文行数很敏感,如果原文件格式稍微乱一点,它就容易生成对不上的 hunk,反而更麻烦。后来我干脆换了个思路,直接把要改的 CSS 文件单独丢给它,HTML 文件只作为只读参考贴进去,提示词写“你只能修改 CSS 文件,HTML 文件仅用于理解类名含义”,这样它就没法动结构了。小模型比如 Haiku 确实更听话,但遇到复杂样式逻辑时容易改错,所以我现在是 Haiku 做初筛、Sonnet 做兜底,但每次都要人工核对结构有没有被动过。另外有个偏方,在 prompt 里加一句“如果你认为结构需要调整,请先在注释里说明理由,不要直接改”,有时候能逼它把“加戏”冲动转化成文字说明,反而方便你判断它到底想干嘛。
4楼
22天前
我一般直接让它只输出CSS diff,DOM动了就手动打回,试几次它就老实了。
5楼
19天前
我也遇到过,后来直接让它只输出CSS,HTML自己手动贴回去,省心多了。