From 2f09c0cd71d5815dd094da94884316d2f3572a82 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Wed, 15 Oct 2025 03:30:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E8=BF=9B=20ActionExtractor:=20=20?= =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=A4=A7=E8=87=B4=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E5=BC=80=E5=A7=8B=E8=AF=AD=E4=B9=89-=E8=A1=8C=E4=B8=BA?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E7=9B=B8=E5=85=B3=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Partner-Main/pom.xml | 13 ++++++-- .../partner/core/action/ActionCapability.java | 2 ++ .../slhaf/partner/core/action/ActionCore.java | 14 ++++++++ .../core/action/entity/ActionCacheData.java | 18 ++++++++++ .../planner/extractor/ActionExtractor.java | 33 +++++++++++++++++-- .../extractor/entity/ExtractorResult.java | 3 +- .../perceive/updater/PerceiveUpdater.java | 2 -- .../StaticMemoryExtractor.java | 2 -- .../modules/process/PreprocessExecutor.java | 2 -- 9 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ActionCacheData.java diff --git a/Partner-Main/pom.xml b/Partner-Main/pom.xml index cb06e7da..5db5c976 100644 --- a/Partner-Main/pom.xml +++ b/Partner-Main/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 work.slhaf @@ -28,6 +28,12 @@ 1.10.2 test + + + org.nd4j + nd4j-api + 1.0.0-M2.1 + @@ -49,7 +55,8 @@ - + work.slhaf.partner.Main diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java index 04f7eb29..25fa174a 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCapability.java @@ -18,4 +18,6 @@ public interface ActionCapability { List listPendingAction(String userId); void putPendingActions(String userId, MetaActionInfo metaActionInfo); + + List computeActionCache(String input); } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java index 08ec9e5a..9952bff5 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/ActionCore.java @@ -5,6 +5,7 @@ import lombok.Setter; import work.slhaf.partner.api.agent.factory.capability.annotation.Capability; import work.slhaf.partner.api.agent.factory.capability.annotation.CapabilityMethod; import work.slhaf.partner.core.PartnerCore; +import work.slhaf.partner.core.action.entity.ActionCacheData; import work.slhaf.partner.core.action.entity.MetaActionInfo; import java.io.IOException; @@ -27,6 +28,11 @@ public class ActionCore extends PartnerCore { */ private HashMap> pendingActions = new HashMap<>(); + /** + * 语义缓存与行为倾向映射 + */ + private List actionCache = new ArrayList<>(); + //TODO 添加语义缓存,可借由简单向量模型,设想以向量结果为键、行动倾向为值 public ActionCore() throws IOException, ClassNotFoundException { } @@ -73,6 +79,14 @@ public class ActionCore extends PartnerCore { return pendingActions.get(userId); } + @CapabilityMethod + public List computeActionCache(String input){ + //计算本次输入的向量 + + //与现有缓存比对,如果存在,则使缓存计数+1 + return null; + } + @Override protected String getCoreKey() { return "action-core"; diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ActionCacheData.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ActionCacheData.java new file mode 100644 index 00000000..2c9b4ed1 --- /dev/null +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/ActionCacheData.java @@ -0,0 +1,18 @@ +package work.slhaf.partner.core.action.entity; + +import java.util.ArrayList; +import java.util.List; + +import org.nd4j.linalg.api.ndarray.INDArray; + +import lombok.Data; + +@Data +public class ActionCacheData { + private INDArray inputArray; + private INDArray tendencyArray; + private String tendency; + private int count; + private List activateInputs = new ArrayList<>(); + private boolean activated; +} diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java index af0cbedc..6618ad6f 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/ActionExtractor.java @@ -1,19 +1,48 @@ package work.slhaf.partner.module.modules.action.planner.extractor; +import java.util.List; + +import com.alibaba.fastjson2.JSONObject; + +import lombok.extern.slf4j.Slf4j; +import work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability; import work.slhaf.partner.api.agent.factory.module.annotation.AgentSubModule; import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.ActivateModel; import work.slhaf.partner.api.agent.runtime.interaction.flow.abstracts.AgentRunningSubModule; +import work.slhaf.partner.api.chat.constant.ChatConstant; +import work.slhaf.partner.api.chat.pojo.ChatResponse; +import work.slhaf.partner.api.chat.pojo.Message; +import work.slhaf.partner.core.action.ActionCapability; import work.slhaf.partner.module.modules.action.planner.extractor.entity.ExtractorInput; import work.slhaf.partner.module.modules.action.planner.extractor.entity.ExtractorResult; +@Slf4j @AgentSubModule public class ActionExtractor extends AgentRunningSubModule implements ActivateModel { + @InjectCapability + private ActionCapability actionCapability; + @Override public ExtractorResult execute(ExtractorInput data) { - //TODO 添加语义缓存判断 + // TODO 添加语义缓存判断 + List tendencyCache = actionCapability.computeActionCache(data.getInput()); + if ( tendencyCache == null || !tendencyCache.isEmpty()) { + ExtractorResult result = new ExtractorResult(); + return result; + } - return null; + for (int i = 0; i < 3; i++) { + try { + this.chatMessages().add(new Message(ChatConstant.Character.USER, JSONObject.toJSONString(data))); + ChatResponse response = this.chat(); + return JSONObject.parseObject(response.getMessage(), ExtractorResult.class); + } catch (Exception e) { + log.error("[ActionExtractor] 提取信息出错", e); + } + } + + return new ExtractorResult(); } @Override diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/entity/ExtractorResult.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/entity/ExtractorResult.java index 985f3353..fd13d86c 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/entity/ExtractorResult.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/planner/extractor/entity/ExtractorResult.java @@ -2,9 +2,10 @@ package work.slhaf.partner.module.modules.action.planner.extractor.entity; import lombok.Data; +import java.util.ArrayList; import java.util.List; @Data public class ExtractorResult { - private List tendencies; + private List tendencies = new ArrayList<>(); } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java index 65d4f08c..206d6798 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/PerceiveUpdater.java @@ -32,8 +32,6 @@ import java.util.concurrent.locks.ReentrantLock; @AgentModule(name = "perceive_updater", order = 7) public class PerceiveUpdater extends PostRunningModule { - private static volatile PerceiveUpdater perceiveUpdater; - @InjectCapability private PerceiveCapability perceiveCapability; @InjectCapability diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java index 2e01ba9f..87d4f3cf 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/perceive/updater/static_extractor/StaticMemoryExtractor.java @@ -21,8 +21,6 @@ import java.util.HashMap; @AgentSubModule public class StaticMemoryExtractor extends AgentRunningSubModule> implements ActivateModel { - private static volatile StaticMemoryExtractor staticMemoryExtractor; - @InjectCapability private CognationCapability cognationCapability; @InjectCapability diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java index 385fc48e..de7ff1b6 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/process/PreprocessExecutor.java @@ -22,8 +22,6 @@ import java.util.HashMap; @AgentModule(name = "preprocess_executor", order = 1) public class PreprocessExecutor extends PreRunningModule { - private static volatile PreprocessExecutor preprocessExecutor; - @InjectCapability private CognationCapability cognationCapability; @InjectCapability