你在长对话里给模型设了「你是严厉的代码审查员,语气简洁,不写客套」,聊到第十轮,它开始「很高兴帮你」并大段表扬你的代码。角色设定像被水冲走。你把人设又贴一次,过几轮依旧漂移。

忘掉设定,常见于人设只写在第一轮、中间任务指令不断覆盖、以及没有自检回显。解决办法是:短人设置顶、关键约束重复、要求输出前自检回显角色规则。

直接结论

把角色设定压缩成 5–8 条「可检查规则」,每次关键请求都简短复述或置于系统/置顶位置;要求模型在回答开头用一行回显「当前角色规则」。发现漂移立刻重贴规则,而不是继续在错误语气上修补内容。

具体做法

1. 人设改成规则列表,少形容词,多禁止项与输出格式。

【角色规则|每次回答前必须遵守并回显】
1) 身份:严厉代码审查员
2) 语气:短句,无客套开场
3) 结构:问题→风险等级→改法→验证
4) 禁止:空洞表扬、emoji、展开无关教程
请先回显:RULE_OK:1-4,再回答。
用户任务:{…}

2. 长对话每 5–8 轮重贴规则摘要,或新开线程携带规则。

3. 把「格式」与「人设」绑定:漂移时格式也会坏,便于你一眼发现。

4. 对关键交付要求对照规则自检表打勾。

注意点

第一,人设写成长篇故事,模型更容易抓不住可执行约束。

第二,多角色切换时不声明「现在切换」,旧规则会污染新任务。

第三,只在心里记得人设、不写进提示词,等于没有。

若你在 API 场景,把角色规则放进 system,并把用户任务与规则分隔;在网页聊天则每次关键输出带短规则头。团队协作时将规则存成片段管理器,比口头说「它怎么又温柔了」有效。设定被忘掉不是玄学,是上下文优先级问题,用回显机制就能显性化。

可直接套用的完整提示词

你必须在每轮回答第一行回显:ROLE={角色名};RULES={编号列表}。
角色规则:{5–8条}
任务:{…}
若任务与规则冲突,先指出冲突并请求我确认,不要悄悄违反规则。
输出结束后用清单自检:是否客套、是否结构完整、是否违反禁止项。

角色被忘掉时,不要在同一轮又塞新任务又纠正语气,先只发规则回贴:「重申规则,只回显 RULE_OK,不回答业务」。确认回显正确后再发任务。这个两拍法能显著减少漂移。对需要长期人设的项目,优先用支持 system 指令或项目级自定义指令的产品能力。

也可以把关键禁止项写成输出格式的一部分,例如每段前必须有风险等级标签;格式在,人设就不容易丢。工具约束强过文学描写。

若多项目并行,给每个项目独立会话与独立规则头,避免角色串台。串台看起来像忘掉,其实是上下文混合。

也可以要求模型在结尾输出「本轮违反风险自检:无/有」。有自我检查压力时,漂移会少。这是低成本的约束增强。

角色设定被忘掉,本质是长上下文里「最近指令」权重大于「早期人设」。所以要把人设变成最近指令的一部分,而不是怀念第一轮说过什么。你可以准备一条只有规则、没有任务的「校准消息」,每次感觉语气不对就先发校准。校准成功后再继续业务,两步法比情绪化责备模型有用。

若你在用项目制空间(可长期挂自定义指令),把 5–8 条规则放进项目指令,比每次手打更稳。规则要可观察:例如「禁止以我很高兴开头」,违反时你能立刻发现。发现即重贴,不要在错误人设上继续深聊,否则后面更难拉回。