Initializer-Maintainer Dual Agent Architecture

Nikola Balic (@nibzard)· emerging

问题

长期运行的Agent项目在生命周期的不同阶段会面临独特的失效模式:

  • 项目初始化阶段需要完成全面的搭建工作:环境配置、功能定义、测试基础设施以及进度跟踪系统
  • 增量开发阶段需要读取历史context、选择下一项任务、实现功能并进行验证——该流程会在多个会话中重复执行
  • 单Agent方案要么对每个会话过度设计(浪费搭建时间),要么在基础架构上投入不足(导致项目偏差与混乱)
  • 会话边界会引发context丢失,导致Agent不得不从零开始重启,或是无法追踪项目状态

方案

实现一种职责按生命周期划分的双Agent架构:

1. 初始化器Agent(仅在项目启动时运行一次):

  • 生成包含全部需求的完整功能清单
  • 创建进度追踪工件(例如progress.txt
  • 配置环境引导脚本(例如init.sh
  • 配置测试基础设施
  • 提交包含项目基础结构的首次git提交

2. 维护/编码Agent(在后续每次会话中运行):

  • 执行会话引导流程:
    1. 验证工作目录(pwd
    2. 读取git日志与进度文件
    3. 读取功能清单并选择下一个未完成的功能
    4. 运行引导脚本启动服务
    5. 在实现新功能前运行已有测试
  • 每次仅开发一项功能
  • 每项功能验证通过后提交代码
  • 更新进度追踪工件
sequenceDiagram
    participant Init as 初始化器Agent
    participant FS as 文件系统
    participant Coding as 编码Agent
    participant Git as Git仓库

    Note over Init: 仅在项目启动时运行一次
    Init->>FS: 创建feature-list.json(含200+项功能,全部标记为"passes: false")
    Init->>FS: 创建init.sh(环境引导脚本)
    Init->>FS: 创建progress.txt(空日志文件)
    Init->>Git: 提交包含基础结构的初始版本

    Note over Coding: 在后续每一次会话中运行
    loop 第N次会话
        Coding->>Git: 读取git日志以获取context
        Coding->>FS: 读取progress.txt
        Coding->>FS: 读取feature-list.json
        Coding->>Coding: 选择优先级最高的未完成功能
        Coding->>FS: 运行init.sh(启动服务端)
        Coding->>Coding: 运行端到端(E2E)测试(验证基线状态)
        Coding->>Coding: 实现单个功能
        Coding->>Coding: 验证功能测试通过
        Coding->>FS: 更新progress.txt
        Coding->>Git: 提交代码变更
    end

如何使用

最适用于:

  • 需要多轮会话完成的项目(Agent需工作数天/数周)
  • 包含50个以上独立功能的复杂应用
  • 会话间丢失context会造成重大损失的场景
  • 将Agent用于持续开发而非一次性任务的团队

实现步骤

  1. 设计Initializer prompt:聚焦全面的前置规划

    • 包含详细验收标准的功能列表
    • 环境搭建自动化
    • 进度跟踪文件结构
  2. 设计Coding Agent prompt:聚焦增量式推进

    • 会话启动流程(优先读取context)
    • 单次聚焦单一功能
    • 标记功能完成前必须执行测试
    • 提交规范
  3. 定义交接工件

project/
├── feature-list.json    # 所有功能及其通过/未通过状态
├── progress.txt         # 决策与工作的实时运行日志
├── init.sh              # 一键启动环境的脚本
└── .git/                # 以描述性提交记录作为context

权衡

优点:

  • 设置与执行环节的职责划分清晰
  • 会话引导启动机制可避免context丢失
  • 复刻了高效的人类团队协作实践(如轮班交接)
  • 初始化器可为所有后续会话打造一致的基础
  • Git历史记录与进度文件可为新会话提供丰富的context

缺点:

  • 需要预先投入精力制定全面的功能规格说明
  • 需维护两种不同的prompt/配置
  • 初始化器必须预判Coding Agent的需求
  • 不适用于探索性或研究导向型项目
  • 对于小型单会话任务而言,其流程开销属于冗余浪费

参考文献

关键词

围绕长期运行智能体的高效管控机制展开核心内容,关联基于文件系统的智能体状态存储、智能体状态主动外化两类技术方向的相关文档。

来源摘要

正在获取来源并生成中文摘要…

来源: https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents

← 返回社区