让iFlow给自己做一个切换官方/自定义模型供应商配置的程序

1. 背景信息

1.1 iFlow认证方式

iFlow的认证有三种方式:

  1. 使用 iFlow 登录(推荐)
  2. 使用 iFlow API 密钥登录
  3. OpenAI 兼容 API

我们常用的就是第1种和第3种。
第1种可以使用官方提供的免费顶级大模型,可通过/model命令快速切换模型。
第3种通常是我们要使用自己购买/白嫖的其他自定义大模型的时候,需要通过此方式来配置。

1.2 当前问题

如果有多个三方自定义API,每次都要通过/auth ,选3,然后手动配置一遍,或者去settings.json文件中修改,非常麻烦。

如果要切换回官方的模型,则还需要/auth,选1,然后重新浏览器认证登录回来,也挺麻烦的。

1.3 方案参考

GitHub上有个CC-Switch,原是为了给Claude Code做第三方模型供应商配置切换使用的,最近也开始支持更多的工具,如支持了Codex和Gemini CLI,但是还不支持iFlow,问了下iFlow,它说现支持的三种的配置方式和文件格式都和iFlow不一致,无法直接使用,要么改这个项目,要么自己写一份。

2. 实现

于是让它自己根据iFlow配置的特点,参考cc-switch,做一个切换官方和自定义模型供应商的功能,要提供gui界面,界面可配置模型供应商信息,可切换。

2.1 原理

利用~/iflow/下的配置文件,自动检测并写入对应配置,新建一个providers.json用于保存用户配置的自定义模型提供商的信息。

~/.iflow/
├── settings.json # iFlow 主配置(会被修改)
├── providers.json # 供应商配置(工具管理)
├── oauth_creds.json # 官方登录凭证(保持不变)
└── backups/ # 自动备份目录

2.2 界面功能

于是简单快速实现,就让它自己写一个,并提供一个gui界面。

可添加模型供应商
可在官方和自定义供应商配置中切换

2.3 当前问题

由于iFlow的配置,是在启动时才读取,而非热加载,因此切换后,需要重启iflow才能生效。

这里做了个自动化重启,切换后,自动获取当前iflow cli进程,获取cwd,并自动发送/quit结束掉旧的iflow cli,然后会在Terminal中以powershell新开一个窗口,自动通过iflow -c命令在原项目目录下启动iflow并恢复上一次会话。

现在唯一的问题就是,切换后,会在旧tab中退出,新开一个tab启动并恢复会话,会留下一个旧的tab。

Q:为什么没做原tab重启?
A:iFlow说复杂,要对各种终端进行接管

Q:为什么没把退出的tab自动关闭?
A:同样iFlow说实现复杂,要获取父进程的窗口id,而且也涉及到多种Terminal环境。

另外,现在会有这一些列问题的原因,是因为iFlow CLI只在启动时加载了配置,没有检测配置变更动态热加载,之前给顶梁柱大佬反馈过,说是记录了,后续如果官方实现了动态热加载,这些就都不是问题了,甚至直接在iflow中使用斜杠命令就可以自由切换官方配置和自定义配置了。

2.4 效果:

iflow-switch

:+1:t2:

牛牛牛

牛牛牛 :clap:

1 个赞