AI 总替你说话?先别怪模型,翻开你的卡
AI 替你写台词、替你做决定、替你安排心理活动:「代言」是英文角色扮演社区官方认证的头号烦恼,JanitorAI 帮助中心把它列为最常见、最恼火的问题。病根多数时候出在卡上:开场白和示例对话里埋着「以你为主语」的坏范例,模型只是照着学。我们用静态检查器扫了 Chub 星标最高的 30 张卡:14 张干净、11 张有小毛病、5 张需要动手术,包括 19,568 星的星榜第一名。这篇讲病灶长什么样、怎么改,附一个全程本地运行的自查工具。

玩过角色卡的人都认得这三个瞬间。你发一句话,回复开头先替你说了一段——引号里是你的台词,结巴是你没有的结巴。 或者剧情自己往前走了:你点了点头,跟着他往膳堂走去,可你根本没打算跟任何人走。最气人的是第三种, 它直接替你写内心:你感到一阵说不清的心悸,明明理智在喊着退后。你的理智什么都没喊。 社区管这叫「代言」「抢话」「替你演」,每个平台的吐槽区都堆满了它。英文侧甚至有官方盖章:JanitorAI 帮助中心把它列为用户最常见、最恼火的问题之一。
病根多数时候在卡里,不在模型里
第一反应都是怪模型,模型也确实该背一部分。但真正能把问题修好的几篇攻略,rpwithai 的代言专文和roborhythms 的逐步排查, 指向同一个诊断:最强的代言触发器是这张卡本身。开场白替你演了一遍,示例对话替你写了台词带齐舞台动作, 角色描述提前给你安排了性格。模型是模式复读机,演示过的东西永远压过嘴上说的规矩。开场白里你已经点头跟人走了, 模型第三轮接着替你走,只是在照章办事。
rpwithai 补了一个关键分寸,免得这事变成对「你」字的猎巫:第二人称叙述本身不是病。「她看着你」是角色在演她自己。 病灶是「你」站在主语位,后面跟着行动、台词或心理:「你决定」「你低声说」「你感到」。这个界线是可以机器判定的, 在文本层面,开聊之前。
病灶解剖:一张卡替你演戏的六种姿势
我们为此写了一张教学卡:沈无咎,雾隐山庄庄主,古风悬疑,第二人称越权长得最疯的题材。每个病灶家族都故意埋了一处。 下面每一条,先看病句,再看同一拍戏做完手术的样子。
替你说话。病句:「我、我不知道山庄这么大……」你低声说。修法不是给你换句更好的台词, 是不给你写台词:整句删掉,让沈无咎补一句「山庄大,走夜路容易迷」,你的账房先生结不结巴,由玩家决定。 谁写下你的第一句台词,谁就占有了你之后所有的语气。
替你行动。病句:你点了点头,跟着他往膳堂走去。术后:他转身往膳堂去,没有回头看你跟没跟上。同一拍戏,同一个邀请,但传送带变成了一扇开着的门。
替你感受。病句:你感到一阵说不清的心悸。这是玩家最恨的一种,因为感受是整场戏里唯一无可争议属于玩家的东西。 修法是把镜头翻过去:他在三步外停下,目光在你外袍的雾水上停了停。压迫感是他的行为,动不动心是你的事。
劫持你的身体。病句:他的目光落过来,你的心跳漏了一拍。心跳、呼吸、脸红,是从生理通道走私进来的心理描写。 改成写他:他打量你的眼神,像棋手打量一步开局。威胁送到了,脉搏没被安排。
强加反应。病句:他的嗓音让你莫名发紧。语法上主语是角色,写的人以为安全,可这句话的宾语是你的神经。 描写嗓音本身就好,落在谁身上、落成什么样,让它自己发生。
裹挟你。病句:夜雾漫过脚踝,你不由得打了个寒颤。「不由得」「忍不住」「你别无选择」—— 裹挟家族在语法层面就取消了玩家的选择权。术后:夜雾从门缝跟进来,贴着地面漫开。氛围负责压迫,寒颤是可选项。
还有两处长在开场白之外、没人翻的地方。一是角色描述:{{user}}是新来的账房先生,生性怯懦,{{user}}暗恋着他却不敢表露。开聊之前它就把你的性格和心事写死了,模型之后会尽职尽责地替你演出来。 改成从角色那一侧写关系:对{{user}}:新来的账房,来历只有一封荐信。他还没决定这个人算账房、麻烦,还是证人。二是示例对话,两条轨都会出事:{{user}} 轨写成*局促地缩了缩肩* 你、你想让我做什么?是替玩家定了表演风格; 而 {{char}} 轨里塞进*{{user}}忍不住后退半步*是全卡最重的一种病:它在模型自己的输出模板里演示了 「写玩家的动作也是我工作的一部分」。

