# zenmore **Repository Path**: opencode-plugin/zenmore ## Basic Information - **Project Name**: zenmore - **Description**: OpenCodeZen-支持多key轮询 - **Primary Language**: TypeScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-17 - **Last Updated**: 2026-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenCode Zen More [OpenCode](https://opencode.ai) 插件 — 集成 [OpenCode Zen](https://opencode.ai/zen) 的免费模型,支持多 API Key 轮询和 429 自动降级。 ## 安装 确保 OpenCode 已安装,然后在项目目录中配置: ```json // opencode.json { "plugins": [ "/path/to/zenmore" ] } ``` 或通过 OpenCode TUI 运行 `/connect` 选择 **Zen More** 并按提示操作。 ## 模型列表 | OpenCode 模型 ID | API 模型 ID | 上下文 | 最大输出 | 模态 | |---|---|---|---|---| | `deepseek-v4-flash` | `deepseek-v4-flash-free` | 262,144 | 65,536 | 文本 | | `mimo-v2.5` | `mimo-v2.5-free` | 1,048,576 | 131,072 | 文本+图像 | | `nemotron-3-ultra` | `nemotron-3-ultra-free` | 1,048,576 | 65,536 | 文本 | | `north-mini-code` | `north-mini-code-free` | 262,144 | 65,536 | 文本 | | `big-pickle` | `big-pickle` | 200,000 | 32,768 | 文本 | ## 特性 ### 多 API Key 轮询 输入多个 API Key(逗号分隔),插件会自动轮询,降低单 key 限流概率。 ### 429 自动降级 任何用户 Key 请求遇到 HTTP 429(限流)时,插件在 HTTP 层面自动用内置公共 Key `public` 重试一次,对上层完全透明。该 Key 仅用于降级兜底,不参与正常轮询。 ``` 用户 Key → 请求 → 429 Too Many Requests ↓ 替换 Authorization 为 Bearer public ↓ 重试一次 → 返回结果(AI SDK 无感知) ``` ### 调试日志 设置环境变量开启调试日志: ```bash set DEBUG=1 # 或 set OPENCODE_ZENMORE_DEBUG=1 ``` 日志文件路径:`%USERPROFILE%\.zenmore\debug.log` ## 授权 1. 访问 [OpenCode Zen](https://opencode.ai/zen) 2. 点击 **开始使用 Zen** 3. 创建 API Key 4. 在 OpenCode 中运行 `/connect`,选择 **Zen More**,粘贴 API Key ## Key 黑名单(blacklist.json) KeyManager 会为每个 Key 维护错误计数,持久性错误(`401/403/400` 等)触发 `reportError`(计数 +1), 当 `errorCount >= 3` 时该 Key 被临时拉黑,轮询时自动跳过;请求成功一次即触发 `reportSuccess` 复位计数。 黑名单状态通过快照文件跨重启保留,重启后自动恢复各 Key 的错误计数。 快照文件格式(与插件写盘格式一致): ```json { "updatedAt": 1759800000000, "keys": [ { "key": "sk-xxx1", "errorCount": 3, "blocked": true }, { "key": "sk-xxx2", "errorCount": 0, "blocked": false } ] } ``` 目标路径:`%USERPROFILE%\.zenmore\blacklist.json` 复制方法(可选):将项目 `jsonc/blacklist.jsonc` 复制到 `%USERPROFILE%\.zenmore\` 并重命名为 `blacklist.json`。不复制也不影响运行——插件仅在内存中计数,不跨重启保留;快照读写失败仅记录 debug 警告,绝不中断主流程。 ## 配置文件 插件运行所需的配置文件位于本仓库 ./jsonc/ 目录下(provider.jsonc 与 models.jsonc)。使用前将这两个文件复制到用户目录 %USERPROFILE%\.zenmore/ 下(缺失时插件启动会 fail fast 报错)。复制后可按需编辑模型列表与提供商信息(支持注释),修改后重启插件生效。