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

View File

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

View File

@@ -1,18 +1,24 @@
package work.slhaf.memory.node;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import work.slhaf.memory.content.MemorySlice;
import work.slhaf.memory.exception.NullSliceListException;
import work.slhaf.memory.pojo.PersistableObject;
import java.io.*;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@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/";

View File

@@ -1,13 +1,20 @@
package work.slhaf.memory.node;
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.List;
@EqualsAndHashCode(callSuper = true)
@Data
public class TopicNode implements Serializable {
public class TopicNode extends PersistableObject {
@Serial
private static final long serialVersionUID = 1L;
private HashMap<String,TopicNode> topicNodes;
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 {
}