# stepfunmore **Repository Path**: opencode-plugin/stepfunmore ## Basic Information - **Project Name**: stepfunmore - **Description**: stepfun-支持多key轮询 - **Primary Language**: TypeScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-18 - **Last Updated**: 2026-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # opencode-stepfunmore [Stepfun(阶跃星辰)](https://platform.stepfun.com) Step Plan 通道的 OpenCode 提供商插件,支持多 API Key 自动轮询。 ## 快速开始 ### 安装 ```bash // opencode.json { "plugins": [ "/path/to/stepfunmore" ] } ``` ### 获取 API Key 1. 使用邀请链接注册额外获得 **15 天订阅**: - https://platform.stepfun.com/?invite_code_v2=FRCCVIDC - https://platform.stepfun.com/?invite_code_v2=WPNQVPDS - https://platform.stepfun.com/?invite_code_v2=GXMBEOMX 2. 复制 API Key: [platform.stepfun.com/interface-key](https://platform.stepfun.com/interface-key) ### 配置 运行 `opencode connect`,粘贴你的 API Key 即可。 支持输入多个 Key(用逗号分隔),插件会自动轮询使用,充分利用各 Key 的额度。 ## 可用模型 ### 推理模型 | 模型 ID | 上下文 | 说明 | |---------|--------|------| | `step-3.7-flash` | 256K | 旗舰多模态推理模型,支持图片/视频理解,三档推理强度 | | `step-3.5-flash-2603` | 256K | 高频 Agent 场景优化版,Token 效率更高 | | `step-3.5-flash` | 256K | 旗舰级推理模型,MoE 架构,擅长代码与工具调用 | | `step-router-v1` | 1000K | 智能路由模型,自动在 deepseek-v4-pro 与 step-3.5-flash 间切换 | ### 语音模型 | 模型 ID | 说明 | |---------|------| | `stepaudio-2.5-chat` | 活人感对话大模型,文本返回,副语言感知 | | `stepaudio-2.5-tts` | Contextual TTS,语境感知语音合成 | | `stepaudio-2.5-asr` | 4B MTP 极速语音识别,5 分钟音频 1 秒转写 | | `stepaudio-2.5-realtime` | 实时语音交互,语音 ↔ 语音 | ### 图像模型 | 模型 ID | 说明 | |---------|------| | `step-image-edit-2` | 文生图 + 图像编辑一体化,1-2 秒极速响应 | ## 架构 ``` stepfunmore/ ├── package.json # 项目配置 ├── tsconfig.json # TypeScript 配置 ├── src/ │ ├── index.ts # 插件入口 — auth / config / dispose 钩子 │ ├── constants.ts # 模型定义 + 提供商常量 │ ├── plugin/ │ │ ├── auth.ts # 多 Key 持久化存储 (~/.stepfunmore/auth.json) │ │ └── key-manager.ts # API Key 轮询管理器 │ └── utils/ │ └── debug-logger.ts # 调试日志 └── dist/ # 构建产物 ``` ### 核心流程 1. **授权**: 用户输入一个或多个 API Key → `AuthStorage` 持久化到本地 2. **轮询**: `KeyManager` 按 round-robin 分配 Key,错误计数 ≥3 自动跳过 3. **认证**: `auth.loader` 每次请求前从缓存或存储中取出下一个可用 Key 4. **清理**: `dispose` 钩子重置全局状态,防止插件重连后 Key 轮询错乱 ## 开发 ```bash # 安装依赖 npm install # 构建 npm run build # 类型检查 npm run typecheck ``` ### 调试日志 启用调试日志: ```bash # 方式一 export DEBUG=1 # 方式二 export OPENCODE_STEPFUNMORE_DEBUG=1 ``` 日志文件位置: `~/.stepfunmore/debug.log` ## 技术细节 - **适配器**: `@ai-sdk/openai-compatible` — 标准 OpenAI Chat Completions 协议 - **端点**: `https://api.stepfun.com/step_plan/v1` - **日志**: 不使用 `console.error`,通过 `DebugLogger` 写入文件 - **错误处理**: 异常通过 throw 抛给 OpenCode 框架处理 - **无节流/重试**: 插件不自行实现节流或重试机制,由 OpenCode 框架管理 ## 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%\.stepfunmore\blacklist.json` 复制方法(可选):将项目 `jsonc/blacklist.jsonc` 复制到 `%USERPROFILE%\.stepfunmore\` 并重命名为 `blacklist.json`。不复制也不影响运行——插件仅在内存中计数,不跨重启保留;快照读写失败仅记录 debug 警告,绝不中断主流程。 ## 配置文件 插件运行所需的配置文件位于本仓库 ./jsonc/ 目录下(provider.jsonc 与 models.jsonc)。使用前将这两个文件复制到用户目录 %USERPROFILE%\.stepfunmore/ 下(缺失时插件启动会 fail fast 报错)。复制后可按需编辑模型列表与提供商信息(支持注释),修改后重启插件生效。