refactor(perceive): manage state serialization via StateCenter in PerceiveCore

This commit is contained in:
2026-04-07 10:05:35 +08:00
parent 9aa793df8e
commit 57bc63c57b
2 changed files with 27 additions and 20 deletions

4
.idea/misc.xml generated
View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="EntryPointsManager"> <component name="EntryPointsManager">
<list size="16"> <list size="18">
<item index="0" class="java.lang.String" itemvalue="lombok.Data" /> <item index="0" class="java.lang.String" itemvalue="lombok.Data" />
<item index="1" class="java.lang.String" itemvalue="net.bytebuddy.implementation.bind.annotation.RuntimeType" /> <item index="1" class="java.lang.String" itemvalue="net.bytebuddy.implementation.bind.annotation.RuntimeType" />
<item index="2" class="java.lang.String" itemvalue="work.slhaf.partner.api.agent.factory.capability.annotation.Capability" /> <item index="2" class="java.lang.String" itemvalue="work.slhaf.partner.api.agent.factory.capability.annotation.Capability" />
@@ -18,6 +18,8 @@
<item index="13" class="java.lang.String" itemvalue="work.slhaf.partner.api.capability.annotation.CapabilityMethod" /> <item index="13" class="java.lang.String" itemvalue="work.slhaf.partner.api.capability.annotation.CapabilityMethod" />
<item index="14" class="java.lang.String" itemvalue="work.slhaf.partner.api.capability.annotation.CoordinateManager" /> <item index="14" class="java.lang.String" itemvalue="work.slhaf.partner.api.capability.annotation.CoordinateManager" />
<item index="15" class="java.lang.String" itemvalue="work.slhaf.partner.api.register.capability.annotation.Capability" /> <item index="15" class="java.lang.String" itemvalue="work.slhaf.partner.api.register.capability.annotation.Capability" />
<item index="16" class="java.lang.String" itemvalue="work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore" />
<item index="17" class="java.lang.String" itemvalue="work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityMethod" />
</list> </list>
<writeAnnotations> <writeAnnotations>
<writeAnnotation name="work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability" /> <writeAnnotation name="work.slhaf.partner.api.agent.factory.capability.annotation.InjectCapability" />

View File

@@ -1,32 +1,25 @@
package work.slhaf.partner.core.perceive; package work.slhaf.partner.core.perceive;
import lombok.EqualsAndHashCode; import com.alibaba.fastjson2.JSONObject;
import lombok.Getter; import org.jetbrains.annotations.NotNull;
import lombok.Setter;
import work.slhaf.partner.core.PartnerCore;
import work.slhaf.partner.framework.agent.factory.capability.annotation.CapabilityCore; 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.factory.capability.annotation.CapabilityMethod;
import work.slhaf.partner.framework.agent.state.State;
import work.slhaf.partner.framework.agent.state.StateSerializable;
import work.slhaf.partner.framework.agent.state.StateValue;
import java.io.IOException; import java.nio.file.Path;
import java.io.Serial;
import java.time.Instant; import java.time.Instant;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.concurrent.locks.ReentrantLock;
@EqualsAndHashCode(callSuper = true)
@CapabilityCore(value = "perceive") @CapabilityCore(value = "perceive")
@Getter public class PerceiveCore implements StateSerializable {
@Setter
public class PerceiveCore extends PartnerCore<PerceiveCore> {
@Serial private Instant lastInteractTime = Instant.ofEpochMilli(0);
private static final long serialVersionUID = 1L;
private static final ReentrantLock usersLock = new ReentrantLock();
private Instant lastInteractTime; public PerceiveCore() {
register();
public PerceiveCore() throws IOException, ClassNotFoundException {
} }
@CapabilityMethod @CapabilityMethod
@@ -42,7 +35,19 @@ public class PerceiveCore extends PartnerCore<PerceiveCore> {
} }
@Override @Override
protected String getCoreKey() { public @NotNull Path statePath() {
return "perceive-core"; return Path.of("core", "perceive.json");
}
@Override
public void load(@NotNull JSONObject state) {
this.lastInteractTime = Instant.ofEpochMilli(state.getLong("last_interact_time"));
}
@Override
public @NotNull State convert() {
State state = new State();
state.append("last_interact_time", StateValue.num(lastInteractTime.toEpochMilli()));
return state;
} }
} }