A Building as a Repository: KIR, a Typed Intermediate Representation for Agent-Authored Building Information Models
本文介绍了 KIR,一种将建筑信息模型视为版本化程序的类型化中间表示,用于系统地检测并表示自主智能体生成的施工过程中存在的七种特定失效模式,并证明了与直接操作宿主 API 相比,该方法在错误诊断和代码紧凑性方面具有显著改进。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一个这样的世界:城市的蓝图不再仅仅是静态的图纸,而是由智能软件代理编写的动态指令。这些代理旨在通过使用建筑师和工程师每天都在使用的复杂软件,逐层、逐个房间地构建建筑物的数字模型。挑战在于,这些软件程序是为人类之手设计的,而非为自主机器设计。它们对指令的反应往往难以预测:一个工具可能会静默失败,一个选择可能会在没有记录原因的情况下被做出,或者一个关键信息可能会在无迹可寻的情况下消失。当人类建筑师犯错时,他们能看到错误,理解上下文并进行修复。而当软件代理在这样的环境中犯错时,它往往无法得知哪里出了问题,它试图做什么,或者它创建的建筑是否真的符合给定的设计。结果是一个系统,计算机可能会声称任务已完成,即便它生成的建筑存在缺陷或不完整。
这就是研究员德米特里·库克莱夫(Dmitry Kuklev)致力于解决的问题。他提出了一个简单而深刻的问题:如果我们不再要求这些代理编写直接与建筑软件对话的原始代码,而是要求它们编写一种清晰的、带类型的计划,以便编译器可以在任何东西被建造之前对其进行检查,情况会怎样?其结果是一个名为 KIR 的新系统。它不将建筑视为文件的集合,而是将其视为一个存储在版本化仓库中的程序,就像一个可以被读取、检查和修订的指令库。核心思想是,在代理尝试建造一堵墙或放置一扇门之前,它必须首先准确地写下其意图,并且一个独立的系统必须验证该计划是否合理、引用是否清晰以及后果是否已知。如果计划存在歧义,系统将拒绝执行并解释原因,同时提供一系列可能的修正方案。这种方法将负担从“猜测和希望”转向了“已知和验证”。
研究人员构建这个系统是为了处理七种建筑项目可能在无人察觉的情况下出错的具体方式。在旧的方法中,代理可能会尝试选择特定的楼层,但如果两个楼层的名称相似,软件可能会直接选择找到的第一个并继续运行,导致代理完全不知道自己选错了。在新系统中,这种歧义会被立即捕捉。系统会停止进程并呈现一份拒绝记录,列出确切的问题和可选的候选对象,迫使代理做出明确的选择。同样,如果代理留下一个空白值,期望软件用默认值填充,新系统会精确记录该默认值的来源。它保留了一个永久日志,记录了每个值是由代理编写、由宏计算还是由软件本身提供的。这创造了一条溯源链,即构建模型过程中每一个决策的历史记录。
为了测试这个想法,研究人员创建了一个受控环境,使他们能够在不需要实际运行建筑软件的情况下进行实验。他们构建了一个编译器,该编译器接收代理的类型化计划,并根据建筑模型的快照对其进行检查。在一个实验中,他们向系统输入了四十二个不同的程序,其中一些包含旨在破坏系统的刻意错误。系统成功拒绝了其中的二十九个缺陷程序,并提供了详细的诊断代码来解释具体错误所在。至关重要的是,它在执行过程中没有崩溃或抛出未捕获的错误;它只是停了下来并解释了问题。对于被接受的程序,系统生成了海量的代码在实际建筑软件中运行。一个仅需一百行指令即可在系统中描述的建筑设计,在翻译为宿主软件的代码时,扩展成了近四百万个字符。这种巨大的差异凸显了底层软件的复杂性,以及在代理与机器之间存在一个紧凑、人类可读计划的价值。
该系统还引入了一种思考建筑项目状态的新方式。在传统系统中,一次事务要么成功,要么失败。在这个新系统中,存在第三种状态:未确认。如果软件发送了一个建造墙壁的命令,但响应丢失或不明确,系统不会猜测是否成功。相反,它会将该动作标记为“未确认”,并要求在重试之前进行特定的验证步骤。这防止了系统在可能并不存在的建筑元素存在的情况下假设其存在。研究人员还构建了一个“反向路径”,即一种将完成的建筑模型读回系统语言的方法。这个过程会检查模型中的每个元素是否都能被解释。如果系统遇到无法理解或无法表达的建筑部分,它不会将其静默丢弃;它会将其记录为一个带有特定原因的“原子”,确保没有任何部分在翻译过程中丢失。
对该系统的评估是非常严谨的。研究人员在一个模拟的六十层塔楼上测试了该系统,这是一个拥有数百层楼和数千根柱子的复杂结构。他们发现,系统可以用仅一万一千多个字符的紧凑格式生成整个建筑计划,然后将其扩展为宿主软件所需的代码。他们还测试了系统在处理多个代理尝试编辑同一建筑时的冲突能力。该系统使用一种称为“比较并交换”(compare-and-swap)的方法,确保如果两个代理试图同时更改建筑的同一部分,系统会检测到冲突并拒绝合并更改,直到代理解决分歧。这防止了多人协作同一个数字文件时经常发生的这类数据损坏。
然而,研究人员谨慎地指出他们尚未证明的内容。虽然系统在离线测试中表现完美,并且生成的代码可以成功编译,但他们尚未进行受控对比,以观察使用该新系统的代理是否比直接编写代码的代理更擅长建造事物。这项实验已在计划中,但尚未开展。目前的结果表明,该系统是鲁棒的,它能捕捉到那些否则会被忽视的错误,并提供清晰、可检查的决策记录。它将计划的有效性、执行的成功以及最终设计的正确性区分开来,将其视为三个必须分别验证的独立事项。
这项工作的意义在于它实现了从“盲目执行模型”向“基于证据的构建模型”的转变。通过将建筑视为可以被阅读、检查和修订的程序,该系统赋予了自主代理对其行为进行推理的能力。它提供了一套关于失败的词汇,允许系统说“我无法执行此操作,因为 X”,而不是仅仅静默失败。这种方法不仅让软件更加可靠,也让代理构建的过程变得透明且可问责。研究人员展示了通过正确的工具,可以实现代理的意图与最终结果之间的桥梁,使其具备清晰度和精确度。这项工作证明了,通过建立一个计算机知道自己在做什么、为什么做以及实现了什么的系统,可以为未来智能代理与人类协作设计并建造我们世界的复杂结构奠定基础。这项工作证明了,有了正确的工具,代理的意图与最终结果之间的差距是可以被精准弥合的。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。