# MiniLink 框架图

## 模型从哪里出现

```mermaid
flowchart LR
  P[Codex Profiles<br/>*.config.toml] --> M[MiniLink 合并模型目录]
  O[Codex 官方模型目录] --> M
  M -->|model_catalog_json| C[Codex app-server]
  D[MacBook Desktop] <-->|SSH / 原样控制消息| C
  C -->|model/list| D
```

本机 Desktop 省略 SSH。菜单读取 Codex 自己的 `model/list`；MiniLink 不再改写菜单响应、默认选择或模型设置消息。

## 一轮消息怎么走

```mermaid
flowchart LR
  D[Desktop 选定模型] --> C[Codex]
  C -->|Responses 请求| G[MiniLink 本机代理]
  G -->|官方模型| O[ChatGPT / 原生上游]
  G -->|Profile 模型| P[自定义供应商]
  O --> G
  P --> G
  G --> C
  C --> J[(Codex 会话 JSONL / SQLite)]
  G -.->|不改写| J
```

请求即使由 Desktop 以 zstd 压缩发送，代理也会在大小限制内解压、解析模型、隔离供应商凭据，再转发。MacBook 通过 SSH 使用 Mac mini 会话时，合并目录和请求代理都运行在 Mac mini。

## 为什么切换时要处理历史

```mermaid
flowchart LR
  A[供应商 A 的会话历史] --> V[可见消息和工具结果]
  A --> R[推理项 / 私有 ID]
  V --> B[供应商 B 可继续读取]
  R --> G[MiniLink 在内存中判断来源]
  G -->|同源| B
  G -->|异源：丢弃| X[避免解密失败 / 404 / 400]
```

隐藏推理不能原样跨供应商继承。上下文用量取决于目标模型的分词、固定指令、工具目录及上游统计，所以切换后的数字不保证平滑增长。

**验证：** 真实 Codex 已直接从合并目录列出模型，并在无菜单改写时接受双向设置更新和自定义模型消息；MacBook 远程 Desktop 曾验证 minisub → GPT → minisub 三轮消息。移除旧菜单适配后的 Desktop 验证以新版本重启结果为准。
