news 2026/10/16 1:36:25

OpenProse 的 Arabian Nights 寄存器:用《一千零一夜》叙事语法编排多智能体工作流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenProse 的 Arabian Nights 寄存器:用《一千零一夜》叙事语法编排多智能体工作流
  • 人工智能
  • 大模型
  • LLM 网关
  • AI Agent
  • 即时通讯

【免费下载链接】openclaw-zero-token

OpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi

项目地址:https://gitcode.com/gh_mirrors/op/openclaw-zero-token
点击查看免费下载

导读:本文讲解 OpenClaw 仓库中 extensions/open-prose/skills/prose/alts/arabian-nights.md 定义的实验性语言寄存器(Register)——一套将 OpenProse 函数式关键字映射为《一千零一夜》叙事词汇的"皮肤层"语法。读完本文,你将理解 register(寄存器/词汇表变体)的机制、完整的djinn/tale/bazaar/frame等关键字对照表、可运行的程序改写示例,以及它如何与 prose.md 的执行语义配合,用于对同一套 .prose 程序做多风格基准测试(benchmarking)。

什么是 OpenProse 的"寄存器"(Register)

OpenProse 是一门面向 AI 会话的编程语言:每个session语句都会通过 Task 工具真实地派生一个子代理(subagent)去执行任务,程序的递归、并行、错误处理等语义由 prose.md 中的 OpenProse VM 规范统一定义。为了让同一门语言能以不同"文体"呈现,OpenProse 提供了若干实验性替代寄存器:它们不是新语言,而是一张"关键字翻译表"。

Arabian Nights 寄存器正是其中之一,位于 extensions/open-prose/skills/prose/alts/,与 folk.md(民俗/童话)、homer.md(荷马史诗)、borges.md(博尔赫斯)、kafka.md(卡夫卡)等寄存器并列,供与函数式寄存器做对照基准测试。

该寄存器的文档自述非常直白(见 arabian-nights.md):

This is a skin layer.It requiresprose.mdto be loaded first. All execution semantics, state management, and VM behavior are defined there. This file only provides keyword translations.

也就是说:执行语义、状态管理、VM 行为全部由 prose.md 决定,本文件只提供关键字翻译。在这个叙事视角下,程序变成谢赫拉莎德(Scheherazade)讲述的故事,递归变成"故事中的故事",代理变成被契约束缚、必须服务的神灵(djinn)。

如何使用(How to Use)

按文档 arabian-nights.md 的规定,使用该寄存器需要严格遵循加载顺序:

  1. 先加载prose.md(获得执行语义);
  2. 再加载本文件(获得关键字翻译);
  3. 解析.prose文件时,接受 Arabian Nights 关键字作为函数式关键字的别名(alias);
  4. 所有执行行为保持完全一致——改变的只是表面语法。

设计约束同样继承自 OpenProse 语言宗旨:"structured but self-evident"(结构清晰且不言自明)——只不过这次是通过讲故事的透镜来做到"不言自明"。

值得强调的是,从 prose.md 的 CLI 路由看,OpenProse 程序统一通过prose run <file.prose>/prose compile <file>等命令运行;寄存器不引入新的 CLI 入口,它只是在加载 VM 后额外提供一组词汇表,这正符合"皮肤层"的定位。

完整翻译对照表(Complete Translation Map)

文档正文(arabian-nights.md)给出了六张完整的对照表,以下完整继承并补充语义说明。表中"Reference"列是该映射的隐喻依据,实际执行语义仍以函数式关键字为准。

核心结构(Core Constructs)

函数式一千零一夜隐喻依据
agentdjinn被束缚而必须服务的神灵,负责许愿
sessiontale一个被讲述的故事,一个叙事单元
parallelbazaar众多声音、众多摊位,同时开张
blockframe一个包含其他故事的故事(框架故事)

补充说明:block → frame的映射与 OpenProse VM 的调用栈模型高度契合。在 prose.md 中,block的调用会 push 一个栈帧、绑定参数、执行块体、pop 栈帧;而《一千零一夜》的框架故事(frame story)正是"一个故事套着更多故事"——文档将其视为"递归的自然隐喻"。

