Agent开发过程中的会话管理

1、最简单的一种会话管理

对于比较简单的agent开发,如果只是一次响应,上下文要求不高,可以将用户输入的多类型文件进行拆解和转化,注入大模型上下文。一次请求,一次响应,一次分析结果。

2、复杂的会话管理基本思路

对于较复杂,需要进行上下文管理的时候,用户不断上传的资料。我这里的策略是先统一收集这些文件到某个项目文件夹下。在大模型真正思考,需要使用到相关资料的时候才会尝试去读取这些文件中的相关信息。就类似使用claude code这样的工具,针对某个项目文件夹下的文件,是按需、使用时候采取读取的。

这里的开发思路有:

①渐进式披露。用户不断上传、补充待分析的资料。这些资料可能需要二次处理,不能直接注入上下文,只在需要使用的时候才会进行读取。

②工具即能力边界。agent能做什么完全由工具集决定。每一轮对话,不是依靠prompt注入告诉模型相关信息,而是依靠模型自主的使用工具,查询已有的资料获得信息。模型自主的拼接上下文,而非用户写好上下文。

这意味可能需要维持一个文件索引表,这个索引表是需要随时注入大模型的,索引表需要不断更新和维护,让大模型知道当前能够使用的信息有哪一些。

3、对于回话过程中的每次API请求,claude code采用的是这样的策略

图示表达的含义是:完整的上下文一次api请求的操作。

最后的AutoCompact一般是通过阈值实现的,也就是已经使用的上下文达到了模型对话窗口上下文的多少,会强制触发自动压缩功能。而在这之前,针对已有的上下文也会进行很多处理,这是我们经常使用claude code这类agent平时感知不到的。

claude code中使用的还是一些本地操作实现轻量压缩,具体的每个策略都是很值得研究的。这也是一个节约成本的策略,AutoCompact是调用大模型进行上下文压缩,所以会有token消耗。

AutoCompact是一次摧毁细粒度上下文的压缩,只提取、总结核心内容,这么做之后会丢弃很多的信息。所以在AutoCompact之前,这些低成本的压缩是更值得做的,这些低成本的操作是的上下文没有达到阈值,那么也就不会进行AutoCompact操作。

4、针对本人开发项目的使用场景

我的项目的一个特点是:用户需要不断的上传相关文件(图片、txt、log等等文件),AI需要综合这些文件信息来进行分析。除此以外,由于.txt文件可能非常的长,用户可能需要不断的补充信息,比如指出某份.txt文件的某个段落是关键信息。所以在我的开发项目中,需要实现针对已有资料的编辑/注释功能,来辅助AI分析。这一块也涉及到上下文该如何处理的问题。

相关推荐
去伪存真7 小时前
稠密检索负责脑补,稀疏检索负责兜底:拆解 RAG 倒排索引的“查字典”艺术
前端·agent
喵个咪10 小时前
GoWind Admin 拆解:AI 能力层——工具循环、pgvector 知识库与机器凭证
人工智能·后端·agent
用户20187928316710 小时前
失忆顾问的会前资料袋:扒开四大 Coding Agent 的 Context,看 LLM 到底"看见"了什么
agent
走心哦11 小时前
多模型研讨 Agent 实战:让 GPT、Claude 互相挑错(附 3 个坑)
agent
泯泷11 小时前
大模型会吃掉 Harness 吗?Agent 天空上的“两朵乌云”
人工智能·llm·agent
狂师13 小时前
Agent评测工具链大全:Promptfoo、DeepEval 与 LangSmith
人工智能·agent·测试
前进的李工13 小时前
Agent 学习笔记 12:Agent 的工具应该怎么设计
人工智能·笔记·学习·agent·工具调用·skill·工具设计
king王一帅13 小时前
当 DSH 适配了 Quirekit md-editor: 你的笔记软件为何不能是 DSH(MIT开源)
agent·markdown·deepseek
hpoenixf14 小时前
聊天记录、上下文、记忆、检查点,Agent 怎样接上过去?
agent
hpoenixf14 小时前
Prompt、Context、RAG、Memory,模型的输入从哪里来?
agent