Agent X-Ray
RuntimeNotesAbout
Notes/产品经理/AI native 软件工程教程/第5章

如何快速构建一个初始化项目?

13 分钟 · 更新于 2026-09-01

如何快速构建一个初始化项目?

初始化项目的目标,不是一次性生成所有功能,而是在较短时间内建立一套能够运行、边界清晰、可以验证、便于继续迭代的工程基础。

使用 Coding Agent 可以显著提高搭建速度,但前提是先明确输入、范围、约束和验收方式。一个稳定的初始化流程可以组织为:

  1. 准备输入材料;
  2. 澄清关键问题;
  3. 编写开发规格;
  4. 切分最小垂直切片;
  5. 让 Agent 按循环实施;
  6. 设置自动化质量门禁;
  7. 进行人工验收;
  8. 对照完成定义收尾。

本文使用一个中性案例贯穿说明:团队准备开发一个“会议行动项管理工具”,用户可以创建会议、登记行动项、指定负责人,并查看行动项状态。初始化阶段只实现一条可运行的主流程,不追求完整的协作能力和精细界面。

一、输入材料

Agent 的实现质量首先取决于输入质量。开始编码前,应把零散想法整理为一份“项目输入包”。它不必十分正式,但必须覆盖目标、边界、约束和已有资产。

1.1 业务输入

至少说明以下内容:

  • 目标用户:谁会使用这个项目;
  • 核心问题:当前最需要解决什么问题;
  • 核心场景:用户在什么情况下使用;
  • 最短主流程:用户如何从进入系统走到获得结果;
  • 初始化范围:当前必须具备哪些能力;
  • 非目标:当前明确不处理哪些能力。

案例输入可以写成:

这是一个供小型团队使用的会议行动项管理工具。初始化版本需要支持创建会议、在会议下新增行动项、填写负责人和截止日期,以及修改行动项状态。暂不实现消息通知、复杂权限、第三方登录、统计报表和移动端适配。

1.2 技术输入

需要写清已经确定的技术决策,以及仍可由 Agent 提出建议的部分:

  • 运行环境和主要技术栈;
  • 数据存储方式;
  • 依赖管理和构建工具;
  • 目录组织原则;
  • 模块间调用边界;
  • 测试框架与最低测试要求;
  • 配置和环境变量管理方式;
  • 本地启动方式;
  • 安全、合规或部署限制。

不要把偏好写成模糊描述。例如,与其写“使用现代前端技术”,不如写“使用团队现有技术栈,不新增同类状态管理库;页面层不得直接访问数据库”。

1.3 已有资产

如果项目不是完全从空目录开始,还应列出:

  • 已有仓库和分支状态;
  • 现有设计稿、接口定义或数据字典;
  • 可复用组件、脚手架和团队模板;
  • 代码规范和提交规范;
  • 已知历史问题;
  • 禁止修改的目录或文件。

1.4 输入材料检查清单

  • 一句话能够说明项目要解决的问题
  • 已明确主要用户和核心使用场景
  • 已写出初始化版本的主流程
  • 已区分“必须做”“可以做”“暂不做”
  • 已记录技术栈、运行环境和依赖约束
  • 已说明目录结构或模块边界要求
  • 已列出已有资产和禁止修改项
  • 已避免在输入中放入真实密钥、个人数据或生产凭据

二、澄清问题

准备好输入后,不要立即要求 Agent 编码。先让它复述理解、识别矛盾,并提出会影响实施的问题。

澄清阶段的重点不是让 Agent 替人做决定,而是暴露尚未做出的决定。

2.1 按优先级提问

澄清问题可以分为三类。

阻塞类问题

不回答就无法安全开始实施,例如:

  • 初始化版本是否需要登录;
  • 谁可以修改行动项;
  • 状态有哪些取值;
  • 删除采用物理删除还是逻辑删除;
  • 项目必须支持哪些运行环境。

设计类问题

答案会影响目录、接口或数据模型,例如:

  • 会议与行动项是一对多还是允许跨会议复用;
  • 负责人是自由文本还是系统用户;
  • 截止日期是否允许为空;
  • 页面层通过服务层还是直接调用数据访问层。

延后类问题

当前无需解决,但应记录为后续事项,例如:

  • 是否接入企业通讯工具;
  • 是否提供统计看板;
  • 是否支持多组织隔离;
  • 是否需要操作审计。

2.2 要求 Agent 输出理解摘要

可以要求 Agent 按固定结构回答:

  1. 项目目标;
  2. 初始化版本包含的能力;
  3. 明确排除的能力;
  4. 已确认的技术决策;
  5. 发现的冲突或歧义;
  6. 必须由人确认的问题;
  7. 可采用默认值的问题及其默认建议。

