Repository navigation
opencode2api v1.7.5-beta.5
插件生态两件套:管理面板入口 + 模型元数据;外加一次误路由事故的根修与
插件功能建议清单(docs/PLUGIN-PROVIDERS.md §11)。
修复打包版(Tauri 壳)内插件面板入口点击无反应的问题;随版附插件功能建议清单(§11)
与通用契约冒烟测试脚本。
✨ 新增
- 插件卡片管理面板入口(球形图标):插件可用
panel:"sidecar"(面板挂插件子进程
动态端口)或panel_port:N(固定端口,0=禁用)声明自带控制面板;卡片渲染 🌐 图标,
点击新窗口打开并把网关地址 / 实例密钥(打码)/ 暴露模型清单经查询参数带给面板;
sidecar 模式点击时实时解析最新端点,规避子进程重启换端口导致的死链 - 插件模型上下文信息:插件
/v1/models可携带context_window/max_output_tokens,
经聚合目录透传——管理页插件卡片显示最大上下文、暴露弹层逐模型显示、对外/v1/models
输出 OpenRouter 风格context_length扩展字段(OpenAI 兼容客户端自动忽略未知字段) - 插件功能建议清单(§11)与通用契约冒烟测试:docs/PLUGIN-PROVIDERS.md 新增 §11
(提炼自 mmxproxy / skywork 两个参考实现的 P1/P2 功能点与源码组织建议);
scripts/plugin-smoke-test.sh模拟宿主拉起验证插件契约(就绪行 / 鉴权 / 端点 / 面板可达)
🐛 修复
-
带厂商前缀的模型不再误兜底默认厂商(误路由事故根修):插件停用/缺席期间,
插件供应商类请求此前会兜底落到 opencode 上游——产生误导性 401(Model not supported)
并把 opencode 账号池误打入坏池。现改为:前缀命中已注册厂商 → 直连该厂商(目录本轮
拉取失败 ≠ 厂商不可用);前缀厂商未注册 → 返回明确 503;无前缀模型保持原兜底行为 -
插件模型清单拉取失败不再永久为空:管理器就绪后拉取插件模型目录改为退避重试
(0/5s/15s/30s + WARN 日志)——此前单次超时会导致面板「暴露模型」按钮永久禁用 -
打包版插件面板入口点击无反应(Tauri WebView 拦截 window.open):管理 UI 跑在
Tauri WebView 内时,window.open打开的跨源新窗口被静默拦截(dev 下前端经浏览器
访问故仅打包版暴露)。现由 core 新增POST /api/admin/open-url(登录鉴权域内)代为
调用系统默认浏览器;仅允许 http/https 的 127.0.0.1/localhost/[::1] 回环地址,拒绝
引号/尖括号/换行(防 cmd 参数逃逸)。前端打开插件面板统一走该端点,失败时兜底
window.open(浏览器直访模式)
📝 文档
- README 构建章节补充 core 重嵌入警告:重编 core 后需 touch Rust 源文件或 cargo clean,
否则壳内仍是旧 core - docs/PLUGIN-PROVIDERS.md §11 插件功能建议清单:提炼自 mmxproxy / skywork 两个
参考实现——P1 强烈建议(内嵌面板三卡 / 面板入口声明 / provider.json 自管理 / 账号池 /
网络管理 / stderr 纪律 / 契约冒烟测试)、P2 按需(对话调试 / 凭证自动恢复 / 号池守护 /
用量统计 / 网络设置分离持久化 / 专属分组建议 / 上下文信息透出)、源码组织两条已验证
路线(fork+同步器 vs 同仓库独立模块;单源码双模式已回退) - scripts/plugin-smoke-test.sh 通用契约冒烟测试:模拟宿主拉起插件,验证就绪行
(port/auth 回显/id 一致)、鉴权 401、端点可达、面板可达;已对 skywork 插件实测
通过 7/0/0
Full Changelog: v1.7.5-beta.3...v1.7.5-beta.5