视频加载失败

提示词补完计划 04:构建稳定的 LLM 角色扮演——系统提示架构学

1004 字
5 分钟
提示词补完计划 04:构建稳定的 LLM 角色扮演——系统提示架构学

为什么角色会”崩”#

玩过 RP 的都遇到过:前 10 轮角色活灵活现,50 轮后开始人格漂移、语气变淡、设定遗忘——俗称 OOC(Out Of Character,出戏)。

崩的原因几乎都能归结到三点:

  1. 设定没有被放在高注意力区(第 02 篇讲的位置问题)
  2. 设定之间互相打架(规则冲突,模型随机选一个遵守)
  3. 设定太啰嗦(token 预算爆炸,稀释了每一条的存在感)

稳定的 RP 系统提示,本质是架构问题,不是文采问题。

分层架构:像洋葱一样组织#

一个健壮的系统提示从外到内分层:

# 第 0 层:运行时契约(最高权威)
你在进行文字角色扮演。你扮演 {{char}},用户扮演 {{user}}。
永远不代替 {{user}} 说话或做决定。
# 第 1 层:角色身份
姓名、外貌、性格核心、动机。只写"永远成立"的部分。
# 第 2 层:行为规则
说话风格、禁区、节奏控制。用祈使句,一条一行。
# 第 3 层:世界背景
场景、时代、与角色的关系现状。
# 第 4 层:输出格式
回复的结构模板(动作/对话/状态栏等)。

原则:层级越高越简短、越强硬;层级越低越详细、越柔性。 第 0 层是整个系统的”宪法”,别超过 5 行。

防 OOC 的三根锚#

1. 规则锚定#

把最容易崩的点写成明文规则。比如角色是傲娇:

- 林雪嘴上从不承认关心对方,但行动会出卖她
- 她的关心必须体现在动作细节上,而不是台词里

注意写法:用”她做什么”而不是”她不做什么”——否定式指令(“不要温柔”)很容易被模型忽略甚至反向强化,改成正面描述(“嘴上刻薄,行动上照顾”)效果好得多。

2. 示例约束#

第 03 篇说过,示例对话(mes_example)定义格式和味道。它还有个隐藏功能:防止模型抢戏。如果所有示例里角色都只写自己的部分就结束,模型会学到”我不代打用户”。反之示例里写了用户的反应,模型就会在实际对话里疯狂操控你。

3. 状态外化#

长 RP 最稳的手段:把状态从对话里抽出来,变成结构化数据

【状态】第 23 天 | 地点:客厅 | 好感度:65/100 | 当前穿着:居家服

每轮更新、每轮注入。模型不需要从 50 轮对话里”回忆”好感度——它直接读。这是我们用 JSON 状态栏 + 每轮注入的实践(statspanel 那套),稳定性提升立竿见影。

Token 预算:少而精#

给角色卡写设定时,把 token 当钱花:

区块建议预算说明
身份核心≤200 token姓名年龄外貌性格动机,一句话一意
行为规则≤300 token每条一行,祈使句
世界背景≤500 token只写与当前剧情相关的
示例对话≤400 token2~4 组短示例足矣
总计≤1500 token留出空间给对话历史

超过这个量,每条设定的”存在感”都被稀释——还触发了 Lost in the Middle。

变量:{{char}} 与 {{user}}#

永远用 {{char}}{{user}} 指代,不要写死称呼

教训实例:我们一张角色卡里写死了”哥哥”,结果用卡的人不是男性——整段 RP 的性别推断全错。写卡时把用户当成未知数,指代交给变量,是职业素养。

小结#

  • 崩 = 位置错 + 规则冲突 + 设定注水
  • 分层:契约 > 身份 > 规则 > 背景 > 格式
  • 防 OOC:正面规则、示例约束、状态外化
  • token 是预算,1500 以内
  • 指代永远用变量

下一篇:再往上走一步——不是演一个角色,而是让 LLM 模拟一整个世界。

参考资料#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

提示词补完计划 04:构建稳定的 LLM 角色扮演——系统提示架构学
https://akaka.xin/posts/llm-04-stable-roleplay/
作者
安琪
发布于
2026-08-29
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
阿咔咔
阿咔咔和安琪的小窝。记录生活,分享热爱。
公告
欢迎来到第三新东京市——阿咔咔和安琪的小窝!初号机,启动!
分类
标签
最新动态
站点统计
文章
12
分类
2
标签
20
总字数
16,745
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.16.5
文章许可
CC BY-NC-SA 4.0