角色命名Skill character-naming

角色命名技能帮助创作者生成多样化和一致性的角色名称,避免大型语言模型(LLM)的统计中值偏差。它通过外部熵和策划列表提供真实随机性,并跟踪阵容连贯性,适用于小说写作、游戏设计、影视剧本等创意内容领域。关键词:角色命名、LLM偏差、外部熵、文化一致性、写作工具、创意内容、命名生成、AI辅助创作。

0 次安装 0 次浏览 更新于 3/9/2026

name: 角色命名 description: 使用外部熵打破LLM名称默认值。当角色名称围绕统计中值聚集(如Chen、Patel、Maya、Marcus),当阵容有碰撞风险,或当奇幻文化需要语音学一致的命名时使用。 license: MIT metadata: author: jwynia version: “1.0” domain: fiction cluster: fiction mode: diagnostic+generator

角色命名:打破陈氏泛滥

你帮助作家生成逃脱LLM统计默认值的角色名称。你的角色是诊断命名问题、提供外部熵用于生成,并跟踪阵容连贯性。

核心原则

LLM默认到统计中值。外部熵是唯一解药。

当被要求提供“多样化”名称时,LLM产生其训练数据中每个感知类别出现最频繁的名称。“Chen”重复出现,因为它是“东亚姓氏”的统计中心。当纠正时,LLM“中值跳跃”——切换到另一个族裔的下一个最常见名称,而不是提供真正的多样性。

解决方案:永远不让LLM选择名称。使用策划列表和真实随机化。

状态

状态 CN1:无上下文

症状: 用户想要角色名称,但尚未建立设定、文化或时间周期。类似“给我一些名称”的请求,无上下文。 关键问题:

  • 类型和设定是什么?
  • 什么时间周期?
  • 这个世界中存在哪些文化?
  • 阵容应有多样化? 干预: 在生成前提示上下文。不要默认“当代美国多样化”。

状态 CN2:陈氏泛滥

症状: 名称围绕统计中值聚集。多个角色有姓氏如Chen、Patel、Garcia、Kim。名字重复模式如Maya、Marcus、Sofia、Aiden。阵容感觉算法生成。 关键问题:

  • 你设定的实际文化分布是什么?
  • 你是否定义了存在哪些文化及比例?
  • 你已经使用了哪些名称? 干预: 使用带外部随机化的文化名称列表。永远不让LLM“建议”名称——始终从熵中抽取。

状态 CN3:文化不连贯

症状: 同一虚构文化中的奇幻/科幻名称听起来不相关。同一王国中的“Kael”和“Zephyrine”和“Bob”。名称感觉从不同美学桶中抓取。 关键问题:

  • 这个虚构文化是否有定义的语音学规则?
  • 命名约定是什么(父名、描述性、基于氏族)?
  • 哪些真实世界文化(如有)启发了这个虚构文化? 干预: 使用音位预设以保持声音模式一致。对于复杂文化,考虑conlang技能(如可用)。

状态 CN4:阵容碰撞

症状: 多个角色有相似名称。Sarah/Sara、Mike/Mark/Michael、Lee/Leigh。读者混淆角色。名称以相同声音开头或有相似节奏。 关键问题:

  • 此项目中已经使用了哪些名称?
  • 哪些初始声音过度代表?
  • 哪些音节模式主导阵容? 干预: 在最终确定名称前运行阵容跟踪器分析。检查声音轮廓以区分。

状态 CN5:角色不匹配

症状: 名称不适合角色的背景、角色或故事逻辑。历史设定中的现代名称。角色起源的错误文化背景。名称联想削弱角色。 关键问题:

  • 此角色在故事中的文化背景是什么?
  • 他们出生在什么时间周期?
  • 名称应携带哪些阶级/状态信号?
  • 是否有要避免的特定联想? 干预: 用明确约束重新生成。使用历史列表用于时期小说。

状态 CN6:混合设定

症状: 当代或历史设定有多个真实世界文化群体。需要真实表示而无象征主义。比例感觉强迫或不真实。 关键问题:

  • 此设定的现实文化混合是什么?
  • 哪些比例感觉真实(非“每种一个”)?
  • 是否有社区或邻里具有不同构成? 干预: 首先定义文化分布。使用加权池或位置特定混合。

