jixiaxue 知识库
blog / anthropic-blog · 2025-11-26-effective-harnesses-for-long-running-agents

为长时运行的 Agent 设计有效的 Harness

2 个章节 · 0 条产出 · 1 条证据
2025-11-26

为长时运行的 Agent 设计有效的 Harness

来源: Anthropic Engineering | 作者: Justin Young | 日期: 2025-11-26 原文链接: https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents

一句话总结

当任务需要跨越多个上下文窗口时,仅靠 compaction 不足以让 agent 稳定推进;需要用”初始化 agent + 编码 agent”的两段式 harness,把长程任务显式拆解为可跨会话接力的增量工程。

速览

  1. 光有 compaction 不够——即使是 Opus 4.5 跑在 Claude Agent SDK 上循环执行,仅靠一句”做个 claude.ai 克隆”也做不出产品级 Web App
  2. 两种典型失败模式——要么想一把梭,导致功能半途而废;要么后期环视代码库看到”做过事”,就宣布完工
  3. 两段式 harness——首个会话用”初始化 agent”搭环境;后续会话用”编码 agent”做增量推进
  4. 三件交接物——init.sh 启动脚本、claude-progress.txt 进度文件、初始 git commit,构成跨会话的”工作记忆”
  5. 功能清单用 JSON 存——200+ 条端到端功能全部初始标记为 failing,JSON 相比 Markdown 更不容易被模型乱改
  6. 强指令防止改测试——用”删除或修改测试是不可接受的”这种措辞,阻止 agent 通过改测试来”通关”
  7. 每次只做一个功能——增量式推进是破解”一把梭”倾向的关键
  8. git commit + progress 文件双轨——既能记录状态,又能让 agent 用 git 回滚到可工作的版本
  9. 测试必须端到端——必须明确要求用浏览器自动化(如 Puppeteer MCP)像真人一样验证,单跑 curl 或单测不够
  10. 开场三步仪式——每次会话先跑 pwd、读 progress/git、读 feature list 选任务,是让 agent”进入状态”的标准动作

核心内容

问题的本质:跨会话的”轮班交接”难题

长时运行 agent 要像”轮班工程师”一样工作——每个新 agent 上任时对上一班一无所知。上下文窗口有限,复杂项目装不进一个窗口,就必须有一套机制在会话之间传递状态。

compaction 的不足:Claude Agent SDK 自带 compaction 能让单次会话跑更久,理论上可以无限接力。但实际上,就算是 Opus 4.5 跑在其上循环,只给”做个 claude.ai 克隆”这种高层 prompt,也做不到产品级。原因是 compaction 不能总把清晰的指令传给下一个 agent。

两种失败模式

  • 一把梭失败:agent 想一次做完整个应用,上下文耗尽时功能半途而废且无文档,下一个 agent 只能靠猜还原
  • 过早宣告完工:后期 agent 环视代码库,看到”做了不少事”,就宣布任务完成

问题可分解为两部分——初始环境必须为所有功能奠定基础(让 agent 能逐个功能推进),以及每次会话结束时环境要”干净”(可合并到 main 那种:无重大 bug、有文档、下一人能直接开始)。

两段式 harness 架构

核心设计:初始化 agent(Initializer)+ 编码 agent(Coding),两者的系统 prompt、工具集、harness 完全相同,差别仅在于初始用户 prompt 不同。

  • 初始化 agent:首个会话专用。职责是搭好 init.shclaude-progress.txt、写初始 git commit
  • 编码 agent:后续每个会话。职责是做增量进展,并留下结构化更新

关键洞察:要让 agent 从空白上下文快速理解当前状态——claude-progress.txt + git 历史就是解药。这些做法的灵感来自观察高效软件工程师的日常工作方式。

环境管理:功能清单、增量推进、测试

功能清单(Feature list)

