Skip to content

opencode2api v1.7.5-beta.5

Choose a tag to compare

@github-actions github-actions released this 19 Sep 13:00
· 42 commits to main since this release

插件生态两件套:管理面板入口 + 模型元数据;外加一次误路由事故的根修与
插件功能建议清单(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