解决deepseek-v4-flash-0731版本在ccswitch无法显示max档位的问题
1. 问题 随着 deepseek-v4-flash-0731 版本发布,现在新版的的v4-flash支持low、high、max三档思考模式,但是在 CC Switch 的 DeepSeek-response 配置里,思考强度明明设成了 max,Codex 对话里却有两个怪现象: 选择器只有"轻度 / 高"两档,找不到 max; 抓包一看,实际请求走的也是 high,根本没跑 max。 配置文件看起来又没问题(config.toml 里写的确实是 max),就是死活不生效。 2. 分析原因 问题不在 CC Switch,也不在模型目录,而是 Codex Desktop 自己的两层机制: 实际强度没走 max:Codex 每个对话(线程)有自己的思考强度设置,存在应用状态库里。这个线程级设置会覆盖 config.toml 里的默认值。当时线程被设成了 high,所以请求只按 high 发。 选择器看不到 max:Desktop 选择器显示的档位 = 模型支持的档位 ∩ 应用启用的档位。deepseek-v4-flash 支持 low / high / max,但应用启用档位列表默认是 low / medium / high / xhigh / ultra,默认不含 max。一交集,就只剩 low / high,max 被藏起来了。 一句话:是 Desktop 的 UI 过滤把 max 挡住了,加上线程级设置覆盖了 config 默认值。 3. 如何解决 改三处,再重启一次: 在 ~/.codex/config.toml 的 [desktop] 段加一行,把 max 放回启用档位列表; 把同一行同步进 CC Switch 数据库里 DeepSeek-response 的配置模板,防止切换 provider 时被覆盖; 把当前对话在状态库里的 reasoning_effort 从 high 改成 max。 最后完全退出 Codex Desktop(Cmd+Q)再重新打开。重启后选择器就出现"最高"档,抓包确认请求体里 reasoning.effort = max,修复完成。 4. 解决细节提示词(AI 可直接执行) 把下面的内容整段交给一个能读写本地文件的 AI 执行即可。 任务 修复 Codex Desktop + CC Switch 使用 deepseek-v4-flash 时,对话选择器无法显示/使用 max 思考强度的问题。验收标准:重启后当前对话选择器能看到"最高(max)"档,且实际请求以 reasoning.effort = max 发出。 根因(已定位,按此修改即可) Desktop 选择器档位 = 模型 supported_reasoning_levels ∩ 应用设置 enabled-reasoning-efforts。该设置默认 ["low","medium","high","xhigh","ultra"],不含 max。 该设置从 ~/.codex/config.toml 的 [desktop] 段读取(不是 [features] 段)。 对话实际强度由 ~/.codex/state_5.sqlite 的 threads.reasoning_effort 决定,会覆盖 config.toml 的 model_reasoning_effort 默认值。 修改步骤 0. 备份(必做,出错可恢复) 12345TS=$(date +%Y%m%d_%H%M%S)mkdir -p ~/.cc-switch/backupscp ~/.codex/config.toml ~/.cc-switch/backups/config.toml.before-maxfix-$TScp ~/.cc-switch/cc-switch.db ~/.cc-switch/backups/cc-switch.db.before-maxfix-$TSsqlite3 ~/.codex/state_5.sqlite ".backup '$HOME/.cc-switch/backups/state_5.sqlite.before-maxfix-$TS'" 1. 修改 ~/.codex/config.toml 在 [desktop] 段(即含 followUpQueueMode 的那段)追加一行,kebab 键必须加引号: 123[desktop]followUpQueueMode = "queue""enabled-reasoning-efforts" = ["low", "medium", "high", "xhigh", "max", "ultra"] 注意:放在 [desktop] 下,不要放 [features]。 2. 修改 CC Switch 数据库(DeepSeek-response 模板) 目标:~/.cc-switch/cc-switch.db 中 providers 表、app_type='codex' AND name='DeepSeek-response' 行的 settings_config JSON 里,$.config 这个字符串中的 [desktop] 段加上同一行。 务必用 Python 的 json 模块读写(JSON 字符串内引号需转义,用 shell 直接拼裸引号会写坏 JSON): 1234567891011121314import sqlite3, jsondb = sqlite3.connect('/Users/<用户名>/.cc-switch/cc-switch.db')row = db.execute("SELECT settings_config FROM providers WHERE app_type='codex' AND name='DeepSeek-response'").fetchone()[0]cfg = json.loads(row)conf = cfg['config']old = '[desktop]\nfollowUpQueueMode = "queue"'new = old + '\n"enabled-reasoning-efforts" = ["low", "medium", "high", "xhigh", "max", "ultra"]'assert old in confcfg['config'] = conf.replace(old, new, 1)db.execute("UPDATE providers SET settings_config=? WHERE app_type='codex' AND name='DeepSeek-response'", (json.dumps(cfg, ensure_ascii=False),))db.commit()# 校验:必须输出 json_valid=1print(db.execute("SELECT json_valid(settings_config) FROM providers WHERE app_type='codex' AND name='DeepSeek-response'").fetchone()) 3. 修改当前线程的思考强度 先查线程 ID(正在对话的线程): 1sqlite3 ~/.codex/state_5.sqlite "SELECT id, model, reasoning_effort FROM threads ORDER BY updated_at DESC LIMIT 10;" 然后把对应线程改为 max: 1sqlite3 ~/.codex/state_5.sqlite "UPDATE threads SET reasoning_effort='max' WHERE id='<线程ID>';" 4. 重启应用 提示用户完全退出 Codex Desktop(Cmd+Q,不是关窗口,关窗口会最小化到托盘),再重新打开。 验证 重启并让用户发一句话后检查: 12345678910# 1) 线程状态sqlite3 ~/.codex/state_5.sqlite "SELECT id, model, reasoning_effort FROM threads WHERE id='<线程ID>';"# 期望 reasoning_effort = max# 2) 实际请求体(Codex 自身 HTTP 客户端日志,等价于抓包)sqlite3 ~/.codex/logs_2.sqlite "SELECT feedback_log_body FROM logs WHERE thread_id='<线程ID>' AND feedback_log_body LIKE '%POST to https://api.deepseek.com/responses%' ORDER BY ts DESC LIMIT 1;"# 期望包含 "reasoning":{"effort":"max","summary":"detailed"}# 3) 会话记录# ~/.codex/sessions/<日期>/rollout-<线程ID>.jsonl 的 turn_context 应显示 effort:"max" 注意事项 不要修改任何 API key、token、认证字段。 修改 cc-switch.db 后必须确认 json_valid(settings_config) = 1。 修改前先备份,出错从备份恢复。 不要擅自向用户线程发送测试消息来触发验证轮次,除非用户明确要求。
阅读更多 →