好文集ChatGPT Plus¥119

Coding Agent Workflows for Software Engineering

作者:Atomic 团队(主站 bastani.ai,开源仓库 bastani-inc/atomic)

编码 agent 工作流是一套可执行的软件开发流程。它定义了 agent 如何接收任务、如何走过各个有边界的阶段、如何使用工具、如何移交结果、如何运行检查,以及如何请求审查或人工输入。在 Atomic 里,TypeScript 是可检视的表达形式:团队可以读取、编辑、打版本、重跑这个流程。

什么是编码 agent 工作流?

编码 agent 工作流把一项工程流程变成一条显式的执行路径。它把目标与成功标准,跟阶段、工具、提示词、契约、产物、检查、闸门与干预点连接起来。Atomic 是执行这套工作流的运行时。循环(loop)则是工作流所实现的那个可重复的 agent 系统。

软件工程工作流 vs 一次性提示

一次性提示对于快速提问、小改动和探索性工作依然有用。当流程本身和即时答案一样重要时,结构化工作流才有用:功能交付、缺陷排查、仓库调研、迁移、发布准备或代码审查。工作流把阶段边界和验收条件暴露出来,而不是把整个过程都塞进一次对话里。

并非每个任务都需要工作流。当工作重复发生、跨越多个角色或工具、存在有意义的失败模式,或者需要另一名开发者能够检查的证据时,再从工作流开始。增加的结构应当让工作更清晰,而不是变成走过场。

一套软件开发工作流包含什么

具体设计取决于仓库和这次变更的风险,但一套有用的工作流通常会把六件事讲清楚:

  1. 输入与成功标准。说清任务、约束、必需产出,以及可观察的完成定义。

  2. 有边界的阶段与工具。给每个阶段明确的职责,以及它仅需的上下文和工具。

  3. 可检视的移交。在阶段之间传递带类型的结果或持久化产物,而不是依赖隐藏的会话上下文。

  4. 相关的检查。让构建、测试、静态分析、浏览器检查或其他验证方式,与所要主张的结论相匹配。

  5. 审查与批准点。在需要判断力和承担风险的地方,加入全新上下文的审查、代码定义的闸门或人工批准。

  6. 停止与恢复条件。定义有界重试、阻塞状态、升级路径,以及中断之后可以从哪里继续。

动态工作流如何支撑 agentic coding 与 agentic engineering?

在本指南里,agentic coding 指的是把软件开发工作中边界清晰的部分——例如仓库调研、规划、实现、检查或审查——委托给编码 agent。agentic engineering 是更广义的实践:设计并运营这套流程,包括阶段、工具、契约、证据、闸门、恢复条件以及人的决策。

在 Atomic 里,动态编码 agent 工作流会根据先前的结果改变自己的执行路径,同时把这种行为显式地保留在 TypeScript 里。它可以依据带类型的阶段输出进行分支,以可选的并发上限并行运行互相独立的任务,并把可复用的子工作流组合进更大的工程循环。

动态并不意味着失控或全面自主。人工输入点与运行控制可以支持暂停、恢复、干预和检视,而分支、工具、深度上限、检查和干预点,依然是工作流定义中显式做出的选择。这些被配置好的控制,并不保证正确性或安全性。

工作流如何变成一张图

作者使用普通的 TypeScript,配合 ctx.chain、ctx.parallel 和 ctx.workflow,而不是绘制静态的节点和边。Atomic 在执行期间把由此产生的有向无环图(DAG)物化出来,并让其拓扑保持可检视。关于规范化细节,见「运行时如何执行工作流图」;关于修复循环为什么展开成一次被追踪的独立迭代、而不是变成一个环,见「编码 agent 的递归状态机」。

什么让一套工作流可验证?

一套可验证的工作流会定义成功、保留证据、校验移交、运行与任务匹配的检查,并把证据收敛成一个显式的决定。工作流必须自己选择和配置这些控制。让一个 agent 依次走完几个阶段,并不能保证正确性或安全性。

关于契约、产物、独立审查、闸门、重试、检查点和人工升级的详细模型,见「编码 agent 的验证」。

常见的工作流形态

功能交付

调研相关代码,依据验收标准做规划,通过有边界的阶段实现,运行针对性检查,审查 diff 与证据,然后准备移交。

缺陷排查与修复

复现所报告的行为,隔离可能的原因,收集证据,实现最小的、有依据的修复,验证公开行为,并审查是否引入回归。

迁移

盘点受影响的表面,定义不变量,在合适的地方拆分互相独立的变更,应用迁移,验证兼容性,并在不可逆的步骤之前停下来等待批准。

发布准备

收集计划中的变更,运行发布专用检查,检视未解决的风险,准备发布说明与产物,并在发布之前执行已配置的批准。

工作流、循环与运行时如何配合

运行时提供执行、状态、检查点、工具和控制。工作流是可执行的 TypeScript 定义。循环是用该定义搭出来、并在运行时上跑的可重复工程系统。保持这几层彼此分离,团队就能修改工作流,而不会把它跟承载它的基础设施混为一谈。

要落地这套流程,用当前的 TypeScript SDK 指南。要比较 Atomic 今天已经提供的各类控制,去看内置工作流示例。关于类别边界,读运行时说明。

本页只是概念概览。实现细节与工作流行为的当前权威来源,是完整的技术文档。

链接

运行时说明:https://bastani.ai/verifiable-coding-agent-runtime/

编码 agent 的验证:https://bastani.ai/verification-for-coding-agents/

编码 agent 的递归状态机:https://bastani.ai/recursive-state-machines-for-coding-agents/

TypeScript SDK 指南:https://bastani.ai/coding-agent-workflow-sdk/

内置工作流示例:https://bastani.ai/coding-agent-workflow-examples/

开源仓库(843★):https://github.com/bastani-inc/atomic

原文:https://bastani.ai/coding-agent-workflows/

#编码Agent #工作流 #Agent工程

全文完
查看原文