Skip to content

feat(collaboration): 支持为协作子会话分配其他渠道的模型(cross-channel model assignment) - #1936

Open
craig-zhang-capsule wants to merge 1 commit into
proma-ai:mainfrom
craig-zhang-capsule:feat/cross-channel-delegation-clean
Open

feat(collaboration): 支持为协作子会话分配其他渠道的模型(cross-channel model assignment)#1936
craig-zhang-capsule wants to merge 1 commit into
proma-ai:mainfrom
craig-zhang-capsule:feat/cross-channel-delegation-clean

Conversation

@craig-zhang-capsule

Copy link
Copy Markdown

Closes #1935

解决的问题

#1935 所述:协作子会话的可用模型列表与 modelId 校验均被限定在父会话渠道内,无法实现"主会话用旗舰模型规划 / Review,子会话用其他渠道的高性价比模型执行"的分层调度。手动切换子会话模型也只能绕行一次,后续委派会回落父会话模型。

实现方案

模型标识引入渠道维度({channelId, modelId}),默认行为完全不变

  • delegate_agent / delegate_agents 新增可选 channelId
    • channelId + modelId:在指定渠道内校验
    • modelId:在全部已启用渠道内解析;命中多个渠道时抛错要求消歧
    • 都不传:继承父会话渠道与模型(原行为)
  • list_available_agent_models:默认返回全部已启用渠道的分组视图(channels[].models[],带 current 标记);传入 channelId 时保持单渠道视图
  • 子会话创建与运行createAgentSession / runRegisteredHeadlessAgent 绑定目标渠道,委派记录(record.channelId)与工具返回值(effectiveChannelId)记录真实渠道
  • 解析核心抽为纯函数 agent-model-target.ts:仅依赖 @proma/shared 类型、无 electron 依赖链,便于测试与复用;agent-model-selection.ts 保留 IO 包装层

测试

  • 新增 9 个 BDD 测试(bun:test):显式渠道+模型、跨渠道唯一命中、多渠道消歧、无命中、仅渠道取第一个启用模型、渠道无启用模型、继承回退、回退模型失效、禁用渠道不参与解析
  • bun test main/lib:270 pass(5 个失败为预先存在的环境相关用例,与基线一致,见下方说明)
  • bun run typecheck 通过

真机端到端验证(OSS dev 实例)

GLM 主会话 → 委派子会话并指定 Kimi 渠道 k3

  • 子会话在 k3 上完成完整开发任务(番茄钟网页:Write / Bash / Browser 预览全链路)
  • 多轮委派渠道保持稳定(第二轮 UI 改版同样落在 k3)
  • 会话 JSONL 正确记录目标 channelId + modelId

兼容性

不传新参数时,解析结果与原先完全一致(继承父会话渠道与模型);基线上 5 个环境相关失败用例(OAuth proxy / planning DB / MCP transport)在改动前后表现一致。

Made with Proma · GitHub

…ated sub-sessions

协作子会话支持跨渠道分配模型(对应 issue:delegate_agent 无法分配
其他渠道的模型):

- delegate_agent/delegate_agents 新增可选 channelId;仅传 modelId
  时在全部已启用渠道内解析,多渠道命中要求显式消歧
- list_available_agent_models 默认返回全部已启用渠道的分组视图,
  传入 channelId 时保持单渠道视图
- 子会话创建时绑定目标渠道,委派记录与运行注入真实的渠道和模型
- 解析核心抽为纯函数 agent-model-target.ts(无 electron 依赖链),
  附 9 个 BDD 测试

不传新参数时行为与原先完全一致(继承父会话渠道与模型)。

Made-with: Proma
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

协作子会话(delegate_agent)无法分配其他渠道的模型:可用列表与 modelId 校验均被限定在父会话渠道内

1 participant