From 347560d979313ab8748ba36755cd2b2bf19f8064 Mon Sep 17 00:00:00 2001 From: slhafzjw Date: Wed, 15 Apr 2026 22:16:33 +0800 Subject: [PATCH] refactor(context): rename VisibleDomain into FocusedDomain, and optimize related context usage --- .../partner/core/cognition/CognitionCore.java | 2 +- .../core/cognition/ContextWorkspace.kt | 14 ++--- .../BuiltinCapabilityActionProvider.java | 2 +- .../BuiltinInterventionActionProvider.java | 9 +-- .../executor/ActionCorrectionRecognizer.java | 6 +- .../action/executor/ActionCorrector.java | 7 ++- .../executor/ExecutingActionBlockManager.java | 12 ++-- .../action/executor/ParamsExtractor.java | 6 +- .../module/action/planner/ActionPlanner.java | 4 +- .../planner/evaluator/ActionEvaluator.java | 7 ++- .../planner/extractor/ActionExtractor.java | 4 +- .../communication/CommunicationProducer.java | 2 +- .../module/communication/DialogRolling.java | 2 +- .../memory/selector/MemorySelector.java | 2 +- .../evaluator/SliceSelectEvaluator.java | 3 +- .../extractor/MemorySelectExtractor.java | 2 +- .../module/memory/updater/MemoryUpdater.java | 4 +- .../module/perceive/PerceiveMonitor.java | 2 +- .../exception/ContextExceptionReporter.java | 2 +- .../core/cognition/ContextWorkspaceTest.kt | 56 +++++++++---------- 20 files changed, 73 insertions(+), 75 deletions(-) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java index 0e0e4928..102bc960 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/CognitionCore.java @@ -108,7 +108,7 @@ public class CognitionCore implements StateSerializable { appendRepeatedElements(document, root, "chat_message", resolveRecentChatMessages()); } }, - Set.of(ContextBlock.VisibleDomain.COGNITION), + Set.of(ContextBlock.FocusedDomain.COMMUNICATION), 100, 10, 4 diff --git a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/ContextWorkspace.kt b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/ContextWorkspace.kt index 64304498..a6df39e9 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/ContextWorkspace.kt +++ b/Partner-Core/src/main/java/work/slhaf/partner/core/cognition/ContextWorkspace.kt @@ -27,10 +27,10 @@ class ContextWorkspace { private val lock = ReentrantReadWriteLock() /** - * 根据传入的 [ContextBlock.VisibleDomain] 列表,获取上下文块 + * 根据传入的 [ContextBlock.FocusedDomain] 列表,获取上下文块 * @param domains 需要获取上下文的域列表,顺序将决定权重优先级,按照列表排序将具备线性权重分层,最终反映到 blockContent 列表的排序上 */ - fun resolve(domains: List): ResolvedContext = lock.write { + fun resolve(domains: List): ResolvedContext = lock.write { if (domains.isEmpty()) { return@write ResolvedContext(emptyList()) } @@ -51,7 +51,7 @@ class ContextWorkspace { continue } - val matchedDomains = block.visibleTo.intersect(domainWeights.keys) + val matchedDomains = block.focusedOn.intersect(domainWeights.keys) if (matchedDomains.isEmpty()) { continue } @@ -158,7 +158,7 @@ class ContextWorkspace { val payload = JSONObject() payload["blockName"] = block.sourceKey.blockName payload["source"] = block.sourceKey.source - payload["visibleTo"] = block.visibleTo.map { it.name } + payload["focusedOn"] = block.focusedOn.map { it.name } payload["fullRendered"] = block.blockContent.encodeToXmlString() payload["compactRendered"] = block.compactBlock.encodeToXmlString() payload["abstractRendered"] = block.abstractBlock.encodeToXmlString() @@ -179,9 +179,9 @@ data class ContextBlock @JvmOverloads constructor( val compactBlock: BlockContent = blockContent, val abstractBlock: BlockContent = blockContent, /** - * 对哪些域可见 + * 该 block 集中在哪些域 */ - val visibleTo: Set, + val focusedOn: Set, /** * 新的 [blockContent] 属性与其相同时,发生的衰退步长 @@ -216,7 +216,7 @@ data class ContextBlock @JvmOverloads constructor( private var activationScore = 100.0 private var lastTouchedAt = Instant.now() - enum class VisibleDomain { + enum class FocusedDomain { ACTION, MEMORY, PERCEIVE, diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinCapabilityActionProvider.java b/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinCapabilityActionProvider.java index 87eaf08d..92dcd8e7 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinCapabilityActionProvider.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinCapabilityActionProvider.java @@ -79,7 +79,7 @@ class BuiltinCapabilityActionProvider implements BuiltinActionProvider { MemoryUnit unit = memoryCapability.getMemoryUnit(unitId); cognitionCapability.contextWorkspace().register(new ContextBlock( buildMemoryRecallFullBlock(unit, slice), - Set.of(ContextBlock.VisibleDomain.MEMORY), + Set.of(ContextBlock.FocusedDomain.MEMORY), 60, 16, 28 diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinInterventionActionProvider.java b/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinInterventionActionProvider.java index ba25e2c3..6c0ea5f5 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinInterventionActionProvider.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/action/builtin/BuiltinInterventionActionProvider.java @@ -12,10 +12,7 @@ import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionInfo; import work.slhaf.partner.core.action.entity.intervention.InterventionType; import work.slhaf.partner.core.action.entity.intervention.MetaIntervention; -import work.slhaf.partner.core.cognition.BlockContent; -import work.slhaf.partner.core.cognition.CognitionCapability; -import work.slhaf.partner.core.cognition.ContextBlock; -import work.slhaf.partner.core.cognition.ContextWorkspace; +import work.slhaf.partner.core.cognition.*; import work.slhaf.partner.framework.agent.exception.AgentRuntimeException; import work.slhaf.partner.framework.agent.exception.ExceptionReporterHandler; import work.slhaf.partner.framework.agent.factory.capability.annotation.InjectCapability; @@ -133,7 +130,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider { String blockName = "acquire_intervention-" + actionId; String source = "action_executor"; contextWorkspace.register(new ContextBlock( - new BlockContent(blockName, source) { + new CommunicationBlockContent(blockName, source, BlockContent.Urgency.HIGH, CommunicationBlockContent.Projection.SUPPLY) { @Override protected void fillXml(@NotNull Document document, @NotNull Element root) { appendTextElement(document, root, "action_id", actionId); @@ -141,7 +138,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider { appendTextElement(document, root, "demand", demand); } }, - Set.of(ContextBlock.VisibleDomain.ACTION, ContextBlock.VisibleDomain.COMMUNICATION), + Set.of(ContextBlock.FocusedDomain.ACTION), 10, 10, 20 diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/action/executor/ActionCorrectionRecognizer.java b/Partner-Core/src/main/java/work/slhaf/partner/module/action/executor/ActionCorrectionRecognizer.java index 9a7ce11b..c93d73cb 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/action/executor/ActionCorrectionRecognizer.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/action/executor/ActionCorrectionRecognizer.java @@ -53,9 +53,9 @@ public class ActionCorrectionRecognizer extends AbstractAgentModule.Sub messages = List.of( cognitionCapability.contextWorkspace().resolve(List.of( - ContextBlock.VisibleDomain.ACTION, - ContextBlock.VisibleDomain.COGNITION, - ContextBlock.VisibleDomain.MEMORY + ContextBlock.FocusedDomain.ACTION, + ContextBlock.FocusedDomain.COMMUNICATION, + ContextBlock.FocusedDomain.COGNITION, + ContextBlock.FocusedDomain.MEMORY )).encodeToMessage(), availableMetaActionContext(), new Message(Message.Character.USER, tendency) diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/extractor/ActionExtractor.java b/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/extractor/ActionExtractor.java index e365bcaf..5063fb35 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/extractor/ActionExtractor.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/action/planner/extractor/ActionExtractor.java @@ -23,8 +23,8 @@ public class ActionExtractor extends AbstractAgentModule.Sub doExecute(String input) { List messages = List.of( cognitionCapability.contextWorkspace().resolve(List.of( - ContextBlock.VisibleDomain.COGNITION, - ContextBlock.VisibleDomain.ACTION + ContextBlock.FocusedDomain.COMMUNICATION, + ContextBlock.FocusedDomain.ACTION )).encodeToMessage(), new Message(Message.Character.USER, input) ); diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/communication/CommunicationProducer.java b/Partner-Core/src/main/java/work/slhaf/partner/module/communication/CommunicationProducer.java index 46b94169..ab94eb4c 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/communication/CommunicationProducer.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/communication/CommunicationProducer.java @@ -79,7 +79,7 @@ public class CommunicationProducer extends AbstractAgentModule.Running buildChatMessages(PartnerRunningFlowContext runningFlowContext) { ResolvedContext resolvedContext = cognitionCapability.contextWorkspace() - .resolve(List.of(ContextBlock.VisibleDomain.COMMUNICATION, ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.PERCEIVE, ContextBlock.VisibleDomain.ACTION)); + .resolve(List.of(ContextBlock.FocusedDomain.COGNITION, ContextBlock.FocusedDomain.ACTION, ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.PERCEIVE)); List communicationBlocks = resolvedContext.getBlocks(); List historyMessages = snapshotConversationMessages(); List temp = new ArrayList<>(historyMessages.size() + 2); diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/communication/DialogRolling.java b/Partner-Core/src/main/java/work/slhaf/partner/module/communication/DialogRolling.java index 2fb94d71..0cf6150c 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/communication/DialogRolling.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/communication/DialogRolling.java @@ -175,7 +175,7 @@ public class DialogRolling extends AbstractAgentModule.Running extractResult = formattedChat( List.of( cognitionCapability.contextWorkspace().resolve(List.of( - ContextBlock.VisibleDomain.COGNITION, - ContextBlock.VisibleDomain.MEMORY + ContextBlock.FocusedDomain.COGNITION, + ContextBlock.FocusedDomain.MEMORY )).encodeToMessage(), resolveTopicTaskMessage(result, slicedMessages) ), diff --git a/Partner-Core/src/main/java/work/slhaf/partner/module/perceive/PerceiveMonitor.java b/Partner-Core/src/main/java/work/slhaf/partner/module/perceive/PerceiveMonitor.java index 7553b717..290d0db2 100644 --- a/Partner-Core/src/main/java/work/slhaf/partner/module/perceive/PerceiveMonitor.java +++ b/Partner-Core/src/main/java/work/slhaf/partner/module/perceive/PerceiveMonitor.java @@ -38,7 +38,7 @@ public class PerceiveMonitor extends AbstractAgentModule.Running")) @@ -152,20 +152,20 @@ class ContextWorkspaceTest { source = "main", content = "evicted", replaceFadeFactor = 100.0, - visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) + visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY) ) val replacement = contextBlock( blockName = "memory", source = "main", content = "replacement", replaceFadeFactor = 100.0, - visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY) + visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY) ) manager.register(evicted) manager.register(replacement) - val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) + val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY)) assertEquals(listOf("replacement"), resolved.blocks.map { (it as TestBlockContent).content }) } @@ -195,7 +195,7 @@ class ContextWorkspaceTest { manager.expire("memory", "main") - val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) + val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY)) assertEquals(listOf("survivor"), resolved.blocks.map { (it as TestBlockContent).content }) } @@ -218,7 +218,7 @@ class ContextWorkspaceTest { manager.expire("memory", "main") manager.register(restored) - val resolved = manager.resolve(listOf(ContextBlock.VisibleDomain.MEMORY)) + val resolved = manager.resolve(listOf(ContextBlock.FocusedDomain.MEMORY)) assertEquals(listOf("restored"), resolved.blocks.map { (it as TestBlockContent).content }) } @@ -233,7 +233,7 @@ class ContextWorkspaceTest { blockContent = original, compactBlock = compact, abstractBlock = summary, - visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY), + focusedOn = setOf(ContextBlock.FocusedDomain.MEMORY), replaceFadeFactor = 40.0, timeFadeFactor = 0.0, activateFactor = 0.0 @@ -245,7 +245,7 @@ class ContextWorkspaceTest { blockContent = original, compactBlock = compact, abstractBlock = summary, - visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY), + focusedOn = setOf(ContextBlock.FocusedDomain.MEMORY), replaceFadeFactor = 80.0, timeFadeFactor = 0.0, activateFactor = 0.0 @@ -375,17 +375,17 @@ class ContextWorkspaceTest { content = "full", compactContent = "compact", abstractContent = "abstract", - visibleTo = setOf(ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.ACTION), + visibleTo = setOf(ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.ACTION), replaceFadeFactor = 80.0 ) block.applyReplaceFade() manager.register(block) val primaryResolved = manager.resolve( - listOf(ContextBlock.VisibleDomain.MEMORY, ContextBlock.VisibleDomain.ACTION) + listOf(ContextBlock.FocusedDomain.MEMORY, ContextBlock.FocusedDomain.ACTION) ) val secondaryResolved = manager.resolve( - listOf(ContextBlock.VisibleDomain.PERCEIVE, ContextBlock.VisibleDomain.ACTION) + listOf(ContextBlock.FocusedDomain.PERCEIVE, ContextBlock.FocusedDomain.ACTION) ) assertEquals(listOf("compact"), primaryResolved.blocks.map { (it as TestBlockContent).content }) @@ -400,7 +400,7 @@ class ContextWorkspaceTest { blockContent = TestBlockContent("memory", "main", "full-critical", BlockContent.Urgency.CRITICAL), compactBlock = TestBlockContent("memory", "main", "compact-low", BlockContent.Urgency.LOW), abstractBlock = TestBlockContent("memory", "main", "abstract-low", BlockContent.Urgency.LOW), - visibleTo = setOf(ContextBlock.VisibleDomain.ACTION), + focusedOn = setOf(ContextBlock.FocusedDomain.ACTION), replaceFadeFactor = 20.0, timeFadeFactor = 0.0, activateFactor = 0.0 @@ -411,7 +411,7 @@ class ContextWorkspaceTest { blockContent = TestBlockContent("memory", "main", "full-normal", BlockContent.Urgency.NORMAL), compactBlock = TestBlockContent("memory", "main", "compact-normal", BlockContent.Urgency.NORMAL), abstractBlock = TestBlockContent("memory", "main", "abstract-normal", BlockContent.Urgency.NORMAL), - visibleTo = setOf(ContextBlock.VisibleDomain.ACTION), + focusedOn = setOf(ContextBlock.FocusedDomain.ACTION), replaceFadeFactor = 80.0, timeFadeFactor = 0.0, activateFactor = 0.0 @@ -419,7 +419,7 @@ class ContextWorkspaceTest { ) val resolved = manager.resolve( - listOf(ContextBlock.VisibleDomain.PERCEIVE, ContextBlock.VisibleDomain.ACTION) + listOf(ContextBlock.FocusedDomain.PERCEIVE, ContextBlock.FocusedDomain.ACTION) ) val aggregated = resolved.blocks.single() @@ -439,7 +439,7 @@ class ContextWorkspaceTest { content: String, compactContent: String = "${content}-compact", abstractContent: String = "${content}-abstract", - visibleTo: Set = setOf(ContextBlock.VisibleDomain.MEMORY), + visibleTo: Set = setOf(ContextBlock.FocusedDomain.MEMORY), replaceFadeFactor: Double = 10.0, timeFadeFactor: Double = 0.0, activateFactor: Double = 0.0 @@ -448,7 +448,7 @@ class ContextWorkspaceTest { blockContent = TestBlockContent(blockName, source, content), compactBlock = TestBlockContent(blockName, source, compactContent), abstractBlock = TestBlockContent(blockName, source, abstractContent), - visibleTo = visibleTo, + focusedOn = visibleTo, replaceFadeFactor = replaceFadeFactor, timeFadeFactor = timeFadeFactor, activateFactor = activateFactor