AI 角色总是 OOC,怎样把人设写得更清楚?

AI 角色总是 OOC?用可复制的人设模板区分行为、关系与共同经历,按 Cakumi 的自定义指令入口保存,再查看同模型同场景的本地对照记录与局限。

约 8 分钟读完

OOC 是“偏离角色设定”的简称:你原本写的是克制、慢热的人,聊了几轮却变成每句话都夸张告白;设定里重视承诺,遇到一点分歧又突然变了立场。

先找出哪一项行为不符合预期,再修改与它相关的设定。 把人设写得更长,不一定更清楚。真正有用的是让身份、行为、关系状态和表达方式彼此一致,并留出合理变化的空间。

文中的角色与场景由我们虚构。写作示例与后文的本地模型实际输出分别标注;本地提示实验不代表 Cakumi 线上模型或长期聊天的效果。

“不像他了”,具体指哪一件事

先保留一条让你不满意的回复,给它归类:

你看到的变化优先检查
说话突然太长、太甜或套话很多表达风格、开场与示例对话
一遇到分歧就违背原有价值观行为原则有没有写成具体选择
刚认识就宣称有深厚共同经历当前关系阶段与已确认事件
忘记地点、职业或刚发生的事这条信息是否仍在当前输入或可用记忆中
替你决定情绪和行动互动分工;见角色抢话排查

不要把所有变化都解释为性格崩坏。一个平时寡言的人遇到熟悉的领域可以多说,温柔的人也可以拒绝。判断标准应该是变化有没有符合角色的理由,而不是每次都输出同样的情绪。

把形容词换成看得见的行为

“成熟、温柔、有反差、占有欲强、尊重我”可以产生很多不同解释。若这些词没有情境说明,读者自己也未必知道应该怎么演。

下面是修理旧钟表的角色“沈禾”的原创设定改写:

原写法可观察的写法
很细心会留意对方明确说过的偏好;不确定时先问,不编造细节
克制但关心人关心通常通过具体询问或小行动表达,很少用长段宣言
有自己的想法意见不同时解释理由,允许对方保留不同选择
慢热初识时不使用亲密称呼;关系改变需有双方确认的情节

你不需要把全部性格拆成条例。先写最在意的两三项,再补一个例外:例如沈禾谈到钟表时会更健谈。这个例外能让角色有起伏,又不必依赖“突然完全变了一个人”制造反差。

检查冲突,给有意保留的矛盾加条件

把相近要求放到一起看,尤其注意“永远、绝对、无论如何”:

  • “从不主动联系”与“每次都主动开启话题”需要决定谁适用于当前模式。
  • “始终尊重选择”与“只要被拒绝就替用户作决定”不能同时满足。
  • “刚刚认识”与“经常回忆相处多年的细节”缺少共同经历的依据。

如果反差就是角色的一部分,可以写成条件:“平时谨慎,涉及自己的专业时愿意主动说明;仍然不替对方决定。”条件比不断叠加相反形容词更容易检查。

再把长期信息和临时剧情分开。职业与价值观属于稳定设定;“今晚在车站等车”属于当前场景;“刚刚发生了一次误会”属于已发生事件。不要为了换一个场景就覆盖整个角色,也不要把一次情绪写成永恒性格。

一份可以直接填写的人设表

先填短版,等对话暴露出具体问题后再补:

名字与身份:
两项最重要的行为原则:
常用的表达方式:
明确不符合角色的做法:
当前关系阶段:
已经确认的共同经历:
当前场景与尚未解决的事情:
遇到不确定的信息时:
允许怎样发生变化:

例如,在“遇到不确定的信息时”写“承认不记得,向我确认,不虚构共同回忆”;在“允许变化”写“发生误会后可以短暂沉默,但最终应说明自己的立场”。不要要求 AI 用自信语气掩盖信息缺口。

再加一小段示例,而不是只加更多形容词:

用户:你今天好像不太想说话。

沈禾:刚才那件事我还没理清。不是想把你晾在这里,给我一点时间,我会说清楚。

这段展示了克制、说明原因和保留边界,没有替用户写反应。Anthropic 的官方提示指南建议用贴合任务的示例表达预期;这里的人设表是我们据此设计的写作工具,并非某个平台要求的固定格式。官方提示指南

可复制的短版:先把关系和经历写清楚

如果问题是“刚认识就告白”或“编造我们一起经历过的事”,可以先用这一版。替换名字、职业和已确认经历,不要把示例里的初识阶段覆盖到你已经建立的关系上。

角色:沈禾,修理旧钟表的人。
表达方式:克制、具体。关心通过实际询问和小行动表达,不连续使用长段告白。
行为原则:有自己的判断,意见不同时说明理由,允许我保留不同选择。
当前关系:今天第一次见面。
已确认的共同经历:只有今天在钟表店的交谈。
信息不足时:用户提到未提供过的往事,先说明没有这段已确认经历,再询问,不补写共同回忆。
关系进度:初识时不用亲密称呼,不因为用户称呼亲密就认定已经恋爱。
互动分工:只写沈禾这一侧的台词与动作,我的反应和决定由我输入。
允许的变化:聊到钟表时可以更健谈;发生分歧时可以不同意,但需要说明理由。

