refactor(perceive): refactor into registering context via ContextWorkspace

This commit is contained in:
2026-03-22 22:17:21 +08:00
parent 93b0199c9e
commit 61d5270625

View File

@@ -1,27 +1,49 @@
package work.slhaf.partner.module.modules.perceive;
import lombok.AllArgsConstructor;
import lombok.Setter;
import org.jetbrains.annotations.NotNull;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
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.runtime.interaction.flow.ContextBlock;
import work.slhaf.partner.core.cognition.CognitionCapability;
import work.slhaf.partner.core.cognition.CommunicationBlockContent;
import work.slhaf.partner.core.cognition.ContextBlock;
import work.slhaf.partner.core.perceive.PerceiveCapability;
import work.slhaf.partner.runtime.interaction.data.context.PartnerRunningFlowContext;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Set;
@Setter
public class PerceiveMonitor extends AbstractAgentModule.Running<PartnerRunningFlowContext> {
@InjectCapability
private PerceiveCapability perceiveCapability;
@InjectCapability
private CognitionCapability cognitionCapability;
@Override
public void execute(PartnerRunningFlowContext context) {
context.getContextBlocks().add(new PerceiveBlock(perceiveCapability.refreshInteract()));
String lastInteractTime = perceiveCapability.refreshInteract();
ContextBlock block = new ContextBlock(
new CommunicationBlockContent(
"environment_perceive_info",
"perceive_monitor",
CommunicationBlockContent.Projection.SUPPLY
) {
@Override
protected void fillXml(@NotNull Document document, @NotNull Element root) {
appendTextElement(document, root, "last_interact_time", lastInteractTime);
appendTextElement(document, root, "current_time", ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
},
Set.of(ContextBlock.VisibleDomain.COMMUNICATION),
100,
30,
0
);
cognitionCapability.contextWorkspace().register(block);
}
@Override
@@ -29,43 +51,4 @@ public class PerceiveMonitor extends AbstractAgentModule.Running<PartnerRunningF
return 1;
}
@AllArgsConstructor
private static class PerceiveBlock extends ContextBlock {
private String lastInteractTime;
@Override
public int getPriority() {
return 0;
}
@Override
@NotNull
public Type getType() {
return Type.CONTEXT;
}
@Override
@NotNull
public String getBlockName() {
return "perceive_info";
}
@Override
@NotNull
public String getSource() {
return "perceive_monitor";
}
@Override
protected void fillXml(@NotNull Document document, @NotNull Element root) {
Element lastInteractTime = document.createElement("last_interact_time");
lastInteractTime.setTextContent(this.lastInteractTime);
root.appendChild(lastInteractTime);
Element currentTime = document.createElement("current_time");
currentTime.setTextContent(ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
root.appendChild(currentTime);
}
}
}