agentscope-ai / agentscope-ai/agentscope-java
[Bug]: Dynamic subagent notifications drop FAILED/CANCELLED payloads
- 主要语言
- Java
- 星标
- 5.6k
- 派生
- 1.3k
- 平均合并
- 4 天 12 小时
- 30 天内合并 PR
- 77
描述
## Summary
Dynamic/background subagent completion notifications lose authoritative FAILED/CANCELLED terminal information. A failed task is announced to the parent as "has completed" with `(no output)`, while the Harness `TaskRecord` contains the real failed status and error.
## Reproduction
Using AgentScope Java main at `e3a412ed2cc944e401da861c8d5e464b967724e9` / `2.0.1-SNAPSHOT`:
1. Build a `HarnessAgent` with dynamic subagents and the default workspace-backed task repository/message bus.
2. Spawn a background child whose invocation terminates with `IllegalStateException("failure-marker")`.
3. Wait until `TaskRepository.getTask(...)` reports `FAILED` and contains `failure-marker`.
4. Continue the parent so `InboxMiddleware` drains the completion notification.
5. Inspect the injected `HintBlock`.
Actual hint:
```
Background subagent task '...' (agent=...) has completed.
Result:
(no output)
```
The parent never receives the authoritative failed status or error. The same callback shape cannot represent cancellation reason/status either.
## Source evidence
`HarnessAgent.Builder.wireTaskRepositoryMessageBus(...)` installs a `WorkspaceTaskRepository` completion callback whose arguments end at nullable `result`. It formats every terminal callback as "has completed" and uses:
```java
result != null ? result : "(no output)"
```
No task status, error message, or cancellation payload is available to the notification formatter.
## Expected behavior
The Harness-owned completion delivery should carry a typed terminal outcome into parent reasoning:
- task id and subagent identity
- terminal status (COMPLETED / FAILED / CANCELLED)
- result for success
- authoritative error for failure
- cancellation reason when available
The fix should remain in the Harness task/message-bus lifecycle. Consumers should not need to add a second completion callback, task store, or delivery registry.
## Impact
This blocks reliable parent aggregation and user-visible partial-failure reporting for background collaboration: the task readback says FAILED while automatic parent reasoning says only "(no output)".
贡献指南
评估
这个 Issue 还没有评估数据。