perf: 优化自动压缩记忆的表现

This commit is contained in:
2026-05-28 11:15:52 +08:00
parent 5c7182ac3f
commit 8b600f9d6c
2 changed files with 14 additions and 9 deletions

View File

@@ -168,12 +168,10 @@ public class AutoContextInterceptor implements AgentRuntimeInterceptor {
CompressionCheck compressionCheck = compressionCheck(autoContextMemory.getMessages());
int beforeEventCount = compressionEventCount(autoContextMemory);
if (compressionCheck.thresholdReached()) {
emitCompressionStarted(compressionCheck);
boolean compressed = autoContextMemory.compressIfNeeded();
List<CompressionEvent> newEvents = newCompressionEvents(autoContextMemory, beforeEventCount);
if (compressed && !newEvents.isEmpty()) {
emitCompressionStarted(compressionCheck);
emitCompressionCompleted(compressionCheck, newEvents);
}
emitCompressionCompleted(compressionCheck, newEvents, compressed && !newEvents.isEmpty());
}
// 压缩完毕后自动进行当前的会话
event.setInputMessages(buildInputMessages(event, autoContextMemory));
@@ -281,13 +279,14 @@ public class AutoContextInterceptor implements AgentRuntimeInterceptor {
* @param events 新增压缩事件
*/
private void emitCompressionCompleted(CompressionCheck compressionCheck,
List<CompressionEvent> events) {
List<CompressionEvent> events,
boolean compressed) {
AgentRuntimeEvent event = eventBridge.event(AgentRuntimeEventType.MEMORY_COMPRESSION_COMPLETED);
event.getPayload().put("statusKey", STATUS_KEY);
event.getPayload().put("phase", "completed");
event.getPayload().put("status", "done");
event.getPayload().put("label", "已整理上下文");
event.getPayload().put("compressed", true);
event.getPayload().put("label", compressed ? "已整理上下文" : "无需压缩上下文");
event.getPayload().put("compressed", compressed);
event.getPayload().put("eventCount", events == null ? 0 : events.size());
event.getPayload().put("events", toPayloadEvents(events));
putCompressionCheckPayload(event, compressionCheck);