# MiniLink

让 ChatGPT / Codex Desktop 的模型菜单显示 Codex Profiles 中的模型，并在同一会话里切换供应商。

## 安装

需要 Node.js ≥22.16 和 ChatGPT / Codex Desktop。

```sh
npm install -g @ailuntz/minilink
minilink on
```

完全退出并重开 Desktop。更新包后再次运行 `minilink on`。

MacBook 通过 SSH 使用 Mac mini 会话时，两台机器都安装 MiniLink，并在 **Mac mini** 运行 `minilink on`。重新连接远程主机后生效。

| 命令 | 用途 |
| --- | --- |
| `minilink on` | 开启合并模型目录与本机 Responses 代理 |
| `minilink off` | 停止接入新启动的 Desktop |
| `minilink doctor` | 查看配置、Profile 和运行版本 |

## 工作方式

MiniLink 读取 `~/.codex/*.config.toml`，把 Profile 模型与 Codex 自身目录合并，通过 `model_catalog_json` 交给 Codex。Desktop ↔ Codex 的消息原样传输；Codex 的 Responses 请求经本机代理按模型转发。Profile 密钥来自环境变量或 `~/.codex/.env`，不会交给其他供应商。

切换时代理只在内存中隔离异源推理项和私有引用，保留可见对话与工具结果。隐藏推理无法跨供应商继承；各模型的上下文用量也不会沿同一个数字增长。MiniLink 不修改会话 JSONL 或 SQLite。详见[框架图](框架图.md)。

供应商配置示例：[DeepSeek / 豆包 / Sub2API](examples/providers/)。

## MiniLink 自身文件

| 路径（位于 `~/.codex`） | 用途 |
| --- | --- |
| `minilink.json` | 开关状态 |
| `minilink-update.json` | 自动更新的检查时间与结果缓存 |
| `minilink-runs/` | 活跃进程标记和临时合并模型目录；正常退出时删除 |

旧版的 `minilink.json.selection.json` 不再使用，可以删除。会话文件仍由 Codex 自己管理。

## 卸载

```sh
minilink off
npm uninstall -g @ailuntz/minilink
```

完全退出并重开 Desktop。
