Skip to content

[Question] 当开启多agents的时候(比如5.6 Sol Utral),会话请求不在同一个账号 #362

Description

@sunjinqu

提交前我已确认

  • 我看过 README 和 docs/ 里相关章节,没找到答案
  • 我搜过 已有 issues,没找到讨论过这个问题的

我想问什么?

建议增加 Root Session 级别的账号粘性调度,保证主 Agent 和子 Agent 使用同一账号

问题描述

在使用 Sol Ultra 或其他多 Agent 模式时,一个主任务可能会同时创建多个子 Agent,并产生多个并发请求。

目前这些请求可能被调度到不同账号,例如:

主 Agent → 账号 A
子 Agent 1 → 账号 A
子 Agent 2 → 账号 B
子 Agent 3 → 账号 B

这样会导致同一个任务的主对话和子 Agent 分散在多个账号上,可能影响:

  • 会话一致性
  • Prompt Cache 命中
  • previous_response_id 关联
  • 账号上下文连续性
  • 用量统计和限流管理
  • 多 Agent 任务的稳定性

现有的 Session 粘性如果只按照单个 thread_idsession_key 或请求指纹绑定,可能无法识别这些子 Agent 实际属于同一个根任务。

建议方案

增加 Root Session 级别的强粘性调度。

第一次收到某个根任务的请求时:

Root Session ID:abc123
选择账号 A
保存映射:abc123 → 账号 A

之后该根任务产生的所有主 Agent 和子 Agent 请求:

主 Agent → 读取 abc123 → 账号 A
子 Agent 1 → 读取 abc123 → 账号 A
子 Agent 2 → 读取 abc123 → 账号 A
子 Agent 3 → 读取 abc123 → 账号 A

即使不同子 Agent 拥有不同的 thread_idsession_id,只要它们属于同一个 Root Session,就始终使用同一个账号。

并发满时的行为

假设账号 A 的单账号最大并发为 2:

账号 A 最大并发:2
当前运行请求:2
新的子 Agent 请求到达

建议新的请求进入账号 A 的等待队列:

新请求 → 等待账号 A 释放并发槽位

不应自动回退到账号 B:

不期望的行为:

账号 A 并发已满
→ 自动改用账号 B

期望效果

第一次请求:
选择账号 A
保存 abc123 → 账号 A

所有子 Agent:
读取 abc123
只使用账号 A

账号 A 并发满:
在账号 A 队列中等待
不允许回退到账号 B

这样可以保证同一个多 Agent 任务的所有请求始终由同一个上游账号处理,同时避免因为并发满而将主 Agent 和子 Agent 分散到不同账号。

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions