agentscope-ai / agentscope-ai/agentscope-java

[Bug]: agentscope-dataagent fails to start — builderBootstrap throws "requires a non-noop snapshotSpec" (default single-node run)

未關閉
#1,600 1 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
area/examples bug
主要語言
Java
星號
5.6k
分支
1.3k
平均合併
4 天 12 小時
30 天內合併 PR
77

描述

**Describe the bug**

`agentscope-examples/agents/agentscope-dataagent` fails to start with its **default, single-node configuration**. The Spring context aborts while creating the `builderBootstrap` bean (`DataAgentConfig`): it builds every `HarnessAgent` with a `DockerFilesystemSpec` but never opts out of the distributed-sandbox validation, so `HarnessAgent.Builder.build()` runs `validateDistributedSandboxConfig`, which throws because `DockerFilesystemSpec` defaults to a `NoopSnapshotSpec`.

The process exits ~5s after `Starting DataAgentApp`, **before the web server starts**. This is a pure in-JVM bean-initialization validation that runs *before* any sandbox container is created, so it fails regardless of deployment method (plain `java -jar`, Docker Compose, …) and regardless of whether a Docker daemon is available (I reproduced it with a healthy Docker daemon present).

In effect, the module README quick-start ("4. Run: `java -jar target/agentscope-dataagent-*-exec.jar`") does not work as written.

**To Reproduce**

1. Build the module:
```bash
mvn -pl agentscope-examples/agents/agentscope-dataagent -am package -DskipTests
```
2. Run the fat jar (no extra config required; presence/absence of a Docker daemon makes no difference):
```bash
java -jar agentscope-examples/agents/agentscope-dataagent/target/agentscope-dataagent-2.0.0-SNAPSHOT-exec.jar
```
3. Startup fails after a few seconds.

**Expected behavior**

The default single-node configuration should boot to a running web server on `:8080` (as the README quick-start implies), or the module should ship a working default sandbox/snapshot configuration so a fresh checkout starts out of the box.

**Error messages**

```
ERROR --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'webhookCallbackController' ...: Unsatisfied dependency expressed through constructor parameter 0:
Error creating bean with name 'builderBootstrap' defined in class path resource
[io/agentscope/dataagent/web/config/DataAgentConfig.class]: Factory method 'builderBootstrap' threw
exception with message: filesystem(SandboxFilesystemSpec) requires a non-noop snapshotSpec to
restore workspace archives across distributed instances. Configure one via
SandboxFilesystemSpec.snapshotSpec(...). For single-node use, opt out via
.sandboxDistributed(SandboxDistributedOptions.builder().requireDistributed(false).build()).
at io.agentscope.dataagent.web.DataAgentApp.main(DataAgentApp.java:40)
...
Caused by: java.lang.IllegalStateException: filesystem(SandboxFilesystemSpec) requires a non-noop
snapshotSpec to restore workspace archives across distributed instances. ... For single-node use,
opt out via .sandboxDistributed(SandboxDistributedOptions.builder().requireDistributed(false).build()).
at io.agentscope.harness.agent.HarnessAgentBuilderSupport.validateDistributedSandboxConfig(HarnessAgentBuilderSupport.java:180)
at io.agentscope.harness.agent.HarnessAgent$Builder.build(HarnessAgent.java:1601)
at io.agentscope.dataagent.runtime.DataAgentBootstrap$Builder.build(DataAgentBootstrap.java:613)
at io.agentscope.dataagent.web.config.DataAgentConfig.builderBootstrap(DataAgentConfig.java:214)
...
```

**Environment (please complete the following information):**

- AgentScope-Java Version: **2.0.0-RC1** (also reproduces on current `main`; the `agentscope-dataagent` module is identical between the `v2.0.0-RC1` tag and `main` — verified with `git diff v2.0.0-RC1 HEAD -- agentscope-examples/agents/agentscope-dataagent`, no differences)
- Java Version: 17 (Amazon Corretto 17.0.15)
- OS: macOS (arm64)

**Additional context**

Root-cause chain:

- `DataAgentConfig#builderBootstrap` configures every agent with
`new DockerFilesystemSpec().client(sandboxClient).isolationScope(IsolationScope.USER)`
(`DataAgentConfig.java:208-211`) but never calls `.sandboxDistributed(...)` nor `.snapshotSpec(...)`.
- `DockerFilesystemSpec` defaults `snapshotSpec` to `new NoopSnapshotSpec()` (`DockerFilesystemSpec.java:35`).
- In `HarnessAgent.Builder.build()` the validation is skipped only when
`sandboxDistributedOptions != null && !requireDistributed` (`HarnessAgent.java:1597-1603`).
Since `sandboxDistributed(...)` is never set, the validation runs and
`validateDistributedSandboxConfig` throws on the `NoopSnapshotSpec`
(`HarnessAgentBuilderSupport.java:177-187`).

Suggested fix (matching the exception's own guidance) — for the single-node default, opt out in `DataAgentConfig#builderBootstrap`:

```java
b.filesystem(new DockerFilesystemSpec().client(sandboxClient).isolationScope(IsolationScope.USER));
b.sandboxDistributed(SandboxDistributedOptions.builder().requireDistributed(false).build());
```

or configure a non-noop `snapshotSpec`. (For distributed/HA deployments a real snapshot spec + distributed `Session` would still be required.)

Possibly related: the module's three full-context `@SpringBootTest` classes — `MarketContributionServiceTest`, `H2DemoSeedTest`, `JpaPersistenceIntegrationTest` — are currently `@Disabled("Pending fix for circular dependency between builderBootstrap and userSandboxRegistry")`, so this startup path is not covered by an enabled test. I have **not** verified whether that circular-dependency issue surfaces *after* applying the `requireDistributed(false)` opt-out; it may be a second, related blocker.

A further, separate note for single-container deployments: even once startup is fixed, each per-user workspace is backed by a live Docker sandbox via the default `DockerSandboxClient` (`DataAgentWorkspaceConfig#sandboxClient`), so a single container would additionally need access to a Docker daemon (e.g. a mounted `/var/run/docker.sock` + the `docker` CLI) — or a non-Docker `SandboxClient` bean — for the chat/workspace path to work. Happy to open that as a separate issue if useful.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。