1、引入git,用于每次任务开始时检查历史,任务完成后进行提交;
2、hook,agent执行过程中通过hook方式与物理世界交互;
3、防休眠机制,哪怕你合上笔记本明天回来,任务照样运行;
4、上下文管理,长时间任务运行失败的最大原因是上下文窗口耗尽,引入自动压缩阈值,做好检查点和交接模式,可以在上下文重置后存活;
# 在 CLAUDE.md 中
当上下文变大时,将当前状态写入 tasks/mission.md。
包括:已完成的、下一步的、被阻塞的、未解决的问题。
错误处理:最多重试 3 次。如果没有进展,记录到pending_for_human.md 然后转到下一个任务。
压缩前,务必保存完整的已修改文件列表。5、事件驱动的上下文读取,模型上下文窗口是物理限制,常规的手段是压缩、剪裁,但这会导致信息不可逆的丢失,在关键决策时缺失被压缩的细节。
可以在Agent之外追加一个Session持久化日志,通过getEvents()接口按需读取事件切片,这样可以从任意位置恢复读取、回溯特定时刻的上下文、对原始日志优化之后再喂给模型;这种方式分离了存储持久性和上下文管理策略,保证不丢数据数据,还能决策哪些数据喂给模型。
6、崩溃恢复,Agent本身是个Loop,是无状态的,当Agent崩溃恢复时,会从Session持久日志恢复执行。
7、Sandbox变成了一个标准接口,传统的Sandbox观念是将其视为生存环境,Agent通过标准的execute方法与Sandbox交互,Sandbox作为安全隔离机制,将一些安全风险隔离开,Agent只通过execute与Sandbox交互,对凭证无感。
LLM和Agent生态都在不断发展,从软件工程的思维来说要留有扩展。
比如随着LLM的能力提升原有的提示词工程和现在的Harness工作大概率意义会变得降低,所以一定要留有扩展,将这些补偿、兜底逻辑变为可替换的组件,避免渗透到数据层和执行层,未来可以一键清理掉冗余设计,替换零部件,否则就会变成技术债。
对于模型本身的幻觉特点,一定要将其用架构方式解决,而非规则,比如物理隔离机制可以最大程度的避免一些安全风险,比加各种补偿规则要可靠的多。
记忆将是Agent最重要的一个组成部分,要让其的演进相对独立,将记忆的存储和记忆的使用分开,用不可变日志的方式记录完整Agent运行历史,用可拔插的策略决定应该向Agent展示什么,这为长上下文和小的上下文窗口做好了平衡,留有了扩展空间。