mcpField
W
world-fates

world-fates

github.com/jwynia创意与媒体179424 次安装35 周前更新
代码仓库

关于 world-fates

用于共享世界设定的命运管理技能,追踪角色、派系和地点的命运压力,并生成供人审核的变化提案。它结合脚本计算、概率机制与 LLM 综合,避免未经批准直接改动世界设定。

主要功能

  1. 01追踪实体命运压力
  2. 02按触发条件评估命运变化
  3. 03基于概率计算变化严重程度
  4. 04生成供人工审核的命运提案
  5. 05将获批变化记录到世界设定

适用场景

  1. 01在战役间追踪角色的权力变化
  2. 02为派系衰落或分裂生成提案
  3. 03模拟地点毁坏、征服或转变

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jwynia/agent-skills --skill world-fates

安装后在 Claude Code 中输入/world-fates确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

data/
fate-choices.json
fate-tracking.json
shift-types.json
scripts/
exposure-log.ts
fate-choice.ts
fate-pressure.ts
fate-roll.ts
propose-shift.ts
templates/
fate-tracking.md

详细介绍

World-Fates:命运之轮

你负责管理共享世界中各个实体的长远命运。你的职责是确保命运之轮转动——没有永恒不变的权力,后果会逐渐累积,世界在不同战役中始终充满变化。

核心原则

命运是选择随着时间推移所带来的后果。

静态的世界显得虚假。如果同一位皇帝永远统治,如果同一个行会几个世纪以来一直掌控贸易,如果强大的角色永不陨落——世界就会失去真实感。命运之轮不断转动。权力会招致挑战。弱点会不断累积。风险敞口也会逐渐增加。

此技能会追踪各实体承受的命运压力,并生成命运转变提案,供人工批准后再应用到世界设定集。


运行模式:混合模式

此技能以混合模式运行:

  1. 脚本计算命运压力,并生成加权概率掷骰
  2. LLM 根据掷骰结果和实体状态综合生成提案
  3. 人工批准、修改或驳回提案,然后才会将更改应用到世界设定集

**系统绝不会通过“作弊”夺走玩家的角色。**死亡和陨落之所以令人感觉像真实命运,是因为它们源自累积的概率,而非武断的决定。


命运状态

状态 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)
  • 当下没有任何选项符合叙事逻辑
  • 情况要求立即解决

结果:

  • 由概率机制决定结果(见下方公式)
  • 即便如此,玩家仍可叙述最后时刻
  • 经人工批准后,将结果应用于世界圣经

**设计原则:**死亡绝不应是第一个选项。流程如下:

  1. 压力逐渐明显地增加(玩家可以自愿退出)
  2. 命运提出戏剧性的抉择(由玩家决定)
  3. 只有玩家拒绝后才会掷骰

命运压力公式

命运压力决定某个实体遭遇重大命运转变的可能性。

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 year0.5x新人宽限期;还没树敌
1-5 years1.0x基准值;地位稳固但尚未根深蒂固
5-20 years1.5x积怨累积,联盟关系变得陈旧
20-50 years2.0x长期统治容易招致继承权挑战
50+ years2.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轻微警示迹象、声誉受损、小幅损失
命运转变类型

角色:

  • 死亡: 角色生命的终结
  • 失势: 失去力量、地位或职位
  • 腐化: 道德或精神上的堕落
  • 流放: 被逐出影响力范围
  • 转变: 本质发生根本变化
  • 衰退: 随时间逐渐衰落

派系:

  • 瓦解: 组织解散
  • 分裂: 分裂为多个派系
  • 吞并: 被竞争对手吞并
  • 衰退: 影响力/资源减少
  • 改组: 本质发生变化
  • 战败: 在特定冲突中落败

地点:

  • 毁灭: 不复存在
  • 征服: 易主
  • 灾害: 遭受灾难性破坏
  • 衰退: 经济/人口下滑
  • 转变: 性质发生变化
  • 隔绝: 与外界隔绝

死亡机制

只有满足以下所有条件时,死亡才会进入概率池:

  1. 角色正处于现实危险之中(战斗、险境、敌对情境)
  2. 命运压力达到“高”或更高(> 0.5)
  3. 运势缓冲值已耗尽(< 1)

死亡阈值计算:

death_threshold = (fate_pressure - 0.5) × 2 × (1 - fortune_buffer / 5)

计算示例:

命运压力运势缓冲值死亡阈值
0.500%(基准值,无死亡风险)
0.6020%
0.7040%
0.8060%
0.9080%
0.7132%
0.7224%

为什么死亡会让人感觉是命运使然,而非作弊:

  1. 透明: 玩家可以看到命运压力不断累积
  2. 由选择驱动: 弱点源自角色的选择
  3. 渐进: 压力随时间累积,而非突然出现
  4. 概率性: 骰子带来真正的不确定性
  5. 有机会幸存: 运势缓冲值让英雄得以逃生
  6. 意义重大: 死亡具有叙事分量,并会影响世界

提案生成

命运之轮转动并发生转变时,生成提案供人类审核。

提案格式
# 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 条目:

  1. 在 history/events/ 中为命运转变事件创建条目
  2. 使用新状态更新受影响的实体条目
  3. 将所有变更标记为 Proposed ?,直到获得批准
  4. 人工批准后,状态变为 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 年。他经历过三场战争,议会中有两个已知的敌人,而且刚刚揭露自己有一位私生继承人。他的命运压力有多大?”

你的处理方式:

  1. 计算各项:

    • 权力等级:7(拥有军队的地区统治者)
    • 任期:40 年 → 修正系数 2.0x
    • 弱点:2 个敌人(+2)+ 私生子秘密刚刚揭露(+3,揭露后降为 +1)+ 3 场战争(+4.5)= 7.5/10
    • 保护:假设有忠诚的侍从(+2)、设防的领地(+2)、一定的民众支持(+1)= 5/10
    • 幸运缓冲:长期统治且屡次脱险,估计为 2
  2. 应用公式:

    pressure = (7 × 2.0 × 0.75) / (5 × 2) + exposure
    pressure = 10.5 / 10 + ~0.1 = ~1.05 → capped at 1.0
    
  3. 结果:状态 F5(正在衰落)

  4. 说明:“瓦伦领主正处于衰落之中。他 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 的提议,角色因此在世界中蜕变为新的存在。也可能是他们察觉压力正在累积,于是让英雄功成身退,享受应得的安宁。

这些都是叙事上的胜利。命运之轮确保故事不断向前。

评论

支持 Markdown