将Devin重建以适配Claude Sonnet 4.5不仅仅是一次模型替换,而是一次关于代理设计范式的深刻重构。Sonnet 4.5在规划能力、自我验证与并行执行上带来了显著提升,同时也引入了一些新的行为模式,这些变化打破了以往对长时会话与工具调用的假设。本文结合重建过程中的实测观察,阐述若干关键教训、遇到的挑战与可操作的建议,旨在为希望在新一代模型上构建稳定、高效编码代理的工程团队提供参考。 从性能指标到重构动机,数据说话。Sonnet 4.5在规划性能上获得了约18%的提升,端到端评估分数提高了12%,多小时会话的速度与可靠性也显著改进。尽管这些改进吸引人,但模型的新行为在实际Agent流程中产生了连锁反应,迫使我们在架构层面做出调整。
简单地把新模型"插入即用"并不能保证长期稳定性或最佳体验,尤其是当代理不仅仅是代码补全器,而是需要规划、执行和迭代的复杂系统时。把握模型行为的细微变化,有助于在系统设计上预防意外结果。 Sonnet 4.5最明显的一个变化是它对自身上下文窗口的"感知"。模型会主动估算剩余上下文并据此调整策略,在接近它认为的上下文限制时会更倾向于做总结、收尾或选择更确定性的修复路径。这个特性本质上利于在有限资源内收敛解决方案,但也带来了负面影响:当模型错误地判断剩余上下文较少时,会出现草率的近尾行为;即便实际还有余量,也可能提前结束任务或跳过必要步骤。为了缓解这种"上下文焦虑",我们不得不在提示设计中加入更强的指引,并在交互中前后反复提醒模型不要提前收敛。
一个出人意料但非常有效的技巧是启用1M token的beta能力但人为限制实际使用到200k。这种做法让模型"以为"自己拥有更大的运行空间,从而显著减少了焦虑驱动的早期收尾行为,同时仍控制了资源消耗。值得注意的是,模型对剩余token的估计往往偏低,但它在这种错误估计上却表现出高度的一致性,这意味着可以通过工程上的补偿策略来校准行为。 另一个显著变化是Sonnet 4.5偏好将内部状态外化为文件系统中的"笔记"。模型会在没有额外提示的情况下生成如CHANGELOG.md或SUMMARY.md之类的总结性文件,作为对任务进展的记录或未来参考。这个行为体现了模型在训练中学到了通过外部化状态来管理长会话的倾向。
对工程者而言,这既是机会也是陷阱:外化笔记可以减少对中心化记忆管理的依赖,但模型生成的摘要并不总是完整或可靠,有时会遗漏关键细节或对任务要求进行自由表述。我们曾尝试依赖模型自写的笔记作为主记忆来源,结果导致性能下降和知识缺口。因此更稳妥的做法是把模型笔记视为补充,仍保留已有的压缩与合并记忆机制,并通过提示引导模型写出更结构化、更全面的摘要。另一个需要注意的现象是模型在上下文窗口较短时倾向写更多总结性文本,甚至可能消耗比实际解决问题更多的token,这在成本敏感的环境下会有明显代价。 在测试与反馈环节,Sonnet 4.5表现得更加主动。模型会自行编写和执行短脚本以建立快速的测试回路,这通常能提高长期任务的可靠性。
比如在调试前端应用时,模型会抓取页面HTML来检查对修复的即时影响;在定位端口冲突时,它会尝试编写复杂脚本而非直接终止占用进程。可见模型在选择手段上显示出一定的创造性和判断力,但也可能因"过度工程"而偏离最直接的修复路径。作为开发者,需要在工具设计中给予模型清晰的权限边界与首选策略,防止其在调试时选择代价更高的解决方案。设置默认策略、优先执行的操作以及失败回退路径有助于约束模型的创新倾向,使其更多地朝向可维护与低成本的修复方法。 并行执行是Sonnet 4.5的又一强项。它擅长在单次上下文中最大化动作并发,例如同时运行多个bash命令、并行读取若干文件或同时发起多次工具调用。
这种并行化使得会话在感觉上更快,尤其是在上下文窗口起始较为空时。但并行策略也会更快消耗上下文资源,从而触发前述的上下文焦虑。更微妙的是,模型会在上下文窗口早期更激进地并行调用工具,而在接近窗口限制时变得更保守,好像它能预估工具调用会产出多少输出token。因此在设计工具调用与并发策略时,需要把"上下文成本"纳入决策因素。一个务实的做法是对并行度进行动态控制:在上下文富裕时允许高并行度以换取速度,在资源紧张时降级为串行或分段执行以保留重要信息。 这些新行为导向了若干架构性选择。
首先,子代理(subagent)与上下文感知工具调用变得更加实用。由于模型在何时外部化状态与何时创建反馈环方面表现出更强的判断力,利用子代理来分担子任务成为可能。然而,子代理的组合会极快放大上下文管理的复杂性:状态同步、冲突解决与结果合并都需要额外的协调机制。对复杂项目而言,构建轻量级的上下文管理层来做全局压缩与版本控制,是比放任模型自行管理更稳健的方案。其次,元代理级别的提示(meta-agent prompting)展示出不错的潜力。让模型对自身工作流程做元层次的推理,例如先计划再执行再验证,能显著提升可靠性。
结合自动化的验证系统,让模型在每一步后反思并记录验证结果,是提高长期会话稳定性的有效路径。第三,专门用于上下文管理的模型或模块也值得探索。Sonnet 4.5已显示出某种对上下文管理的初步直觉,如果将这类能力抽象成独立组件,进行专门训练或微调,或许能带来更高效的上下文压缩、选择性检索与续航策略。 在提示工程上,我们学会了几条实用原则。要在会话的起始、中间与结尾位置都加入上下文使用的明确指令,以抵消模型对上下文剩余量的错误估计。对于模型生成的笔记,要用结构化模板来引导其写出更可靠的记录,例如要求包含变更原因、测试命令、预期结果与实际结果等字段。
对于测试与工具调用,设定"优先动作清单"与"禁止或次选行为"有助于防止模型走向过度复杂的解决方案。最后,对于并行执行,要实现基于上下文预算的动态并发控制策略,避免带来不必要的token浪费。 面向未来,Sonnet 4.5揭示了Agent架构发展的几个方向。其一,子代理生态的可行性在提升,但需要更成熟的上下文同步协议和更强的元控制器。其二,模型在长时会话中外化记忆的趋势可能成为多Agent协作的自然通信方式,然而要达到可靠性还需在训练与提示上做大量工作。其三,专门的上下文管理模型或模块有潜力成为提高效率的关键,因为当前模型对上下文的自我估计虽有"直觉",但仍需外部校准来保证一致性。
总结来看,把Devin迁移到Claude Sonnet 4.5既带来了显著的性能改进,也暴露了若干新问题。上下文意识、主动记笔记、频繁测试与并行行动这些新特性既是机遇也是挑战。工程实现的要点在于识别模型行为模式、设计补偿与约束机制,以及把自动化验证与上下文管理作为核心能力来建设。通过更精细的提示、结构化的笔记模板、动态并行度控制和专门的上下文管理策略,可以把Sonnet 4.5的优势转化为稳定、可控且高效的代理系统。未来的工作方向应包括子代理协同协议、元代理思维链条的系统化,以及上下文管理模块的探索,以便在下一代模型能力到来时,能够无缝放大其正面效应并最小化潜在风险。 。