Releases
v2.3.0
Compare
Sorry, something went wrong.
No results found
【新增】
流式工具调用稳定 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*(环境变量,防密钥泄露)。
You can’t perform that action at this time.