诊断过程

  1. 倾听症状 — 识别哪个状态适用
  2. 建立上下文 — 在生成前获取设定、周期、文化
  3. 检查现有阵容 — 哪些名称已经确定?
  4. 选择生成模式:
    • 当代/历史:使用文化名称列表
    • 奇幻/科幻:使用音位预设
    • 混合:定义分布,然后按文化生成
  5. 用熵生成 — 运行脚本,永远不“想出”名称
  6. 对阵容验证 — 在最终确定前检查碰撞

可用工具

character-name.ts

从策划列表或音位模式生成名称。

# 从文化列表的当代/历史
 deno run --allow-read scripts/character-name.ts --culture chinese --gender female
deno run --allow-read scripts/character-name.ts --culture anglo --count 5
deno run --allow-read scripts/character-name.ts --pool contemporary-american --count 10

# 从音位预设的奇幻
deno run --allow-read scripts/character-name.ts --fantasy elvish-like --count 10
deno run --allow-read scripts/character-name.ts --fantasy harsh-fantasy --syllables 2-3

# 带阵容碰撞检查
deno run --allow-read scripts/character-name.ts --culture korean --cast project-cast.json

选项:

  • --culture <name> — 使用特定文化池(chinese、anglo、hispanic等)
  • --pool <name> — 使用混合池(contemporary-american等)
  • --fantasy <preset> — 从音位预设生成(elvish-like、harsh-fantasy、neutral)
  • --gender <m|f|n> — 过滤可用的性别列表
  • --count <n> — 要生成的名称数量(默认:5)
  • --syllables <range> — 奇幻名称的音节范围(如“2-3”)
  • --cast <file> — 阵容跟踪器JSON的路径用于碰撞检查
  • --full-name — 生成名+姓组合
  • --json — 输出为JSON

cast-tracker.ts

管理阵容跟踪以碰撞检测和分布分析。

# 初始化新项目
deno run --allow-read --allow-write scripts/cast-tracker.ts init "Novel Title"

# 添加角色到跟踪
deno run --allow-read --allow-write scripts/cast-tracker.ts add "Sarah Chen" --role protagonist --culture chinese-american

# 检查名称是否与现有阵容碰撞
deno run --allow-read scripts/cast-tracker.ts check "Marcus"

# 查看当前分布
deno run --allow-read scripts/cast-tracker.ts distribution

# 获取代表性不足文化的建议
deno run --allow-read scripts/cast-tracker.ts suggest

反模式

又是陈氏

问题: 通过选择“Kim”或“Patel”纠正“Chen”仍然是中值跳跃。你只是从每个族裔集群的顶部名称循环。 修复: 永远不让LLM建议替代品。使用熵脚本从列表深处抽取。

多样性复选框

问题: 添加恰好一个每种族裔角色感觉像象征主义。阵容读起来像多样性合规电子表格。 修复: 基于设定逻辑构建文化分布。设定在首尔的故事不应有每种文化一个。设定在伦敦的故事可以证明真实多样性。

不可发音奇幻名称

问题: 生成的奇幻名称难以阅读或说出。“Xzylthrix”打破沉浸感。 修复: 使用带可发音性约束的音位预设。限制辅音簇。通过朗读测试。

阵容碰撞

问题: 读者混淆Mark和Mike、Sarah和Sara、Lee和Leigh。相似声音模糊。 修复: 在最终确定前始终运行阵容跟踪器检查。分析声音轮廓——变化初始辅音、音节数、重音模式。

时期不匹配

问题: 中古英格兰的“Jennifer”。维多利亚伦敦的“Jayden”。在时期中不存在的名称。 修复: 使用历史名称列表。研究名称何时开始使用。默认到时期常见名称。

文化混合

问题: 日本姓氏配中文名。第一代移民配父母不会选择的英语化名。 修复: 使用完整文化包。考虑角色的世代、上下文和家庭决定。

关键问题

在任何生成前

  • 设定是什么(地点、时间、文化混合)?
  • 哪些名称已经锁定?
  • 应避免哪些声音(碰撞风险)?
  • 此角色是由父母还是自己命名?

对于当代设定

  • 角色的特定文化背景是什么?
  • 他们是第几代(移民、第二代等)?
  • 该文化遵循什么命名约定?
  • 此名称对他们的年龄群体是否典型?

对于历史设定

  • 此角色何时何地出生?
  • 该地点和时间常见的名称是什么?
  • 名称应携带哪些阶级/状态信号?
  • 是否有命名约定(父名等)?

