当我们让 AI 代理修复一个 Bug 时,模型的输出往往像开盲盒 —— 它可能跳过计划阶段、忘记运行测试、或者忽视你精心设计的 PR 模板。每一次运行的结果都不尽相同,这种不可预测性严重阻碍了 AI 编码在生产环境中的规模化应用。Archon 作为首个开源的 AI 编码 harness builder,正在尝试解决这一根本性问题:它将 AI 编码过程从「随机的艺术」转变为「确定性的工程」。

从随机性到确定性:Harness 的本质

传统的 AI 编码交互本质上是一个非结构化的对话过程。用户发送一个指令,AI 响应一个结果,期间没有任何机制确保执行步骤的完整性。这就像让一名实习生独自完成项目,却不给他任何流程规范 —— 结果完全取决于个人状态和临场发挥。Harness 的核心思路来源于软件测试领域:在受控环境中执行预定义的步骤序列,并验证输出是否符合预期。Archon 将这一思想移植到 AI 编码场景,用 YAML 格式定义完整的工作流生命周期。

具体而言,一个典型的 Archon 工作流包含以下阶段:规划(Plan)阶段让 AI 探索代码库并制定实现方案;实施(Implement)阶段在循环中执行代码编写直到任务完成;验证(Validate)阶段运行确定性测试确保代码正确性;审查(Review)阶段由 AI 进行代码评审并修复问题;最后是审批(Approve)阶段等待人工确认后创建 Pull Request。每个阶段之间的依赖关系通过 depends_on 字段明确声明,形成一个有向无环图(DAG),确保工作流按预期顺序执行。

这种设计的核心价值在于将「流程控制」与「智能决策」分离。确定性节点(如 bash 脚本、测试执行、git 操作)保证基础环节的可重复性,而 AI 节点(规划、代码生成、评审)则负责需要理解的创造性工作。AI 不再是自由发挥的执行者,而是被框定在明确流程中的专业角色。

隔离执行与并行化:工程落地的关键技术

AI 编码工作流的一个工程难点在于状态污染。当多个任务同时运行时,它们可能修改相同的文件、创建冲突的分支,导致不可预期的错误。Archon 采用了 Git Worktree 机制来解决这一问题:每次工作流运行都会在独立的文件系统路径中创建分支,实现了任务级别的隔离。这意味着你可以在同一仓库中并行启动五个不同的修复任务,它们各自拥有独立的代码视图,互不干扰。

并行化的另一个体现在于多代理审查机制。Archon 预置的工作流 archon-comprehensive-pr-review 可以同时启动五个独立的评审代理,分别从代码风格、安全性、性能、可读性等不同角度进行审查,最后合成统一的反馈报告。这种并行化不仅提高了效率,更重要的是确保评审维度的全面性 —— 单个代理可能遗漏的视角,在多代理协同下得到弥补。

对于持续集成场景,隔离性同样关键。每个工作流运行都拥有独立的 SQLite 或 PostgreSQL 会话,记录完整的执行轨迹。这些持久化数据支持事后分析:你可以通过 Dashboard 查看任意历史工作流的详细步骤、重试次数、失败原因,从而建立可追溯的评估体系。当模型更新或工作流调整后,你可以对比历史数据量化改进效果。

可移植工作流:团队协作与标准化

Archon 的另一个核心理念是「一次定义,随处运行」。工作流以 YAML 文件形式存放在仓库的 .archon/workflows/ 目录下,与代码一起版本化管理。团队成员克隆仓库后,可以直接使用相同的工作流定义,确保每个人执行的是同一个标准化流程。这种设计类似于 Dockerfile 之于基础设施或 GitHub Actions 之于 CI/CD—— 将流程本身变成可复制的原子单元。

工作流的组合性进一步增强了灵活性。Archon 提供了十七个开箱即用的默认工作流,覆盖了从修复 GitHub Issue 到生成视频合成、从代码审查到架构重构的常见场景。用户不需要从零开始编写工作流,而是基于现有模板进行裁剪和定制。例如,你可以复制 archon-idea-to-pr 工作流,移除其中的多代理审查步骤,或者在实施阶段之前插入额外的安全扫描节点。

平台无关性也是可移植性的重要维度。Archon 的工作流定义与执行平台解耦 —— 你可以通过 CLI 本地运行、通过 Web UI 可视化监控、通过 Slack 或 Telegram 触发、也可以通过 GitHub Webhooks 响应 Issue 事件。这种多通道接入能力使得 AI 编码工作流可以融入现有的开发协作体系,而不是另起炉灶。

工程实践参数与落地建议

对于希望在项目中引入 Archon 的团队,以下是经过验证的关键参数和监控要点。

首先是工作流设计原则。每个阶段的 prompt 字段应当描述清晰的任务边界,避免让 AI 自行推断下一步做什么。例如,在实施阶段的 prompt 中明确「读取计划文件,实现下一个任务,运行验证脚本」,而不是笼统地说「完成这个功能」。对于需要迭代的任务,使用 loop 配合 until 条件(ALL_TASKS_COMPLETEAPPROVED 或自定义状态)来实现自动重试。

其次是隔离与资源管理。并行运行的工作流数量建议控制在 CPU 核心数的 50% 以下,避免资源竞争。对于长时间运行的工作流,可以配置 interactive: true 在关键节点暂停,等待人工确认后再继续。这种设计在生产环境中尤为重要 —— 它允许人类在不可逆操作(如推送代码、合并 PR)之前进行最终审核。

第三是监控与可观测性。Archon 的 Dashboard 提供了实时的工作流状态展示,建议重点关注以下指标:每个阶段的平均执行时间(用于发现瓶颈)、重试次数分布(用于评估 AI 节点的稳定性)、以及失败率趋势(用于判断模型或工作流配置的退化)。将这些指标接入团队的监控系统,可以实现主动告警而不是被动响应。

最后是回滚策略。由于每个工作流运行都在独立的 Git 分支上,失败的工作流不会污染主分支。建议配置自动清理机制:在工作流完成后一定时间内,如果分支未被合并则自动删除,避免仓库中堆积大量孤立的特征分支。同时,保留失败工作流的完整日志和上下文,以便后续分析和调试。

资料来源

本文核心信息来源于 Archon 官方 GitHub 仓库(https://github.com/coleam00/Archon)及其文档站点(https://archon.diy/)。