> For the complete documentation index, see [llms.txt](https://tinyhumans.gitbook.io/openhuman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyhumans.gitbook.io/openhuman/zh/gong-neng/model-routing.md).

# 自动模型路由

代理的不同部分需要不同的模型。长推理需要前沿模型。快速“修复这个拼写错误”的调用需要快速便宜的模型。视觉任务需要视觉模型。OpenHuman 通过内置的 **路由提供器** 这样你就完全不用去考虑它。

## 请求是如何被路由的

任何聊天调用中的 model 参数可以采用两种形式之一：

* **具体模型名称**。例如 `anthropic/claude-sonnet-4`。路由到默认提供器上的该精确模型。
* **提示前缀**。例如 `hint:reasoning`。在路由表中查找该提示并解析为一个 `(provider, model)` 对。

```rust
// src/openhuman/providers/router.rs
fn resolve(&self, model: &str) -> (usize, String) {
    if let Some(hint) = model.strip_prefix("hint:") {
        if let Some((idx, resolved_model)) = self.routes.get(hint) {
            return (*idx, resolved_model.clone());
        }
    }
    (self.default_index, model.to_string())
}
```

路由器封装了多个预先创建的提供器（Anthropic、OpenAI、Google、Groq 等），并根据每次请求选择正确的一个。提示词可以在运行时重新映射，而无需重启核心。

## 常见提示

| 提示               | 典型目标       | 使用场景                                 |
| ---------------- | ---------- | ------------------------------------ |
| `hint:reasoning` | 强大的推理模型    | 多步规划、数学、代码密集型轮次                      |
| `hint:fast`      | 快速/便宜的模型   | UI 辅助、自动补全、小型分类调用                    |
| `hint:vision`    | 具备视觉能力的模型  | 截图、图片附件、OCR                          |
| `hint:summarize` | 擅长压缩的模型    | 记忆树摘要构建器                             |
| `hint:code`      | 经过代码调优的模型  | 原生编码轮次                               |
| `hint:burst`     | 高吞吐、低成本的模型 | 便宜、对延迟不敏感的预演扫描，例如 SuperContext scout |

确切映射是可配置的；默认配置随每个提供器附带合理的路由。

## 单一订阅

路由发生在单一的 OpenHuman 订阅之后。你不需要为 Anthropic、OpenAI、Google 等分别持有 API 密钥，后端会代为协调访问，而路由器会为每个任务选择正确的那一个。这就是 README 里“一个订阅，多个提供器”的承诺的具体体现。

## 覆盖路由

* **全局**。配置 TOML（`配置` 结构体位于 `src/openhuman/config/schema/types.rs`）可在启动时提供自定义路由表。
* **按调用**。传入具体模型名称（不带 `hint:` 前缀），路由器就会退回到默认提供器并使用该精确模型。
* **对于一个技能**。技能可以在其清单中固定一个提示或模型。

## 按代理固定模型

子代理也可以固定精确模型，而不会为应用的其余部分禁用自动路由。需要编排器或团队负责人使用更强大的模型时可用此法，而高吞吐量的叶子代理则应保持使用更便宜的模型。

一次委派时，内联调用优先：

```json
{
  "agent_id": "researcher",
  "model": "anthropic/claude-sonnet-4",
  "prompt": "Collect source notes for the launch memo."
}
```

持久默认值位于 `config.toml`:

```toml
[orchestrator]
model = "anthropic/claude-sonnet-4"

[teams.research]
lead_model = "openai/gpt-5.1"
agent_model = "groq/llama-3.1-8b-instant"

[teams.code]
agent_model = "qwen/qwen3-coder"
```

解析顺序：

1. 内联 `模型` 在 `spawn_subagent` 或 archetype 委派调用上。
2. `[orchestrator].model` 或 `[teams.<team>]` / 以及内置别名，如 `[teams.research]` 和 `[teams.code]`.
3. archetype 自身的模型提示和普通路由表。

对于 `[teams.*]`, `lead_model` 适用于可以委派的代理，而 `agent_model` 适用于叶子工作者。若只设置其中一个，运行支架会将其回退用于这两种角色。

## 为什么这不只是“模型切换器”

路由不是一个 UI 下拉菜单。代理循环本身会基于它即将执行的操作发出提示。不是你选择模型，而是 *任务* 来决定。这就是“多模型”和“智能路由”之间的区别。

## 另见

* [智能 Token 压缩](/openhuman/zh/gong-neng/token-compression.md)。它让大型推理调用变得经济实惠。
* [原生工具](/openhuman/zh/gong-neng/native-tools.md)。不同的工具调用会提示不同的路由。
* [本地 AI（可选）](/openhuman/zh/gong-neng/model-routing/local-ai.md)。轻量级聊天提示可在设备上运行。
