Skip to content
Back to skills

Stage Setup

ASecurity

开一场正式的 RP 之前怎么准备(2026-09-06 整体重写):问清玩法 → 处理酒馆卡 / 预设 → cast_role 写人 → open_stage 交故事(设定 / 状态值 / 规则 / 面板 / 开场参考 / 写法预选)→ 退到后台。也管中途:玩家回来找你时先 stage_status 看演到哪;改人设 / 改规矩 / 挂背景 / 换写法各走哪条路。用户说"我想玩个 RP""用这张卡演起来""换个设定重开",或丢来酒馆角色卡 / 世界书 / 预设,或演到一半要改东西时用本 skill。

  • 37 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 26, 2026
ai-agentsnode

Security analysis

A100/100

Scanned September 26, 2026

npx -y skills add Xiaokebuyu/Nodesign --skill stage-setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Stage Setup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Stage Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/xiaokebuyu-stage-setup/badge)](https://www.skillsdirectory.com/skills/xiaokebuyu-stage-setup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: stage-setup
version: 0.2.0
description: 开一场正式的 RP 之前怎么准备(2026-09-06 整体重写):问清玩法 → 处理酒馆卡 / 预设 → cast_role 写人 → open_stage 交故事(设定 / 状态值 / 规则 / 面板 / 开场参考 / 写法预选)→ 退到后台。也管中途:玩家回来找你时先 stage_status 看演到哪;改人设 / 改规矩 / 挂背景 / 换写法各走哪条路。用户说"我想玩个 RP""用这张卡演起来""换个设定重开",或丢来酒馆角色卡 / 世界书 / 预设,或演到一半要改东西时用本 skill。
---

# 这一步在干什么

写故事的不是你。正式的 RP 在**演出显示器**上演:一个独立的演出进程写每一段,玩家的话直接进它的队列,
不经过你。你做两件事:**开场前准备、中途在后台帮他**。进程起不来就照实告诉他(服务端日志里 `[stage]` 那几行),
⛔ 不自己在对话里代演。

一个故事 = 工作区里的**一个文件夹**(按标题起名),里面自成一体,画布上是一张卡:

```
<故事>/
  台面.md        这个故事的全部:世界 / 规矩 / 怎么演          ← open_stage.table
  角色/<名>/角色卡.md   一个人的全部(+ 他记得的事的索引)          ← cast_role(落点见下)
  规则.json      成就与推进的阈值,机器只做比较                   ← open_stage.achievements / triggers
  面板.json      背包 / 装备 / 商店 / 清单(跑团类才有)           ← open_stage.panels,进程 update_panel
  戏.json        标题 / 在场者 / 状态面板 / 写法 / 开场参考 / 线路   ← 机器维护
  预设/          写法预设(玩家上传的酒馆 JSON 自动拆成开关)
  世界书/        导入的酒馆世界书,一条一文件,机器按关键词自动送
  记忆/ 场景/ 素材/                                             ← 机器维护
```

⚠️ 角色卡落在哪个 `角色/` 由工作区当时的状态决定,不是永远在故事文件夹里:工作区里正好只有一场戏时
`cast_role` 直接写进那场戏;还没开戏、或者已经有好几场时写在**工作区根上的 `角色/`**,那是共用角色库,
`open_stage` 按名字照样找得到,多场戏可以引用同一张卡。**卡不会被自动搬动**,所以先 cast 后 open 的卡
就一直留在根上,这是正常的,别去挪它(09-07 更正:这里以前写着 open_stage 会搬,那句是错的)。

演出进程的系统提示词 = 设定 + 每张在场者的卡(含玩家对「可选」一节的勾选)+ 记忆索引 + 玩家挑的写法预设
+ 面板清单,别的什么都没有。**项目 CLAUDE.md 不进去**(那是你的档案),⛔ 别把规矩抄一份进去。

# 开场流程(按顺序)

1. **第一轮问四件事**,`AskUserQuestion` 一次问完(一题四个选项,他也能自己写):
   - 想跟谁演:一对一 / 一群人 / 由你安排
   - 难度:爽(世界顺着他)/ 写实(他和普通人同权)/ 严酷(世界带恶意,但漂亮的输入该赢还是赢)
   - 代笔到哪一步:全代入(他的角色一个字不代写)/ 大纲档(他给大意进程扩写,重要抉择停笔等他)
   - 按哪套规矩写:不用预设,只按设定写(默认)/ 更文学的质地(文学派:禁明喻、长句为主)/ **我有自己的酒馆预设 JSON** / 想要某种特定文风(轻小说、武侠、网文…让他说一句)
   前三条落进设定的「规矩」节;第四条选文学派或自己的预设落进 `open_stage.style`(表在文末「写法预设的模块表」),
   选特定文风的把他那句话写进设定的「规矩」节(节奏、人称、对白多少、每段篇幅他提了也写在这里)。
2. **选了文学派就再问一题写法**:涌现式叙事(默认)/ 事无巨细 / 活泼通俗。他选默认或没答**不传**;选了别的按模块表翻成 `on`。
   **回答要落成预选,不是记在心里**:开场页会把你动过的每个开关标成「agent 预选」,他能改,改了以他的为准。
3. **他有自己的预设**:让他把 JSON 拖进对话(附件落在 `用户内容/`,画布上是一个文件夹;路径在他的消息附件里)→
   `read_tavern_json` 看 digest,确认是预设(有 prompts + prompt_order)→ `mkdir -p <故事>/预设/` 后把文件拷成
   `<故事>/预设/<名>.json`(故事文件夹名跟你要传给 open_stage 的 title 一致)→ `open_stage.style = { preset: "user:<名>" }`,
   ⛔ 不传 on/off:条目要机器拆过才有 id,他在开场页自己勾。digest 里列出的条目名可以念给他听,问哪些不要。
   酒馆世界书里那些由玩家决定要不要的条目(某条支线、某类内容、某个人物线)按他的回答列进 `open_stage.lore.off`,开场页同样标「agent 预选」。
4. **他丢来的酒馆东西**:加载 `story-import`,按落点表拆(人 → 卡;开场白 / 场景 → `opening`;
   世界书 → `世界书/`;变量 / 状态栏 → `vitals` 和 `panels`;预设 → `预设/`)。
5. **`cast_role` 一人一张卡**(下面「角色卡怎么写」)。
6. **`open_stage` 一次交出去**(下面「open_stage 参数」)。它**不起进程**。
7. **你退到后台。**玩家双击卡进显示器,先到开场页:看世界、你们定下的规矩、在场的人,改写法、勾角色卡上的可选条目、点开始 ——
   机器写开场指令、生开场背景、起进程。⛔ 别替他说第一句去开场;⛔ 之后别在对话里代演、别复述显示器上的剧情。

# 设定怎么写(`open_stage.table`,落成 台面.md)

三节,按这个顺序,别加节:

```
## 世界
时代、地点、这个世界跟现实差在哪。三五行,不写设定集。酒馆世界书里真常驻的十条以内放这儿。

## 规矩
难度档、代笔档、有没有骰子、这个故事特有的文风铁律("意象是暗线只写行为"这种)。
通用的写作规矩(禁转折句、对白不挂语气…)不铺开写 —— 选了预设那是预设的事;没选预设而他在问答里提了文风、人称、篇幅、对白多少,各写一句在这里。

## 怎么演
这个故事特有的口味:骰子用 d20 还是 d100、多久存一次档、选项里那枚"意想不到"偏哪个方向、镜头能不能切到玩家不在的地方。
工具怎么用不用写,机器自己接在提示词末尾。
```

**冻结纪律**:系统提示词每轮原样重发,命中缓存的读取成本极低,改动一个字则整份重新计费。所以设定只放整场不变的
(世界、规矩、文风铁律);每轮会变的(时间地点、状态数值、这一段轮到谁、刚触发的世界书)⛔ 不进设定 ——
状态值和面板走消息体,世界书由机器按关键词送。实测对比:酒馆四方世界卡每回合 75k-95k 输入、缓存读恒为 0,
单回合成本约 $1;本产品同一故事从第二段起整块命中缓存。差别不在模型,在这一条纪律。

**人不进设定,世界不进卡**:八个人的故事写进八张卡就是八份世界副本;卡里只有人,这个人才能跟着卡跨项目搬。

# 角色卡怎么写(`cast_role`)

判据:**有名字、还会再出现、玩家会想单独跟他说话的**写卡;一句话的过场(端酒的店小二)不写。
persona 里写:他是谁、怎么说话、绝不做什么,**带两三句语气样本** —— 样本比形容词有效得多,
「她说话短,不解释自己」不如直接给一句「"我听见了。"」。用户给了现成的卡,原样搬优先于改写。

**由玩家决定启不启用的设定**(某条支线、某个癖好、某段前史、NSFW 倾向)写进卡的一节 `## 可选`,一条一行:
`- [ ] 有个弟弟 — 家里还有个初中的弟弟,周末要接他`(`[x]` 默认开)。开场页画成开关,玩家勾完随卡进提示词。
⛔ 别替玩家决定,也别把这类条目写死进正文。

卡末尾那块 `nd:memory` 标记是机器维护的记忆索引,你和用户都别碰;正文在 `角色/<名>/记忆/`,进程用 `remember` 带 `who` 往里写。

**一人分饰多角是定案**(不派子代理)。所有人一个腔是最大的风险,防它靠两件事:每个人自己的卡带语气样本;
提示词里留着"开口前拿不准腔调就 Read 一遍他的卡"。

# 数字归机器:状态值、规则、面板

正文里不出现数字。三样东西各有各的家:

- **状态值 `vitals`**(标量:好感 62、时间 08:00、金钱 40):`[{key, label?, as, max?, unit?, options?, initial?, who?}]`,
  `as` = bar 进度条 / chips 几格亮一格 / num 数字 / text 一行字;`who` 是属于哪个在场者(好感属于她,天气不填)。
  进程每段在 `write_scene.state` 里报改了的键;机器另补 `拍数`。⛔ **key 要跟你在设定、规则里写的一字不差**
  (键名不一致会导致面板数值恒为 0)。
- **规则 `achievements` / `triggers`**(拿状态值比较,别的一概不做):
  成就 `{id, title, desc, when, tier, hidden}` 达成弹奖杯,阈值按难度定(宽松档 40 即可触发"她笑了",严苛档需 80),
  事件型靠标志位 `牵手 == 1`;推进 `{id, when, note, once}` 条件一成立机器把 note 当便条递给进程,
  从酒馆卡的分阶段规则翻(「好感过 60 进熟稔期」就是一条),`once` 默认 true。
  `when` 写法:`键 比较符 值`,`and` / `or` 连,比较符 `>= <= > < == !=`,不支持括号;写错 open_stage 当场退回。
- **面板 `panels`**(清单:背包里有什么、身上穿什么、铺子里卖什么、手头哪些任务),跑团 / 冒险类才要:

  | kind | 用在 | 要填 |
  |---|---|---|
  | `inventory` | 背包、行囊 | `items` 开场就有的 |
  | `equipment` | 某个人的装备与穿着 | `who`、`slots`(默认 头 / 身 / 手 / 脚 / 饰品) |
  | `shop` | 铺子、摊子 | `items` 带 `price`、`currency`(哪个状态键当钱,**要在 vitals 里声明**)、`into`(买到的进哪个背包) |
  | `list` | 任务、线索、人情账 | 随意 |

  一块面板 = 显示器顶栏一页 + 故事页的快捷入口。进程拿到 / 用掉 / 穿上 / 标价用 `update_panel`(在 write_scene 之前),
  走进新铺子自己 `open` 一块。玩家在显示器点"买 / 用一个 / 装上"时走的是同一套记账逻辑,然后一条【便条:玩家自己动了面板】
  随下一句带给进程。⛔ 恋爱日常不硬加面板;⛔ 不要把面板条目并入 vitals 充数。

# 演出进程手上的工具(五件常备,第六件看权限)

基本用法机器自动接在提示词末尾,你只在「怎么演」里写这个故事的口味。心里有数就行:

- **`write_scene`**:正文 + 2-4 枚选项 + state。显示器上只认它写的;它一返回这一轮就结束(所以别的工具都在它之前调)。
  选项的按钮名和小字写玩家**具体会做什么**,⛔ 不许写"主线 / 人际 / 意外"这类类别词(机器会剥掉)。
- **`update_panel`**:面板记账,见上。
- **`remember` / `forget`**:一事一份,只在不可逆的事发生时记(关系变了、伏笔埋下、世界确立新事实、玩家做了回不了头的选择);
  某个人记得的事带 `who` 进他的卡。⛔ 不记流水账。
- **`illustrate`**(玩家允许配图时才有):插图 / 换场背景 / 立绘,立刻返回后台画,两张之间至少隔三段,整场最多 40 张。
- **`roll`**:判定骰,服务端真随机(骰面 / 颗数 / 修正 / 难度 / 优势劣势,给了难度机器直接报成败)。选项也能带判定(`choices[].check`:名目 + 难度),玩家点下去机器代掷,成败随那句话进进程。什么时候掷、怎么写成败的纪律机器已接在提示词里;这个故事用 d20 还是 d100、有没有修正,写在「怎么演」。

# 记忆怎么接回来

不用你贴。两个家机器都接:某个人记得的事在他的卡上(随卡进提示词,换一个故事还是他);这个故事的事在 `<故事>/记忆/`,
索引接在提示词末尾。都只贴索引不贴正文,进程按需 Read。⛔ 别自己去读那些目录再摘要进设定 —— 两份真相。

# open_stage 参数

| 参数 | 填什么 |
|---|---|
| `title` | 故事的名字,卡上和显示器顶栏都显示它 |
| `table` | 设定全文(上面那三节) |
| `cast` | 在场者 `[{name, note?}]`。**每个 name 都要已经有卡**,且跟卡 frontmatter 的 name 一字不差 |
| `vitals` | 状态值声明,见上 |
| `achievements` / `triggers` | 规则表,见上。没设也能演 |
| `panels` | 面板,见上。恋爱日常不加 |
| `opening` | 酒馆卡的 `first_mes` + `scenario` 原文(占位符不用改)。玩家点开始时机器交给进程当第一段的底:照地点、时刻、气氛写,不照抄 |
| `style` | 写法预设 `{preset, on, off}`。他选了文学派就传 `preset: "literary"`,问答里表了态的按文末「写法预设的模块表」翻成 on / off 传进来(没表态的组别动,留默认);没选预设就不传;开场页把你动过的每个开关标成「agent 预选」。他交了自己的酒馆预设就 `preset: "user:<名>"`,不传 on/off |
| `lore` | `{off: [条目名]}`:按他的回答**预先关掉**的世界书条目(名字用 read_tavern_json 导出时的)。他没提的全开,别替他关 |
| `images` | 演出进程能不能自己配图(关键转折的插图 / 换场背景 / 立绘)。每张约 $0.20、一分钟,计入玩家每日额度。**他在问答里明确说了才传**;不传他在开场页自己开。开了之后换场背景由进程画,机器的模板图不再生 |
| `model` | 演出进程用哪个模型。只在他点名要某个模型时传,且得是他账号当前能选的(选不了会当场退回);不传用默认,他在开场页 / 外观页自己挑 |
| `skin` | **留默认**。别替用户挑外观,他在显示器「外观」页自己换 |

同名再调一次 = 换设定重开:设定 / 规则重写,进程停掉,场景和记忆都留着,下一句话到时接上前文。
用户要"从头再来"让他自己删画布上那张卡,别替他删。

# 中途:他回到对话里找你

**先 `stage_status`**(只读不起进程)看此刻的状态值、最近几段、记住的事、成就与已触发的推进,再接话 ——
别拿开场时你写的设定当现状。然后按事情走:

| 他要 | 你做 |
|---|---|
| 改人设 | `cast_role` 重登同一个 id,或告诉他显示器「角色」页能直接改卡。改完下一句话进程自动重开 |
| 改规矩 / 换玩法 / 加人 | 再调 `open_stage`(场景和记忆留着) |
| 改状态值 | 只有显示器「状态」页能拨(现值从场景流折出来,`戏.json` 里的 vitals 只是初值,改它不动现值)。他要改就请他点一下 |
| 来张背景图 | `generate_image` 出图后 `stage_backdrop`(fixed 立刻挂 / scene 按地点登记 / clear 撤)。机器换场本来就会自己生,玩家「外观」页能关。⛔ 别猜字段名往 戏.json 里塞 |
| 给某人画立绘 | `generate_image`(半身、单人、素底)出图后 `stage_backdrop mode=portrait who=<名>`:图进 `角色/<名>/立绘.<原扩展名>`,人物栏立刻换。⛔ 别自己 cp 到别的地方 |
| 想让进程自己配图 / 换模型 | 告诉他显示器「外观」页有开关和模型选择器;或你再调 open_stage 带 `images` / `model` |
| 换文风 | 告诉他显示器「设定」页的写法能改;或你再调 open_stage 带 `style` |
| 回到某一句 / 另开一条线 | 显示器里他自己做(悬停在自己说的话上);你不用动 |
| 想让某人自己来演 | 如实说明:当前版本由演出进程统一扮演全部角色,人物设定的一致性不受影响 |

# 写完自查

- [ ] 设定三节齐了,里面没有人物(人物在卡上),也没有每轮会变的东西
- [ ] 没有项目 CLAUDE.md 的内容
- [ ] 每张卡都有语气样本;玩家自选的条目进了 `## 可选`,没替他决定
- [ ] cast 里每个名字都有卡,且跟卡 frontmatter 的 name 一字不差
- [ ] 规则表的键都在 vitals 里声明过(或是机器补的 拍数),阈值按难度定过;键名跟设定 / 规则一字不差
- [ ] 商店面板的 currency 在 vitals 里声明过;恋爱日常没硬加面板
- [ ] 酒馆卡的 first_mes / scenario 进了 `opening`,没自己替他开场
- [ ] skin 留的默认;style / lore / images / model 的预选只反映他说过的话,没表态的没动
- [ ] 调了 open_stage,而不是自己在对话里开始

<!-- presets:gen:start -->
# 写法预设的模块表(由 preset.json 自动生成,⛔ 请勿手动修改;修改 preset.json 后执行 `node server/scripts/gen-presets-doc.mjs`)

`open_stage.style = { preset, on: [...], off: [...] }`:`on` 在默认勾选之上加开,`off` 关掉。互斥组(★)里开一个,机器自动关掉同组默认的;总是开的组(●)关不掉。
开场页会把你动过的每个开关标成「agent 预选」,玩家能改,改了以他的为准。**他没说的组别动,不传。**

## 他说的话 → 该动哪个开关

| 他大概会说 | 动作 |
|---|---|
| 一点都别省 / 事无巨细 | `{ preset: "literary", on: ["exhaustive"] }`(预设 `literary`) |
| 轻松通俗 / 别文艺腔 | `{ preset: "literary", on: ["lively"] }`(预设 `literary`) |
| 像轻小说 / 像武侠 / 像网文 / 像金庸 / 像广播剧… | 不动预设,他那句话写进设定「规矩」 |
| 想要更文学的质地 / 长句 / 不要比喻 | `preset: "literary"` |
| 他交了自己的酒馆预设 JSON | 文件放 `<故事>/预设/<名>.json`,`preset: "user:<名>"`,⛔ 别传 on/off(条目 id 拆出来才有) |
| 别替我说话 / 我的角色我自己来 | 这是代笔档,写进设定「规矩」,不动预设 |
| 难度 / 世界顺不顺着他 | 写进设定「规矩」,不动预设 |

## `literary` · 文学派(专家预设)

更偏文学质地的一套:严格的文学逻辑与句法(禁明喻、禁否定式转折、禁破折号、长句为主),三种写法选一种,外加一个自主运转的世界。

### 文学逻辑与句法 ●
- `logic` 文学逻辑 — 禁「像是 / 仿佛 / 似乎」引出的从句、极少明喻、不拿数字代替细节、砍掉属性堆叠的修饰(默认开)
- `sentence` 句法 — 长句为主,每句至少八个字;不把一个动作拆成碎短句;不用碎片修饰语代替描写(默认开)

### 写法(只选一种) ★
- `emergent` 涌现式叙事 — 具体、不吝笔墨,多感官,发声必写台词(默认开)
- `exhaustive` 事无巨细 — 不概括、不压缩,时间连续
- `lively` 活泼通俗 — 口语为底,吐槽跳脱,禁文艺腔

### 世界
- `live-world` 活的世界 — 环境与他人不因你而冻结(默认开)
<!-- presets:gen:end -->

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.