初始化 agent 会基于用户初始 prompt 写一份详尽的功能需求文件。claude.ai 克隆案例里列了 200+ 条功能,每条带有分类、描述、步骤、passes 字段。所有功能初始标记为 failing,让后续 agent 看到”完整功能长什么样”。

具体格式示例:

{
    "category": "functional",
    "description": "New chat button creates a fresh conversation",
    "steps": [
      "Navigate to main interface",
      "Click the 'New Chat' button",
      "Verify a new conversation is created",
      "Check that chat area shows welcome state",
      "Verify conversation appears in sidebar"
    ],
    "passes": false
}

两条关键约束

  • 编码 agent 只能改 passes 字段,不能增删其他内容
  • 用强措辞 prompt:“删除或修改测试是不可接受的,因为这可能导致功能缺失或出 bug”

格式选型:最终选定 JSON 而不是 Markdown——模型对 JSON 更谨慎,不容易不恰当地覆盖或改写。

增量式推进(Incremental progress)

每次只做一个功能。这是破解”一把梭”的核心。

干净状态的要求:修改代码后,环境要留在”可合并到 main”的状态。做法:

  • 提交到 git,commit message 要有描述性
  • 在 progress 文件里写阶段性总结
  • 这样模型能用 git 回滚坏改动、恢复可工作版本

副作用:效率也提升了——agent 不再需要花时间猜”刚才发生了什么”或把基础应用重新跑通。

测试(Testing)

最后一个失败模式:Claude 倾向于在没有端到端测试的情况下就把功能标为完成。它会写单测、会用 curl 打本地服务器,但意识不到”功能没有真正端到端工作”。

解法:明确要求使用浏览器自动化工具,像真人一样测。在 Web App 场景下,这一要求让 Claude 表现大幅提升,能识别并修复单看代码发现不了的 bug。

当前限制

  • Claude 的视觉能力有限,浏览器自动化工具本身也有限制,并非所有 bug 都能被发现
  • 具体例子:Claude 通过 Puppeteer MCP 看不到浏览器原生 alert 弹窗,依赖 alert 的功能往往更容易出 bug

会话开场的”三步仪式”

每个编码 agent 会话开头都要跑一套朴素但有效的流程:

  1. 运行 pwd 确认工作目录(限定可编辑范围)
  2. 读 git 日志和 progress 文件,获取最近工作状态
  3. 读功能清单,挑一个优先级最高、尚未完成的功能做

额外加一步:让初始化 agent 写一个能启动开发服务器的 init.sh。在实现新功能前先做一次基础端到端测试。

claude.ai 克隆里的实操:每次会话先启动本地开发服务器 → 用 Puppeteer MCP 新建对话、发消息、收回复 → 确认应用没坏 → 有坏就先修、再做新功能。反过来,如果 agent 不做验证直接写新代码,只会让问题雪上加霜。

典型开场消息

[Assistant] I'll start by getting my bearings and understanding the current state of the project.
[Tool Use] <bash - pwd>
[Tool Use] <read - claude-progress.txt>
[Tool Use] <read - feature_list.json>
[Assistant] Let me check the git log to see recent work.
[Tool Use] <bash - git log --oneline -20>
[Assistant] Now let me check if there's an init.sh script to restart the servers.
<Starts the development server>
[Assistant] Excellent! Now let me navigate to the application and verify that some fundamental features are still working.
<Tests basic functionality>
[Assistant] Based on my verification testing, I can see that the fundamental functionality is working well...
<Starts work on a new feature>

失败模式 × 对策总表

问题初始化 Agent 怎么做编码 Agent 怎么做
过早宣布整个项目完工基于输入 spec,生成结构化 JSON 功能清单会话开始读清单,选一个功能开始做
环境里留下 bug 或未记录的进度写初始 git repo + progress notes开场读 progress + git log,跑基础测试抓未记录 bug;结束时写 commit + progress 更新
过早将功能标为 done建功能清单自我验证所有功能,测试通过后才标 passing
搞不清如何启动应用init.sh 启动开发服务器会话开始时读 init.sh