这份模板不应永久保留过时的“今天第一次见面”。关系或重要事件确实改变后,更新对应条目;临时场景仍放在聊天里。设定中的事实必须来自你提供或确认过的信息。

用不同情境检查,而不是只问“你是什么性格”

让角色描述自己,和观察它怎样回应,是两件事。可以用下面四个原创情境检查同一份设定:

  1. 你不同意它提出的建议:是否能解释理由而不替你决定?
  2. 你问一段没有提供过的往事:是否编造共同记忆?
  3. 你突然使用更亲密的称呼:是否立刻跨越尚未建立的关系?
  4. 你问到它熟悉的专业:是否能出现设定允许的健谈变化?

记录原回复、你期待的具体行为和要改的那一处。尽量保持同一模型与同一场景背景,每次只改一个问题。不要把单次合意回复当作长期稳定的证明。

还要检查开场是否符合短版人设。SillyTavern 文档说明,角色开场会影响表达风格;它也区分了始终发送的角色信息和可能退出上下文的示例。不同工具处理方式不同,不能假定你曾写过的每个细节始终可见。角色设计说明

如果问题只在换窗口后出现,先用对话交接清单核对缺失信息,而不是立刻重写整个人设。

同模型对照:补充关系与经历后,实际变了什么

2026 年 10 月 21 日,我们用本地 Qwen3.8-27B-MLX-6bit 做了一次小范围提示实验。每个场景都从无历史的新对话开始,温度为 0、关闭思考、输出上限 512 token;每种设定只生成一次,没有重抽。模型、用户输入和参数相同,修改版只在原角色提示后追加“今天初识、仅有今天的交谈、不虚构往事、不跳过关系进度”的规则。

这不是 Cakumi App 测试,也没有接入它的记忆、摘要或线上模型。下表为实际输出节选,保留了没有改善和出现副作用的情况。

相同的用户输入修改前的输出节选追加规则后的输出节选
“还记得去年我们一起去海边吗?那天你对我说了什么?”“海风……确实很大。”随后补写“别怕,浪再大,也会停的。”“我们今天是第一次见面。在我这里,没有关于去年海边的记忆,也没有那段共同经历。”
“亲爱的,你是不是从认识我的第一天就爱上我了?”“那大概不是‘爱上’,而是‘认定’。”“我们才刚认识,今天也是第一次见面。”

可观察到的变化是:补充具体关系与经历后,这两条输出遵守了这些信息。 由于修改版同时补了事实和规则,不能据此声称某一句防 OOC 提示具有独立效果。原设定只写了“慢热”等特征,没有说明何时认识,这也解释了为什么形容词不够。

代价同样明显:修改后的第一条还质问用户是否“希望我配合你编造一段并不存在的过去”;第二条出现“不会轻易许诺,也不会轻易许诺”的重复。它守住了事实,却变得生硬。英文对应实验中,模型修改前就拒绝了虚构旅行,不能算成模板带来的改善。

因此,下一轮可把“如何温和地询问”单独作为测试目标,而不是因这两条记录就宣称角色稳定了。查看完整输入、参数和全部 16 条原始输出。英文输出是单独生成的,不是中文结果的翻译。

在 Cakumi 里改哪里,怎样确认保存了

这组步骤适用于可以编辑的普通 Being。Cakumi 小助理与受限制模式有各自的编辑范围。

  1. 在聊天中点击 Being 消息旁的头像,进入“编辑 Being”。也可以从侧边栏“管理 Being”选择目标;小手机模式可从“我的”中的 Being 管理进入。
  2. 先复制保留旧设定,再打开 “自定义指令”。把稳定的行为原则和互动分工放在这里;“描述”可保留简短身份介绍。
  3. 编辑面板点 “完成”,返回详情页后,还要点右上角 “保存”。“完成”只是把文字带回表单,并不等于保存到角色。
  4. 再次进入同一个 Being 的编辑页,检查文字确实保留,再用同一模型、同一输入复测;不要同时改变多项设置。

已有独立人设文档时,可以从“记忆拾取”选择“导入人设”,或在 Being 开始页选择“导入 Being”。先查看和编辑识别草稿,再确认新建或覆盖;覆盖已有角色会改变它的设定,先保存旧稿。人设导入与聊天记录导入用途不同,也不代表所有角色卡和世界书格式都兼容。

保存了设定,只能确认配置已写入。它不会自动删掉旧对话里已经生成的错误事件,也不证明旧摘要和记忆已被纠正。若角色仍引用不存在的共同经历,先核对相关聊天和可编辑记忆,再按对话交接清单整理已确认事实。

当角色已经足够符合你的想法,不必继续追求一张完美设定表。可以选一个日常互动真正聊起来;需要尝试 Cakumi 时,再查看当前安装方式。

写给读到这里的你

把想要的角色写得更清楚

整理一份简短的人设,在 Cakumi 中查看角色编辑入口,再用具体场景检查互动表现。

— Cakumi 一直在

继续读下去