perf: 优化自动压缩记忆的表现
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user