人需要逐项确认,特别注意 Agent 是否擅自扩大范围、引入新技术或把建议描述成既定事实。

2.3 澄清完成检查清单

  • 所有阻塞类问题都有明确答案
  • 数据模型中的核心实体和关系已确认
  • 主流程中的角色、动作和结果已确认
  • 异常情况至少有基础处理约定
  • 模块职责与依赖方向已确认
  • 未决事项被记录,但不会阻塞当前切片
  • Agent 的理解摘要经过人工修正

三、开发规格

澄清完成后,应把对话结论沉淀为一份独立开发规格。它必须脱离对话也能被理解,避免 Agent 在后续压缩上下文或重新启动会话后丢失关键约束。

3.1 推荐结构

一份适合初始化项目的开发规格可以包括:

  1. 背景与目标:为什么要做、解决什么问题;
  2. 用户与场景:谁在什么情况下使用;
  3. 范围:本次包含、暂缓和禁止实现的内容;
  4. 核心流程:从用户操作到系统结果的完整路径;
  5. 功能规则:字段、状态、校验、权限和异常处理;
  6. 技术约束:技术栈、目录结构、依赖方向和配置方式;
  7. 数据设计:实体、关键字段、关系和迁移要求;
  8. 接口约定:输入、输出、错误结构和调用边界;
  9. 实施顺序:先后依赖与阶段目标;
  10. 验收标准:可观察、可操作、可判断的完成条件;
  11. 非目标与后续事项:防止范围失控。

3.2 把要求写成可验证条目

模糊要求:

页面需要易用,代码结构要合理。

可验证要求:

用户在会议详情页填写标题、负责人和截止日期后,可以创建行动项;标题为空时页面显示校验提示且不写入数据库。页面只能调用行动项服务,不得直接调用数据访问模块。

后一种写法同时定义了操作入口、输入、成功结果、失败结果和架构边界,更适合 Agent 实施与验收。

3.3 规格检查清单

  • 文档不依赖历史对话也能理解
  • 每项需求都有明确范围
  • 核心规则没有使用“适当”“完善”“合理”等不可验证表述
  • 技术决策与业务规则分开记录
  • 每个主要功能都有成功与失败条件
  • 验收标准能够通过操作、测试或检查代码来判断
  • 非目标单独列出
  • 未确认内容没有被伪装成确定结论

四、切分最小垂直切片

初始化项目不宜按照“先建所有表、再写所有接口、最后统一做页面”的水平方式推进。更稳妥的方法是切出一个最小垂直切片,让用户操作能够穿过界面、业务逻辑和数据存储,形成端到端闭环。

4.1 什么是最小垂直切片

最小垂直切片应同时满足:

  • 对用户产生一个可观察结果;
  • 覆盖必要的界面或调用入口;
  • 经过业务规则处理;
  • 能够读写真实的数据存储或约定的替代实现;
  • 包含基础错误处理;
  • 可以被自动化测试和人工操作验证。

案例中的第一个切片可以定义为:

用户进入某个会议详情页,填写行动项标题和负责人后提交;系统校验标题非空,将行动项保存到数据库,并在当前页面显示新记录。保存失败时显示明确错误,页面不展示虚假成功状态。

这个切片虽然很小,但已经贯通页面、校验、服务、数据访问、数据库迁移和反馈机制,能够较早暴露技术栈集成问题。

4.2 推荐切分顺序

  1. 切片 0:工程可运行
    • 安装依赖;
    • 加载本地配置;
    • 启动应用;
    • 提供健康检查或基础页面。
  2. 切片 1:最小写入闭环
    • 创建一条核心业务数据;
    • 完成校验、持久化和结果展示。
  3. 切片 2:最小读取闭环
    • 查询并展示已创建的数据;
    • 处理空状态和读取失败。
  4. 切片 3:关键状态变化
    • 修改行动项状态;
    • 校验允许的状态转换。
  5. 切片 4:基础工程补强
    • 增加必要测试;
    • 补充日志、错误处理和项目说明。

4.3 切片检查清单

  • 每个切片都能独立演示一个结果
  • 单个切片的范围足够小,可以在短周期内完成
  • 切片包含必要的自动化验证
  • 切片之间的依赖顺序清晰
  • 第一个业务切片贯通真实主流程
  • 暂不需要的通用能力没有提前建设
  • 每个切片都有明确停止条件

五、Agent 实施循环

开发规格和切片顺序确定后,再让 Coding Agent 开始实施。每一轮只处理一个边界明确的任务,并要求它用实际检查结果证明完成情况。

5.1 单轮实施流程