未来方向

单 agent vs 多 agent 架构仍是开放问题。文章推测:像测试 agent、QA agent、代码清理 agent 这样的专用 agent,可能在软件开发生命周期的子任务上表现更好,但尚未定论。

领域泛化。当前 demo 针对全栈 Web App 开发优化。未来方向是推广到科研、金融建模等其他长程 agent 任务——这些经验的一部分或全部很可能可以迁移。

名言金句

  1. “Imagine a software project staffed by engineers working in shifts, where each new engineer arrives with no memory of what happened on the previous shift.”(把长时运行 agent 比作”轮班工程师”——每个新工程师上任都没有上一班的记忆。)
  2. “Compaction isn’t sufficient.”(即使前沿模型 + 循环 + compaction 也解决不了长程任务的状态接力问题。)
  3. “It is unacceptable to remove or edit tests because this could lead to missing or buggy functionality.”(用强措辞阻止 agent 通过改测试”通关”。)
  4. “Inspiration for these practices came from knowing what effective software engineers do every day.”(这些做法的灵感来自观察高效工程师的日常工作方式。)

可行建议(给 Agent 构建者)

  1. 首个会话用不同的 prompt——专门搭环境,不要混在编码流程里
  2. 用 JSON 存功能清单——模型比对 Markdown 更谨慎,不容易乱改
  3. 把所有功能初始标为 failing——让后续 agent 看到完整”目标形态”
  4. 每次只做一个功能——拒绝一把梭
  5. git commit + progress 文件双轨记录——既能让 agent 回滚,又能给下一个 agent 清晰上下文
  6. 提供浏览器自动化测试工具——让 agent 能像真人一样端到端验证
  7. 每次开场跑三步仪式pwd → 读 progress/git → 选功能
  8. init.sh 自动化启动——省下每次摸索启动命令的 token
  9. 在实现新功能前先做基础 e2e 测试——抓未记录的 bug,避免在坏掉的地基上继续盖房子
  10. 用强措辞保护关键约束——比如”不可接受删除测试”

资源清单

transcript

为长时运行的 Agent 设计有效的 Harness

随着 AI agent 能力的增强,开发者越来越多地让它们承担那些需要持续几小时乃至几天的复杂任务。然而,如何让 agent 在多个上下文窗口之间保持稳定的推进,仍然是一个悬而未决的问题。

长时运行 agent 面临的核心挑战是:它必须以离散的会话(session)方式工作,而每个新会话都没有任何此前的记忆。可以想象一个软件项目由多个轮班的工程师接力完成——每个新工程师上任时都对上一班做了什么一无所知。由于上下文窗口有限,而绝大多数复杂项目又无法在一个窗口内完成,agent 需要一种机制来跨越多个编码会话之间的鸿沟。

为了让 Claude Agent SDK 能够在多个上下文窗口中有效工作,我们设计了一个双重方案:一个**初始化 agent(initializer agent)在首次运行时负责搭建环境;一个编码 agent(coding agent)**在每次会话中负责做出增量进展,并为下一次会话留下清晰的交接物。对应的代码示例可在配套的 quickstart 中找到。

长时运行 agent 的问题

Claude Agent SDK 是一个强大的通用 agent harness,擅长编码以及其他需要模型调用工具收集上下文、做计划并执行的任务。它具备诸如 compaction(压缩)这样的上下文管理能力,使得 agent 能在不耗尽上下文窗口的前提下推进任务。理论上,有了这些能力,agent 应该可以持续有效地工作任意长的时间。

然而,仅靠 compaction 并不足够。如果仅仅给出一个高层 prompt——比如”做一个 claude.ai 的克隆”——即使是 Opus 4.5 这样前沿的编码模型,在 Claude Agent SDK 上以循环方式跨多个上下文窗口运行,也难以构建出一个产品级的 Web App,开箱即用的效果并不达标。

