Codex + CC Switch:保留官方登录,并实现官方订阅 / 第三方中转继续同一个历史会话,插件由官方订阅稳定加载。

ai快给我干活去 2026-09-05 00:06 1

1:切第三方后官方登录丢失


解决:


先切到 OpenAI Official,完全退出 Codex,然后:


codex logout
codex login

选择:


Sign in with ChatGPT

再检查:


codex login status

确认显示:


Logged in using ChatGPT

然后 CC Switch 开启:


设置
→ 通用
→ Codex 应用增强
→ 切换第三方时保留官方登录

这样切第三方后,官方 OAuth 和插件还能保留。


2:官方会话切到第三方后打不开


报错:


Model provider `cc-switch-official` not found

或者第三方旧会话切官方时报:


Model provider `custom` not found

解决:


开启 CC Switch 的:


统一 Codex 会话历史

同时修改了:


会话 JSONL:
session_meta.payload.model_provider

数据库:
state_5.sqlite
threads.model_provider

改完后,这个旧官方会话就能在第三方里继续用了。


3:第三方用过的会话再切回官方,报 401 / 502


我遇到过:


502 Bad Gateway

和:


401 Unauthorized: Invalid API key

而且报错 URL 还是第三方地址:



https://hub.oaifree.com/v1/responses



说明虽然 CC Switch 已经切到官方,但这个会话实际还在走第三方。


解决:


把 CC Switch 的“路由”关闭。


最后使用:


✓ 切换第三方时保留官方登录
✓ 统一 Codex 会话历史
✗ 路由

ccs中的OpenAI Official,config.toml 里的 custom 改成:


model_provider = "custom"

[model_providers.custom]
name = "OpenAI"
requires_openai_auth = true
supports_websockets = true
wire_api = "responses"

注意:


官方状态下不要保留第三方 base_url


比如不能再有:


base_url = "https://hub.oaifree.com/v1"

路由开启和关闭的区别


开启路由


可以做到:


✓ 保持官方 ChatGPT 登录状态
✓ 正常使用官方插件
✓ 官方订阅本身也能正常使用
✓ 平时主要使用第三方中转

但是问题是:


第三方会话和官方会话不能稳定继续同一个历史会话


实际会出现:


官方会话 → 第三方继续
有时可以

第三方使用过的会话 → 再切官方继续
容易继续命中第三方 provider,
出现 401 / 502 等问题

所以“开启路由”更适合这种情况:


✓平时主要使用中转站
✓希望 Codex 一直保持官方登录
✓需要稳定使用官方插件
✓偶尔单独使用官方订阅

不适合频繁在:


官方订阅和第三方中转之间继续同一个长会话。

关闭路由


如果主要需求是:


同一个 Codex 会话
可以在官方订阅和第三方中转之间来回继续

则使用:


✗ 路由
✓ 切换第三方时保留官方登录
✓ 统一 Codex 会话历史

并把会话统一到:


custom

实测这样可以:


官方会话 → 第三方继续


第三方会话 → 官方继续


所以简单来说:


开路由:
适合“主要用中转 + 保持官方登录和插件”

关路由:
适合“官方和第三方来回继续同一个会话”



相关指令

查看所有会话和对应 provider:


@'
import sqlite3
from pathlib import Path

db = Path.home() / ".codex" / "state_5.sqlite"
conn = sqlite3.connect(db)

for row in conn.execute("""
SELECT id, title, model_provider, rollout_path
FROM threads
ORDER BY updated_at DESC
"""):
print(row)

conn.close()
'@ | python -

只看某个 provider,比如 cc-switch-official


@'
import sqlite3
from pathlib import Path

db = Path.home() / ".codex" / "state_5.sqlite"
conn = sqlite3.connect(db)

for row in conn.execute("""
SELECT id, title, model_provider, rollout_path
FROM threads
WHERE model_provider = ?
""", ("cc-switch-official",)):
print(row)

conn.close()
'@ | python -

把某一个会话改成 custom


@'
import sqlite3
from pathlib import Path

THREAD_ID = "你的会话ID"
TARGET = "custom"

db = Path.home() / ".codex" / "state_5.sqlite"
conn = sqlite3.connect(db)

cur = conn.execute("""
UPDATE threads
SET model_provider = ?
WHERE id = ?
""", (TARGET, THREAD_ID))

conn.commit()
print("修改行数:", cur.rowcount)
conn.close()
'@ | python -

如果要批量把所有 cc-switch-official 改成 custom


@'
import sqlite3
from pathlib import Path

db = Path.home() / ".codex" / "state_5.sqlite"
conn = sqlite3.connect(db)

cur = conn.execute("""
UPDATE threads
SET model_provider = 'custom'
WHERE model_provider = 'cc-switch-official'
""")

conn.commit()
print("修改行数:", cur.rowcount)
conn.close()
'@ | python -


以上整理来自gpt

最新回复 (3)
  • 二月萧萧 09-05 00:08
    1

    虽然说也是分享吧 但是ai生成(

  • 灼眼のシャナ 09-05 00:31
    2

    我以前配置的第三方的provider id不是custom,还折腾了一下给ccs加了个可以改provider id的配置项 cc-switch-official这个也是,默认这个值,也给加了个配置 总算是所有对话都能随意切换了

  • Qing3 09-05 00:36
    3

    佬,AI生成的内容要用截图

* 帖子来源Linux.do
返回