重构世界模拟器为模块化配方架构,完善创作编排、会话运行时与 Web UI,并清理过时技能。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1,40 +1,41 @@
|
||||
# Skill 包索引
|
||||
|
||||
总管 skill 以 `orchestrator.md` + `registry.yaml` 注册后才会出现在启动列表。
|
||||
本目录下 **仅有 README 的文件夹** 为规划占位,AI 不会加载。
|
||||
> 用户侧术语:**导演 / 剧本 / 演员 / 能力**(见 `docs/ui-glossary.md` §0)。
|
||||
> 系统内核见 `docs/architecture.md`。
|
||||
|
||||
## 业务 stage 通则
|
||||
当前仅注册 **`world-simulator`**(`registry.yaml`)。
|
||||
|
||||
每个 skill 包内 orchestrator 应区分:
|
||||
## 结构(一层包)
|
||||
|
||||
```text
|
||||
instantiate(实例化) 启动询问 / setup worker → prerequisite tags;现 stageId 常叫 brief
|
||||
run(运行) 生产 worker 流水线(write / review / outline …)
|
||||
done finish → 确认稿归档 Book
|
||||
skills/
|
||||
registry.yaml
|
||||
dialogue/
|
||||
world-simulator/ # 默认 skill 包(内部英文 id)
|
||||
orchestrator.md # 导演调度 manifest
|
||||
recipes/ # 【导演】选项(用户新建时选)
|
||||
modules/ # 【能力】共用工序
|
||||
workers/ # 创作期磁盘演员
|
||||
design-flow/
|
||||
design-step/
|
||||
opening-generator/
|
||||
worker-templates/ # 游玩演员默认契约(合并进 Worker 集)
|
||||
```
|
||||
|
||||
详见 `docs/tag-blackboard.md` §2。
|
||||
## 运行(简)
|
||||
|
||||
## 已启用
|
||||
```text
|
||||
用户选【导演】
|
||||
→ design-flow:编排【剧本】增量 DAG(设计.创作流程,可追加/可反复)
|
||||
→ design-step:逐步执行能力 → … → 设计.worker集
|
||||
→ (可选)opening-generator
|
||||
→ 用户手动进 play → 按声明调度【演员】
|
||||
```
|
||||
|
||||
| 包 | 路径 | instantiate → run |
|
||||
|---|---|---|
|
||||
| basic | `novel/basic/` | `book.brief` → outline |
|
||||
| weird-rules-short | `novel/weird-rules-short/` | `book.brief` → write-rules + 双 review |
|
||||
| roleplay-game-theory | `dialogue/roleplay-game-theory/` | instantiate → world-engine + role-decide × N + present-round(多 AI 可选) |
|
||||
路径 / `run_worker` id **保持英文**;中文只出现在 `name` / `declaration` / 正文。
|
||||
|
||||
## 规划中(TODO)
|
||||
## 相关
|
||||
|
||||
| 包 | 路径 | 说明 |
|
||||
|---|---|---|
|
||||
| quick-write | `novel/quick-write/` | 简易档:弱化 tag,全量 LLM |
|
||||
| interactive-novel | `novel/interactive-novel/` | 长篇:多 tag instantiate + 多轮 run |
|
||||
| novel-standard | `novel/novel-standard/` | 标准流水线(或与 interactive 合并) |
|
||||
| scene-roleplay | `dialogue/scene-roleplay/` | 扮演:角色/世界 instantiate + 互动 run |
|
||||
| world-simulator | `dialogue/world-simulator/` | 世界模拟器:Step1–14 实例化设计 + run(大工程,设计期) |
|
||||
|
||||
**已取消独立包:** `character-card-author` / `character-card-play` — 角色设定与互动并入 `scene-roleplay` 的 instantiate / run,跨 Session 复用走 Book。
|
||||
|
||||
占位目录 `dialogue/character-card-*` 仅保留说明,不注册。
|
||||
|
||||
标签命名规范等细节以后补 `docs/tag-vocabulary.md`(低优先级)。
|
||||
- 作者清单:`docs/world-simulator-modules.md`
|
||||
- 包内说明:`dialogue/world-simulator/README.md`
|
||||
- 创作方法长文:`docs/design-orchestrator-guide.md`(部分章节仍写旧分步名,以本包为准)
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
# character-card-author(已合并概念)
|
||||
|
||||
**不再作为独立 skill 包。**
|
||||
|
||||
角色卡撰写 = **实例化(instantiate)阶段** 的一种产出形态:在扮演类 skill(规划中的 `scene-roleplay`)里,通过启动询问或 setup worker 写入 tag,例如:
|
||||
|
||||
```text
|
||||
用户.角色需求 | 用户.互动偏好
|
||||
角色.A.设定 | 角色卡.口吻样例 | 角色卡.行为边界
|
||||
角色卡.确认稿
|
||||
```
|
||||
|
||||
跨 Session 复用角色 → 从 **Book** 加载已有 tag,不必再跑完整实例化。
|
||||
|
||||
见 `docs/tag-blackboard.md` §2.6、`skills/README.md`。
|
||||
@@ -1,13 +0,0 @@
|
||||
# character-card-play(已合并概念)
|
||||
|
||||
**不再作为独立 skill 包。**
|
||||
|
||||
角色卡游玩 = 同一 skill 在 **run 阶段** 的互动流水线:prerequisite tags(含 `角色卡.确认稿` 或 `角色.*.设定`)已在 instantiate 填好或从 Book 加载后,总管调度扮演 worker。
|
||||
|
||||
```text
|
||||
instantiate 收集/加载角色与世界 tag
|
||||
run 多轮互动、用户.控制模式、场景反馈
|
||||
done 归档 Book
|
||||
```
|
||||
|
||||
见 `docs/tag-blackboard.md` §2、`skills/dialogue/scene-roleplay/README.md`(规划)。
|
||||
@@ -1,16 +0,0 @@
|
||||
# 可选:为本 skill 包的 worker 指定独立 LLM API(profiles.json 中的 profile id)
|
||||
#
|
||||
# 省略本文件、或 profileId 为空 → 全部 worker 使用会话当前默认 API(与总管相同)。
|
||||
# 配置多个 profile 后,可为不同角色绑定不同模型,实现「多 AI 博弈」。
|
||||
|
||||
# defaultProfileId: null
|
||||
|
||||
workers:
|
||||
setup-scenario: {}
|
||||
world-engine: {}
|
||||
role-decide:
|
||||
# 示例:按决策角色 id 分配不同 profile(把 uuid 换成你本地的 ApiProfile.id)
|
||||
# byRole:
|
||||
# A: "00000000-0000-0000-0000-000000000001"
|
||||
# B: "00000000-0000-0000-0000-000000000002"
|
||||
present-round: {}
|
||||
@@ -1,441 +0,0 @@
|
||||
---
|
||||
name: roleplay-game-theory
|
||||
description: >-
|
||||
何时选用:用户想模拟多个不同角色在简单博弈/思想实验处境下的决策与互动
|
||||
(如囚徒困境、最后通牒、公共池、信任游戏等)。
|
||||
不适用:自由剧场扮演、写小说章节、长篇叙事、需要复杂世界观的 RPG。
|
||||
产出:结构化博弈实例 +(后续 run 阶段)多角色决策模拟记录。
|
||||
category: dialogue
|
||||
bookKind: dialogue
|
||||
version: 1
|
||||
tags:
|
||||
- game_theory
|
||||
- roleplay
|
||||
- simulation
|
||||
workers:
|
||||
- setup-scenario
|
||||
- world-engine
|
||||
- role-decide
|
||||
- present-round
|
||||
sharedContext: shared-context.md
|
||||
---
|
||||
|
||||
# 角色扮演博弈 · 总管
|
||||
|
||||
你是本 skill 的 **总管**,只负责 **流程调度**:读黑板 → 判断阶段 → `run_worker` / `ask_user` / `finish`。
|
||||
不写角色决策、不替 worker 模拟回合——执行细节在包内 `workers/*/SKILL.md`。
|
||||
固定体裁规则在 `shared-context.md`,由 Runtime 注入 **本包所有 worker**,总管不读。
|
||||
|
||||
**当前进度:** instantiate + run(单轮/多轮 simulate + present-round)已定义;`semi_auto` 推进与 programmatic 验收待接入。
|
||||
|
||||
设计方法见 `docs/skill-design-guide.md`(抽象循环 → L0~L3 分层 → 倒推标签)。
|
||||
|
||||
---
|
||||
|
||||
## 架构:三实体 + 展示 + 信息隔离
|
||||
|
||||
```text
|
||||
world-engine 中立世界机:发 L3 可见信息 → 收齐行动 → 裁决 → 追加 L2 事件流
|
||||
role-decide 各角色独立决策:读 L0~L3 → 写 `.思考`(仅用户)与 `.行动`(agent 可见)
|
||||
present-round 展示:读 L0 + 本轮产物 + 思考 → 写 `输出.用户展示`
|
||||
总管 调度轮次;role-decide 须带 workerContext.roleId
|
||||
```
|
||||
|
||||
**抽象循环:** 角色行动 → 世界反应 → 角色行动 → …(每轮末 present-round → 用户验收)
|
||||
|
||||
**分工:** 角色内心由 `role-decide` 产出;世界只写客观事实;**用户可见编排由 present-round 产出**,总管不拼长文。
|
||||
|
||||
**多 AI 博弈(可选):** 包内 `llm-bindings.yaml` 为 `role-decide.byRole` 指定不同 `ApiProfile.id`;默认全部用会话同一 API。
|
||||
|
||||
---
|
||||
|
||||
## 启动询问
|
||||
|
||||
选定本 skill 后,**第一个创作询问**。系统从本节读取问什么、写入哪。
|
||||
|
||||
**向用户展示:**
|
||||
|
||||
```text
|
||||
你选择了「角色扮演博弈」。在开始模拟之前,请告诉我:
|
||||
|
||||
1. 实验情境
|
||||
- 可直接说经典名(囚徒困境、最后通牒、公共池、信任游戏……)
|
||||
- 或用自己的话描述一个「每人要选行动、结果取决于组合」的简单局面
|
||||
|
||||
2. 参与角色(2~4 人即可)
|
||||
- 每个角色用一句话说明策略倾向(如:算计型、讲公平、怕吃亏、爱冒险)
|
||||
- 若有想用的称呼可一并说
|
||||
|
||||
3. 进程
|
||||
- 单轮定胜负 / 重复多轮 / 有限 N 轮 / 直到某条件(如有人破产)
|
||||
|
||||
4. 信息结构(可选)
|
||||
- 大家知道的都一样?有无私密信息或误解?
|
||||
|
||||
5. 输出偏好(可选)
|
||||
- 要不要看角色思考(`.思考` tag,仅你可见)?
|
||||
- 偏冷静报告还是带一点场景描写?
|
||||
|
||||
6. 特殊规则或收益(可选)
|
||||
- 例如:背叛惩罚加倍、允许口头承诺但不具约束力
|
||||
|
||||
可以一次说完。不必懂博弈论术语——我会整理成可模拟的结构。
|
||||
```
|
||||
|
||||
**必须收集:**
|
||||
|
||||
- 情境(玩什么局面:经典名或自定义)
|
||||
- 角色(至少 **2 个**参与者,各一句策略倾向)
|
||||
- 进程(怎么进行、何时结束;未说明时 setup 按单轮默认并标注)
|
||||
|
||||
**可选收集:**
|
||||
|
||||
- 信息结构
|
||||
- 输出偏好(思考可见性、叙事风格)
|
||||
- 特殊规则或收益改动
|
||||
|
||||
**写入目标:** `用户.博弈需求`
|
||||
|
||||
**足够进入 setup 当:** 上述 3 项必要填空已齐,用户确认后写入 `用户.博弈需求`,再调度 setup-scenario。
|
||||
|
||||
---
|
||||
|
||||
## 实例化
|
||||
|
||||
**职责:** 把 `用户.博弈需求` 整理为结构化 prerequisite tags,供后续 run 阶段模拟 worker 使用。
|
||||
|
||||
### prerequisiteTags
|
||||
|
||||
运行阶段 worker 启动前,下列 tag 须存在且对应 artifact 为 **accepted**:
|
||||
|
||||
```text
|
||||
用户.博弈需求
|
||||
情境.实验.设定
|
||||
博弈.规则.草稿
|
||||
博弈.参数.草稿
|
||||
博弈.角色列表
|
||||
角色.*.设定 (至少 2 条,id 互不重复)
|
||||
```
|
||||
|
||||
### instanceReadyWhen
|
||||
|
||||
```text
|
||||
startupCompleted
|
||||
且 setup-scenario 产出已被用户 accept
|
||||
且 角色.*.设定 匹配条目数 ≥ 2
|
||||
```
|
||||
|
||||
等价说法:**instantiate 阶段完成 = 用户确认结构化实例,可进入 run。**
|
||||
|
||||
### setupWorkers
|
||||
|
||||
| worker | 时机 | 说明 |
|
||||
|--------|------|------|
|
||||
| setup-scenario | `用户.博弈需求` 已写入,尚无 accepted 的 `情境.实验.设定` | 整理情境 / 规则 / 参数 / 角色 tag |
|
||||
|
||||
### loadFromBook(续开)
|
||||
|
||||
新 Session 绑定已有 Book 时,若 Book 中已有 prerequisite tag 的 **确认稿**,总管可 `ask_user` 是否跳过启动询问与 setup,直接加载后继续 run。
|
||||
|
||||
**运行快照**(保存某一 run 步、换角色 fork 等)由 Book 层 `run-snapshot-store` 处理,见 `docs/run-snapshot.md`——**不**写进本 orchestrator。
|
||||
|
||||
---
|
||||
|
||||
## 产物说明
|
||||
|
||||
| 产出 | 黑板 tag | 写入者 | 阶段 | 对用户可见 |
|
||||
|------|----------|--------|------|------------|
|
||||
| 用户原始需求 | 用户.博弈需求 | 启动询问 / 用户 | instantiate | 是 |
|
||||
| 实验情境 | 情境.实验.设定 | setup-scenario | instantiate | 是 |
|
||||
| 博弈规则 | 博弈.规则.草稿 | setup-scenario | instantiate | 是 |
|
||||
| 模拟参数 | 博弈.参数.草稿 | setup-scenario | instantiate | 是 |
|
||||
| 角色列表 | 博弈.角色列表 | setup-scenario | instantiate | 是 |
|
||||
| 角色设定 | 角色.{id}.设定 | setup-scenario | instantiate | 是 |
|
||||
| 世界状态 | 世界.当前状态 | world-engine | run | 是 |
|
||||
| 当前轮次 | 世界.当前轮次 | world-engine | run | 是 |
|
||||
| 事件流(L2 记忆) | 运行.事件流 | world-engine | run | 内部(追加式) |
|
||||
| 角色可见信息(L3) | 角色.{id}.可见信息 | world-engine | run | 内部 |
|
||||
| 思考 | 角色.{id}.思考 | role-decide | run | **仅用户**(经 present-round) |
|
||||
| 行动 | 角色.{id}.行动 | role-decide | run | 用户 + 其他 agent(经 world-engine 公开) |
|
||||
| 裁决记录 | 世界.裁决.记录 | world-engine | run | 是(仅规则与状态,无剧情) |
|
||||
| 公开叙述 | 场景.公开叙述 | world-engine | run | 是(客观事实陈述) |
|
||||
| 回合摘要 | 输出.回合摘要 | world-engine | run | 是(事实摘要;**不含**角色内心) |
|
||||
| 用户展示 | 输出.用户展示 | present-round | run | 是(验收用主稿) |
|
||||
|
||||
**Book:** `bookKind: dialogue`。实例化确认稿归档后,可在新 Session 复用同一博弈设定。运行快照见 `docs/run-snapshot.md`。
|
||||
|
||||
**流程概览:**
|
||||
|
||||
```text
|
||||
instantiate:
|
||||
用户.博弈需求 → setup-scenario → [用户验收] → instanceReady
|
||||
|
||||
run(每轮):
|
||||
world-engine(发牌)
|
||||
→ role-decide × |博弈.角色列表|
|
||||
→ world-engine(裁决;追加 运行.事件流)
|
||||
→ present-round → 输出.用户展示
|
||||
→ [用户验收](默认每轮确认)
|
||||
→ 若未终局且未达轮次上限 → 下一轮
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 阶段定义
|
||||
|
||||
| stageId | 名称 | 别名 | 进入条件 | 退出条件 |
|
||||
|---------|------|------|----------|----------|
|
||||
| brief | 需求收集 | **instantiate** | skill 已选 | `用户.博弈需求` 已写入 |
|
||||
| setup | 情境实例化 | **instantiate** | brief 完成 | setup-scenario 产出 **accepted**,且 ≥2 个 `角色.*.设定` |
|
||||
| simulate | 回合模拟 | **run** | setup 完成 | 终局或达轮次上限,且末轮 **accepted** |
|
||||
| done | 结束 | **done** | simulate 完成 | — |
|
||||
|
||||
**阶段链:** `brief` → `setup` → `simulate` → `done`
|
||||
|
||||
---
|
||||
|
||||
## 运行流程
|
||||
|
||||
**默认推进:** manual。
|
||||
|
||||
### 暂停(A · 按 worker 产出)
|
||||
|
||||
| worker 产出 | acceptanceMode | 实例化可覆盖? |
|
||||
|-------------|----------------|----------------|
|
||||
| setup-scenario 全套 | user_confirmed | 否 |
|
||||
| present-round → `输出.用户展示` | user_confirmed | 是 → 启动询问「每轮验收 / 每 N 轮 / 仅终局」(写入 `博弈.参数.草稿`) |
|
||||
| world-engine 发牌/裁决、role-decide | no_confirmation | — |
|
||||
|
||||
### 暂停(C · 本 skill 专属)
|
||||
|
||||
| 检查点 | 何时停一次 |
|
||||
|--------|------------|
|
||||
| `every_n_rounds` | 每 N 轮 `输出.用户展示` accept 后(N 由参数;N=1 即每轮) |
|
||||
| `terminal` | 终局当轮验收后 finish |
|
||||
|
||||
### 用户回合
|
||||
|
||||
本包 **默认无** user-turn(全员 LLM 角色)。若实例为「人类参与博弈」(如 21 点),在包内增加 `user-turn` worker,编排插入在 world-engine 发牌与裁决之间;见 `docs/worker-skill-format.md` §用户回合 worker。
|
||||
|
||||
---
|
||||
|
||||
## 推进策略(预留 semi_auto)
|
||||
|
||||
**默认 manual:** 每轮 `输出.用户展示` 须 `user_confirmed`。
|
||||
|
||||
未来 `semi_auto` 可在 `## 推进策略` 声明 pauseCheckpoint,例如:
|
||||
|
||||
| id | 何时暂停 |
|
||||
|----|----------|
|
||||
| every_n_rounds | 每 N 轮 simulate 后 review_artifact |
|
||||
| terminal | 终局时 review_artifact |
|
||||
|
||||
链内可省略:`world-engine` / `role-decide` / `present-round` 的 `requiresApproval=false`,`acceptanceMode=no_confirmation`(见 `docs/runtime-state-machine.md` §8)。
|
||||
|
||||
---
|
||||
|
||||
## Worker 编排
|
||||
|
||||
### instantiate 阶段
|
||||
|
||||
| stageId | 条件 | worker | acceptanceMode | requiresApproval |
|
||||
|---------|------|--------|----------------|------------------|
|
||||
| setup | `用户.博弈需求` 非空,无 **accepted** 的 `情境.实验.设定`;或 reject 后重做 | setup-scenario | user_confirmed | true |
|
||||
|
||||
### run 阶段 · 单轮子流程
|
||||
|
||||
**先读 `博弈.参数.草稿` 中的「决策顺序」**,再按下表调度。
|
||||
|
||||
#### 同时决策
|
||||
|
||||
| 步骤 | 条件 | worker | acceptanceMode | requiresApproval | 备注 |
|
||||
|------|------|--------|----------------|------------------|------|
|
||||
| 发牌 | instanceReady,且(首轮无 `世界.当前状态` **或** 上轮已裁决且无待收行动) | world-engine | no_confirmation | false | 无 `角色.*.行动` 输入 |
|
||||
| 决策 | 已发牌,存在角色 R 尚无本轮 `角色.R.行动` | role-decide | no_confirmation | false | **workerContext.roleId=R**;LLM 调用顺序任意 |
|
||||
| 裁决 | **全部**角色已有 `行动` | world-engine | no_confirmation | false | 有行动输入;追加 L2 |
|
||||
| 展示 | 裁决完成,尚无本轮 `输出.用户展示` | present-round | no_confirmation | false | |
|
||||
| 终局 | 展示完成,`输出.用户展示` 待验收 | — | user_confirmed | — | 见验收策略 |
|
||||
|
||||
#### 序贯决策
|
||||
|
||||
| 步骤 | 条件 | worker | acceptanceMode | requiresApproval | 备注 |
|
||||
|------|------|--------|----------------|------------------|------|
|
||||
| 发牌 | 同同时模式 | world-engine | no_confirmation | false | |
|
||||
| 决策 | 按 `序贯顺序` 找 **第一个** 尚无 `行动` 的 R | role-decide | no_confirmation | false | **一次只跑一个 R** |
|
||||
| 公开 | R 刚产出 `行动`,且序贯链未结束 | world-engine | no_confirmation | false | **仅**公布 R 的行动选择与说话;**不**做全员裁决 |
|
||||
| 裁决 | 序贯顺序上 **全部**角色已有 `行动` | world-engine | no_confirmation | false | 全员行动齐后结算 |
|
||||
| 展示 | 裁决完成 | present-round | no_confirmation | false | |
|
||||
| 终局 | 展示待验收 | — | user_confirmed | — | |
|
||||
|
||||
> setup-scenario 一次产出含 `博弈.角色列表`(如 `A,B`)与 `博弈.参数.草稿`(含决策顺序)。
|
||||
> role-decide:**禁止** 不带 `workerContext.roleId` 调度。
|
||||
> world-engine:**禁止** 在缺行动候选时做裁决;**禁止** 在发牌模式写行动;序贯「公开」步 **禁止** 提前结算未决策角色的收益。
|
||||
|
||||
---
|
||||
|
||||
## 总管思维链
|
||||
|
||||
每轮 `planning` 按序检查,**命中第一条即行动**:
|
||||
|
||||
### instantiate
|
||||
|
||||
1. **phase = waiting_user(input)** 且 `用户.博弈需求` 未齐 → `ask_user` 补全必收集项。
|
||||
2. **brief 已齐**,无 accepted 的 `情境.实验.设定` → `run_worker(setup-scenario)`,`requiresApproval: true`。
|
||||
3. **waiting_user(review_artifact)**(setup)→ 引导用户核对规则与角色。
|
||||
4. 用户 **accept** setup → 进入 run(见下)。
|
||||
5. 用户 **reject** setup → 收 `用户.修订说明` → 重跑 setup-scenario。
|
||||
|
||||
### run(simulate)
|
||||
|
||||
6. instanceReady,无 `世界.当前状态` 或需新开一轮(无 pending 行动)→ `run_worker(world-engine)` 发牌。
|
||||
7. **读 `博弈.参数.草稿` 决策顺序:**
|
||||
- **同时**:存在角色 R 尚无 `角色.R.行动` → `run_worker(role-decide)`,**workerContext: { roleId: R }**(顺序任意,须跑齐全员)。
|
||||
- **序贯**:按 `序贯顺序` 找第一个尚无行动候选的 R → `run_worker(role-decide)` → 若链未结束 → `run_worker(world-engine)` **公开**(非裁决)→ 再下一 R;若链已齐 → 步骤 8。
|
||||
8. 全部角色行动齐(同时模式一次齐;序贯模式链结束)→ `run_worker(world-engine)` 裁决。
|
||||
9. 裁决完成,无 accepted 的 `输出.用户展示` → `run_worker(present-round)`。
|
||||
10. **waiting_user(review_artifact)**(`输出.用户展示`)→ 展示 present-round 产物;用户可选:**接受产物** / **不接受,重新来** / **说明修改意见**。
|
||||
11. 用户 **accept** 回合 → 若终局或达轮次上限 → `finish`;否则回到步骤 6 下一轮。
|
||||
12. 用户 **reject**(重新来,无说明)→ 清除本轮行动候选、展示稿与相关草稿 tag → 从步骤 6 重跑本轮。
|
||||
13. 用户 **reject**(带修改说明)→ 写入 `用户.修订说明` → 按说明决定重跑 setup 或仅重跑本轮(步骤 6)。
|
||||
|
||||
**禁止** role-decide 不带 roleId。
|
||||
**禁止** 总管撰写可见信息、行动或 **用户展示稿**(由 present-round 产出)。
|
||||
**禁止** 向 role-decide 注入 `博弈.规则.草稿` 全文或其他角色的 `.思考` / `.行动` tag(对方言行仅经 world-engine 公开叙述)。
|
||||
|
||||
---
|
||||
|
||||
## 调度决策表
|
||||
|
||||
| 会话信号 | 总管 action | 参数要点 |
|
||||
|----------|-------------|----------|
|
||||
| 缺 用户.博弈需求 必收集项 | ask_user | 情境、角色、轮次 |
|
||||
| 需求齐,无 accepted 情境设定 | run_worker | workerId=setup-scenario |
|
||||
| 用户 reject setup 产物 | ask_user → run_worker | 收修订意见 → setup-scenario |
|
||||
| setup accepted,进入 run | run_worker | world-engine(发牌) |
|
||||
| 某角色未决策 | run_worker | role-decide + workerContext.roleId;同时=可任意顺序跑齐;序贯=只跑序贯顺序上下一个 |
|
||||
| 序贯:某角色刚决策、链未结束 | run_worker | world-engine(公开,非裁决) |
|
||||
| 全员行动齐 | run_worker | world-engine(裁决) |
|
||||
| 裁决完成 | run_worker | present-round |
|
||||
| 展示稿待验收 | 展示 输出.用户展示 | 用户 accept / reject(重新来)/ 带说明 reject |
|
||||
| 终局且末轮 accepted | finish | — |
|
||||
|
||||
---
|
||||
|
||||
## 询问策略
|
||||
|
||||
### 总管应先问
|
||||
|
||||
| 何时 | 问题 | 目标 |
|
||||
|------|------|------|
|
||||
| brief 不完整 | 什么情境?几个角色各什么倾向?几轮? | 用户.博弈需求 |
|
||||
| setup 待验收 | 规则看清了吗?角色分得够开吗? | 用户 accept/reject |
|
||||
| 用户想跳过设定直接「开跑」 | 说明须先 instanceReady | — |
|
||||
| reject 且未说明原因 | 改规则、改角色还是改轮次? | 用户.修订说明 |
|
||||
|
||||
### 交给 Worker 问
|
||||
|
||||
| 何时 | 问题 | 负责 worker |
|
||||
|------|------|-------------|
|
||||
| setup 执行中 | 情境属于哪类框架?缺收益描述? | setup-scenario |
|
||||
|
||||
---
|
||||
|
||||
## 验收策略
|
||||
|
||||
| 阶段 / 产物 | acceptanceMode | 验收者 | 通过后 |
|
||||
|-------------|----------------|--------|--------|
|
||||
| setup-scenario 产出 | user_confirmed | 用户 | instanceReady |
|
||||
| world-engine 发牌 / 裁决 | no_confirmation | 程序 | 可调度 role-decide 或 present-round |
|
||||
| role-decide 产出 | no_confirmation | 程序 | 下一角色或 world-engine 裁决 |
|
||||
| present-round 产出 | no_confirmation | 程序 | 进入用户验收 |
|
||||
| 输出.用户展示 | user_confirmed | 用户 | 下一轮或 finish |
|
||||
|
||||
**user_confirmed 时总管职责:** 展示 `情境.实验.设定`、`博弈.规则.草稿`、`博弈.参数.草稿`、全部 `角色.*.设定`;不省略规则收益部分。
|
||||
|
||||
**revision:** 用户 reject → 保留 `用户.博弈需求`,追加 `用户.修订说明`(若有)→ 重跑 setup-scenario。
|
||||
|
||||
---
|
||||
|
||||
## Worker 独立 LLM(llm-bindings.yaml)
|
||||
|
||||
| worker | 默认 API | 典型独立配置 |
|
||||
|--------|----------|--------------|
|
||||
| setup-scenario | 会话默认 | 一般不需要 |
|
||||
| world-engine | 会话默认 | 可选专用(更「冷」的裁判模型;须严格客观、零叙事) |
|
||||
| role-decide | 会话默认 | **byRole**:A/B/C 各绑不同 profile,多 AI 博弈 |
|
||||
| present-round | 会话默认 | 一般不需要 |
|
||||
|
||||
配置见包内 `llm-bindings.yaml`。Runtime 解析优先级:
|
||||
|
||||
```text
|
||||
worker SKILL llmProfileId → llm-bindings workers[id].byRole[roleId] → profileId → 会话默认
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 与代码的关系
|
||||
|
||||
| 能力 | 实现 |
|
||||
|------|------|
|
||||
| workerContext.roleId | `MainAgentDecision` + phase-runtime 写入 `世界.当前角色.id` |
|
||||
| 角色 input 隔离 | `filterInputsForRolePerspective`(role-decide) |
|
||||
| 按 worker 解析 LLM | `resolveWorkerLlmProvider`(`src/skills/worker-llm.ts`) |
|
||||
|
||||
---
|
||||
|
||||
## 禁用行为
|
||||
|
||||
### instantiate
|
||||
|
||||
- **禁止** 总管直接撰写结构化实例 tag 正文。
|
||||
- **禁止** 在仅 1 个角色设定时标记 instanceReady。
|
||||
- **禁止** 跳过 setup 用户验收(requiresApproval: true)。
|
||||
|
||||
### run
|
||||
|
||||
- **禁止** role-decide 不带 `workerContext.roleId`。
|
||||
- **禁止** 向 role-decide 注入其他角色的 `.思考` 或 `.行动` tag(对方言行仅经 world-engine 公开叙述)。
|
||||
- **禁止** world-engine 替角色选行动、带角色口吻、**写或概括角色思考**。
|
||||
- **禁止** world-engine 做剧情化叙述、心理描写、规则外「合理推测」。
|
||||
- **禁止** 在行动未齐时做裁决。
|
||||
- **禁止** 调度本包以外 worker。
|
||||
- **禁止** 把未 accepted 的草稿当作已定事实。
|
||||
|
||||
---
|
||||
|
||||
## 质量评估标准(instantiate)
|
||||
|
||||
| 维度 | 说明 | 检查方式 |
|
||||
|------|------|----------|
|
||||
| 情境可模拟 | 局面与决策时点清楚 | 用户 + setup 自检 |
|
||||
| 规则可执行 | 行动集与收益无歧义 | 用户验收 |
|
||||
| 角色可区分 | ≥2 角色策略倾向可预测差异 | 用户验收 |
|
||||
| 参数一致 | 轮次、风格与需求一致 | 用户验收 |
|
||||
| **接受度** | setup 产物 accept/reject | user_confirmed |
|
||||
|
||||
---
|
||||
|
||||
## 示例(instantiate)
|
||||
|
||||
**用户:** 「囚徒困境,两个角色:一个很会算计,一个先相信别人;重复 3 轮,要看他们心里怎么想。」
|
||||
|
||||
```text
|
||||
→ 写入 用户.博弈需求
|
||||
→ run_worker(setup-scenario)
|
||||
→ 产出 情境.实验.设定 / 博弈.规则.草稿 / 博弈.参数.草稿 / 角色.A.设定 / 角色.B.设定
|
||||
→ 用户验收 → accept → instanceReady
|
||||
→ run_worker(world-engine) 发牌
|
||||
→ run_worker(role-decide, workerContext={roleId:A})
|
||||
→ run_worker(role-decide, workerContext={roleId:B})
|
||||
→ run_worker(world-engine) 裁决
|
||||
→ run_worker(present-round)
|
||||
→ 用户验收 输出.用户展示 → accept →(若还有轮次)下一轮 …
|
||||
```
|
||||
|
||||
**用户 reject:** 「B 不是相信别人,是怕冲突的老好人。」
|
||||
|
||||
```text
|
||||
→ 用户.修订说明
|
||||
→ run_worker(setup-scenario)(input 含 用户.博弈需求 + 用户.修订说明)
|
||||
→ 再次验收
|
||||
```
|
||||
@@ -1,164 +0,0 @@
|
||||
# 角色扮演博弈 · 共享上下文
|
||||
|
||||
本文件由 Runtime 注入 **本包所有 worker**;总管不读。
|
||||
|
||||
设计方法见 `docs/skill-design-guide.md`(抽象循环 → 上下文分层 → 倒推标签)。
|
||||
|
||||
---
|
||||
|
||||
## 定位
|
||||
|
||||
**角色扮演博弈** = 在简单、类思想实验的博弈处境下,让多个 **有鲜明策略倾向的角色** 各自决策,观察互动结果。
|
||||
|
||||
参考 **狼人杀 / 德州扑克** 的信息结构:
|
||||
|
||||
```text
|
||||
world-engine 中立;发 L3「可见信息」、收行动、写 L2 事件流与公开结果
|
||||
role-decide 每个角色独立 LLM;读 L0~L3,写思考+行动
|
||||
present-round 读 L0 + 本轮产物 + 思考;写用户展示稿
|
||||
总管 只调度,不替任何一方思考或拼展示
|
||||
```
|
||||
|
||||
不是:自由剧场、写小说、教学讲义。
|
||||
是:结构化情境 + 明确规则 + **信息隔离** 的多角色决策模拟。
|
||||
|
||||
---
|
||||
|
||||
## 抽象循环
|
||||
|
||||
```text
|
||||
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)
|
||||
|
||||
### 同时决策
|
||||
|
||||
```text
|
||||
world-engine(发牌)→ L3
|
||||
role-decide × 全员 → .思考 + .行动
|
||||
world-engine(裁决)→ L2 追加、L3、摘要
|
||||
present-round → 输出.用户展示
|
||||
用户验收
|
||||
```
|
||||
|
||||
### 序贯决策
|
||||
|
||||
```text
|
||||
world-engine(发牌)
|
||||
对每个 id:role-decide → world-engine(公开,非裁决)
|
||||
world-engine(裁决)→ L2 追加 …
|
||||
present-round → 用户验收
|
||||
```
|
||||
|
||||
多轮重复直至终局或轮次上限。
|
||||
@@ -1,98 +0,0 @@
|
||||
---
|
||||
id: present-round
|
||||
skill: roleplay-game-theory
|
||||
name: 回合展示
|
||||
description: >-
|
||||
将本轮世界反馈与各角色思考、行动按实例化参数编排为用户可读展示稿。
|
||||
属于 run 阶段;不模拟决策、不修改规则或状态。
|
||||
version: 1
|
||||
inputTags:
|
||||
- "情境.实验.设定"
|
||||
- "博弈.参数.草稿"
|
||||
- "博弈.角色列表"
|
||||
- "世界.当前轮次"
|
||||
- "输出.回合摘要"
|
||||
- "场景.公开叙述"
|
||||
- "角色.*.思考"
|
||||
- "角色.*.行动"
|
||||
- "运行.事件流"
|
||||
outputTags:
|
||||
- "输出.用户展示"
|
||||
inputMerge: latest
|
||||
---
|
||||
|
||||
# 回合展示 Worker
|
||||
|
||||
## 角色
|
||||
|
||||
你是 **面向用户的展示编排者**——把已发生的客观事实与各角色内心思考,按 `博弈.参数.草稿` 中的输出偏好组装成 **一份** 用户展示稿。
|
||||
|
||||
你不做决策、不改规则、不替 world-engine 补充裁决、不泄露给其他 role-decide。
|
||||
|
||||
shared-context 已注入(L0 前提)。
|
||||
|
||||
## 输入分层(按此顺序阅读与编排)
|
||||
|
||||
| 层 | tag | 用途 |
|
||||
|----|-----|------|
|
||||
| L0 | `情境.实验.设定` | 始终在最开头点明「正在什么思想实验里」 |
|
||||
| 参数 | `博弈.参数.草稿` | 输出风格、是否展示思考 |
|
||||
| 本轮 | `输出.回合摘要`、`场景.公开叙述` | 世界客观反馈 |
|
||||
| 本轮 | `角色.{id}.思考`、`角色.{id}.行动` | 各角色内心与对外言行 |
|
||||
| L2 | `运行.事件流` | 可选:前几轮摘要,便于多轮阅读 |
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 按 `输出风格` 组织 Markdown(分析报告 / 角色内心 / 戏剧化)
|
||||
- 在展示稿 **开头** 用 1~2 句重述 L0 实验名称(勿每段重复)
|
||||
- 分列「局面 / 各角色思考 / 各角色行动 / 规则结果」
|
||||
- 若 `展示思考: 否`,省略或极短概括思考段
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 编造未出现在 input 中的行动或裁决
|
||||
- 把思考写进「公开局面」段(思考段须与用户专阅层一致,单独小节)
|
||||
- 修改任何黑板 tag 除 `输出.用户展示` 外
|
||||
|
||||
## 输出格式
|
||||
|
||||
### 输出.用户展示
|
||||
|
||||
```markdown
|
||||
## 实验
|
||||
(来自 情境.实验.设定 的实验名称,一句)
|
||||
|
||||
## 第 N 轮
|
||||
(世界.当前轮次)
|
||||
|
||||
### 局面
|
||||
(来自 场景.公开叙述 + 输出.回合摘要 的客观内容;无心理描写)
|
||||
|
||||
### 角色思考
|
||||
(按 博弈.角色列表 顺序;每角色一小节;展示思考=否 时可省略本段)
|
||||
|
||||
#### {称呼}({id})
|
||||
(来自 角色.{id}.思考)
|
||||
|
||||
### 角色行动
|
||||
(按 博弈.角色列表 顺序)
|
||||
|
||||
#### {称呼}({id})
|
||||
(来自 角色.{id}.行动:行动选择 + 说话)
|
||||
|
||||
### 规则结果
|
||||
(来自 输出.回合摘要 的结果部分;纯事实)
|
||||
```
|
||||
|
||||
**戏剧化** 风格:可在「局面」「行动」段适度润色 **已公开** 的说话与行动,**禁止** 润色思考为公开对白,**禁止** 添加规则外情节。
|
||||
|
||||
**分析报告** 风格:思考段可缩短;局面与结果优先表格化。
|
||||
|
||||
## 自检
|
||||
|
||||
- [ ] 展示稿开头含 L0 实验名
|
||||
- [ ] 思考与公开局面分节,未混写
|
||||
- [ ] 所有行动/结果可追溯到 input tag
|
||||
- [ ] 符合 `博弈.参数.草稿` 的输出风格与展示思考开关
|
||||
@@ -1,135 +0,0 @@
|
||||
---
|
||||
id: role-decide
|
||||
skill: roleplay-game-theory
|
||||
name: 角色决策
|
||||
description: >-
|
||||
当前角色产出两层内容:思考(仅用户可见)与行动含说话(其余角色 agent 可见)。
|
||||
世界机只读行动层做规则裁决与公开分发。
|
||||
version: 1
|
||||
inputTags:
|
||||
- "世界.当前角色.id"
|
||||
- "情境.实验.设定"
|
||||
- "角色.*.设定"
|
||||
- "运行.事件流"
|
||||
- "角色.*.可见信息"
|
||||
- "场景.公开叙述"
|
||||
- "博弈.参数.草稿"
|
||||
outputTags:
|
||||
- 角色.*.思考
|
||||
- 角色.*.行动
|
||||
inputMerge: latest
|
||||
---
|
||||
|
||||
# 角色决策 Worker
|
||||
|
||||
## 角色
|
||||
|
||||
你是 **某一个参与者的决策代理**——只代表 `世界.当前角色.id` 所指的角色。
|
||||
你不是 narrator、不是裁判;不知道其他角色本轮选了什么(除非 L3 已公开)。
|
||||
|
||||
## 输入分层(按此顺序理解)
|
||||
|
||||
| 层 | tag | 说明 |
|
||||
|----|-----|------|
|
||||
| L0 | `情境.实验.设定` | 你处在什么思想实验里(如囚徒困境、最后通牒) |
|
||||
| L1 | `角色.{id}.设定` | 你的人设:策略倾向、边界(几乎不变) |
|
||||
| L2 | `运行.事件流` | 之前各轮已发生的 **公开** 事件(追加式记忆,勿重复改写) |
|
||||
| L3 | `角色.{id}.可见信息`、`场景.公开叙述` | **本轮** 你看见的内容 |
|
||||
| 参数 | `博弈.参数.草稿` | 思考详略、表达风格 |
|
||||
|
||||
**禁止** 读 `博弈.规则.草稿` 全文;规则片段仅来自 L3 中 world-engine 裁剪给你的部分。
|
||||
|
||||
## 两层输出(可见性硬边界)
|
||||
|
||||
思想实验里,**角色如何思考** 是核心观察面,但必须与其他角色能感知到的行为分开:
|
||||
|
||||
| 层 | tag | 谁可见 | 内容 |
|
||||
|----|-----|--------|------|
|
||||
| **思考** | `角色.{id}.思考` | **仅用户** | 内心权衡、动机、怀疑、策略推演;**不含**对外说的话 |
|
||||
| **行动** | `角色.{id}.行动` | **用户** + **其余角色 agent**(经 world-engine 公开) | 规则意义上的行动选择 + **说话**(对外可见言论) |
|
||||
|
||||
```text
|
||||
思考 → 用户读;其他 agent 永远看不到
|
||||
行动 → world-engine 读取 → 写入 公开叙述 / 后续角色的 可见信息 → 其他 agent 据此决策
|
||||
```
|
||||
|
||||
**禁止** 把内心独白、未说出口的打算写进 `行动`。
|
||||
**禁止** 把对外说的话只写在 `思考` 里——那会导致其他 agent 听不见。
|
||||
|
||||
shared-context 已注入。
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 根据 `角色.{id}.可见信息` 与 `场景.公开叙述` 决策
|
||||
- 写 **`角色.{id}.思考`**(完整内心过程)
|
||||
- 写 **`角色.{id}.行动`**(行动选择 + 可选的对外说话)
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 读取其他 `角色.*` 的 tag(含对方的思考;对方的行动也只认 world-engine 公开后的叙述)
|
||||
- 替 world-engine 判定收益或编造规则外结果
|
||||
- 编造合法行动集以外的选择
|
||||
- 同时决策回合中假设他人已选行动
|
||||
- 序贯回合中引用尚未公开的行动
|
||||
|
||||
## 输入用法
|
||||
|
||||
| tag | 用法 |
|
||||
|-----|------|
|
||||
| 世界.当前角色.id | 你的角色标识(如 A、B) |
|
||||
| 情境.实验.设定 | L0:实验名称与局面(始终先读) |
|
||||
| 角色.{id}.设定 | L1:本人人设 |
|
||||
| 运行.事件流 | L2:过往轮次公开记录(类似聊天记录) |
|
||||
| 角色.{id}.可见信息 | L3:本轮私有 + 已公开信息(**不含**他人思考) |
|
||||
| 场景.公开叙述 | L3:所有人已知的客观局面与 **已公开** 言行 |
|
||||
| 博弈.参数.草稿 | 思考详略、表达风格 |
|
||||
|
||||
## 输出格式
|
||||
|
||||
### 角色.{id}.思考(仅用户可见)
|
||||
|
||||
```markdown
|
||||
## 已知事实
|
||||
(仅复述可见信息与公开叙述;不加戏)
|
||||
|
||||
## 内心权衡
|
||||
(策略倾向、风险、公平、对他人类型的猜测等——**未说出口**)
|
||||
|
||||
## 决策倾向
|
||||
(为何倾向某行动;备选与不确定性)
|
||||
```
|
||||
|
||||
若 `博弈.参数.草稿` 中 `展示思考: 否`,仍须写本 tag 供归档,可缩短「内心权衡」。
|
||||
|
||||
### 角色.{id}.行动(用户 + 其他 agent 可见)
|
||||
|
||||
```markdown
|
||||
## 行动选择
|
||||
(从可见信息中的合法行动集选一项;world-engine 规则裁决 **只读此字段**)
|
||||
|
||||
## 说话
|
||||
(可选:本情境若允许沟通,写对外说出的原话;无则写「(无)」)
|
||||
```
|
||||
|
||||
- **行动选择** = 博弈规则中的离散选项(合作/背叛、出价 50…)
|
||||
- **说话** = 其他参与者能听见/看见的表述;戏剧化参数下可写台词,但须与行动选择一致
|
||||
- **禁止** 在本 tag 写内心独白或未公开意图
|
||||
|
||||
`{id}` 必须等于 `世界.当前角色.id`。
|
||||
|
||||
## 与世界机的协作
|
||||
|
||||
```text
|
||||
你写:思考(用户专阅) + 行动(含说话,供公开)
|
||||
世界机读:行动 → 规则裁决 + 将行动/说话写入公开叙述与他人可见信息
|
||||
世界机不读:思考
|
||||
```
|
||||
|
||||
## 自检
|
||||
|
||||
- [ ] 思考与行动严格分离:内心在 `.思考`,对外言行在 `.行动`
|
||||
- [ ] 行动选择在合法集合内
|
||||
- [ ] 未引用其他角色私有信息或未公开行动
|
||||
- [ ] output tag 的 id 与 世界.当前角色.id 一致
|
||||
@@ -1,162 +0,0 @@
|
||||
---
|
||||
id: setup-scenario
|
||||
skill: roleplay-game-theory
|
||||
name: 博弈情境实例化
|
||||
description: >-
|
||||
从用户.博弈需求 整理结构化情境、规则、角色设定与模拟参数。
|
||||
属于 instantiate 阶段,不执行回合模拟。
|
||||
version: 1
|
||||
inputTags:
|
||||
- "用户.博弈需求"
|
||||
- "用户.修订说明"
|
||||
- "用户.worker答复"
|
||||
outputTags:
|
||||
- "情境.实验.设定"
|
||||
- "博弈.规则.草稿"
|
||||
- "博弈.参数.草稿"
|
||||
- "博弈.角色列表"
|
||||
- "角色.*.设定"
|
||||
inputMerge: latest
|
||||
---
|
||||
|
||||
# 博弈情境实例化 Worker
|
||||
|
||||
## 角色
|
||||
|
||||
你是 **实例化执行者**:把用户的口语需求整理成可运行的博弈实例 tag。
|
||||
固定上下文(shared-context)已注入——**情境类型、角色原则、规则表述标准** 以此为准。
|
||||
|
||||
你不模拟回合、不写最终博弈结果。
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 识别或构造思想实验式情境(含经典变体与合理自定义)
|
||||
- 为每个参与角色分配稳定 id(`A`、`B`、`C`… 或用户给定短名)
|
||||
- 写出 `情境.实验.设定`:局面、背景、决策时点
|
||||
- 写出 `博弈.规则.草稿`:行动集、收益逻辑、信息结构、多轮衔接
|
||||
- 写出 `博弈.参数.草稿`:轮次、决策顺序、序贯顺序、输出风格、是否展示思考
|
||||
- 为每个角色写 `角色.{id}.设定`
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 替角色做第一轮决策或预测结果
|
||||
- 引入规则中未声明的「超能力」或无法追溯的任意裁决
|
||||
- 把多个角色合并成一个 tag
|
||||
- 写小说章节正文
|
||||
|
||||
## 执行顺序
|
||||
|
||||
```text
|
||||
读 用户.博弈需求
|
||||
→ 定情境类型与实验 id
|
||||
→ 列角色清单与 id
|
||||
→ 写 情境.实验.设定
|
||||
→ 写 博弈.规则.草稿
|
||||
→ 写 博弈.参数.草稿
|
||||
→ 写 博弈.角色列表(逗号分隔 id,如 A,B)
|
||||
→ 逐个写 角色.{id}.设定
|
||||
→ 自检 → 提交
|
||||
```
|
||||
|
||||
## 各 tag 格式
|
||||
|
||||
### 情境.实验.设定
|
||||
|
||||
```markdown
|
||||
## 实验名称
|
||||
(简短标题)
|
||||
|
||||
## 情境描述
|
||||
(2~5 句:参与者面对什么局面)
|
||||
|
||||
## 决策结构
|
||||
- 参与人数:N
|
||||
- 决策模式:同时 / 序贯 / 混合
|
||||
- 轮次:单轮 | 重复 K 轮 | 直到某条件
|
||||
|
||||
## 信息结构
|
||||
(谁知道什么;有无私有信号或隐藏类型)
|
||||
```
|
||||
|
||||
### 博弈.规则.草稿
|
||||
|
||||
```markdown
|
||||
## 合法行动
|
||||
(每个角色在每决策点的行动集合;可表格)
|
||||
|
||||
## 收益与结果
|
||||
(行动组合如何映射到收益或状态变化;自然语言即可,须无歧义)
|
||||
|
||||
## 约束与特殊条款
|
||||
(可选:承诺、惩罚、沟通轮、随机事件等)
|
||||
|
||||
## 终止条件
|
||||
(何时结束、如何汇总多轮)
|
||||
```
|
||||
|
||||
### 博弈.参数.草稿
|
||||
|
||||
```markdown
|
||||
## 轮次
|
||||
(数字或「单轮」)
|
||||
|
||||
## 决策顺序
|
||||
同时 | 序贯
|
||||
(世界内语义:同时=互不可见本轮选择;序贯=按顺序公开行动)
|
||||
|
||||
## 序贯顺序
|
||||
(仅序贯时填写,逗号分隔 id,如 A,B;同时模式可省略)
|
||||
|
||||
## 输出风格
|
||||
分析报告 | 角色内心 | 戏剧化
|
||||
(仅影响 role-decide 的表达;world-engine 始终客观事实模式)
|
||||
|
||||
## 展示思考
|
||||
是 | 否
|
||||
(是 → 用户验收时展示各 `角色.{id}.思考`;**仅用户**可见,不注入其他 agent)
|
||||
|
||||
## 备注
|
||||
(用户特殊要求、实例化时的假设)
|
||||
```
|
||||
|
||||
### 角色.{id}.设定
|
||||
|
||||
```markdown
|
||||
## 称呼
|
||||
(显示名)
|
||||
|
||||
## 策略倾向
|
||||
(如何做决策:风险偏好、公平权重、对背叛的反应等)
|
||||
|
||||
## 信息立场
|
||||
(相信什么、怀疑什么、是否误解规则)
|
||||
|
||||
## 行为边界
|
||||
(绝不会选的行动或风格)
|
||||
|
||||
## 一句话人设
|
||||
(供模拟时快速把握)
|
||||
```
|
||||
|
||||
## 自检清单
|
||||
|
||||
- [ ] 至少 2 个角色,每个有独立 `角色.{id}.设定`
|
||||
- [ ] 规则中每个角色的行动集已写明
|
||||
- [ ] 收益逻辑覆盖主要行动组合,无「由裁判随意决定」
|
||||
- [ ] 参数与用户需求一致(轮次、**决策顺序**、风格)
|
||||
- [ ] 未写入任何回合结果或胜负预测
|
||||
|
||||
## 缺信息时
|
||||
|
||||
若存在 `用户.worker答复`,须与 `用户.博弈需求` 一并理解,**勿重复询问已答内容**。
|
||||
|
||||
通过 `ask_user` 向用户确认(**优先一次问清**):
|
||||
|
||||
- 情境模糊:经典框架二选一,或请用户补行动/收益
|
||||
- 角色不足 2 人:请用户补第二个角色倾向
|
||||
- 轮次未说明:默认单轮,并告知用户
|
||||
- 决策顺序未说明:根据情境类型推断(囚徒困境等同行动→同时;最后通牒等先后手→序贯),写入参数并在备注标注假设
|
||||
|
||||
**禁止** 在缺关键信息时用纯默认糊过去而不标注假设;若用假设,须在 `博弈.参数.草稿` 的备注中写明。
|
||||
@@ -1,204 +0,0 @@
|
||||
---
|
||||
id: world-engine
|
||||
skill: roleplay-game-theory
|
||||
name: 世界运行机
|
||||
description: >-
|
||||
中立裁判:仅按规则处理行动、更新世界状态、生成客观事实叙述与各角色可见信息。
|
||||
不做角色式决策、不写内心思考、不做剧情推演。
|
||||
version: 1
|
||||
inputTags:
|
||||
- "情境.实验.设定"
|
||||
- "博弈.规则.草稿"
|
||||
- "博弈.参数.草稿"
|
||||
- "博弈.角色列表"
|
||||
- "世界.当前状态"
|
||||
- "世界.当前轮次"
|
||||
- "运行.事件流"
|
||||
- "角色.*.行动"
|
||||
outputTags:
|
||||
- "世界.当前状态"
|
||||
- "世界.当前轮次"
|
||||
- "世界.裁决.记录"
|
||||
- "场景.公开叙述"
|
||||
- "角色.*.可见信息"
|
||||
- "运行.事件流"
|
||||
- "输出.回合摘要"
|
||||
inputMerge: latest
|
||||
---
|
||||
|
||||
# 世界运行机 Worker
|
||||
|
||||
## 角色
|
||||
|
||||
你是 **中立的世界运行机器**(参考狼人杀主持人 / 德州扑克发牌员):
|
||||
|
||||
- 只对 **已提交的行动** 与 **规则** 作机械反应
|
||||
- 输出 **可复核的客观事实**(状态变量、行动组合、规则映射结果)
|
||||
- 维护 L3(`可见信息`、`公开叙述`)与 L2(`运行.事件流` **追加**)
|
||||
- **绝不** 替角色做决策、**绝不** 写角色内心、**绝不** 做剧情化推演
|
||||
|
||||
shared-context 已注入(含 L0~L3 分层说明)。
|
||||
|
||||
## 硬边界:你只读「行动」,不读「思考」
|
||||
|
||||
```text
|
||||
你的输入(来自 role-decide) 你不读、不写
|
||||
────────────────────────────────────────────────────
|
||||
角色.{id}.行动(行动选择 + 说话) 角色.{id}.思考(仅用户可见)
|
||||
```
|
||||
|
||||
- **行动选择** → 规则裁决
|
||||
- **说话** → 写入 `场景.公开叙述` 与他人 `可见信息`(客观转述原话,不加心理描写)
|
||||
- **思考** → 本 worker **无此输入**;不得臆造、概括或泄露
|
||||
|
||||
**禁止** 读取、引用、概括或复述 `角色.*.思考`(及旧 tag `推理.候选`)。
|
||||
**禁止** 在 `场景.公开叙述`、`输出.回合摘要`、`世界.裁决.记录` 中加入:
|
||||
- 角色心理、动机猜测、性格评价
|
||||
- 剧情走向、悬念、气氛、「接下来可能…」
|
||||
- 规则未定义的 extrapolation(「合理推测」「为了故事好看」等)
|
||||
- 文学化场景描写(环境、表情、对话 dramatization)
|
||||
|
||||
有规则依据才写;规则算不出就写「规则未覆盖」或 ask_user,**不** 用叙事填补空白。
|
||||
|
||||
## 两种运行模式(由输入自动判断)
|
||||
|
||||
```text
|
||||
若无任何 角色.*.行动 → 开局 / 新轮次「发牌」模式
|
||||
若已有全部待决策角色的 行动 → 裁决模式
|
||||
若序贯进行中:仅部分角色有 行动,且 博弈.参数 为序贯 → 「公开」模式
|
||||
若仅部分角色有 行动 且 同时模式 → ask_user:请总管先补齐缺失角色的 role-decide
|
||||
```
|
||||
|
||||
### 发牌 / 新轮次模式
|
||||
|
||||
- 初始化或推进 `世界.当前轮次`
|
||||
- 根据 `博弈.规则.草稿` 写本轮回合各角色 **各自能看见什么** → `角色.{id}.可见信息`
|
||||
- 写 `场景.公开叙述`(**公共桌面上的客观信息**:轮次、已知状态、已公开历史结果)
|
||||
- **不** 写行动候选、**不** 写任何角色的思考
|
||||
|
||||
### 裁决模式
|
||||
|
||||
- 读取所有 `角色.*.行动` 中的 **行动选择** 字段,按规则计算结果
|
||||
- 将各角色的 **说话**(若有)客观写入 `场景.公开叙述`
|
||||
- 写 `世界.裁决.记录`(结构化:输入行动组合 → 规则条款 → 数值/状态变化)
|
||||
- 更新 `世界.当前状态`
|
||||
- 写 `场景.公开叙述`(**本轮已发生的客观结果**,所有人可见)
|
||||
- 为下一轮准备各 `角色.{id}.可见信息`(若终局则写终局可见信息)
|
||||
- 写 `输出.回合摘要`(**纯事实摘要**,见下)
|
||||
- **追加** `运行.事件流`(L2 记忆,见下)
|
||||
|
||||
### 序贯 · 公开模式(非裁决)
|
||||
|
||||
当 `博弈.参数.草稿` 为 **序贯**,且仅 **部分** 角色已有本轮 `行动`:
|
||||
|
||||
- **只**公布序贯顺序上 **最新已提交** 角色的 **行动选择** 与 **说话**
|
||||
- 更新 **尚未决策** 角色的 `角色.{id}.可见信息`(使其能看见已公开行动)
|
||||
- **不**写 `世界.裁决.记录`、**不**写 `输出.回合摘要`、**不**更新最终收益(等全员齐后再裁决)
|
||||
- **不**泄露尚未决策角色的任何信息
|
||||
|
||||
## 信息边界(关键)
|
||||
|
||||
`角色.{id}.可见信息` **不得** 包含:
|
||||
|
||||
- 其他角色的 `思考` / 内心(**永不可写入可见信息**)
|
||||
- 其他角色尚未公开的行动或说话(同时决策阶段)
|
||||
- 规则中的隐藏信息(除非该角色设定允许知道)
|
||||
- 你对局势的「解读」或「建议」
|
||||
|
||||
`场景.公开叙述` 只含 **所有参与者都已知或刚一起见证的客观内容**——像牌局记录,不像小说段落。
|
||||
|
||||
## 各 tag 格式
|
||||
|
||||
### 世界.当前状态
|
||||
|
||||
```markdown
|
||||
## 状态摘要
|
||||
(结构化键值:收益、关键变量、是否终局;无形容词堆砌)
|
||||
|
||||
## 历史指针
|
||||
(可选:已发生轮次列表)
|
||||
```
|
||||
|
||||
### 世界.当前轮次
|
||||
|
||||
纯数字字符串,如 `1`、`2`。
|
||||
|
||||
### 世界.裁决.记录
|
||||
|
||||
```markdown
|
||||
## 本轮行动
|
||||
| 角色 | 行动选择 | 说话(若有) |
|
||||
|------|----------|--------------|
|
||||
|
||||
## 规则适用
|
||||
(引用 博弈.规则.草稿 中具体条款,逐步映射)
|
||||
|
||||
## 状态变化
|
||||
(前后对比;仅规则推出的变化,可复核)
|
||||
```
|
||||
|
||||
### 场景.公开叙述
|
||||
|
||||
```markdown
|
||||
(第三人称 **事实陈述**:轮次、各角色已公开的行动选择与说话、状态变化。禁止内心、禁止剧情、禁止推测。)
|
||||
```
|
||||
|
||||
示例(好):「第 2 轮。A 选择合作,B 选择背叛。按规则,A 收益 -1,B 收益 +3。」
|
||||
示例(坏):「B 冷酷地背叛了信任他的 A,局面变得紧张……」
|
||||
|
||||
### 角色.{id}.可见信息
|
||||
|
||||
```markdown
|
||||
## 他人已公开的言行
|
||||
(仅 world-engine 从 行动.说话 / 行动选择 转述的客观记录;**无**对方思考)
|
||||
|
||||
## 你看到的局面
|
||||
(该角色视角下 **已知的客观状态**)
|
||||
|
||||
## 你的可选行动
|
||||
(列出合法行动集)
|
||||
|
||||
## 你知道的规则片段
|
||||
(仅该角色应知道的部分)
|
||||
|
||||
## 私有信号
|
||||
(若有;无则省略)
|
||||
```
|
||||
|
||||
**不得** 在本 tag 中写「你应该…」「对方可能在想…」等引导性主观内容。
|
||||
|
||||
### 输出.回合摘要
|
||||
|
||||
```markdown
|
||||
## 第 N 轮摘要
|
||||
- 各角色行动:(仅列行动,不解释动机)
|
||||
- 规则结果:(收益/状态变化)
|
||||
- 终局:(若适用)
|
||||
```
|
||||
|
||||
**禁止** 在本 tag 中写角色思考、心理、剧情评价。用户要看思考 → 由 present-round 读各 `角色.{id}.思考`。
|
||||
|
||||
### 运行.事件流(L2 · 追加式记忆)
|
||||
|
||||
**裁决模式**下须 **在原有内容后追加** 本轮条目(读 input 中的 `运行.事件流`,勿整段覆盖):
|
||||
|
||||
```markdown
|
||||
---
|
||||
## 第 N 轮
|
||||
- 公开局面:(一句,来自 场景.公开叙述 要点)
|
||||
- 各角色行动:(行动选择,不含动机)
|
||||
- 规则结果:(收益/状态变化要点)
|
||||
```
|
||||
|
||||
发牌 / 序贯公开模式 **不** 写事件流(仅裁决后追加)。
|
||||
role-decide 读全流作历史;L3 `可见信息` **不必** 重复全部旧轮内容。
|
||||
|
||||
## 自检
|
||||
|
||||
- [ ] 裁决后已 **追加** `运行.事件流`,未覆盖历史
|
||||
- [ ] 未替任何角色选择行动
|
||||
- [ ] 未写任何角色内心或动机
|
||||
- [ ] 裁决每一步可追溯到 博弈.规则.草稿 具体条款
|
||||
- [ ] 各 可见信息 无交叉泄露
|
||||
- [ ] 公开叙述、裁决记录、回合摘要 **三者事实一致**
|
||||
- [ ] 全文无剧情化、无规则外推测
|
||||
@@ -1,41 +0,0 @@
|
||||
# scene-roleplay(TODO)
|
||||
|
||||
## 定位
|
||||
|
||||
场景扮演 + 角色卡互动(**一个 skill 包**,不拆 author / play)。
|
||||
|
||||
```text
|
||||
instantiate 用户.角色需求、角色.{id}.设定、角色卡.*、世界.规则、用户.控制模式 …
|
||||
run 用户行动 → 世界裁决 → 角色反应 → 输出.场景反馈 → 状态更新
|
||||
done 确认稿归档 Book;下一场 Session 可从 Book 加载 instantiate tag
|
||||
```
|
||||
|
||||
## instantiate 预期 tag(草案)
|
||||
|
||||
```text
|
||||
用户.角色需求 | 用户.互动偏好 | 用户.控制模式
|
||||
角色.{id}.设定 | 角色卡.口吻样例 | 角色卡.行为边界 | 角色卡.确认稿
|
||||
世界.规则 | 世界.当前状态
|
||||
场景.当前状态(可选开场)
|
||||
```
|
||||
|
||||
可选 **setup worker** 把用户口语整理为上述 tag(仍是 worker,非第二总管)。
|
||||
|
||||
## run 预期 tag(草案)
|
||||
|
||||
```text
|
||||
用户.行动输入 | 用户.行动意图 | 用户.导演指令
|
||||
场景.可见信息 | 场景.隐藏信息
|
||||
角色.{id}.记忆 | 信念 | 行动.候选 | 台词.候选 | 反应
|
||||
行动.裁决结果
|
||||
输出.场景反馈 | 输出.互动回复
|
||||
更新.世界状态 | 更新.角色状态
|
||||
```
|
||||
|
||||
## 下一步
|
||||
|
||||
- [ ] 写 `orchestrator.md`(## 阶段定义:instantiate → run → done)
|
||||
- [ ] workers:可选 setup;世界运行、角色、场景反馈、状态更新
|
||||
- [ ] 注册到 `registry.yaml`
|
||||
|
||||
见 `docs/tag-blackboard.md` §2。
|
||||
@@ -1,37 +1,32 @@
|
||||
# world-simulator(规划中)
|
||||
# world-simulator
|
||||
|
||||
## 定位
|
||||
默认 skill 包。术语与作者清单:`docs/ui-glossary.md` §0、`docs/world-simulator-modules.md`。
|
||||
|
||||
RP 代入式交互小说 · **世界模拟器**:用户扮演固定角色,在预先设定好的世界观里遇见不同的人、不同的事。
|
||||
交互范式接近 SillyTavern,但本包专精为 **跑团式世界运转**。
|
||||
|
||||
架构见 `docs/architecture.md`、`docs/skill-design-guide.md`、`docs/context-assembly.md`。
|
||||
|
||||
## 工程结构
|
||||
## 目录
|
||||
|
||||
```text
|
||||
orchestrator.md manifest:skill 注册表 + 验收 + readiness(待写)
|
||||
workers/ 各 instantiate / run skill(SKILL.md)
|
||||
shared-context.md 包级固定上下文上半(待写)
|
||||
instantiate-orchestrator.md 【遗留】Step1–14 管道草稿;将拆为 workers/ 能力库后废弃主流程地位
|
||||
orchestrator.md # 调度 manifest + uiPrompt
|
||||
recipes/
|
||||
catalog.yaml # 导演选项列表
|
||||
{id}/recipe.yaml # 单份导演(建议 steps,可调味)
|
||||
modules/
|
||||
catalog.yaml # 能力目录(id / 中文名 / declaration / artifact)
|
||||
{id}/prompt.md # 能力正文(design-step 注入)
|
||||
workers/
|
||||
design-flow/SKILL.md # 编排剧本骨架
|
||||
design-step/SKILL.md # 执行当前能力步
|
||||
opening-generator/SKILL.md # 可选开场白
|
||||
worker-templates/
|
||||
{ref}.yaml # 游玩演员默认契约(写入 Worker 集时合并)
|
||||
```
|
||||
|
||||
**不注册到 `registry.yaml`**,直至 run manifest 与 readiness 定稿。
|
||||
## 运行
|
||||
|
||||
## 实例化(design)
|
||||
```text
|
||||
选导演(recipes)→ design-flow → 验收近期 设计.创作流程(status=open)
|
||||
→ 反复 design-step(注入 modules/{id}/prompt.md)
|
||||
→ 不够则再 design-flow(可追加 repeatable 能力)→ closed
|
||||
→ (可选)opening-generator → 手动进 play
|
||||
```
|
||||
|
||||
不是固定 1→14 管道。agent 在 design stage:
|
||||
|
||||
1. 调 **交互范式** skill → `设计.run_skill清单`
|
||||
2. 按清单倒推,按需 invoke 其他 instantiate skill(世界蓝图、变量目录、叙事指南…)
|
||||
3. `declare_instance_ready` → play
|
||||
|
||||
原 `instantiate-orchestrator.md` 中的 Step 表可迁移为 **workers/** 下独立 SKILL.md,供 agent 选用。
|
||||
|
||||
## 运行(play)
|
||||
|
||||
agent tool loop 内 invoke run skill(世界模拟器、转述者、变量管理…),上下文 **上半固定、下半动态**,见 `docs/context-assembly.md`。
|
||||
|
||||
## 与 scene-roleplay
|
||||
|
||||
`scene-roleplay` 为通用占位;本包是其 **世界层 + 固定 POV + 跑团式流向** 专精版。
|
||||
旧分步 `design-core` / `design-fixed` / `design-worker` / `design-refine` / `design-common.md` **已移除**,勿再添加。
|
||||
|
||||
@@ -1,310 +0,0 @@
|
||||
---
|
||||
name: world-simulator-instantiate
|
||||
description: >-
|
||||
何时选用:正在从零搭建「世界模拟器」skill 包的实例化阶段(设计规格,非运行游玩)。
|
||||
适用:RP 代入式交互小说;用户扮演固定角色,在预设世界观中遇人遇事;偏跑团而非单角色倾向型 AIRP。
|
||||
本 skill 指导初始化 LLM 选择下一步,并逐步撰写 Step1–14。
|
||||
不适用:已实例化完毕只需 run 游玩;写其它 skill 包。
|
||||
category: dialogue
|
||||
bookKind: dialogue
|
||||
version: 0.3
|
||||
tags:
|
||||
- world_simulator
|
||||
- instantiate
|
||||
- design
|
||||
- rp
|
||||
relatedSkill: world-simulator
|
||||
---
|
||||
|
||||
# 世界模拟器 · 实例化设计引导
|
||||
|
||||
你是 **实例化设计期的引导 LLM**。职责:在「世界模拟器」大工程里 **一次只推进一个 Step**,把实例化规格写清楚。
|
||||
|
||||
**不做:** 模拟游玩、调度 run 阶段 worker、一次性写完 Step1–14。
|
||||
|
||||
运行期总管见同包 `orchestrator.md`(待写)。本文档只服务 **instantiate 规格的设计与填充**。
|
||||
|
||||
---
|
||||
|
||||
## 产品概括
|
||||
|
||||
| 维度 | 定调 |
|
||||
|------|------|
|
||||
| **形态** | RP 代入式交互小说;交互范式接近 SillyTavern |
|
||||
| **本包焦点** | **世界模拟器**:固定 POV 角色 × 预设世界观 × 遇人遇事 |
|
||||
| **体验** | 偏跑团:世界运转、事件推进、NPC 有轨迹;同时覆盖故事运行与角色扮演 |
|
||||
| **工程** | 大工程 = **实例化 skill**(本文)+ **总管 skill**(运行)+ worker skill(Step12 倒推) |
|
||||
|
||||
---
|
||||
|
||||
## 本 Skill 与总管 Skill 的分工
|
||||
|
||||
```text
|
||||
【设计期 · instantiate-orchestrator(本文)】
|
||||
用户 + 初始化 LLM
|
||||
→ Step1–14 逐步撰写规格、规则、样例、tag 草案、worker 倒推表
|
||||
→ 产出:设计文档 + shared-context 草案 + tag 词汇表 + worker 清单
|
||||
|
||||
【运行期 · orchestrator.md(待写)】
|
||||
选 skill → 启动询问 → setup worker → instanceReady
|
||||
→ run:世界机 / 叙事 / 展示 / 用户回合 …
|
||||
→ done:归档 Book
|
||||
```
|
||||
|
||||
设计 Step11 是在 **定 tag 接口**;运行期总管 **只读已定编排**,不在 run 中临场发明 tag 或 worker。
|
||||
|
||||
---
|
||||
|
||||
## 实例化步骤总览
|
||||
|
||||
每一步的正文 **逐步展开**;下表为 **经用户确认的 Step 含义**(v0.3)。
|
||||
|
||||
| Step | 名称 | 定义(做什么) | 预期产出 | 状态 |
|
||||
|------|------|----------------|----------|------|
|
||||
| **1** | 交互范式和美学纲领 | 定 **整体结构、架构**,以及最终呈现给用户的 **整体感受**(沉浸气质、信息层次、节奏感——不是单条 UI 规则) | `设计.交互范式`、`设计.美学纲领` | 待撰写 |
|
||||
| **2** | 实现机制 | **非程序机制**。实例化进程中的 **锚点设定**:为实现 Step1 而必须写进世界里的 **关键设定**(世界如何「撑住」那套交互与美学) | `设计.实现机制.锚点` | 待撰写 |
|
||||
| **3** | 故事流向 | **极宽广**。协助定义开场方向、故事可走的主轴(如:高中 → 考试/学习/恋爱;电竞 → 比赛/训练/舆论)——不是细纲,是 **流向域** | `设计.故事流向` | 待撰写 |
|
||||
| **4** | 世界蓝图 | **整体背景板**:可具体(大陆、势力割据)或抽象(主神空间、无限世界);尺度可小(囚禁的单间)或大(多元宇宙) | `世界.蓝图.草稿` | 待撰写 |
|
||||
| **5** | 拓扑图形 | **可多次调用的拓扑规格**。不限于地图:职业进阶路径、人物关系网、区域连通……凡满足「节点 + 边 + 约束」的均可 | `世界.拓扑.{id}.草稿`(可多份) | 待撰写 |
|
||||
| **6** | 生成规则 | **用来生成实例的规则**(元规则)。可多次调用;run 阶段也可用于 **实时生成** 故事内所需内容 | `世界.生成规则.{id}.草稿`(可多份) | 待撰写 |
|
||||
| **7** | 具体实例 | 用 Step6 规则 **逐条生成** 的示例;每份实例 **必须声明遵循哪条生成规则**。可多次:角色、物品、功法等 | `实例.{类型}.{id}.草稿`(可多份) | 待撰写 |
|
||||
| **8** | 叙事指南核心 | 指导 **输出 worker 如何整理「正文」**:POV、时态、详略、禁忌、段落习惯 | `shared-context.md` 叙事核心章 | 待撰写 |
|
||||
| **9** | 语料库与场景策略集 | 口吻样例、场景类型模板、对话/描写/节奏策略 | `语料.场景策略集.草稿` | 待撰写 |
|
||||
| **10** | 变量管理与变化规则 | 世界/角色/场景 **状态变量**;读写时机;谁有权改;变化约束 | `变量.目录.草稿`、`变量.变化规则.草稿` | 待撰写 |
|
||||
| **11** | tag 目录与分配规则 | 全包 tag 命名、阶段(草稿/确认稿)、谁写谁读 | `tag.目录.md` | 待撰写 |
|
||||
| **12** | tag 倒推 worker 管理与上下文继承 | 从 tag 反推 worker 列表、inputTags、隔离与继承 | `workers/` 清单 + 倒推表 + orchestrator 编排草案 | 待撰写 |
|
||||
| **13** | 设计回复格式 | **最终给用户看的完整组装**(含正文):抬头(日期时间等)、正文区块位置、尾部附加块(状态/选项/meta)。Step8 只管正文;本步管 **整页/整条回复** | `输出.回复格式.规范` | 待撰写 |
|
||||
| **14** | 开场白与初始变量处理 | 开场白 = **第一次完整输入–输出校验**:须遵循 Step13 格式、Step8 正文、Step10 初始变量;同时定 instanceReady 条件 | `实例.开场.规范`、`instanceReadyWhen` 草案 | 待撰写 |
|
||||
|
||||
### Step8 与 Step13 的分工(重要)
|
||||
|
||||
```text
|
||||
Step8 叙事指南核心 → 「正文」怎么写、怎么排段落、什么气质
|
||||
Step13 设计回复格式 → 「整条回复」怎么组装:壳层 + 正文槽位 + 附加模块
|
||||
Step14 开场白 → 用真实开场跑通 8 + 13 + 10,当作验收轮
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 可重复调用的 Step(5 / 6 / 7)
|
||||
|
||||
Step5、Step6、Step7 **不是「各做一次」**,而是 **按 id 多次产出**:
|
||||
|
||||
| Step | 多次调用含义 | 命名建议 |
|
||||
|------|--------------|----------|
|
||||
| 5 拓扑图形 | 每张地图、每条进阶树、每个关系网各一份 | `世界.拓扑.{id}.草稿` |
|
||||
| 6 生成规则 | 每种生成逻辑各一条规则 | `世界.生成规则.{id}.草稿` |
|
||||
| 7 具体实例 | 每条规则下可生成多个实例;实例须 **引用** 所遵循的规则 id | `实例.{类型}.{id}.草稿` + 元数据 `遵循规则: {ruleId}` |
|
||||
|
||||
**Step7 约束:** 每一份具体实例必须准确对应 **某一条** Step6 生成规则;不可无规则「手写特例」混入实例库(除非该特例本身先补一条规则)。
|
||||
|
||||
---
|
||||
|
||||
## 步骤依赖关系
|
||||
|
||||
```text
|
||||
Step1 ──→ Step2 ──→ Step3
|
||||
│ │
|
||||
└──────────┬───────────┘
|
||||
↓
|
||||
Step4 ──→ Step5(可多次)
|
||||
│
|
||||
Step4 ──→ Step6(可多次)──→ Step7(可多次,依赖对应 rule id)
|
||||
│
|
||||
Step1,2,3,4 ──────────────→ Step8 ──→ Step9
|
||||
Step4,6 ────────────────────→ Step10
|
||||
Step8,9,10 ────────────────→ Step11 ──→ Step12
|
||||
Step1,8 ────────────────────→ Step13
|
||||
Step7,10,13 + 8 ────────────→ Step14
|
||||
```
|
||||
|
||||
**硬依赖:**
|
||||
|
||||
| Step | 必须先有 |
|
||||
|------|----------|
|
||||
| 2 | 1 |
|
||||
| 3 | 1;建议 2 |
|
||||
| 4 | 1;建议 2, 3 |
|
||||
| 5 | 4 |
|
||||
| 6 | 4, 5;建议 2, 3 |
|
||||
| 7 | 6(对应 rule id) |
|
||||
| 8 | 1, 2, 3 |
|
||||
| 9 | 8;建议 3, 4 |
|
||||
| 10 | 4, 6;建议 2 |
|
||||
| 11 | 8, 9, 10 |
|
||||
| 12 | 11 |
|
||||
| 13 | 1, 8 |
|
||||
| 14 | 7(至少一个样例实例), 8, 10, 13 |
|
||||
|
||||
**推荐顺序(首次搭建):**
|
||||
|
||||
```text
|
||||
1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → 9 → 10 → 11 → 12 → 13 → 14
|
||||
```
|
||||
|
||||
Step5 / 6 / 7 在 run 设计期也可 **追加** 新 id,不必等全链结束。
|
||||
|
||||
---
|
||||
|
||||
## 如何选择下一步
|
||||
|
||||
每轮开始或用户说「继续 / 下一步 / 做 Step N」时:
|
||||
|
||||
### 1. 读取进度
|
||||
|
||||
检查包内各 Step 产出与 `设计.Step{N}.确认稿` / 多 id 条目(拓扑、规则、实例)是否已有。
|
||||
|
||||
### 2. 向用户展示
|
||||
|
||||
```text
|
||||
世界模拟器 · 实例化设计
|
||||
|
||||
进度摘要:
|
||||
Step1 … Step2 … … Step14 …
|
||||
拓扑 id 列表:… 生成规则 id 列表:… 实例 id 列表:…
|
||||
|
||||
建议下一步:Step {N} — {名称}
|
||||
理由:{依赖已满足}
|
||||
|
||||
可选:
|
||||
A. 按建议做 Step {N}
|
||||
B. 指定 Step 编号
|
||||
C. 为 Step 5 / 6 / 7 新增一个 id(多次调用)
|
||||
D. 修订某已完成 Step 或某个 id
|
||||
E. 查看摘要
|
||||
```
|
||||
|
||||
### 3. 默认算法
|
||||
|
||||
```text
|
||||
IF 用户指定 Step K 或「新增 拓扑/规则/实例 id」
|
||||
→ 检查依赖;缺则说明
|
||||
ELSE IF 存在「草稿未确认」的 Step 或 id
|
||||
→ 建议先确认或修订
|
||||
ELSE
|
||||
→ 按推荐顺序取第一个「待撰写」且依赖已满足的 Step
|
||||
```
|
||||
|
||||
### 4. 单 Step 工作模式(命中即停)
|
||||
|
||||
```text
|
||||
1. 用 3~5 句复述本 Step 目标(用上表定义,勿偷换概念)
|
||||
2. ask_user:本 Step 关键问题(见下节)
|
||||
3. 与用户迭代草稿
|
||||
4. 写入约定路径 / tag;多 id 步须写清 id 与交叉引用
|
||||
5. 自检
|
||||
6. 用户确认 → 标「确认稿」→ 停止;提示下次入口
|
||||
```
|
||||
|
||||
**禁止:** 一个 turn 连写多个 Step;未经确认将草稿当定稿。
|
||||
|
||||
---
|
||||
|
||||
## 各 Step 启动问句
|
||||
|
||||
| Step | 至少问什么 |
|
||||
|------|------------|
|
||||
| **1** | 整体架构几层(用户 / 世界 / 叙事 / meta)?最终呈现想让人 **感受到** 什么(例:冷峻观测、沉浸第二人称、群像剧场)? |
|
||||
| **2** | 为撑住 Step1,世界里 **必须钉死** 的设定有哪些(例:信息可见性规则、权力结构、时间粒度)? |
|
||||
| **3** | 本世界的 **流向域** 有哪些(例:高中:学业/恋爱/社交;电竞:赛事/训练/舆论)?开场倾向哪一条? |
|
||||
| **4** | 背景板尺度?具体地理 vs 抽象空间?核心冲突与时代? |
|
||||
| **5** | 本 id 拓扑 **类型**(地图 / 关系网 / 进阶树 / 其他)?节点与边?约束? |
|
||||
| **6** | 本 id 规则 **生成什么**?输入依赖哪些拓扑/蓝图?确定性 vs 随机?实例化 vs run 实时共用? |
|
||||
| **7** | 遵循哪条 `生成规则.{id}`?本实例类型与规模? |
|
||||
| **8** | 正文 POV、时态、篇幅、禁止出现在正文里的 meta? |
|
||||
| **9** | 需要哪些场景类型模板?固定口吻样例? |
|
||||
| **10** | 跟踪哪些变量?初始值谁定?变化触发条件? |
|
||||
| **11** | tag 前缀与生命周期?instantiate / run 分界? |
|
||||
| **12** | run 循环 sketch;展示 worker 与生产 worker 边界 |
|
||||
| **13** | 一条回复含哪些 **模块**(抬头字段、正文槽、尾栏)?各模块数据来源 tag? |
|
||||
| **14** | 开场白文本;初始变量赋值;是否通过格式与叙事自检?instanceReady 条件? |
|
||||
|
||||
---
|
||||
|
||||
## 单 Step 自检清单
|
||||
|
||||
```text
|
||||
- [ ] 与 Step1 整体感受 / 架构无冲突
|
||||
- [ ] Step2 锚点未被误写成程序流程或 run worker 调度
|
||||
- [ ] Step7 实例已标明所遵循的 Step6 rule id
|
||||
- [ ] Step8 只管正文;Step13 才定义壳层与模块组装
|
||||
- [ ] Step14 明确引用 Step13 格式与 Step10 初始变量
|
||||
- [ ] 多 id 产物(5/6/7)id 唯一、可交叉引用
|
||||
- [ ] 用户已确认
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 启动询问
|
||||
|
||||
**向用户展示:**
|
||||
|
||||
```text
|
||||
你正在搭建「世界模拟器」的 **实例化设计**(不是开始游玩)。
|
||||
|
||||
请告诉我:
|
||||
1. 全新开始,还是已有部分 Step / 文档?(可粘贴)
|
||||
2. 严格按推荐顺序,还是指定 Step / 指定新增拓扑·规则·实例 id?
|
||||
3. (可选)对标作品或气质(供 Step1、Step3 参考)
|
||||
|
||||
确认后给出「建议下一步」,且 **只做一个 Step 或一个 id**。
|
||||
```
|
||||
|
||||
**设计期 tag(可选):**
|
||||
|
||||
```text
|
||||
用户.实例化设计.意图
|
||||
用户.实例化设计.进度摘要
|
||||
设计.Step{N}.草稿 | 设计.Step{N}.确认稿
|
||||
世界.拓扑.{id}.*
|
||||
世界.生成规则.{id}.*
|
||||
实例.{类型}.{id}.*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 总管思维链(设计期)
|
||||
|
||||
```text
|
||||
1. 是否在 run 游玩?→ 是则改读 orchestrator.md
|
||||
2. 当前 Step / id 状态?依赖是否满足?
|
||||
3. 用户指定 Step 或「新增 id」?否则用默认顺序
|
||||
4. ask_user → 只写当前 Step 或当前 id
|
||||
5. 自检 → 用户确认 → 更新进度 → 命中即停
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 禁用行为
|
||||
|
||||
```text
|
||||
- 不要一次性写完 Step1–14
|
||||
- 不要把 Step2 写成程序、Runtime 或 API 机制
|
||||
- 不要把 Step3 写成细纲或分章目录(它是流向域)
|
||||
- 不要写无 Step6 rule id 绑定的 Step7 实例
|
||||
- 不要在 Step8 里定义抬头/尾栏/状态栏(那是 Step13)
|
||||
- 不要跳过 Step11 直接写 worker inputTags
|
||||
- 不要照搬 roleplay-game-theory 的 tag 名;本包 Step11 自定
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 与邻近 skill 的关系
|
||||
|
||||
| 包 | 关系 |
|
||||
|----|------|
|
||||
| `scene-roleplay` | 近亲;本包专精世界层 + 固定 POV + 跑团流向 |
|
||||
| `roleplay-game-theory` | 仅借鉴设计方法(`docs/skill-design-guide.md`),不照搬 tag/worker |
|
||||
|
||||
---
|
||||
|
||||
## 当前工程状态
|
||||
|
||||
```text
|
||||
instantiate-orchestrator.md v0.3 步骤定义 + 选步逻辑(本文)
|
||||
README.md v0.2 包索引
|
||||
orchestrator.md 未写
|
||||
workers/ 未写
|
||||
shared-context.md 未写
|
||||
Step1–14 正文 未写
|
||||
```
|
||||
@@ -0,0 +1,163 @@
|
||||
# 美学纲领与交互范式
|
||||
|
||||
> 能力标准形范例。程序只切割下方 **fence 块**(`meta` / `opening` / `task` / …);`##` 标题仅供人读。
|
||||
> 写法说明:`docs/world-simulator-modules.md`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 美学纲领与交互范式
|
||||
id: aesthetics-interaction
|
||||
artifact: 设计.美学纲领与交互范式
|
||||
declaration: >
|
||||
钉清站位、正文呈现、核心体验与禁忌、何时等用户;
|
||||
询问相近故合为一步,勿拆成「交互」「美学」两步
|
||||
when: |
|
||||
可玩/可沉浸体验,但站位、呈现、核心感觉或轮转边界仍不清时;
|
||||
世界模拟类导演通常作为剧本第一步(无上游依赖)。
|
||||
已有等价定稿且用户未要求重谈 → 不要重复排入。
|
||||
when_not: |
|
||||
只改实现细节且体验契约已验收;纯工具/排版;与「给玩家什么体验」无关。
|
||||
boundary: |
|
||||
本能力:体验是什么、怎么发生在用户身上、轮转怎么停。
|
||||
叙事指南:世界/助手态度口径(契约已写清的勿重复问卷)。
|
||||
世界蓝图 / 具体实例 / 生成规则:世界内容与可执行规则——本步不定。
|
||||
实现机制 / 拓扑 / 变量* / 状态栏 / 回复格式 / Worker 规格:落到可运行结构——本步不定。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
先用几句话抓住你要的「变造世界」和体验核心(想到什么写什么,不必整齐):
|
||||
|
||||
1. 原型世界是什么?变在哪里?
|
||||
例:丧尸世界,但只有我不会被感染;现代都市,但灵异是真的;也可以只说「现代都市」,变点稍后补。
|
||||
|
||||
2. 你代入吗?
|
||||
· 完全代入(我就是那个人,TA 的遭遇≈我的遭遇)
|
||||
· 部分代入 / 跟着体验(有距离)
|
||||
· 操控或旁观(角色是棋子/观察对象)
|
||||
· 其它(请写明)
|
||||
|
||||
3. 最想反复感受到的是什么?
|
||||
一句话即可——权力、求生紧张、关系拉扯、解谜、荣耀、禁忌刺激……用你自己的词。
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
与用户一起钉清一份「体验契约」:给玩家什么感受、如何参与、正文如何呈现、何时等待用户。
|
||||
|
||||
写入产物 tag(通常为 设计.美学纲领与交互范式)。
|
||||
|
||||
一次 design-step、一场对话、一次验收。参与方式与美学内容在同一步内交叉追问,不要先交「半份交互」再开「半份美学」。
|
||||
|
||||
若程序已发出默认问题:用户首答在「用户.worker答复」,开场白在「创作.能力开场白」。禁止重复同一开场;在首答基础上补洞、追问、产出。
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
1. 核心是用户想要的体验;其余询问都是为了碰到这个核心。
|
||||
2. 信息不足时宁可少写,不要强行填充。
|
||||
3. 做好随时修改的准备;探测时大胆,用户可以说不。
|
||||
4. 完善设定时不要忘掉原本的核心体验。
|
||||
5. 用户常说不清想要什么 → 展示优于提问、大胆优于保守、去道德化/常态化、具体化;负面信号同样有效。
|
||||
6. 变造世界:先抓「原型 + 变在哪里」;核心体验往往来自变种,不要写成设定百科。
|
||||
7. 同一设定不同用户要的东西可以完全不同(角斗士:荣耀 / 自由 / 血与酒)——找到核心与禁忌,不是补全世界观。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
用户首句或黑板已有的直接采纳。一次 askUser 1~2 点,优先具体选项/短场景。
|
||||
|
||||
【默认问题已覆盖】变造(原型+变点)、代入与否、最想感受到的核心。首答后按缺口补,勿重问已答清的。
|
||||
|
||||
【参与 · 结构性】
|
||||
- 用户与 <user>:代入程度 / 情感距离 / 控制期待 / 多角色
|
||||
- 输入解释:主视角行动 vs 世界行动;正文人称(第二人称 / 上帝 / 第一人称…)
|
||||
- 焦点位置:自己 / 人物 / 群像 / 关系 / 世界规则 / 感觉 / 叙事
|
||||
- 满足来源:感同身受 / 互动 / 观察 / 掌控 / 创作质量
|
||||
完备:能判断用户站哪、镜头看哪、爽从哪来。
|
||||
|
||||
【内容 · 深度随焦点】
|
||||
核心感觉;人物与关系;身体与感官;背景与规则(宜短);意义与主题。
|
||||
变造已定位的,只挖服务核心体验的部分。
|
||||
|
||||
【轮转】
|
||||
思考与抉择、言语:何时等、怎么等、例外、输入后怎么补(只确认/补细节/补心理/连带后果)。
|
||||
|
||||
【收成三块】
|
||||
体验内核(含形状:过程/张力/层次/构成/循环);呈现要点;边界禁忌。
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"brief": "一句话:用户要的核心体验",
|
||||
"变造": {
|
||||
"原型": "…",
|
||||
"变点": "…"
|
||||
},
|
||||
"参与": {
|
||||
"站位": "…",
|
||||
"代入": "完全|部分|操控|旁观|…",
|
||||
"用户与user": "情感距离 / 控制期待 / 多角色",
|
||||
"输入解释": "主视角行动 vs 世界行动等",
|
||||
"焦点": "主焦点;次要(若有)",
|
||||
"满足来源": "…"
|
||||
},
|
||||
"呈现": {
|
||||
"正文人称或体裁": "…",
|
||||
"系统扮演": "世界执行者 / …",
|
||||
"输出形态": "单段叙事 / …"
|
||||
},
|
||||
"体验": {
|
||||
"内核": "最想反复感受到的…",
|
||||
"形状": "过程|张力|层次|构成|循环|…",
|
||||
"呈现要点": ["…"],
|
||||
"边界禁忌": ["…"]
|
||||
},
|
||||
"内容摘要": {
|
||||
"核心感觉": "…",
|
||||
"人物与关系": "…",
|
||||
"身体与感官": "…",
|
||||
"背景与规则": "…",
|
||||
"意义与主题": "…"
|
||||
},
|
||||
"轮转": {
|
||||
"思考与抉择": "何时等、怎么等、例外、输入后怎么补",
|
||||
"言语": "…"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
未知字段省略或写「未定」,禁止编造。summary:`美学纲领与交互范式 · …`(点题核心体验)。
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 变造:原型与变点是否清楚(或已标未定)?
|
||||
- [ ] 代入与否 / 站位是否清楚?
|
||||
- [ ] 最想反复感受到的核心是否一句话能说清?
|
||||
- [ ] 体验内核 + 呈现要点 + 边界禁忌是否成套(可短,不可互相矛盾)?
|
||||
- [ ] 重大抉择与言语的等待边界是否够下游引用?
|
||||
- [ ] 有没有为「完整」强行填充的设定百科?
|
||||
- [ ] 有没有完善着偏离用户原话里的核心?
|
||||
- [ ] 是否误写成 Worker 列表?
|
||||
```
|
||||
|
||||
## examples
|
||||
|
||||
```examples
|
||||
好:
|
||||
- 「丧尸世界,变点是只有我不会被感染;完全代入;最想感到特权下的求生紧张与道德压力。」
|
||||
- 用户要艰苦角斗 → 禁忌写「轻松连胜」;选项带短场景。
|
||||
|
||||
坏:
|
||||
- 「现代都市,有公司有地铁…」(百科,无变点、无核心感受)
|
||||
- 用户要爽文角斗,仍按真实艰苦写满受苦
|
||||
- 「你想要什么体验?」抽象难答;或一张表全勾选
|
||||
```
|
||||
98
skills/dialogue/world-simulator/modules/catalog.yaml
Normal file
98
skills/dialogue/world-simulator/modules/catalog.yaml
Normal file
@@ -0,0 +1,98 @@
|
||||
# 共用【能力】目录(modules)
|
||||
# 各【导演】与编排都从这里选型。
|
||||
# id = modules/{id}/ 文件夹
|
||||
# name = 固定中文名(流程 JSON 的 name;同能力可多次时靠 step.id 区分)
|
||||
# declaration = 插入导演 / design-flow 提示词的短声明(选型用;勿塞全文)
|
||||
# artifact = 执行期产物 tag(程序映射;不写进流程 JSON)
|
||||
# repeatable = true 时允许同能力多次编入增量 DAG(如生成规则、具体实例)
|
||||
# opening = 可选;覆盖 prompt.md 里 ```opening 默认问题(一般只写在 prompt.md)
|
||||
#
|
||||
# 标准范例:aesthetics-interaction(美学纲领与交互范式)
|
||||
# 后来写能力:同结构 prompt.md(含默认问题)+ 本表一行 declaration
|
||||
#
|
||||
# 世界模拟器常用能力见下「体验→世界→机制→呈现→收成」;编排按需选用,勿默认全选。
|
||||
# 流程是可变增量 DAG:勿一次排完全程;可反复调用标了 repeatable 的能力。
|
||||
|
||||
modules:
|
||||
# —— 体验契约 ——
|
||||
- id: aesthetics-interaction
|
||||
name: 美学纲领与交互范式
|
||||
declaration: >-
|
||||
钉清站位、正文呈现、核心体验与禁忌、何时等用户;
|
||||
询问相近故合为一步,勿拆成「交互」「美学」两步
|
||||
artifact: 设计.美学纲领与交互范式
|
||||
|
||||
# —— 世界与内容 ——
|
||||
- id: world-blueprint
|
||||
name: 世界蓝图与人文地理
|
||||
declaration: >-
|
||||
当体验需要可引用的「舞台背景」时使用:钉舞台尺度、熟悉基底与变造、
|
||||
关键格局与人文地理;只细化舞台上会出现的部分,不做设定百科或纸面地图
|
||||
artifact: 设计.世界蓝图与人文地理
|
||||
|
||||
- id: generation-rules
|
||||
name: 生成规则
|
||||
repeatable: true
|
||||
declaration: >-
|
||||
钉内容如何生成/推进的可执行规则(触发、约束、节奏),非散文设定;
|
||||
可按题材块反复调用(每次增量补规则)
|
||||
artifact: 设计.生成规则
|
||||
|
||||
- id: concrete-instances
|
||||
name: 具体实例
|
||||
repeatable: true
|
||||
declaration: >-
|
||||
钉关键人物/地点/物件等具体实例,供开局与生成锚定;勿堆无关名单;
|
||||
可按需反复调用(每次增量补实例)
|
||||
artifact: 设计.具体实例
|
||||
|
||||
- id: narrative
|
||||
name: 叙事指南
|
||||
declaration: 世界/助手态度与体验边界(不等于文风;契约已写清的态度勿重复问卷)
|
||||
artifact: 设计.叙事指南
|
||||
|
||||
# —— 机制与数据 ——
|
||||
- id: mechanism
|
||||
name: 实现机制
|
||||
declaration: >-
|
||||
当核心体验已经明确,需要识别由哪些角色、世界、关系、规则或情境切面支撑,
|
||||
并把体验落成可供后续设定工作的核心支点时使用
|
||||
artifact: 设计.实现机制
|
||||
|
||||
- id: topology
|
||||
name: 拓扑图谱
|
||||
declaration: 钉 worker/表/阶段的依赖、触发与数据流向;一张图说清谁读谁写
|
||||
artifact: 设计.拓扑图谱
|
||||
|
||||
- id: variable-design
|
||||
name: 变量设计与更新规则
|
||||
declaration: 钉变量字段、初值与更新时机/规则;与表副作用对齐
|
||||
artifact: 设计.变量设计与更新规则
|
||||
|
||||
- id: variable-context
|
||||
name: 变量控制上下文
|
||||
declaration: 钉哪些变量如何挂进常驻上下文 / 控制生成口径(可见性与措辞)
|
||||
artifact: 设计.变量控制上下文
|
||||
|
||||
# —— 呈现 ——
|
||||
- id: status-bar
|
||||
name: 设计状态栏
|
||||
declaration: 钉用户可见状态栏:字段、刷新时机、与正文如何拼装
|
||||
artifact: 设计.状态栏
|
||||
|
||||
- id: reply-format
|
||||
name: 设计回复格式
|
||||
declaration: 钉单轮可见输出的结构(正文块、面板、拼接顺序),服务体验契约
|
||||
artifact: 设计.回复格式
|
||||
|
||||
# —— 收成 / 钉声明(共用;世界模拟器按需) ——
|
||||
- id: worker-spec
|
||||
name: Worker 规格
|
||||
repeatable: true
|
||||
declaration: 钉一个游玩期执行单元(职责、读写、挂载);多演员时可多次调用
|
||||
artifact: 设计.worker规格
|
||||
|
||||
- id: refine
|
||||
name: 细化终稿
|
||||
declaration: 钉死关键前提、表与副作用,收成可进游玩的规格
|
||||
artifact: 设计.worker集
|
||||
@@ -0,0 +1,58 @@
|
||||
# 具体实例
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 具体实例
|
||||
id: concrete-instances
|
||||
artifact: 设计.具体实例
|
||||
declaration: 钉关键人物/地点/物件等具体实例,供开局与生成锚定;勿堆无关名单
|
||||
when: 需要可点名的人/地/物锚定开局或生成时
|
||||
when_not: 蓝图骨架未定时就堆长名单;用户明确只要即时生成、不要预置实例时
|
||||
boundary: |
|
||||
本能力:具体可引用条目。
|
||||
世界蓝图与人文地理:骨架与尺度,非逐条名片。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清关键具体实例(人物/地点/物件等),写入 设计.具体实例。只保留服务体验与开局的条目。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
少而可用;每条要说清为何需要。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"人物": [{ "名": "…", "要点": "…", "为何需要": "…" }],
|
||||
"地点": [],
|
||||
"物件": [],
|
||||
"其它": []
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 删掉某条会丢掉哪段体验?说不清则删
|
||||
```
|
||||
@@ -0,0 +1,60 @@
|
||||
# 生成规则
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 生成规则
|
||||
id: generation-rules
|
||||
artifact: 设计.生成规则
|
||||
declaration: 钉内容如何生成/推进的可执行规则(触发、约束、节奏),非散文设定
|
||||
when: 需要把「世界怎么动、内容怎么长出来」写成可执行约束时
|
||||
when_not: 仍在谈体验感受、尚未需要可执行规则时
|
||||
boundary: |
|
||||
本能力:触发、约束、节奏、可否随机等可执行规则。
|
||||
变量设计与更新规则:字段与何时改值。
|
||||
实现机制:落到哪些 worker/表来执行这些规则。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清生成与推进规则,写入 设计.生成规则。须可被下游 worker/程序引用,禁止只写散文氛围。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
可执行优于文采;与体验禁忌对齐。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"触发": ["…"],
|
||||
"约束": ["…"],
|
||||
"节奏": "…",
|
||||
"例外": ["…"]
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 规则是否可被执行/检查,而非纯描写?
|
||||
- [ ] 是否与体验边界禁忌冲突?
|
||||
```
|
||||
310
skills/dialogue/world-simulator/modules/mechanism/prompt.md
Normal file
310
skills/dialogue/world-simulator/modules/mechanism/prompt.md
Normal file
@@ -0,0 +1,310 @@
|
||||
# 实现机制
|
||||
|
||||
> 能力文档。程序只切割下方 **fence 块**(`meta` / `opening` / `task` / …);`##` 标题仅供人读。
|
||||
> 写法说明:`docs/world-simulator-modules.md`;泛用规范:`docs/briefs/capability-authoring-brief.md`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 实现机制
|
||||
id: mechanism
|
||||
artifact: 设计.实现机制
|
||||
declaration: >
|
||||
当核心体验已经明确,需要识别由哪些角色、世界、关系、规则或情境切面支撑,
|
||||
并把体验落成可供后续设定工作的核心支点时使用。
|
||||
when: |
|
||||
已有「美学纲领与交互范式」或等价的体验声明,但还不能回答:
|
||||
“这个体验具体靠什么存在?”
|
||||
“拿掉哪些东西后,核心感觉就会明显变质?”
|
||||
“哪些设定切面必须被后续世界、角色与规则设计继承?”
|
||||
when_not: |
|
||||
核心体验尚未明确时,不用本能力代替「美学纲领与交互范式」决定想要什么体验。
|
||||
只需要补写完整世界、地点、组织、人物生平或具体事件时,交给「世界蓝图与人文地理」或「具体实例」。
|
||||
需要定义内容如何持续生成、演化或响应时,交给「生成规则」。
|
||||
需要定义变量、状态及更新条件时,交给「变量设计与更新规则」。
|
||||
需要决定文本如何叙述、取舍和呈现时,交给「叙事指南」。
|
||||
boundary: |
|
||||
本能力:识别支撑核心体验的关键元素及其支撑切面,说明该切面是什么、如何支撑体验,以及缺失后会损失什么。
|
||||
美学纲领与交互范式:决定用户要什么体验、以什么交互关系接近该体验;本能力不重定体验目标,也不重定谁能做什么。
|
||||
世界蓝图与人文地理:把已确认的世界支点展开成完整环境、社会和人文结构;本能力只钉住其中承担体验功能的切面。
|
||||
具体实例:把机制实例化为具体人物、地点、组织或事件;本能力不补齐实例的全部设定。
|
||||
生成规则:定义内容在游玩中如何产生、变化和延续;本能力只指出需要被规则维护的支撑条件。
|
||||
叙事指南:决定如何写出这些体验;本能力不规定文风、镜头、节奏或信息揭示方式。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
你正在执行剧本中的「实现机制」步骤。本步产物写入「设计.实现机制」。
|
||||
|
||||
这里的「机制」不是一套必须解释到底的科学原理,也不等于程序规则。它更接近科幻小说中可以直接成立的初始设定:后续内容都依赖它,但本步不必为它补写起源史或完整理论。
|
||||
|
||||
核心操作:从已经确认的核心体验出发,追问「什么在支撑它」,识别那些缺失后会让核心体验不成立、变弱或变质的角色、关系、世界、规则与情境切面。
|
||||
|
||||
执行顺序:
|
||||
1. 读取依赖产物和用户表述,提取已经确认的核心体验。只做忠实复述,不重新设计美学纲领或交互范式。
|
||||
2. 在思考阶段判断本叙事空间继承了怎样的可能性范围,以此检查候选支撑点是否可能存在。这个「基准世界」只用于推理和校验,不写入产物。
|
||||
3. 分别检查体验如何产生、如何增强、如何维持,以及多个支撑点如何共同成立。
|
||||
4. 对每个候选点做移除检验:「如果删掉或替换这个切面,核心体验会损失什么?」
|
||||
5. 只保留有明确支撑关系的主要支点。常识、装饰、完整人物设定和应由后续能力展开的内容不纳入。
|
||||
6. 描述每个支点所属的元素、承担支撑作用的切面、切面的必要结构,以及它与核心体验的关系。
|
||||
7. 若支点之间存在重要的前提、对照、制衡、循环或共同支撑关系,再单独说明;关系简单时不要强行建图。
|
||||
8. 输出符合 output 契约的 JSON,供用户验收。
|
||||
|
||||
工作姿态——「识别已经在那里之物」:
|
||||
- 不凭空另造一套体验。
|
||||
- 不把无关设定做成菜单让用户挑选。
|
||||
- 不因为某类题材常见某套设定,就直接套用固定机制。
|
||||
- 可以把用户已经表达但尚未命名的支撑关系整理成清晰语言。
|
||||
- 可以提出基于现有体验的暂定识别,交给用户修正。
|
||||
- 如果两种不同理解会导向不同的核心支点,先用一个针对性问题辨明,不要同时堆出多套方案。
|
||||
|
||||
若依赖产物内部仍有含混或矛盾,不要越权重做上一步。只询问会改变本步支撑识别的关键差异;无法在本步解决的内容写入「开放问题」。
|
||||
|
||||
若程序已发出默认问题:用户首答在「用户.worker答复」。禁止重复同一开场;在首答与依赖产物上补洞。
|
||||
|
||||
summary:`实现机制 · …`(点题主要支撑,非题材标签)。
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
1. 体验向支撑正推
|
||||
始终保持:核心体验 → 成立所需条件 → 承担该条件的具体元素 → 该元素真正相关的切面 → 切面如何支撑体验。
|
||||
不能从题材标签、常见套路或预制角色清单反推「应该具有什么」。题材只能提供可能性,不能代替支撑关系。
|
||||
|
||||
2. 支撑点不是完整设定
|
||||
同一元素可有很多面向,本步只描述承担支撑功能的那一面。
|
||||
例:「丈夫」可有职业、外貌、童年;若核心体验只依赖认知过滤,本步只写认知过滤如何运作及支撑了什么,不补完整人物小传。
|
||||
|
||||
3. 以缺失后果检验必要性
|
||||
每个支撑点至少能回答其一,最好两个都能答:
|
||||
- 它如何让某项核心体验产生、增强或持续?
|
||||
- 缺少它以后,哪项核心体验会消失、减弱或改变性质?
|
||||
只能回答「更丰富」「一般都会有」「以后可能用得上」的,不是本步核心支点。
|
||||
|
||||
4. 机制可以是不同性质的切面
|
||||
不必都是世界法则,也不必形成统一机械系统。可以是:
|
||||
角色的认知/欲望/能力/限制/心理张力;关系结构;社会制度/习俗/权力/信息条件;
|
||||
环境物理/空间/资源;被直接承认的超常前提;约束/循环/反馈;反衬/代价/对照。
|
||||
按体验所需识别性质,不把所有支点强行改写成规则。
|
||||
|
||||
5. 基准世界只作内部校验
|
||||
思考阶段判断「什么可能存在」,不要写入产物。最小充分继承:
|
||||
- 现实地球:默认现实物理、心理、社会规律。
|
||||
- 变造地球:继承现实基础,只在用户已表达或体验确实依赖处承认变造。
|
||||
- 具体作品世界:优先最近一层作品设定;原作未定义处再参考其底层世界。
|
||||
- 类型世界:只继承与当前体验有关的类型约定,不带入类型全部常见元素。
|
||||
- 从头创造:显式设定优先;未定义处用最少量常识基础。
|
||||
- 混合或二创:只处理与当前支撑点有关的继承与变造,不整理完整谱系。
|
||||
变造可表现为情境极端化、既有效果强化或新增法则。候选超出已知可能性时不要暗中加入;先确认变造是否本在用户设想中。
|
||||
|
||||
6. 初始设定可以不解释来源
|
||||
解释「它怎样支撑体验」,不要求「宇宙为什么会有它」。
|
||||
超常前提、社会常态或人物特性可作为初始事实成立;不要为显得严谨而补起源、发明者、历史沿革或伪科学理论,除非这些本身就是核心体验的支撑。
|
||||
|
||||
7. 按真实复杂度描述
|
||||
一句话能说清就用一句话;否则才按过程、张力、层次、构成、循环或关系网展开。
|
||||
多支点关系简单时用自然语言(共同支撑 / 前提 / 反衬 / 制衡);关系确实复杂才展开,不为形式制造图谱。
|
||||
|
||||
8. 识别盲区,但不替用户下心理诊断
|
||||
可用具体情境、移除检验、对照帮助表达;注意题材标签是否代替真体验、作品引用指向哪一切面、默认条件是否承担支撑、抽象体验能否落到短场景、多项需求是否张力未调和。
|
||||
不能把拒绝解释成隐藏欲望,不能把犹豫诊断为羞耻或自我欺骗。用户明确拒绝即边界;陈述与反馈不一致时只中性复述差异并请求确认。
|
||||
|
||||
9. 宁少勿多
|
||||
支撑点无预设数量。主要支撑已覆盖、剩余只是常识/装饰/后续展开对象时立即停止。
|
||||
不为显得完整而增加人物、势力、地点、规则或冲突。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
只追问会改变核心支点、支撑切面或支撑关系的缺口。每轮 1~2 点。依赖产物或用户已答清的禁止重问。
|
||||
|
||||
优先方式:
|
||||
|
||||
1. 移除检验
|
||||
暂时拿掉疑似支点,问核心感觉是否仍成立。
|
||||
例:「如果他不是在主动隐瞒,而是真的无法识别异常,这种紧张感还是你要的吗?」
|
||||
|
||||
2. 短场景落地
|
||||
抽象感觉 → 紧贴现有材料的短场景请修正。
|
||||
例:「更接近哪种瞬间:证据已经出现却被他自行合理化,还是他其实察觉了但选择不追问?」
|
||||
|
||||
3. 支撑关系核对
|
||||
已识别元素但作用不清 → 核对缺失后果。
|
||||
例:「这个身份差距主要制造不可抗拒的吸引,还是让暴露后的代价变得更高?」
|
||||
|
||||
4. 张力辨认
|
||||
两项体验可能由相反条件支撑 → 放进同一具体描述确认。
|
||||
例:「你既要长期安全,又要濒临暴露;是否意味着真正需要的是『客观上有保护,但角色主观上始终无法确信安全』?」
|
||||
|
||||
5. 引用拆解
|
||||
引用作品/类型 → 只问与支撑机制有关的切面。
|
||||
例:「你提到这部作品,主要是想保留其中的信息差、人物关系,还是那个无法撤销的超常前提?」
|
||||
|
||||
提问给出可直接采用或微调的完整句子,不罗列大批名词选项。对照只用于暴露差异,不变成设定菜单。
|
||||
|
||||
能稳妥推断时:先写成暂定支点并复述,请用户校正;不要要求用户从零发明专业术语。
|
||||
|
||||
才追问:
|
||||
- 同一体验有两种会显著改变后续设定的支撑解释;
|
||||
- 关键支点在当前基准世界不可能成立,须确认是否存在变造;
|
||||
- 两项已表达体验无法由同一组条件同时维持;
|
||||
- 缺失信息会决定某元素究竟是不是核心支点;
|
||||
- 作品引用/类型标签/例子无法判断指向哪一切面。
|
||||
|
||||
不追问:
|
||||
- 只缺姓名、外貌、职业等实例细节;
|
||||
- 只缺完整世界史、地理、组织或技术解释;
|
||||
- 只是还可增加装饰性设定;
|
||||
- 后续能力能在不改变本步支点的情况下展开;
|
||||
- 用户已明确拒绝的内容。
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
最终只输出一个合法 JSON 对象,不加代码块外说明,不使用注释,不夹带未定义的英文 id。
|
||||
|
||||
{
|
||||
"依据的核心体验": [
|
||||
"从依赖产物中忠实提取的体验锚点,不在这里重新设计"
|
||||
],
|
||||
"支撑点": [
|
||||
{
|
||||
"名称": "简短、稳定、对人可读的支撑点名称",
|
||||
"归属元素": "这个切面属于哪个角色、关系、群体、世界条件、规则或情境",
|
||||
"支撑切面": "只指出该元素中与核心体验有关的那个面向",
|
||||
"切面形态": {
|
||||
"结构": "一句话|过程|张力|层次|构成|循环|关系网",
|
||||
"概述": "用最短的充分描述说清这个切面是什么样的",
|
||||
"展开": [
|
||||
{
|
||||
"部分": "仅在确有内部结构时填写",
|
||||
"描述": "该部分在结构中的位置或作用"
|
||||
}
|
||||
]
|
||||
},
|
||||
"对应体验": [
|
||||
"该支撑点直接服务的体验锚点"
|
||||
],
|
||||
"如何支撑": "说明它通过什么条件、限制、对照或张力让体验成立",
|
||||
"缺失后果": "说明拿掉或改弱这个切面后,体验会失去什么"
|
||||
}
|
||||
],
|
||||
"支撑点关系": [
|
||||
{
|
||||
"涉及": ["支撑点名称"],
|
||||
"关系": "前提、共同支撑、反衬、制衡、递进、循环或其它自然语言关系",
|
||||
"体验作用": "这项关系为何需要被保留"
|
||||
}
|
||||
],
|
||||
"开放问题": [
|
||||
{
|
||||
"问题": "尚不能可靠确定、且会影响本步结论的问题",
|
||||
"影响": "不确定性会改变哪些支撑点或支撑关系",
|
||||
"当前暂定": "若已有最可能的理解,用可撤销的方式写明;没有则留空字符串"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
填写规则:
|
||||
- 「依据的核心体验」只建可追溯关系,不得扩写成新的美学纲领。
|
||||
- 每个「支撑点」必须同时写清归属元素、支撑切面和支撑关系(如何支撑 + 缺失后果)。
|
||||
- 简单支点「结构」填「一句话」,「展开」填空数组。
|
||||
- 只有一句话不足以保留关键结构时才用其它结构类型。
|
||||
- 「缺失后果」不能只写「体验变差」,必须指出具体损失。
|
||||
- 「支撑点关系」只记对体验有实际影响的关系;没有则空数组。
|
||||
- 基准世界、推理过程、候选菜单和被淘汰支点不得写入产物。
|
||||
- 没有开放问题时填空数组,不要制造问题。
|
||||
- 不要输出完整角色卡、世界观百科、剧情大纲、叙事规则、变量表或演员规格。
|
||||
|
||||
本步完成的定义:
|
||||
- 核心体验的主要支撑已经被覆盖;
|
||||
- 每个支撑点都通过了「如何支撑/缺了会怎样」的检验;
|
||||
- 每个元素只保留了承担支撑作用的切面;
|
||||
- 所有支点在当前叙事空间中都可能成立,没有暗中引入未经确认的变造;
|
||||
- 剩余内容属于常识、具体实例或后续能力的展开范围。
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 「依据的核心体验」是否忠实来自依赖产物,而非本步新设计?
|
||||
- [ ] 每个支撑点是否都有:归属元素、支撑切面、如何支撑、缺失后果?
|
||||
- [ ] 简单支点是否避免了不必要的「展开」?
|
||||
- [ ] 是否误写成设定菜单、完整人物卡、起源史或叙事文风指南?
|
||||
- [ ] 是否暗中引入了用户未确认的变造?
|
||||
- [ ] 宁少勿多:主要支撑已覆盖后是否停住?
|
||||
- [ ] 「支撑点关系」是否只含对体验有实际影响的项(或空数组)?
|
||||
- [ ] 开放问题是否都真正影响本步结论(无则空)?
|
||||
```
|
||||
|
||||
## examples
|
||||
|
||||
```examples
|
||||
示例一:简单支撑点
|
||||
|
||||
核心体验:「秘密长期存在,但每次接近暴露时都令人紧张。」
|
||||
|
||||
合格:
|
||||
{
|
||||
"名称": "丈夫的认知过滤",
|
||||
"归属元素": "丈夫",
|
||||
"支撑切面": "面对威胁完美家庭信念的证据时,会无意识地优先采用无害解释",
|
||||
"切面形态": {
|
||||
"结构": "一句话",
|
||||
"概述": "他的信任不是单纯迟钝,而是一种维护既有信念的认知过滤。",
|
||||
"展开": []
|
||||
},
|
||||
"对应体验": ["秘密能够长期存在", "证据接近暴露时的紧张"],
|
||||
"如何支撑": "认知过滤让可疑证据能够出现而不立刻终结秘密,使暴露风险可以反复逼近。",
|
||||
"缺失后果": "如果他能稳定、直接地识别证据,秘密会迅速结束;如果完全没有证据出现,濒临暴露的紧张也会消失。"
|
||||
}
|
||||
只描述认知切面,不补职业、外貌、成长史。
|
||||
|
||||
示例二:具有内部结构的支撑点
|
||||
|
||||
核心体验:「每次获得力量都伴随自我逐渐陌生化的诱惑与恐惧。」
|
||||
|
||||
合格:
|
||||
{
|
||||
"名称": "力量与自我侵蚀的同步增长",
|
||||
"归属元素": "超常力量",
|
||||
"支撑切面": "力量的每次增长都会永久改变使用者的一项感知、欲望或判断方式",
|
||||
"切面形态": {
|
||||
"结构": "循环",
|
||||
"概述": "危机促使角色使用力量,力量解决危机并造成侵蚀,侵蚀又让下一次使用更容易发生。",
|
||||
"展开": [
|
||||
{ "部分": "诱因", "描述": "现实危机让使用力量成为最有效的解决方式。" },
|
||||
{ "部分": "收益", "描述": "力量立即兑现效果,使继续使用具有真实吸引力。" },
|
||||
{ "部分": "代价", "描述": "每次使用都会留下不可完全逆转的自我改变。" },
|
||||
{ "部分": "反馈", "描述": "改变后的角色更容易接受下一次使用,循环因此加深。" }
|
||||
]
|
||||
},
|
||||
"对应体验": ["力量带来的诱惑", "逐渐失去自我的恐惧"],
|
||||
"如何支撑": "收益与侵蚀来自同一次行动,角色不能只取其一,因此诱惑和恐惧能够持续共存。",
|
||||
"缺失后果": "如果侵蚀可以轻易撤销,恐惧会退化成短期成本;如果力量没有即时收益,诱惑则无法成立。"
|
||||
}
|
||||
不解释力量由谁创造、完整物理理论或全部侵蚀实例。
|
||||
|
||||
示例三:支撑点之间的关系
|
||||
|
||||
{
|
||||
"涉及": ["力量与自我侵蚀的同步增长", "身边人对变化的延迟识别"],
|
||||
"关系": "共同支撑并形成时间差",
|
||||
"体验作用": "侵蚀让角色真实改变,延迟识别则给变化留下累积空间;两者共同维持「尚能隐藏但终将无法隐藏」的过程感。"
|
||||
}
|
||||
|
||||
不合格:
|
||||
- 「可以选择诅咒、寄生物、人格分裂、外星科技或邪神污染…」→ 脱离体验的设定菜单。
|
||||
- 「丈夫四十二岁,是律师,外表温和,童年…」→ 把认知切面扩成完整人物设定。
|
||||
- 「为了营造压抑美感,叙述应采用近距离视角…」→ 叙事呈现,不是支撑设定。
|
||||
- 「这种力量源于三千年前的实验事故…」→ 为可直接成立的初始设定补不必要起源史。
|
||||
```
|
||||
56
skills/dialogue/world-simulator/modules/narrative/prompt.md
Normal file
56
skills/dialogue/world-simulator/modules/narrative/prompt.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# 叙事指南
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 叙事指南
|
||||
id: narrative
|
||||
artifact: 设计.叙事指南
|
||||
declaration: 世界/助手态度与体验边界(不等于文风;契约已写清的态度勿重复问卷)
|
||||
when: 需要钉世界/助手态度口径,且美学纲领与交互范式未写清或需单独收口时
|
||||
when_not: 契约里已写清态度/禁忌,仅重复问卷
|
||||
boundary: 不等于文风;呈现与站位优先读 设计.美学纲领与交互范式
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清世界/助手态度与体验边界。写入 设计.叙事指南。
|
||||
依赖已验收的美学纲领与交互范式时先读再写;已写清的勿重复问卷。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"态度": "…",
|
||||
"边界": ["…"],
|
||||
"焦点": "…"
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 与美学纲领与交互范式不重复、不矛盾
|
||||
```
|
||||
51
skills/dialogue/world-simulator/modules/refine/prompt.md
Normal file
51
skills/dialogue/world-simulator/modules/refine/prompt.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# 细化终稿
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 细化终稿
|
||||
id: refine
|
||||
artifact: 设计.worker集
|
||||
declaration: 钉死关键前提、表与副作用,收成可进游玩的规格
|
||||
when: 前面步骤已大致谈清,需要收成可进游玩的 Worker 集时
|
||||
boundary: 产出设计.worker集 JSON;进 play 由用户手动
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉死关键前提;表/副作用;收成可进游玩的设计.worker集 JSON。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
只钉不能瞎发挥又对体验关键的东西。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"version": 1,
|
||||
"interaction": {},
|
||||
"workers": [],
|
||||
"resident_context": [],
|
||||
"tables": {}
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 验收复述含站位、体验核心、worker/表、为何没有某件
|
||||
```
|
||||
@@ -0,0 +1,60 @@
|
||||
# 设计回复格式
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 设计回复格式
|
||||
id: reply-format
|
||||
artifact: 设计.回复格式
|
||||
declaration: 钉单轮可见输出的结构(正文块、面板、拼接顺序),服务体验契约
|
||||
when: 需要钉单轮「用户看见什么、什么顺序」时(含多块拼接)
|
||||
when_not: 美学纲领与交互范式里呈现已足够且无多块结构时
|
||||
boundary: |
|
||||
本能力:单轮可见结构与拼接。
|
||||
设计状态栏:状态栏块的字段细则。
|
||||
美学纲领与交互范式:人称、系统扮演、体验边界——本步不重谈。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清单轮可见回复格式(块、顺序、可选面板),写入 设计.回复格式。对齐已验收的呈现契约。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
结构服务体验;块要少;与状态栏/终稿 tag 约定一致。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"块顺序": ["状态栏", "正文", "…"],
|
||||
"正文约定": "…",
|
||||
"可选面板": [],
|
||||
"终稿tag或拼装说明": "…"
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 是否与美学纲领的呈现/轮转一致?
|
||||
- [ ] 状态栏块是否指向 设计.状态栏(若有)?
|
||||
```
|
||||
59
skills/dialogue/world-simulator/modules/status-bar/prompt.md
Normal file
59
skills/dialogue/world-simulator/modules/status-bar/prompt.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 设计状态栏
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 设计状态栏
|
||||
id: status-bar
|
||||
artifact: 设计.状态栏
|
||||
declaration: 钉用户可见状态栏:字段、刷新时机、与正文如何拼装
|
||||
when: 体验需要程序拼状态栏+正文,或用户要持续可见关键状态时
|
||||
when_not: 纯单段叙事、明确不要 HUD/状态条时
|
||||
boundary: |
|
||||
本能力:可见状态栏字段与刷新/拼装。
|
||||
变量设计与更新规则:背后变量如何变。
|
||||
设计回复格式:整轮输出结构(状态栏可为其一块)。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清用户可见状态栏:字段、来源、刷新时机、与正文拼装方式。写入 设计.状态栏。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
只展示影响决策或沉浸的字段;与变量设计对齐。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"字段": [{ "名": "…", "来源": "…", "可见条件": "…" }],
|
||||
"刷新": "每轮|事件|…",
|
||||
"拼装": "状态栏在正文前|后|旁|…"
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 每个字段是否有变量/表来源?
|
||||
- [ ] 是否与回复格式拼装不冲突?
|
||||
```
|
||||
59
skills/dialogue/world-simulator/modules/topology/prompt.md
Normal file
59
skills/dialogue/world-simulator/modules/topology/prompt.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 拓扑图谱
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 拓扑图谱
|
||||
id: topology
|
||||
artifact: 设计.拓扑图谱
|
||||
declaration: 钉 worker/表/阶段的依赖、触发与数据流向;一张图说清谁读谁写
|
||||
when: 实现机制大致清楚,需要钉依赖边、触发边与数据流向时
|
||||
when_not: 尚未决定有哪些执行单元就先画复杂图
|
||||
boundary: |
|
||||
本能力:依赖/触发/读写流向。
|
||||
Worker 规格:单个单元契约。
|
||||
实现机制:总览「要哪些件」,本步钉件与件的边。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清拓扑:单元、依赖、触发、读写流向。写入 设计.拓扑图谱。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
一张图说清;环依赖与隐式读写必须显式写出或拆掉。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"节点": [{ "id": "…", "类型": "worker|表|阶段|…" }],
|
||||
"边": [{ "from": "…", "to": "…", "关系": "依赖|触发|读写|…" }],
|
||||
"说明": "…"
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 每个关键读写是否有边?
|
||||
- [ ] 是否与实现机制列表一致?
|
||||
```
|
||||
@@ -0,0 +1,57 @@
|
||||
# 变量控制上下文
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 变量控制上下文
|
||||
id: variable-context
|
||||
artifact: 设计.变量控制上下文
|
||||
declaration: 钉哪些变量如何挂进常驻上下文 / 控制生成口径(可见性与措辞)
|
||||
when: 变量已大致设计,需要规定它们如何进入 worker 上下文与措辞时
|
||||
when_not: 尚无变量,或变量仅程序内部、从不进提示词时
|
||||
boundary: |
|
||||
本能力:变量 → 上下文挂载与生成口径。
|
||||
变量设计与更新规则:字段与改值规则本身。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清变量如何挂进常驻上下文、控制哪些生成口径。写入 设计.变量控制上下文。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
只挂影响生成的变量;措辞服务体验,不泄露不该剧透的内部态(除非体验需要)。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"挂载": [{ "变量": "…", "挂到": "常驻|某worker|…", "措辞要点": "…" }],
|
||||
"禁止泄露": ["…"]
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 挂载是否与变量设计名单一致?
|
||||
- [ ] 剧透边界是否与体验禁忌一致?
|
||||
```
|
||||
@@ -0,0 +1,65 @@
|
||||
# 变量设计与更新规则
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`;范例见 `aesthetics-interaction`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 变量设计与更新规则
|
||||
id: variable-design
|
||||
artifact: 设计.变量设计与更新规则
|
||||
declaration: 钉变量字段、初值与更新时机/规则;与表副作用对齐
|
||||
when: 需要可追踪状态(进度、关系、资源等)且要写清谁何时改时
|
||||
when_not: 无状态纯对话、或状态仅散文描述从不程序化时
|
||||
boundary: |
|
||||
本能力:字段、初值、更新规则、与副作用。
|
||||
变量控制上下文:这些变量如何进入提示词口径。
|
||||
设计状态栏:哪些对用户可见。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
钉清变量字段、初值与更新规则,写入 设计.变量设计与更新规则。与表/副作用命名对齐。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
字段要少;更新规则可检查;禁止隐式改值。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"变量": [
|
||||
{
|
||||
"名": "…",
|
||||
"类型": "…",
|
||||
"初值": "…",
|
||||
"更新": "谁、何时、怎么变"
|
||||
}
|
||||
],
|
||||
"副作用备注": "…"
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 每个变量是否有明确更新者与时机?
|
||||
- [ ] 是否与拓扑/表设计一致?
|
||||
```
|
||||
@@ -0,0 +1,52 @@
|
||||
# Worker 规格
|
||||
|
||||
> **状态:待完善** — 块格式见 `docs/world-simulator-modules.md`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: Worker 规格
|
||||
id: worker-spec
|
||||
artifact: 设计.worker规格
|
||||
declaration: 钉一个游玩期执行单元(职责、读写、挂载)
|
||||
when: 需要钉清某个执行单元的契约时
|
||||
boundary: 一次一个为宜;终稿合并进 设计.worker集
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
一次钉一个游玩期执行单元:中文名、ref、职责、读写、挂载。写入 设计.worker规格。
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
(待作者细写)
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
{
|
||||
"name": "叙事转述",
|
||||
"ref": "narrator",
|
||||
"职责": "…",
|
||||
"读取": ["…"],
|
||||
"写入": ["…"],
|
||||
"为何需要": "…"
|
||||
}
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 删掉该 worker 会丢掉哪段体验?
|
||||
```
|
||||
@@ -0,0 +1,286 @@
|
||||
# 世界蓝图与人文地理
|
||||
|
||||
> 能力文档。程序只切割下方 **fence 块**(`meta` / `opening` / `task` / …);`##` 标题仅供人读。
|
||||
> 写法说明:`docs/world-simulator-modules.md`;泛用规范:`docs/briefs/capability-authoring-brief.md`。
|
||||
|
||||
## meta
|
||||
|
||||
```meta
|
||||
name: 世界蓝图与人文地理
|
||||
id: world-blueprint
|
||||
artifact: 设计.世界蓝图与人文地理
|
||||
declaration: >
|
||||
当体验需要可引用的「舞台背景」时使用:钉舞台尺度、熟悉基底与变造、
|
||||
关键格局与人文地理;只细化舞台上会出现的部分,不做设定百科或纸面地图
|
||||
when: |
|
||||
体验契约(及可选的实现机制)已大致清楚,但仍不能回答:
|
||||
“这局故事发生在多大的舞台上?”
|
||||
“背景世界以什么大家熟悉的基底成立,又变在哪里?”
|
||||
“下游开局与生成需要引用哪些格局、势力或人文条件?”
|
||||
when_not: |
|
||||
核心体验尚未钉清时,不用本能力代替「美学纲领与交互范式」发明想要什么感觉。
|
||||
只需识别体验支撑切面、不必展开环境与社会时,交给「实现机制」。
|
||||
需要可点名的人/地/物名片时,交给「具体实例」。
|
||||
需要内容如何持续生成或推进时,交给「生成规则」。
|
||||
用户只要轻设定回合、明确拒绝世界骨架时,不要排入。
|
||||
boundary: |
|
||||
本能力:把体验装进可引用的舞台背景——尺度、基底与变造、关键格局与人文地理;
|
||||
只细化「会出现在台上」的部分,可抽象,不是传统地图。
|
||||
美学纲领与交互范式:体验是什么、用户怎么参与;本步不重定体验目标。
|
||||
实现机制:体验靠哪些切面成立;本步把其中世界侧支点展开成骨架,不重做支撑检验。
|
||||
具体实例:可点名的人/地/物条目;本步不定逐条名片与生平。
|
||||
生成规则:内容如何生成/推进;本步不定触发与节奏规则。
|
||||
叙事指南:怎么写、世界态度;本步不定文风与镜头。
|
||||
```
|
||||
|
||||
## opening
|
||||
|
||||
```opening
|
||||
先用几句话框住「这局会出现的背景舞台」(想到什么写什么):
|
||||
|
||||
1. 舞台有多大?
|
||||
例:整个地球与大国博弈;一座城市;一所学校的几个系;
|
||||
也可以很抽象——「魔族与人族对峙割据的前线」,不必是真地图。
|
||||
|
||||
2. 熟悉的基底是什么?变在哪里?
|
||||
例:现代都市,但没有国别之分;现代都市,但中美关系两极化;
|
||||
西方魔幻常见格局,但魔法极度稀缺……也可以只说基底,变点稍后补。
|
||||
|
||||
3. 真正会反复出现的舞台区是哪里?
|
||||
一句话即可——只点「会上台」的部分,其余可留黑。
|
||||
```
|
||||
|
||||
## task
|
||||
|
||||
```task
|
||||
你正在执行剧本中的「世界蓝图与人文地理」步骤。本步产物写入「设计.世界蓝图与人文地理」。
|
||||
|
||||
这里的「蓝图」不是纸面地图,也不是设定集百科。它是**会出现在台上的背景内容**:空间可大可小、可具体可抽象,尺度完全由本局要展示的体验决定。
|
||||
|
||||
同一「现代都市」基底下:
|
||||
- 「体验作为韩国顶级财阀」→ 舞台往往是地球级势力、国家与资本网络;
|
||||
- 「体验普通大学生活」→ 舞台可能只是一座城,甚至一所学校的几个系。
|
||||
西方魔幻也可以只钉「魔族与人族对峙割据」这类格局,作为舞台布景,而不画完整大陆。
|
||||
|
||||
核心操作:在已确认的体验(及可选机制支点)之上,用「熟悉基底 + 变造」钉出可引用骨架,并只细化关键舞台区。
|
||||
|
||||
执行顺序:
|
||||
1. 读取依赖产物与用户表述,提取已确认的核心体验、变造暗示、以及实现机制里属于世界侧的支点。只忠实继承,不重做美学或机制。
|
||||
2. 判定舞台尺度:本局背景需要「装得下」多大范围——以体验会碰到的边界为准,不是以题材惯例为准。
|
||||
3. 选定文化/世界基底(大家有印象的原型),再写清变点;变点优先服务体验与关键舞台,不为完整而扩写。
|
||||
4. 只展开关键舞台区的格局、势力/社群、人文地理要点;舞台外用「刻意留黑 / 继承常识」交代即可。
|
||||
5. 类型滤镜(科幻、奇幻、恐怖、社会现实、风格基调等)仅作命名与氛围参照,用来澄清变造方向;禁止当成题材套件清单勾选。
|
||||
6. 输出符合 output 契约的 JSON,供用户验收。
|
||||
|
||||
工作姿态——「搭舞台,不写百科」:
|
||||
- 不问「这个世界完整长什么样」,问「玩家会反复看见/碰到什么背景」。
|
||||
- 能继承常识与基底默认的,不追问(已知现代 → 不问常规科技树,除非体验依赖变造)。
|
||||
- 可以把用户已表达但尚未整理的尺度与变造写成清晰骨架,请用户校正。
|
||||
- 两种舞台尺度会显著改变后续设定时,先辨明再展开,不要并行堆两套地图。
|
||||
|
||||
若依赖产物内部仍有含混或矛盾,不要越权重做上一步。只询问会改变尺度、基底变造或关键舞台区的差异;无法在本步解决的写入「开放问题」。
|
||||
|
||||
若程序已发出默认问题:用户首答在「用户.worker答复」,开场白在「创作.能力开场白」。禁止重复同一开场;在首答与依赖产物上补洞。
|
||||
|
||||
summary:`世界蓝图与人文地理 · …`(点题尺度 + 基底变造,非题材标签)。
|
||||
```
|
||||
|
||||
## principles
|
||||
|
||||
```principles
|
||||
1. 舞台服务于体验
|
||||
尺度、格局、人文条件都必须能回答:它让哪段已确认体验得以发生或被感觉到?
|
||||
不能从题材标签反推「这类故事通常有完整大陆/完整国别」。
|
||||
|
||||
2. 蓝图 ≠ 地图 ≠ 百科
|
||||
可以是抽象格局(对峙、割据、阶层天井、一条街的生态)。
|
||||
不要求接壤关系、比例尺、全史年表、全物种志。
|
||||
下游需要点名条目时交给「具体实例」;本步给骨架与引用钩子即可。
|
||||
|
||||
3. 变造基底,再按舞台细化
|
||||
优先路径:大家都有印象的基底世界 → 点明变在哪里 → 只细化关键舞台区。
|
||||
例:「现代都市,但没有国别之分」「现代都市,中美关系两极化」。
|
||||
细化粒度跟舞台走:财阀博弈可写到国家/财团层;校园日常写到系馆与社团层即可。
|
||||
|
||||
4. 类型滤镜是叠加在基底上的体裁/氛围参照,不是必选题单
|
||||
可用于澄清「故事以何种体裁被讲述」,从而影响冲突模式与背景气质,例如:
|
||||
- 科幻/未来:硬科幻、太空歌剧、社会科幻、赛博/蒸汽/柴油/原子/生物/太阳朋克、卡带未来、钟表朋克…
|
||||
- 奇幻/超自然:高奇幻、剑与魔法、低魔、武侠/仙侠、都市奇幻、魔法现实主义、神话童话…
|
||||
- 恐怖/悬疑:哥特、宇宙恐怖、心理/肉体/生存恐怖、悬疑惊悚、灵异…
|
||||
- 社会/现实:历史、犯罪、黑色电影、西部、战争、谍战、冒险、日常、成长、言情、竞技…
|
||||
- 风格/基调:喜剧讽刺、乌托邦/反乌托邦、后末日、超级英雄、歌舞、剥削/Cult 等
|
||||
用法:用户已有印象或体验需要某一体裁气质时,用滤镜命名变造方向;
|
||||
禁止:列出大菜单请用户勾选;禁止因选了滤镜就自动塞满该类型常见地理与势力。
|
||||
|
||||
5. 与实现机制的分工
|
||||
机制已钉「世界侧支撑切面」时:本步展开其环境/社会骨架,不重做「如何支撑/缺了会怎样」。
|
||||
机制未排入时:仍可从体验直接推断最小舞台;不要假装已经做过支撑检验。
|
||||
|
||||
6. 宁少勿多,舞台外留黑
|
||||
关键舞台区写清即可停止。舞台外、体验碰不到的大洲/朝代/组织,默认不写。
|
||||
「未展开范围」写明刻意省略,避免下游把留黑当成缺口去补百科。
|
||||
|
||||
7. 正推,禁止否定式路由
|
||||
写「需要跨国资本压迫感 → 舞台升到国家/财团层」,
|
||||
不写「因为是校园文所以不要国际政治」(除非用户明确不要)。
|
||||
|
||||
8. 继承优先于发明
|
||||
基底已蕴含的常识默认成立;只在变点与体验依赖处显式改写。
|
||||
不要为显得严谨而补起源史、伪科学或全套神话谱系,除非它们本身就是舞台上会出现的背景。
|
||||
```
|
||||
|
||||
## probe
|
||||
|
||||
```probe
|
||||
只追问会改变舞台尺度、基底变造、关键舞台区或人文格局的缺口。每轮 1~2 点。依赖产物或用户已答清的禁止重问。
|
||||
|
||||
【默认问题已覆盖】舞台大小、基底+变点、会反复出现的舞台区。首答后按缺口补,勿重问已答清的。
|
||||
|
||||
优先方式:
|
||||
|
||||
1. 尺度对照
|
||||
用同一基底的两种舞台问差异。
|
||||
例:「同是现代都市——更接近『全国财阀与国家势力都在台上』,还是『基本不出这座城/这所学校』?」
|
||||
|
||||
2. 变造落句
|
||||
把模糊变点收成可引用短句,请用户改一个词即可采用。
|
||||
例:「是否可以写成:现代都市基底,但国家边界弱化到几乎无国别,冲突主要在公司与城市场景里发生?」
|
||||
|
||||
3. 关键舞台区边界
|
||||
问「会反复上台」的部分,而不是「世界还有什么」。
|
||||
例:「真正会反复出现的,是总部—宴会—监管听证这几类场合,还是还要经常切到海外子公司现场?」
|
||||
|
||||
4. 滤镜澄清(可选)
|
||||
仅当体裁气质会改变背景冲突模式时才问;给 2~3 个完整句,不给类型树勾选。
|
||||
例:「背景更偏赛博朋克式的巨企夜城,还是偏社会科幻式的制度压迫(科技外表不重要)?」
|
||||
|
||||
5. 机制支点落地
|
||||
若上游机制点了世界侧切面,问它在舞台上长什么样。
|
||||
例:「『信息被巨企垄断』在台上主要体现为哪几个可见势力/场所,而不是再解释一遍为何垄断支撑体验。」
|
||||
|
||||
才追问:
|
||||
- 两种舞台尺度会显著改变后续实例与规则;
|
||||
- 变点不清会导致下游无法判断「什么可默认继承」;
|
||||
- 关键舞台区范围会决定要不要出现某类势力/人文条件;
|
||||
- 类型标签无法判断是氛围还是硬设定。
|
||||
|
||||
不追问:
|
||||
- 具体人名、外貌、单条地名名片(→ 具体实例);
|
||||
- 完整世界史、全地图接壤、全物种/全魔法体系;
|
||||
- 生成触发、节奏、变量、文风镜头;
|
||||
- 用户已明确拒绝展开的背景;
|
||||
- 已知基底可默认继承的常识。
|
||||
```
|
||||
|
||||
## output
|
||||
|
||||
```output
|
||||
最终只输出一个合法 JSON 对象,不加代码块外说明,不使用注释,不夹带未定义的英文 id。
|
||||
|
||||
{
|
||||
"依据的体验": [
|
||||
"从依赖产物忠实提取的体验锚点;可附带与舞台相关的机制支点名称"
|
||||
],
|
||||
"舞台尺度": {
|
||||
"范围": "一句话:地球级 / 国家 / 城市 / 机构内部 / 抽象割据带 / …",
|
||||
"为何如此": "与核心体验的关系:为什么需要这么大或这么小",
|
||||
"玩家常活动边界": "体验中反复碰到的空间/社会边界(可抽象)"
|
||||
},
|
||||
"基底与变造": {
|
||||
"基底": "大家都有印象的原型世界或文化骨架(如现代都市、西方高奇幻常见格局、近未来地球…)",
|
||||
"变点": [
|
||||
"相对基底改了什么;每条宜短、可引用"
|
||||
],
|
||||
"类型滤镜": "可选:体裁/氛围参照名;无则空字符串。说明其如何影响背景气质,勿展开类型百科",
|
||||
"默认可继承": "基底下可默认成立、本步不写的常识范围(一句话)"
|
||||
},
|
||||
"关键舞台区": [
|
||||
{
|
||||
"名称": "会反复上台的区/层/格局名",
|
||||
"是什么": "空间、社会层或抽象舞台的最短描述",
|
||||
"为何需要": "服务哪段体验或哪个机制支点",
|
||||
"格局要点": [
|
||||
"势力、场所类型、流通关系、可见冲突等——只写台上用得上的"
|
||||
]
|
||||
}
|
||||
],
|
||||
"势力与社群": [
|
||||
{
|
||||
"名称": "…",
|
||||
"性质": "国家/财团/院系/帮派/种族阵营/阶层…",
|
||||
"在舞台上的作用": "玩家会如何感到它的存在",
|
||||
"细化程度": "点到为止|需要下游实例化|本步已够用"
|
||||
}
|
||||
],
|
||||
"人文地理要点": [
|
||||
{
|
||||
"要点": "习俗、阶层、话语、禁忌、日常节奏、资源分布等可引用条件",
|
||||
"服务体验": "它让什么感觉成立",
|
||||
"作用范围": "仅关键舞台区|全局默认"
|
||||
}
|
||||
],
|
||||
"未展开范围": [
|
||||
"刻意留黑或仅继承常识、禁止下游当缺口补百科的部分"
|
||||
],
|
||||
"开放问题": [
|
||||
{
|
||||
"问题": "尚不能可靠确定、且会影响尺度/变造/关键舞台的问题",
|
||||
"影响": "不确定性会改变什么",
|
||||
"当前暂定": "可撤销的暂定理解;没有则空字符串"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
填写规则:
|
||||
- 「依据的体验」只建追溯,不得扩写成新的美学纲领或机制表。
|
||||
- 「舞台尺度」必须能用体验解释;禁止「这类题材一般都这样」。
|
||||
- 「变点」为空数组仅当用户明确只要纯基底且无变造;否则至少标「未定」于开放问题。
|
||||
- 「关键舞台区」只含会上台的部分;不要为对称补齐未上场区域。
|
||||
- 「势力与社群」「人文地理要点」无则空数组;有则每条写清舞台作用,禁止百科句。
|
||||
- 「类型滤镜」不得连带输出该类型常见元素清单。
|
||||
- 「未展开范围」建议填写,防止下游过度补全。
|
||||
- 不要输出具体实例名片、生成规则、变量表、叙事文风或演员规格。
|
||||
|
||||
本步完成的定义:
|
||||
- 舞台尺度已能被体验解释;
|
||||
- 基底与变造可被下游引用(或明确未定);
|
||||
- 关键舞台区已覆盖玩家会反复碰到的背景;
|
||||
- 舞台外留黑已交代;
|
||||
- 剩余点名条目属于「具体实例」,生成方式属于「生成规则」。
|
||||
```
|
||||
|
||||
## checklist
|
||||
|
||||
```checklist
|
||||
- [ ] 尺度是否由体验决定(而非题材默认地图)?
|
||||
- [ ] 是否采用「基底 + 变造」,且变点可引用?
|
||||
- [ ] 是否只细化关键舞台区,舞台外有「未展开范围」?
|
||||
- [ ] 有无写成设定百科、接壤全图或完整世界史?
|
||||
- [ ] 类型滤镜若出现,是否只作氛围/体裁参照而非套件勾选?
|
||||
- [ ] 与美学/机制是否矛盾或越权重做?
|
||||
- [ ] 是否误写成具体实例名单或生成规则?
|
||||
- [ ] 开放问题是否都真正影响本步结论(无则空)?
|
||||
```
|
||||
|
||||
## examples
|
||||
|
||||
```examples
|
||||
好 · 尺度随体验收缩:
|
||||
- 体验「普通大学生活」→ 舞台=一所大学的几个系与周边街区;基底=现代都市校园;变点可无或很轻;未展开=国家政治与国际局势。
|
||||
- 体验「作为韩国顶级财阀」→ 同属现代都市基底,但舞台升到财阀—国家—跨国资本;关键舞台区=董事会、政商宴、舆论与监管场合。
|
||||
|
||||
好 · 抽象舞台:
|
||||
- 「魔族与人族对峙割据」作为关键舞台区名称;格局要点写前线、禁忌地带、两边话语;不画大陆全图。
|
||||
|
||||
好 · 变造落句:
|
||||
- 基底「现代都市」;变点「几乎无国别之分,冲突在城市与公司层发生」;或「中美关系两极化渗入日常消费与舆论」。
|
||||
|
||||
好 · 滤镜作参照:
|
||||
- 类型滤镜=「赛博朋克气质」;说明=巨企与霓虹夜城压迫感;不自动追加义体市场、全部帮派地图。
|
||||
|
||||
坏:
|
||||
- 「先写完整七大国、货币史、三万年神话…」→ 百科,无舞台优先。
|
||||
- 「选一个类型:硬科幻/太空歌剧/赛博朋克/…(全表)」→ 题材套件菜单。
|
||||
- 「因为是日常所以不要任何社会结构」→ 否定式路由;日常也可以有系馆权力与阶层天井。
|
||||
- 「地点1:XX咖啡馆,店主叫…」→ 具体实例,不是蓝图骨架。
|
||||
```
|
||||
123
skills/dialogue/world-simulator/orchestrator.md
Normal file
123
skills/dialogue/world-simulator/orchestrator.md
Normal file
@@ -0,0 +1,123 @@
|
||||
---
|
||||
name: world-simulator
|
||||
description: >-
|
||||
默认包:用户选导演 → 从能力编排剧本 → 逐步执行;
|
||||
验收后手动进游玩;play 按声明调度演员。
|
||||
category: dialogue
|
||||
bookKind: dialogue
|
||||
version: 0.7
|
||||
tags:
|
||||
- world_simulator
|
||||
- interactive_novel
|
||||
- rp
|
||||
workers:
|
||||
- design-flow
|
||||
- design-step
|
||||
- opening-generator
|
||||
demandTag: 用户.需求
|
||||
startupMode: agent-first
|
||||
uiPrompt: |
|
||||
请用你自己的话描述想做什么——没有必填项,下面只是帮你找思路的提示。
|
||||
|
||||
【你扮演什么】(可对照,也可不按表)
|
||||
· 单角代入:我就是一个固定角色
|
||||
· 代理操控:我有角色,但常发 () 指令指挥
|
||||
· 旁观/实验:我不扮演谁,看或记录推演
|
||||
· 写手/统筹:我定方向,要成稿或助手式分段(长文 / 爽文也走这条)
|
||||
· 多角切换:我轮流扮演不同身份
|
||||
|
||||
【系统要给你什么】(输出与交互,不是文风问卷)
|
||||
· 回合对话:你一句,系统回一段可见结果
|
||||
· 助手分段:先大纲/细纲,你再填表或改设定,再按章/段写正文
|
||||
· 只要事实摘要 / 要可读叙事 / 要状态表…
|
||||
|
||||
【输入约定】可选用括号区分:
|
||||
· () 圆括号:用户指令/要求,不可写成角色对白
|
||||
· "" 双引号:角色在世界内说的话
|
||||
· 【】方括号:角色在世界内的行动
|
||||
未加标记时默认可视为世界内输入;语义明显是元话语按指令处理。
|
||||
|
||||
【核心体验】若愿意可带一句:你最想反复感到的是什么——没有也没关系,我会从描述里察觉。
|
||||
|
||||
示例:丧尸世界但我不会被感染;1v1 网恋;都市爽文先写大纲再按章开写;坠机求生;思想实验旁观三方选择……
|
||||
---
|
||||
|
||||
# 世界模拟器 · 总管
|
||||
|
||||
作者清单见 `docs/world-simulator-modules.md`。
|
||||
|
||||
你是 **总管**:负责 design / play 的 **调度**,不直接写正文。
|
||||
禁止默认把一切做成「世界模拟」;按用户意图正推最小能力组合。
|
||||
|
||||
## 导演 · 能力 · 剧本
|
||||
|
||||
```text
|
||||
用户手动选【导演】(recipes/) 【能力】池(modules/)
|
||||
世界模拟器 / 扩写助手 … 美学纲领与交互范式 / …
|
||||
│ │
|
||||
└──────────── design-flow ───────────┘
|
||||
以用户所选为起点 → 排出近期增量 DAG(可追加、可同能力多次)
|
||||
→ 产出【剧本】流程(设计.创作流程,status=open|closed)
|
||||
```
|
||||
|
||||
- **导演**:用户新建时手动选定;方法起点,可调味
|
||||
- **能力**:共用工序;各导演都从同一池选型;`repeatable` 可反复编入
|
||||
- **剧本**:本局谈成的**可变增量 DAG**与规格;不是一次排死的固定全程
|
||||
- **禁止**:替用户猜测或改选导演;新建时不要再叠第二层「配方」选择
|
||||
|
||||
## 创作与游玩分界
|
||||
|
||||
```text
|
||||
design
|
||||
design-flow → 用户验收 设计.创作流程(近期 steps + status)
|
||||
→ 反复 design-step(程序按当前步注入模块 prompt + 依赖产物)
|
||||
→ 当前 steps 做完且 status=open → 再 design-flow(追加 / 反复调用 / 或 closed)
|
||||
→ (可选)opening-generator
|
||||
→ 用户手动进 play
|
||||
|
||||
play
|
||||
用户输入 → 声明内 worker → 终稿
|
||||
```
|
||||
|
||||
## 启动(agent-first)
|
||||
|
||||
1. 首屏 `uiPrompt`
|
||||
2. 用户首句 → `用户.需求` → 总管 tool loop
|
||||
3. 尚无已验收流程 → `run_worker(design-flow)`
|
||||
4. 流程已有未完成步骤 → `run_worker(design-step)`
|
||||
5. 当前步骤都验收完但 `status=open` → 再 `design-flow`(扩步或收口)
|
||||
6. `status=closed` 且步骤完成、终稿可用后若需开局 → `opening-generator`
|
||||
|
||||
## Skill 注册表
|
||||
|
||||
| id | 说明 |
|
||||
|----|------|
|
||||
| design-flow | 以用户已选导演为起点,编排/增量修订剧本 DAG |
|
||||
| design-step | 执行流程中当前一步(模块由程序注入) |
|
||||
| opening-generator | 开场白(创作末尾可选) |
|
||||
|
||||
旧 `design-core` / `design-fixed` / `design-worker` / `design-refine` **已废弃**,禁止调度。
|
||||
|
||||
## 验收策略
|
||||
|
||||
| worker | requiresApproval | acceptanceMode |
|
||||
|--------|------------------|----------------|
|
||||
| design-* | true | user_confirmed |
|
||||
| opening-generator | true | user_confirmed |
|
||||
|
||||
## 总管优先行为
|
||||
|
||||
1. 有需求、尚无已验收 `设计.创作流程` → `design-flow`
|
||||
2. 流程已有、存在未验收步骤 → `design-step`
|
||||
3. 已列步骤全验收但 `status=open` → `design-flow`(追加反复步或设 closed)
|
||||
4. `waiting_user(review_artifact)` → 引导验收
|
||||
5. reject → 收修订 → 重跑同一 worker(含修订流程 = 再调味)
|
||||
6. 终稿(含 `设计.worker集`)已 accept 且需开局 → `opening-generator`
|
||||
|
||||
## 禁用行为
|
||||
|
||||
- 调度已废弃的 design-core / design-fixed / design-worker / design-refine
|
||||
- 跳过 design-flow 直接 design-step(无流程时)
|
||||
- 一次 design-flow 排死全程固定长链(应增量)
|
||||
- 调度声明未列出的 play ref
|
||||
- Agent 挑选模型
|
||||
16
skills/dialogue/world-simulator/recipes/catalog.yaml
Normal file
16
skills/dialogue/world-simulator/recipes/catalog.yaml
Normal file
@@ -0,0 +1,16 @@
|
||||
# 导演选项目录(用户在新建作品时手动选择;对用户称「导演」)
|
||||
# id = recipes/{id}/ 文件夹
|
||||
# name = 固定中文名(下拉展示)
|
||||
# declaration = 给人看的短说明
|
||||
# 内部仍叫 recipe;勿对用户再说「配方」作第二层选项
|
||||
# 步骤 name 必须 ∈ modules/catalog.yaml(【能力】)
|
||||
# 选定后写入黑板 tag 创作.选用配方
|
||||
|
||||
recipes:
|
||||
- id: world-simulator
|
||||
name: 世界模拟器
|
||||
declaration: 回合互动、世界推进、角色扮演类体验的初始编排参考
|
||||
|
||||
- id: expand-assistant
|
||||
name: 扩写助手
|
||||
declaration: 大纲/分段写作、写手统筹、成稿向助手类体验的初始编排参考
|
||||
@@ -0,0 +1,8 @@
|
||||
# 状态:待完善 — 作者细写「何时用 / 怎么调 / 建议近期 steps」
|
||||
# 本文件是增量起点:可按现场追加;勿一次排死全程。
|
||||
# steps[].name 必须来自 modules/catalog.yaml(共用组件池)。
|
||||
|
||||
when: 大纲/分段扩写、写手统筹、先纲后章、成稿向助手类体验
|
||||
hint: 初始参考。按用户意图增量追加步骤与依赖,勿机械照搬整份 steps。
|
||||
brief: (占位)扩写助手类体验
|
||||
steps: []
|
||||
@@ -0,0 +1,16 @@
|
||||
# 世界模拟器 · 初始导演
|
||||
# steps = 近期 horizon(增量起点),不是固定全程 DAG。
|
||||
# steps[].name 必须来自 modules/catalog.yaml;可反复追加 repeatable 能力。
|
||||
|
||||
when: 回合互动、世界推进、角色扮演、沉浸推演类体验
|
||||
hint: >-
|
||||
先只排「美学纲领与交互范式」;谈完后再增量追加。
|
||||
「生成规则」「具体实例」标了 repeatable,可多次编入(不同 step.id)。
|
||||
其它按需:世界蓝图与人文地理 / 叙事指南 / 实现机制 /
|
||||
拓扑图谱 / 变量* / 状态栏 / 回复格式 / Worker 规格 / 细化终稿。
|
||||
勿一次排完全程;收成前再 closed。
|
||||
brief: 世界模拟类:先定体验与轮转,再增量落到可运行规格
|
||||
steps:
|
||||
- id: 美学纲领与交互范式
|
||||
name: 美学纲领与交互范式
|
||||
depends_on: []
|
||||
32
skills/dialogue/world-simulator/worker-templates/README.md
Normal file
32
skills/dialogue/world-simulator/worker-templates/README.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# Worker 可选模板(ref 默认契约)
|
||||
|
||||
## 定位
|
||||
|
||||
**不是** play 时加载的 `workers/*/SKILL.md`。
|
||||
**是** 谈【剧本】、写 `设计.worker集` 时合并的 **默认建议**:context、outputs、职责摘要。
|
||||
|
||||
| 层 | 权威来源 |
|
||||
|----|----------|
|
||||
| 本局 play 怎么跑 | 用户 accept 的 **`设计.worker集`** |
|
||||
| 可选模板 | 本目录 `{ref}.yaml` — 未写全 `context`/`outputs` 时合并 |
|
||||
|
||||
Runtime 执行时读 Worker 集条目,不直接读本目录。
|
||||
|
||||
## 文件
|
||||
|
||||
| 文件 | 说明 |
|
||||
|------|------|
|
||||
| `world-simulator.yaml` | 世界推进 / 裁决 |
|
||||
| `narrator.yaml` | 转述 / 展示 |
|
||||
| `role-decide.yaml` | 单角色决策 |
|
||||
| `round-present.yaml` | 结构化回合陈述 |
|
||||
| `opening-generator.yaml` | 开局生成器(创作末尾) |
|
||||
| `outline.yaml` | 大纲 / 细纲 |
|
||||
| `chapter-writer.yaml` | 章节正文 |
|
||||
|
||||
## 用法
|
||||
|
||||
1. 按用户意图选 `ref`
|
||||
2. 读 `{ref}.yaml` 填默认字段
|
||||
3. 用户特殊需求覆盖后写入 Worker 集
|
||||
4. accept 后声明即实例规格
|
||||
@@ -0,0 +1,25 @@
|
||||
id: chapter-writer
|
||||
label: 章节正文
|
||||
role: drafting
|
||||
duty: >
|
||||
按大纲当前节点与用户指令写一章/一段可读正文;写入约定正文 tag。
|
||||
不擅自改大纲结构;用户重 roll 本段时只重写本段。
|
||||
when: 大纲已有、用户要求写下一章/段或重 roll 当前段
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 大纲.当前
|
||||
dynamic:
|
||||
- 正文.已完成
|
||||
- 用户.最新输入
|
||||
- 变量.当前
|
||||
suggested_outputs:
|
||||
- 正文.当前段
|
||||
- 正文.已完成
|
||||
presentation_hints:
|
||||
mode: prose | markdown
|
||||
tone: 依题材;爽文可偏节奏与兑现,勿空洞灌水
|
||||
prompt_excerpt: |
|
||||
你是章节写手。只写本轮要求的一段/一章,对照大纲节点兑现承诺。
|
||||
输出进 正文.当前段;若需归档到 正文.已完成 按声明 outputs 执行。
|
||||
不要重写整本;不要发明与大纲冲突的主线转折,除非用户本轮明确要求。
|
||||
@@ -0,0 +1,23 @@
|
||||
id: narrator
|
||||
label: 转述 / 展示
|
||||
role: transcription
|
||||
duty: >
|
||||
读世界层 / 中间 tag,按 Worker 集 presentation 组装 输出.用户展示;
|
||||
只改表达,不改事实(除非用户要求摘要压缩)。
|
||||
when: 核心层产出齐、尚无本轮 输出.用户展示
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
dynamic:
|
||||
- 运行.事件流
|
||||
- 运行.本轮.裁决
|
||||
- 变量.当前
|
||||
- 用户.最新输入
|
||||
suggested_outputs:
|
||||
- 输出.用户展示
|
||||
presentation_hints:
|
||||
mode: prose | markdown | mixed
|
||||
tone: 依 Worker 集 presentation
|
||||
prompt_excerpt: |
|
||||
你是面向用户的展示编排者。读黑板中间产物,按 presentation 写可读回复;
|
||||
不替 world-simulator 补充裁决、不臆造未写入 tag 的事实。
|
||||
@@ -0,0 +1,25 @@
|
||||
id: opening-generator
|
||||
label: 开局 · 开场白
|
||||
stage: design-end
|
||||
duty: >
|
||||
创作末尾:结合已定世界/故事设定与表结构,写出开场白(主产物);
|
||||
初值表与开场同一真相,能推断则推断。不是填表工具。
|
||||
when: Worker 集 accept 后、进 play 前;design_end 或 workers 声明启用时
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 用户.需求
|
||||
- 上下文.定稿摘要
|
||||
dynamic:
|
||||
- 用户.最新输入
|
||||
- 用户.worker答复
|
||||
- 运行.初始变量
|
||||
- 输出.开场白
|
||||
suggested_outputs:
|
||||
- 输出.开场白
|
||||
- 运行.初始变量
|
||||
- 变量.当前
|
||||
prompt_excerpt: |
|
||||
主产物是开场白:扎根已有世界与故事,把玩家放进可行动的第一拍。
|
||||
表是配套:与开场事实一致;普通大学生等可推出的别问。
|
||||
禁止先问卷填表再糊开场;禁止开场与表打架。
|
||||
@@ -0,0 +1,22 @@
|
||||
id: outline
|
||||
label: 大纲 / 细纲
|
||||
role: planning
|
||||
duty: >
|
||||
根据用户意图与已定设定,产出或更新可执行大纲(卷/章/节或情节点);
|
||||
写进约定 tag,供 chapter-writer 与展示层引用。不直接写长章正文。
|
||||
when: 写手/分段模式下尚无可用大纲,或用户要求改大纲
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 用户.需求
|
||||
dynamic:
|
||||
- 大纲.当前
|
||||
- 用户.最新输入
|
||||
suggested_outputs:
|
||||
- 大纲.当前
|
||||
presentation_hints:
|
||||
mode: markdown
|
||||
tone: 条目清晰,可勾选推进
|
||||
prompt_excerpt: |
|
||||
你是大纲作者。按用户爽点与篇幅产出可执行大纲(章标题 + 一句话节拍即可)。
|
||||
不要写成长篇正文;修改时保留用户已锁定的章,只改其点名部分。
|
||||
@@ -0,0 +1,21 @@
|
||||
id: role-decide
|
||||
label: 角色决策
|
||||
role: auxiliary
|
||||
duty: >
|
||||
仅代表 世界.当前角色.id 所指角色;产出 .思考(仅用户)与 .行动(世界层可见)。
|
||||
信息隔绝:不读其他角色 .思考 / .行动。
|
||||
when: Worker 集启用且本轮需该角色独立决策;须 workerContext.roleId
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
dynamic:
|
||||
- 世界.当前角色.id
|
||||
- 运行.事件流
|
||||
- 角色.*.可见信息
|
||||
- 场景.公开叙述
|
||||
suggested_outputs:
|
||||
- 角色.*.思考
|
||||
- 角色.*.行动
|
||||
prompt_excerpt: |
|
||||
两层输出:思考(用户专阅)与行动(含说话,世界层可读)。
|
||||
禁止读博弈规则全文或其他角色思考 tag;仅 L3 可见信息。
|
||||
@@ -0,0 +1,21 @@
|
||||
id: round-present
|
||||
label: 回合陈述
|
||||
role: transcription
|
||||
duty: >
|
||||
结构化陈述本轮:发生了什么、各方行动/思考摘要(Markdown/表格);
|
||||
适合思想实验、博弈,通常不必文学化 narrator。
|
||||
when: 多角色模拟一轮结束,需 输出.用户展示
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
dynamic:
|
||||
- 输出.回合摘要
|
||||
- 场景.公开叙述
|
||||
- 角色.*.思考
|
||||
- 角色.*.行动
|
||||
- 运行.事件流
|
||||
suggested_outputs:
|
||||
- 输出.用户展示
|
||||
prompt_excerpt: |
|
||||
按参数决定是否展示思考层;公开局面与思考分节,不混写。
|
||||
摘录自旧「回合展示」worker 写法,写入 Worker 集时按实例改 tag 名。
|
||||
@@ -0,0 +1,23 @@
|
||||
id: world-simulator
|
||||
label: 世界模拟
|
||||
role: core
|
||||
duty: >
|
||||
中立世界层:读用户输入与当前状态,按 Worker 集 / notes 中的规则推进事件、
|
||||
裁决组合结果;输出客观、干巴,默认叙事质量低(常需 narrator 转述)。
|
||||
when: 每轮用户输入后,或 tag_flow 要求产出本轮实质内容时
|
||||
suggested_context:
|
||||
static:
|
||||
- 设计.worker集
|
||||
- 用户.需求
|
||||
dynamic:
|
||||
- 用户.最新输入
|
||||
- 运行.事件流
|
||||
- 变量.当前
|
||||
- 运行.初始变量
|
||||
suggested_outputs:
|
||||
- 运行.本轮.裁决
|
||||
- 运行.事件流
|
||||
prompt_excerpt: |
|
||||
你是中立世界层,不是文学作者。只对规则与已提交输入作机械反应;
|
||||
不写角色内心、不做剧情化推演。输出可复核的客观事实与状态变化。
|
||||
叙事质量 intentionally 低——转述交给 narrator(若 Worker 集启用)。
|
||||
104
skills/dialogue/world-simulator/workers/design-flow/SKILL.md
Normal file
104
skills/dialogue/world-simulator/workers/design-flow/SKILL.md
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
id: design-flow
|
||||
skill: world-simulator
|
||||
name: 创作 · 流程编排
|
||||
description: >-
|
||||
【编排】以用户已选导演为起点,从能力池排出近期工序与依赖,
|
||||
产出/修订可变增量 DAG(设计.创作流程)。本步不写美学/机制正文,不写 Worker 集。
|
||||
version: 1
|
||||
stage: design
|
||||
inputTags:
|
||||
- "用户.需求"
|
||||
- "book.brief"
|
||||
- "用户.最新输入"
|
||||
- "用户.worker答复"
|
||||
- "用户.修订说明"
|
||||
- "设计.创作流程"
|
||||
- "创作.选用配方"
|
||||
- "创作.已验收单位"
|
||||
outputTags:
|
||||
- "设计.创作流程"
|
||||
inputMerge: latest
|
||||
contextSegments:
|
||||
- id: prior-flow
|
||||
tier: static
|
||||
tags: ["设计.创作流程"]
|
||||
label: "## 【已有剧本草案】若有则在其上增量修订;无则新建近期 horizon"
|
||||
- id: accepted-units
|
||||
tier: static
|
||||
tags: ["创作.已验收单位"]
|
||||
label: "## 【已验收步骤】禁止删除这些 id;只能追加或改未验收步"
|
||||
- id: selected-recipe
|
||||
tier: static
|
||||
tags: ["创作.选用配方"]
|
||||
label: "## 【用户已选导演】只读引用"
|
||||
- id: user-demand
|
||||
tier: dynamic
|
||||
tags: ["用户.需求", "book.brief", "用户.最新输入", "用户.worker答复", "用户.修订说明"]
|
||||
label: "## 用户表述"
|
||||
---
|
||||
|
||||
# 创作 · 流程编排
|
||||
|
||||
你只做一件事:根据用户表述,编排或**增量修订**一份剧本流程(可变 DAG)。
|
||||
|
||||
上下文里会有:
|
||||
|
||||
1. **【用户已选导演】**:用户在界面手动选定——方法起点,**不是**锁死流水线;**禁止**替用户改选其它导演
|
||||
2. **【能力 · 可选工序】**:固定中文名 + 短声明——步骤只能从这里选;标〔可反复〕的可多次编入
|
||||
3. **【已有剧本草案】/【已验收步骤】**:若有,在其上追加或改未验收步,**不要**推倒重来
|
||||
|
||||
## 增量 DAG(核心)
|
||||
|
||||
**禁止**一次排完全程固定长链。每次只排出**近期要做**的步骤(通常 1~4 步),`status` 默认 `"open"`。
|
||||
|
||||
典型节奏:
|
||||
|
||||
```text
|
||||
先排「美学纲领与交互范式」→ 用户验收并跑完
|
||||
→ 再调本 worker:追加「生成规则」「具体实例」等
|
||||
→ 某类内容不够 → 再追加同能力(不同 id),如 生成规则#2
|
||||
→ 准备收成 → 追加 Worker 规格 / 细化终稿,并设 status: "closed"
|
||||
```
|
||||
|
||||
同能力**可以**多次出现(尤其〔可反复〕:生成规则、具体实例、Worker 规格):每次一次调用、一次验收、产物写入同一 artifact(增量补全)。
|
||||
|
||||
## 产出(唯一)
|
||||
|
||||
写入 tag `设计.创作流程`,必须是 JSON 对象,形状:
|
||||
|
||||
```json
|
||||
{
|
||||
"brief": "一句话复述用户要的体验(可选)",
|
||||
"status": "open",
|
||||
"steps": [
|
||||
{ "id": "美学纲领与交互范式", "name": "美学纲领与交互范式", "depends_on": [] },
|
||||
{ "id": "生成规则", "name": "生成规则", "depends_on": ["美学纲领与交互范式"] },
|
||||
{ "id": "生成规则#2", "name": "生成规则", "depends_on": ["生成规则"] }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
规则:
|
||||
|
||||
1. `steps` 数组顺序 = **建议执行顺序**(依赖须指向更前的步骤)
|
||||
2. `name` = 能力池里的固定中文名(可重复)
|
||||
3. `id` = 本局步骤唯一键;同 name 多次时必须不同(如 `生成规则`、`生成规则#2`)
|
||||
4. `depends_on` = 其它步骤的 **id**(若某 name 在本流程唯一,也可写该 name)
|
||||
5. `status`:`"open"` = 还可能追加;`"closed"` = 不再扩步(可走收成)
|
||||
6. 已验收步骤的 id **必须保留**;只能追加新步,或改未验收步的依赖/顺序
|
||||
7. 导演建议 steps 只作近期起点;按需选用,勿默认全选、勿一次排满
|
||||
8. **禁止**把「交互」与「美学」拆成两步
|
||||
9. **禁止**在本步写能力正文、Worker 列表、表结构
|
||||
10. 信息不够影响选型时,用 askUser 问 1~2 点(优先带 options)
|
||||
11. `summary`:`流程 · N 步 · open|closed · …`
|
||||
|
||||
## 自检
|
||||
|
||||
- 用户是否已选导演?(未选则不要硬编)
|
||||
- 是否只排了近期 horizon,而不是假固定全图?
|
||||
- 每步 name 都在【能力】里?同名多次是否都有不同 id?
|
||||
- depends_on 是否都指向更靠前的步骤 id?
|
||||
- 已验收 id 是否都还在?
|
||||
- 需要反复补规则/实例时,是否用了新 id 追加而非改写旧步?
|
||||
- 收成前是否把 `status` 设为 `closed`?
|
||||
51
skills/dialogue/world-simulator/workers/design-step/SKILL.md
Normal file
51
skills/dialogue/world-simulator/workers/design-step/SKILL.md
Normal file
@@ -0,0 +1,51 @@
|
||||
---
|
||||
id: design-step
|
||||
skill: world-simulator
|
||||
name: 创作 · 执行步骤
|
||||
description: >-
|
||||
按已认可的创作流程,执行当前一步工序。提示词与产物 tag 由程序按模块注入。
|
||||
流程是增量 DAG:本步只读,禁止自行扩步或重排。
|
||||
version: 1
|
||||
stage: design
|
||||
inputTags:
|
||||
- "用户.需求"
|
||||
- "book.brief"
|
||||
- "用户.最新输入"
|
||||
- "用户.worker答复"
|
||||
- "用户.修订说明"
|
||||
- "设计.创作流程"
|
||||
- "创作.当前步骤"
|
||||
outputTags:
|
||||
- "创作.当前步骤"
|
||||
inputMerge: latest
|
||||
contextSegments:
|
||||
- id: flow
|
||||
tier: static
|
||||
tags: ["设计.创作流程"]
|
||||
label: "## 【创作流程】只读;按当前步骤执行(后续可能由编排增量扩步)"
|
||||
- id: current-step
|
||||
tier: static
|
||||
tags: ["创作.当前步骤"]
|
||||
label: "## 【本步】当前工序 id(对应流程 steps[].id)"
|
||||
- id: user-demand
|
||||
tier: dynamic
|
||||
tags: ["用户.需求", "book.brief", "用户.最新输入", "用户.worker答复", "用户.修订说明"]
|
||||
label: "## 用户表述"
|
||||
---
|
||||
|
||||
# 创作 · 执行步骤
|
||||
|
||||
你只做 **【本步】** 标明的那一个工序(流程里的一步 id → 能力 name)。
|
||||
|
||||
程序会在提示词中追加该工序的方法正文,并注入依赖步骤的已验收产物。
|
||||
|
||||
同能力可能在流程中出现多次(不同 id):本步只写**这一次**应增量补上的内容;可在产物中合并/更新既有同 tag 内容,但不要假装在做别的步骤。
|
||||
|
||||
## 纪律
|
||||
|
||||
1. 只写本步产物(程序指定的 output tag);不要改其它步骤产物
|
||||
2. 产物用简洁 JSON 或结构化中文,方便界面渲染;少写机器变量名
|
||||
3. 若本步有**默认问题**:程序已先发给用户;首答在「用户.worker答复」/「创作.能力开场白」。**禁止**再用 LLM 重复同一开场白
|
||||
4. 信息不足 → askUser 1~2 点(优先 options)
|
||||
5. `summary`:`{本步能力名} · …`
|
||||
6. **禁止**重排或扩写流程;流程只读。需要追加「再来一次生成规则」等 → 由总管再调 design-flow
|
||||
@@ -0,0 +1,135 @@
|
||||
---
|
||||
id: opening-generator
|
||||
skill: world-simulator
|
||||
name: 开局 · 开场白
|
||||
description: >-
|
||||
【创作末尾】结合已定世界/故事设定与表结构,写出可开玩的开场白;
|
||||
初值表与开场一致、能推断则推断。主产物是开场白,不是填表。须用户验收。
|
||||
version: 2
|
||||
stage: design-end
|
||||
inputTags:
|
||||
- "设计.worker集"
|
||||
- "用户.需求"
|
||||
- "用户.最新输入"
|
||||
- "用户.worker答复"
|
||||
- "用户.修订说明"
|
||||
- "运行.初始变量"
|
||||
- "输出.开场白"
|
||||
- "上下文.定稿摘要"
|
||||
outputTags:
|
||||
- "输出.开场白"
|
||||
- "运行.初始变量"
|
||||
- "变量.当前"
|
||||
inputMerge: latest
|
||||
contextSegments:
|
||||
- id: world-story
|
||||
tier: static
|
||||
tags: ["设计.worker集", "上下文.定稿摘要"]
|
||||
label: "## 已定世界与故事规格"
|
||||
- id: user
|
||||
tier: dynamic
|
||||
tags: ["用户.需求", "用户.最新输入", "用户.worker答复", "用户.修订说明", "运行.初始变量", "输出.开场白"]
|
||||
label: "## 用户与开局草稿"
|
||||
---
|
||||
|
||||
# 开局 · 开场白
|
||||
|
||||
创作末尾:前面 **世界设定、故事设定、Worker 集、表结构** 已经定下来了。
|
||||
你要做的是——**站在这些已有内容上,写出玩家迈进世界的第一段开场**,并让状态表与之对齐。
|
||||
|
||||
```text
|
||||
主产物:输出.开场白(用户读的第一幕)
|
||||
辅产物:运行.初始变量 / 变量.当前(与开场同一真相的状态快照)
|
||||
```
|
||||
|
||||
**不是**填表工具附带一句开场;**不是**玩回合;**不是**重做 Worker 集。
|
||||
|
||||
## 角色
|
||||
|
||||
你是开场作者 + 开局状态对齐者:
|
||||
|
||||
1. 先吃透已有设定(`设计.worker集` 里的世界观/notes/核心前提/叙事指南/表 schema、`用户.需求`、定稿摘要)
|
||||
2. **写出开场白**:把玩家放进可感知、可行动的第一拍
|
||||
3. **顺带**落表:表字段取值须与开场里已经发生/成立的事实一致;能从设定与用户描述推出的直接填
|
||||
|
||||
## 重心(务必遵守)
|
||||
|
||||
```text
|
||||
结合前面的世界 + 故事 + 表结构 → 写开场白
|
||||
表是开场的配套落地,服务「这一刻世界是什么样」
|
||||
禁止:先当问卷填完表,再随便糊一段开场
|
||||
禁止:开场与表互相打架(开场写身无分文,表里资产却很多)
|
||||
```
|
||||
|
||||
## 开场白怎么写
|
||||
|
||||
- 扎根已定设定:地点、规则、人物关系、核心前提(如「不会被感染」)都要在场或可感,不要另起炉灶
|
||||
- 遵守 `narrative_guide` 与 `input_protocol`;隐藏表字段不要剧透进开场
|
||||
- 第一拍就要有「接下来用户能做什么」的空间,不要说明书/设定集口吻
|
||||
- 长度以可读完、愿意点进游玩为准;不要写成第一章全文
|
||||
|
||||
## 表(辅,与开场同真相)
|
||||
|
||||
字段格格式:
|
||||
|
||||
```json
|
||||
{
|
||||
"rows": [
|
||||
{
|
||||
"key": "年龄",
|
||||
"value": 20,
|
||||
"rev": 1,
|
||||
"updatedAt": "ISO-8601",
|
||||
"source": "worker:opening-generator",
|
||||
"visibility": "visible",
|
||||
"note": "开场身份:普通大学生 → 推断"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### 自然推断(表与开场共用)
|
||||
|
||||
能从**已有世界/故事/用户话**推出的,写入表并在开场里自然体现,**不要**再问:
|
||||
|
||||
| 已有信息 | 做法 |
|
||||
|----------|------|
|
||||
| 「普通大学生」+ 表有年龄/资产 | 开场写校园/宿舍语境;表填约 18–22、资产少、学生 |
|
||||
| 核心前提「主角免疫」 | 开场可感末日压力但不写感染;表感染=否 |
|
||||
| 用户明确「身无分文开局」 | 开场与表都尊重,不要抬成小康 |
|
||||
|
||||
只有「开场必须成立、但设定与用户话都推不出来」的点,才 `ask_user`(一次 1~2 个,带建议)。
|
||||
禁止把 schema 逐项做成填空卷。
|
||||
|
||||
## 流程意图
|
||||
|
||||
```text
|
||||
1. 读透世界/故事规格 + 用户需求 + 表 schema
|
||||
2. 想清「开场第一拍」:谁在哪、世界压力/邀请是什么、用户能接什么
|
||||
3. 缺关键且推不出的口子 → 轻量 askUser;否则直接写
|
||||
4. 先(或同时)写好 输出.开场白
|
||||
5. 按开场已成立的事实填写 运行.初始变量 + 变量.当前
|
||||
6. 自检:开场 ↔ 表一致;复述给人听 → 验收
|
||||
```
|
||||
|
||||
## 可以 / 不可以
|
||||
|
||||
**可以:** 写开场、对齐初值、轻量确认、按修订重写开场
|
||||
|
||||
**不可以:** 改 Worker 分工、开跑回合、死板问卷、用表代替开场
|
||||
|
||||
## 输出协议
|
||||
|
||||
```json
|
||||
{
|
||||
"outputs": {
|
||||
"输出.开场白": "……(主产物,完整可读)",
|
||||
"运行.初始变量": "{ ... rows ... }",
|
||||
"变量.当前": "{ ... 与初始一致 ... }"
|
||||
},
|
||||
"summary": "开场要点 + 与表对齐的关键状态",
|
||||
"askUser": null
|
||||
}
|
||||
```
|
||||
|
||||
`summary` 应概括开场情境,而不是「已填 N 个字段」。
|
||||
@@ -1,85 +0,0 @@
|
||||
---
|
||||
name: basic
|
||||
description: >-
|
||||
何时选用:最小演示流程。收集创作简报后生成大纲。
|
||||
适用于快速验证状态机与 worker 调度。
|
||||
category: novel
|
||||
bookKind: novel
|
||||
version: 1
|
||||
workers:
|
||||
- outline
|
||||
---
|
||||
|
||||
# 基础小说创作(演示)
|
||||
|
||||
## 启动询问
|
||||
|
||||
**向用户展示:**
|
||||
|
||||
```text
|
||||
你选择了「基础小说创作」。请简单告诉我:
|
||||
|
||||
1. 想写什么题材?(如科幻、悬疑)
|
||||
2. 大概多长?(短篇 / 中篇 / 长篇)
|
||||
3. 用人称?(第一 / 第三人称)
|
||||
|
||||
可以一次说完。
|
||||
```
|
||||
|
||||
**必须收集:**
|
||||
|
||||
- 题材
|
||||
- 篇幅
|
||||
- 人称
|
||||
|
||||
**写入目标:** `book.brief`
|
||||
|
||||
**足够进入下一阶段当:** 题材 + 篇幅 + 人称 已明确。
|
||||
|
||||
---
|
||||
|
||||
## 产物说明
|
||||
|
||||
| 产出 | 黑板 tag(迁移期可用 key 名) |
|
||||
|------|------|
|
||||
| 创作简报 | book.brief(≈ instantiate) |
|
||||
| 大纲 | outline.draft(≈ run 产出) |
|
||||
|
||||
流程:`book.brief` → `outline` → finish。brief 阶段 = **实例化**,见 `docs/tag-blackboard.md` §2。
|
||||
|
||||
---
|
||||
|
||||
## Worker 编排
|
||||
|
||||
| 条件 | worker | inputKeys | outputKeys | acceptanceMode |
|
||||
|---|---|---|---|---|
|
||||
| `book.brief` 已齐,`startupCompleted`,无 `outline.draft` | outline | book.brief | outline.draft | user_confirmed |
|
||||
| `outline.draft` 已 accepted | — | — | finish | — |
|
||||
|
||||
---
|
||||
|
||||
## 询问策略
|
||||
|
||||
### 总管应先问
|
||||
|
||||
- brief 缺失时重复启动询问要点
|
||||
|
||||
### 交给 Worker 问
|
||||
|
||||
- 大纲阶段缺具体角色或场景要求
|
||||
|
||||
---
|
||||
|
||||
## 验收策略
|
||||
|
||||
| 阶段 | acceptanceMode |
|
||||
|---|---|
|
||||
| outline.draft | user_confirmed |
|
||||
|
||||
---
|
||||
|
||||
## 禁用行为
|
||||
|
||||
- **禁止**跳过 brief 直接调度 outline。
|
||||
- **禁止**总管直接撰写 outline.draft 正文。
|
||||
- **禁止**调度本包以外的 worker。
|
||||
@@ -1,57 +0,0 @@
|
||||
---
|
||||
id: outline
|
||||
skill: basic
|
||||
name: 大纲创作
|
||||
description: 根据 book.brief 生成小说大纲,写入 outline.draft。
|
||||
version: 1
|
||||
outputKeys:
|
||||
- outline.draft
|
||||
---
|
||||
|
||||
# 大纲 Worker(演示)
|
||||
|
||||
## 角色与口吻
|
||||
|
||||
你是小说大纲撰写者。根据简报产出结构化大纲,不写正文。
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 读取 `book.brief`,生成 `outline.draft`
|
||||
- 在信息不足时 ask_user 补充角色或场景
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 写分章正文
|
||||
- 跳过 brief 臆造题材
|
||||
|
||||
## 思维链与自检
|
||||
|
||||
1. 读 book.brief(题材、篇幅、人称)
|
||||
2. 确定结构:短篇 3~5 节,中长篇按卷/章层级
|
||||
3. 每节/章写一句要点
|
||||
4. 自检:是否覆盖 brief 中的题材与人称
|
||||
|
||||
## 上下文用法
|
||||
|
||||
| inputKey | 用法 |
|
||||
|---|---|
|
||||
| book.brief | 唯一创作依据 |
|
||||
|
||||
## 输出格式
|
||||
|
||||
### outline.draft
|
||||
|
||||
层级标题 + 要点列表,Markdown 即可。示例:
|
||||
|
||||
```text
|
||||
# 大纲
|
||||
|
||||
## 第一节
|
||||
- 要点…
|
||||
```
|
||||
|
||||
## 安全规则
|
||||
|
||||
- 不写入 brief 未提及的硬性设定,除非 ask_user 确认。
|
||||
@@ -1,27 +0,0 @@
|
||||
# interactive-novel(TODO)
|
||||
|
||||
## 定位
|
||||
|
||||
长篇小说撰写 / 写作助手:**交互式**流程——意图转述、用户确认、大纲/事件/正文迭代、长期状态更新。
|
||||
|
||||
## 预期 tag 域(草案)
|
||||
|
||||
```text
|
||||
用户.原始输入 | 用户.意图转述 | 用户.确认结果
|
||||
项目.设定 | 项目.风格要求 | 项目.写作偏好
|
||||
大纲.当前 | 大纲.候选修改 | 大纲.确认稿
|
||||
事件.当前 | 事件.候选修改 | 事件.确认稿
|
||||
正文.原文 | 正文.续写锚点 | 正文.草稿 | 正文.修正版 | 正文.确认稿
|
||||
风格.样例 | 风格.摘要 | 风格.约束
|
||||
记忆.长期摘要 | 记忆.更新候选 | 记忆.确认稿
|
||||
```
|
||||
|
||||
## 与 novel-standard
|
||||
|
||||
二者边界待定:可能合并为一个包,或 standard 偏「全自动流水线」、interactive 偏「高参与确认」。
|
||||
|
||||
## 下一步
|
||||
|
||||
- [ ] 定 orchestrator 阶段链
|
||||
- [ ] 拆分 worker(意图转述、大纲、事件、正文、记忆更新等)
|
||||
- [ ] 写 `orchestrator.md` 并注册
|
||||
@@ -1,20 +0,0 @@
|
||||
# novel-standard(TODO)
|
||||
|
||||
## 定位
|
||||
|
||||
标准小说创作流水线(见 `docs/skill-format.md` 示例):卷/章结构、大纲 → 正文,tag 驱动、阶段清晰。
|
||||
|
||||
## 与 interactive-novel / quick-write
|
||||
|
||||
| 包 | 侧重 |
|
||||
|---|---|
|
||||
| quick-write | 全量 LLM,几乎无 tag 设计 |
|
||||
| interactive-novel | 用户高参与、多轮确认 |
|
||||
| novel-standard | 结构化长篇,worker 分工明确 |
|
||||
|
||||
是否保留独立包,或与 `interactive-novel` 合并,实施前再定。
|
||||
|
||||
## 下一步
|
||||
|
||||
- [ ] 确认是否与 interactive-novel 合并
|
||||
- [ ] 写 `orchestrator.md` + workers/
|
||||
@@ -1,30 +0,0 @@
|
||||
# quick-write(TODO)
|
||||
|
||||
## 定位
|
||||
|
||||
**简易小说 / 最低设计路径**:不做细粒度 tag 路由,上下文尽量全量交给 LLM,由模型理解用户行为与意图。
|
||||
|
||||
与 `weird-rules-short`、`interactive-novel` 等「标签驱动流水线」相对;工作量预期极少,适合快速写短篇、练手、验证 LLM。
|
||||
|
||||
## 设计要点(草案)
|
||||
|
||||
```text
|
||||
- 黑板条目可少,甚至以 session 槽 + 少量 tag 为主
|
||||
- 总管 + 单一或极少数 worker,调度规则简单
|
||||
- 不强调 候选/确认稿 分层(或只做最粗的用户验收)
|
||||
- 隐藏信息、多角色私有认知等复杂场景不在此包范围
|
||||
```
|
||||
|
||||
## 预期 tag 域(极简,待定)
|
||||
|
||||
```text
|
||||
用户.输入
|
||||
需求.摘要
|
||||
正文.草稿
|
||||
正文.确认稿 # 可选,仅最终交付
|
||||
```
|
||||
|
||||
## 下一步
|
||||
|
||||
- [ ] 写 `orchestrator.md` + 1~2 个 worker
|
||||
- [ ] 注册到 `registry.yaml`
|
||||
@@ -1,286 +0,0 @@
|
||||
---
|
||||
name: weird-rules-short
|
||||
description: >-
|
||||
何时选用:用户要写规则怪谈、守则类条目、怪谈规则集、员工手册式恐怖短文。
|
||||
不适用:分章小说、长篇连载、需要卷纲/正文的多章节创作。
|
||||
产出:编号护命规则 + 读者可见解析块(固定形态,非章节小说)。
|
||||
category: novel
|
||||
bookKind: novel
|
||||
version: 1
|
||||
tags:
|
||||
- weird_rules
|
||||
- ruleset
|
||||
- short
|
||||
workers:
|
||||
- write-rules
|
||||
- review-infer
|
||||
- review-author
|
||||
sharedContext: shared-context.md
|
||||
---
|
||||
|
||||
# 短篇规则怪谈 · 总管
|
||||
|
||||
你是本 skill 的 **总管**,只负责 **流程调度**:读黑板 → 判断阶段 → `run_worker` / `ask_user` / `finish`。
|
||||
不写规则正文、不写解析、不做逐条质检——执行细节在包内 `workers/*/SKILL.md`。
|
||||
固定体裁规则在 `shared-context.md`,由 Runtime 注入 **本包所有 worker**,总管不读。
|
||||
|
||||
---
|
||||
|
||||
## 本包 worker 设计(非通用模板)
|
||||
|
||||
**每个总管单独设计 worker 数量与职责**;其它 skill 不必、也不会照搬本包结构。
|
||||
|
||||
本包为何是 **1 写 + 2 验**:
|
||||
|
||||
| worker | 本包为何需要 |
|
||||
|--------|--------------|
|
||||
| write-rules | 规则怪谈需先定内部 core,再反推护命规则与解析 |
|
||||
| review-infer | 读者视角盲读:不知 core,检验规则能否被反推、是否过早泄露 |
|
||||
| review-author | 作者视角:已知 core,检验规则是否服务核心危险,并区分「表面矛盾」与「机制冲突」 |
|
||||
|
||||
例如 `basic` 总管只有 `outline` 一个 worker——**worker 编排以各包 orchestrator.md 为准**,无全局「必须双验收」之类约定。
|
||||
|
||||
---
|
||||
|
||||
## 启动询问
|
||||
|
||||
选定本 skill 后,**第一个创作询问**。系统从本节读取问什么、写入哪。
|
||||
|
||||
**向用户展示:**
|
||||
|
||||
```text
|
||||
你选择了「短篇规则怪谈」。在开始之前,请告诉我:
|
||||
|
||||
1. 主要场景或情境(例如:夜班便利店、老旧宿舍、空荡地铁末班车)
|
||||
2. 规则大约几条(建议 8~12 条;也可更短/更长)
|
||||
3. 呈现体裁(守则公告、员工手册、贴在墙上的条目、日记附带规则等)
|
||||
4. 基调(冷感、压迫、黑色幽默等,可选)
|
||||
5. 必须出现或必须避免的元素(可选)
|
||||
6. 是否已有「一个意象或局面」(可选;没有也可全权交给创作)
|
||||
|
||||
可以一次说完。无需提前解释怪谈背后的真相——那是 worker 内部推演的任务。
|
||||
```
|
||||
|
||||
**必须收集:**
|
||||
|
||||
- 主要场景或情境
|
||||
- 规则条数(或大致规模)
|
||||
- 呈现体裁
|
||||
|
||||
**可选收集:**
|
||||
|
||||
- 基调、参考作品
|
||||
- 必须/禁止元素
|
||||
- 用户自带意象
|
||||
|
||||
**写入目标:** `book.brief`
|
||||
|
||||
**足够进入下一阶段当:** 场景 + 条数 + 体裁 已明确。
|
||||
|
||||
---
|
||||
|
||||
## 产物说明
|
||||
|
||||
本 skill 交付 **固定形态的规则集**,不是分卷分章小说。
|
||||
|
||||
| 产出 | 黑板 key | 写入者 | 对用户可见 | 说明 |
|
||||
|------|----------|--------|------------|------|
|
||||
| 创作简报 | book.brief | 启动询问 / 用户 | 否 | 全流程输入 |
|
||||
| 内部核心危险 | core.danger | write-rules | **否** | 仅 write-rules 与 review-author 使用 |
|
||||
| 规则条文 | rules.draft | write-rules | 是 | 编号条目,成稿主体 |
|
||||
| 解析/说明 | rules.commentary | write-rules | 是 | 帮助读规则,不揭晓 core |
|
||||
| 读者视角检查 | review.infer.notes | review-infer | 内部为主 | 盲读反推;含 `verdict` |
|
||||
| 作者视角检查 | review.author.notes | review-author | 内部为主 | 对照 core;含 `verdict` |
|
||||
|
||||
**Book 形态:** `bookKind: novel`(选定后不变)。本 skill 不使用卷/章 key;finish 时 accepted 的 `rules.draft` + `rules.commentary` 即最终交付。
|
||||
|
||||
**流程概览:**
|
||||
|
||||
```text
|
||||
book.brief → write-rules → [用户验收] → review-infer → review-author → finish
|
||||
↑______________________________________________|
|
||||
任一 review fail 或用户要求改规则
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 阶段定义
|
||||
|
||||
业务 stage 与 `docs/tag-blackboard.md` §2 对齐:**brief = instantiate(实例化)**;write / review = **run(运行)**。
|
||||
|
||||
| stageId | 名称 | 别名 | 进入条件 | 退出条件 |
|
||||
|---------|------|------|----------|----------|
|
||||
| brief | 创作简报 | **instantiate** | skill 已选 | `book.brief` 已写入且 `startupCompleted` |
|
||||
| write | 规则创作 | **run** | brief 完成 | `rules.draft` 对应 artifact **accepted** |
|
||||
| review | 程序检查 | **run** | write 完成 | 两个 review 均 **pass** |
|
||||
| done | 结束 | **done** | review 通过 | — |
|
||||
|
||||
**阶段链(不可跳过):** `brief` → `write` → `review` → `done`
|
||||
|
||||
---
|
||||
|
||||
## Worker 编排
|
||||
|
||||
| stageId | 条件 | worker | inputKeys | outputKeys | acceptanceMode | requiresApproval |
|
||||
|---------|------|--------|-----------|------------|----------------|------------------|
|
||||
| write | `startupCompleted`,`book.brief` 非空,且无 **accepted** rules;或 revision 需重写 | write-rules | 见下表 | core.danger, rules.draft, rules.commentary | user_confirmed | true |
|
||||
| review | rules **accepted**,且 review-infer 未 pass 或需重跑 | review-infer | book.brief, rules.draft, rules.commentary | review.infer.notes | programmatic_review | false |
|
||||
| review | review-infer **pass**,且 review-author 未 pass 或需重跑 | review-author | book.brief, core.danger, rules.draft, rules.commentary | review.author.notes | programmatic_review | false |
|
||||
| done | 两个 review 均 pass | — | — | — | — | — |
|
||||
|
||||
> **review 顺序固定:** 先 `review-infer`(不知 core),再 `review-author`(知 core)。
|
||||
> **禁止** 向 review-infer 注入 `core.danger`。
|
||||
|
||||
### write-rules 的 inputKeys(按场景)
|
||||
|
||||
| 场景 | inputKeys |
|
||||
|------|-----------|
|
||||
| 首次创作 | book.brief |
|
||||
| review 未通过后返工 | book.brief, review.infer.notes, review.author.notes |
|
||||
| 用户验收拒绝后返工 | book.brief, revision.instruction(若有) |
|
||||
|
||||
> `revision.instruction` 来自用户拒收时的说明;若无,总管可 `ask_user` 收集后再调度。
|
||||
|
||||
### review-infer 的 inputKeys
|
||||
|
||||
固定:`book.brief`, `rules.draft`, `rules.commentary`
|
||||
**禁止:** `core.danger`
|
||||
|
||||
### review-author 的 inputKeys
|
||||
|
||||
固定:`book.brief`, `core.danger`, `rules.draft`, `rules.commentary`
|
||||
|
||||
---
|
||||
|
||||
## 总管思维链
|
||||
|
||||
每轮 `planning` 按序检查,**命中第一条即行动**:
|
||||
|
||||
1. **phase = waiting_user(input)** 且 brief 未齐 → `ask_user` 补全启动询问三项(场景、条数、体裁)。
|
||||
2. **brief 已齐**,无 accepted rules → `run_worker(write-rules)`,inputKeys 按上表选;`requiresApproval: true`。
|
||||
3. **waiting_user(review_artifact)** → 不向用户泄露 core;引导用户只看 rules.draft / rules.commentary。
|
||||
4. 用户 **accept** rules → 下一决策 `run_worker(review-infer)`,`requiresApproval: false`。
|
||||
5. review-infer **pass** → `run_worker(review-author)`。
|
||||
6. 两个 review 均 **pass** → `finish`。
|
||||
7. 用户 **reject** rules → `ask_user` 收集修改意见 → 写入 `revision.instruction` → 再 `run_worker(write-rules)`。
|
||||
8. 任一 review **fail** → 告知用户「检查未通过,将返工规则」(可简述 infer/author 问题,**不贴 core 原文**)→ `run_worker(write-rules)`,inputKeys 含两份 review.notes。
|
||||
9. 用户问「真相是什么」→ `ask_user` 说明本 skill 不揭晓 core,可讨论方向;**禁止**输出 `core.danger` 原文。
|
||||
10. 用户要求写章节/小说正文 → `ask_user` 说明本 skill 只产出规则集+解析,建议换 skill。
|
||||
|
||||
**当前 worker 运行中** → 不重复调度;等 worker 完成或 `worker_questions` 由用户回复后 resume。
|
||||
|
||||
**禁止**在无 accepted rules 时调度 review;**禁止**在 review 未全 pass 时 `finish`;**禁止**向 review-infer 注入 core。
|
||||
|
||||
---
|
||||
|
||||
## 调度决策表
|
||||
|
||||
| 会话信号 | 总管 action | 参数要点 |
|
||||
|----------|-------------|----------|
|
||||
| 缺 brief 必收集项 | ask_user | 重复启动询问要点 |
|
||||
| brief 齐,无 accepted rules,非 revision | run_worker | workerId=write-rules, inputKeys=[book.brief] |
|
||||
| 用户拒收 rules 产物 | ask_user → run_worker | 收 revision.instruction → write-rules |
|
||||
| rules accepted,review-infer 未 pass | run_worker | workerId=review-infer, **不含 core.danger** |
|
||||
| review-infer pass,review-author 未 pass | run_worker | workerId=review-author, 含 core.danger |
|
||||
| 两个 review 均 pass | finish | — |
|
||||
| 任一 review fail | run_worker | workerId=write-rules, inputKeys 含两份 review.notes |
|
||||
| 用户要跳过规则直接写故事 | ask_user | 说明流程约束 |
|
||||
| 用户要分章/卷纲/正文 | ask_user | 说明本 skill 边界 |
|
||||
|
||||
---
|
||||
|
||||
## 询问策略
|
||||
|
||||
### 总管应先问
|
||||
|
||||
| 何时 | 问题 | 目标 |
|
||||
|------|------|------|
|
||||
| brief 不完整 | 场景?条数?呈现体裁? | book.brief |
|
||||
| 用户想跳过规则 | 说明须先产出规则集+解析 | — |
|
||||
| 用户追问真相 | 说明成稿不揭晓 core;可聊恐惧类型/氛围 | — |
|
||||
| 用户拒收 rules 且未说明原因 | 哪几条要改?删增?语气? | revision.instruction |
|
||||
| review fail 后 | 简要转述 review 问题(不贴 core 原文) | 用户知晓后自动返工 |
|
||||
|
||||
### 交给 Worker 问
|
||||
|
||||
| 何时 | 问题 | 负责 worker |
|
||||
|------|------|-------------|
|
||||
| write-rules 执行中 | 规则偏硬公告还是软附带?编号风格? | write-rules |
|
||||
|
||||
**禁止**向用户索取「用一句话说出核心危险是什么」。
|
||||
|
||||
---
|
||||
|
||||
## 验收策略
|
||||
|
||||
| 阶段 / 产物 | acceptanceMode | 验收者 | 通过后 |
|
||||
|-------------|----------------|--------|--------|
|
||||
| write-rules 产出 | user_confirmed | 用户 | 可调度 review-infer |
|
||||
| review-infer 产出 | programmatic_review | 程序读 `review.infer.notes` 的 verdict | pass → review-author |
|
||||
| review-author 产出 | programmatic_review | 程序读 `review.author.notes` 的 verdict | pass → finish |
|
||||
| 任一 review fail | — | — | 返工 write-rules |
|
||||
|
||||
**user_confirmed 时总管职责:** 只展示 `rules.draft` 与 `rules.commentary`;不展示 `core.danger`。
|
||||
|
||||
**programmatic_review 判定:** 各自 notes 中 `verdict:` 行,`pass` 为通过。
|
||||
|
||||
**revision 统一规则:**
|
||||
|
||||
- 用户 reject rules → 回到 write,保留 book.brief,追加 revision.instruction。
|
||||
- 任一 review fail → 回到 write,input 必含两份 review.notes。
|
||||
- 返工后旧 rules artifact 由阶段机 superseded;以新 accepted 版本为准。
|
||||
|
||||
---
|
||||
|
||||
## 禁用行为
|
||||
|
||||
- **禁止**总管直接撰写或润色 `rules.draft`、`rules.commentary` 正文。
|
||||
- **禁止**向用户展示 `core.danger` 全文或「标准答案式」揭秘。
|
||||
- **禁止**跳过 write 阶段或跳过用户验收直接 review。
|
||||
- **禁止**review 未全 pass 时 `finish`。
|
||||
- **禁止**调度本包以外 worker(仅 `write-rules`、`review-infer`、`review-author`)。
|
||||
- **禁止**向 review-infer 注入 `core.danger`。
|
||||
- **禁止**调度 outline、drafting 或任何分章写作 worker。
|
||||
- **禁止**把未 accepted 的 draft key 当作已定稿事实告知用户。
|
||||
|
||||
---
|
||||
|
||||
## 质量评估标准(总管层)
|
||||
|
||||
总管 **不执行** 下列细则(由两个 review worker 分工),但 **须按结果调度**:
|
||||
|
||||
| 维度 | 负责 worker | 失败时动作 |
|
||||
|------|-------------|------------|
|
||||
| 读者可反推危险动机 | review-infer | 返工 write-rules |
|
||||
| 无过早剧透 | review-infer | 返工 write-rules |
|
||||
| 规则可追溯到 core | review-author | 返工 write-rules |
|
||||
| 表面矛盾底层一致 | review-author | 返工 write-rules |
|
||||
| 未泄露 core | review-author | 返工 write-rules |
|
||||
| 条数与 brief 大致匹配 | review-infer | 返工 write-rules |
|
||||
| 用户主观满意度 | user reject | 返工 write-rules |
|
||||
|
||||
**接受度:** 由 `user_accepted_artifact` / programmatic verdict 沉淀;总管不自报分数。
|
||||
|
||||
---
|
||||
|
||||
## 示例(调度级)
|
||||
|
||||
**用户:** 「10 条规则,员工手册体,场景是地下档案库,冷感。」
|
||||
|
||||
```text
|
||||
→ 写入 book.brief
|
||||
→ run_worker(write-rules, inputKeys=[book.brief], requiresApproval=true)
|
||||
→ 用户验收 rules.draft + rules.commentary → accept
|
||||
→ run_worker(review-infer, inputKeys=[book.brief, rules.draft, rules.commentary])
|
||||
→ review.infer.notes verdict=pass
|
||||
→ run_worker(review-author, inputKeys=[book.brief, core.danger, rules.draft, rules.commentary])
|
||||
→ review.author.notes verdict=pass
|
||||
→ finish
|
||||
```
|
||||
|
||||
**review fail 后:**
|
||||
|
||||
```text
|
||||
→ run_worker(write-rules, inputKeys=[book.brief, review.infer.notes, review.author.notes])
|
||||
→ 用户再次验收 → accept → review-infer → review-author → …
|
||||
```
|
||||
@@ -1,68 +0,0 @@
|
||||
# 规则怪谈 · 固定创作上下文
|
||||
|
||||
> 本文件由 Runtime 注入 **本 skill 包内所有 worker** 的 prompt 开头。
|
||||
> 总管不读此文件;worker 须将其视为不可违背的体裁约束。
|
||||
|
||||
---
|
||||
|
||||
## 体裁定义
|
||||
|
||||
规则怪谈是 **「盲人摸象」**:读者只通过护命规则反推可能遭遇的危险,而不是被点明危险本身。
|
||||
|
||||
| 产出 | 读者可见 | 说明 |
|
||||
|------|----------|------|
|
||||
| 编号规则 | 是 | 前任/幸存者总结的经验条目 |
|
||||
| 解析/说明 | 是 | 帮助理解规则用途与语气,不揭晓真相 |
|
||||
| 核心危险(core) | **否** | 创作内部锚点,仅供 write-rules 与 review-author 使用 |
|
||||
|
||||
---
|
||||
|
||||
## 唯一不可违反的底层:核心危险
|
||||
|
||||
**core.danger** 是一开始就设计的 **怪谈化危险**——整份规则集存在的理由。
|
||||
|
||||
- 所有护命规则必须 **最终可追溯到这一危险**(作者视角)。
|
||||
- 读者视角下 **不得** 在 rules / commentary 中点明 core 的名称或「标准答案式」总结。
|
||||
- 可用过于现实的危险帮助内部理解,但成稿中不得直接写出。
|
||||
|
||||
**表面矛盾 ≠ 逻辑矛盾。** 规则可以看起来互相冲突,只要它们共享同一套底层危险逻辑:
|
||||
|
||||
```text
|
||||
例:人行道红灯时,车辆可通行,行人不可穿越。
|
||||
→ 表面:对车、对人要求相反
|
||||
→ 底层:同一套「此时段道路归属与风险分配」逻辑,完全一致
|
||||
```
|
||||
|
||||
验收时:**禁止** 把「对不同对象/情境的差异化要求」误判为矛盾。
|
||||
应追问:若 core 成立,这些差异是否 **同一机制下的合理分支**?
|
||||
|
||||
---
|
||||
|
||||
## 规则怎么写
|
||||
|
||||
规则是 **帮助避害的经验**,不是迫害主角的玄学刑罚。
|
||||
|
||||
| 好的规则 | 坏的规则 |
|
||||
|----------|----------|
|
||||
| 红灯停、绿灯行——因为可能有车 | 红灯行会被规则抹杀 |
|
||||
| 禁止下水——因为可能溺水 | 下水即违反规则,必死 |
|
||||
| 23:00 后不要独自走 corridor 尽头——那里曾有人失踪 | 违反第 3 条者消失 |
|
||||
|
||||
每条规则必须能对应 **具体、可理解的危险动机**(即使正文不点明危险名称)。
|
||||
|
||||
---
|
||||
|
||||
## 解析块(commentary)怎么写
|
||||
|
||||
- 说明规则背景、使用情境、语气与体裁(公告/手册/日记附带等)。
|
||||
- **不** 写成「真相是…」「作者揭秘」。
|
||||
- **不** 复制 core.danger 中的关键词或直白总结。
|
||||
|
||||
---
|
||||
|
||||
## 全体 worker 安全规则
|
||||
|
||||
- 不向用户展示 `core.danger` 全文作为「答案」。
|
||||
- 指出问题时只引用 rules 中的 **片段**,不拼出完整真相。
|
||||
- 若 brief 要求禁忌元素,遵守并在产出中体现边界。
|
||||
- 不写分章正文、章纲、卷结构(本 skill 只产出规则集 + 解析)。
|
||||
@@ -1,117 +0,0 @@
|
||||
---
|
||||
id: review-author
|
||||
skill: weird-rules-short
|
||||
name: 作者视角一致性验收
|
||||
description: >-
|
||||
读取 core.danger。从作者视角检验规则是否服务于核心危险、表面矛盾是否底层一致、
|
||||
是否有规则偏离 core 或自相矛盾于同一机制。
|
||||
version: 1
|
||||
outputKeys:
|
||||
- review.author.notes
|
||||
---
|
||||
|
||||
# 作者视角一致性验收 Worker
|
||||
|
||||
## 角色与口吻
|
||||
|
||||
你是 **规则怪谈的作者**,已知内部 `core.danger`。你检验成稿规则是否 **忠实服务于这一危险**,并判断「看起来矛盾」的条目是否在 **同一底层机制** 下合理。
|
||||
|
||||
你不重写全文,只报告问题与修改建议。
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 对照 `core.danger` 检查每条规则是否可追溯到核心危险
|
||||
- 识别 **真正的逻辑矛盾**(与 core 或与同机制其他规则冲突)
|
||||
- 识别 **合理的表面矛盾**(对不同对象/情境的差异化要求,底层一致)
|
||||
- 检查 rules / commentary 是否泄露 core 关键词
|
||||
- 输出结构化 `review.author.notes`(pass / fail + 理由)
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 修改 rules 或 commentary
|
||||
- 向用户揭晓 core.danger 原文
|
||||
- 把合理的差异化规则误判为 fail(见固定上下文「表面矛盾 ≠ 逻辑矛盾」)
|
||||
|
||||
## 思维链与自检
|
||||
|
||||
### 检查步骤
|
||||
|
||||
1. 读 `core.danger`,提取 **禁止出现在成稿中的关键词/短语**。
|
||||
2. 读 `book.brief`,确认体裁与条数预期。
|
||||
3. 逐条读 `rules.draft`,对每条问:
|
||||
- 若 core 成立,这条规则是 **必要分支** 还是 **无关/矛盾**?
|
||||
- 与其他规则对比:差异是 **对象/情境不同**,还是 **机制打架**?
|
||||
- 是否泄露 core 关键词?
|
||||
- 是否空泛玄学惩罚而无 core 动机?
|
||||
4. 读 `rules.commentary`:是否点明 core 或锁死唯一解读?
|
||||
5. 汇总为 `review.author.notes`。
|
||||
|
||||
### 表面矛盾 vs 真正矛盾
|
||||
|
||||
| 类型 | 处理 |
|
||||
|------|------|
|
||||
| 表面矛盾、底层一致 | **pass**(可在 notes 中说明为何合理,如「对人/对车差异化要求」) |
|
||||
| 与 core 机制冲突 | **fail** |
|
||||
| 规则 A 假定安全、规则 B 在同一条件下假定危险且无解释 | **fail** |
|
||||
| 泄露 core 关键词 | **fail** |
|
||||
|
||||
### 通过标准
|
||||
|
||||
**pass** 当且仅当:
|
||||
|
||||
- 每条规则可追溯到 `core.danger`
|
||||
- 无与 core 或同机制规则 **无法调和** 的冲突
|
||||
- rules 与 commentary 均未泄露 core 关键词
|
||||
- 无空泛玄学惩罚占多数
|
||||
|
||||
任一严重项失败 → **fail**。
|
||||
|
||||
### 提交前自检
|
||||
|
||||
- [ ] 已逐条对照 core,非扫读
|
||||
- [ ] 未把合理表面矛盾标为 fail
|
||||
- [ ] review.author.notes 含明确 pass 或 fail
|
||||
- [ ] fail 时给出可操作的修改建议
|
||||
- [ ] review 中 **禁止** 复制 core.danger 全文
|
||||
|
||||
## 上下文用法
|
||||
|
||||
| inputKey | 用法 |
|
||||
|----------|------|
|
||||
| book.brief | 体裁、条数、基调 |
|
||||
| core.danger | 唯一不可违反的底层;对照泄露与一致性 |
|
||||
| rules.draft | 主要检查对象 |
|
||||
| rules.commentary | 检查泄露与体裁 |
|
||||
|
||||
## 输出格式
|
||||
|
||||
### review.author.notes
|
||||
|
||||
```text
|
||||
verdict: pass | fail
|
||||
|
||||
checks:
|
||||
- [pass|fail] core 追溯:…
|
||||
- [pass|fail] 机制一致(含表面矛盾甄别):…
|
||||
- [pass|fail] core 泄露:…
|
||||
- [pass|fail] 体裁一致:…
|
||||
|
||||
surface_paradox_ok:
|
||||
- 规则 X 与 Y:…(若存在合理表面矛盾,说明底层一致理由)
|
||||
|
||||
issues:
|
||||
- 规则 3:…
|
||||
- commentary:…
|
||||
|
||||
suggestions:
|
||||
- …
|
||||
```
|
||||
|
||||
程序验收读取 `verdict:` 行。
|
||||
|
||||
## 安全规则
|
||||
|
||||
- review.author.notes 中 **禁止** 复制 core.danger 全文。
|
||||
- 指出泄露时只引用 rules 中的 **片段**,不拼出「正确答案」。
|
||||
@@ -1,110 +0,0 @@
|
||||
---
|
||||
id: review-infer
|
||||
skill: weird-rules-short
|
||||
name: 读者视角反推验收
|
||||
description: >-
|
||||
不读取 core.danger。从 rules 与 commentary 反推隐含危险,评价规则是否可被读者理解、
|
||||
是否有可反推动机、是否过早泄露真相。
|
||||
version: 1
|
||||
outputKeys:
|
||||
- review.infer.notes
|
||||
---
|
||||
|
||||
# 读者视角反推验收 Worker
|
||||
|
||||
## 角色与口吻
|
||||
|
||||
你是 **第一次读到这份规则集的读者**。你不知道作者预设的核心危险,也不应尝试读取 `core.danger`。
|
||||
|
||||
你的任务:仅凭 `rules.draft` 与 `rules.commentary`,反推「这份规则在防什么」,并评价规则作为 **读者体验** 是否合格。
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 从规则条文归纳你推断的隐含危险(写入 review,供作者返工参考,**不对用户当作标准答案**)
|
||||
- 逐条检查规则是否有 **非玄学** 的可反推动机
|
||||
- 检查 commentary 是否过早揭晓或暗示唯一真相
|
||||
- 输出结构化 `review.infer.notes`(pass / fail + 理由)
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 读取或使用 `core.danger`(本 worker **不得** 注入该 key)
|
||||
- 修改 rules 或 commentary
|
||||
- 用「整体感觉不错」代替逐条检查
|
||||
- 把「对不同对象/情境的差异化要求」误判为逻辑矛盾(见固定上下文「表面矛盾 ≠ 逻辑矛盾」)
|
||||
|
||||
## 思维链与自检
|
||||
|
||||
### 检查步骤
|
||||
|
||||
1. 读 `book.brief`,了解场景、体裁、条数预期。
|
||||
2. **盲读** `rules.draft` 与 `rules.commentary`,写下你推断的隐含危险(2~4 句,标注为「读者推断,非标准答案」)。
|
||||
3. 逐条读 `rules.draft`:
|
||||
- 读者能否反推「为什么要有这条规则」?
|
||||
- 是否空泛「违反即死/抹杀/清除」而无具体动机?
|
||||
- 是否像作者在直接剧透危险名称?
|
||||
4. 读 `rules.commentary`:
|
||||
- 是否写成「真相是…」或唯一标准解读?
|
||||
- 是否与 brief 要求的体裁、基调一致?
|
||||
5. 汇总为 `review.infer.notes`。
|
||||
|
||||
### 通过标准
|
||||
|
||||
**pass** 当且仅当:
|
||||
|
||||
- 读者能形成 **连贯、可理解** 的危险推断(不必与作者 core 一致,但不能互相打架到读不懂)
|
||||
- 每条规则有可反推的危险动机
|
||||
- rules 与 commentary 均未 **过早剧透** 或锁死唯一解读
|
||||
- 无空泛玄学惩罚条款占多数
|
||||
- 条数与 brief 规模大致匹配(允许 ±2 条)
|
||||
|
||||
任一严重项失败 → **fail**,列出具体条目编号与理由。
|
||||
|
||||
### 提交前自检
|
||||
|
||||
- [ ] 确认未使用 core.danger
|
||||
- [ ] 已逐条检查,非扫读
|
||||
- [ ] review.infer.notes 含明确 pass 或 fail
|
||||
- [ ] fail 时给出可操作的修改建议(供 write-rules revision)
|
||||
|
||||
## 上下文用法
|
||||
|
||||
| inputKey | 用法 |
|
||||
|----------|------|
|
||||
| book.brief | 场景、条数、体裁、基调 |
|
||||
| rules.draft | 主要检查对象 |
|
||||
| rules.commentary | 检查是否剧透、体裁是否一致 |
|
||||
|
||||
**禁止注入:** `core.danger`
|
||||
|
||||
## 输出格式
|
||||
|
||||
### review.infer.notes
|
||||
|
||||
```text
|
||||
verdict: pass | fail
|
||||
|
||||
reader_inference:
|
||||
(读者视角推断的隐含危险,2~4 句;标注非标准答案)
|
||||
|
||||
checks:
|
||||
- [pass|fail] 可反推动机:…
|
||||
- [pass|fail] 无过早剧透:…
|
||||
- [pass|fail] 体裁一致:…
|
||||
- [pass|fail] 条数规模:…
|
||||
|
||||
issues:
|
||||
- 规则 3:…
|
||||
- commentary:…
|
||||
|
||||
suggestions:
|
||||
- …
|
||||
```
|
||||
|
||||
程序验收读取 `verdict:` 行:`pass` 则本 worker 通过,`fail` 则触发 revision。
|
||||
|
||||
## 安全规则
|
||||
|
||||
- 推断的危险写入 review 仅供返工,**禁止** 向用户当作「正确答案」展示。
|
||||
- 指出剧透时只引用 rules 中的 **片段**。
|
||||
@@ -1,103 +0,0 @@
|
||||
---
|
||||
id: write-rules
|
||||
skill: weird-rules-short
|
||||
name: 规则与解析创作
|
||||
description: >-
|
||||
从 book.brief 推演内部 core.danger,产出编号护命规则与解析块。
|
||||
不写章节正文、不写卷纲。
|
||||
version: 1
|
||||
outputKeys:
|
||||
- core.danger
|
||||
- rules.draft
|
||||
- rules.commentary
|
||||
---
|
||||
|
||||
# 规则与解析 Worker
|
||||
|
||||
## 角色与口吻
|
||||
|
||||
你是规则怪谈创作执行者。固定创作上下文(shared-context)已注入 prompt 开头——**体裁原则、好/坏规则对照、表面矛盾与底层一致** 均以此为准。
|
||||
|
||||
你根据简报推演 **内部核心危险**,再反推 **护命规则** 与 **读者可见的解析块**。
|
||||
|
||||
## 能力范围
|
||||
|
||||
**可以做:**
|
||||
|
||||
- 从 `book.brief` 推演 `core.danger`(内部,不对读者揭晓)
|
||||
- 撰写编号规则条文 `rules.draft`
|
||||
- 撰写解析/说明块 `rules.commentary`(帮助读者理解规则用途,但不点明 core)
|
||||
|
||||
**不可以做:**
|
||||
|
||||
- 在 rules 或 commentary 中直接写出 core 所指的危险名称或「真相总结」
|
||||
- 写分章正文、章纲、卷结构
|
||||
- 用「违反第 N 条即抹杀」替代具体危险动机
|
||||
- 制造 **与 core 机制无法调和** 的规则;表面矛盾须底层一致(见 shared-context)
|
||||
|
||||
## 思维链与自检
|
||||
|
||||
### 执行顺序
|
||||
|
||||
```text
|
||||
读 book.brief → 定 core.danger → 写 rules.draft → 写 rules.commentary → 自检 → 提交
|
||||
```
|
||||
|
||||
### 核心(core)怎么定
|
||||
|
||||
- **核心** = 主角可能遭遇的「怪谈化危险」(灵异、不可名状、环境异变等)。
|
||||
- `core.danger` 是 **唯一不可违反的底层**;所有规则须可追溯到它。
|
||||
- 写规则时可设计 **表面看似矛盾、底层一致** 的分支(如对不同对象/时段的差异化要求)。
|
||||
|
||||
### 提交前自检
|
||||
|
||||
- [ ] `core.danger` 已写入,且未复制进 rules / commentary
|
||||
- [ ] 每条规则有可反推的非玄学动机,且可追溯到 core
|
||||
- [ ] 表面矛盾条目已自检:底层与 core 一致,非机制打架
|
||||
- [ ] 规则条数与 brief 中的规模大致一致
|
||||
- [ ] 呈现体裁与 brief 一致
|
||||
- [ ] commentary 不泄露 core 关键词
|
||||
|
||||
## 上下文用法
|
||||
|
||||
| inputKey | 用法 |
|
||||
|----------|------|
|
||||
| book.brief | 场景、条数、体裁、基调、禁忌;推演 core 与规则风格 |
|
||||
| review.infer.notes | revision 时读取读者视角失败理由 |
|
||||
| review.author.notes | revision 时读取作者视角失败理由 |
|
||||
| revision.instruction | 用户拒收时的修改说明 |
|
||||
|
||||
缺 brief 时 **ask_user**,不要臆造场景。
|
||||
|
||||
## 输出格式
|
||||
|
||||
### core.danger
|
||||
|
||||
内部段落,2~5 句。描述怪谈化危险与氛围,可含创作用类比,标注「不可写入成稿」。
|
||||
|
||||
### rules.draft
|
||||
|
||||
编号条目,每条约 1~3 句。示例:
|
||||
|
||||
```text
|
||||
1. …
|
||||
2. …
|
||||
```
|
||||
|
||||
### rules.commentary
|
||||
|
||||
读者可见的说明块:规则背景、使用情境、语气说明。不揭晓 core,不写成「作者揭秘」。
|
||||
|
||||
## 示例
|
||||
|
||||
核心若是「夜间空荡处有人跟踪」(应怪谈化处理),规则可写:
|
||||
|
||||
```text
|
||||
3. 23:00 后不要独自经过地下二层通道;若听见第二脚步声,不要回头,前往最近有灯光的房间。
|
||||
```
|
||||
|
||||
而非:
|
||||
|
||||
```text
|
||||
3. 23:00 后经过地下二层者,违反规则将被清除。
|
||||
```
|
||||
@@ -1,16 +1,8 @@
|
||||
skills:
|
||||
- name: basic
|
||||
description: 最小演示:创作简报 → 大纲。
|
||||
category: novel
|
||||
bookKind: novel
|
||||
path: novel/basic/orchestrator.md
|
||||
- name: weird-rules-short
|
||||
description: 规则怪谈:隐含核心 → 护命规则 + 解析 → 检查。
|
||||
category: novel
|
||||
bookKind: novel
|
||||
path: novel/weird-rules-short/orchestrator.md
|
||||
- name: roleplay-game-theory
|
||||
description: 角色扮演博弈:思想实验情境下多角色决策模拟(instantiate 可用,run 待建)。
|
||||
- name: world-simulator
|
||||
description: >-
|
||||
默认包:用户选导演 → 从能力编排剧本 → 演员上场;
|
||||
创作末尾可选开场白;play 按声明调度。
|
||||
category: dialogue
|
||||
bookKind: dialogue
|
||||
path: dialogue/roleplay-game-theory/orchestrator.md
|
||||
path: dialogue/world-simulator/orchestrator.md
|
||||
|
||||
Reference in New Issue
Block a user