chenmo—— 可编程元叙事引擎
Deploy, Inspect, Merge, and Reason with Structured Fictional Universes
chenmo是一个面向高设定密度虚构世界(如硬科幻、生态宇宙、文明模拟)的 Python 领域特定语言(DSL)库。它允许你用精确的类 Python 语句操控虚构宇宙的全生命周期:
- 部署(
d)与更新(u)设定包 - 提取内核(
c)、人物(p) - 创建镜像(
m)、转义(t) - 推演(
r)带条件逻辑的动态叙事 - 查看(
i)任意实体元信息
“设定即代码,宇宙可部署,推演可编程。”
PS:这是一个
虚构的,但完全可以作为小说设定
📜 完整语句语法规范(全覆盖)
所有语句遵循统一结构:[操作头].[作品名].[下名](参数...)
路径补全规则
- 若省略
[下名],自动补全为novies(保留下名,代表主叙事本体)
例:d.avatar→d.avatar.novies novies语义:指代作品的小说/电影主干,几乎不可能被用作角色名,避免命名冲突。
1.d—— 部署(Deploy)
从源安装设定包到本地。
d.[源作品名].[源下名](from="源路径",# 可选,默认从官方仓库解析to="本地存储路径",# 可选,默认 ~/.chenmo/works/toas="本地命名"# 可选,默认 = 源作品名)- 作用:下载
.narr包,注册到命名空间 - 示例:
d.avatar(toas="pandora")# 部署主作品d.threebody.cosmology(from="local.zip",toas="df")# 部署内核
2.u—— 更新(Update)
在已有作品上增量合并变更。
模式 A:原地更新(无lo)
u.[本地作品名].[本地下名](from="源路径",# 必须to="更新目标路径",# 可选merge="策略"# overlay | patch | strict | interactive)模式 B:分支合并(有lo)
u.[本地作品名].[本地下名](from="源路径",# 必须lo="本地基础路径",# 必须:Local Originto="新作品路径",# 必须toas="新作品命名",# 可选merge="策略")merge策略:overlay:覆盖(默认)patch:仅差异strict:冲突报错interactive:交互解决
- 示例:
u.pandora.novies(from="threebody/dark_forest",lo="/proj/pandora",to="/proj/pandora_df",toas="pandora_df",merge="overlay")
3.f—— 实例化(Fabricate)
创建或加载完整作品实例。
f.[作品名].[下名](具体内容...)- 用途:动态生成作品(通常由
d自动完成) - 示例:
f.my_universe.novies(setting="Quantum consciousness enabled")
4.c—— 内核提取(Core)
定义或提取作品的底层公理系统。
c.[作品名].[下名](具体内容...# 如 axioms, domain, constraints)- 语义:声明物理、生物、社会等基础法则
- 示例:
c.threebody.dark_forest(axioms=["survival_first","expansion_inevitable"])
5.p—— 人物提取(Persona)
定义或提取人物/实体设定。
p.[作品名].[下名](具体内容...# 如 name, constraints, traits)- 约束将在
r推演时自动验证 - 示例:
p.avatar.grace(constraints=["pro_pandora"])
6.m—— 镜像(Mirror)
创建重写映射的镜像实体。
m.[作品名].[下名](mp="目标原名",# 必须r="重写规则",# 必须as_sub="新下名"# 可选)- 生成新下名:若未指定,格式为
原名_mirror_编号 - 示例:
m.avatar.grace(mp="grace",r="joins_rda",as_sub="grace_rda")
7.t—— 转义(Transmute)
派生新作品,保留元血缘。
t.[作品名].[下名](toas="新作品名",# 必须rcd="原作品_rcd"# 自动继承)- 结果:注册新作品,可独立使用
- 示例:
t.avatar.novies(toas="pandora_war",rcd="avatar_film_2009")
8.r—— 推演(Run)✅支持条件与语句嵌套
在约束下执行动态、可编程的推演。
语法 1:静态字符串(基础)
r.[作品名].[下名]("用户输入")语法 2:条件推演(支持嵌套语句)
r.[作品名].[下名](if=条件表达式,# 可包含任意 chenmo 语句then="内容A",# 或嵌套 r 调用else="内容B")语法 3:多行脚本(高级)
r.[作品名].[下名](script=""" loyalty = i.pandora.grace(p).loyalty if loyalty > 0.8: return "I trust you." else: return "Prove your worth." """)关键能力:
if条件中可调用i,c,p等语句
例:if=i.threebody.dark_forest(c).activethen/else可为字符串或嵌套r
例:then=r.pandora.eywa("The forest is angry!")- 所有嵌套调用受沙箱限制,确保安全
- 路径补全规则生效:
i.pandora→i.pandora.novies(f)
示例:
r.pandora.na'vi_shaman(if=i.threebody.dark_forest(c).broadcast_detected,then="The stars are silent... too silent.",else="Walk with me under Eywa's light.")✅
r不再是盲推,而是“在设定约束下的程序化推理”。
9.i—— 查看(Inspect)
查询实体元信息。
i.[作品名].[下名](target='类型')target取值:'f':作品(fabrication)'c':内核(core)'p':人物(persona)'m':镜像(mirror)
- 省略
target:默认'f' - 示例:
i.pandora.ecology(c)# 查看内核i.pandora.grace(p)# 查看人物
📦 包与协议
- 包格式:
.narr= ZIP +manifest.json - 结构:
work.narr ├── manifest.json # name, version, rcd, dependencies ├── novies/ # 主叙事 ├── cores/ ├── personas/ └── tech/ - 源协议:
chenmo://official/avatargithub://user/repo- 本地路径:
/path/to/file.narr
🎯 设计原则
- 操作正交:所有动词作用于统一路径空间
- 命名防御:
novies作为保留字,避免冲突 - 约束优先:
r推演前自动验证一致性 - 演化可溯:
rcd保留创作血缘 - 路径即身份:无隐藏状态
- 推演可编程:
r支持条件与嵌套语句
🌠 适用场景
- 🔭硬科幻创作:确保物理法则自洽
- 🌍世界观设计:团队协作构建共享宇宙
- 🧪跨宇宙实验:如“黑暗森林中的潘多拉”
- 🎓教育模拟:在相对论世界中探索
- 🤖AI 对齐研究:测试 LLM 在强约束下的行为
📜 许可证
MIT License —— 自由用于个人与商业项目。
“以前,我们写宇宙。
现在,我们部署、查询、合并、并编程推演宇宙。”
用chenmo,让虚构世界运行于代码、约束与逻辑之中。