我们扫了 Chub 星标最高的 30 张卡
为了校准检查器,我们把它跑在 chub.ai 星标最高的 30 张全年龄卡上 (2026 年 7 月 21 日采样:星榜前十、纵深六张,加题材桶和趋势榜)。结果同时说明两件事。 头部创作者是有纪律的:30 张里 14 张扫描全干净,我们人工通读同一批样本,25 张大体守住了「不替用户写」, 这条在英文社区确实是第一戒律。但星数保护不了你:11 张带小毛病,5 张需要动手术。
| 卡 | 星数 | 扫出了什么 |
|---|---|---|
| Yes My Liege | 19,568 | 19 个开场白加示例里 6 处硬病灶:替你走位(「as you enter the inner sanctum」)、替你许愿(「you find yourself wishing」)、劫持皮肤(「Your skin crawls」) |
| Isekai RPG | 12,443 | 6 处:决定和反应都替玩家写好——「You decide to take a look out the window yourself」「Your eyes widen with surprise」 |
| Hogwarts Simulator | 5,531 | 6 处,几乎全在示例对话:「You grab his hand and shake it」「You follow Kazuki」——输出模板在教模型牵着玩家走 |
| Wendy “Waffles” Whisper | 43(趋势榜) | 17 个开场白摊了 6 处替你行动——每场戏都由「You step into the lobby…」开场 |
| The Guest | 1,389 | 5 处,含裹挟句式和示例对话里写死的 {{user}} 反应 |
重点在第一行。采样时星榜第一的角色卡,19,568 星,判档是「需要动手术」。星数衡量的是角色好不好, Yes My Liege 论角色确实是张好卡;但星数完全不衡量这张卡守不守你那半边戏。玩家为设定点星,然后去别处抱怨被代言。
还有一个巧到没法不提的标本:一张 7,182 星的言情卡,开场白让你 feel a mixture of anticipation and apprehension,「一丝期待混着一丝不安」,英文 slop 词表里挂着头名的情绪鸡尾酒公式,焊在代言病灶上。 这张卡叫什么?Queen Elara。机器起名固着的头号专业户,出现在一张人写的热门卡标题里。套话的流通从来是双向的。
方法注记:扫描对引号内的台词豁免(角色对你说「你」是正常说话),代码围栏里的状态栏跳过, 跑团式场景搬运(「你醒来时身处……」)记软提示不记违规,因为开场搬运一次是头部卡也在用的正当惯例。 判档按命中位置加权:落在 {{char}} 示例轨里的病灶按三倍算,因为那是模型的输出模板。 规则语法由 98 例金标回归锁定,思路和我们在 Foreverse 群聊里跑的冒名裁剪引擎同源: 群聊里一个角色开始替另一个角色说话时,把那半截裁掉的就是它。
三步自查
检查器在 /zh/labs/impersonation-checker,全程浏览器本地运行; 卡是隐私文件,不上传是底线也是卖点。拖入 PNG 或 JSON(或者只粘贴一段开场白);看判档和逐处标红, 先修开场白、再修示例对话;然后用那个几乎包治的动作「主语翻转」,把句子交还给角色,或者删句留白,复扫到干净为止。 上面那张教学卡做完手术后复扫是零命中,戏一点没少:夜雾照样合拢,西跨院照样上锁,晚饭照样在戌时。
也把丑话说在前面:静态扫描只管卡里写下的东西。代言还有两个别的爹:天生爱代打的模型, 和短到逼模型帮你补戏的一句话回复。这两个杠杆在文末问答里。卡扫干净了 AI 还替你演,嫌疑人就不再是卡。
写卡人的君子协定:{{user}} 轨留白
对写卡的人,最深的修法是一条写作哲学,一段话就能说完。示例对话的用途是教模型它自己的腔调, 所以里面的 {{user}} 轨只是功能性的搭话桩,克制才是手艺。写 {{user}}:你想让我做什么?就停。 不加星号颤抖,不加副词,不预装怯懦。你在用户轨里替玩家做的每一个表演选择,都是玩家从此不能再做的选择, 也是模型会对每一个加载这张卡的人复读的模式:胆大的玩家会收到他没演过的瑟缩,话少的玩家会看着自己的留白被碾过去。
如果这篇只记一句话,记正向指令这件事。别写「不要替 {{user}} 说话」,否定句是掷硬币, 它先把要禁止的概念递给了模型。照术后卡的写法来:只以沈无咎的身份说话和行动:他的话、他的动作、他的沉默。 账房先生的台词、选择和感受,只属于玩家。只叙述沈无咎能观察到的东西。然后把和它矛盾的句子逐条删掉。 放在那张 19,568 星的卡上,这活儿是十九个开场白里被标出的十一处:六处硬病灶,五处软习惯。 给 Chub 星榜第一的角色卡动完手术只要一个下午,它的每一份下载就都不再替玩家结巴了。
常见问题
我明明在对话里说了「别替我说话」,为什么 AI 还是照演不误?
因为指令只有一句,卡里的范例有几十句。语言模型认演示胜过认规则:开场白替你演过一次、示例对话替你写过台词,之后每一轮生成这些范例都在场,你聊天中途补的那句禁令是在跟它们对抗。JanitorAI 帮助中心的结论一样:能站住的修法是把卡里的坏范例删掉,而不是把禁令重复得更大声。
开场白里出现「你」就一定有问题吗?
不一定。「你」做宾语、做感官对象都合法:她看着你、信是写给你的,这是角色在演自己那一半。跑团和穿越类卡还有一个正当惯例,开场用「你醒来时身处地牢」搬运场景,只动你的感官、不动你的决定,我们校准用的 30 张热门卡里有 5 张这么开场。真正的红线是「你」站在主语位、后面跟着行动、说话或心理动词,「你决定」「你低声说」「你感到心悸」,这些是戏里唯一属于玩家的部分。
在系统提示里写「不要替 {{user}} 说话」有用吗?
掷硬币。否定句先把「代言」这个概念递给了模型,部分模型还会把「为 {{user}}」读成给用户加戏的信号。稳定的写法是正向、划边界:「只以角色的身份说话和行动;玩家的台词、选择和感受只属于玩家。」而且任何指令都扛不住卡里自相矛盾的范例——先修开场白,再谈指令。
卡扫出来是干净的,AI 还是替我演,怎么办?
那范例就不是卡教的了。按顺序排查三个杠杆:你自己的回复(一句话回复等于邀请模型帮你补戏,多写一点,或者只写你做了什么、停在结果之前);早点发一句 OOC(第二轮说「OOC:不要写我的行动」比第四十轮说管用);最后是模型本身(有的模型家族天生爱代打,高温度下更甚)。静态扫描只能抓写在卡里的东西,这是它的诚实边界。