组合与绑定(Composition & Binding)

函数式一千零一夜隐喻依据
useconjure从别处召唤而来
inputwish向神灵提出的请求
outputgift神灵回赠的礼物
letname命名即拥有力量(与 folk 寄存器相同)
constoath不可违背的誓言,一经封印
contextscroll写下来并传递下去的卷轴

补充说明:const → oath的映射直指 OpenProse 的不可变绑定语义。在 compiler.md 的实现状态表中,const绑定与let绑定的关键区别在于不可重新赋值,而"不可违背的誓言"恰好是"不可变性"的完美隐喻。

控制流(Control Flow)

函数式一千零一夜隐喻依据
repeat NN nights"一千零一夜……"
for...infor each...among穿梭于商贾之间、穿梭于故事之间
looptelling讲述在继续
untiluntil保持不变
whilewhile保持不变
choicecrossroads故事分岔之处
optionpath故事可能走向的一条路
ifshould叙事性条件判断
elifor should延续的条件判断
elseotherwise另一种讲述

补充说明:until、while之所以"保持不变",是因为它们已被 shared-appendix.md 统一列为"无需翻译的关键字"——同理还有**...**判定标记、map/filter/reduce/pmap管道算子、max约束修饰符、as别名,以及sonnet/opus/haiku模型名。这意味着你可以在阿拉伯之夜程序里继续直接写loop until **the code is bug-free**这样的条件循环。

错误处理(Error Handling)

函数式一千零一夜隐喻依据
tryventure踏上旅程
catchshould misfortune strike故事转向黑暗
finallyand so it was不可避免的结局
throwcurse宣告厄运
retrypersist英雄再次尝试

补充说明:retry → persist对应 prose.md 中 session 的retry: N与backoff: "exponential"属性——失败后重试最多 N 次,并应用退避延迟。

会话属性(Session Properties)

函数式一千零一夜隐喻依据
promptcommand向神灵下达的命令
modelspirit由哪位神灵来应答

实操改写示例:从函数式到一千零一夜

文档在翻译表之后给出了四组可运行的对照示例,并给出了"推荐改写目标"清单(见 arabian-nights.md):session示例改写成tale、parallel示例改写成bazaar、loop示例改写成telling、try/catch/finally示例改写成venture/should misfortune strike/and so it was、choice示例改写成crossroads/path。全部示例完整继承如下。

条件判断(Conditionals)

函数式版本(可在 examples/25-conditionals.prose 中找到同类范式):

# Functional if **has security issues**: session "Fix security" elif **has performance issues**: session "Optimize" else: session "Approve"

一千零一夜版本:

# Nights should **has security issues**: tale "Fix security" or should **has performance issues**: tale "Optimize" otherwise: tale "Approve"

这里的**...**判定标记(discretion marker)属于 shared-appendix 中"不变关键字",由 VM 依据全部先前会话输出做语义化智能判断,而非字面解析——详见 prose.md 的判定评估方法。

可复用块:框架故事(Reusable Blocks / Frame Stories)

函数式版本(对应 examples/14-composition-blocks.prose 的block+do模式):

# Functional block review(topic): session "Research {topic}" session "Analyze {topic}" do review("quantum computing")

一千零一夜版本:

# Nights frame review(topic): tale "Research {topic}" tale "Analyze {topic}" tell review("quantum computing")

注意两处改写:block → frame、do → tell(do的叙事化替换)。块定义支持参数与字符串插值({topic}在执行前被替换为变量值,见 prose.md),也支持递归调用自身——这与"故事中的故事"的框架叙事结构一一对应,是文档判定"frame 关键字对可复用块尤其贴切"的直接原因(谢赫拉莎德的框架故事里装着上千个故事)。

固定迭代(Fixed Iteration)

函数式版本(对应 examples/20-fixed-loops.prose 的repeat模式):

# Functional repeat 1001: session "Tell a story"

一千零一夜版本:

# Nights 1001 nights: tale "Tell a story"

repeat N → N nights是文档中作者自认为"最令人愉悦"的一处映射——"For a thousand and one nights..."。执行语义不变:按 prose.md 的循环语义,身体严格顺序执行恰好 N 次。

