
我们和 AI 连续聊十几轮后,它仍然记得前面说过的话。
这很容易让人产生一种错觉:
AI 服务端是不是一直替我保存着这段对话?
又或者:
Hermes 每次请求 DashScope,都会把本地会话文件整个上传一遍?
答案是:都不完全对。
更准确地说:
Hermes 不会把本地会话归档整个上传,但每次请求模型时,通常会重新带上当前需要的聊天上下文。
听起来有点绕?看完下面这张图就明白了。

先说最简单的结论
Hermes 每次调用 DashScope,主要会发送三类内容:
- System:告诉 AI 自己是谁、应该遵守什么规则;
- 聊天历史:之前的提问、回答和工具结果;
- Tools:告诉 AI 当前能使用哪些工具、每个工具怎么调用。
但保存在本地会话文件里的用户 ID、聊天 ID、费用统计、时间、Git 分支等信息,通常不会发给模型。
所以:
重新发送的是“模型理解当前对话所需的上下文”,不是整个本地文件。
为什么要重新发送聊天历史?
多数聊天模型接口本身更像一次“单次问答”。
你发给它什么,它就根据这次收到的内容回答什么。
假设我们这样聊天:
我:我家有一只猫,叫豆包。AI:记住了,它叫豆包。我:它叫什么?
第二次提问时,如果请求里只有“它叫什么”,模型并不知道“它”指谁。
因此,客户端通常需要把前面的内容一起带上:
我家有一只猫,叫豆包。
它叫什么?
模型这才有足够的上下文回答“豆包”。
这就是多轮对话看起来拥有“记忆”的基本原理之一。
如果 AI 中途调用工具呢?
Agent 不只是聊天,还会使用终端、浏览器、文件和其他工具。
例如你问:
“服务器现在在线吗?”
第一次请求时,Hermes 会发送:
System+ 你的问题+ 可用工具列表
模型判断需要检查服务器,于是要求调用工具。
Hermes 执行工具后,还得再调用一次模型。这一次发送的内容会增加:
System+ 你的问题+ 模型刚才发起的工具调用+ 工具执行结果+ 可用工具列表
模型看到结果后,才能组织最终回答。
因此,一条用户消息不一定只产生一次 API 请求。只要中途需要工具,就可能出现第二次、第三次调用。
最后的回答会立刻再发一次吗?
不会。
模型生成最终回答后,Hermes 会先把它保存到本地会话历史。
如果本轮对话到此结束,这条回答不会仅仅因为被保存,就立即再上传一次。
等你提出下一个问题时,它才可能和新的问题一起进入下一次请求。
可以把它理解成:
本轮生成的答案↓ 保存到本地下一轮开始↓ 作为历史上下文参与请求
本地会话文件里还有什么?
Hermes 的会话归档不仅保存聊天正文,还可能保存:
消息来自 Telegram、CLI 还是其他入口; 用户 ID、聊天 ID 和会话编号; 模型名称和运行配置; API 调用次数和工具调用次数; 输入、输出 Token 和费用统计; 会话开始、结束时间; 本地工作目录和 Git 信息; 用于恢复会话的内部状态。
这些信息对本地管理和排查问题很有用,但它们不是模型理解对话所必需的内容。
Hermes 不会把这个归档对象原封不动地塞进请求体。
除了聊天历史,还有一个容易忽略的大头
很多人只关注 messages,却忽略了 Tools。
Tools 不是几个简单的名称。每个工具通常还要附带:
它叫什么; 它能做什么; 需要哪些参数; 哪些参数必填; 参数允许什么格式。
如果 Agent 启用了很多工具,这些完整定义也可能占用不少上下文。
所以一次真实请求的输入,往往可以理解成:
System Prompt+ 聊天历史+ 当前问题+ 完整 Tools 定义+ 本次临时加入的记忆或上下文
这也是为什么一个看起来只有十几个字的问题,输入 Token 却可能很多。
有缓存,是不是就不用重发了?
还是会发。
Prompt Cache 可以让服务端识别重复的前缀,并复用一部分计算。
例如 System 和前几轮聊天内容完全没变,服务端可能不需要每次都从头计算。这样有机会降低延迟或费用。
但要注意:
缓存复用计算,不等于客户端不再发送数据。
从网络请求角度看,稳定的 System、聊天历史和 Tools 仍可能出现在请求体中。
至于能否命中缓存、缓存 Token 如何计费,要看具体模型和供应商规则。
一个容易记住的比喻
可以把每次模型请求想象成给一位临时接手工作的同事发资料包。
你不需要把整台电脑交给他,也不会把所有本地统计表都发过去。
但为了让他接着干,你需要提供:
工作规则:System; 之前发生了什么:聊天历史; 他能调用什么资源:Tools; 刚刚查到了什么:工具结果; 现在要解决什么:当前问题。
每次接手,都要带上足够的资料。资料太多时,再通过压缩和摘要减小体积。
最后记住五句话
- Hermes 不会把本地会话归档整个上传给 DashScope。
- 每次模型调用通常都会重新发送当前有效的聊天上下文。
- System Prompt 和完整 Tools 定义也可能在每次调用中重复出现。
- 工具调用会让一条用户消息产生多次模型请求。
- Prompt Cache 可以复用计算,但不代表网络请求不再携带这些内容。
夜雨聆风