282 次提交,公开日志的第一个周末
C API 是那次真正重要的提交:运行时拥有稳定公共界面的那一刻,两条由智能体撰写的工作流终于不再互相绊脚。这就是当循环顺畅运转起来时,一个 AI 原生运行时的样子。
上个周六,我提交了一摞 issue,然后让一个自主编码智能体去处理这个队列。到周日晚上,在周一之前最后一次坐在厨房餐桌前打开笔记本电脑时,运行时仓库里已经落地了 282 次提交。我只是其中一小部分提交的作者。剩下的大部分,作者是一个自主编码智能体。
这个数字看起来像一周冲刺工作量的原因是,在我不在键盘前的时候,这项工作一直在持续进行。我只在周末坐在键盘前。智能体没有本职工作。产出就是从这种安排中落出来的东西。
队列是怎么运作的
周六早上是提交 issue 的日子。我坐下来,端着咖啡,写 GitHub issue。每一个都是引擎接下来需要的、界定清晰的一块工作。大致形态是:
- 每个 issue 对应一个子系统或一个功能
- 一个智能体可以自我检验的清晰验收标准
- 指向相关文档、规格说明,以及这项工作应该触及的任何现有文件的指引
- 一个明确的”agent-queue”标签
还有一个夜间工作流(本周末运行时仓库里的第 37 号 issue),确保队列里打开的智能体 issue 永远不会低于十五个。如果低于了,这个工作流会从路线图中起草占位任务。智能体读取队列,挑一个自己能做的接下来处理,开一个草稿 PR,迭代,最终把自己标记为可供审查。
从周六到周日,我进行审查和合并。智能体做错了的地方,我关闭 PR,细化 issue,重新提交。智能体做对了的地方,PR 落地,issue 关闭。这个节奏是:周末一开始提交 issue,两天里持续审查,周日晚上合上笔记本电脑之前留下一个焕然一新的队列。当我回去做本职工作时,智能体继续在队列上磨。
这就是这个工作流。它并不微妙。之所以值得写下来,是因为它真的有效。
构建了什么
来自这 282 次提交的头条内容:
- 一个真正的运行时主循环,不只是一个骨架
- 一个测量从传感器输入到渲染的端到端时序的延迟追踪器
- 一个带有可配置阈值和周期性报告的内存使用监视器
- 一个具有 INFO / WARNING / ERROR 级别、控制台和文件输出的日志子系统
- 带有信号处理器的错误处理,用于优雅关闭
- 一个暴露运行时的 C API,供 SDK 链接
- C API 中用于 SDK 集成的模块/智能体管理系统
- 运行时的并发模型:任务队列和工作线程
- 一套全面的测试框架
- ABI 校验和 SDK 链接验证
- 作为产品目标定稿的 AR1+ 智能眼镜规格说明
这些都不光鲜。但这些都是一个 AR 运行时在其上能构建任何有意思的东西之前所需要的。
事后来看,最重要的一次提交是 C API 的暴露。运行时拥有一个 SDK 可以链接的稳定公共界面的那一刻,运行时工作和 SDK 工作就不再互相绊脚了。在那次提交之前,一个仓库中的每一次变更都必须与另一个仓库仔细同步。在那之后,它们解耦了。两条由智能体撰写的工作流可以并行运行,而不会产生合并冲突。
让我惊讶的事情
三件事。
智能体在无聊的基础设施上比我会做的更快。 遥测、日志、错误处理、测试框架。这些是人类会因为工作不光鲜而分心的那类任务。智能体不会分心。它只是把差异落地。
智能体在架构上很保守。 给它一个说”实现一个测量传感器到渲染时间的延迟追踪器”的 issue,它就精确地构建那个东西。它不会为延迟意味着什么发明一套形而上学,也不会为 API 提出一个不同的形态。这很好。架构是我的工作。实现是智能体的工作。
队列补充是瓶颈。 当智能体一天发布十五个 PR、到晚上队列就空了的时候,吞吐量就不再取决于智能体工作的速度。它开始取决于我能多快地把下一批任务表述清楚。这重塑了周六早上的安排。第一个小时用来提交 issue。
出了什么问题
两件事,都不是致命的。
CMake 构建坏过两次,原因是智能体落地的代码在孤立状态下能编译,但无法与运行时的其余部分链接。两次的修复方式是一样的:智能体目前还没有对项目链接期图谱的完整可见性。修复方式在于 issue 的框定上。从现在起,每一个涉及某个库的 issue 都要明确说明哪些其他库链接到它。
测试框架是在这一轮工作后期才加入的,一加入就立即暴露了此前四个 PR 中的错误,这些 PR 通过了手动冒烟测试,却没能通过新的测试框架。这里的教训是不那么性感的那种:把测试写作功能的一部分,而不是事后补上的东西。当 issue 这样要求时,智能体会这么做。当 issue 没有这样要求时,它就不会。所以要让它总是这样要求。
我想让合作伙伴和构建者知道的事
这个引擎的形态正在此刻被构建。到下个月底,大多数基础性决策都会定型。如果你在某个模型实验室,对 AI 层应该如何接入有想法,现在是纳入这些想法成本最低的窗口期。如果你是一个考虑 Unity 或 Unreal 集成的开发者,SDK 正在这个周末被塑造,绑定反映的是运行时能做什么。我宁愿在第六周而不是第六十周听到你的意见。
运行时仓库是开放的。SDK 仓库是开放的。开放 issue 的队列是开放的。实时观察这一切发生,就是这一切的全部意义所在。
282 次提交,公开日志的第一个周末。周日已经落袋。下一个是周一。
趁想法成本还低的时候塑造这个运行时
基础性决策正在此刻公开发生——如果你构建模型或构建眼镜,现在正是接入的窗口期。