Skip to content

v1.10.3

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 09 Sep 06:50
· 29 commits to master since this release
84056ad

会话路由可靠性修复

  • 自动逃离故障后端 (#123):v1.10.2 起 OpenCode Go 按会话亲和路由分发请求,当某个会话被分配到故障后端时,重试始终打到同一台坏机器,导致该对话永久失败(相同报错反复出现,换开场白才能恢复)。现在扩展会识别上游提供方错误(HTTP 400 api_error/上游请求失败/响应非 JSON,及 5xx),自动轮换会话 ID 并立即重试一次——换会话 ID 即换路由后端;轮换结果持久化,后续轮次自动留在健康后端。鉴权失败(401)、限流(429)与内容审核拒绝不参与轮换,维持原有处理。
  • 手动重置会话路由:新增命令 opencodego.resetSessionRouting(重置会路由),一键清空全部会话登记,各对话的下一次请求即以新会话路由,无需再靠修改开场白逃离被污染的路由。

会话 ID 机制升级

  • 登记制会话 ID:v1.10.2 的会话 ID 由“模型 + 首条用户消息”哈希派生,相同开场白的不同对话会共享会话 ID(如多个对话都以“你好”开头)。现改为登记制:对话首轮请求使用随机 UUID,输出完成后以“模型 + 首条用户消息 + 首轮回复”为键登记,后续轮次从重发的对话历史中提取相同键查回同一 ID——同一对话跨轮次严格稳定,相同开场白的不同对话自然分流,会话缓存优化不再互相干扰。

会话登记持久化

  • 重启不再失效:会话登记表持久化存储于扩展全局状态,重启 VS Code 后进行中的对话仍保持原有会话 ID 与路由亲和。条目按“最后使用时间”做 3 天滑动有效期:活跃对话每次使用自动续期,连续 3 天未使用的对话过期并按新会话重新登记;登记表容量上限 512 条(LRU 淘汰)。

日志增强

  • 会话 ID 可追踪:request.start 日志新增 sessionId 与 sessionRegistered 字段(标记本次请求是复用已登记会话还是新会话);会话轮换日志记录轮换前后的 ID(视觉代理轮次额外标记);扩展激活时记录会话登记恢复数量与过期数量,便于排查路由问题。