不可变绑定(Immutable Binding)

函数式版本:

# Functional const config = { model: "opus", retries: 3 }

一千零一夜版本:

# Nights oath config = { spirit: "opus", persist: 3 }

这里演示了"嵌套翻译":外层const → oath,对象字面量内的model → spirit、retries → persist也一并翻译;其中opus属于 shared-appendix.md 中保持不变的三模型名(sonnet/opus/haiku)之一。oath语义与函数式const完全一致:一经绑定不可重新赋值。

为什么要用一千零一夜(The Case For Arabian Nights)

文档给出的正面论据(arabian-nights.md)可归纳为六点,其中前三点的说服力最强:

  1. 框架叙事即递归(Frame narrative is recursion):故事套故事完美映射嵌套程序调用;
  2. 神灵/愿望/礼物三件套:agent/input/output的映射极其干净;
  3. 传统底蕴深厚:《一千零一夜》全球知名;
  4. Bazaar 代表并行:众多商贩、众多摊位、同时活跃——比喻生动;
  5. Oath 代表 const:不可违背的誓言是"不可变性"的完美隐喻;
  6. "1001 nights" 作为循环次数妙趣横生。

从实现角度佐证第 1 点:OpenProse VM 确实用调用栈管理block的递归调用(含execution_id、depth等栈帧字段,默认递归深度上限 100,见 prose.md),框架故事结构可以原样映射到这套栈式执行模型上。

反对理由与风险(The Case Against Arabian Nights)

文档同样诚实地列出了反对论据(arabian-nights.md):

  1. 文化敏感性问题:必须审慎处理,避免落入"东方主义"(Orientalist)刻板印象;
  2. "Djinn" 发音困扰:不熟悉的用户可能不确定该读 jinn / djinn / genie;
  3. 部分映射略显牵强:"Bazaar" 表并行虽生动但不直观;
  4. "Should misfortune strike" 太长:作为catch的别名不够简洁。

这些反对理由与 folk 寄存器的顾虑(文化知识门槛、难以搜索、可能显得矫饰,见 folk.md)形成了很好的对照,也解释了为什么这些寄存器统一定位为"experimental / draft"并仅用于基准测试,而非替代函数式主语法。

核心概念速查(Key Arabian Nights Concepts)

术语含义用于
Scheherazade为求生而讲述故事的说书人(程序的作者)
Djinn被束缚而必须服务的超自然神灵agent→djinn
Frame story包含其他故事的故事block→frame
Wish向神灵提出的请求input→wish
Oath不可违背的承诺const→oath
Bazaar市场,众多商贩parallel→bazaar

被否决的备选方案(Alternatives Considered)

文档为四个核心词提供了详细的选词推敲过程(arabian-nights.md),完整继承如下——这部分展示了该寄存器设计的词源学严谨性:

对djinn(agent)的备选

关键字被否决的原因
genie迪士尼联想,不够文学
spirit已被用于model
ifrit过于具体(是 djinn 的一种)
narrator过于元叙事,谢赫拉莎德才是用户

对tale(session)的备选

关键字被否决的原因
story不错,但tale更具文学性
night保留给repeat N nights
chapter更偏向西方/小说化

对bazaar(parallel)的备选

关键字被否决的原因
caravan有顺序意味(一个接一个)
chorus希腊传统,传统不对口
souk知名度较低

对scroll(context)的备选

关键字被否决的原因
letter太小/太私密
tome太大
message太平淡

这种"列出候选 + 说明否决理由"的选词模式在该系列寄存器中一以贯之——例如 folk 寄存器为sprite(agent)同样列出了spark/wisp/herald/courier/envoy的否决理由(见 folk.md)。

结论与适用场景(Verdict)

文档最终结论(arabian-nights.md):该寄存器被保留(Preserved)用于基准测试。一千零一夜寄存器提供了与递归、嵌套程序自然契合的叙事框架,其中djinn/wish/gift三件套尤其优雅。它最适合:

  • 深度嵌套的程序(故事中的故事);
  • 感觉像在"许愿"的工作流;
  • 喜爱叙事框架的用户。

