refactor(module): remove legacy prompt scaffolding

This commit is contained in:
2026-03-10 17:15:50 +08:00
parent 0f3d4659ae
commit 760ba8300b
10 changed files with 19 additions and 276 deletions

View File

@@ -1,19 +0,0 @@
package work.slhaf.partner.module.common.entity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.common.entity.PersistableObject;
import java.io.Serial;
import java.util.Map;
@EqualsAndHashCode(callSuper = true)
@Data
public class AppendPromptData extends PersistableObject {
@Serial
private static final long serialVersionUID = 1L;
private String moduleName;
private Map<String, String> appendedPrompt;
}

View File

@@ -1,40 +0,0 @@
package work.slhaf.partner.module.common.module;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.module.common.entity.AppendPromptData;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import java.util.Map;
/**
* 前置模块抽象类
*/
public abstract class PreRunningAbstractAgentModuleAbstract extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
private synchronized void setAppendedPrompt(PartnerRunningFlowContext context) {
AppendPromptData data = new AppendPromptData();
data.setModuleName(moduleName());
Map<String, String> map = getPromptDataMap(context);
data.setAppendedPrompt(map);
context.appendPrompt(data);
}
private synchronized void setActiveModule(PartnerRunningFlowContext context) {
context.getCoreContext().addActiveModule(moduleName());
}
protected abstract Map<String, String> getPromptDataMap(PartnerRunningFlowContext context);
/**
* 用于在CoreModule接收到的模块Prompt中标识模块名称
*/
protected abstract String moduleName();
@Override
public final void execute(PartnerRunningFlowContext context) {
doExecute(context); // 子类实现差异化逻辑
setAppendedPrompt(context); // 通用逻辑
setActiveModule(context); // 通用逻辑
}
protected abstract void doExecute(PartnerRunningFlowContext context);
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import lombok.val; import lombok.val;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.api.agent.factory.component.abstracts.ActivateModel; import work.slhaf.partner.api.agent.factory.component.abstracts.ActivateModel;
import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule;
import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.core.action.ActionCapability;
@@ -12,7 +13,6 @@ import work.slhaf.partner.core.action.entity.ExecutableAction;
import work.slhaf.partner.core.action.entity.PhaserRecord; import work.slhaf.partner.core.action.entity.PhaserRecord;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.action.interventor.entity.InterventionType; import work.slhaf.partner.module.modules.action.interventor.entity.InterventionType;
import work.slhaf.partner.module.modules.action.interventor.entity.MetaIntervention; import work.slhaf.partner.module.modules.action.interventor.entity.MetaIntervention;
import work.slhaf.partner.module.modules.action.interventor.evaluator.InterventionEvaluator; import work.slhaf.partner.module.modules.action.interventor.evaluator.InterventionEvaluator;
@@ -33,7 +33,7 @@ import java.util.stream.Stream;
/** /**
* 负责识别潜在的行动干预信息,作用于正在进行或已存在的行动池中内容 * 负责识别潜在的行动干预信息,作用于正在进行或已存在的行动池中内容
*/ */
public class ActionInterventor extends PreRunningAbstractAgentModuleAbstract implements ActivateModel { public class ActionInterventor extends AbstractAgentModule.Running<PartnerRunningFlowContext> implements ActivateModel {
private final AssemblyHelper assemblyHelper = new AssemblyHelper(); private final AssemblyHelper assemblyHelper = new AssemblyHelper();
private final PromptHelper promptHelper = new PromptHelper(); private final PromptHelper promptHelper = new PromptHelper();
/** /**
@@ -53,7 +53,7 @@ public class ActionInterventor extends PreRunningAbstractAgentModuleAbstract imp
private MemoryCapability memoryCapability; private MemoryCapability memoryCapability;
@Override @Override
protected void doExecute(PartnerRunningFlowContext context) { public void execute(PartnerRunningFlowContext context) {
// 综合当前正在进行的行动链信息、用户交互历史、激活的记忆切片,尝试识别出是否存在行动干预意图 // 综合当前正在进行的行动链信息、用户交互历史、激活的记忆切片,尝试识别出是否存在行动干预意图
// 首先通过recognizer进行快速意图识别识别成功则步入评估阶段评估成功则直接作用于目标行动链 // 首先通过recognizer进行快速意图识别识别成功则步入评估阶段评估成功则直接作用于目标行动链
// 进行快速意图识别时必须结合近期对话与进行中行动链情况 // 进行快速意图识别时必须结合近期对话与进行中行动链情况
@@ -134,16 +134,6 @@ public class ActionInterventor extends PreRunningAbstractAgentModuleAbstract imp
return "action_identifier"; return "action_identifier";
} }
@Override
protected Map<String, String> getPromptDataMap(PartnerRunningFlowContext context) {
return interventionPrompt.remove(context.getInfo().getUuid());
}
@Override
protected String moduleName() {
return "[行动干预识别模块]";
}
@Override @Override
public int order() { public int order() {
return 2; return 2;

View File

@@ -1,9 +1,9 @@
package work.slhaf.partner.module.modules.action.planner; package work.slhaf.partner.module.modules.action.planner;
import kotlin.Unit; import kotlin.Unit;
import lombok.val;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.api.agent.factory.component.annotation.Init; import work.slhaf.partner.api.agent.factory.component.annotation.Init;
import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule;
import work.slhaf.partner.api.chat.pojo.Message; import work.slhaf.partner.api.chat.pojo.Message;
@@ -16,7 +16,6 @@ import work.slhaf.partner.core.action.entity.cache.CacheAdjustMetaData;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.action.executor.ActionExecutor; import work.slhaf.partner.module.modules.action.executor.ActionExecutor;
import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer; import work.slhaf.partner.module.modules.action.planner.confirmer.ActionConfirmer;
import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput; import work.slhaf.partner.module.modules.action.planner.confirmer.entity.ConfirmerInput;
@@ -42,7 +41,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
/** /**
* 负责针对本次输入生成基础的行动计划 * 负责针对本次输入生成基础的行动计划
*/ */
public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract { public class ActionPlanner extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
private static final long PENDING_TTL_MILLIS = 30 * 60 * 1000L; private static final long PENDING_TTL_MILLIS = 30 * 60 * 1000L;
private static final long PENDING_REMINDER_ADVANCE_MILLIS = 5 * 60 * 1000L; private static final long PENDING_REMINDER_ADVANCE_MILLIS = 5 * 60 * 1000L;
@@ -78,7 +77,7 @@ public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract {
} }
@Override @Override
protected void doExecute(PartnerRunningFlowContext context) { public void execute(PartnerRunningFlowContext context) {
try { try {
List<Callable<Void>> tasks = new ArrayList<>(); List<Callable<Void>> tasks = new ArrayList<>();
addConfirmTask(tasks, context); addConfirmTask(tasks, context);
@@ -301,51 +300,6 @@ public class ActionPlanner extends PreRunningAbstractAgentModuleAbstract {
} }
} }
@Override
protected Map<String, String> getPromptDataMap(PartnerRunningFlowContext context) {
HashMap<String, String> map = new HashMap<>();
String userId = context.getSource();
setupPendingActions(map, userId);
setupPreparedActions(map, userId);
return map;
}
private void setupPendingActions(HashMap<String, String> map, String userId) {
List<PendingActionRecord> pendingActions = actionCapability.listActivePendingActions(userId);
if (pendingActions.isEmpty()) {
map.put("[待确认行动] <等待用户确认的行动信息>", "无待确认行动");
return;
}
for (int i = 0; i < pendingActions.size(); i++) {
map.put(
"[待确认行动 " + (i + 1) + " ] <等待用户确认的行动信息>",
generateActionStr(pendingActions.get(i).getExecutableAction())
);
}
}
private void setupPreparedActions(HashMap<String, String> map, String userId) {
val preparedActions = actionCapability.listActions(ExecutableAction.Status.PREPARE, userId).stream().toList();
if (preparedActions.isEmpty()) {
map.put("[预备行动] <预备执行或放入计划池的行动信息>", "无预备行动");
return;
}
for (int i = 0; i < preparedActions.size(); i++) {
map.put("[预备行动 " + (i + 1) + " ] <预备执行或放入计划池的行动信息>", generateActionStr(preparedActions.get(i)));
}
}
private String generateActionStr(ExecutableAction executableAction) {
return "<行动倾向>" + " : " + executableAction.getTendency() +
"<行动原因>" + " : " + executableAction.getReason() +
"<工具描述>" + " : " + executableAction.getDescription();
}
@Override
protected String moduleName() {
return "[行动模块]";
}
@Override @Override
public int order() { public int order() {
return 2; return 2;

View File

@@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule; import work.slhaf.partner.api.agent.factory.component.annotation.InjectModule;
import work.slhaf.partner.api.chat.pojo.Message;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.memory.MemoryCapability; import work.slhaf.partner.core.memory.MemoryCapability;
import work.slhaf.partner.core.memory.exception.UnExistedDateIndexException; import work.slhaf.partner.core.memory.exception.UnExistedDateIndexException;
@@ -13,7 +13,6 @@ import work.slhaf.partner.core.memory.exception.UnExistedTopicException;
import work.slhaf.partner.core.memory.pojo.EvaluatedSlice; import work.slhaf.partner.core.memory.pojo.EvaluatedSlice;
import work.slhaf.partner.core.memory.pojo.MemoryResult; import work.slhaf.partner.core.memory.pojo.MemoryResult;
import work.slhaf.partner.core.memory.pojo.MemorySlice; import work.slhaf.partner.core.memory.pojo.MemorySlice;
import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.module.modules.memory.selector.evaluator.SliceSelectEvaluator; import work.slhaf.partner.module.modules.memory.selector.evaluator.SliceSelectEvaluator;
import work.slhaf.partner.module.modules.memory.selector.evaluator.entity.EvaluatorInput; import work.slhaf.partner.module.modules.memory.selector.evaluator.entity.EvaluatorInput;
import work.slhaf.partner.module.modules.memory.selector.extractor.MemorySelectExtractor; import work.slhaf.partner.module.modules.memory.selector.extractor.MemorySelectExtractor;
@@ -22,13 +21,13 @@ import work.slhaf.partner.module.modules.memory.selector.extractor.entity.Extrac
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import static work.slhaf.partner.common.util.ExtractUtil.extractUserId; import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class MemorySelector extends PreRunningAbstractAgentModuleAbstract { public class MemorySelector extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
@InjectCapability @InjectCapability
private MemoryCapability memoryCapability; private MemoryCapability memoryCapability;
@InjectCapability @InjectCapability
@@ -39,7 +38,7 @@ public class MemorySelector extends PreRunningAbstractAgentModuleAbstract {
private MemorySelectExtractor memorySelectExtractor; private MemorySelectExtractor memorySelectExtractor;
@Override @Override
public void doExecute(PartnerRunningFlowContext runningFlowContext) { public void execute(PartnerRunningFlowContext runningFlowContext) {
String userId = runningFlowContext.getSource(); String userId = runningFlowContext.getSource();
//获取主题路径 //获取主题路径
ExtractorResult extractorResult = memorySelectExtractor.execute(runningFlowContext); ExtractorResult extractorResult = memorySelectExtractor.execute(runningFlowContext);
@@ -119,46 +118,6 @@ public class MemorySelector extends PreRunningAbstractAgentModuleAbstract {
return false; return false;
} }
@Override
public String moduleName() {
return "[记忆模块]";
}
@Override
protected Map<String, String> getPromptDataMap(PartnerRunningFlowContext context) {
HashMap<String, String> map = new HashMap<>();
String userId = context.getSource();
String dialogMapStr = memoryCapability.getDialogMapStr();
if (!dialogMapStr.isEmpty()) {
map.put("[记忆缓存] <你最近两日和所有聊天者的对话记忆印象>", dialogMapStr);
}
String userDialogMapStr = memoryCapability.getUserDialogMapStr(userId);
if (userDialogMapStr != null && !userDialogMapStr.isEmpty() && !isSingleUser()) {
map.put("[用户记忆缓存] <与最新一条消息的发送者的近两天对话记忆印象, 可能与[记忆缓存]稍有重复>", userDialogMapStr);
}
String sliceStr = memoryCapability.getActivatedSlicesStr(userId);
if (sliceStr != null && !sliceStr.isEmpty()) {
map.put("[记忆切片] <你与最新一条消息的发送者的相关回忆, 不会与[记忆缓存]重复, 如果有重复你也可以指出来>", sliceStr);
}
return map;
}
// TODO 本次重构暂时仅以 chatMessages 用作判定基准,原实现额外结合了近两日的对话缓存(但缓存结构的引用确实存在问题)
private boolean isSingleUser() {
Set<String> userIdSet = new HashSet<>();
cognationCapability.getChatMessages().forEach(m -> {
if (m.getRole() == Message.Character.ASSISTANT) {
return;
}
String userId = extractUserId(m.getContent());
if (userId == null || userId.isEmpty()) {
return;
}
userIdSet.add(userId);
});
return userIdSet.size() <= 1;
}
@Override @Override
public int order() { public int order() {
return 2; return 2;

View File

@@ -2,37 +2,17 @@ package work.slhaf.partner.module.modules.perceive.selector;
import lombok.Setter; import lombok.Setter;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.core.perceive.pojo.User;
import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import java.util.HashMap;
import java.util.Map;
@Setter @Setter
public class PerceiveSelector extends PreRunningAbstractAgentModuleAbstract { public class PerceiveSelector extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
@InjectCapability @InjectCapability
private PerceiveCapability perceiveCapability; private PerceiveCapability perceiveCapability;
@Override @Override
public void doExecute(PartnerRunningFlowContext context) { public void execute(PartnerRunningFlowContext context) {
}
@Override
protected Map<String, String> getPromptDataMap(PartnerRunningFlowContext context) {
HashMap<String, String> map = new HashMap<>();
User user = perceiveCapability.getUser(context.getSource());
map.put("[关系] <你与最新聊天用户的关系>", user.getRelation());
map.put("[态度] <你对于最新聊天用户的态度>", user.getAttitude().toString());
map.put("[印象] <你对于最新聊天用户的印象>", user.getImpressions().toString());
map.put("[静态记忆] <你关于最新聊天用户的静态记忆>", user.getStaticMemory().toString());
return map;
}
@Override
public String moduleName() {
return "[感知模块]";
} }
@Override @Override

View File

@@ -3,21 +3,15 @@ package work.slhaf.partner.module.modules.process;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.api.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.core.cognation.CognationCapability; import work.slhaf.partner.core.cognation.CognationCapability;
import work.slhaf.partner.core.perceive.PerceiveCapability; import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.core.perceive.pojo.User; import work.slhaf.partner.core.perceive.pojo.User;
import work.slhaf.partner.module.common.module.PreRunningAbstractAgentModuleAbstract;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext; import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import work.slhaf.partner.runtime.interaction.data.context.subcontext.CoreContext;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract { public class PreprocessExecutor extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
private static final String INFO_PLATFORM = "platform"; private static final String INFO_PLATFORM = "platform";
private static final String INFO_NICKNAME = "nickname"; private static final String INFO_NICKNAME = "nickname";
@@ -27,7 +21,7 @@ public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract {
private PerceiveCapability perceiveCapability; private PerceiveCapability perceiveCapability;
@Override @Override
public void doExecute(PartnerRunningFlowContext context) { public void execute(PartnerRunningFlowContext context) {
checkAndSetMemoryId(); checkAndSetMemoryId();
getInteractionContext(context); getInteractionContext(context);
} }
@@ -50,8 +44,7 @@ public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract {
} }
String userId = user.getUuid(); String userId = user.getUuid();
String userStr = "[" + nickName + "(" + userId + ")]"; String userStr = "[" + nickName + "(" + userId + ")]";
String input = userStr + " " + context.getInput(); log.debug("[PreprocessExecutor] 已识别用户: {} {}", userStr, context.getSource());
setCoreContext(context, input, nickName, userId);
log.debug("[PreprocessExecutor] 预处理结果: {}", context); log.debug("[PreprocessExecutor] 预处理结果: {}", context);
} }
@@ -63,31 +56,6 @@ public class PreprocessExecutor extends PreRunningAbstractAgentModuleAbstract {
return source.substring(split + 1).trim(); return source.substring(split + 1).trim();
} }
@Override
protected Map<String, String> getPromptDataMap(PartnerRunningFlowContext context) {
HashMap<String, String> map = new HashMap<>();
map.put("text", "这部分才是真正的用户输入内容, 就像你之前收到过的输入一样。但...不会是'同一个人'。");
map.put("datetime", "本次用户输入对应的当前时间");
map.put("user_nick", "用户昵称");
map.put("user_id", "用户id, 与user_nick区分, 这是用户的唯一标识");
map.put("active_modules", "已激活的模块, 为false时为激活但未活跃; 为true时为激活且活跃");
map.put("其他", "历史对话中将在用户消息的最后一行标注时间");
return map;
}
@Override
protected String moduleName() {
return "[基础模块]";
}
private void setCoreContext(PartnerRunningFlowContext context, String input, String nickName, String userId) {
CoreContext coreContext = context.getCoreContext();
coreContext.setText(input);
coreContext.setDateTime(LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
coreContext.setUserNick(nickName);
coreContext.setUserId(userId);
}
@Override @Override
public int order() { public int order() {
return 1; return 1;

View File

@@ -2,8 +2,6 @@ package work.slhaf.partner.runtime.interaction.data.context
import com.alibaba.fastjson2.JSONObject import com.alibaba.fastjson2.JSONObject
import work.slhaf.partner.api.agent.runtime.interaction.flow.RunningFlowContext import work.slhaf.partner.api.agent.runtime.interaction.flow.RunningFlowContext
import work.slhaf.partner.module.common.entity.AppendPromptData
import work.slhaf.partner.runtime.interaction.data.context.subcontext.CoreContext
import work.slhaf.partner.runtime.interaction.data.context.subcontext.ModuleContext import work.slhaf.partner.runtime.interaction.data.context.subcontext.ModuleContext
class PartnerRunningFlowContext private constructor( class PartnerRunningFlowContext private constructor(
@@ -48,9 +46,6 @@ class PartnerRunningFlowContext private constructor(
} }
val moduleContext = ModuleContext() val moduleContext = ModuleContext()
val coreContext = CoreContext()
val coreResponse = JSONObject() val coreResponse = JSONObject()
fun appendPrompt(appendPromptData: AppendPromptData) = moduleContext.appendPromptData(appendPromptData)
} }

View File

@@ -1,36 +0,0 @@
package work.slhaf.partner.runtime.interaction.data.context.subcontext;
import com.alibaba.fastjson2.JSONObject;
import lombok.Data;
import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.common.entity.PersistableObject;
import java.io.Serial;
import java.util.HashMap;
@EqualsAndHashCode(callSuper = true)
@Data
public class CoreContext extends PersistableObject {
@Serial
private static final long serialVersionUID = 1L;
private String text;
private String dateTime;
private String userNick;
private String userId;
private HashMap<String, Boolean> activeModules = new HashMap<>();
@Override
public String toString() {
return JSONObject.toJSONString(this);
}
public void addActiveModule(String moduleName) {
activeModules.put(moduleName, false);
}
public void activateModule(String moduleName) {
activeModules.put(moduleName, true);
}
}

View File

@@ -4,11 +4,8 @@ import com.alibaba.fastjson2.JSONObject;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import work.slhaf.partner.api.common.entity.PersistableObject; import work.slhaf.partner.api.common.entity.PersistableObject;
import work.slhaf.partner.module.common.entity.AppendPromptData;
import java.io.Serial; import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
@@ -17,10 +14,5 @@ public class ModuleContext extends PersistableObject {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private List<AppendPromptData> appendedPrompt = new ArrayList<>();
private JSONObject extraContext = new JSONObject(); private JSONObject extraContext = new JSONObject();
public void appendPromptData(AppendPromptData appendPromptData) {
this.appendedPrompt.addFirst(appendPromptData);
}
} }