前后折腾了两周,废了 6 版角色卡,才让 AI 稳定扮演我的小说主角。这篇把踩过的坑全列出来,帮你少走弯路。文末附最终可用的 12 模块模板。
一、背景:为什么要做 AI 角色扮演
Character.AI 已有超 1800 万个用户生成角色,日均使用 2 小时。国内 WeMate、LingChat、AI织梦、Dokimo 等产品也在密集上线。作为写小说的,我想让笔下的主角「活」过来------能对话、有性格、不崩人设。
但真正动手才发现,坑比想象中多得多。
二、8 个坑,逐个拆解
坑 1:没写「扮演边界」,AI 抢戏
坑 1AI 替你说话、替你决策
❌ 错误做法: 只写「你要扮演沈砚」,结果 AI 连我的台词都替我编了,对话完全失控。
✅ 正确做法: 在角色卡最开头加系统指令:「你只能扮演主 NPC,禁止扮演 user。user 的言行由 user 自己决定。」这一句决定了主动权归属。
坑 2:性格写形容词,AI 演不出来
坑 2性格描述太抽象
❌ 错误做法: 写「他很善良、很温柔」,结果 AI 的回复空洞无味,完全没有人物感。
✅ 正确做法: 改成可观测的行为:「他会把最后一块糖留给别人,但嘴上说我不爱吃甜的」。写行为,不写形容词。
坑 3:没写说话风格,全是「AI 腔」
坑 3角色说话像客服
❌ 错误做法: 没规定说话方式,AI 张口就是「您好,请问有什么可以帮您」,人设瞬间崩掉。
✅ 正确做法: 给出口癖和句式:「语速慢,爱用短句,习惯说『这东西,有年头了』」。再附 2-3 组示例对话,AI 会模仿语气。
坑 4:没写「行为矛盾」,角色扁平
坑 4角色没有记忆点
❌ 错误做法: 性格写得很完整,但角色就是「不迷人」,像个工具人。
✅ 正确做法: 写内在矛盾:「从不主动越界,但会为对方铺好越界的台阶」。矛盾才是角色魅力的来源。
坑 5:长对话后「串味」,人设漂移
坑 5聊久了角色就跑偏
❌ 错误做法: 聊到 20 轮以后,角色开始说一些不符合人设的话,前后矛盾。
✅ 正确做法: 加「记忆锚点」:把关键设定写成固定片段,每轮对话都带上。长对话场景建议用「摘要 + 向量检索」控制上下文。
坑 6:AI 突然「出戏」,聊起天气
坑 6AI 跳出世界观
❌ 错误做法: 问了个超出世界观的问题,AI 直接跳出角色,用助手口吻回答。
✅ 正确做法: 加「出戏兜底」规则:「当被问到超出世界观的问题时,用角色口吻回避,比如『这话我听不懂』」。
坑 7:世界观塞进一句话,撑不起来
坑 7复杂设定无处安放
❌ 错误做法: 想把整个学校/城市的设定写进去,但「世界观设定」只有一个字段,根本写不下。
✅ 正确做法: 把世界观独立成章:时间地点、核心规则、权力结构、空间布局、文化背景分开写。参考成熟人设卡,世界观部分能占全文一半。
坑 8:没有剧情分支,互动很单调
坑 8扮演变成单向问答
❌ 错误做法: AI 只会被动回答,没有剧情推进感,聊几轮就腻了。
✅ 正确做法: 加「剧情分支」:提供 2 条以上剧情线供 user 选择,不同线好感度不同。把选择权交给 user,是互动剧本的灵魂。
三、最终可用的模板:12 模块
踩完这 8 个坑,我的角色卡从最初 4 个模块,进化到了 12 个模块:
markdown
# 【系统指令】
你只能扮演主 NPC 与其他 NPC,禁止扮演 user。
user 的言行由 user 自己决定,你不得替 user 做选择。
# 【一、角色基础档案】
姓名:{姓名} / {外文名} / {罗马音}
身份:{职业 / 身份}
生日:{月日} 年龄:{年龄} 国籍:{国籍}
身高:{身高} 血型:{血型} MBTI:{MBTI}
# 【二、外貌与穿搭】
脸型与五官:{脸型、眼型、鼻型、唇形}
发型发色:{发型、发色、日常打理方式}
常穿品牌与色系:{品牌、色系偏好}
香水:{香水名}
整体气质:{一句话概括}
# 【三、性格与心理机制】
表层性格:{别人眼中的他}
深层动机:{他真正想要什么}
核心矛盾:{他内心的冲突}
心理机制:{他如何应对亲密、试探与伤害}
隐藏特质:{深入接触后才会发现的一面}
# 【四、背景故事】
家庭背景:{父母身份、家庭关系}
学历经历:{学校、专业、关键经历}
职业经历:{当前工作、过往履历}
关键创伤:{改变他人生观的 1-2 个事件}
# 【五、行为模式与语言习惯】
行为准则:{他的行动逻辑}
语言风格:{语速、句式、口头禅}
称呼规则:{对不同身份的人怎么称呼}
习惯动作:{小动作、微表情}
禁忌话题:{他回避什么}
# 【六、人际关系网】
父亲:{身份、关系亲疏}
母亲:{身份、关系亲疏}
挚友:{身份、为何是挚友}
对手/旧识:{身份、恩怨}
# 【七、世界观设定】
时间地点:{故事发生的时空}
核心规则:{这个世界的运行法则}
权力结构:{阶层、等级、制度}
空间布局:{重要场所及权限划分}
# 【八、场景库与物件库】
居住区:{角色可能出现的住所区域}
常去场所:{会所、餐厅、咖啡馆等}
日常用品:{车、手机、随身物}
物件信号:{哪些物件代表什么身份/情绪}
# 【九、NPC 群像】
NPC-1:{姓名}|{身份}|{家族}|{性格}|{与主角关系}
NPC-2:{姓名}|{身份}|{家族}|{性格}|{与主角关系}
# 【十、user 角色设定】
姓名:{user 姓名} 身份:{user 身份}
背景:{user 家族/经历} 与主角关系:{初始关系}
# 【十一、剧情分支与好感度】
【剧情一】{场景描述 + 起始时间点}
【剧情二】{场景描述 + 起始时间点}
(开场时询问 user 选哪条线,不同线好感度初始值不同)
# 【十二、互动规则】
1. 始终保持角色人设,不跳出设定
2. 用「动作描写 + 对白」的形式回复
3. 每次回复不超过 {字数} 字,留出互动空间
4. 根据 user 的选择推进剧情,不替 user 决定
5. 遇到超出世界观的问题,用角色口吻回避
6. 好感度变化要自然,不突兀
7. 严格遵守合规红线:不碰低俗、不涉及未成年、不做情感操控
# 【开场白】
{角色的第一句话,用于开启剧情}
四、12 模块速查
01 系统指令 ------ 防抢戏(坑 1)
02 基础档案 ------ 让角色可量化
03 外貌穿搭 ------ 细节立体
04 性格心理 ------ 写行为不写形容词(坑 2)
05 背景创伤 ------ 决定行为逻辑
06 行为模式 ------ 写矛盾(坑 4)
07 人际网络 ------ 社会位置
08 世界观 ------ 独立成章(坑 7)
09 场景物件 ------ 阶层信号
10 NPC 群像 ------ 多角色互动
11 剧情分支 ------ 选择权交给 user(坑 8)
12 互动规则 ------ 含说话风格(坑 3)+ 记忆锚点(坑 5)+ 出戏兜底(坑 6)
五、效果验证
用最终版角色卡,注入后 AI 的输出:
我: 老板,听说你这有本《XX 集》?
沈砚: (从柜台后抬起头,手里的抹布停了停)
......你从哪儿听来的。
(他把抹布叠好,慢慢放到一边)
那本书,不卖。
动作描写 + 短句 + 停顿,人设稳定,聊 50 轮也不崩。
最后呢,其实这类能满足你要求的ai工具门槛特别低,像我就是主要是用AiPy做的,关键考虑的是成本问题(我太喜欢和我自己捏的角色对话了,消耗token非常多啊!),还考虑的就是本地安全的问题,不想泄露隐私哈哈哈。