引入上下文片段、固定槽与投影排序,并完善机遇裁定与游玩期 UI。

把创作产物收敛为可挂载片段与 play_slots/context_order,同步修订世界模拟器模块与运行时拼装。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-03 01:36:32 +08:00
parent 00dfcb6615
commit 94f67fa744
69 changed files with 7786 additions and 1283 deletions

View File

@@ -351,7 +351,8 @@ task 必须写:禁止重复同一开场;在首答上补洞。
- **键名对人友好**(中文或稳定中文标签)。
- 机器 id如 `ref`)若需要,与中文名成对出现。
- 写清「本步完成的定义」;未决放 `开放问题`,不要假完备。
- 不要在本技能产物里偷偷交下游能力该交的终稿(除非本技能就是收成步)。
- 不要在本技能产物里偷偷交下游能力该交的终稿(除非本技能就是收成步)。
- **中段「上下文创作」技能**须输出 §4.9 的 `context-fragment.v1`(含 `schema` / `brief` / `正文`);收成类技能用自有 schema见 `docs/context-fragment-design.md`)。
## 4.8 追问(`probe`)通用要求
@@ -360,15 +361,62 @@ task 必须写:禁止重复同一开场;在首答上补洞。
- 能推断则先写入再复述;只问影响本步核心且不能瞎填的点。
- 依赖产物已钉死的内容禁止重问。
## 4.9 上下文片段公共头(`context-fragment.v1`
中段技能(美学、机制、世界、叙事、变量…)的产物**不是**自由发明执行单元,而是可挂载的上下文片段。完整说明见 **`docs/context-fragment-design.md`**。
**所有上下文创作技能**共用三段外壳(键名固定);**正文内部维度**与**自评维度名**按技能自定,但两块都必须有。
```json
{
"schema": "context-fragment.v1",
"技能": "{与 catalog 一致的中文名}",
"brief": "一句话概括",
"mount": ["world-simulator"],
"稳变": "stable",
"正文": { },
"自评": {
"维度": [{ "名": "…", "分数": 0, "说明": "…" }],
"薄弱点": "…"
},
"追问": {
"导语": "…",
"题目": [
{
"问": "…",
"建议选项": ["…", "其它(请写明)"],
"示例": "可选短钩子"
}
]
},
"开放问题": []
}
```
| 段 | 说明 |
|----|------|
| `正文` | **产物主体**。技能自定内部结构(如美学步=设定逻辑 + 交互范式 + 美学纲领);须含「详细各个方面」。禁止整份只交散文。 |
| `自评` | **自评评分**。`维度[]` 名目按技能定(美学步常用:交互范式 / 美学纲领 / 整体协调);可含 `薄弱点`。 |
| `追问` | **示例 + 建议选项**。给用户的下一问;`题目` 可空数组。与程序 askUser 可并存,但产物里要留结构化题面。 |
| 规则 | 说明 |
|------|------|
| `schema` | 必须原样写出,供前端友好渲染 |
| `mount` | 挂哪些槽/ref**不要**写最终数字 `order` |
| `稳变` | `stable` \| `semi` \| `volatile`,供「上下文投影排序」 |
| 收成例外 | 游玩拓扑 / 上下文投影排序 / 细化终稿用自有 schema不套本头 |
范例对齐:`modules/aesthetics-interaction/prompt.md`output 块)。
---
# 第五部分:撰写任一能力时的工作步骤
1. **定身份**中文名、id、artifact写清 when / when_not / boundary。
2. **看邻接**:上/下游能力各定什么;禁止重叠问卷。
3. **定产物形状**:先定 `output` JSON再写 task/probe 如何填满它。
3. **定产物形状**:先定 `output` JSON(中段须含 §4.9 公共头),再写 task/probe 如何填满它。
4. **定 opening**:需要程序先问再 LLM → 写 opening否则留空。
5. **写 principles / probe / checklist**:正推、缩减、禁止套件。
5. **写 principles / probe / checklist**:正推、缩减、禁止套件checklist 含 schema/brief/正文
6. **对照范例**:深度不低于 `aesthetics-interaction`。
7. **自检**§4 块齐全name 与 catalog 一致;用户文案无裸英文 id。
@@ -411,17 +459,18 @@ artifact
|------|-----|-------------------|
| 美学纲领与交互范式 | `aesthetics-interaction` | 范例 |
| 实现机制 | `mechanism` | 已写 |
| 世界蓝图与人文地理 | `world-blueprint` | 已写 |
| 生成规则 | `generation-rules` | 已写(可反复 |
| 具体实例 | `concrete-instances` | 已写(可反复 |
| 叙事指南 | `narrative` | 已写 |
| 舞台骨架 | `world-blueprint` | 已写`context-fragment.v1`;社会结构 + 世界状况) |
| 生成规则 | `generation-rules` | 已写(`context-fragment.v1`;可反复;合同严、正文可长 |
| 具体实例 | `concrete-instances` | 已写(`context-fragment.v1`;可反复;只按规则执行 |
| 叙事指南与故事推进 | `narrative` | 已写`context-fragment.v1`;遣词/笔墨/禁忌+推进;旧称叙事指南) |
| 正文组成 | `reply-format` | 已写(用户可见版式+隐藏段+前端拆分;旧称设计回复格式) |
| 设计监控栏 | `status-bar` | 已写(只盯会变信息;旧称设计状态栏) |
| 开场白与开场变量 | `opening-setup` | 已写(开场正文+初值;守正文组成) |
| 拓扑图谱 | `topology` | 待细写 |
| 变量设计与更新规则 | `variable-design` | 待细写 |
| 变量控制上下文 | `variable-context` | 待细写 |
| 设计状态栏 | `status-bar` | 待细写 |
| 设计回复格式 | `reply-format` | 待细写 |
| Worker 规格 | `worker-spec` | 已写(可反复) |
| 细化终稿 | `refine` | 已写 |
| 变量设计与更新规则 | `variable-design` | 已写;见 progressive-data-design.md |
| 变量控制上下文 | `variable-context` | 写 |
| 游玩拓扑 | `worker-spec` | 已写(勾选固定槽,不可反复发明) |
| 细化终稿 | `refine` | 已写(按槽收成) |
配方:世界模拟器、扩写助手(见 `recipes/`;写 `core`/`process`/`principles` + 起步 steps
@@ -433,6 +482,7 @@ artifact
|------|------|
| 本文 | **泛用**能力撰写 + 项目/称呼;给外部 AI 的主交接 |
| `world-simulator-modules.md` | 仓库内清单与格式摘要 |
| `context-fragment-design.md` | 片段 schema、槽位、投影排序与拼装阶段 |
| `ui-glossary.md` | 用户可见文案权威 |
| `architecture.md` | 运行内核;写能力时不必复述实现细节 |
| (已删)单能力特例简报 | 以本文为准;勿再恢复特例交接文 |

View File

@@ -0,0 +1,86 @@
# 提示词 / 能力文档修订清单(待你改)
> 程序侧已落地:`play_slots`、`settlement.v1`、模板默认契约、前端友好渲染雏形。
> **本清单只整理「可能需要你改的提示词/能力文」——此处不改正文,等你确认后再动。**
权威方法:`docs/progressive-data-design.md``docs/ui-glossary.md` §5.1。
---
## 优先级 P0与固定槽 + 裁决包强相关)
| 文件 | 状态 |
|------|------|
| `modules/worker-spec/prompt.md` | **已改** → 游玩拓扑,只勾选固定槽 |
| `modules/refine/prompt.md` | **已改** → 按 `play_slots` 收成,禁发明 ref |
| `modules/catalog.yaml` / 配方 / `design-flow` | **已改**(配方含:挂谁可早、排第几须晚) |
| `modules/context-order/prompt.md` | **骨架已写**`context-order.v1` |
| `docs/context-fragment-design.md` | **已写**;范例技能已对齐 `context-fragment.v1` |
| 程序:片段解析 / 扁平投影序 / `对话.历史` 可投影 | **已落地**(非硬双锚) |
| `orchestrator.md` | **仍待**play 调度顺序 perspective? → gm → narrator |
## 优先级 P1能力归属 feeds
| 文件 | 建议补什么 |
|------|------------|
| `modules/*/prompt.md``meta` | 统一加 `feeds: gm \| narrator \| runtime \| design_only \| perspective`(约定字段,程序以后可读) |
| `aesthetics-interaction` | `feeds: design_only`(再压缩进常驻);呈现要点可摘要给 narrator |
| `mechanism` | **已改** output→`context-fragment.v1``feeds: gm` |
| `world-blueprint` | **已改**→「舞台骨架」+ `context-fragment.v1``feeds: gm` |
| `generation-rules` / `concrete-instances` | **已改**`context-fragment.v1``feeds: gm`;宽原则+严外壳 |
| `narrative` | **已改**→「叙事指南与故事推进」;遣词/笔墨/禁忌+推进;`feeds: narrator` |
| `variable-design` | **已写**;核对 output 与 `tables.side_effects`、勿暗示「变量管理 worker」 |
| `variable-context` | **已写**;核对挂载对象用「主世界层/叙事转述」而非乱拆 |
| `reply-format` / `status-bar` | **已改**→正文组成 + 设计监控栏;`context-fragment.v1`;非程序报文 |
| `topology` | 骨架;若固定槽后可能降级为可选或删 |
| `worker-templates/*.yaml` | **程序已改** gm/narrator`role-decide` 可再收紧「只出建议」 |
## 优先级 P2文档口径
| 文件 | 建议 |
|------|------|
| `docs/design-orchestrator-guide.md` | § 三大步 / Worker 创造:改为固定槽 + 创作上下文映射;保留表副作用 |
| `docs/world-simulator-modules.md` | 清单状态worker-spec→拓扑链到本清单 |
| `docs/tag-blackboard.md` | 强调 `运行.本轮.裁决` = settlement.v1转述少读 `变量.当前` |
| `docs/skill-design-guide.md` | 若仍教「创造 worker」加世界模拟例外 |
| `ui-glossary.md` | §5.1 已有主世界层;可补「游玩槽位」用户可见词(可选) |
## 明确不必改成「第三 Worker」的
- **变量管理**:保持 `variable-design` / `variable-context` + Runtime `side_effects`,不要新 `variable-update` 必选槽。
- **世界观**:常驻挂 GM不要世界观执行单元。
- **性格分档**Data + Progressive tag不要性格 agent。
## 程序已做、提示词需跟上的契约
```json
// 设计.worker集世界模拟
{
"play_slots": { "gm": true, "narrator": true, "perspective": false },
"tables": { "side_effects": [/* */] },
"workers": [/* context/outputs */]
}
```
```json
// 运行.本轮.裁决
{
"schema": "settlement.v1",
"player_action": "…",
"resolved": ["…"],
"visible_now": "…",
"npc_moves": [{ "who": "…", "move": "…" }],
"variable_changes": [{ "key": "好感", "delta": 8 }],
"do_not_say": ["好感数字"],
"tone_hint": "…"
}
```
## 建议你改的顺序
1. `refine` + `worker-spec`(或新拓扑技能)对齐 `play_slots`
2. `world-simulator` 配方 + `orchestrator` 调度顺序
3. 各能力 meta 补 `feeds`
4. 骨架能力status-bar / reply-format / topology按需细写或降级
改完后告诉我,我可以按你的口径改提示词并加解析 `feeds`(若要程序注入)。

View File

@@ -39,6 +39,16 @@ Worker / skill 执行时Runtime 将黑板 tag 与固定体裁说明拼成 LLM
越增量、每轮变 → 越靠下dynamic
```
创作期若产出了 `context_order`(见 `context-fragment-design.md`
```text
按 inserts 扁平 order 顺序拼装(不再按 static/dynamic 重排)
「对话.历史」是排序表中的普通标签,按 projection 动态裁剪后插入
```
`order 0` 建议为槽位人设(`worker.persona`)。
`tier` 仅缓存提示;权威顺序是投影排序表。
**不是** agent 在游玩时自由往 prompt 里插段落agent 只决定 **invoke 哪个 skill**;该 skill 的契约决定看见什么。
---

View File

@@ -0,0 +1,133 @@
# 上下文片段 · 槽位 · 投影排序(产物与拼装规范)
> 作者与实现共用。用户侧术语见 `ui-glossary.md` §0。
> 技能撰写契约见 `briefs/capability-authoring-brief.md` §4.7 / §4.9。
> 真值门控见 `progressive-data-design.md`;拼装见 `context-assembly.md`。
## 1. 问题与分工
创作期不再「发明执行单元清单」,而是产出**可挂载的上下文片段**,再收成固定槽上的运行规格。
| 何时 | 钉什么 | 权威产物 |
|------|--------|----------|
| 中段各技能 | 片段正文 + **挂谁**mount+ 可选稳/变 | `设计.*``context-fragment.v1` |
| 游玩拓扑 | **启用哪些固定槽** | `设计.worker规格``play_slots` |
| 上下文投影排序(晚) | **扁平投影序**(含「对话.历史」标签) | `设计.上下文投影排序``context-order.v1` |
| 细化终稿 | 合并进运行规格 | `设计.worker集`(含 `play_slots` + `context_order` |
**挂谁可早、排第几须晚。** 中段禁止写死最终 `order`
## 2. 固定槽play_slots
| 槽键 | 默认 ref | 用户可见 | 默认 |
|------|----------|----------|------|
| `gm` | `world-simulator` | 主世界层 | 开 |
| `narrator` | `narrator` | 叙事转述 | 开 |
| `perspective` | `role-decide` | 角色视角 | 关 |
推荐游玩调度:`perspective? → gm → narrator`
## 3. 上下文片段:`context-fragment.v1`
公共外壳(**所有上下文创作技能相同**
| 段 | 含义 |
|----|------|
| `schema` / `技能` / `brief` / `mount` / `稳变` | 索引与挂载;不写 `order` |
| `正文` | **产物主体**(技能自定内部维度,但必须有「各个方面」) |
| `自评` | **自评评分**`维度[]` + 可选薄弱点;维度名按技能) |
| `追问` | **导语 + 题目**(建议选项 / 示例);可无题则 `题目: []` |
| `开放问题` | 未结构化的残项(可选) |
美学步正文:`设定逻辑` + `交互范式` + `美学纲领`(见 `aesthetics-interaction`)。
实现机制正文:`依据的核心体验` + `支撑点[]` + `支撑点关系[]` + `覆盖检验`(见 `mechanism`)。
舞台骨架正文:尺度 / 基底与变造 / **社会结构** / **世界状况** / 关键舞台区 / 未展开范围(见 `world-blueprint`)。
生成规则正文:必要性判断 + `rules[]`(生成与描写 + **单层**产物格式 + 可选多池绑顶层字段);自评=必要性/属性妥当/格式准确。
美学纲领自评仍为:交互范式 / 美学纲领 / 整体协调(勿与生成规则三维混用)。
叙事指南与故事推进正文:纲领 / 风格与遣词(+示范) / 笔墨焦点 / 禁忌与不偏好 / 情境备用 / 推进与决策 / 内容与表达;自评=写法可执行/推进可执行/与美学对齐artifact=`设计.叙事指南与故事推进`
正文组成:用户可见块序 + 监控栏锚点 + 隐藏变量段 + 前端拆分意图非程序报文artifact=`设计.正文组成`
设计监控栏:只监控会变字段(可含攻略目标/场景交互物artifact=`设计.监控栏`(旧称状态栏)。
变量设计:真值 + **维护语句** + **Data映射索引**(指向具体实例)+ side_effects。
变量控制上下文:各槽视野 + **旁观汇总**(当前档摘要)。
开场白与开场变量:开场正文(守正文组成)+ 开场初值;可经 opening-generator 落库。
具体实例正文:`rule_id` + `records[]`(单层,键随规则);自评=合规模(只按规则执行)。
其它技能换掉正文内块名与自评维度名即可,三段外壳不要拆。
## 4. 投影排序:`context-order.v1`(扁平序)
**不要**再把上下文硬拆成「历史前区 / 历史后区」。排序表就是一条投影流水线:
```text
order 0: worker.personafixed
order 1: 设计.实现机制summary
order 2: 对话.历史summary ← 历史本身也是标签
order 3: 变量.当前fields
order 4: 用户.最新输入full
```
```json
{
"schema": "context-order.v1",
"brief": "扁平投影序",
"play_slots": { "gm": true, "narrator": true, "perspective": false },
"slots": [
{
"ref": "world-simulator",
"inserts": [
{ "order": 0, "ref": "worker.persona", "projection": "fixed" },
{ "order": 1, "ref": "设计.实现机制", "projection": "summary" },
{ "order": 2, "ref": "对话.历史", "projection": "summary", "note": "按投影裁剪" },
{ "order": 3, "ref": "变量.当前", "projection": "fields" },
{ "order": 4, "ref": "用户.最新输入", "projection": "full" }
]
}
]
}
```
| 字段 | 说明 |
|------|------|
| `order` | 每槽独立扁平数字序;**0 建议为人设** |
| `ref` | 黑板 tag、`worker.persona`、或 **`对话.历史`** |
| `projection` | `fixed` \| `full` \| `summary` \| `fields`——对历史标签也生效 |
| `anchor` | **已废弃**;旧表可读,编排 API 的 `set_anchor` 现表示「移到历史标签前/后」 |
### 4.1 `对话.历史` 标签
- 程序在游玩期维护黑板 tag `对话.历史`(用户输入 + 助手可见输出追加)。
- 排序表里出现该 ref 时,按 **projection** 动态裁剪后注入(不是整段永远塞满)。
- 若尚未写入历史,可用 `运行.事件流` + `用户.最新输入` 拼兜底。
- 投影建议:`summary`(默认)/ `fields`(更短)/ `full`(更长)/ `fixed`(几乎不注入)。
### 4.2 拼装
Runtime 按 inserts 数组顺序拼进单条 user 上下文(`assembleWorkerContext` **不再**按 static/dynamic 重排)。
`tier` 仅作缓存提示(历史标签之前偏 static之后偏 dynamic
### 4.3 可编排
检查器「上下文投影排序 · 可编排」:
- ↑↓ 调整扁平位置
- 改 projection
- 「史前 / 史后」:把该项移到 `对话.历史` 之前或之后
API`POST /api/sessions/:id/context-order``move` / `set_projection` / `set_anchor` / `replace`)。
## 5. 运行规格落点
`设计.worker集``play_slots` + `context_order`;无表时可由声明合成(含历史标签)。
## 6. UI 渲染
| schema | 友好渲染 |
|--------|----------|
| `context-fragment.v1` | 概要 / 挂载 / 正文 |
| `context-order.v1` | 扁平序表;历史行高亮 |
## 7. 配方链路
```text
体验契约 → 确认槽 → 中段片段mount→ 投影排序(含对话.历史)→ 细化终稿
```

View File

@@ -81,7 +81,7 @@
- **扮演什么**(世界执行者?对白对手?写作助手?陈述实验?)
- **输出什么**(叙事、摘要、选项、表、大纲块…)
- **怎么输出**(单段终稿 / 程序拼状态栏+正文 / 多面板
- **怎么输出**(单段终稿 / 监控栏+正文分块 / 文末小块 / 隐藏变量段;见正文组成
- **怎么与用户交互**(回合对话、填表驱动、先大纲后正文…)
由此才谈:要不要转述、程序拼格式、表是否上屏等。
@@ -198,7 +198,7 @@
| 记忆 / 长线 / 大纲 / 随机分支 / 人设阶段 | **统一用表**§5维护 + 显隐 + 副作用插换上下文 |
| 信息差玩法 | 分角 worker极贵慎用 |
| 格式 | 程序拼 |
| 真随机 / 骰子卡组计算 | 用户触发或填入,或表;已有 tool 手动调;不临时造 tool |
| 真随机 / 骰子卡组计算 | 固定按需槽 `chance`程序工具roll/compare/draw/pick`运行.本轮.机遇``play_slots.chance` 开启后由编排器 run_worker禁止临时造 LLM「骰子演员」 |
| 用户不应知道的信息 | 程序固定注入,不进可见区;非 input 整理 worker |
| 输入协议 | 常驻上下文(`()` 元要求、`""` 对白、无包裹=事实等) |
@@ -278,6 +278,8 @@ value, rev, updatedAt, source # source: user | worker:<id> | system
实现:`src/blackboard/table-side-effects.ts`;写 `变量.当前` / `运行.初始变量` 后由 runtime 求值fired 存 `运行.表副作用.fired`
方法与技能落点(真值 / Data / Progressive、写入源、少拆执行单元**`progressive-data-design.md`**;创作技能:`variable-design``variable-context`
### 5.6 与交互流程
助手流:生成大纲/细纲 → **用户写入/改表** → 副作用或调度读表继续;始终尊重字段 `rev`
@@ -340,7 +342,7 @@ phase:core核心体验 + 交互)
```
**禁止默认**「先写完 worker 列表,再为每个 worker 填写上下文」。
Worker 规格应回答:职责是什么、读哪些已有 tag、写哪些 tag——而不是顺带发明一份私有美学
游玩拓扑只勾选固定槽(主世界层 / 转述 / 可选视角等),禁止自由发明执行单元;读写与美学长文分别由模板合并与上游常驻上下文承担
**UI**:检查器把固定上下文做成 **独立卡片区**(非 Worker 子项),每张卡展示 **塞进哪些 Worker**;见 `worker-set-view.ts``contextTags`

View File

@@ -0,0 +1,127 @@
# 真值变量 · Data · Progressive设计方法
> 给作者与世界模拟器技能用。运行内核细节见 `design-orchestrator-guide.md` §5、`src/blackboard/table-side-effects.ts`。
> 借鉴对照非耦合SillyTavern 世界书条目的 data / progressive 去向、evented「派生不落盘」。
## 1. 要解决什么
把「好感变了性格就变」「等级到了推进大纲」「场景切换」「程序抽事件」做成**可设计、可程序门控**的能力,而不是:
- 靠模型自觉「记得改性格」;
- 为每张表拆一个执行单元;
- 把大段设定整坨塞进每轮 prompt。
## 2. 三层分工
```text
真值变量state 好、等级、章节、场景 id、任务进度、已触发集合、seed…
│ 程序比较 / 边沿检测tables.side_effects
Data分档·大纲·场景·事件池 事先写好的大表;按真值查档,不整表常驻
│ 命中后 write_tag / replace_tag / queue_worker
Progressive 投影 本轮主世界层只看见「当前档」;未解锁不进上下文
```
| 层 | 存什么 | 谁改 | 例子 |
|----|--------|------|------|
| **真值** | 少数字段,跨轮必须记住 | 见 §3 | `好感=37``章节=2``地点=旧港` |
| **Data** | 阈值→切片、章→细纲、场景包、事件池 | 创作期钉死;游玩期通常只读 | 好感分档性格表、章大纲表 |
| **Progressive** | 当前应注入的上下文 tag | **程序**按边沿写入 | `上下文.角色态度``大纲.当前章` |
**派生不落盘:** 「当前性格长文」是 `f(好感)`,不要再设一个可写变量「当前性格」让模型去改。真值变了,副作用重写投影 tag 即可。
## 3. 变量如何维护(三种写入源)
存储:黑板表 tag `变量.当前`(字段格 + `rev`);开局可与 `运行.初始变量` 对齐。合并规则:`src/blackboard/table-cells.ts`**用户手改默认不被执行单元覆盖**)。
| 来源 | 怎么发生 | 适用 |
|------|----------|------|
| **执行单元LLM** | 某执行单元 `outputs``变量.当前` / `运行.本轮.变量变更`,经 Runtime 合并 | 叙事后果导致的增量(送礼→好感+…);规则须在规格里写清 |
| **用户手动** | UI/检查器改字段格;`source=user`,高 `rev` | 导演改档、纠错、助手流填表驱动 |
| **程序(副作用)** | 真值边沿触发 `tables.side_effects``write_tag` / `replace_tag` / `queue_worker` | **按某值切换投影**、once 解锁、插队某执行单元 |
当前副作用**直接改的是投影 tag / 队列**,不是再写一格「派生真值」。若要用程序把 A 映射成 B 真值,优先:
1. 仍用 A 做真值B 做成 data 投影;或
2. 在更新规则里写明「仅程序/仅用户可写 B」由后续 Runtime 扩展 `set_field` 类 action未实现前不要假装已有
### 3.1 「根据某个值设置」= Progressive不是第二真值
```text
好感 >= 60mode: once
→ replace_tag 上下文.角色态度 =「恋爱档:……」
章节 changed 且 章节 == 2或 eq
→ replace_tag 大纲.当前章 =「第二章细纲……」
场景 id 边沿
→ replace_tag 上下文.当前场景包 =「……」
```
规格形状见 `design-orchestrator-guide.md` §5.5`fired``运行.表副作用.fired`
### 3.2 程序「随机」事件
不要靠模型「感觉该来点意外」:
1. Data事件池id、权重、前置条件、正文/指令)。
2. 真值:可选 `seed` / 回合计数 / 场景权重档。
3. 程序:在边沿或回合结算时抽一条 → 写入 `运行.事件流` 或投影 tag主世界层只演绎已抽中的条目。
4. once / fired同一事件 id 不重复(除非规则允许)。
(真随机:启用 `play_slots.chance`,由按需执行单元 `chance` 程序掷骰/抽签/比点,结果在 `运行.本轮.机遇`;主世界层只演绎已出的结果。事件池权重抽签也可走 chance.pick。
## 4. 哪些需要变量(判定)
只问:**下游要不要可靠查询、门控或防重复?**
| 做成真值变量 | 做成 Data / Progressive | 留散文即可 |
|--------------|-------------------------|------------|
| 好感、等级、章节、场景 id、任务阶段 | 分档性格、章细纲、场景描写包 | 纯氛围、一次性修辞 |
| 已初吻 / 已背叛once 门) | 门触发后的态度切片 | — |
| 已触发事件 id 集合 | 事件池正文 | — |
| 已揭示秘密集合 | 秘密正文(揭示前勿进主上下文) | — |
| 程序随机用 seed / 权重档 | 事件池 | 「今天好像该有事」 |
承重优先:满屏状态栏不如少量真值 + 若干分档表。
## 5. 游玩拓扑:主世界层 + 可选旁观(勿盲目拆执行单元)
内部仍叫 **执行单元Worker**——一次 `run_worker` 的调度单位,这个词准确。
易混的是**职责命名**:多数世界模拟局应是:
```text
用户输入
→ 主世界层(世界推演):读变量 + 已投影 data交事件/改真值(按规则)
→(可选)旁观审计:只出意见,不写 canon
→(可选)叙事转述:把裁决写成用户可见正文
→ 用户看到的终稿通常来自「呈现/叙事」执行单元,或主世界层兼呈现(规格决定)
```
| 内容 | 给谁 | 不要做成 |
|------|------|----------|
| 世界观、地点、势力百科 | 主世界层 + 常驻/查表 | 「世界观执行单元」 |
| 好感与分档性格 | 真值 + Progressive 投影 | 「性格执行单元」 |
| 大纲按章推进 | 真值 `章节` + 章表投影 | 每章一个执行单元 |
| 知密视角 / 强信息隔离 | 才考虑额外执行单元 | 为「更聪明」而拆 |
| 长跑漂移检查 | 旁观审计(只读建议) | 第三个创作主笔 |
用户可见名:`ui-glossary.md`(世界推演、叙事转述…)。作者文档可称 **主世界层 / 旁观**,与酒馆「主 GM + auditor」同构**不要**对用户改称整套系统为「GM 框架」而废弃「执行单元」。
## 6. 世界模拟器技能落点
| 技能 | 钉什么 |
|------|--------|
| **变量设计与更新规则** | 真值;**维护语句**形状settlement / 隐藏段);**Data 映射索引**(指向生成规则+具体实例);`side_effects` |
| **变量控制上下文** | 各槽视野;**旁观汇总**(当前档摘要,非整表);剧透边界 |
| **生成规则 / 具体实例** | 分档表 schema 与行数据(如好感→性格);生成后由变量设计索引 |
| **正文组成** | 隐藏段定界(供解析维护语句);用户可见块序 |
| **设计监控栏** | 用户可见的会变字段子集 |
| **开场白与开场变量** | 开场正文(守版式)+ 与开场同真相的初值 |
| **游玩拓扑 / 上下文投影排序 / 细化终稿** | 固定槽扁平投影序tables 收成 |
**维护路径(不是 chance toolcall**:主世界层输出可解析变更 → Runtime 合并 `变量.当前``side_effects` 换投影chance 只负责骰子/抽签。
编排口诀:体验与机制 → 要不要真值 → 映射表用生成规则/实例 → 维护语句与旁观汇总 → 开场同真相 → 收成。

View File

@@ -43,6 +43,13 @@
- **可借鉴**:角色卡产品概念、世界书编辑体验、聊天存档与分支心流、角色扮演工作方式、导入导出与兼容性概念
- **不照搬**Prompt 拼接逻辑;世界书检索与权限由 Context Compiler 实现
### tavern2agent方法层
- 仓库:<https://github.com/Xerxes-2/tavern2agent>
- **可借鉴**:卡语义拆解中的 data / progressive 去向、真值与派生分离、主 GM + 旁观审计(少拆执行单元)、承重才立可变概念
- **落本地文档**`progressive-data-design.md`;技能 `variable-design` / `variable-context`
- **不借鉴为内核**Pi 宿主、per-card TS engine/reducer 代码生成、CodeAct 万能入口
### LangGraph.js
- 仓库:<https://github.com/langchain-ai/langgraphjs>
@@ -81,6 +88,8 @@
|------------|----------------|
| Runtime / 调度 / 恢复 | LangGraph.js、AutoGen、OpenHands、Mastra边界 |
| 上下文与记忆 | Letta、Mastra Memory 接口形态 |
| 真值 / Data / Progressive 设计方法 | tavern2agent方法层、SillyTavern 世界书概念 |
| 上下文片段 / 双锚点插入序 | SillyTavern prompt_order / injection 概念(只借鉴形态,见 `context-fragment-design.md` |
| 聊天与 HITL UI | assistant-ui、CopilotKit、LobeChat |
| 角色卡 / 世界书 / 存档体验 | SillyTavern、LobeChat |
| 模型接入与可观测 | Mastra |

View File

@@ -135,7 +135,7 @@ QQ 等 IM 仅保留一条可借鉴点:**底栏作为唯一行动锚点**。其
| 原则 | 含义 | 反面 |
|------|------|------|
| **一屏一事** | 同一时刻只有一个主任务(审产物 / 答提问 / 读叙事) | 右侧同时堆历史 + 验收 + 进度 + Agent focus |
| **一屏一事** | 同一时刻只有一个主任务(审产物 / 答提问 / 读叙事) | 侧栏与主画布抢同一决策 |
| **行动点唯一** | Accept、发送、swipe 只在一处出现 | composer 与检查器各放一套接受按钮 |
| **对话是索引** | 气泡放摘要 + 跳转;全文在工作面 | Worker 长产出塞进中间气泡 |
| **底栏锚定** | 输入/确认永远在底部同一区域 | 底栏在纯按钮与 textarea 间大幅换位 |
@@ -163,7 +163,7 @@ QQ 等 IM 仅保留一条可借鉴点:**底栏作为唯一行动锚点**。其
实现:`web/agent-ui.js``shouldShowInFeed``FEED_HIDDEN_KINDS`
### 7.2 检查器(目标态;当前部分在 `panel-agent`
### 7.2 检查器(目标态;调度日志已迁左侧「调度」Tab右侧 `panel-agent` 已取消
**应承载:**
@@ -405,13 +405,13 @@ flowchart TB
| 现状(`web/` | 心流问题 | 目标 |
|----------------|----------|------|
| 右侧常驻 `panel-agent`(约 300px | 空跑时也占视线 | 按需检查器,默认收起 |
| focus / tool-trace 在右侧顶部 | 像 IDE 调试台 | 并入折叠日志或顶栏小状态 |
| ~~右侧常驻 `panel-agent`~~ | ~~空跑时也占视线~~ | **已做**取消右侧栏调度日志迁左侧「调度」Tab开写后缩进侧栏 |
| ~~focus / tool-trace 在右侧顶部~~ | ~~像 IDE 调试台~~ | **已做**:并入左侧「调度」 |
| intake 可在 feed 与 composer 两处 | 信息重复 | 表格进检查器feed 仅摘要 |
| `worker_questions` = 文本列表 + composer | 用户写长段、选项语义易丢 | **§8 询问卡**:文案可改、点字母选中 |
| `askUser: string[]` | 无 options / Other / 分页 | 升级 `QuestionItem` 协议 |
| 验收时 composer 与「验收」Tab 均可操作 | 行动点分散 | 主按钮只在检查器 |
| 移动端隐藏整个 `panel-agent` | 无产物面 | 全屏 drawer |
| ~~移动端隐藏整个 `panel-agent`~~ | ~~无产物面~~ | **已做**:无右侧栏;窄屏缩进左侧轨 |
| 主区标题写「agent-first」 | 与产品定位不符 | 创作 = 产物优先;游玩 = 叙事优先 |
已有正确方向(保持并强化):

View File

@@ -101,6 +101,7 @@
| `design-flow` | **创作 · 流程编排** | 以已选【配方】为起点,编排/增量修订工作流计划(可变 DAG |
| `design-step` | **创作 · 执行步骤** | 按工作流计划执行当前【技能】 |
| `opening-generator` | **开局 · 开场白** | 创作末尾可选 |
| `worker-spec`(技能) | **游玩拓扑** | 勾选固定槽旧称「Worker 规格」,勿再当自由发明演员 |
| `design-core` 等 | (已废弃) | 旧分步 skill勿再调度 |
标题动作后缀(拼在中文名后):
@@ -122,13 +123,29 @@
|---------|----------|
| `narrator` | **叙事转述** |
| `role-decide` | **角色决策** |
| `world-simulator` | **世界推演** |
| `world-simulator` | **世界**(旧称:世界推演) |
| `chance` | **机遇裁定**(按需:骰子/抽签/比点;程序工具) |
| `round-present` | **回合呈现** |
配方选项展示名示例:`world-simulator`recipe**世界模拟器**`expand-assistant`**扩写助手**
**创造执行单元时**:规格里另写 `name`(中文展示名)。`ref` 仍用英文 kebabUI 优先 `name`
### 5.1 游玩拓扑称呼(作者文档)
内部调度单位仍叫 **执行单元Worker**——一次上场调用,这个词准确,**不要废除**。
作者讨论职责时可用与酒馆主 GM 同构的说法(对用户 UI 仍用上表):
| 作者可用 | 典型 ref | 含义 |
|----------|----------|------|
| **主世界层** | `world-simulator` | 读变量与 Progressive 投影、按规则改真值/交事件;多数世界观与查表归这里 |
| **叙事转述** | `narrator` | 把裁决写成用户可见正文(若规格拆了呈现) |
| **机遇裁定** | `chance` | 按需程序工具(掷骰/比点/抽签);不进每轮管线;结果 tag `运行.本轮.机遇` |
| **旁观 / 审计** | 可选自建 | 只出意见,不写 canon不为「更聪明」而拆 |
默认少拆:百科、分档性格、章大纲投影 → 主世界层 + 表副作用,**不要**再拆「世界观执行单元」「性格执行单元」。详见 `docs/progressive-data-design.md` §5。
---
## 6. 创作单位 id检查器 / 进度)
@@ -147,7 +164,7 @@
|-------|----------|
| `aesthetics-interaction` | 美学纲领与交互范式 |
| `interaction` | 交互范式(旧;已并入上一行) |
| `narrative_guide` | 叙事指南 |
| `narrative_guide` | 叙事指南与故事推进 |
| `input_protocol` | 输入协议 |
| `core_premise` | 核心前提 |
| `aesthetics` | 美学纲领(旧;已并入美学纲领与交互范式) |
@@ -190,3 +207,4 @@
| `creation-playbook.md` | 创作/游玩流程概念 |
| `design-orchestrator-guide.md` | 创作方法(可继续写英文 id面向作者 |
| `briefs/capability-authoring-brief.md` | 技能撰写交接(术语须与本文一致) |
| `context-fragment-design.md` | 上下文片段格式、固定槽、投影排序与双锚点 |

View File

@@ -3,7 +3,10 @@
> 给作者用。用户侧术语:**`docs/ui-glossary.md` §0**。
> 运行:选配方 → 编排**增量**工作流计划 DAG → `design-step` 执行技能;可再扩步反复调用。
> **标准范例**`modules/aesthetics-interaction/prompt.md`。
> **给外部 AI 的完整泛用规范****`docs/briefs/capability-authoring-brief.md`**(项目概述 + 称呼 + 格式契约)。
> **真值 / Data / Progressive变量与门控****`docs/progressive-data-design.md`**。
> **上下文片段 / 槽位 / 投影排序****`docs/context-fragment-design.md`**。
> **提示词待改清单****`docs/briefs/prompt-revision-inventory.md`**。
> **给外部 AI 的完整泛用规范****`docs/briefs/capability-authoring-brief.md`**(含 `context-fragment.v1`)。
## 两层
@@ -122,27 +125,29 @@ recipes/world-simulator|expand-assistant/recipe.yaml
| 能力 | id | 状态 |
|------|-----|------|
| 美学纲领与交互范式 | `aesthetics-interaction` | **范例已写** |
| 实现机制 | `mechanism` | **已写** |
| 世界蓝图与人文地理 | `world-blueprint` | **已写** |
| 生成规则 | `generation-rules` | **已写**,可反复;双门槛 + schema + 生命周期;编排必填 `params.target` |
| 具体实例 | `concrete-instances` | **已写**,可反复;执行预生成规则;编排必填 `params.rule_id` |
| 叙事指南 | `narrative` | **已写** |
| 实现机制 | `mechanism` | **已写**`context-fragment.v1`(支撑点正文 + 自评 + 追问);`feeds: gm` |
| 舞台骨架 | `world-blueprint` | **已写**`context-fragment.v1`;社会结构 + 世界状况 |
| 生成规则 | `generation-rules` | **已写**`context-fragment.v1`;宽原则 + 严合同键;可反复;`params.target` |
| 具体实例 | `concrete-instances` | **已写**`context-fragment.v1`;只按规则执行;可反复;`params.rule_id` |
| 叙事指南与故事推进 | `narrative` | **已写**:遣词/笔墨焦点/禁忌与不偏好 + 推进;挂转述 |
| 拓扑图谱 | `topology` | 骨架,待细写 |
| 设计状态栏 | `status-bar` | 骨架,待细写 |
| 变量设计与更新规则 | `variable-design` | 骨架,待细写 |
| 变量控制上下文 | `variable-context` | 骨架,待细写 |
| 设计回复格式 | `reply-format` | 骨架,待细写 |
| 设计监控栏 | `status-bar` | **已写**:只盯会变信息;旧称状态栏 |
| 正文组成 | `reply-format` | **已写**:用户可见版式+隐藏段+前端拆分;旧称回复格式 |
| 变量设计与更新规则 | `variable-design` | **已写**:真值+维护语句+Data映射索引+side_effects |
| 变量控制上下文 | `variable-context` | **已写**:挂载+旁观汇总 |
| 开场白与开场变量 | `opening-setup` | **已写**:开场守版式+同真相初值 |
共用收成(池内保留,按需):
| 能力 | id | 状态 |
|------|-----|------|
| Worker 规格 | `worker-spec` | **已写**,可反复 |
| 细化终稿 | `refine` | **已写**(产物=`设计.worker` |
| 游玩拓扑 | `worker-spec` | **已写**:勾选固定槽,禁止自由发明 worker旧称 Worker 规格) |
| 上下文投影排序 | `context-order` | **已写**:扁平投影序(含对话.历史);收成进 `context_order`Runtime 已拼装 |
| 细化终稿 | `refine` | **已写**:按 `play_slots`(及排序表)收成 `设计.worker集` |
| 编排器 | 状态 |
|------|------|
| 世界模拟器 | 方法论已写core/process/principles;起点:美学纲领与交互范式 |
| 世界模拟器 | 链路已写:体验→挂槽写上下文→投影排序→终稿;起点:美学纲领与交互范式 |
| 扩写助手 | 方法论已写;起点:美学纲领与交互范式;勿默认套世界模拟全套 |
---