agentscope-ai / agentscope-ai/agentscope-java

[Bug]: Failed to deserialize Docker sandbox state

Đang mở
#1,584 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
area/harness bug
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

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.