• justaman

    现在08.14的chatgpt桌面版里的codex加载机制,已经不会根据model_provider来区分加载了,而是会加载所有provider的会话记录(应该是最近更新的),所以只使用桌面版的话其实model_provider配置什么已经无所谓了

    但终端的codex依然是根据model_provider来区分加载的,即不同model_provider的会话是独立显示的

    (让ai分析了桌面版的日志和codex cli的源码知道的)

    问题

    plus的额度不够用时,会使用中转,会发现当切换了后,对话历史没了,准确的说是变了

    简单来说就是:chatgpt账号的会话和使用中转后的会话是分开的

    就会出现:chatgpt账号里的对话在切换到中转后就消失了

    之前的处理是让ai总结生成handoff文档,然后创建一个新会话让ai来回顾加载

    原因

    出现这个的原因就是config.toml里的model_provider配置项

    所有的中转给的默认配置都是新增一个名为"OpenAI"的provider,如:```
    model_provider = "OpenAI"
    model = "gpt-5.6-sol"
    review_model = "gpt-5.5"
    model_reasoning_effort = "high"
    disable_response_storage = true
    network_access = "enabled"
    windows_wsl_setup_acknowledged = true

    [model_providers.OpenAI]
    name = "OpenAI"
    base_url = "http://domain.com"
    wire_api = "responses"
    requires_openai_auth = true
    ```会话在创建时会绑定当前配置里的model_provider的值

    在加载会话时会根据model_provider来加载,用当前配置里的model_provider来对会话进行筛选后展示

    我之前切换到chatgpt账号时会只保留下面的配置,其他的都注释掉:```
    [model_providers.OpenAI]
    name = "OpenAI"
    ``而其实在没有配置model_provider时,有一个默认内置的:“openai”,即等价于:``
    model_provider = "openai"
    ...

    [model_providers.openai]
    name = "OpenAI"
    base_url = "官方api地址"
    ...
    ```所以在使用chatgpt账号时创建的会话所绑定的model_provider值是"openai",而切换到中转后model_provider变成了"OpenAI"

    加载时就只会加载其中一个model_provider对应的会话,导致会话"消失"、“丢失”

    解决

    解决办法也很简单,两者是等价的

    - 要么把model_provider从配置文件里删掉,即使用默认的"openai"

    - 要么手动给model_provider赋值"openai"

    上下文远程压缩

    看的是provider配置里的name,而非model_provider的值```
    [model_providers.OpenAI]
    name = "OpenAI"
    ```所以无论是[model_providers.OpenAI]还是[model_providers.openai],只要name的值是"OpenAI"就会使用远程压缩

    主楼
  • cat3399

    - 要么手动给model_provider赋值"openai"

    实际试过吗,我大概一周前测试过,提示openai为builtin model_provider,不能主动设置

    #1
  • justaman

    - openai

    刚试了,可以的,没有报什么错误,可以正常对话

    #2
  • cat3399

    图片

    图片

    不行呢,桌面端还能进去,codex cli启动直接报错

    #3
  • justaman

    哦,确实不行,不能覆盖内置的 [model_providers.openai],那这样的话就无法在model_provider是"openai"的时候自定义base_url了,额,确实有问题

    #4
  • cat3399

    修改~/.codex/state_5.sqlite这个数据库中threads.model_provider为目前~/.codex/config.toml中的model_provider,直接修改,不必备份不必反复验证

    直接让codex改就行 ^-^顺便还能验证中转站能不能用

    #5
  • apparition

    有点久没研究了

    不设置 model_provider 和所属 profile

    直接用 base_url 切换不行吗?

    #6

发表回复

登录后回复