Claude 的失败表现出两种模式。首先,agent 倾向于一次做太多事情——本质上是试图”一把梭”地完成整个应用。这往往导致模型在实现到一半时耗尽上下文,下一个会话接手时发现某个功能半途而废且没有任何文档。接手的 agent 只能靠猜测来还原此前发生的事情,并花费大量时间把基础应用重新跑通。即使有 compaction,这种情况仍会发生,因为 compaction 并不总能把清晰的说明完整传递给下一个 agent。

第二种失败模式通常出现在项目进行到后期。当一部分功能已经实现之后,后续的 agent 实例环顾一下代码库,看到”已经做了不少工作”,就会宣布任务完成。

这把问题分解为两部分。第一,我们需要搭建一个初始环境,为给定 prompt 所要求的所有功能奠定基础,从而让 agent 能一步一步、一个功能一个功能地推进。第二,我们应当引导每一个 agent 做出增量进展的同时,在会话结束时把环境留在一个干净的状态。所谓”干净的状态”,指的是那种可以合并到 main 分支的代码:没有重大 bug,代码整洁且有良好文档,总的来说,开发者可以直接开始做下一个新功能,而不必先收拾一堆无关的烂摊子。

在内部实验中,我们用一个两段式方案解决了这些问题:

  1. 初始化 agent(Initializer agent):第一个 agent 会话使用一个专门的 prompt,让模型搭建初始环境——一个 init.sh 脚本、一个用于记录各个 agent 所做工作的 claude-progress.txt 文件,以及一次初始的 git commit 来展示新增了哪些文件。
  2. 编码 agent(Coding agent):之后每一次会话都要求模型做出增量进展,然后留下结构化的更新记录。1

这里的关键洞察是:要找到一种方法,让 agent 在空白的上下文窗口开启时能快速理解当前工作的状态。我们通过 claude-progress.txt 文件加上 git 历史来实现这一点。这些做法的灵感来自于观察高效的软件工程师在日常工作中是怎么做的。

环境管理

在最新的 Claude 4 prompting 指南中,我们分享了针对多上下文窗口工作流的最佳实践,其中包括使用”专为第一个上下文窗口设计的 prompt”的 harness 结构。这个”不一样的 prompt”要求初始化 agent 把未来编码 agent 需要的所有上下文都准备好,环境才能支撑它们有效工作。下面我们深入讲解这种环境中的几个关键组件。

功能清单(Feature list)

为了解决 agent 试图”一把梭”完成整个应用或过早认为项目已完成的问题,我们让初始化 agent 写一份详尽的功能需求文件,在用户最初的 prompt 基础上展开。以 claude.ai 克隆为例,这份文件里列出了超过 200 项功能,例如”用户可以开启一个新对话、输入 query、按回车、然后看到 AI 回复”。这些功能最初全部被标记为”failing(未通过)“,这样后续的编码 agent 就能清楚地看到完整功能长什么样。

{
    "category": "functional",
    "description": "New chat button creates a fresh conversation",
    "steps": [
      "Navigate to main interface",
      "Click the 'New Chat' button",
      "Verify a new conversation is created",
      "Check that chat area shows welcome state",
      "Verify conversation appears in sidebar"
    ],
    "passes": false
  }

我们要求编码 agent 对这份文件的修改仅限于改动 passes 字段的状态,并使用措辞强烈的指令,比如”删除或修改测试是不可接受的,因为这可能导致功能缺失或出 bug”。经过一些实验后,我们最终选定用 JSON 来存这份清单,因为相比 Markdown,模型更不容易不恰当地修改或覆盖 JSON 文件。

增量式推进(Incremental progress)

有了这个初始的环境脚手架之后,我们让后续的编码 agent 每次只处理一个功能。这种增量式的做法对于解决 agent”一次做太多”的倾向至关重要。