每轮可以按照以下顺序执行:

  1. 读取上下文:阅读开发规格、相关代码和项目约束;
  2. 确认现状:检查目录、依赖、已有实现和测试;
  3. 提出计划:说明本轮修改范围、文件和验证方式;
  4. 实施最小改动:只完成当前切片,不顺带扩展功能;
  5. 运行验证:执行格式、静态检查、测试、构建或启动检查;
  6. 根据结果修正:优先解决根因,不通过删除测试绕过问题;
  7. 总结证据:列出改动、验证结果、剩余风险和下一步建议;
  8. 等待进入下一轮:达到停止条件后再继续。

5.2 给 Agent 的任务模板

text
目标:完成“创建行动项”的最小垂直切片。

开始前:
1. 阅读开发规格和仓库约束。
2. 检查现有代码,不假设目录或依赖尚未存在。
3. 给出本轮最小实施计划。

范围:
- 创建必要的数据结构和迁移。
- 实现行动项创建服务。
- 提供页面输入与提交入口。
- 成功后展示新行动项。
- 标题为空或保存失败时给出明确反馈。

禁止:
- 不实现通知、统计、复杂权限。
- 不新增未经确认的框架。
- 不绕过业务服务直接访问数据层。
- 不修改与本切片无关的代码。

验证:
- 运行项目约定的格式检查、静态检查、测试和构建。
- 补充本切片必要的自动化测试。
- 汇报实际命令和结果,不以“理论上可运行”代替验证。

停止条件:
- 本切片验收标准全部满足;或
- 遇到需要产品、架构或权限决策的阻塞问题。

5.3 何时必须暂停并询问

Agent 遇到以下情况时,不应自行猜测:

  • 两项需求互相冲突;
  • 需要改变已经确认的技术栈;
  • 需要执行删除数据、覆盖配置等高风险操作;
  • 需要真实密钥、生产权限或外部系统凭据;
  • 现有代码与开发规格明显不一致;
  • 自动化检查失败且修复会扩大任务范围;
  • 发现安全或数据完整性风险。

六、质量门禁

质量门禁是进入下一切片前必须通过的检查。它应尽可能自动化,并在项目初始化时就建立,而不是等功能增多后再补。

6.1 基础门禁

根据技术栈选择对应命令,但至少覆盖:

  • 格式检查:代码风格一致;
  • 静态检查:发现明显错误和不安全写法;
  • 类型检查:避免接口与数据结构不一致;
  • 自动化测试:验证核心业务规则;
  • 数据库迁移检查:迁移可执行且结构符合预期;
  • 生产构建:确认构建链路完整;
  • 启动检查:应用能在干净环境按说明启动;
  • 秘密信息检查:仓库不包含真实凭据。

6.2 分层门禁

可以把门禁分成三个层级:

提交前

  • 格式检查通过;
  • 静态检查通过;
  • 类型检查通过;
  • 当前模块测试通过。

合并前

  • 全量测试通过;
  • 生产构建通过;
  • 数据库迁移经过验证;
  • 关键主流程测试通过。

可交付前

  • 新环境能够按说明完成安装和启动;
  • 示例配置完整;
  • 人工验收通过;
  • 文档与实际实现一致;
  • 已知限制被明确记录。

6.3 门禁原则

  • 失败必须阻止进入下一阶段;
  • 不以跳过测试、降低规则或删除检查来制造通过结果;
  • 不接受“没有运行,但代码看起来没问题”;
  • 对无法自动验证的内容,明确转入人工验收;
  • 每次修复后重新运行受影响的检查,而不是沿用旧结果。

七、人工验收

自动化检查可以证明代码满足一部分规则,但不能替代真实使用和架构判断。人工验收应按照固定脚本执行,并记录实际结果。

7.1 环境验收

在尽可能接近新开发者环境的条件下检查:

  • 按项目说明可以安装依赖
  • 示例环境变量足够启动项目
  • 不需要未记录的本地文件或全局配置
  • 数据库能够创建并执行迁移
  • 应用启动后没有明显错误日志

7.2 主流程验收

以案例为例:

  • 可以进入会议详情页
  • 可以填写标题和负责人并创建行动项
  • 创建成功后能够看到新行动项
  • 刷新页面后数据仍然存在
  • 标题为空时不能创建,并显示可理解的提示
  • 保存失败时不显示成功结果
  • 可以按规格修改行动项状态
  • 空列表、加载中和失败状态都有合理反馈

7.3 架构验收

  • 实际目录结构符合开发规格
  • 页面、业务服务和数据访问层职责清晰
  • 没有绕过约定边界的快捷实现
  • 没有为未来需求提前建立复杂抽象
  • 新增依赖都有明确用途
  • 配置、常量和业务规则没有无序散落

