agentscope-ai / agentscope-ai/agentscope-java
[Bug]: Failed to deserialize Docker sandbox state
- Ngôn ngữ chính
- Java
- Star
- 5.6k
- Fork
- 1.3k
- Merge trung bình
- 4 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 77
Mô tả
package io.agentscope.builder;
import io.agentscope.core.agent.RuntimeContext;
import io.agentscope.core.message.UserMessage;
import io.agentscope.core.session.redis.RedisSession;
import io.agentscope.core.skill.repository.FileSystemSkillRepository;
import io.agentscope.core.tracing.OtelTracingMiddleware;
import io.agentscope.harness.agent.HarnessAgent;
import io.agentscope.harness.agent.IsolationScope;
import io.agentscope.harness.agent.filesystem.spec.DockerFilesystemSpec;
import io.agentscope.harness.agent.memory.compaction.CompactionConfig;
import io.agentscope.harness.agent.memory.compaction.ToolResultEvictionConfig;
import io.agentscope.harness.agent.sandbox.RedisSandboxExecutionGuard;
import io.agentscope.harness.agent.sandbox.SandboxDistributedOptions;
import io.agentscope.harness.agent.sandbox.snapshot.OssSnapshotSpec;
import redis.clients.jedis.JedisPooled;
import java.nio.file.Paths;
import java.time.Duration;
import java.util.List;
public class ProductionAgentFactory {
public HarnessAgent build() {
var workspace = Paths.get(".agentscope/workspace");
var skills = Paths.get(".agentscope/skills");
var jedis = new JedisPooled();
// 1. 分布式 Session
var session = RedisSession.builder().jedisClient(jedis).build();
// 2. Docker sandbox + OSS snapshot(要 shell)
var sandboxSpec = new DockerFilesystemSpec()
.image("ubuntu:24.04")
.isolationScope(IsolationScope.USER)
.executionGuard(RedisSandboxExecutionGuard.builder(jedis).keyPrefix("agentscope:guard:").retryInterval(Duration.ofSeconds(30)).build());
var oss = new OssSnapshotSpec(
"oss-cn-hangzhou.aliyuncs.com",
System.getenv("OSS_AK"), System.getenv("OSS_SK"),
"trade-test", "prod/");
return HarnessAgent.builder()
.name("coding-assistant")
.model("dashscope:qwen-plus")
.workspace(workspace)
// session + filesystem 必须一起换
.session(session)
.filesystem(sandboxSpec)
.sandboxDistributed(SandboxDistributedOptions.oss(session, oss))
// 记忆压缩 + 大结果卸载(生产长会话必备)
.compaction(CompactionConfig.builder()
.triggerMessages(50)
.keepMessages(20)
.build())
.toolResultEviction(ToolResultEvictionConfig.defaults())
// 集中治理的 skill 仓库(只读分发)
.skillRepository(new FileSystemSkillRepository(skills, false))
// tracing
.middlewares(List.of(new OtelTracingMiddleware()))
.build();
}
public static void main(String[] args) {
ProductionAgentFactory factory = new ProductionAgentFactory();
HarnessAgent agent = factory.build();
RuntimeContext ctx = RuntimeContext.builder()
.sessionId("demo-session")
.userId("alice")
.build();
// Turn 1: introduce yourself + state today's task
agent.call(new UserMessage("知道我是谁吗. 你有哪些技能"), ctx).block();
System.out.println("--------");
}
}
error:17:50:07.800 [main] INFO io.agentscope.harness.agent.HarnessAgent -- HarnessAgent 'coding-assistant' built [workspace=.agentscope/workspace, backend=SandboxBackedFilesystem, subagents=true]
17:50:07.880 [main] WARN io.agentscope.harness.agent.sandbox.SandboxManager -- [sandbox] Failed to load persisted state for scope SandboxIsolationKey{scope=USER, value='alice'}, falling through to fresh create: Failed to deserialize Docker sandbox state
io.agentscope.harness.agent.sandbox.SandboxException$SandboxConfigurationException: Failed to deserialize Docker sandbox state
at io.agentscope.harness.agent.sandbox.impl.docker.DockerSandboxClient.deserializeState(DockerSandboxClient.java:129)
at io.agentscope.harness.agent.sandbox.SandboxManager.acquire(SandboxManager.java:104)
at io.agentscope.harness.agent.middleware.SandboxLifecycleMiddleware.acquireForCall(SandboxLifecycleMiddleware.java:82)
at io.agentscope.harness.agent.HarnessAgent.lambda$wrappedCall$14(HarnessAgent.java:562)
at reactor.core.publisher.MonoUsing.subscribe(MonoUsing.java:75)
at reactor.core.publisher.Mono.subscribe(Mono.java:4569)
at reactor.core.publisher.Mono.block(Mono.java:1772)
at io.agentscope.builder.ProductionAgentFactory.main(ProductionAgentFactory.java:83)
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `io.agentscope.harness.agent.sandbox.snapshot.RemoteSandboxSnapshot` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 1, column: 97] (through reference chain: io.agentscope.harness.agent.sandbox.impl.docker.DockerSandboxState["snapshot"])
at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:67)
A very simple demo, first time it works fine, re-run it gives an error.
Hướng dẫn đóng góp
Đánh giá
Issue này chưa được đánh giá.