在按增量推进的基础上,让模型在修改代码之后把环境留在干净状态仍然非常关键。在实验中我们发现,最能引导出这种行为的方式是:让模型将进度提交到 git 并写上有描述性的 commit message,同时在进度文件(progress file)里写下阶段性总结。这样一来,模型可以利用 git 回滚糟糕的代码改动,并恢复到代码库可工作的状态。

这些做法还提升了效率,因为 agent 不再需要花时间去猜”刚才到底发生了什么”,也不必为了让基础应用重新跑起来而反复折腾。

测试(Testing)

我们观察到的最后一个主要失败模式是:Claude 倾向于在没有完整测试的情况下就把某个功能标记为完成。如果没有明确的 prompt 提醒,Claude 往往会改动代码,甚至用单元测试或对本地开发服务器发 curl 命令来做检查,但却无法意识到该功能并不能端到端地正常工作。

对于构建 Web App 这种场景,只要明确地要求 Claude 使用浏览器自动化工具、像真实用户一样做测试,它在端到端验证功能这件事上基本能做得不错。

 Claude 在测试 claude.ai 克隆应用时通过 Puppeteer MCP server 截取的屏幕截图。

Claude 在测试 claude.ai 克隆应用时通过 Puppeteer MCP server 截取的屏幕截图。

向 Claude 提供这类测试工具后,其表现显著提升,因为 agent 能够识别并修复单看代码无法察觉的 bug。

当然还存在一些问题,比如 Claude 在视觉理解上的局限,以及浏览器自动化工具本身的限制,导致并非所有类型的 bug 都能被发现。举例来说,Claude 通过 Puppeteer MCP 无法看到浏览器原生的 alert 弹窗,因此依赖这类弹窗的功能往往更容易出 bug。

快速进入状态(Getting up to speed)

在以上所有机制到位之后,每个编码 agent 都会被要求先走一遍流程来获取当前状态,步骤虽然朴素但确实有帮助:

  1. 运行 pwd 查看你所在的工作目录。你只能编辑这个目录下的文件。
  2. 阅读 git 日志和 progress 文件,了解最近做了什么。
  3. 阅读功能清单文件,挑一个优先级最高、尚未完成的功能来做。

这种做法每次会话能为 Claude 省下一些 token,因为它不用再自己摸索如何测试代码。另外,让初始化 agent 写一个能启动开发服务器的 init.sh 脚本,再在实现新功能之前做一遍基础的端到端测试,也很有帮助。

在 claude.ai 克隆的案例里,这意味着 agent 每次都会先启动本地开发服务器,然后用 Puppeteer MCP 去新建一个对话、发送一条消息、接收一条回复。这能确保 Claude 快速判断应用是不是被留在坏掉的状态,并立刻修掉已有 bug。反之如果 agent 直接上手开发新功能,只会让问题雪上加霜。

有了这些机制,一个典型会话的开场 assistant 消息会是这样的:

[Assistant] I'll start by getting my bearings and understanding the current state of the project.
[Tool Use] <bash - pwd>
[Tool Use] <read - claude-progress.txt>
[Tool Use] <read - feature_list.json>
[Assistant] Let me check the git log to see recent work.
[Tool Use] <bash - git log --oneline -20>
[Assistant] Now let me check if there's an init.sh script to restart the servers.
<Starts the development server>
[Assistant] Excellent! Now let me navigate to the application and verify that some fundamental features are still working.
<Tests basic functionality>
[Assistant] Based on my verification testing, I can see that the fundamental functionality is working well. The core chat features, theme switching, conversation loading, and error handling are all functioning correctly. Now let me review the tests.json file more comprehensively to understand what needs to be implemented next.
<Starts work on a new feature>

Agent 失败模式与对策

