跳到主要内容

疑难排查:Claude 为什么那样做?

入门

大多数“Claude 表现怪怪的”时刻都有一个简单的原因。下面是常见的几种以及对应的解决办法。

“它编造了一个事实/假来源”

原因: 模型生成了一段貌似合理却为假的续写(幻觉)。解决: 把来源文本提供给它,并说*“只根据这段内容作答;如果这里没有,就明说。”* 凡是重要的内容都要核实。

“它忘了我之前说的话”

原因: 对话超出了上下文窗口,于是较早的文本被丢弃了——或者这是一个新会话(默认情况下没有记忆)。解决: 重述关键信息,或为新话题开一个新对话。

“它无视了我的指令”

原因: 指令被埋没在一段很长的提示词里、含义模糊,或与其他内容相矛盾。解决: 把指令放在最前面在末尾重述一遍;要具体;删掉相互冲突的要求。参见提示词基础

“它拒绝了一个合理的请求”

原因: 请求的模式被匹配到了某些敏感内容,或缺少上下文。解决: 补充正当的上下文,并把你的目标说具体。如果你在基于 API 做开发,要优雅地处理拒答——参见拒答与安全

“输出很泛泛/很平淡”

原因: 约束不够,或没有给出“好”的样子的范例。解决: 给它一个角色、一段你想要的语气样例,以及一个严格的格式。

“在数字/数学上答错了”

原因: LLM 能对数学进行推理,但不是精确的计算器。解决: 让它展示步骤,或给它一个工具/代码来计算。

“它停不下来,太啰嗦/又太简短”

解决: 把你想要的明确说出来——“用 3 个要点作答,不要前言”“把完整推理给我。” 在 Claude Code 中,可以考虑输出风格

“Claude Code 对我的文件做了我没料到的事”

原因: 过宽的权限让它无需询问就采取行动。解决: 对较大的改动使用计划模式,并收紧你的允许/拒绝规则。

:::tip 万能的第一步 在认定它出故障之前,像一个完全陌生的人那样重读你的提示词。十有八九,答案就是补充上下文或把要求说得更清楚。 :::

发现了一个反复出现的坑?

把它加到这里——这个页面是从真实经验中成长起来的。十分钟参与贡献