我将项目从零构建到自主循环的 6 个步骤

@CKGrafico
英语1天前 · 2026年7月15日
118K
28
0
0
7

TL;DR

Quique Fdez Guerra 概述了一套用于创建自主软件开发系统的 6 步框架,通过该框架,人类负责设计架构,而 AI 循环则负责执行。

大多数关于自主软件开发的话题,都是从 Agent 编写代码开始的。Agent 接手一个任务,实现一个功能,发起一个拉取请求。演示效果很好,大家都很兴奋。

在任何自主交付能够可靠运作之前,必须有人设计自主系统运行所需的工程体系。项目结构、技术选型、架构边界、设计方向、工程规范、验证机制、专业角色、审批权限——这些都不应该由一群独立 Agent 并行猜测而产生。

我的方法从不同的职责分工开始。人类设计工程体系。专业 Agent 执行工作。异步循环协调工作何时发生以及下一步做什么。

目标不是将人类从软件开发中移除,而是将人类参与集中在需要判断力、上下文和产品理解的决策上,同时构建一个让更多执行工作能够自主持续的环境。

以下是我每次启动一个最终希望无需我监视就能运行的项目时,所遵循的六个步骤。

第一步:人类设计工程体系

当我开始一个项目时,我不会让自主 Agent 去发明项目的基础。

我先决定重要的部分:代码仓库应该如何组织,使用哪些技术,主要的架构边界如何运作,设计方向是什么,必须遵循哪些工程规范,以及自主执行应该在哪里停止。这些决策成为后续一切的基础。

然后,我使用 opencode-onboard 将它们编码到代码仓库中。

/make-engineer 创建项目所需的专业 AI 工程师。前端、后端、基础设施、测试、安全、数据、移动端,无论产品需要什么。这些不是贴了不同标签的通用 Agent。每个都有明确的专业方向、一套能力,以及在工程工作流中的清晰位置。

/make-architecture 在 ARCHITECTURE.md 中捕获技术结构和边界。/make-design 在 DESIGN.md 中捕获视觉语言、设计令牌和组件模式。/make-guardrails 将所有决策转化为每个 Agent 必须遵守的具体规则。架构边界、命名规范、测试期望、代码风格、安全约束、Git 实践。它们不再只是原始开发者掌握的知识,而是成为运行环境的一部分。

Quique Fdez Guerra - inline image

代码仓库最终包含的不仅仅是文档。它包含了一个编码后的工程组织,以及每个将在其中工作的 Agent 的共享真相来源。

人类先定义系统。只有这样,自主执行才变得有用。

第二步:交互式基础先于自主

一旦工程体系定义完成,我以交互方式构建项目初始基础。

此时我通常使用 /plan-quick 和 /plan-apply。/plan-quick 分析一个聚焦的目标,并将其转化为具体、有序的任务序列。它故意比完整的规范工作流更轻量。当工作清晰且我想快速推进而不失去可见性或控制时,我会使用它。/plan-apply 实现这些任务并验证结果。

这就是我建立项目基础架构的方式:仓库结构、应用程序骨架、数据库设置、认证基础、设计系统、测试基础设施、CI/CD 配置、部署基础。

Quique Fdez Guerra - inline image

项目早期阶段包含的决策会影响之后构建的一切。一个薄弱的抽象、不一致的文件夹结构、不清晰的测试策略——其中任何一个都可能被自主 Agent 重复数百次。我见过这种情况,并不好看。

因此,这个阶段保持快速且由 AI 辅助,但需要监督。

目的不是尽早最大化自主性,而是让项目足够稳定、可理解和可预测,以便自主性以后能够安全地在其内部运行。

第三步:人类参与成为项目策略

基础就绪后,我决定交付系统应该拥有多少自主性。

这并不是手动开发与完全自动化之间的二元选择。人类参与可以存在于生命周期的不同节点,正确的配置取决于项目。

一个完全受监督的项目可能要求人类细化任务、批准实施计划、审查拉取请求、批准合并以及授权部署。

一个部分自主的项目可能让 AI 细化并实现,而人类回答未解决的问题、审查重要的拉取请求,或保留最终合并的控制权。

一个高度自主的项目可能让系统自动细化、实现、审查和合并更改,只要所需的护栏、测试和质量检查通过。

Quique Fdez Guerra - inline image

一个需求不稳定的新产品需要比成熟内部工具更多的人类参与。一个受监管的系统需要明确的审批门,这对于一个小实验来说是不必要的。同一个项目可以随着其架构、测试和交付机制的成熟而逐渐变得更加自主。

重要的一点是,自主性是有意定义的。任务细化、问题解答、计划批准、拉取请求审查、合并批准、部署批准——这些不是意外的中断,而是工程系统中可配置的门。

每个项目都选择不同级别的自主性,这些边界随着项目发展而演变。

第四步:创意变成持久的待办事项

交互式控制台仍然是我探索创意的地方。

当一个创意不完整时,我使用 /plan-explore。这不是一个实现命令,而是一个协作探索过程。Agent 检查代码仓库,映射相关组件,识别现有模式,挑战假设,追踪依赖关系,考虑风险,并帮助确定实际应该构建什么。

许多开发问题最初看起来像是编码任务,但实际上是理解问题。将不清晰的创意直接送入自主实现工作流,通常会产出一个不清晰的实现。探索为创意提供了足够的结构,使其变得可操作,而无需过早承诺解决方案。

