agentscope-ai / agentscope-ai/QwenPaw

[Feature]: 支持按 conversation 级别指定模型,而非仅绑定 agent

Open
#6,318 6 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Python
Stars
34.9k
Forks
3.1k
Avg merge
1d 15h
Merged PRs (30d)
225

Description

## Summary

当前模型绑定在 agent 级别,所有对话共用同一模型。希望能支持 agent 设默认模型,新建对话继承该默认值,但允许用户手动为某个特定对话指定不同的模型。

## Component(s) Affected

- [x] Core / Backend (app, agents, config, providers, utils, local_models)
- [ ] Console (frontend web UI)
- [ ] Channels (DingTalk, Feishu, QQ, Discord, iMessage, etc.)
- [ ] Skills
- [ ] CLI
- [ ] Documentation (website)
- [ ] Tests
- [ ] CI/CD
- [ ] Scripts / Deploy

## Problem / Motivation

一个 agent 可能同时处理多种任务(日常快速回复 vs 深度编程 vs 复杂推理),不同任务需要不同能力级别的模型。当前想换模型只能:
1. 改 agent 配置里的 model 字段 → 影响该 agent 下所有对话
2. 另开一个 agent 配不同模型 → 需要重复配置 skills/tools/memory,管理成本高

所有多类型任务的用户都会从中受益,尤其是重度用户。

## Proposed Solution

1. **Agent 默认模型**:`agent.json` 中保留 `model` 字段作为 agent 级别的默认模型
2. **Conversation 级模型覆盖**:创建对话时可指定 `model_override`(可选),为空则继承 agent 的默认模型
3. **运行时切换**:对话期间支持通过命令(如 `/model `)或 API 参数切换当前对话模型
4. **持久化**:conversation 级别的模型选择写入 session 元数据,关闭恢复后仍保留

数据流:

```
agent.json → default_model

新建 conv → 继承 agent.default_model

对话中可选 /model 切换 → 存入 conv 元数据

模型路由: conv.model ?? agent.model ?? provider.default
```

## Alternatives Considered

1. **多 agent 方案**:每个模型开一个 agent → 管理成本高,历史不互通
2. **自动模型路由**(Issue #52):由系统按任务复杂度自动选模型 → 与按 conversation 手动指定不冲突,可互补
3. **模型 fallback 链**(Issue #1327,In progress):出错时自动降级 → 同样可与本方案互补

## Additional Context

- README Roadmap 中 "Models → Multi-model switching" 标记为 In Progress,本提案是该方向的一个具体使用场景
- QwenPaw 的 Scroll Context 架构天然适合在 session 级别关联模型元数据,实现成本相对可控
- 相关问题:
- #1327 Model fallback chain(自动降级,In progress)— 与本方案互补
- #52 Multi models adaptive routing(自动路由,标记 invalid)— 方向不同但相关

## Willing to Contribute

- [ ] I am willing to open a PR for this feature (after discussion).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.