OpenCode extra-option edits change untouched string values into JSON values in cc-switch
Quick fix
cc-switch 3.20.4 在保存 OpenCode 提供商时,会错误地将未修改的字符串型 Extra SDK Options(如 "123", "false")强制解析为 JSON 类型;目前该问题已修复,请升级至最新版本。
Symptom
Section titled “Symptom”OpenCode extra-option edits change untouched string values into JSON values. The submitted name becomes the number 123. Untouched strings "false", "null", "[]" and "{}" similarly become boolean/null/array/object values.cc-switch 3.20.4 在处理 OpenCode 提供商的 Extra SDK Options 时,初始化辅助函数会先去除字符串的引号,随后在每次编辑、添加或删除选项时,对所有行执行 JSON.parse 操作。这导致未被修改的字符串型数值(如 "123"、"false"、"null"、"[]" 或 "{}")被意外转换为对应的 JSON 类型(数字、布尔值、null、数组或对象)。只有在完全不触碰 Extra SDK Options 的情况下直接保存,才能保留原始字符串类型。该问题已关闭,建议升级至修复后的版本。
升级 cc-switch 到 3.20.4 之后的版本。该问题已在源码中修复,更新后 Extra SDK Options 中未修改的字符串将保持原始类型。
Affected Versions
Section titled “Affected Versions”ToolOpenCode
Version3.20.4 (已修复)
PlatformsLinux
Source Issues
Section titled “Source Issues”本页汇总自 1 个真实 issue
- 为什么我只修改了 timeout,name 字段却从字符串变成了数字?
- 这是 cc-switch 3.20.4 的一个 bug:当 Extra SDK Options 发生任何变更(包括添加、删除或修改其他字段)时,系统会重新解析所有字段的值,将类似 "123" 的字符串自动转换为 JSON 数字 123。
- 如何避免字符串被错误转换?
- 在 3.20.4 版本中,只要不打开或修改 Extra SDK Options 区域,直接保存即可保留原始类型。彻底解决方案是升级到修复后的版本。
- 哪些字符串值会被错误转换?
- 任何符合 JSON 语法的字符串都会被转换,包括 "123"(变为数字)、"false"/"true"(变为布尔值)、"null"(变为 null)、"[]"(变为数组)以及 "{}"(变为对象)。普通字符串(如 "abc")不受影响。
这是一个非官方社区 wiki,与 cc-switch 作者及项目本身无隶属关系。内容整理自项目公开的 GitHub issues。本站不分发任何软件。