7.4 文档验收

  • 项目目标和当前范围描述准确
  • 安装、配置、迁移、测试和启动步骤可执行
  • 开发规格与代码保持一致
  • 已知限制和后续事项已经记录
  • 文档中没有真实密钥或敏感数据

八、常见失败模式

8.1 输入过少,要求一次生成完整系统

表现:只有一句产品描述,Agent 自动决定用户体系、权限、数据模型和依赖。

后果:实现看似完整,但关键决策与真实需求不一致。

改进:先准备输入材料和非目标,再开始澄清。

8.2 把建议当成已确认决策

表现:Agent 推荐某个框架后立即安装,并据此重构目录。

后果:项目被不必要的技术选择锁定。

改进:要求区分“已确认决策”“默认建议”“待确认问题”。

8.3 按技术层批量建设

表现:先创建大量表、接口、组件和工具类,但没有任何可操作的闭环。

后果:集成问题发现得晚,难以判断实际进度。

改进:优先完成贯通界面、业务逻辑和数据存储的最小垂直切片。

8.4 切片过大

表现:一个任务同时包含登录、权限、核心业务、通知和管理后台。

后果:Agent 上下文变长,改动范围失控,失败后难以定位原因。

改进:让每个切片只产生一个主要用户结果,并设置明确停止条件。

8.5 只看 Agent 总结,不看验证证据

表现:Agent 表示“功能已完成”,但没有运行测试、构建或启动检查。

后果:配置错误、类型错误和运行时问题留到人工使用时才暴露。

改进:要求报告实际执行的检查及结果,失败项必须如实保留。

8.6 为通过门禁而削弱门禁

表现:删除失败测试、关闭类型检查、忽略警告或扩大例外规则。

后果:检查显示通过,但项目质量并未提高。

改进:修复根因;确需调整规则时,先说明影响并由人确认。

8.7 过早抽象和过度设计

表现:初始化阶段就建设插件系统、复杂事件总线、通用权限平台或多租户框架。

后果:增加理解和维护成本,却没有验证真实需求。

改进:只为当前切片建立必要结构,为已知变化保留清晰边界即可。

8.8 忽略人工走查

表现:自动化测试通过后直接宣布交付。

后果:操作流程、提示文案、空状态和文档问题被遗漏。

改进:按照固定验收脚本从用户视角完整操作一次,并检查工程结构。

8.9 代码与规格逐渐分离

表现:实施中改变了字段、状态或目录,但没有同步文档。

后果:后续 Agent 和开发者依据过期信息继续工作。

改进:把文档一致性纳入每个切片的完成条件。

九、初始化完成定义

“项目已经初始化”不应以创建了多少文件来判断,而应以是否形成可运行、可验证、可继续开发的基础来判断。

9.1 必须满足的完成条件

产品范围

  • 项目目标、用户和当前范围已经明确
  • 初始化版本的非目标已经记录
  • 至少一条核心用户流程能够端到端运行
  • 核心业务规则与异常结果可以被验证

工程结构

  • 目录结构和模块职责清晰
  • 依赖方向符合开发规格
  • 配置与代码分离
  • 不包含真实密钥、生产凭据或个人数据
  • 数据库结构和迁移可重复执行

质量保障

  • 格式检查、静态检查和类型检查通过
  • 核心规则有必要的自动化测试
  • 全量测试通过
  • 生产构建通过
  • 应用可以按文档启动

可交接性

  • 新开发者只阅读项目文档即可完成本地启动
  • 开发规格与实际实现一致
  • 已知限制、风险和后续事项已记录
  • 人工验收脚本已经执行并通过
  • 下一最小垂直切片已经明确

9.2 不属于初始化完成的强制条件

除非项目范围明确要求,否则以下内容通常不应阻塞初始化完成:

  • 所有规划功能全部实现;
  • 所有页面达到最终视觉效果;
  • 完整生产部署体系;
  • 面向大规模流量的提前优化;
  • 尚未被真实场景验证的通用平台能力;
  • 为不确定未来需求设计的复杂扩展机制。

核心判断 一个初始化项目真正完成时,团队已经拥有一条可运行的业务闭环、一套可重复执行的质量检查、一份与实现一致的开发规格,以及一个清晰的下一步切片。Agent 负责提高实施速度,人负责确认目标、边界、风险和最终结果。


  • 构建一个新系统的设计和思考
  • AI native 软件工程师课程目录

本章目录
一、输入材料二、澄清问题三、开发规格四、切分最小垂直切片五、Agent 实施循环六、质量门禁七、人工验收八、常见失败模式九、初始化完成定义Related Documents
苏ICP备2025204887号-2