258 字
1 分钟
Mimo-code反向代理
前言
可用版本:
Waiting for api.github.com...
曾经通过opencode的免费模型,将opencode中的免费模型 apikey给分离出来,拿去作为 沉浸式翻译 插件的AI接口翻译使用
最近看到mimo-code也发布了,非常有意思的一点是,mimocode是基于opencode来开发的,
通过阅读源码,我们发现mimocode的免费大模型试用,是通过plugin的方式加载到 mimocode中的
所以我们翻阅代码可以发现与opencode的不同之处在于,body需要指定一个客户端指纹
具体流程如下
flowchart TD
A[生成设备指纹] --> B[SHA256 hostname+platform+arch+cpu+username]
B --> C[持久化到文件]
C --> D[Bootstrap 请求]
D --> E[POST /api/free-ai/bootstrap]
E --> F[body: client=fingerprint]
F --> G[获取 JWT]
G --> H[缓存 JWT]
H --> I{JWT 过期?}
I -->|否| J[发送 Chat 请求]
I -->|是| D
J --> K[POST /api/free-ai/openai/chat]
K --> L[Header: Authorization: Bearer jwt]
L --> M{响应状态}
M -->|200| N[返回结果]
M -->|401/403| O[清除缓存]
O --> D
- 通过上面流程,我们就可以通过代码编写一个反代。
设计
我们使用 cloudflare worker来编写,经过本地测试,用于翻译会出现 429 响应代码,所以会有一个并发限制。
flowchart TD
A[收到请求] --> B[从池中随机获取 JWT]
B --> C{JWT 有效?}
C -->|是| D[发送请求到 MiMo API]
C -->|否| B
D --> E{响应状态}
E -->|200| F[返回结果]
E -->|401/403| G[移除无效 JWT]
G --> H[获取新 JWT]
H --> D
E -->|429| I[标记 JWT 冷却 3s]
I --> J[等待递增延迟]
J --> B
E -->|超时| K[重试]
K --> B
当前版本似乎有一个神秘的问题,导致KV频繁读写。
不过这些都是得后续优化了。
部分信息可能已经过时









