进行第一阶段的调试修复

- 调整了配置生成时的部分逻辑
- 在几乎所有涉及数据交换处都添加了debug日志, 进入、离开每个模块也都有相应的日志提示
- 原 MemoryGraph 、SessionManager 序列化逻辑在windows中会因为文件锁导致无法正常序列化,已修复
- 原总结逻辑会导致对话缓存因没有用户昵称而造成不同用户的身份混淆,在 MemoryManager 添加了根据用户id获取用户身份的逻辑
- 调整了部分提示词; 在主对话模块进行时,将会先添加`强化提示词`,对话后移除,效果待评测
- 添加了README文件,说明现有实现、后续规划等内容
- 添加了从gitea同步至github的脚本,这仓库可不能丢啊
This commit is contained in:
2025-05-12 18:28:56 +08:00
parent 15d6b98eac
commit f220854fd6
26 changed files with 599 additions and 137 deletions

View File

@@ -1,7 +1,6 @@
package memory;
import cn.hutool.json.JSONUtil;
import org.junit.jupiter.api.Test;
import work.slhaf.agent.common.chat.ChatClient;
import work.slhaf.agent.common.chat.constant.ChatConstant;
import work.slhaf.agent.common.chat.pojo.Message;
@@ -14,7 +13,7 @@ import java.util.HashMap;
import java.util.List;
public class AITest {
@Test
// @Test
public void topicExtractorTest() {
String input = """
{
@@ -48,7 +47,7 @@ public class AITest {
run(input, ModelConstant.SELECT_EXTRACTOR_PROMPT);
}
@Test
// @Test
public void sliceEvaluatorTest(){
String input = """
{
@@ -98,7 +97,7 @@ public class AITest {
run(input,ModelConstant.SLICE_EVALUATOR_PROMPT);
}
@Test
// @Test
public void coreModelTest(){
String input = """
{
@@ -128,7 +127,7 @@ public class AITest {
run(input,ModelConstant.CORE_MODEL_PROMPT + "\r\n" + MemorySelector.modulePrompt);
}
@Test
// @Test
public void map2jsonTest(){
HashMap<LocalDate,String> map = new HashMap<>();
map.put(LocalDate.now(),"hello");

View File

@@ -1,7 +1,5 @@
package memory;
import org.junit.Before;
import org.junit.Test;
import work.slhaf.agent.core.memory.MemoryGraph;
import work.slhaf.agent.core.memory.node.MemoryNode;
import work.slhaf.agent.core.memory.node.TopicNode;
@@ -19,15 +17,16 @@ import static org.junit.Assert.*;
public class InsertTest {
private MemoryGraph memoryGraph;
private final String testId = "test_insert";
String basicCharacter = "";
@Before
// @Before
public void setUp() {
memoryGraph = new MemoryGraph(testId);
memoryGraph = new MemoryGraph(testId, basicCharacter);
memoryGraph.setTopicNodes(new HashMap<>());
memoryGraph.setExistedTopics(new HashMap<>());
}
@Test
// @Test
public void testInsertMemory_NewRootTopic() throws IOException, ClassNotFoundException {
// 准备测试数据
List<String> topicPath = new LinkedList<>(Arrays.asList("Programming", "Java", "Collections"));
@@ -53,7 +52,7 @@ public class InsertTest {
assertEquals(slice, memoryNode.loadMemorySliceList().get(0));
}
@Test
// @Test
public void testInsertMemory_ExistingTopicPath() throws IOException, ClassNotFoundException {
// 准备初始数据
List<String> topicPath1 = new LinkedList<>(Arrays.asList("Programming", "Java", "Collections"));
@@ -74,7 +73,7 @@ public class InsertTest {
assertEquals(2, collectionsNode.getMemoryNodes().get(0).loadMemorySliceList().size()); // 但有两个MemorySlice
}
@Test
// @Test
public void testInsertMemory_DifferentDays() throws IOException, ClassNotFoundException {
// 准备测试数据
List<String> topicPath = new LinkedList<>(Arrays.asList("Math", "Algebra"));
@@ -100,7 +99,7 @@ public class InsertTest {
assertEquals(2, algebraNode.getMemoryNodes().size()); // 应该有两个MemoryNode
}
@Test
// @Test
public void testInsertMemory_PartialExistingPath() throws IOException, ClassNotFoundException {
// 准备初始数据 - 创建部分路径
List<String> topicPath1 = new LinkedList<>(Arrays.asList("Science", "Physics"));
@@ -128,7 +127,7 @@ public class InsertTest {
return slice;
}
@Test
// @Test
public void testSerializationConsistency() throws IOException, ClassNotFoundException {
// 构造 MemorySlice
MemorySlice slice = new MemorySlice();
@@ -141,7 +140,7 @@ public class InsertTest {
memoryGraph.serialize();
// 反序列化
MemoryGraph loadedGraph = MemoryGraph.getInstance(testId);
MemoryGraph loadedGraph = MemoryGraph.getInstance(testId, "");
// 校验topic 是否存在
assertNotNull(loadedGraph.getTopicNodes().get("生活"));

View File

@@ -1,6 +1,5 @@
package memory;
import org.junit.jupiter.api.Test;
import work.slhaf.agent.core.memory.MemoryGraph;
import work.slhaf.agent.core.memory.node.TopicNode;
@@ -10,9 +9,10 @@ import java.util.concurrent.ConcurrentHashMap;
public class MemoryTest {
@Test
//@Test
public void test1() {
MemoryGraph graph = new MemoryGraph("test");
String basicCharacter = "";
MemoryGraph graph = new MemoryGraph("test", basicCharacter);
HashMap<String, TopicNode> topicMap = new HashMap<>();
TopicNode root1 = new TopicNode();
@@ -52,7 +52,7 @@ public void test1() {
}
@Test
// @Test
public void test2(){
System.out.println(LocalDate.now());
}

View File

@@ -1,9 +1,7 @@
package memory;
import org.junit.jupiter.api.Test;
public class NormalTest {
@Test
// @Test
public void lengthTest(){
String s = """
哈哈,这样反而更能说明一点: \s

View File

@@ -1,13 +1,11 @@
package memory;
import org.junit.jupiter.api.Test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
@Test
// @Test
public void regexTest(){
String[] examples = {
"[小明(abc)] 我在开会] (te[]st)",

View File

@@ -1,7 +1,5 @@
package memory;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import work.slhaf.agent.core.memory.MemoryGraph;
import work.slhaf.agent.core.memory.exception.UnExistedTopicException;
import work.slhaf.agent.core.memory.node.MemoryNode;
@@ -21,9 +19,9 @@ class SearchTest {
private final LocalDate yesterday = LocalDate.now().minusDays(1);
// 初始化测试环境,模拟插入基础数据
@BeforeEach
// @BeforeEach
void setUp() throws IOException, ClassNotFoundException {
memoryGraph = new MemoryGraph("testGraph");
memoryGraph = new MemoryGraph("testGraph", "");
// 构建基础主题路径:根主题 -> 编程 -> Java
List<String> javaPath = new ArrayList<>();
@@ -42,7 +40,7 @@ class SearchTest {
}
// 场景1查询存在的完整主题路径含相关主题
@Test
// @Test
void selectMemory_shouldReturnTargetAndRelatedAndParentMemories() throws IOException, ClassNotFoundException {
// 准备相关主题数据:根主题 -> 算法 -> 排序
List<String> sortPath = new ArrayList<>();
@@ -70,7 +68,7 @@ class SearchTest {
}
// 场景2查询不存在的主题路径
@Test
// @Test
void selectMemory_shouldThrowWhenPathNotExist() {
List<String> invalidPath = new ArrayList<>();
invalidPath.add("不存在的主题");
@@ -81,7 +79,7 @@ class SearchTest {
}
// 场景3无相关主题时仅返回目标节点和父节点记忆
@Test
// @Test
void selectMemory_withoutRelatedTopics_shouldReturnTargetAndParent() throws IOException, ClassNotFoundException {
// 插入父级记忆:根主题 -> 编程
List<String> parentPath = new ArrayList<>();
@@ -102,7 +100,7 @@ class SearchTest {
}
// 场景4验证日期排序应优先取最新日期的邻近记忆
@Test
// @Test
void selectMemory_shouldGetLatestRelatedMemory() throws IOException, ClassNotFoundException {
// 准备相关主题路径:根主题 -> 数据库
List<String> dbPath = new ArrayList<>();

View File

@@ -1,7 +1,5 @@
package memory;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;
@@ -10,7 +8,7 @@ import java.util.concurrent.TimeUnit;
public class ThreadPoolTest {
@Test
// @Test
public void testExecutor() throws InterruptedException {
List<Callable<Void>> tasks = new ArrayList<>();
for (int i = 0; i < 5; i++) {