Skip to content

Releases: zhuweiyou/oc2api

v3.0.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 23 Oct 02:29
524de70

见 #14

v2.9.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 17 Oct 02:01
  • 修复 glm-5.3-flash-free 模型兼容
  • 错误不再归一 429,方便用户看到真实错误反馈

v2.8.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 15 Oct 04:24

去掉 shell 门禁,GATE_TOOL_NAMES 从 ["shell", "read"] 收敛为 ["read"]

v2.7.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 14 Oct 16:20

feat: 客户端工具统一使用上游别名,双向映射名称

上游还会校验 edit 等其它内置工具,只改 read/shell 仍会拒绝完整客户端工具集。
所有客户端工具统一改用 oc2api_ 前缀别名,参数 schema、调用 ID 与工具结果保持不变;
tool_choice 与历史 tool_calls / function_call / function 结果消息同步改名,响应层还原原名。

跨帧名字先等到能确定映射再发出,参数增量不缓冲;保留工具被调用或名字不完整时按错误
结束,不下发客户端可执行的原名。DEBUG 日志补充工具名与别名映射,不记录用户消息正文。

同步升级版本号到 2.7.0。

v2.6.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 14 Oct 14:41

fix: 适配 OpenCode V2 并升级到 2.6.0

v2.5.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 13 Oct 07:17

fix: 按上游算法生成 Zen 免费层 session ID

上游 1.19.0 将 x-opencode-session 从形状校验改为算法校验:
首 12 位必须是 descending() 的 ~(timestamp * 0x1000 + counter) 高 48 位,
旧的 26 位随机 hex 一律被判为 FreeTierError 403。

  • 新增 sessionId(),按 packages/schema/src/identifier.ts 的算法生成
  • getSession() 改用新生成器
  • session 校验断言更新为新格式 ses_ + 12 位 hex + 14 位 base62(30 字符)

v2.4.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 05 Oct 02:33
2cf95d7

feat: configure Zen upstream relay and timeout #9

v2.3.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 03 Oct 04:30
1ad9db7

【新增】

  • 流式工具调用稳定 index 归一:上游常不下发 index(实测 10 轮中 12/36 帧缺失),现按 choice 独立维护映射,保证同一调用 index 稳定、不同调用不串线。已线上验证:一次请求返回两个并行调用,index 正确为 0/1。
  • response.test.js:新增 51 个用例,覆盖完成判定、工具索引、SSE 分块边界、背压、尾段 usage。
  • zen.test.js:新增 11 个用例,覆盖门禁条件、字段透传、危险键名、session 生命周期。
  • 请求门面校验:model 非空字符串、messages 非空数组,不合法直接 400 且不请求上游。
  • 危险键名过滤:__proto__ / constructor / prototype 不转发给上游。
  • 有界缓冲与超时分层:建连 60s、首帧 30s、空闲 120s、尾段 1s;无内容帧缓冲上限恒定,异常刷屏时内存保持 O(1)。
  • 多 choice 按 choice 独立判定:修「一个 choice 先 finish 吞掉其余 choice」。

【修复】

  • 修正正文被篡改:main 会剥离正文里的 <think> 标签和 thinking 词句。实测 main 下 "I am thinking about it" 被截成 "I am";本分支正文原样保留。
  • 修正多行 data: 帧丢内容:实测 main 解析为空串,本分支正确得到内容。
  • 修正截断伪装成成功:main 流式无条件补 [DONE],断流也会被当作正常完成。
  • 修正网络中断裸抛异常:main 遇 socket 错误直接抛未捕获异常,现归一为响应层错误。
  • 修正 finish_reason 归一:带工具调用却标 stop 时归一为 tool_calls(对齐 opencode 官方)。
  • 修正 reasoningEffort 别名:恢复 camelCase → snake_case 规范化。
  • 修正模型列表超时被误吞:超时不再伪装成其他错误。

【删除】

  • tests/node/thinking.test.js(301 行,10 个用例):随「正文剥离 think 标签」功能一并移除。相关保留语义(reasoning 归一、reasoning_effort 透传)已迁入 response.test.js / zen.test.js。
  • 正文 think 标签剥离逻辑:stripThinkBlocks / createOpenAIStreamNormalizer 等导出移除,正文不再被解析。
  • x-opencode-project: global 请求头:已实测无影响(真实请求 200)。

【变更】

  • 门禁工具 5 个 → 2 个:bash/edit/glob/grep/read 精简为 bash/read(已验证最小集,真实联调通过)。
  • UA:去掉 ai-sdk/provider-utils/... runtime/bun/... 后缀,仅保留 opencode/1.18.31。
  • 建连超时 5 分钟 → 60 秒。
  • 请求构造改为整体透传:main 只挑 8 个字段显式转发。
  • 异常响应状态码变化:截断、畸形 JSON 从 200 变为 429(见下方附注)。
  • .gitignore:忽略 .vercel(本地项目关联)和 .env*(环境变量,防密钥泄露)。

v2.2.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 25 Sep 02:50
ad5aa42

重构:app.js 按功能域拆分 + Express Router 路由级鉴权

  • server/app.js 960 行 → 36 行:按功能域拆为平级文件——handler.js(端点编排)、zen.js(上游客户端)、openai.js(响应转换)、middleware.js(中间件)、shared.js(共用工具)、config.js(配置)、log.js(日志)
  • 路由改用 express.Router:.get() / .post() 声明,废除 handleRequest 手写 if/else 分发
  • 鉴权改为路由级中间件 requireAuth:只挂受保护路由(models / chat),/、/health、/ip 免鉴权,删除 handleOpenAI 中的重复鉴权
  • 未知路径行为变更:未注册路径统一返回 404(不再先鉴权返回 401),已用新测试固化
  • CORS 改用 cors 库:显式配置 GET, POST, OPTIONS、固定请求头列表、X-Request-Id 暴露、OPTIONS → 204,与原行为一致
  • 移除 Node↔Fetch 适配层:删 isWebRequest / nodeRequestToFetchRequest / sendNodeResponse / handler 导出,处理器直读原始 body、直写 res(SSE 管道带背压处理,无 body 大小限制)
  • 配置集中到顶层 config 对象:version / apiKey / debug / port 启动时从环境初始化,运行期可覆盖(测试直接改 config.apiKey)
  • 修复日志 bug:DEBUG="false" 字符串是真值导致日志误开,改为启动时 === "true" 归一成布尔
  • 入口简化:删除 isMainModule 判断,startServer 收进 app.js,index.js 变纯启动脚本(npm start / Docker CMD 不变)
  • 版本号取自 package.json:import ... with { type: "json" }(Node 24 实测通过),发版只需 npm version,无需改代码
  • 测试:改为直接 import 目标方法(不再经 app 导出 __test),新增 404 语义 / 尾斜杠 / 公开路由免鉴权 3 个测试
  • 文档:README 架构小节更新并移至文末

v2.1.0

Choose a tag to compare

@zhuweiyou zhuweiyou released this 24 Sep 12:42
9be7bda

修复之前思考没有输出