问题初始化 Agent 的行为编码 Agent 的行为
Claude 过早宣布整个项目完工。建立功能清单文件:基于输入的 spec,生成一份结构化 JSON,列出端到端的功能描述。会话开始时阅读功能清单文件,挑一个功能开始做。
Claude 离开时环境里存在 bug 或未记录的进度。先写好初始 git repo 和 progress notes 文件。会话开始时阅读 progress 笔记和 git commit 日志,对开发服务器跑一次基础测试,抓出任何未记录的 bug。会话结束时写一次 git commit 和 progress 更新。
Claude 过早地把功能标记为 done。建立功能清单文件。自我验证所有功能。只有经过认真测试后,才能将功能标为”passing”。
Claude 要花时间搞清楚怎么把应用跑起来。写一个可启动开发服务器的 init.sh会话开始时阅读 init.sh

总结长时运行 AI agent 的四种常见失败模式及其对策。

未来工作

这项研究展示了一种可能的方案,让模型在多个上下文窗口之间持续做出增量进展。但仍有一些开放性问题。

最值得关注的是:尚不清楚在跨上下文场景下,一个通用的编码 agent 是否表现最好,还是说多 agent 架构能带来更好的效果。合理的推测是,像测试 agent、QA agent、代码清理 agent 这样的专用 agent,可能在软件开发生命周期的子任务上做得更好。

此外,这个 demo 是针对全栈 Web App 开发优化的。一个未来方向是把这些发现推广到其他领域。很可能这些经验中的一部分或全部都可以迁移到其他类型的长时运行 agent 任务上,例如科研或金融建模。

致谢

由 Justin Young 撰写。特别感谢 David Hershey、Prithvi Rajasakeran、Jeremy Hadfield、Naia Bouscal、Michael Tingley、Jesse Mu、Jake Eaton、Marius Buleandara、Maggie Vo、Pedram Navid、Nadine Yasser 和 Alex Notov 的贡献。

这项工作反映了 Anthropic 多个团队的集体努力,是他们让 Claude 能够安全地进行长程自主软件工程——特别是 code RL 团队和 Claude Code 团队。有兴趣加入的候选人欢迎在 anthropic.com/careers 投递简历。

脚注

Footnotes

  1. 我们在这里称它们为”不同的 agent”,仅仅是因为它们有不同的初始用户 prompt。系统 prompt、工具集以及整体 agent harness 本身是完全相同的。

为长时运行的 Agent 设计有效的 Harness

Create a professional infographic following these specifications:

Image Specifications

  • Type: Infographic
  • Layout: bento-grid
  • Style: technical-schematic (Blueprint variant)
  • Aspect Ratio: 16:9
  • Language: Chinese (中文)

