Skip to content

Releases: OnesoftQwQ/opencode-go-copilot

v1.13.0

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 18 Oct 09:24

Google Gemini 原生协议支持

  • 新增 Google 协议适配器:新增 google apiMode 与 GoogleApi,按 Gemini generateContent / streamGenerateContent 协议发送 contents、systemInstruction、generationConfig 与 tools。Gemini 4 Argon(gemini-4-argon-contributor)不再被错误地发往 OpenAI Chat Completions 而返回 ModelProtocolUnsupported(#143)。
  • 按模型选择推理端点:优先使用目录中模型级 provider.api,Gemini 走 /inference/go/google/v1beta,Anthropic/OpenAI 模型也分别落到各自的协议 base。
  • 思考与工具调用:支持 Gemini thinkingLevel 低/中/高(默认中,不提供禁用思考)、thought 推理流、图片输入与工具结果图片;回放工具调用时注入 skip_thought_signature_validator,满足 Gemini 3+ 的签名校验。
  • 完整接入:聊天流式输出、原生/高级 Token 指示器、图片代理多轮、Git 提交消息生成均已支持 Google 协议。

用量与模型列表修复

  • 固定控制面端点:套餐用量与模型列表请求不再复用目录中的推理 base,始终访问 https://opencode.ai/zen/go/v1/,修复目录 API 指向 /inference 后持续 404、状态栏显示 Go -- 的问题(#144)。
  • 模型发现恢复:enableAutoModelDiscovery 的 /models 过滤重新生效。

测试与文档

  • 新增 Google 协议与控制面 base 回归测试,扩展 API mode、视觉历史测试。
  • 同步更新 README 与 docs/ 中的协议、端点和测试说明。
  • 刷新硬编码模型目录快照,纳入 Gemini 4 Argon。

修复 Issue

v1.12.2

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 08 Oct 11:08
16e6634

Anthropic 签名 thinking 块回放

  • 修复第二轮 400:Claude 5.x(Haiku 5.5)要求回放的 thinking 块必须带有效 signature,此前扩展会为每条 assistant 消息伪造一个无签名的 thinking 块,导致第二轮请求返回 400 messages.N.content.M.thinking.signature: Field required(#137 后续)。
  • 签名跨轮持久化:流式 signature_delta 到达时,把 {thinking, signature} 写入私有 application/vnd.opencodego.anthropic-thinking+json DataPart;下一轮由 convertMessages() 重建带签名的 thinking 块置于内容最前,VS Code 的 LanguageModelThinkingPart 只携带文本的问题由此绕过。
  • 不再伪造思考内容:无签名的普通 thinking 文本一律丢弃(不再注入 "Next step."),includeReasoningInRequest=false 时连签名块也丢弃。

测试与文档

  • 新增 scripts/test-anthropic-thinking-signature.mjs 覆盖 DataPart 编解码与 convertMessages() 回放闭环;同步修正既有的 Anthropic 视觉历史与工具结果合并测试。
  • 对 OpenCode Go 实测通过:真实流式轮次捕获签名 → 下一轮重建带签名 thinking 块 → 返回 200。
  • 同步更新 docs/reference.md、docs/architecture.md、docs/build.md。

v1.12.1

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 08 Oct 09:22
f810b3d

Claude Haiku 5.5 支持

  • 修复 400 报错:新增 claude-haiku-5-5 模型覆盖项,将其标记为自适应思考(thinkingMode: "adaptive")与 Anthropic 协议。Claude 5.x 系列已移除旧版 thinking: { type: "enabled", budget_tokens } 形式,会返回 400 "thinking.type.enabled" is not supported for this model;现在请求改发 thinking: { type: "adaptive" },思考强度通过顶层 output_config.effort(low/medium/high/xhigh/max)控制(#137)。
  • 统一思考字段构建:新增 buildAnthropicThinkingConfig(),主请求路径与视觉代理轮次共用同一逻辑;旧版 Anthropic 模型仍保持 enabled + budget_tokens 行为,supportsThinkingParam=false 的模型继续省略该字段。
  • 关闭思考:thinking: { type: "disabled" } 在默认强度下可用,Git 提交消息生成路径不受影响。

测试与文档

  • 新增 claude-haiku-5-5 自适应思考回归断言,覆盖请求体形状与旧模型兼容性;并对 OpenCode Go 实测通过(非流式、流式、各强度档均返回 200)。
  • 同步更新 docs/reference.md、docs/architecture.md、docs/build.md。

v1.12.0

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 17 Sep 14:41
5441cd8

移除 OpenCode Zen 免费模型支持

  • 移除原因:OpenCode Zen 免费层现已拒绝来自 OpenCode 之外环境的请求(返回 403 FreeTierError),免费模型在本插件中已无法使用(#134),因此不再保留该功能。
  • 设置项移除:删除 opencodego.enableZenFreeModels 设置。此前已启用该设置的用户升级后模型选择器中不再出现 Zen 模型。
  • 选择器不再有 Zen 分组:移除 OpenCode Zen 分组、 (Zen) 名称后缀与免费模型工具提示;扩展现在只保留 opencode-go 一个服务商,模型列表全部来自 OpenCode Go。
  • 移除 Zen 专用逻辑:Zen 免费模型专用的 required → auto 工具选择降级、401「已结束免费使用」错误提示、请求时的 Go/Zen 分流、以及 modelsDev.load 日志中的 Zen 模型计数一并删除。

兜底目录快照精简

  • 快照只保留 Go 服务商:src/hardcodedModelList.ts 移除 Zen 服务商的完整模型元数据(约 4700 行 / 127 KB),官方目录与镜像均不可达时的兜底行为不变。

工具与文档同步

  • 修复周度模型检查:scripts/check-new-models.mjs 改为从硬编码快照读取模型 ID(此前引用的 src/models.ts / src/zen/zenModels.ts 早已不存在,脚本实际已失效),自动创建的检查 Issue 模板同步更新。
  • README(中英)、docs/architecture.md、docs/reference.md、AGENTS.md、设置说明与欢迎页文案已同步移除 Zen 相关内容。

v1.11.1

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 14 Sep 17:02
57beaeb

GLM-5.3 / GLM-5.3-Flash 请求修复

  • 不再发送上游拒绝的 thinking 字段:GLM-5.3 与 GLM-5.3-Flash 的思考强制开启,其上游路由不接受 thinking 字段(HTTP 400 json: unknown field "thinking"),此前发往这两个模型的请求会直接失败。新增 supportsThinkingParam 模型能力位(默认 true),标记为 false 的模型请求体省略 thinking,思考强度仅通过 reasoning_effort(low/high/max)控制。
  • 模型选择器不再提供「禁用思考」档:这两个模型无法关闭思考,选择器只保留 low/high/max 三档,避免选择无效档位后触发 400;此前已选择「禁用思考」的会话会按模型默认强度正常思考,不再报错。
  • 修复覆盖 OpenAI Chat Completions、Anthropic Messages 与视觉代理三条请求构建路径,并新增 scripts/test-thinking-param.mjs 回归测试(字段省略、reasoning_effort 保留、档位枚举),已接入 npm test。
  • 同步更新 README 功能清单、状态栏截图与架构/参考/构建文档。

v1.11.0

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 11 Sep 01:52
dfb16d4

推理代理 Base URL 支持

  • 新增代理 Base URL 配置:通过新的 opencodego.inferenceBaseUrl 设置(machine 作用域、不随设置同步),可将推理请求的 Base URL 覆盖为本地代理/网关地址,适用于可观测性、多 Key 路由、压缩等场景。聊天请求(OpenAI Chat Completions、OpenAI Responses、Anthropic Messages 三种协议)与 Git 提交消息生成均会经过代理;用量查询与模型列表请求仍访问官方地址,不受影响。(#126)
  • 新增「设置代理 Base URL」命令:在命令面板运行 OpenCodeGo: 设置代理 Base URL 即可配置。命令会先在命令框显示兼容性提示——本功能不是用于接入第三方提供商,而是用于接入本地代理服务,代理的协议、路径、模型 ID 与请求头必须与官方端点完全一致,且使用代理后遇到问题时需先排除代理因素再提交 Issue;选择「我已知晓」后才进入输入框,留空可清除覆盖、恢复官方端点。
  • 覆盖优先级明确:用户覆盖 > 模型目录 Base URL > 官方默认地址,且输入时即校验 URL 合法性。
  • 统一 Base URL 安全校验:新增共享的 validateBaseUrl()(Provider、提交生成与命令输入框三处共用),拒绝非 HTTP(S) 与非法 URL;纯 HTTP 仅允许 localhost/私有网络地址,远程端点强制 HTTPS;同时修复了非法 Base URL 可能引发未捕获异常的问题。
  • 新增 scripts/test-base-url.mjs 测试,覆盖覆盖读取与 HTTP 安全检查规则。

打包优化

  • 清理 VSIX 发布内容:.vscodeignore 新增排除运行时日志(*.log)、.pi-subagents/、docs/、AGENTS.md、锁文件与 eslint.config.mjs 等非运行所需文件,发布包不再携带本地产物。

v1.10.3

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 09 Sep 06:50
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(视觉代理轮次额外标记);扩展激活时记录会话登记恢复数量与过期数量,便于排查路由问题。

v1.10.2

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 05 Sep 15:51
8f39db8

OpenCode Go API 兼容性

  • 请求携带 x-opencode-session 会话头:OpenCode Go 自 2026-09-05 起强制要求所有推理请求携带该头部,缺失时请求会被拒绝;服务端用它将同一会话的请求路由到同一后端,并优化 prompt 缓存命中。扩展现在会在所有推理请求上自动携带该头部,覆盖三种 API 模式(openai / openai-responses / anthropic)、图片代理的多轮请求以及 Git 提交消息生成,无需任何配置。由于 VS Code 不向语言模型提供方暴露会话标识,聊天请求的会话 ID 由目标模型 ID 与会话首条用户消息确定性派生(SHA-256,格式化为标准 UUID):同一会话跨轮次保持稳定,不同会话互不相同;纯图片等无文本锚点的请求回退为随机 UUID。Git 提交消息生成等无会话上下文的请求每次使用独立随机 UUID。

视觉代理修复

  • 按厂商前缀 ID 解析视觉模型:opencodego.visionProxyModel 配置存储的是裸模型 ID(如 qwen3.8-plus),而 VS Code 暴露的 LanguageModelChat.id 是带厂商前缀的完整标识(如 opencodego/qwen3.8-plus),此前用裸 ID 精确查找永远匹配不到,导致图片代理报“模型未找到”。现在解析顺序为:先精确匹配完整 ID(兼容用户显式配置 vendor/id),再按裸 ID 后缀匹配,并优先选择本扩展自身厂商注册的模型,以确定性地消除同名模型歧义(如 tokenrhythm/kimi-k2.6 与 opencodego/kimi-k2.6)。

v1.10.1

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 27 Aug 13:38
9db4d84

### 视觉代理(Vision Proxy)修复

- 按厂商前缀 ID 解析视觉模型:opencodego.visionProxyModel 配置存储的是裸模型 ID(如 qwen3.8-plus),而 VS Code 暴露的 LanguageModelChat.id 是带厂商前缀的完整标识(如 opencodego/qwen3.8-plus),此前用裸 ID 精确查找永远匹配不到。新增 resolveVisionModel(),解析顺序为:先精确匹配完整 ID(用户可显式配置 vendor/id),再按裸 ID 后缀匹配,并优先选择本扩展自身厂商注册的模型,以确定性地消除同名模型歧义(如 tokenrhythm/kimi-k2.6 与 opencodego/kimi-k2.6)。

模型目录与显示优化

  • 模型后缀与提示文案调整:将 OpenCode Zen 免费模型的名称后缀由 Free 改为 (Zen),使模型在仅显示名称的界面(如自定义 Agent 模型选择)中来源更明确。
  • Zen 模型训练数据提示:为 OpenCode Zen 模型新增 tooltip,提示其免费但可能收集数据用于训练,并附官方文档链接;同步补充中文翻译。
  • Go 模型列表一致性:在目录构建阶段过滤掉会被路由到 Zen 端点的 -free 后缀 ID(如 ox-alpha-free),避免用户在 Go 选择器中选择后于 Zen 端点返回 401。

兼容性增强

  • 容忍缺失 MIME 类型并遵循工具模式:在 MIME 边界将运行时 LanguageModelDataPart.mimeType 视为未知类型,缺失值不再进入字符串方法或导致 Token 计数崩溃;工具选择优先读取官方 ProvideLanguageModelChatResponseOptions.toolMode,同时保留 modelOptions.toolMode 作为旧版兼容回退。

文档重构

  • 拆分 AGENTS.md 避免巨型文件:将原先单体的 AGENTS.md 拆分为 architecture.md(架构说明)、build.md(编译构建)、reference.md(文件索引与函数定义),AGENTS.md 仅保留开发规范与代码约定,并补充对应引用链接。

CI 流程改进

  • PR 编译检查:新增 pr-compile.yml 工作流,在 Pull Request 上执行编译检查,提前拦截类型/编译错误。
  • master 更新时快进 dev:新增 sync-master-to-dev.yml 工作流,当 master 分支更新时自动将 dev 分支快进,保持分支同步。

v1.10.0

Choose a tag to compare

@OnesoftQwQ OnesoftQwQ released this 20 Aug 13:19
2f167fc

OpenAI Responses API 协议支持

  • 全新 Responses 协议适配器:新增对 OpenAI Responses API(/responses)的完整支持,包括输入消息与图片转换、扁平函数工具定义(strict: false)、推理过程与加密推理内容处理、token 用量上报及类型化 SSE 流解析。适配器与原有 OpenAI 兼容 Chat Completions、Anthropic Messages 两个协议并行工作,互不影响。
  • 按目录适配器自动路由:扩展读取 models.dev 模型条目中的适配器包(模型级 provider.npm,缺失时继承服务商 npm)自动选择请求协议——@ai-sdk/openai 走 Responses、@ai-sdk/openai-compatible 走 Chat Completions、@ai-sdk/anthropic 走 Anthropic;旧目录缺失适配器信息时才用 family 启发式兜底。修复了 Grok 4.5 等 Responses 原生模型被错误发送到 /chat/completions 而失败的问题(#104)。

无状态推理与工具续传

  • 加密推理内容续传:聊天与视觉代理请求使用 store: false,流式返回的 reasoning.encrypted_content 会保存到内部数据片段中,并在后续轮次(视觉代理追问)及跨会话历史中自动回放,保持推理上下文与工具调用的连续性。
  • 视觉代理多轮支持:图片代理(ask_image)在 Responses 协议下可进行多轮追问,工具调用与结果按 function_call / function_call_output 标准格式重建。

Git 提交消息生成

  • 按协议生成:Git 提交消息生成会根据所选模型的协议自动选择 OpenAI Chat、OpenAI Responses 或 Anthropic 适配器;Responses 路径使用顶层 instructions 与类型化输入,且仅在目录声明支持时才会为提交生成关闭思考。

思考开关修复

  • 恢复可关思考能力:Chat Completions / Anthropic 协议下可通过 thinking: { type: "disabled" } 关闭思考的模型(如 deepseek-v4 系列、glm-5.x、kimi-k3 等)重新获得"禁用思考"选项,不再被强制常开。
  • Responses 思考开关按能力显隐:Responses 原生且未声明 none/disabled 推理档位的模型(如 Grok 4.5)不再被发送无效的 reasoning.effort: "none"(避免端点拒绝),模型选择器中也不再显示无效的"禁用思考"档位。

测试与质量

  • 新增协议测试:新增 API 模式解析、Responses 适配器(消息/图片/工具/请求体/SSE/用量/加密推理回放)与视觉历史三协议转换测试脚本,并整合进 npm test 一键运行。