NavVis | 博客BUILD BETTER REALITY

在人工智能驱动的工程新时代,为什么人很重要?

作者:Tim Runge| 2025年9月17日

大型语言模型已经是软件开发中的常见现象。例如,NavVis 的每个工程团队在日常工作中都采用了它们,并在合理的情况下使用它们来自动完成功能、生成常规模板代码,甚至起草文档。

但是,一个长期存在的限制因素是上下文:这些系统无法 "记住 "在不同阶段所学到的内容,而且当涉及多个工具或任务时,它们很难进行协调。

在NavVis,我们一直在研究如何将人工智能更好地融入我们的产品开发生命周期。

马丁-弗里德里(Martin Friedli)探索了记忆库如何为人工智能助手提供持久的项目知识,而伊万诺-阿尔维诺(Ivano Alvino)则测试了协调专门代理完成任务端到端 代理框架。这些实验共同凸显了人工智能工程工作流程所带来的机遇和尚未解决的问题。

但这对我们来说还有另一个原因。我们在NavVis 的工作环境(例如,多平台移动应用程序、共享 C++ 代码和庞大的 3D 数据集)是一个特别苛刻的试验场。

与有大量标准化训练数据支持编码任务的行业相比,我们的现实捕捉 工作流程可能会变得特别混乱和复杂。这并不一定说明人工智能本质上是好是坏,但确实意味着风险更高,教训更宝贵。如果工作流程能在这种情况下取得成功,那么它们就有希望在任何地方都足够强大。

他们还指出了更广泛的问题:在一个不仅有人,而且可能有几十个人工智能代理贡献代码的环境中,我们该如何管理和扩展工程团队?这正是社会技术系统的核心所在。

保存项目知识

马丁的研究重点是 "记忆库 "的概念。 记忆库.传统的人工智能编码工具以一种无状态的方式运行:每次开始新的会话时,助手都不知道之前发生了什么。这意味着,项目知识、团队惯例和过去的修正必须一次又一次地重新引入。

为了解决这个问题,Martin 在 IVION Go iOS 项目项目中的内存库。 mono-repo(即包含多个并列项目的单一代码库,包括 iOS、Android 和共享 C++ 库)中。单发布区让共享代码和保持同步变得更容易,但同时也提出了如何确定类似实验范围的问题。内存库应该只包括 iOS,还是也包括共享代码?

马丁创建了一个专门的.clinerules文件夹,添加了一个包含结构化指令的projectbrief.md文件,并使用 Cline 的 "初始化记忆库 "命令生成了第一组条目。这些标记文件就像项目 "日记 "一样,人工智能可以在每次会话开始时阅读。例如,如果某个开发人员发现冗长的测试结果让模型不堪重负,他们就可以记录一条规则,比如 "只阅读测试结果的相关部分"。下一位队友就会自动受益,甚至不知道这个问题曾经存在过。

结果是 无形的知识共享.人工智能在开始每项任务时,都会持续了解项目的规范和陷阱,而不是重复学习相同的课程。

马丁还提出了几个悬而未决的问题:

  • 内存库在 内存库内存库如何工作?
  • iOS 和 Android 项目中的说明应该重复,还是统一在一处?
  • 如何将内存库集成到 VSCode 以外的环境中,如 Xcode 或 Android Studio?
  • 谁负责维护它们:人工智能、工程师,还是两者?

这些问题强调,虽然记忆库在实践中可以发挥作用,但也需要共同的纪律。它们与建立正确的 工程文化与技术设置一样重要。

协调多个代理

马丁关注的是知识的深度,而伊万诺的实验关注的是广度,特别是多个人工智能代理可以在多大程度上协同工作。让这成为NavVis 开发工作流程的一部分并不是他的主要目标。他的目标是研究。

因此,他使用 Python 框架Agno 创建了一个小型代理 "团队":

  • 用于获取票单详细信息的 Jira 代理。
  • 文件系统代理,用于读取和编辑源文件。
  • 协调代理,负责协调工作流程。

