fix: 修复设计 Agent 慢响应超时
问题:客户端每 250ms 轮询 Run,并在 120 秒固定超时,导致服务端日志刷屏且慢响应被提前判定失败。 修复:将轮询改为 1 秒起步、最高 5 秒的指数退避,并将等待窗口调整为 10 分钟;新增 150 秒慢 Run 回归测试。
This commit is contained in:
@@ -190,8 +190,9 @@ type TaskEventQueue = {
|
||||
|
||||
const AGENT_WEBSOCKET_OPEN = 1;
|
||||
const AGENT_WEBSOCKET_PING_INTERVAL_MS = 20_000;
|
||||
const AGENT_RUN_POLL_INTERVAL_MS = 250;
|
||||
const AGENT_RUN_TIMEOUT_MS = 120_000;
|
||||
const AGENT_RUN_INITIAL_POLL_INTERVAL_MS = 1_000;
|
||||
const AGENT_RUN_MAX_POLL_INTERVAL_MS = 5_000;
|
||||
const AGENT_RUN_TIMEOUT_MS = 10 * 60_000;
|
||||
|
||||
function mapBrief(brief: ServerBrief): DesignBrief {
|
||||
return {
|
||||
@@ -737,6 +738,7 @@ export class WorksSquareDesignWorkspace implements DesignWorkspaceModule {
|
||||
|
||||
private async waitForAgentRun(sessionId: string, runId: string): Promise<ServerAgentRun> {
|
||||
const deadline = Date.now() + AGENT_RUN_TIMEOUT_MS;
|
||||
let pollInterval = AGENT_RUN_INITIAL_POLL_INTERVAL_MS;
|
||||
while (true) {
|
||||
const run = await this.requestJson<ServerAgentRun>(
|
||||
`/api/agents/sessions/${encodeURIComponent(sessionId)}/runs/${encodeURIComponent(runId)}`,
|
||||
@@ -751,7 +753,8 @@ export class WorksSquareDesignWorkspace implements DesignWorkspaceModule {
|
||||
'设计 Agent 响应超时,请稍后重试',
|
||||
);
|
||||
}
|
||||
await new Promise<void>((resolve) => setTimeout(resolve, AGENT_RUN_POLL_INTERVAL_MS));
|
||||
await new Promise<void>((resolve) => setTimeout(resolve, pollInterval));
|
||||
pollInterval = Math.min(pollInterval * 2, AGENT_RUN_MAX_POLL_INTERVAL_MS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user