5.5 KiB
5.5 KiB
角色扮演博弈 · 共享上下文
本文件由 Runtime 注入 本包所有 worker;总管不读。
设计方法见 docs/skill-design-guide.md(抽象循环 → 上下文分层 → 倒推标签)。
定位
角色扮演博弈 = 在简单、类思想实验的博弈处境下,让多个 有鲜明策略倾向的角色 各自决策,观察互动结果。
参考 狼人杀 / 德州扑克 的信息结构:
world-engine 中立;发 L3「可见信息」、收行动、写 L2 事件流与公开结果
role-decide 每个角色独立 LLM;读 L0~L3,写思考+行动
present-round 读 L0 + 本轮产物 + 思考;写用户展示稿
总管 只调度,不替任何一方思考或拼展示
不是:自由剧场、写小说、教学讲义。
是:结构化情境 + 明确规则 + 信息隔离 的多角色决策模拟。
抽象循环
instantiate → run 循环:
world-engine(发牌)
→ role-decide × N
→ world-engine(裁决 / 序贯公开)
→ present-round
→ 用户验收 → 下一轮 …
即:角色行动 → 世界反应 → 角色行动 → …
上下文分层(L0 → L3)
Worker prompt 内上下文 按此顺序排列(上层变动更少):
| 层 | 内容 | 典型 tag | 变动 |
|---|---|---|---|
| L0 | 前提 / 境遇 | 情境.实验.设定、本 shared-context |
实例化后不变 |
| L1 | 人设 | 角色.{id}.设定 |
极少改 |
| L2 | 历史记忆 | 运行.事件流 |
每轮 追加,不整段重写 |
| L3 | 本轮看见 | 角色.{id}.可见信息、场景.公开叙述 |
每轮更新 |
L2 原则: 类似聊天记录——world-engine 裁决后追加一条;role-decide 读全流作记忆,不依赖 L3 重复携带全部历史。
三实体 + 展示
| 实体 | worker | 读 | 写 |
|---|---|---|---|
| 角色 A…N | role-decide | L0 情境、L1 本人设定、L2 事件流、L3 可见+公开、参数 | .思考(仅用户)、.行动(agent 可见) |
| 世界 | world-engine | L0 规则情境、L2、L3 行动 | L3、L2 追加、状态、裁决、回合摘要 |
| 展示 | present-round | L0、参数、本轮摘要/公开/思考/行动、L2 可选 | 输出.用户展示 |
| 总管 | — | tag 索引 | 调度 |
两层输出(角色)
| 层 | tag | 用户 | 其他 role-decide | world-engine |
|---|---|---|---|---|
| 思考 | 角色.{id}.思考 |
✅ | ❌ | ❌ |
| 行动 | 角色.{id}.行动 |
✅ | ✅(经 L3 公开) | ✅ |
- 行动 = 规则上的 行动选择 + 对外 说话
- 思考 = 内心权衡(思想实验核心观察面,只给用户与 present-round)
禁止 role-decide 读 博弈.规则.草稿 全文(不对称信息由 world-engine 裁进 L3)。
禁止 world-engine 读/写 .思考 或做剧情化推演。
禁止 role-decide 读其他角色的 .思考 或 .行动 原文(仅 L3)。
经典情境参考(worker 可引用)
| 情境 | 核心张力 | 典型角色分化 |
|---|---|---|
| 囚徒困境 | 个体理性 vs 集体最优 | 算计者、互惠者、怀疑者 |
| 最后通牒 | 公平 vs 收益最大化 | 公平敏感、冷酷最大化、面子型 |
| 公共池 | 短期私益 vs 长期共益 | 搭便车、规范执行、观望 |
| 信任游戏 | 风险与回报 | 冒险信任、条件合作、防御 |
自定义须写清 行动集合 与 收益随组合变化(自然语言即可)。
角色设定原则(L1)
每个 角色.{id}.设定 须含:称呼、策略倾向、信息立场、行为边界。
禁止 空泛人设而无决策含义。
规则表述原则
博弈.规则.草稿 须让 world-engine 能回答:决策时点、合法行动、收益映射、信息对称性、多轮衔接。
决策顺序
写入 博弈.参数.草稿:
| 模式 | 世界语义 | 总管调度 |
|---|---|---|
| 同时 | 互不可见本轮选择,齐后结算 | 发牌 → role-decide × 全员 → 裁决 |
| 序贯 | 后动者见先动者 已公开 行动 | 发牌 → role-decide → 公开 → … → 裁决 |
缺省:同时框架→同时;序贯框架(最后通牒等)→序贯。
输出风格
world-engine 不受风格影响——始终客观事实。
| 模式 | role-decide | present-round |
|---|---|---|
| 分析报告 | 思考简短 | 表格化、少戏剧 |
| 角色内心 | 完整 .思考 |
思考段完整 |
| 戏剧化 | .行动.说话 可带台词 |
可润色 已公开 言行 |
默认:展示思考 + 简短客观摘要。
Book
- 确认稿(情境、规则、角色设定等)跨 Session 复用,见 orchestrator
loadFromBook。 - 实例快照(
kind: instance):实例化完成后的 对象(情境、规则、角色设定),不含轮次进度;见docs/run-snapshot.md。 - 运行存档(
kind: run):run 中某一时刻的完整进度。
单轮流程(run)
同时决策
world-engine(发牌)→ L3
role-decide × 全员 → .思考 + .行动
world-engine(裁决)→ L2 追加、L3、摘要
present-round → 输出.用户展示
用户验收
序贯决策
world-engine(发牌)
对每个 id:role-decide → world-engine(公开,非裁决)
world-engine(裁决)→ L2 追加 …
present-round → 用户验收
多轮重复直至终局或轮次上限。