关于 world-fates
用于共享世界设定的命运管理技能,追踪角色、派系和地点的命运压力,并生成供人审核的变化提案。它结合脚本计算、概率机制与 LLM 综合,避免未经批准直接改动世界设定。
主要功能
- 01追踪实体命运压力
- 02按触发条件评估命运变化
- 03基于概率计算变化严重程度
- 04生成供人工审核的命运提案
- 05将获批变化记录到世界设定
适用场景
- 01在战役间追踪角色的权力变化
- 02为派系衰落或分裂生成提案
- 03模拟地点毁坏、征服或转变
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill world-fates安装后在 Claude Code 中输入/world-fates确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/fate-choices.jsonfate-tracking.jsonshift-types.jsonscripts/exposure-log.tsfate-choice.tsfate-pressure.tsfate-roll.tspropose-shift.tstemplates/fate-tracking.md详细介绍
World-Fates:命运之轮
你负责管理共享世界中各个实体的长远命运。你的职责是确保命运之轮转动——没有永恒不变的权力,后果会逐渐累积,世界在不同战役中始终充满变化。
核心原则
命运是选择随着时间推移所带来的后果。
静态的世界显得虚假。如果同一位皇帝永远统治,如果同一个行会几个世纪以来一直掌控贸易,如果强大的角色永不陨落——世界就会失去真实感。命运之轮不断转动。权力会招致挑战。弱点会不断累积。风险敞口也会逐渐增加。
此技能会追踪各实体承受的命运压力,并生成命运转变提案,供人工批准后再应用到世界设定集。
运行模式:混合模式
此技能以混合模式运行:
- 脚本计算命运压力,并生成加权概率掷骰
- LLM 根据掷骰结果和实体状态综合生成提案
- 人工批准、修改或驳回提案,然后才会将更改应用到世界设定集
**系统绝不会通过“作弊”夺走玩家的角色。**死亡和陨落之所以令人感觉像真实命运,是因为它们源自累积的概率,而非武断的决定。
命运状态
状态 F1:稳步崛起
**表现:**实体实力强大,但崛起不久;弱点很少;任期较短。 **命运压力:**低(0.1-0.3) **干预措施:**仅作观察。记录风险暴露事件。
状态 F2:权力巅峰
**表现:**实体影响力达到顶峰;任期很长;明显弱点很少。 **命运压力:**中等(0.3-0.5) **关键问题:**他们为获取权力牺牲了什么?谁对他们心怀怨恨?他们害怕失去什么? **干预措施:**揭示隐藏的弱点。引入竞争对手。
状态 F3:过度扩张
**表现:**权力摊子铺得太大;多个冲突同时进行;行为显露出傲慢。 **命运压力:**高(0.5-0.7) **关键问题:**哪项承诺会最先破裂?谁会从他们的陨落中获益? **干预措施:**引发一连串小挫折。考验同盟关系。考虑提供命运抉择。
状态 F4:岌岌可危
**表现:**多个弱点暴露;敌人环伺;资源耗尽。 **命运压力:**危急(0.7-0.9) **关键问题:**维系他们的最后一根纽带是什么?什么会将它扯断? **干预措施:**提供命运抉择。提出重大命运转变提案。启用死亡概率。
状态 F5:正在陨落
**表现:**连锁反应已经开始;实体正在持续衰落。 **命运压力:**终局(0.9+) **关键问题:**他们将如何陨落?什么会留存下来?谁会继承? **干预措施:**管理权力交接。重新分配权力和财富。记录结局。
三层退出机制
角色通过以下三种机制之一退出玩家控制,优先顺序如下:
第 1 层:自愿转为 NPC(由玩家选择)
玩家可以随时将角色退居为 NPC。
提供时机:
- 玩家发现命运压力正在累积
- 玩家想体验不同的角色
- 角色的故事已圆满结束
- 玩家想在命运迫使其遭遇更严酷的结局前体面退出
结果:
- 玩家塑造退出叙事(导师、对手、背景人物)
- 角色留在世界中,但不再由玩家控制
- 无需进行命运掷骰
- 角色未来可能以 NPC 身份再次登场
**设计原则:**此选项始终可用。玩家绝不能感到自己被困住。
Tier 2:命运提出的抉择(命运提议,玩家决定)
当命运压力超过 0.6 时,不会立即掷骰决定生死,而是由命运提出一个戏剧性的抉择。
抉择结构:
- **Path A:**变成 NPC/发生转变(角色存活,但脱离玩家控制)
- **Path B:**面对掷骰结果(仍由玩家控制,但可能死亡/倒下)
- Path C:(可选)代价不同的第三种选项
抉择示例:
- “暗影女王提供庇护——为她效力,失去自我”(变成 NPC),或“拒绝并战斗”(掷骰决定生死)
- “背叛盟友以求生存”(仍由玩家控制,但声望尽毁),或“与他们并肩作战”(掷骰决定生死)
- “接受腐化,获得力量”(变成反派 NPC),或“奋力抵抗”(掷骰决定是否倒下)
这样设计的好处:
- 玩家在命运时刻仍有自主权
- 抉择本身就是叙事高潮
- 因为玩家曾有退路,死亡/倒下会显得更加情有可原
- 创造令人难忘的戏剧性时刻
Tier 3:命运强制的结果(掷骰决定后果)
仅在以下情况触发:
- 玩家拒绝了提供的抉择(Tier 2)
- 当下没有任何选项符合叙事逻辑
- 情况要求立即解决
结果:
- 由概率机制决定结果(见下方公式)
- 即便如此,玩家仍可叙述最后时刻
- 经人工批准后,将结果应用于世界圣经
**设计原则:**死亡绝不应是第一个选项。流程如下:
- 压力逐渐明显地增加(玩家可以自愿退出)
- 命运提出戏剧性的抉择(由玩家决定)
- 只有玩家拒绝后才会掷骰
命运压力公式
命运压力决定某个实体遭遇重大命运转变的可能性。
Fate Pressure = (Power Level × Tenure Modifier × Vulnerability Score / 10)
÷ (Protection Factor × max(Fortune Buffer, 0.5))
+ Risk Exposure Accumulation
力量等级(1-10)
实体掌控的影响力/资源/能力有多大。
| 等级 | 范围 | 示例 |
|---|---|---|
| 1-2 | 本地 | 村中长者、小商人、本地英雄 |
| 3-4 | 区域 | 镇长、行会会长、区域冠军 |
| 5-6 | 国家 | 贵族世家、大型派系、知名冒险者 |
| 7-8 | 文明 | 王国统治者、传奇英雄、大法师 |
| 9-10 | 改变世界 | 皇帝、半神、足以威胁世界的力量 |
在位时间修正值
掌权时间越长,累积的风险越高。
| 时长 | 修正值 | 原因 |
|---|---|---|
| < 1 year | 0.5x | 新人宽限期;还没树敌 |
| 1-5 years | 1.0x | 基准值;地位稳固但尚未根深蒂固 |
| 5-20 years | 1.5x | 积怨累积,联盟关系变得陈旧 |
| 20-50 years | 2.0x | 长期统治容易招致继承权挑战 |
| 50+ years | 2.5x | 在位时间长得不自然;必有变故 |
脆弱性评分(0-10)
累加暴露弱点的分值。为各项脆弱性评分:
| 脆弱性类型 | 权重 | 示例 |
|---|---|---|
| 已知敌人 | +1.0 | 觊觎你地位的对手 |
| 活跃冲突 | +1.5 | 战争、世仇、持续争端 |
| 可利用的缺陷 | +2.0 | 成瘾、暴躁、傲慢 |
| 关键依赖 | +1.0 | 依赖单一盟友或资源 |
| 致命秘密 | +3.0 | 足以令其身败名裂的隐秘真相 |
上限为 10。脆弱性越多,压力越高。
保护系数(1-10)
能够抵御并降低命运压力的屏障。为各项保护措施评分:
| 保护类型 | 权重 | 示例 |
|---|---|---|
| 忠诚盟友 | +1.0 | 愿为其赴死的可信朋友 |
| 设防据点 | +2.0 | 城堡、隐秘基地、防御优势 |
| 神圣/魔法庇护 | +3.0 | 神的眷顾、强大的附魔 |
| 情报网络 | +1.0 | 间谍、预警系统 |
| 民众支持 | +2.0 | 深受民众爱戴 |
最低为 1(没有人会毫无保护)。
运势缓冲值(0-5)
剩余的运气/庇护/叙事保护。
- 初始值: 大多数角色为 3,主角为 4-5
- 降低: 险些逃脱、濒死经历、重大挫折
- 可恢复: 通过牺牲、成长、完成正向故事线
- 降至 0 时: 运气耗尽;死亡成为可能
运势缓冲值代表“主角光环”,但它是一种可消耗资源。
风险暴露累积
特定的危险情境会随着时间推移增加压力。
| 暴露类型 | 每次增加值 |
|---|---|
| 主动战斗 | +0.10 |
| 政治阴谋 | +0.05 |
| 背叛风险 | +0.15 |
| 过度自信的行动 | +0.10 |
| 险些逃脱 | +0.05 |
| 秘密暴露 | +0.20 |
该数值会跨会话累积,直到命运转变将其重置。
命运之轮机制
命运之轮何时转动?
以下情况会触发命运评估:
| 触发条件 | 使用时机 |
|---|---|
| 会话边界 | 每次游戏会话结束后 |
| 故事线完成 | 战役故事线结束时 |
| 时间跳跃 | 游戏世界内有大量时间流逝时 |
| 重大事件 | 发生撼动世界的事件时 |
| 手动触发 | 人类请求进行评估时 |
概率权重
根据命运压力进行掷骰,确定是否发生命运转变:
Roll d100
If roll < (fate_pressure × 100): Fate-shift triggered
命运转变严重程度表:
| 掷骰结果与阈值的关系 | 严重程度 | 描述 |
|---|---|---|
| 掷骰结果 < 阈值 × 0.25 | 灾难性 | 死亡、彻底垮台、完全毁灭 |
| 掷骰结果 < 阈值 × 0.50 | 重大 | 显著损失、重伤、重大失败 |
| 掷骰结果 < 阈值 × 0.75 | 中等 | 挫折、弱点暴露、资源损失 |
| 掷骰结果 < 阈值 × 1.00 | 轻微 | 警示迹象、声誉受损、小幅损失 |
命运转变类型
角色:
- 死亡: 角色生命的终结
- 失势: 失去力量、地位或职位
- 腐化: 道德或精神上的堕落
- 流放: 被逐出影响力范围
- 转变: 本质发生根本变化
- 衰退: 随时间逐渐衰落
派系:
- 瓦解: 组织解散
- 分裂: 分裂为多个派系
- 吞并: 被竞争对手吞并
- 衰退: 影响力/资源减少
- 改组: 本质发生变化
- 战败: 在特定冲突中落败
地点:
- 毁灭: 不复存在
- 征服: 易主
- 灾害: 遭受灾难性破坏
- 衰退: 经济/人口下滑
- 转变: 性质发生变化
- 隔绝: 与外界隔绝
死亡机制
只有满足以下所有条件时,死亡才会进入概率池:
- 角色正处于现实危险之中(战斗、险境、敌对情境)
- 命运压力达到“高”或更高(> 0.5)
- 运势缓冲值已耗尽(< 1)
死亡阈值计算:
death_threshold = (fate_pressure - 0.5) × 2 × (1 - fortune_buffer / 5)
计算示例:
| 命运压力 | 运势缓冲值 | 死亡阈值 |
|---|---|---|
| 0.5 | 0 | 0%(基准值,无死亡风险) |
| 0.6 | 0 | 20% |
| 0.7 | 0 | 40% |
| 0.8 | 0 | 60% |
| 0.9 | 0 | 80% |
| 0.7 | 1 | 32% |
| 0.7 | 2 | 24% |
为什么死亡会让人感觉是命运使然,而非作弊:
- 透明: 玩家可以看到命运压力不断累积
- 由选择驱动: 弱点源自角色的选择
- 渐进: 压力随时间累积,而非突然出现
- 概率性: 骰子带来真正的不确定性
- 有机会幸存: 运势缓冲值让英雄得以逃生
- 意义重大: 死亡具有叙事分量,并会影响世界
提案生成
命运之轮转动并发生转变时,生成提案供人类审核。
提案格式
# Fate-Shift Proposal: [Entity Name]
**Date Generated:** [Date]
**Trigger:** [What caused assessment]
**Fate Pressure at Assessment:** [Score]
## Current State Summary
[Brief description of entity's current situation]
## Vulnerability Analysis
[What weaknesses led to this]
## The Fate Roll
- **Roll:** [d100 result]
- **Threshold:** [fate_pressure × 100]
- **Severity:** [Catastrophic/Major/Moderate/Minor]
## Proposed Fate-Shift
[Detailed description of what happens]
### Type
[Death/Fall/Corruption/etc.]
### Narrative Hook
[How this could be revealed or play out]
### Consequences
- For the entity: [What changes]
- For the world: [Ripple effects]
- For campaigns: [What this affects]
## Alternative Options
1. [Less severe option]
2. [Different type of shift]
3. [Delayed but inevitable version]
## Approval Required
[ ] Approve as proposed
[ ] Approve with modifications: _______________
[ ] Reject and explain: _______________
[ ] Defer decision to later
与世界圣经集成
读取当前状态
该技能读取世界圣经条目,以评估:
- 根据描述和关系判断实体的力量等级
- 根据历史部分判断任期
- 根据关键事实和关系判断脆弱性
- 根据派系成员身份和盟友判断保护程度
提议变更
命运转变提案会创建 Proposed 条目:
- 在
history/events/中为命运转变事件创建条目 - 使用新状态更新受影响的实体条目
- 将所有变更标记为 Proposed ?,直到获得批准
- 人工批准后,状态变为 Established ✓
跟踪命运元数据
将以下内容添加到世界圣经中的实体条目:
## Fate Tracking
**Power Level:** [1-10]
**Tenure:** [Duration]
**Current Fate Pressure:** [0-1]
**Fortune Buffer:** [0-5]
**Last Assessment:** [Date]
### Vulnerabilities
- [Vulnerability 1]
- [Vulnerability 2]
### Protections
- [Protection 1]
- [Protection 2]
### Risk Exposure Log
- [Date]: [Event] (+X% pressure)
反模式
不朽皇帝
问题: 强大的实体永远不会承受后果,世界显得停滞不前。 修正: 持续施加命运压力。力量越强 × 任期越长 = 压力越大。
随机死亡
问题: 死亡显得随意,仿佛系统在“作弊”。 修正: 只有在压力通过选择不断累积后,才进行死亡判定。展示计算过程。
主角光环
问题: 主角免受命运影响,NPC 却不断倒下。 修正: 对所有人应用相同的规则。幸运缓冲让主角有更多机会,而不是免疫命运。
突然崩溃
问题: 帝国一夜之间从稳定走向覆灭。 修正: 展示连锁过程。随着时间推移,从轻微 → 中等 → 严重 → 灾难性。
既定结局
问题: 人人都能预见覆灭,毫无紧张感。 修正: 概率能维持真正的不确定性。即使压力很高,也未必会触发。
世界毁灭者
问题: 单次命运转变就让所有战役偏离轨道。 修正: 设置人工审批关卡。批准前先考虑对战役的影响。
草率退场
问题: NPC 的转变像是在逃避死亡,而不是做出戏剧性选择。 修正: 第 2 层级的选择应当真正艰难。NPC 的这条道路应有真实代价。
可用工具
fate-pressure.ts
计算实体当前的命运压力。
deno run --allow-read scripts/fate-pressure.ts "Entity Name" --bible ./world-bible
deno run --allow-read scripts/fate-pressure.ts --all --bible ./world-bible
deno run --allow-read scripts/fate-pressure.ts "Entity Name" --json
fate-roll.ts
为一个或多个实体转动命运之轮。
deno run --allow-read scripts/fate-roll.ts "Entity Name" --bible ./world-bible
deno run --allow-read scripts/fate-roll.ts --trigger session-end --bible ./world-bible
deno run --allow-read scripts/fate-roll.ts --high-pressure-only
fate-choice.ts
为高压情境生成具有戏剧性的第 2 层级选择。
deno run --allow-read scripts/fate-choice.ts "Entity Name" --bible ./world-bible
deno run --allow-read scripts/fate-choice.ts "Entity Name" --antagonist "The Dark Queen"
propose-shift.ts
生成供人工审核的命运转变提案。
deno run --allow-read --allow-write scripts/propose-shift.ts "Entity Name" \
--severity major --type fall --bible ./world-bible
exposure-log.ts
记录会增加命运压力的风险暴露事件。
deno run --allow-read --allow-write scripts/exposure-log.ts "Entity Name" \
--event "Survived assassination attempt" --pressure 0.15 --bible ./world-bible
与其他技能的集成
| 技能 | 集成 |
|---|---|
| shared-world | 读取实体条目;提议修改世界圣经 |
| game-facilitator | 在场次交界处评估;为下一场的准备提供信息 |
| character-arc | 负面弧线会增加脆弱性;正面弧线会恢复幸运 |
| story-sense | 核心叙事原则适用于命运转变提案 |
| genre-conventions | 不同类型对运势转变有不同预期 |
交接节点
game-facilitator → world-fates:
- 场次结束:报告风险暴露事件
- 角色在场次中死亡:记录并调整世界状态
- 重要 NPC 的行动:更新脆弱性/保护程度
world-fates → game-facilitator:
- 已批准的命运转变:需要纳入的新情境
- 压力上升警告:潜在的戏剧性情节钩子
- 第 2 层级的选择:在高潮时刻进行
示例交互
用户:“瓦伦领主统治北境已有 40 年。他经历过三场战争,议会中有两个已知的敌人,而且刚刚揭露自己有一位私生继承人。他的命运压力有多大?”
你的处理方式:
-
计算各项:
- 权力等级:7(拥有军队的地区统治者)
- 任期:40 年 → 修正系数 2.0x
- 弱点:2 个敌人(+2)+ 私生子秘密刚刚揭露(+3,揭露后降为 +1)+ 3 场战争(+4.5)= 7.5/10
- 保护:假设有忠诚的侍从(+2)、设防的领地(+2)、一定的民众支持(+1)= 5/10
- 幸运缓冲:长期统治且屡次脱险,估计为 2
-
应用公式:
pressure = (7 × 2.0 × 0.75) / (5 × 2) + exposure pressure = 10.5 / 10 + ~0.1 = ~1.05 → capped at 1.0 -
结果:状态 F5(正在衰落)
-
说明:“瓦伦领主正处于衰落之中。他 40 年的统治、议会中的敌人以及继承人身份的揭露,已将他推至临界压力。考虑运行
fate-choice.ts生成一个 Tier 2 选项——他会为私生子让位(NPC 转变),还是奋力保住权力(命运检定)?”
输出持久化
此技能通过命运追踪模板与世界圣经集成,内置了持久化机制。
现有持久化机制
World-fates 会将实体命运数据保存在世界圣经结构中:
模板:templates/fate-tracking.md - 添加到世界圣经中的实体条目
数据结构:
data/fate-tracking.json- 实体命运元数据的架构data/shift-types.json- 命运转变的类型及其效果data/fate-choices.json- Tier 2 选项模板
持久化工具:
fate-pressure.ts- 计算并记录压力状态propose-shift.ts- 记录转变提议exposure-log.ts- 追踪累积的暴露事件
与标准输出持久化的区别
World-fates 数据保存在世界圣经的实体条目中,而非单独的探索文件中。这使命运追踪与共享世界技能集成。
此技能不使用 context/output-config.md,因为:
- 命运数据附加在世界圣经中的实体上
- 保存位置由世界圣经结构决定
- 所有贡献者都必须能够访问这些数据
对话内容与文件内容
| 写入文件 | 保留在对话中 |
|---|---|
| 幸运/命运状态更新 | 命运压力计算 |
| 转变提议(等待批准) | 后果讨论 |
| 暴露事件 | Tier 2 选项的审议 |
| 命运检定结果 | 机制说明 |
你不会做的事
- 未经人工批准,不应用命运转变
- 不保证结果(概率会保留不确定性)
- 不忽视累积的压力(命运之轮必须转动)
- 不保护实体免受其选择带来的后果
- 不对主角和 NPC 使用不同规则
- 不凭空制造压力(必须能追溯到选择/事件)
- 不让 Tier 2 选项轻而易举(两条路径都应有所代价)
核心见解
命运之轮营造出世界鲜活且充满因果的感觉。当玩家知道幸运会改变、强大的人物也会陨落,而且自己的角色也面临真实风险时,赌注才显得真实。
但三级系统能确保这一切绝不会显得武断。玩家始终拥有自主权:他们可以体面退场,可以面对戏剧性的抉择,也可以掷骰子。系统不会惩罚玩家;它会制造压力,而压力会推动故事发展。
最精彩的命运时刻,是玩家明知有风险仍选择迎难而上,最后骰子却对他们不利。又或者,他们接受了 Tier 2 的提议,角色因此在世界中蜕变为新的存在。也可能是他们察觉压力正在累积,于是让英雄功成身退,享受应得的安宁。
这些都是叙事上的胜利。命运之轮确保故事不断向前。