- 新增 PersistableObject 抽象类以统一持久化对象

- 修改 MemoryGraph、MemoryNode、MemorySlice 和 TopicNode 继承 PersistableObject
- 添加 serialVersionUID 以保证序列化兼容性
This commit is contained in:
2025-04-11 22:02:07 +08:00
parent c28979b495
commit ae4859004f
5 changed files with 36 additions and 6 deletions

View File

@@ -1,11 +1,13 @@
package work.slhaf.memory; package work.slhaf.memory;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.memory.content.MemorySlice; import work.slhaf.memory.content.MemorySlice;
import work.slhaf.memory.exception.UnExistedTopicException; import work.slhaf.memory.exception.UnExistedTopicException;
import work.slhaf.memory.node.MemoryNode; import work.slhaf.memory.node.MemoryNode;
import work.slhaf.memory.node.TopicNode; import work.slhaf.memory.node.TopicNode;
import work.slhaf.memory.pojo.PersistableObject;
import java.io.*; import java.io.*;
import java.nio.file.Files; import java.nio.file.Files;
@@ -15,12 +17,14 @@ import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
@EqualsAndHashCode(callSuper = true)
@Data @Data
@Slf4j @Slf4j
public class MemoryGraph implements Serializable { public class MemoryGraph extends PersistableObject {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final String STORAGE_DIR = "./data/memory/"; private static final String STORAGE_DIR = "./data/memory/";
//todo: 实现记忆的短期缓存机制 //todo: 实现记忆的短期缓存机制
private String id; private String id;

View File

@@ -1,13 +1,19 @@
package work.slhaf.memory.content; package work.slhaf.memory.content;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.chat.pojo.Message; import work.slhaf.chat.pojo.Message;
import work.slhaf.memory.pojo.PersistableObject;
import java.io.Serializable; import java.io.Serial;
import java.util.List; import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data @Data
public class MemorySlice implements Serializable, Comparable<MemorySlice> { public class MemorySlice extends PersistableObject implements Comparable<MemorySlice> {
@Serial
private static final long serialVersionUID = 1L;
/** /**
* 关联的完整对话的id * 关联的完整对话的id

View File

@@ -1,18 +1,24 @@
package work.slhaf.memory.node; package work.slhaf.memory.node;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import work.slhaf.memory.content.MemorySlice; import work.slhaf.memory.content.MemorySlice;
import work.slhaf.memory.exception.NullSliceListException; import work.slhaf.memory.exception.NullSliceListException;
import work.slhaf.memory.pojo.PersistableObject;
import java.io.*; import java.io.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data @Data
@Slf4j @Slf4j
public class MemoryNode implements Serializable, Comparable<MemoryNode> { public class MemoryNode extends PersistableObject implements Comparable<MemoryNode> {
@Serial
private static final long serialVersionUID = 1L;
private static String SLICE_DATA_DIR = "./data/slice/"; private static String SLICE_DATA_DIR = "./data/slice/";

View File

@@ -1,13 +1,20 @@
package work.slhaf.memory.node; package work.slhaf.memory.node;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.memory.pojo.PersistableObject;
import java.io.Serializable; import java.io.Serial;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data @Data
public class TopicNode implements Serializable { public class TopicNode extends PersistableObject {
@Serial
private static final long serialVersionUID = 1L;
private HashMap<String,TopicNode> topicNodes; private HashMap<String,TopicNode> topicNodes;
private List<MemoryNode> memoryNodes; private List<MemoryNode> memoryNodes;
} }

View File

@@ -0,0 +1,7 @@
package work.slhaf.memory.pojo;
import java.io.Serial;
import java.io.Serializable;
public abstract class PersistableObject implements Serializable {
}