学习精选 · AI 工具
Claude 与 Skill

别禁止也别请求:划定「哪里允许用英文」才治住了 Claude Code 的语言漂移

DEV Community2026-11-12约 3 分钟读完AI 整理查看原文

作者用真实会话日志做回归测试:同一条回复在改写 CLAUDE.md 措辞后各重新生成 100 次,统计英文回复次数。结果发现加禁令没用(19/100),把「允许英文」的清单改成按「谁在读」划范围的一句话,英文回复从 15/100 降到 1/100。

今天就能做

  • 检查你的 CLAUDE.md:如果有「哪些内容可以用英文」的清单句,改成按「谁在读」划范围的一句话
  • 别用「不要被英文带偏」这类禁令,实测无效甚至更糟
  • 可以再加一个 hook,在 PostToolUse 和 UserPromptSubmit 时通过 additionalContext 重复同样的语言规则

问题:会话中途突然切回英文

  • 即使 CLAUDE.md 写了语言规则,Claude Code 也会在会话中途改用英文回复,韩语、法语、西语等用户在 GitHub 上有类似报告
  • 作者一次会话中被英文回复 9 次,其中 5 条是简短进度行、4 条是长报告(最长约 2000 字符)
  • 触发点多在 subagent 的英文报告、命令英文输出或系统英文提示之后,Claude 自己并未察觉

测量方法

  • 截取真实会话中英文回复前的上下文,让 Claude 在不同 CLAUDE.md 措辞下重新生成同一条回复,每种条件跑 100 次并统计
  • 环境:Claude Code 2.1.318,Claude Opus 5.5(effort medium),只测了一个场景,未推广到其他模型

结果:禁令无效,划范围有效

  • 原措辞:英文回复 15/100
  • 加禁令「不要被刚读到的英文带偏」:19/100,反而没降
  • 删掉整句英文允许清单:7/100,仍有残留,说明该句不是唯一原因
  • 改成按「谁在读」划范围的一句话:1/100,效果最好

放置位置也有影响

  • 同一句中等效果的提醒句:写在 CLAUDE.md 里 7/100,通过 hook 的 additionalContext 传 6/100
  • 直接写进回复前的工具结果里:0/100
  • 作者推测用 hook 的 updatedToolOutput 重写工具结果可能比 additionalContext 更有效,但尚未实测

可以直接抄的写法

  • CLAUDE.md 保留一句:给用户的进度、提问和报告用你的语言;英文只允许给用户以外的人读的内容(给 subagent 的指令、代码、标识符、commit、存档文件)和原文引用
  • 这样既保住了给 subagent 用英文省 token 的做法,又把英文挡在用户可见文本之外
  • 作者还在 PostToolUse(Agent|SendMessage|TaskOutput)和 UserPromptSubmit 两个 hook 事件上通过 additionalContext 传同样内容,实测场景中 0/100

原文:Neither Forbidding nor Asking Reduced the Unwanted Behavior. Defining Where It's Allowed Did. Tested on Claude Code

来源:DEV Community · 2026-11-12

查看原文

本文由 AI 阅读原文后整理,未经人工逐字核对,内容以原文为准。

登录后可以点赞、查看和发表评论