feat(impression): add impression recaller for projected entities

This commit is contained in:
2026-06-09 11:43:28 +08:00
parent 6dad6fdd6f
commit 0567837dfe
2 changed files with 58 additions and 0 deletions

View File

@@ -2,10 +2,12 @@ package work.slhaf.partner.core.cognition;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import work.slhaf.partner.core.cognition.context.ContextWorkspace; import work.slhaf.partner.core.cognition.context.ContextWorkspace;
import work.slhaf.partner.core.cognition.impression.ActiveEntity;
import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability; import work.slhaf.partner.framework.agent.factory.capability.annotation.Capability;
import work.slhaf.partner.framework.agent.model.pojo.Message; import work.slhaf.partner.framework.agent.model.pojo.Message;
import java.util.List; import java.util.List;
import java.util.Set;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
@Capability("cognition") @Capability("cognition")
@@ -27,4 +29,6 @@ public interface CognitionCapability {
Lock getMessageLock(); Lock getMessageLock();
Set<ActiveEntity> projectEntity(String input);
} }

View File

@@ -0,0 +1,54 @@
package work.slhaf.partner.module.impression;
import lombok.val;
import org.jetbrains.annotations.NotNull;
import work.slhaf.partner.core.cognition.CognitionCapability;
import work.slhaf.partner.core.cognition.context.ContextBlock;
import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability;
import work.slhaf.partner.framework.agent.factory.component.abstracts.AbstractAgentModule;
import work.slhaf.partner.runtime.PartnerRunningFlowContext;
import java.util.Collection;
import java.util.Set;
import java.util.stream.Collectors;
public class ImpressionRecaller extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
@InjectCapability
private CognitionCapability cognitionCapability;
/**
* 从交互中积累谈论的内容的特征(证据),基于证据创建 ActiveEntity然后交给 CognitionCapability 进行投影并更新上下文
*/
@Override
protected void doExecute(@NotNull PartnerRunningFlowContext context) {
val contextWorkspace = cognitionCapability.contextWorkspace();
context.getInputs()
.stream()
.map(inputEntry -> {
val content = inputEntry.getContent();
return cognitionCapability.projectEntity(content);
})
.flatMap(Collection::stream)
.collect(Collectors.toSet())
.forEach(activeEntity -> {
contextWorkspace.register(new ContextBlock(
activeEntity,
activeEntity,
activeEntity,
Set.of(
ContextBlock.FocusedDomain.COGNITION,
ContextBlock.FocusedDomain.MEMORY
),
100,
0.5,
20
));
});
}
@Override
public int order() {
return 2;
}
}