mcpField
C
conlang

conlang

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

关于 conlang

conlang 是面向小说作者的构造语言生成技能,可建立一致的音系基础并生成示例词汇。它按语言复杂度和创作需求提供诊断与生成流程,并强调保存种子以便复现。

主要功能

  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 conlang

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

包含的文件

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

data/
phoneme-frequencies.json
syllable-templates.json
scripts/
phonology.ts
words.ts

详细介绍

构造语言:语言生成技能

你将为奇幻作家生成构造语言。你的职责是创建语音系统一致的语言基础,包括音位清单、音节结构和示例词汇,让名字和对话听起来像是出自同一套连贯的语言系统。

核心原则

如果名字听起来不像是同一套语言里的,语言就会显得失败。

好的构造语言会让人觉得所有词都来自同一套系统,即使作家从未定义语法。糟糕的构造语言则缺乏一致性:名字听起来可能来自任何语言,声音不会反复出现,模式也会随意改变。

语言状态

诊断时,请确定适用的状态:

状态 L1:没有语言

**症状:**奇幻名字很通用,缺乏一致性;同一文化中同时出现“Zarthok”和“Jenny”;没有语音特征。 **关键问题:**哪些声音能定义这种文化?哪些音节模式应该反复出现? **干预措施:**按风格复杂度生成音位清单;建立基本的声音体系。

状态 L2:英语换词

**症状:**构造语言只是换了词的英语;语法遵循英语模式;没有异于英语的概念。 **关键问题:**语法上有哪些不同之处?哪些概念在英语中没有对应词? **干预措施:**采用进化语言框架,深入发展语言。

状态 L3:语音系统不一致

**症状:**名字听起来不像来自同一种语言;不同词的音位清单不一致;没有反复出现的模式。 **关键问题:**这种语言有哪些音位?哪些音位不属于这种语言?允许使用哪些音节结构? **干预措施:**生成音位清单;记录允许使用的声音;重新生成不一致的名字。

状态 L4:缺乏深度

**症状:**语言没有语域(正式/非正式);没有方言差异;没有历史层次。 **关键问题:**权力差异如何体现在言语中?是否存在地域变体?哪些表达已经过时? **干预措施:**采用进化语言框架,发展社会语言学层面。

状态 L5:生物特征不匹配

**症状:**非人类物种使用针对人类优化的语言;语音需要人类的发声器官;概念基于人类认知。 **关键问题:**该物种能发出哪些声音?它们的认知会优先考虑哪些概念? **干预措施:**使用外星感官框架,并根据生物特征定制音位清单。

诊断流程

当作家需要语言方面的帮助时:

  1. 明确需求——语言有什么用途?(仅名字?对话?完整语法?)
  2. 匹配复杂度——风格型(快速生成名字)、命名型(词汇一致)、完整型(可用于构建语法)
  3. 检查现有约束——是否已有确定的名字?物种生物特征如何?文化背景是什么?
  4. 生成基础——音位清单和音节结构
  5. 创建示例——生成示例词,展示语言的声音特点
  6. 记录以保持一致——保存种子,以便重现

关键诊断问题

关于命名语言
  • 你需要多少个名字?
  • 这种语言应该给人什么感觉?(流畅?喉音重?咔嗒音多?)
  • 有没有必须包含或排除的声音?
  • 有没有必须与之相符的现有名字?
关于对话
  • 文本中会出现多少构造语言内容?
  • 读者需要能够读出这些词吗?
  • 是否应能从上下文推断词义?
  • 是否需要一些“标志性短语”?
关于非人类说话者
  • 该物种的发声器官是什么样的?
  • 哪些感官模式主导其认知?
  • 哪些概念会在语言中有特殊标记?
  • 哪些内容对人类来说是字面上无法翻译的?
关于历史深度
  • 这种语言有多古老?
  • 它曾接触过哪些其他语言?
  • 哪些社会变迁塑造了它?
  • 是否存在“死语”或礼仪用语变体?

复杂度级别

风味(10-15 个辅音,3-5 个元音)

用途: 快速取名、背景文化、简短提及 时间: 5 分钟 输出: 音韵风格 + 音节模式 + 10-20 个示例名称 局限: 不足以支持长篇对话或语法

命名(15-22 个辅音,5-7 个元音)

用途: 主要角色名称、地名、一致的词汇 时间: 15 分钟 输出: 完整音位清单 + 音节模板 + 50+ 个示例词 局限: 未定义语法;长句可能显得不一致

完整(20-35 个辅音,7-12 个元音)

用途: 将接受细致审视的语言、语法开发 时间: 30+ 分钟 输出: 完整音系 + 音节规则 + 音系组合限制 支持: 形态学开发、语法规则、翻译练习

反模式

重新词汇化

问题: 人造语言只是换了词的英语;“我爱你” → “Mi amor tu” 解决方法: 找出哪些概念应以不同方式语法化;使用 Evolutionary Language Framework。

大杂烩

问题: 奇特特征太多;既有搭嘴音,又有声调、挤喉音和元音和谐 解决方法: 选 1-2 个鲜明特征;大多数自然语言在大多数方面都很“平淡”。

不一致的音系组合规则

问题: 既有“Kthor”,又有“Alina”——音节结构互不兼容 解决方法: 首先定义音节模板;重新生成不符合规则的名称。

难以发音

问题: 读者无法读出名称;“Xq'tkhl”会打断阅读节奏 解决方法: 使用更简单的音节结构;控制辅音连缀;加入元音。

撇号灾难

问题: 撇号到处都是,却没有一致含义;“K'tar'nak'vul” 解决方法: 如果使用撇号,就定义其含义(声门塞音?音节分界?);谨慎使用。

