Replies: 1 comment
|
在 rc.8( 验证你的全部源码引用(属实)
增量 1(核心):
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
在
dsh web 0.1.0-rc.8中,大型 continuable 子代理的冷态历史无法通过 Web UI 加载,页面稳定显示:与 #3413 的区别
#3413 讨论的是远程链路下 3 秒
streamOpenTimeoutMsreadiness guard;本次发生在本机127.0.0.1,失败请求是POST /api/subagent.history,时间点与通用 unary 的 30 秒截止时间一致。普通父会话历史和 WebSocket 连接均正常。复现步骤
dsh 0.1.0-rc.8启动 Web profile。实际结果
历史加载失败:signal timed out(internal)。maxMessages: 50。subagent.historypayload 通过直接 HTTP 调用并允许更长 client timeout 后返回 HTTP 200,因此日志本身未损坏。session.jsonl.zstd约 995 KiB。原因分析
当前源码在
packages/host/apiproxy/src/fetch/client.ts中为普通 unary 调用设置DEFAULT_TIMEOUT_MS = 30_000,postJson()使用AbortSignal.timeout(this.timeoutMs)。目前session.history和subagent.history都走默认callUnary()路径,没有使用caller-signal-only策略。历史分页的
maxMessages只限制 append-origin message 数量,不限制其中的 chunk、tool、step 事件数量或最终 JSON 字节数。一次合法的 message-aligned 尾页因此可能包含数万条事件;冷态子代理还需要完成 catalog 校验、持久化 inspection、projection restore、分页和序列化,整体耗时可能超过 30 秒。Fetch 超时异常随后被
packages/host/apiproxy/src/api/rpc.ts的transportError()统一转换为internal,于是 UI 暴露了底层signal timed out,容易被误判为日志损坏或 Host 内部错误。session.history使用相同的默认 timeout policy,因此大型普通冷会话理论上也可能受影响;本次稳定复现发生在subagent.history。预期结果
signal timed out(internal)。环境
0.1.0-rc.8141eb6fef83422698aef7a981029e843e8161534v25.2.126.6.1arm64http://127.0.0.1:3080建议的回归覆盖
subagent.history可从 Web UI 加载。session.history。signal timed out(internal)。All reactions