进行第一阶段的调试修复

- 修复了记忆系统中的空指针问题,原因:更新对话缓存计数时使用的经过裁剪的主题路径。
- 修复了切片评估无法正常执行的问题,原因:切片不存在前后序引用时,也试图获取前后序切片的摘要,此时应当抛出空指针异常,但由于任务以Callable<Void>提交,且未处于try-catch代码块内部,导致异常被“吞掉”
- 更新激活切片时将根据id获取到切片对应的消息列表
- 调整了README文件中的不准确描述
This commit is contained in:
2025-05-12 20:29:43 +08:00
parent f220854fd6
commit 68a38e9b51
3 changed files with 32 additions and 123 deletions

View File

@@ -353,7 +353,7 @@ public class MemoryGraph extends PersistableObject {
//每日刷新缓存
checkCacheDate();
//检测缓存并更新计数, 查看是否需要放入缓存
updateCacheCounter(path);
updateCacheCounter(topicPath);
//查看是否存在缓存,如果存在,则直接返回
if (memorySliceCache.containsKey(path)) {
return memorySliceCache.get(path);

View File

@@ -71,8 +71,8 @@ public class SliceSelectEvaluator extends Model {
List<SliceSummary> sliceSummaryList = new ArrayList<>();
//映射查找键值
Map<Long, SliceSummary> map = new HashMap<>();
setSliceSummaryList(memoryResult, sliceSummaryList, map);
try {
setSliceSummaryList(memoryResult, sliceSummaryList, map);
EvaluatorBatchInput batchInput = EvaluatorBatchInput.builder()
.text(evaluatorInput.getInput())
.memory_slices(sliceSummaryList)
@@ -87,6 +87,7 @@ public class SliceSelectEvaluator extends Model {
.summary(sliceSummary.getSummary())
.date(sliceSummary.getDate())
.build();
setEvaluatedSliceMessages(evaluatedSlice, memoryResult, sliceSummary.getId());
queue.offer(evaluatedSlice);
}
} catch (Exception e) {
@@ -101,17 +102,39 @@ public class SliceSelectEvaluator extends Model {
return queue.stream().toList();
}
private void setEvaluatedSliceMessages(EvaluatedSlice evaluatedSlice, MemoryResult memoryResult, Long id) {
//补充消息列表
for (MemorySliceResult memorySliceResult : memoryResult.getMemorySliceResult()) {
if (memorySliceResult.getMemorySlice().getTimestamp().equals(id)) {
evaluatedSlice.setChatMessages(memorySliceResult.getMemorySlice().getChatMessages());
return;
}
}
for (MemorySlice memorySlice : memoryResult.getRelatedMemorySliceResult()) {
if (memorySlice.getTimestamp().equals(id)) {
evaluatedSlice.setChatMessages(memorySlice.getChatMessages());
return;
}
}
}
private void setSliceSummaryList(MemoryResult memoryResult, List<SliceSummary> sliceSummaryList, Map<Long, SliceSummary> map) {
for (MemorySliceResult memorySliceResult : memoryResult.getMemorySliceResult()) {
SliceSummary sliceSummary = new SliceSummary();
sliceSummary.setId(memorySliceResult.getMemorySlice().getTimestamp());
String stringBuilder = memorySliceResult.getSliceBefore().getSummary() +
"\r\n" +
memorySliceResult.getMemorySlice().getSummary() +
"\r\n" +
memorySliceResult.getSliceAfter().getSummary();
sliceSummary.setSummary(stringBuilder);
StringBuilder stringBuilder = new StringBuilder();
if (memorySliceResult.getSliceBefore() != null) {
stringBuilder.append(memorySliceResult.getSliceBefore().getSummary())
.append("\r\n");
}
stringBuilder.append(memorySliceResult.getMemorySlice().getSummary());
if (memorySliceResult.getSliceAfter() != null) {
stringBuilder.append("\r\n")
.append(memorySliceResult.getSliceAfter().getSummary())
.append("\r\n");
}
sliceSummary.setSummary(stringBuilder.toString());
Long timestamp = memorySliceResult.getMemorySlice().getTimestamp();
sliceSummary.setDate(DateUtil.date(timestamp).toLocalDateTime().toLocalDate());