异步 AI 编程范式崛起解析
Hacker News 123 points 高热讨论,剖析异步编程在 AI 应用中的核心价值和工作流演进,反映编程范式向 AI-first 的结构性转变。
Hacker News 123 points 高热讨论,剖析异步编程在 AI 应用中的核心价值和工作流演进,反映编程范式向 AI-first 的结构性转变。
我花费了不少时间审查他人编写的代码。AI agent 接收详细的问题描述,编写代码(主要是 Typescript、Rust 和 Python),添加测试,并将更改提交到一个分支。当一切都准备好审查时,我才会介入。
这曾经像是一个未来场景,但现在这就是我的工作方式,也是许多开发者开始工作的方式。这种转变很微妙但很强大:与其逐行编写代码,我们改为清晰描述问题,让工具在后台解决。
这个版本的"异步编程"不同于经典定义。它涉及开发者如何构建软件。
工作流程如下所示:
清晰定义问题。 编写一份详细的规范,说明需要构建什么,包括边界情况、约束和成功标准。
交给别人。 将实现委托给 AI agent、队友,或者甚至是拥有全面说明的你的未来自己。
稍后回来。 回到审查结果,提供反馈,并决定后续步骤。
与传统编程的关键区别是问题定义和实现之间的时间分离。你不需要立即反馈循环,而是有由清晰需求和自动验证驱动的后台问题解决。
异步编程不是 vibe coding。Vibe coding 让你在不深入细节的情况下编写代码。异步编程是一种工作流程,允许开发者同时处理多个复杂问题,同时仍然理解代码的细节。你仍在架构解决方案、审查实现和维护代码库。只是你不再亲自输入大部分代码。
为了让异步编程在实践中有效,你需要三样东西:清晰的问题定义、自动验证结果的方法,以及人工驱动的代码审查。
问题陈述的质量决定了其他一切。模糊的需求导致模糊的结果。精确的规范会产生可工作的代码。
这是区别:
模糊: "让搜索更快"
精确: "我的目标是将搜索延迟从约 800ms 减少到约 200ms。我怀疑根本原因是我在每一批行上进行的堆分配。你能尝试重构分配,使其每次搜索只进行一次,然后测量影响吗?"
精确的版本包括当前状态、目标结果、建议方法和验收标准。AI agent(或人类队友)可以独立工作,因为需求明确无歧义。
有效的异步编程规范读起来像技术文档:包括背景、约束条件、示例和明确的成功标准。如果你无法清晰解释问题,说明你还没有充分理解它,不足以委托它。
异步编程只有在你能验证结果而无需手动测试每种边界情况时才能工作。你需要能够自动检查工作的系统。
目标是建立一个流程,让 agents 可以独立验证他们的工作。这需要时间。初期你要提供明确的指导,随后开发出使 agents 能自主工作的模式。在 CI 中建立这套系统颇具挑战,但它允许后台 agents 在你的开发环境外执行工作。
一旦你不再手动输入每个字符,代码审查就变得至关重要。我经常看到有的 PR 解决了完全错误的问题、做出了糟糕的设计决定,或包含大量重复代码。
审查 AI 生成的代码很有价值,与传统代码审查类似。预期你会在代码审查上花费更多时间。
代码可能不是你逐行编写的,但系统设计和技术决策应该仍然体现你的判断。
自从采用异步编程,我的工作流程改变了。现在我同时处理四五个任务:一个复杂问题同步进行,三四个在后台进行。当我切换上下文时,会审查每个后台任务的进度,提供指导,然后回到同步工作或代码审查。
我们一直在用异步编程来开发 Braintrust 本身,现在我们正在构建工具来将这些理念转化为 AI 工程。
传统的 prompt engineering 是手工操作。你编写一个 prompt,用示例进行测试,观察失败,做出小调整,反复迭代。这个过程需要专业知识,但涉及大量重复工作。
我们的 agent Loop 让你描述想要解决的评估问题,并在后台花时间分析实验结果,识别失败测试用例的模式,建议改进 prompts、数据集和记分器。
以这种方式工作的意义仍在不断显现。这改变了我作为开发者关注的内容:花费更少时间在 IDE 快捷键和输入速度上,投入更多精力清晰地阐述问题和彻底审查解决方案。
实现工作可以与其他工作并行进行。随着工具的改进,更多开发者可能采用这种方式。AI 没有取代编程,但编程最有价值的部分变得更加突出,而常规任务则转到了后台。