Agent Memory Management 速通
- 内容介绍
- 文章标签
- 相关推荐
最近在学习 Learn Claude Code 这个项目,读到其中有关 Memory 的部分,感觉这部分在面试中也很重要,因此稍微整理了下,给各位 L友分享,速通。
Compact Memory(S06)
压缩记忆有三种方式:micro_compact, auto_compact, manual compact。
Micro_Compact
每次 loop 的开始,先进行 Micro_Compact。
随着消息的累加,尤其是工具的输出越来越多,主要把之前的工具的输出(content)被更简短的文字取代。
result["content"] = f"[Previous: used {tool_name}]"
比如:原来的内容——{ “role” : “user”, “content” : “[北京的天气是 xxxxxxxxxxxxxxxxxxxxxxxxxx]” } —>{“role” : “user”, “content” : “[Previous: used {search}]”
> 为什么是role=user?因为根据这个项目的设计,每次工具生成的内容作为role=user的 content,以作为新的一轮输入,让模型输出答案。
Auto_Compact
在 Micro_Compact后,如果发现经过 Micro_Compact压缩之后,token数量还比较多,则把之前的全部消息压缩成一个 summary,内容大大缩短,同时保存为一个json(方便后续查找记录),最后把这个 summary 作为 user 的 content输入给模型。
比如:
{["role" : "user", "content" : xxxx], ["role" : "assistant", "content" : xxxx]……}
--->
{["role" : "user", "content" : "xxxxxxxxxxx"(summary)]}
Manual Compact
顾名思义,相比于 Auto_Compact 而言,两者是同一个功能,只是Manual Compact是工具调用,也就是你指示大模型使用这个压缩工具,从而开始运行。因此这个是在模型回复之后才开始的。
for block in response.content:
if block.type == "tool_use":
if block.name == "compact":
manual_compact = True
output = "Compressing..."
网友解答:
--【壹】--:
谢谢分享!
最近在学习 Learn Claude Code 这个项目,读到其中有关 Memory 的部分,感觉这部分在面试中也很重要,因此稍微整理了下,给各位 L友分享,速通。
Compact Memory(S06)
压缩记忆有三种方式:micro_compact, auto_compact, manual compact。
Micro_Compact
每次 loop 的开始,先进行 Micro_Compact。
随着消息的累加,尤其是工具的输出越来越多,主要把之前的工具的输出(content)被更简短的文字取代。
result["content"] = f"[Previous: used {tool_name}]"
比如:原来的内容——{ “role” : “user”, “content” : “[北京的天气是 xxxxxxxxxxxxxxxxxxxxxxxxxx]” } —>{“role” : “user”, “content” : “[Previous: used {search}]”
> 为什么是role=user?因为根据这个项目的设计,每次工具生成的内容作为role=user的 content,以作为新的一轮输入,让模型输出答案。
Auto_Compact
在 Micro_Compact后,如果发现经过 Micro_Compact压缩之后,token数量还比较多,则把之前的全部消息压缩成一个 summary,内容大大缩短,同时保存为一个json(方便后续查找记录),最后把这个 summary 作为 user 的 content输入给模型。
比如:
{["role" : "user", "content" : xxxx], ["role" : "assistant", "content" : xxxx]……}
--->
{["role" : "user", "content" : "xxxxxxxxxxx"(summary)]}
Manual Compact
顾名思义,相比于 Auto_Compact 而言,两者是同一个功能,只是Manual Compact是工具调用,也就是你指示大模型使用这个压缩工具,从而开始运行。因此这个是在模型回复之后才开始的。
for block in response.content:
if block.type == "tool_use":
if block.name == "compact":
manual_compact = True
output = "Compressing..."
网友解答:
--【壹】--:
谢谢分享!