一旦方向明确,我使用 /ops-backlog 在 GitHub、Azure DevOps 或 Jira 中创建一个结构化的工作项。工作项成为交互式思考与异步执行之间的持久交接点。它可以包含上下文、范围、验收标准、风险、未解决的问题以及工作流下一阶段所需的依赖关系。

Quique Fdez Guerra - inline image

此时,待办事项不再只是一个存储任务的地方。它成为人类、Agent 和循环之间的共享协调层。

人类创建创意、回答问题并做出决策。循环观察问题状态并选择符合条件的工作。Agent 接收带有执行所需上下文的聚焦任务。

待办事项将交互式对话转化为持久的工作,在对话结束后继续存在。

第五步:loop-task 编排异步工作

一旦项目、工程师、护栏、待办事项和审批策略就绪,我在本地机器或 VM 中配置 loop-task。

loop-task 运行外部编排循环。这些循环持续检查待办事项,识别符合条件的工作,调用适当的工程工作流,并更新每个问题的状态。

一个细化循环可以选择一个新问题,调查它,改进其规格,并在信息缺失时添加问题。当需要人类决策时,该问题进入等待状态。相关人员有空时回答,循环在信息出现后恢复。

一旦问题足够清晰,它进入准备实现状态。实现循环接手并调用自主工程工作流。

一个审查循环可以检查拉取请求反馈,协调修正,重新运行必要的工作流,并将更改推向接受。一个完成循环可以合并已接受的工作,关闭相关问题,并允许下一个符合条件的项目进入系统。

Quique Fdez Guerra - inline image

循环之间不需要直接通信。它们通过持久的待办事项状态进行协调。一个典型的问题会经历这样的生命周期:

新建、细化、等待回答、准备实现、实现中、拉取请求、审查中、完成。

人类可以在项目策略要求时介入流程,但系统不依赖于有人持续盯着终端。即使开发者离线,VM 也会继续检查待办事项并推动符合条件的工作前进。

这就是循环工程的核心区别:

Agent 执行工作。循环决定工作何时存在、何时开始、由哪个工作流执行,以及下一步做什么。

第六步:/plan-goal 从头到尾执行一个问题

当实现循环发现一个准备就绪的问题时,它调用 /plan-goal。

这个命令不负责决定产品方向或发明项目架构。这些决策已经做出并编码到代码仓库中。它的职责是在现有工程体系内执行一个足够细化的工作项。

/plan-goal 读取问题,探索代码库的相关部分,创建 OpenSpec 提案,生成结构化任务,识别规格或测试差距,选择适当的专业工程师,分配模型层级,计算依赖关系,并将实现工作组织成并行执行波。

独立且修改代码库不同区域的任务可以同时分配给不同的工程师。依赖于先前工作或触及相同文件的任务按所需顺序执行。

主导 Agent 协调工作,收集每个结果,创建聚焦的提交,运行测试、代码检查、类型检查和构建。当验证无法成功完成时,它停止而不是交付更改。

当实现有效时,分支被推送,并创建带有必要上下文和证据的拉取请求。

Quique Fdez Guerra - inline image

然后,配置的项目策略决定下一步做什么。人类可以审查拉取请求。另一个 AI 系统可以执行审查。一个高度自主的项目可以在每个必需检查通过时自动合并。在其他项目中,最终决定仍然明确由人类做出。

这揭示了系统中的两个编排层。loop-task 是外部编排层。它管理待办事项生命周期,并决定细化、实现、审查或完成何时发生。/plan-goal 和其他 opencode-onboard 命令构成内部工程工作流。它们知道如何探索、计划、分配、实现、验证和交付一个特定的更改。

一个超越对话而存续的系统

基于提示的开发的一个局限性在于,太多状态存在于临时对话中。

架构必须再次解释。之前的决策被遗忘。中断的实现难以恢复。开发者必须始终在场,以决定 Agent 在每一步之后应该做什么。

这个工作流将状态转移到持久系统中。代码仓库包含架构、设计规则、工程师和护栏。OpenSpec 包含计划的更改及其任务。Git 包含实现历史和恢复点。待办事项包含交付状态和人类决策。本地机器或 VM 提供循环继续运行的持久环境。

结果不是一个试图表现得像整个软件组织的单一自主 Agent,而是一个协调的系统,其中不同组件具有不同职责。

人类定义方向、约束和责任边界。专业 Agent 执行聚焦的工程工作。循环异步协调生命周期。待办事项将它们连接起来。

最重要的变化不是 Agent 可以生成更多代码,而是从孤立的 AI 交互转向持久的工程系统。

不再需要在每个任务之前解释代码仓库,项目自带架构和护栏。不再要求通用 Agent 实现一切,工作分配给专家。不再手动决定每一步之后该做什么,循环对持久的工作流状态做出反应。不再将整个流程保留在对话中,进展存在于问题、规格、提交、拉取请求和本地状态中。

人类的角色并没有消失,而是转向设计允许自主执行的环境。

这就是我目前正在构建的模型:一个人类设计的 AI 软件开发生命周期,其中开发者首先建立工程环境和自主边界,然后异步循环通过待办事项驱动的交付生命周期来协调专业 Agent。

从零到循环自主运行。六个步骤,每一步都建立在前一步的基础上,每一步都将更多状态从对话中移出,进入不会遗忘的系统。

附注:你可以在 ckgrafico.com 找到 loop-task、opencode-onboard 以及其余这些工具。

一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章