import com.fasterxml.jackson.databind.ObjectMapper;
import io.agentscope.core.memory.InMemoryMemory;
import io.agentscope.core.message.Msg;
import io.agentscope.core.session.JsonSession;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
public class SessionMigration {
public static void migrate(Path oldSessionFile, Path newSessionDir) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// 1. 读取旧格式数据
String json = Files.readString(oldSessionFile);
Map<String, Object> oldData = mapper.readValue(json, Map.class);
// 2. 提取消息历史
Map<String, Object> memoryData = (Map<String, Object>) oldData.get("memory");
List<Map<String, Object>> messages = (List<Map<String, Object>>) memoryData.get("messages");
// 3. 创建新的 Memory 并填充数据
InMemoryMemory memory = new InMemoryMemory();
for (Map<String, Object> msgData : messages) {
// 根据旧数据结构构建 Msg 对象
Msg msg = convertToMsg(msgData);
memory.addMessage(msg);
}
// 4. 使用新 API 保存
JsonSession session = new JsonSession(newSessionDir);
String sessionId = oldSessionFile.getFileName().toString().replace(".json", "");
memory.saveTo(session, sessionId);
System.out.println("迁移完成: " + sessionId);
}
private static Msg convertToMsg(Map<String, Object> msgData) {
// 根据实际的旧数据结构实现转换逻辑
// ...
}
}