用于长期运行 Agent 的高效框架 • Anthropic
本文由 Anthropic 工程师 Justin Young 撰写:Effective harnesses for long-running agents。本文探讨了随着 AI Agent能力增强,在处理跨越数小时或数天的复杂任务(如软件工程)时面临的核心挑战:如何在多个有限的上下文窗口(context windows)之间保持工作的连贯性。作者指出,仅靠上下文压缩不足以解决问题,Agent 容易出现试图一次性完成任务(one-shotting)或过早宣布任务完成的失败模式。 为了解决上述问题,作者提出了一套基于 Claude Agent SDK 的双重解决方案: 初始化Agent (Initializer agent):负责在首次运行时设置环境和规划任务。 编码Agent (Coding agent):负责在后续会话中进行增量开发,并为下一次会话留下清晰的记录。 这一方案通过结构化的环境设置、详细的功能列表和严格的增量工作流,确保Agent 能够像人类工程师轮班一样,在没有先前记忆的情况下高效接手工作。 关键细节 核心挑战与失败模式 上下文限制:Agent 在离散的会话中工作,新会话开始时没有之前的记忆。 常见错误:在使用 Opus 4.5 等前沿模型时,若仅给出高层级提示,Agent 倾向于试图一次性构建整个应用,导致上下文耗尽、功能半途而废且缺乏文档;或者在仅完成部分功能后误判项目已完成。 解决方案的具体实施 环境初始化:Initializer agent 会创建关键的基础设施,包括: init.sh 脚本:用于启动开发环境。 claude-progress.txt 文件:记录Agent 的操作日志。 初始的 git 提交:建立版本控制基础。 功能列表(Feature List):创建一个包含详细需求的 JSON 文件(例如 claude.ai 克隆项目包含 200 多个功能点)。选择 JSON 而非 Markdown 是为了防止模型意外覆盖文件结构。 增量工作流与状态管理 快速上手(Getting up to speed):Coding agent 在每个会话开始时执行标准化步骤: 运行 pwd 确认工作目录。 读取 git 日志和进度文件以了解最近的工作。 读取功能列表,选择优先级最高且未完成的功能。 运行 init....