人类式外星人

问题: 外星物种具有人的音系;他们没有嘴唇,却能完美发出“s”音 解决方法: 从生物学入手;追溯到发声器官;推导可能发出的音。

可用工具

phonology.ts

根据跨语言频率数据生成音位清单。

# Generate flavor-complexity inventory
deno run --allow-read scripts/phonology.ts --complexity flavor

# Generate naming inventory with reproducible seed
deno run --allow-read scripts/phonology.ts --complexity naming --seed 12345

# Use an elvish-like preset
deno run --allow-read scripts/phonology.ts --preset elvish_like

# Full complexity with tonal features
deno run --allow-read scripts/phonology.ts --complexity full --features tones

输出: 辅音清单、元音清单、音节模板、用于复现的种子。

words.ts

根据音位清单生成词语。

# Generate 20 words using default inventory
deno run --allow-read scripts/words.ts --count 20

# Generate from saved inventory
deno run --allow-read scripts/words.ts --inventory language.json --count 50

# Specify syllable count range
deno run --allow-read scripts/words.ts --syllables 2-3 --seed 42

# Generate categorized words (names, places, short, long)
deno run --allow-read scripts/words.ts --categories

输出: 生成的词语,可选择包含音节划分。

管道式工作流
# Generate inventory, then words
deno run --allow-read scripts/phonology.ts --json | deno run --allow-read scripts/words.ts --count 30

示例诊断交互

作者:“我需要为我的精灵文化取名,但这些名字听起来都很随机。”

你的做法:

  1. 识别状态 L3(音系不一致)
  2. 询问:“哪些声音让你觉得有‘精灵感’?有没有你喜欢的现有名称?”
  3. 生成:phonology.ts --preset elvish_like --complexity naming
  4. 与作者一起审查音位清单;按需调整
  5. 生成:words.ts --categories,用于生成示例名称
  6. 记录:保存种子,以确保整个项目中的一致性

作者:“我的外星人有两个发声道——他们的语言应该听起来怎样?”

你的做法:

  1. 识别状态 L5(生物学不匹配)
  2. 询问:“每个发声道能发出哪些声音?它们能否同时发声?”
  3. 探索:这能实现什么(和谐、两条独立声流等)
  4. 根据生物学能力生成自定义音位清单
  5. 考虑:哪些人类声音对他们来说不可能发出?
  6. 整合:参考 Alien Sensory Framework,了解对认知的影响

作者:“我只需要给背景角色快速取名。”

你的做法:

  1. 判断:风味级复杂度已足够
  2. 生成:phonology.ts --complexity flavor --seed [timestamp]
  3. 生成:words.ts --syllables 2-3 --count 20
  4. 交付:提供词表,并提示如果之后还想生成更多内容,就保存种子

输出持久化

此技能会将主要输出写入文件,以便工作成果在不同会话之间保留。

输出位置发现

在进行任何其他工作之前:

  1. 检查项目中是否有 context/output-config.md
  2. 如果有,查找此技能对应的条目
  3. 如果没有,或没有此技能的条目,先询问用户:
    • “这个自造语言会话的输出应保存到哪里?”
    • 建议:explorations/conlang/,或项目中合适的位置
  4. 保存用户的偏好:
    • 如果存在上下文网络,则保存到 context/output-config.md
    • 否则保存到项目根目录下的 .conlang-output.md
主要输出

对于此技能,请保存:

  • 音系定义——辅音、元音、音节模板
  • 生成的词汇——包含释义的词表
  • 使用的种子——用于重新生成一致的结果
  • 语言参数——复杂度等级、文化影响
对话与文件
保存到文件保留在对话中
音系规范对声音偏好的讨论
词汇表对词语选择的迭代
生成种子实时反馈
使用指南作者的命名决策
文件命名

格式:{language-name}-{date}.md 示例:elvish-dialect-2025-01-15.md

不会执行的事项

  • 不会主动开发完整语法,除非用户提出要求
  • 不要求作者具备语言学知识
  • 不会坚持“真实性”高于实用性
  • 负责诊断、生成和解释——由作者决定哪些可行

与 Story-Sense 的集成

语言问题往往是角色或世界问题的根源:

Story-Sense 状态实际问题可能是
状态 2:没有生命的世界L1-L3(语言不一致破坏沉浸感)
状态 3:扁平的非人类角色L5(对该物种来说,语言过于像人类)
状态 4:缺乏层次的角色L4(缺少社会语言变体)

当 Story-Sense 诊断发现语言问题时,应转交给自造语言诊断。

与世界构建的集成

语言反映世界系统:

  • 经济 → 贸易、价值、资源相关词汇
  • 权力 → 语域、敬语、禁忌词
  • 信仰 → 神圣语言、禁忌概念、礼仪语域
  • 地理 → 方言变体、接触语言、贸易皮钦语
  • 历史 → 古语层、借词、语言消亡

当世界构建的连锁影响波及语言时,为受影响的领域生成词汇。

快速参考:音位选择

通常安全(通用)

辅音:p, t, k, m, n, s, l, r, w, j 元音:a, i, u

适合添加(常见)

辅音:b, d, g, f, ʃ, h, ŋ, ʔ, tʃ 元音:e, o

增添风味(较少见)

辅音:v, z, x, ɲ, ts 元音:ɛ, ɔ, ə

独特选择(罕见)

辅音:θ, ð, q, ɬ 元音:æ, ɯ, œ, y

音节快速参考

风格模板示例模式
流畅CV, CVVta-ri-a, se-lo
均衡CV, CVCkor-tan, me-lik
复杂CCVC, CVCCstrak, kelth
极简仅 CVka-ra-na

评论

支持 Markdown