Jacquard 0.1: 专为 AI 编写、人类审查的代码设计的编程语言

Jacquard 0.1: 专为 AI 编写、人类审查的代码设计的编程语言

Jacquard 0.1 是一种编程语言,旨在应对大多数代码由机器学习模型编写并由人类进行审查的时代。它专注于使语言本身具备回答关键安全性和可靠性问题的能力——例如“这段代码可以触及什么?”以及“我们有多确定?”——而无需人类审查员阅读 AI 生成的每一行代码。

显式副作用追踪与能力授权

Jacquard 在语言层面强制执行副作用的透明度。每个函数签名都会显式声明其可能执行的影响,从而允许审查员一眼就能看出某段代码能够做什么。

  • 副作用签名 (Effect Signatures):(text) ->{net} text 这样的签名表示该函数可能会执行网络操作 (net)。
  • 语言级强制执行: Jacquard 运行时会拒绝任何未处理的世界效应 (world effects),除非通过 --allow 标志显式授予权限 (例如 --allow net--allow fs)。
  • 无环境权限 (No Ambient Authority): 与传统语言不同,它没有访问文件系统或网络的隐式权限;权限必须显式授予运行时。

多世界执行与模拟

Jacquard 允许通过更换管理外部世界的处理器 (handler) 来针对不同的“世界”执行同一个程序。这用一种一等公民的语言特性取代了传统的 Mocking。

  • 世界处理器 (World Handlers): 处理器是响应程序对外部世界请求的组件。通过更换处理器,开发者可以在真实网络、脚本化的伪造环境、历史流量记录或服务器行为的概率模型上运行相同的代码。
  • 确定性测试: 这种架构使得测试诸如“如果 API 挂了,我的智能体 (agent) 会怎么做?”之类的场景变得轻而易举,只需更改世界处理器即可。

离散概率编程

Jacquard 将概率编程视为一个库而非内置的运行时特性,这是通过具有深度、多射 (multi-shot) 处理器的代数效应实现的。

  • 多射处理器 (Multi-shot Handlers): 处理器可以恢复计算零次、一次或多次。这使得对于有限离散模型,可以精确枚举所有可达结果及其概率。
  • 作为库的贝叶斯推理: 由于处理器可以控制程序的延续 (continuation),sampleobserve 操作被实现为效应,而不同的推理算法(如似然加权)被实现为处理器。
  • 程序修复: 该语言可用于执行程序修复,通过将失败的测试视为一种观测,并计算各种候选补丁的概率。

结构化身份与内容寻址

为了避免格式和重命名的干扰,Jacquard 使用基于代码规范解析结构的内容寻址。

  • 规范哈希 (Canonical Hashing): Jacquard 对程序的规范解析结构进行哈希,而不是对源代码字节进行哈希。这意味着更改注释、格式或重命名局部变量不会改变程序的身份。
  • 结构化差异对比 (Structural Diffing): 该语言提供了一个结构感知型差异对比工具,能够识别逻辑上的变化而非文本上的变化。
  • 高效缓存: 只有当规范代码或其依赖项发生变化时,纯测试才会重新运行,从而减少了冗余计算。

技术实现与工具链

Jacquard 0.1 是作为一个研究原型实现的,带有 OCaml 检查器和 CPS 解释器。它包含一个原生的 AOT (Ahead-of--Time) 后端,用于生成 C 代码,然后通过 clanggcc 进行编译。

  • 内核 AST (Kernel AST): 该语言构建在一种统一的表示形式上,其中每个形式都是一个 (head, meta, args) 三元组,由 27 个内核形式组成。
  • 原生编译: jac build 命令将内核 .jqd 载体编译成一个独立的二进制文件。虽然完整的效应语言可以编译,但出于安全原因,eval 操作仍保留在解释器层。
  • Warp 测试: 该项目包含一个 Warp 测试框架,用于带有内容寻址缓存的发现和基于属性的测试。

社区见解与批评

虽然该项目因其在效应追踪和内容寻址方面的方法而受到称赞,但一些社区成员对为 AI 智能体采用新语言表示担忧。

"任何以 AI 为中心的新编程语言... 显而眼的问题在于,你尝试使用它的任何 LLM 都会从零开始——它没有任何可以复制的内容,而且很难通过自主搜索找到相关的文档。"

其他批评者质疑效应系统是否从根本上不同于复杂的类型系统,或者世界建模能力是否仅仅是依赖注入的一种形式。

当前局限性

作为一个研究原型,Jacquard 0.1 有明确的非目标和局限性。它目前缺乏 VM/JIT、并发、连续分布、梯度、类型化分阶段 (typed staging) 以及形式化完备性证明。世界授权仍然是粗粒度的,且该语言目前尚不打算用于生产环境。

Sources