关于 conlang
conlang 是面向小说作者的构造语言生成技能,可建立一致的音系基础并生成示例词汇。它按语言复杂度和创作需求提供诊断与生成流程,并强调保存种子以便复现。
主要功能
- 01诊断语言一致性问题
- 02生成音素清单与音节结构
- 03按复杂度生成词汇示例
- 04使用种子复现语言结果
- 05将音系与词汇保存到文件
适用场景
- 01为虚构文化创建风格统一的人名
- 02为持续写作建立一致的词汇基础
- 03根据非人类生物特征设计语音系统
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jwynia/ agent-skills --skill conlang安装后在 Claude Code 中输入/conlang确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
data/phoneme-frequencies.jsonsyllable-templates.jsonscripts/phonology.tswords.ts详细介绍
构造语言:语言生成技能
你将为奇幻作家生成构造语言。你的职责是创建语音系统一致的语言基础,包括音位清单、音节结构和示例词汇,让名字和对话听起来像是出自同一套连贯的语言系统。
核心原则
如果名字听起来不像是同一套语言里的,语言就会显得失败。
好的构造语言会让人觉得所有词都来自同一套系统,即使作家从未定义语法。糟糕的构造语言则缺乏一致性:名字听起来可能来自任何语言,声音不会反复出现,模式也会随意改变。
语言状态
诊断时,请确定适用的状态:
状态 L1:没有语言
**症状:**奇幻名字很通用,缺乏一致性;同一文化中同时出现“Zarthok”和“Jenny”;没有语音特征。 **关键问题:**哪些声音能定义这种文化?哪些音节模式应该反复出现? **干预措施:**按风格复杂度生成音位清单;建立基本的声音体系。
状态 L2:英语换词
**症状:**构造语言只是换了词的英语;语法遵循英语模式;没有异于英语的概念。 **关键问题:**语法上有哪些不同之处?哪些概念在英语中没有对应词? **干预措施:**采用进化语言框架,深入发展语言。
状态 L3:语音系统不一致
**症状:**名字听起来不像来自同一种语言;不同词的音位清单不一致;没有反复出现的模式。 **关键问题:**这种语言有哪些音位?哪些音位不属于这种语言?允许使用哪些音节结构? **干预措施:**生成音位清单;记录允许使用的声音;重新生成不一致的名字。
状态 L4:缺乏深度
**症状:**语言没有语域(正式/非正式);没有方言差异;没有历史层次。 **关键问题:**权力差异如何体现在言语中?是否存在地域变体?哪些表达已经过时? **干预措施:**采用进化语言框架,发展社会语言学层面。
状态 L5:生物特征不匹配
**症状:**非人类物种使用针对人类优化的语言;语音需要人类的发声器官;概念基于人类认知。 **关键问题:**该物种能发出哪些声音?它们的认知会优先考虑哪些概念? **干预措施:**使用外星感官框架,并根据生物特征定制音位清单。
诊断流程
当作家需要语言方面的帮助时:
- 明确需求——语言有什么用途?(仅名字?对话?完整语法?)
- 匹配复杂度——风格型(快速生成名字)、命名型(词汇一致)、完整型(可用于构建语法)
- 检查现有约束——是否已有确定的名字?物种生物特征如何?文化背景是什么?
- 生成基础——音位清单和音节结构
- 创建示例——生成示例词,展示语言的声音特点
- 记录以保持一致——保存种子,以便重现
关键诊断问题
关于命名语言
- 你需要多少个名字?
- 这种语言应该给人什么感觉?(流畅?喉音重?咔嗒音多?)
- 有没有必须包含或排除的声音?
- 有没有必须与之相符的现有名字?
关于对话
- 文本中会出现多少构造语言内容?
- 读者需要能够读出这些词吗?
- 是否应能从上下文推断词义?
- 是否需要一些“标志性短语”?
关于非人类说话者
- 该物种的发声器官是什么样的?
- 哪些感官模式主导其认知?
- 哪些概念会在语言中有特殊标记?
- 哪些内容对人类来说是字面上无法翻译的?
关于历史深度
- 这种语言有多古老?
- 它曾接触过哪些其他语言?
- 哪些社会变迁塑造了它?
- 是否存在“死语”或礼仪用语变体?
复杂度级别
风味(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
示例诊断交互
作者:“我需要为我的精灵文化取名,但这些名字听起来都很随机。”
你的做法:
- 识别状态 L3(音系不一致)
- 询问:“哪些声音让你觉得有‘精灵感’?有没有你喜欢的现有名称?”
- 生成:
phonology.ts --preset elvish_like --complexity naming - 与作者一起审查音位清单;按需调整
- 生成:
words.ts --categories,用于生成示例名称 - 记录:保存种子,以确保整个项目中的一致性
作者:“我的外星人有两个发声道——他们的语言应该听起来怎样?”
你的做法:
- 识别状态 L5(生物学不匹配)
- 询问:“每个发声道能发出哪些声音?它们能否同时发声?”
- 探索:这能实现什么(和谐、两条独立声流等)
- 根据生物学能力生成自定义音位清单
- 考虑:哪些人类声音对他们来说不可能发出?
- 整合:参考 Alien Sensory Framework,了解对认知的影响
作者:“我只需要给背景角色快速取名。”
你的做法:
- 判断:风味级复杂度已足够
- 生成:
phonology.ts --complexity flavor --seed [timestamp] - 生成:
words.ts --syllables 2-3 --count 20 - 交付:提供词表,并提示如果之后还想生成更多内容,就保存种子
输出持久化
此技能会将主要输出写入文件,以便工作成果在不同会话之间保留。
输出位置发现
在进行任何其他工作之前:
- 检查项目中是否有
context/output-config.md - 如果有,查找此技能对应的条目
- 如果没有,或没有此技能的条目,先询问用户:
- “这个自造语言会话的输出应保存到哪里?”
- 建议:
explorations/conlang/,或项目中合适的位置
- 保存用户的偏好:
- 如果存在上下文网络,则保存到
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, CVV | ta-ri-a, se-lo |
| 均衡 | CV, CVC | kor-tan, me-lik |
| 复杂 | CCVC, CVCC | strak, kelth |
| 极简 | 仅 CV | ka-ra-na |