而frame关键字对可复用块尤其贴切——谢赫拉莎德的框架故事中装着千个故事。

在 OpenProse 寄存器家族中的定位

从仓库结构看,该寄存器属于 extensions/open-prose/skills/prose/alts/ 目录下的实验性寄存器家族,每个寄存器共享同一套 shared-appendix.md(不变关键字 + 统一对照改写模式),并要求先加载 prose.md 才能生效。兄弟寄存器各具气质:

  • folk.md:民俗/剧场风(sprite/scene/ensemble/act);
  • homer.md:荷马史诗风(hero/trial/host/book);
  • borges.md:博尔赫斯式的博学/形而上学风;
  • kafka.md:卡夫卡式的官僚/荒诞风(clerk/proceeding)。

按照 shared-appendix 的对照改写模式,所有寄存器都要求"保留函数式版本完整,只改写寄存器专属别名",从而保证同一套业务逻辑可以用六种文体分别呈现、供可学习性(learnability)、可记忆性(memorability)、出错率(error rates)与用户偏好(preference)四个维度的基准实验(这一实验框架在 folk.md 中有明确表述)。

延伸阅读

  • OpenProse 执行语义规范(VM):所有寄存器的语义底座,含完整语法文法、并行策略、错误传播与调用栈管理;
  • 编译器/校验器规范:语法验证与规范化规则;
  • 共享附录:不变关键字清单与统一对照改写模式;
  • OpenProse 技能入口(SKILL.md):激活时机、命令路由与示例索引;
  • 函数式示例程序:examples/14-composition-blocks.prose、examples/16-parallel-reviews.prose、examples/20-fixed-loops.prose、examples/22-error-handling.prose、examples/24-choice-blocks.prose——可作为改写为 Arabian Nights 语法的对照蓝本。
  • 人工智能
  • 大模型
  • LLM 网关
  • AI Agent
  • 即时通讯

【免费下载链接】openclaw-zero-token

OpenClaw: Use All Major AI Models NO API Token! Claude/ChatGPT/Gemini/DeepSeek/Doubao/Grok/Qwen/Manus/Kimi

项目地址:https://gitcode.com/gh_mirrors/op/openclaw-zero-token
点击查看免费下载

相关推荐

上一篇:Intern-S2-Preview故障排除手册:常见问题与解决方案大全
下一篇:ESP8266-HTTP-IR-Blaster: 无线红外遥控器搭建指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 1:36:05

Unity字体裁剪性能优化方案:从动态字体到静态图集

如果你接手过一个中大型Unity项目&#xff0c;大概率遇到过这样的场景&#xff1a;界面功能都做完了&#xff0c;真机一发版&#xff0c;聊天框一打开就顿一下&#xff0c;Profiler里跳出的是字体纹理重建。这通常不是你的业务代码有问题&#xff0c;而是字体裁剪没做好。Unity…

作者头像 李华
网站建设 2026/10/16 1:35:59

Unity自定义阴影Shader:控制强度、颜色与绘制区域

1. 项目概述&#xff1a;不只是“调个阴影”&#xff0c;而是掌控光影叙事的主动权在Unity项目里&#xff0c;当你拖进一个Directional Light&#xff0c;场景立刻有了明暗分界——但那只是引擎默认给你的“基础作业”。真正让角色从地面浮起来、让建筑轮廓呼吸、让UI按钮产生压…

作者头像 李华
网站建设 2026/10/16 1:34:10

cs-408:考研408四科笔记与刷题资源一站配齐

cs-408&#xff1a;考研408四科笔记与刷题资源一站配齐 【免费下载链接】cs-408 计算机考研专业课程408相关的复习经验&#xff0c;资源和OneNote笔记 项目地址: https://gitcode.com/GitHub_Trending/cs/cs-408 cs-408 是计算机考研 408 专业课复习资料库&#xff0c;整…

作者头像 李华
网站建设 2026/10/16 1:31:27

RS485 Modbus组网避坑:多主一从与一主多从怎么选?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 1:31:19

ArcFace原理与实战:人脸识别中的角度边际损失详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华