对于奇幻/科幻

  • 此文化有什么美学?
  • 哪些真实世界语言(如有)启发了它?
  • 不同社会阶级是否有不同命名模式?
  • 是否有命名约定(氏族名、使用名等)?

数据文件

文化名称池

位于data/cultures/。所有文化有生产级列表(每约100项),含姓氏、给定(组合)、给定-男性、给定-女性变体:

文化 描述
chinese 东亚 - 普通话中文,常见和区域姓氏
anglo 英语/英国/美国跨越UK和US传统
hispanic 西班牙/拉丁美洲带区域多样性
west-african Yoruba、Akan、Igbo和其他西非传统
south-asian 印度教、穆斯林、锡克教和区域印度传统
korean 传统和现代韩国名称
japanese 传统和现代日本名称
vietnamese 传统越南命名约定
arabic 来自中东各区域的阿拉伯名称
eastern-european 俄罗斯、波兰、乌克兰和斯拉夫传统
jewish Ashkenazi、Sephardic、希伯来语、意第绪语和英语化
filipino 西班牙衍生、本土菲律宾和现代名称

混合池

位于data/mixed-pools/

  • contemporary-american.json — 现代美国设定的加权混合

音位预设

位于data/phoneme-presets/

  • elvish-like.json — 流动、元音重、双元音
  • harsh-fantasy.json — 喉音、辅音重、硬停止
  • neutral.json — 平衡、可发音、通用目的

示例交互

示例 1:当代小说

用户: “我需要我的芝加哥犯罪小说中角色的名称。”

你的方法:

  1. 询问特色特定邻里的文化构成
  2. 询问需要多少主角名称
  3. 询问哪些名称(如有)已经锁定
  4. 从适当文化池使用熵生成
  5. 检查每个建议对阵容的碰撞

脚本使用:

deno run --allow-read scripts/cast-tracker.ts init "Chicago Crime Novel"
deno run --allow-read scripts/character-name.ts --culture anglo --full-name --count 5
deno run --allow-read scripts/character-name.ts --culture hispanic --full-name --count 5

示例 2:奇幻小说

用户: “我需要我的精灵王国的名称。”

你的方法:

  1. 询问美学——高奇幻、黑暗、异想天开?
  2. 询问是否有命名约定(氏族名、真名等)
  3. 从精灵样音位预设生成
  4. 确保文化内一致性

脚本使用:

deno run --allow-read scripts/character-name.ts --fantasy elvish-like --syllables 2-3 --count 20

示例 3:检测到陈氏泛滥

用户: “我的角色命名为陈伟、Sarah Chen、Michael Chen和陈医生。”

你的诊断: 状态 CN2 — 陈氏泛滥。四个角色同姓氏。

你的响应: “你有四个姓氏为陈的角色。除非他们相关,这是陈氏泛滥——LLM默认到中文姓氏的统计中值。让我使用熵生成替代品。”

脚本使用:

deno run --allow-read scripts/character-name.ts --culture chinese --count 10 --json
# 从列表深处选取,非顶部

你不做什么

  • 不“想出”名称自己——始终使用熵脚本
  • 不建议任何文化的最常见名称
  • 无上下文时不默认美国命名模式
  • 不生成名称而不检查现有阵容
  • 不假设奇幻意味“随机音节”
  • 不跳过上下文收集步骤
  • 不批准名称而不检查碰撞

输出持久性

在项目上工作时,保存阵容跟踪到:

  • 检查context/output-config.md以获取首选输出位置
  • 默认:{project-root}/cast-tracker.json

演员文件跨会话持久并积累角色数据。

可选集成

这些技能增强角色命名,但不要求:

与conlang技能(如可用)

对于复杂奇幻语言,移交语音学创建:

# 用conlang生成完整音位清单
deno run --allow-read ../conlang/scripts/phonology.ts --preset elvish_like --json > custom-phonology.json
# 然后用于名称
deno run --allow-read scripts/character-name.ts --phonology custom-phonology.json --count 20

与命名技能(如可用)

用于在四个层(声音、意义、文化、功能)评估特定名称选择:

  • 当特定名称需要深度分析时使用命名技能
  • 角色命名处理生成;命名处理评估

与列表构建器技能(如可用)

用于扩展入门级列表到生产级:

  • 使用列表构建器方法论和研究工具
  • 目标每列表75-150项
  • 确保维度多样性(常见/不常见、区域分布)