AB
AiBoss站
project

RuiC-oc-ferry - 把 OpenCode 免费模型接入 WorkBuddy 的本机转发层

OC Ferry 是 HRuiCcc 维护的跨平台托盘应用,在隔离的 OpenCode 运行时里按价格筛出免费模型、逐个探测工具调用能力,再把通过的模型写入 WorkBuddy 的 models.json,并通过只监听本机的 OpenAI 兼容端口转发请求。

OC Ferry(仓库名 RuiC-oc-ferry)是一个跨平台托盘应用,目标是把 OpenCode 的免费模型池接入 WorkBuddy。据项目自述,WorkBuddy 支持在 models.json 中填写自定义模型,而 OpenCode 的免费模型并不是一个可以直接填进去的 OpenAI 端点:目录里名字带 free 的模型不一定真免费,能聊天也不等于能按 WorkBuddy 的方式产生工具调用,免费池还会随时上下线。OC Ferry 就充当中间这一层——在数据目录里放一份隔离的 OpenCode,按价格筛出免费模型,逐个探测它们能否按 WorkBuddy 的工具协议工作,把通过的写进 models.json,再起一个只监听本机的转发口供 WorkBuddy 调用。它适合已经在用 WorkBuddy、希望把免费模型接进来又不想手工维护模型列表的用户。

维护者与状态

项目由 HRuiCcc 维护,仓库创建于 2026-10-10,最后一次提交在 2026-10-12。最新 release 为 v0.3.0,发布于 2026-10-12。截至 2026-10-20,仓库星标数为 257。许可证为 MIT。

主要能力

以下能力均据项目 README 自述整理:

  • 按价格发现免费模型:只看价格字段,输入、输出、缓存读写全为 0 才算免费,名字里带 free 不算数;已声明 deprecated 的模型直接排除。
  • 工具调用体检:给模型 5 个工具并允许自由选择,让它读一个带随机 token 的文件。只回文本不算失败,会按「可用 · 仅对话」发布并关闭工具;动作不符重试一次,超时与格式失败不重试。
  • 并发与缓存:检测 3 路并发,一轮约 60 秒;判定按模型缓存,成功保留 6 小时,当时的负载只保留 10 分钟,因此重启基本是秒开,不会每次全量重测。
  • 安全的导入策略:只增删自己标记过的条目,用户手写的条目不碰;写前备份、加锁、原子替换,内容没变就不写;退出时把自己导入的条目摘干净。
  • 受限转发:模型只能回一个 JSON 信封来表达动作,执行权始终在 WorkBuddy 手里,任何本机动作一律被拒绝或转交成外部工具调用。
  • 界面:浅色与深色两套主题,四档状态可读,支持行内展开详情与「只重测这一个」,判定来自缓存时会如实标注。

使用入口

仓库地址:HRuiCcc/RuiC-oc-ferry。

据项目说明,使用前需先安装 WorkBuddy,不需要另外安装 Node.js,打包后的应用使用 Electron 自带的 Node 运行后台服务。macOS(Apple 芯片)用户可从仓库 Releases 下载 dmg,拖入「应用程序」后打开;项目未做 Apple 公证,首次打开可能需要右键选择「打开」,若提示「已损坏」,需先核对 Release 说明中的 sha256,再移除下载隔离标记。Windows 用户运行 Setup 安装包即可,安装过程会写入当前用户的开机自启项(启动参数 --hidden,开机后只常驻托盘),卸载时会清除该条目。首次启动会自动准备 OpenCode、扫描免费模型并逐个检测,检测完自动导入一次;之后重新检测或读取不会自动修改 WorkBuddy,需要手动点击「导入 WorkBuddy」。

开发与调试方面,README 给出的命令包括 npm ci、npm test(85 项自动测试,不访问网络)、npm run desktop(窗口加托盘加后台服务)、npm start(仅后台服务)以及各平台的打包脚本。本机接口需要 Authorization: Bearer 携带 api-key,带 Origin 头的请求一律返回 403;提供 /health、/v1/models、/v1/chat/completions(支持 stream,并发上限 4)以及若干 /admin 路由。

许可与限制

项目采用 MIT 许可证。README 中「诚实交代」一节列出的边界包括:启动后会自动发送简短检测请求,会消耗少量免费额度;检测通过只代表这一次能按协议产生动作,不代表完整工作流都验证过;界面上的耗时是完整请求用时,不是首字延迟,剩余额度上游不提供、查不到;不可用的模型只在窗口里保留记录,不会提供给 WorkBuddy;免费模型与额度由上游决定,随时可能变化;系统代理只支持手动 HTTP/HTTPS 配置,不支持 PAC 与 SOCKS。此外,关闭窗口不等于退出,从托盘退出时会摘掉自己导入的条目,因此在这些模型可用期间需要让它常驻。