穿帮,通常发生在第三次见面

设想一个开放小镇的酒馆老板娘,设定是“爽朗、爱占小便宜、丈夫失踪多年”。玩家第一次进门,她热情地招呼;第二次,她记得玩家欠了半杯酒钱(示意);第三次,模型换了一段上下文,她开口就是“欢迎光临,看着面生啊”,紧接着还用一种文绉绉的口吻聊起了诗词。

这里出现了两种不同的错:记忆丢失,前两次的事不见了;声音漂移,爽朗的人突然变得文雅。它们的原因不同,解法也不同,不能都靠“把提示词写得更长”来解决。

角色卡:把人设写成可以检查的字段

一段“她是个爽朗的人”的描述,模型每次读完都会有些不一样的理解。更稳的做法是拆成字段:

字段内容举例 用途
核心特质 爽朗、爱占小便宜、嘴硬心软 决定反应倾向
说话方式 短句、爱用语气词、不用书面语对白风格检验的依据
已知信息 认识哪些人、知道哪些地点 限定她能说什么
禁区 不知道玩家的真实身份,不提“系统”防止越界与出戏
隐藏目标 想打听丈夫的下落推动剧情与主动对话

在金沙娱乐AI的创作流程里,建议先出角色卡,再出台词。“已知信息”这一栏尤其重要。NPC不该知道的东西,不写进它的上下文,比事后叮嘱“你不知道这件事”可靠得多。

记忆分三层,别混在一起

角色的记忆大致可以分成三层,各自的存取方式不同:

  • 工作记忆:当前这场对话最近几轮的内容,直接放进上下文,生命周期很短。
  • 情节记忆:发生过的具体事件,比如“玩家欠了半杯酒钱”“玩家帮她找回了账本”。每条记录带时间、地点和参与者,按需检索后再放回上下文。
  • 语义记忆:由许多事件提炼出来的判断,比如“这个玩家靠谱”“可以适当放松警惕”。它变化得慢,适合写入角色卡的动态字段。

对话结束后,系统提炼本次的关键事件,写入情节记忆;每隔一段时间,把多条情节合并成一句语义判断。这样下次玩家进门时,取回的是两三条相关记忆,而不是把全部历史塞进上下文。这套记忆也可以在 金沙娱乐App里的项目记忆 中随项目保存,换章节、换场景之后不丢。

关系是第二张表

NPC之间、NPC与玩家之间的关系,不能只散落在对话里。把关系写成显式的记录,比如“老板娘 - 玩家:信任度中等,欠款未清”“老板娘 - 镇长:表面客气,暗中提防”。当剧情改变了关系,比如玩家帮了她,这一条要同步更新,其他NPC提到这个玩家时才不会前后矛盾。

关系表还有一个作用:限制剧情走向。假设“镇长”和“老板娘”的关系被设定为提防,那么让两人当众热络地合作,就应该被视为一次需要解释的转折,而不是模型随手写出的一段温情戏。

对白风格检验:让另一个环节来挑错

风格漂移很难在生成时自己发现,所以通常需要一个单独的检验步骤。它拿角色卡的“说话方式”和刚生成的对白做对照,重点看几件事:

  • 句式长度、常用语气词是否偏离。
  • 是否用了角色不该掌握的词汇或知识。
  • 是否与情节记忆中的事实冲突,比如忘了欠款。
  • 语气是否与当前关系状态相符,对不熟的人过分亲昵就是一例。

检验不通过时,把具体问题连同角色卡一起回传,让模型重写这一句,而不是整段对话推倒重来。对大规模的角色群,这类检验还可以作为回归测试:每次调整世界设定后,抽一批旧对话重新跑一遍,看有没有角色“变了个人”。世界层面的设定冲突,另见 玩家说给我生成一座未来城市以后 一文的讨论。

收束:一致性不是不变,而是有依据地变

好的NPC并不是永远不变,金沙娱乐游戏里的每个居民都该如此。玩家帮了她三次,她的态度就该松动;丈夫的下落揭晓,她的口气就该变。判断标准是每一次变化都能在记忆或关系表里找到来源。当你能回答“她为什么今天这样说话”,这个角色才算真正立住了。