# Model Manager

用于为新对话固定默认模型与思考等级。当前模型的思考等级请使用 Pi 内置 `/thinking`。

## 新对话默认模型

扩展会在以下场景应用配置：

- 启动 Pi 并创建空白新对话；
- 在 Pi 中执行 `/new`。

以下场景不会强制改模型：

- `/resume` 恢复已有对话；
- `/fork` 或 `/clone` 创建带历史记录的对话；
- `/reload` 重新加载扩展；
- 启动 Pi 时直接恢复已有会话。

例外：会话中若带有 `model-manager-new-conversation` custom entry，且尚未产生助手回复，则即使以 `resume` 进入也按新对话处理。TAPD 在**其他项目目录**中创建关联会话时会写入该标记（它内部走 `switchSession`），因此新会话会应用配置的默认模型；普通 `/resume` 不受影响。

标记写在会话里而不是扩展内存中，因为 Pi 用 jiti 加载扩展且关闭了模块缓存，各扩展入口无法共享模块级状态。

因此，已有会话会保留其模型记录，而真正的新对话会回到配置的模型。

## 配置

用户级配置：`~/.pi/agent/ming-core.json` 的 `newConversation`。

项目级配置（仅可信项目生效）：`<project>/.pi/ming-core.json` 的同名字段。

会从当前工作目录向上查找最近的 `.pi/ming-core.json`；同目录没有该文件时才读取旧的 `.pi/model-manager.json`。项目级 `newConversation` 字段会覆盖用户级同名字段；未提供的字段继续继承用户配置。用户级旧文件 `~/.pi/agent/model-manager.json` 会在首次读取时导入 `ming-core.json` 并归档为 `.migrated.bak`。

示例：

```json
{
  "newConversation": {
    "enabled": true,
    "model": "lumilegend/gpt-5.6-sol",
    "thinkingLevel": "medium"
  }
}
```

字段：

| 字段 | 必需 | 说明 |
| --- | --- | --- |
| `enabled` | 否 | 是否启用；配置了 `newConversation` 时默认为 `true` |
| `model` | 启用时是 | 使用 `provider/model-id` 格式；模型 ID 本身可以包含 `/` |
| `thinkingLevel` | 否 | `off`、`minimal`、`low`、`medium`、`high`、`xhigh` 或 `max` |

修改配置后，新对话会自动读取最新内容，无需重启。若要在当前对话立即应用，可执行：

```text
/model-manager apply
```

查看当前解析到的配置及来源：

```text
/model-manager
```

若要临时禁用：

```json
{
  "newConversation": {
    "enabled": false
  }
}
```