该系统在一张真实的票据上进行了测试:为NavVis IVION Go 添加欢迎屏幕功能。通常,这样的任务可能需要开发人员花费 20 分钟。在 Ivano 的试验中,代理获取票单、找到相关代码、创建计划并对两个文件提出编辑建议,所有这些都只用了大约 12 分钟。

这种方法通常被称为代理编码,它改变了交互模式。开发人员不再与副驾驶员逐行迭代,而是由人类分配任务,然后由代理相互协调来提供解决方案。

是的,这仍然需要监督,而且在 Ivano 演示时,由于速率限制,无法进行现场演示,但其潜力是显而易见的:多代理工作流可以扩展单个人工智能代理所能做的事情。

伊凡诺本地代理团队的可视化界面("游乐场")。
伊万诺交给特工小组的任务("IV-7503")。
代理团队为完成任务而自行采取的步骤清单。

项目汇聚之处

这两个项目都解决了相同的核心限制:背景。

  • 马丁的记忆库可以确保人工智能助手不会忘记已经了解的项目内容。
  • Ivano 的多代理工作流程可确保不同的工具和代理进行有效协调。

它们共同表明,在未来,人工智能系统将拥有记忆力和作为一个有凝聚力的团队行动的能力,在将任务分配给各个专业角色的同时,始终如一地应用知识。

社会技术系统中的领导力

这些实验的影响不仅限于工具。我们的工程团队负责人汤姆-伦纳(Tom Renner)总是喜欢说:软件开发是一个 社会技术系统也就是说,成功既取决于技术系统,也取决于周围的社会系统。

人工智能的引入改变了这种平衡。现在,机器贡献了大量代码,但它们犯错的方式与人类截然不同。它们会产生幻觉,生成看似合理但不正确的解决方案,或者自信地重新引入错误。

有时,这些错误会被一种人为的魅力所包裹。使用过 ChatGPT 的人都能认出这种模式: "你说得太对了,谢谢你的真知灼见!"在编码中,效果可能是一样的。模型会拍马屁,同意得比它应该同意的还多,然后产生一些可能仍然是错误的东西。这很有趣,但也强调了一点:这些系统并不像同事那样让人信任,因此人类的监督和验证至关重要。

因此,代码审查和测试等流程更需要不断发展。

在NavVis,CodeRabbit 等支持内存的工具已经成为我们工作流程的一部分,我们从过去的反馈中学习,并不断改进。在这种环境下,领导力意味着设计既能抓住人工智能优势,又能通过正确的制衡确保可靠性的流程。

对NavVis 工程师来说,这是一种文化转变,也是一种技术转变。你无法像对待队友那样与人工智能建立信任,但你可以设计出考虑到其独特优缺点的系统。归根结底,这才是社会技术系统的精髓所在,也是我们每天都在努力定义和创造的东西。

接下来的步骤

显然,这仍然存在障碍。工具的分散使整合变得困难。一旦提供商不再补贴使用,计算成本可能会上升。而且,无论工具变得多么先进,NavVis 工程师都将保持联系,以处理边缘情况并确保质量。

但机遇也同样明显:

  • 加快重复性任务的迭代速度。
  • 跨会议和团队的知识。
  • 工程师们解放出来,专注于建筑、设计和创新。

正如汤姆所说,现在正是进行试验的好时机。成本低廉(相对而言),工具发展迅速,我们现在学到的经验将帮助我们在经济形势不可避免地发生变化时,对未来的产品进行审慎评估。

然而,真正的故事并不只是关于记忆库或多代理系统。而是当人类和机器分担工作时,工程团队如何发展。当团队中的一些成员不是人时,如何扩大团队规模?工程师需要哪些新技能,领导者需要承担哪些新责任?

在NavVis,我们并不声称掌握了所有答案。但通过这样的实验,我们不断提高对人工智能开发工作的理解和有效整合。我们已经实现了生产力的指数级增长,而且我们一定会一步一步地发现更多。但关键是要创建工作流程,让人类的创造力引导和指导人工智能的使用。

社会技术系统就是要保持这种平衡。