agentscope-ai / agentscope-ai/agentscope-java
[bug] `AgentRunDataPlaneHttp` 响应 JSON `data` 信封未解包
- Linguagem predominante
- Java
- Estrelas
- 5.6k
- Forks
- 1.3k
- Merge médio
- 4d 12h
- PRs com merge (30d)
- 77
Descrição
## 版本
- agentscope-java: `2.0.0-RC3`
## 问题描述
AgentRun REST API 的所有 JSON 响应都包裹在 `data` 信封中:
```json
{
"data": {
"sandboxId": "xxx",
"status": "READY",
"templateType": "CodeInterpreter"
}
}
```
但 `AgentRunDataPlaneHttp.textStatus()` 直接从 JSON 根级别查找 `status`/`state` 字段:
```java
private static String textStatus(JsonNode s) {
if (s == null) return null;
JsonNode st = s.get("status"); // ← 始终为 null(status 在 data 内)
if (st != null && st.isTextual()) return st.asText();
JsonNode state = s.get("state"); // ← 也找不到
if (state != null && state.isTextual()) return state.asText();
return null;
}
```
## 影响
`waitUntilReady()` 轮询沙箱状态时,每次 `textStatus()` 都返回 `null`,导致轮询完整运行 300 秒(默认
`START_WAIT_SECONDS = 300`)后超时报错:
```
AgentRun sandbox did not become READY in time (last status=null): DY5FK2VCJDS8FFF6M2GYJADGFW
```
> AgentRun API 测试代码[AgentRunSandboxApiTest](https://github.com/agentscope-ai/agentscope-java/issues/1889#issuecomment-4780452891)使用了自定义的 `unwrap()` 方法来提取 `data`,因此测试不受影响。但框架的生产代码未做此处理。
## 复现步骤
1. 配置 `AgentRunFilesystemSpec` 连接 AgentRun 沙箱平台
2. 触发沙箱创建流程(`SandboxManager.acquire()` → `AgentRunSandboxClient.create()`)
3. `AgentRunSandbox.start()` → `ensureSandbox()` → `waitUntilReady()` 轮询超时
## 预期行为
`getJson()` / `postJson()` 应在返回前解包 `data` 信封,或 `textStatus()` 应兼容嵌套格式。
## 建议修复
在 `getJson()` 和 `postJson()` 中统一解包 `data` 字段:
```java
private JsonNode unwrapData(JsonNode node) {
if (node != null && node.has("data") && !node.get("data").isNull()) {
return node.get("data");
}
return node;
}
private JsonNode postJson(String url, ObjectNode body) throws IOException {
// ... existing code ...
return unwrapData(json.readTree(text));
}
private JsonNode getJson(String url) throws IOException {
// ... existing code ...
return unwrapData(json.readTree(text));
}
```
或者直接修改 `textStatus()` 等方法,在读取字段前先尝试提取 `data`。
## 相关文件
| 文件 | 路径 |
|------|-----------------------------------------------------------------|
| 主要修复 | `agentscope-extensions/.../agentrun/AgentRunDataPlaneHttp.java` |
Guia de contribuição
Avaliação
Esta issue ainda não foi avaliada.