Core Principles

  • Follow the bento-grid layout precisely: modular rectangular cells with varied sizes (hero + supporting cells), no strict symmetry, clear cell boundaries, consistent padding
  • Apply technical-schematic aesthetics: engineering blueprint feel with deep blue background (#1E3A5F), white and cyan technical lines, amber (#F59E0B) highlights for key callouts, subtle grid pattern overlay
  • Use geometric precision, clean stroke weights, dimension lines and technical annotations where appropriate
  • Keep text concise, maximize visual hierarchy, emphasize keywords with amber accents
  • Use ample whitespace, maintain clear visual flow from hero cell outward

Text Requirements

  • All text in Chinese (Simplified). Technical terms like “Claude Agent SDK”, “init.sh”, “git”, “JSON”, “Puppeteer MCP”, “compaction” keep in English
  • Main title prominent and readable at top
  • Each cell has a clear short heading
  • Key concepts emphasized visually (amber color, bold stroke)
  • Technical labels use clean sans-serif, all-caps for headers where it fits

Layout Guidelines

Bento-grid with 1 hero cell (2x2) and 5-6 supporting cells (mix of 1x1, 2x1, 1x2):

  • Hero cell (top-left, 2x2): Core architecture diagram — two agent types connected by a “baton pass” (交接) arrow
  • Supporting cells around the hero, arranged in a balanced grid

Style Guidelines

  • Blueprint variant of technical-schematic
  • Background: deep blue (#1E3A5F) with faint grid pattern
  • Primary stroke: white and cyan lines
  • Accent highlights: amber (#F59E0B) for critical keywords
  • Typography: clean sans-serif, technical feel
  • Icons: simple line-art, blueprint-style

Generate the infographic based on the content below:

Title

为长时运行的 Agent 设计有效的 Harness

Subtitle

让 AI Agent 跨越多个上下文窗口稳定接力

Cell 1 — HERO (2x2, top-left): 两段式 Harness 架构

核心架构图。两个圆角矩形模块并排,中间用粗箭头连接,箭头上标注”交接(Baton Pass)”。

  • 左侧模块:Initializer Agent(初始化 Agent)

    • 标签:仅首次会话运行
    • 产出三件交接物(列表式):
      • init.sh(启动脚本)
      • claude-progress.txt(进度日志)
      • 初始 git commit
  • 右侧模块:Coding Agent(编码 Agent)

    • 标签:后续每次会话运行
    • 循环箭头图示(代表 N 次会话反复调用)
    • 三步开场仪式(清单):
      1. pwd 定位工作目录
      2. progress + git log
      3. 选一个 feature 开始做

底部小字标注:两个 Agent 的系统 prompt、工具集完全相同,差别仅在初始用户 prompt

Cell 2 (top-right, 2x1): 核心洞察

光有 compaction 不够

  • 图示:一个耗尽的进度条 + 问号
  • 文字:即使 Opus 4.5 + Agent SDK + compaction,给高层 prompt 也做不出产品级 Web App
  • 底部:amber 色强调字 → “需要显式的跨会话状态接力机制”

Cell 3 (middle-right, 1x1): 两大失败模式

左右两个小图标:

  • 🔥 一把梭:试图一次做完 → 半途而废
  • ✅ 过早完工:看到做过事 → 宣布胜利

Cell 4 (middle-right, 1x1): 功能清单用 JSON

  • 图示:一个 JSON 代码块缩略图
  • 200+ 条功能,全部初始标 failing
  • 强指令:“不可接受删除或修改测试”
  • 为什么 JSON:模型对 JSON 比 Markdown 更谨慎

Cell 5 (bottom-left, 2x1): 增量推进 + 干净交接

水平流程图: [选 1 个 feature] → [实现] → [端到端测试] → [git commit + progress 更新] → [下次]

  • 配文字:每次只做一个功能,环境要留在”可合并到 main”的状态
  • 关键词用 amber 高亮:每次一个干净状态

Cell 6 (bottom-middle, 1x1): 端到端测试

  • 图示:浏览器窗口图标 + 机器人
  • 文字:必须用浏览器自动化(Puppeteer MCP)
  • 提示:单跑 curl 或单测不够
  • 小字注记:当前限制 → 看不到浏览器原生 alert

Cell 7 (bottom-right, 1x1): 失败模式 × 对策(浓缩表)

4 条短行,每行 “问题 → 对策” 格式:

  • 过早完工 → 功能清单 JSON
  • 环境脏了 → progress + git
  • 伪完成 → 强制 e2e 验证
  • 搞不清怎么跑 → init.sh

来源: Anthropic Engineering | 作者: Justin Young | 2025-11-26

Text labels (in Chinese 中文):

  • 主标题:“为长时运行的 Agent 设计有效的 Harness”
  • 副标题:“让 AI Agent 跨越多个上下文窗口稳定接力”
  • 各 cell 标题:两段式架构、核心洞察、两大失败模式、功能清单、增量推进、端到端测试、对策总览
  • 关键术语保留英文:Initializer Agent、Coding Agent、compaction、init.sh、claude-progress.txt、git commit、JSON、Puppeteer MCP、feature list
  • 关键短语(amber 高亮):每次一个、干净状态、交接物、Baton Pass
证据原始数据 (1 条)
transcript-raw
/Users/eamanc/Documents/pe/jixiaxuegong/blog/anthropic-blog/2025-11-26-effective-harnesses-for-long-running-agents/transcript-raw.md