diff --git a/agentscope-core/src/main/java/io/agentscope/core/memory/StaticLongTermMemoryHook.java b/agentscope-core/src/main/java/io/agentscope/core/memory/StaticLongTermMemoryHook.java index b57bb5433..0a01a00c1 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/memory/StaticLongTermMemoryHook.java +++ b/agentscope-core/src/main/java/io/agentscope/core/memory/StaticLongTermMemoryHook.java @@ -156,8 +156,8 @@ private Mono handlePreCall(PreCallEvent event) { // Inject memory message at the beginning List enhancedMessages = new ArrayList<>(); - enhancedMessages.addAll(inputMessages); enhancedMessages.add(memoryMsg); + enhancedMessages.addAll(inputMessages); event.setInputMessages(enhancedMessages); return Mono.just(event); diff --git a/agentscope-core/src/main/java/io/agentscope/core/tool/ToolGroupManager.java b/agentscope-core/src/main/java/io/agentscope/core/tool/ToolGroupManager.java index c6d4c0fcf..9b4fa72b3 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/tool/ToolGroupManager.java +++ b/agentscope-core/src/main/java/io/agentscope/core/tool/ToolGroupManager.java @@ -21,6 +21,7 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CopyOnWriteArrayList; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -33,7 +34,7 @@ class ToolGroupManager { private final Map toolGroups = new ConcurrentHashMap<>(); // group -> tools private final Map> tools = new ConcurrentHashMap<>(); // tool -> groups - private List activeGroups = new ArrayList<>(); + private final List activeGroups = new CopyOnWriteArrayList<>(); /** * Create tool groups and record them in the manager. @@ -324,7 +325,8 @@ public List getActiveGroups() { * @param activeGroups List of group names to mark as active */ public void setActiveGroups(List activeGroups) { - this.activeGroups = new ArrayList<>(activeGroups); + this.activeGroups.clear(); + this.activeGroups.addAll(activeGroups); // Mark corresponding groups as active for (String groupName : activeGroups) { @@ -374,7 +376,8 @@ void copyTo(ToolGroupManager target) { } // Copy activeGroups list - target.activeGroups = new ArrayList<>(this.activeGroups); + target.activeGroups.clear(); + target.activeGroups.addAll(this.activeGroups); } private boolean removeGroupFromToolIndex(String toolName, String groupName) { diff --git a/agentscope-core/src/main/java/io/agentscope/core/util/MessageUtils.java b/agentscope-core/src/main/java/io/agentscope/core/util/MessageUtils.java index c7839f2d6..f28c3a627 100644 --- a/agentscope-core/src/main/java/io/agentscope/core/util/MessageUtils.java +++ b/agentscope-core/src/main/java/io/agentscope/core/util/MessageUtils.java @@ -19,6 +19,7 @@ import io.agentscope.core.message.MsgRole; import io.agentscope.core.message.ToolUseBlock; import java.util.List; +import java.util.Objects; /** * Utility methods for message processing and extraction. @@ -51,7 +52,7 @@ public static List extractRecentToolCalls(List messages, Stri for (int i = messages.size() - 1; i >= 0; i--) { Msg msg = messages.get(i); - if (msg.getRole() == MsgRole.ASSISTANT && msg.getName().equals(agentName)) { + if (msg.getRole() == MsgRole.ASSISTANT && Objects.equals(msg.getName(), agentName)) { List toolCalls = msg.getContentBlocks(ToolUseBlock.class); if (!toolCalls.isEmpty()) { return toolCalls; diff --git a/agentscope-core/src/test/java/io/agentscope/core/memory/StaticLongTermMemoryHookTest.java b/agentscope-core/src/test/java/io/agentscope/core/memory/StaticLongTermMemoryHookTest.java index 37417ee26..14a2c8e46 100644 --- a/agentscope-core/src/test/java/io/agentscope/core/memory/StaticLongTermMemoryHookTest.java +++ b/agentscope-core/src/test/java/io/agentscope/core/memory/StaticLongTermMemoryHookTest.java @@ -138,13 +138,13 @@ void testOnEventWithPreReasoningEventAndRetrievedMemories() { resultEvent -> { List messages = resultEvent.getInputMessages(); assertEquals(2, messages.size()); - assertEquals(MsgRole.SYSTEM, messages.get(1).getRole()); + assertEquals(MsgRole.SYSTEM, messages.get(0).getRole()); assertTrue( - messages.get(1) + messages.get(0) .getTextContent() .contains("")); assertTrue( - messages.get(1) + messages.get(0) .getTextContent() .contains("User prefers dark mode")); })