From 0e1201253d3a24b1cf1b002c4fe0db3161ff9015 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Tue, 26 May 2026 21:28:41 +0800 Subject: [PATCH] refactor(impression): Improve impression entity snapshots --- .../core/cognition/impression/ActiveEntity.kt | 9 ++-- .../core/cognition/impression/Entity.kt | 17 ++++++- .../cognition/impression/ImpressionCore.java | 51 +++++++++++++++++++ 3 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ImpressionCore.java diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ActiveEntity.kt b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ActiveEntity.kt index 44bec21d..5d792b00 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ActiveEntity.kt +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ActiveEntity.kt @@ -9,16 +9,19 @@ class ActiveEntity @JvmOverloads constructor( timestamp: Long = System.currentTimeMillis(), private val _evidences: MutableList = mutableListOf(), ) : BlockContent("active_entity_$timestamp", "impression") { - val evidences: List get() = _evidences + val evidences: List + get() = synchronized(_evidences) { _evidences.toList() } private val _subject = AtomicReference("UNKNOWN") val subject: String get() = _subject.get() private val _projectedFeatures: MutableMap = mutableMapOf() - val projectedFeatures: Map get() = _projectedFeatures + val projectedFeatures: Map + get() = synchronized(_projectedFeatures) { _projectedFeatures.toMap() } private val _projectedImpressions: MutableMap = mutableMapOf() - val projectedImpressions: Map get() = _projectedImpressions + val projectedImpressions: Map + get() = synchronized(_projectedImpressions) { _projectedImpressions.toMap() } fun addEvidence(evidence: String) = synchronized(_evidences) { _evidences.add(evidence) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt index 7f431595..bbc9df63 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/Entity.kt @@ -7,7 +7,7 @@ import kotlin.concurrent.withLock class Entity @JvmOverloads constructor( val uuid: String = UUID.randomUUID().toString(), - private val subject: String, + val subject: String, private val relations: MutableMap> = mutableMapOf(), private val impressions: MutableMap = mutableMapOf(), private val features: MutableMap = mutableMapOf() @@ -105,6 +105,16 @@ class Entity @JvmOverloads constructor( }.toSet() } + + fun showFeatures(): Set = featureLock.withLock { + features.map { + FeatureView( + it.key, + it.value.confidence + ) + }.toSet() + } + data class IndexableData( var confidence: Double ) { @@ -127,6 +137,11 @@ class Entity @JvmOverloads constructor( val relations: Map ) + data class FeatureView( + val feature: String, + val confidence: Double + ) + @Suppress("ArrayInDataClass") data class ImpressionView( val impression: String, diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ImpressionCore.java b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ImpressionCore.java new file mode 100644 index 00000000..61888146 --- /dev/null +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/impression/ImpressionCore.java @@ -0,0 +1,51 @@ +package work.slhaf.partner.core.cognition.impression; + +import com.alibaba.fastjson2.JSONObject; +import org.jetbrains.annotations.NotNull; +import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore; +import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityMethod; +import work.slhaf.partner.framework.agent.state.State; +import work.slhaf.partner.framework.agent.state.StateSerializable; + +import java.nio.file.Path; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +@CapabilityCore(value = "cognition") +public class ImpressionCore implements StateSerializable { + + private final ConcurrentHashMap knownEntities = new ConcurrentHashMap<>(); + + @CapabilityMethod + public void updateRelation(){ + } + + @CapabilityMethod + public void updateImpression(){ + } + + @CapabilityMethod + public void showImpressions(){ + } + + @CapabilityMethod + public void projectEntity(Set activeEntities){ + } + + @Override + public @NotNull Path statePath() { + return Path.of("core", "impression.json"); + } + + @Override + public void load(@NotNull JSONObject state) { + + } + + + @Override + public @NotNull State convert() { + State state = new State(); + return state; + } +}