当前位置: 首页 > news >正文

CodeX windows app使用第三方api以及session记录还原

适宜背景

之前使用openai订阅然后需要切换到中转站或者自定义api的人

从中转换到另外一个中转发现掉历史记录的人。

历史记录有备份,导入后不知道怎么还原的人。

第一节 codex如何使用第三方api

无论是codex cli还是codex app都是共用一份配置文件的。

配置文件在类似于C:\Users\22586\.codex的位置,中间22586是你的个人文件夹

直接修改的例子:

model_provider = "codex" model = "deepseek/deepseek-v4-flash" model_reasoning_effort = "high" disable_response_storage = true #我建议设置为false [model_providers.codex] name = "codex" base_url = "https://open.cherryin.ai/v1" wire_api = "responses" requires_openai_auth = true

配置细节和额外配置

拓展上下文的参数:

model_context_window = 1000000 model_auto_compact_token_limit = 900000

model_provider = "codex"
作用:指定使用哪个模型供应商配置块
关联:它对应下方 [model_providers.codex] 段落,告诉 Codex CLI “去这个配置块里找 API 地址、认证方式等信息”
如果你有多个供应商(如 [model_providers.openai]、[model_providers.azure]),这里决定用哪一个
model = "deepseek/deepseek-v4-flash"
作用:每次 API 请求时发送的模型名称
传递方式:它会被原样放入请求体的 model 字段中发给 base_url
你当前情况:你用的是 DeepSeek 的模型(v4-flash 是 DeepSeek 的轻量快速版),通过第三方代理 cherryin 中转调用
注意:这个值是否有效取决于你的 base_url 后端是否认识 deepseek/deepseek-v4-flash 这个名字
model_reasoning_effort = "high"
作用:控制推理模型(如 o 系列、gpt-5 系列等)的内部推理深度
可选值:
"none" → 不做额外推理,直接输出
"low" → 轻度推理
"medium" → 中等推理(默认)
"high" → 深度推理
影响:
设成 "high" 会让模型在内部多“思考”几轮,质量更高但 token 消耗翻倍甚至更多
对于不支持推理参数的非推理模型(如 gpt-4o、deepseek-v4-flash),这个参数可能被忽略
适用条件:你的 API 后端需要支持 OpenAI 的 reasoning_effort 参数
disable_response_storage = true
作用:禁止 Codex CLI 将对话内容保存到本地磁盘
设为 true 时:
会话不会被写入 ~/.codex/conversations/ 目录
关闭终端后历史对话彻底消失,无法用 /resume 恢复
设为 false 或省略时(默认):
对话自动存档,可随时恢复
适用场景:处理敏感代码/密钥、临时一次性任务、不想留痕
🔧 [model_providers.codex] 配置块
name = "codex"
作用:这个供应商配置的标识名称
显示位置:
/status 命令中显示的 provider 名称
日志/错误信息中出现
可以随便起名,比如 "deepseek"、"my-proxy" 等,但必须和全局 model_provider 的值一致
base_url = "https://open.cherryin.ai/v1"
作用:所有 API 请求的最终目的地
工作方式:
Codex CLI 会把请求发到 https://open.cherryin.ai/v1/responses(因为 wire_api = "responses")
这是一个第三方代理服务器,不是 OpenAI 官方
影响:

你需要在 cherryin 平台上单独购买额度
DeepSeek 官方 API 地址应该是 https://api.deepseek.com/v1,而 cherryin 是一个中转服务
wire_api = "responses"
作用:决定使用 OpenAI 的哪套 API 协议来发送请求
可选值:
"responses" → 使用 OpenAI 最新的 Responses API(统一了对话 + 工具调用 + 结构化输出)
"chat/completions" → 使用传统的 Chat Completions API
关键区别:
"responses" 是 OpenAI 2025 年后推出的新接口,功能更强(原生支持多轮工具调用、状态管理等)
"chat/completions" 是经典接口,兼容性最好,几乎所有第三方代理都支持
你的情况:cherryin 代理支持 "responses" ,如果 后端实际只支持 Chat Completions 格式,请求会直接报错
requires_openai_auth = true
作用:控制 HTTP 请求的认证头格式
设为 true 时:
Codex CLI 在请求中加上 Authorization: Bearer <你的API密钥>
这是 OpenAI 的标准认证方式
设为 false 时:
可能用其他认证方式(如 x-api-key 头),取决于代理服务器的要求

个人建议

如果你是新手没有聊天记录或者不在乎聊天记录,或者短时间内不会切换api,直接使用ccswitch即可。

但是如果你有这种切换的需求,建议设置好。

大部分中转站都有直接导入到cc switch的快捷方式。

切换到api登录之后,我使用了cc switch单纯用于在多个不同的toml中切换,所以我建议的流程是。

手动配置好配置文件,准备换中转的时候再用ccswitch新建配置,然后同样的配置好,注意provider最好设置为相同的值。这样cc switch主要是作为一个切换工具而不是管理具体配置内容的工具。

第二节 切换api出现的问题

聊天记录消失

原因排查:cc switch历史对话是否可以看见

如果你的会话都在,但是codexapp不显示,那么恭喜你,在这里大概率可以解决。

Codex 不是单纯把会话文件按时间列出来,而是先按 model_provider 的值作为内部桶(bucket)来过滤。你在 config.toml 里把 model_provider 从openai改成 中转api再改成 其他的,相当于换了三个桶,旧桶里的历史在界面上自然就“消失”了——文件其实还在 ~/.codex/sessions 里,只是没被加载。

换言之,model_provider 不仅是配置块的名字,更是历史记录的分桶 key;name 只是显示名,换它不会影响历史归属。

临时解决方案:

codex cli的话直接执行cc switch给的这个命令就可以暂时先回到对应的对话中了。


codex配置出现沙盒无法设置问题

这是由于你配置文件内provider的设置有问题。

有两种可能:

1,你设置了provider,但是没有设置对应的配置块,或者像下面一样,配置错误,codex无法从下面找到codex,下面只有codex1.

model_provider = "codex" model = "deepseek/deepseek-v4-flash" model_reasoning_effort = "high" disable_response_storage = true #我建议设置为false [model_providers.codex1] name = "codex" base_url = "https://open.cherryin.ai/v1" wire_api = "responses" requires_openai_auth = true

2,你设置了不可覆写的provider,比如openai。这是openai的自留配置。

model_provider = "openai" model = "deepseek/deepseek-v4-flash" model_reasoning_effort = "high" disable_response_storage = true #我建议设置为false [model_providers.openai] name = "codex" base_url = "https://open.cherryin.ai/v1" wire_api = "responses" requires_openai_auth = true

修改方式很简单,第一个是设置正确的配置块,第二个是修改provider为其他字符串。

原理解释

Codex 对话记录的管理方式决定了什么是“丢历史”

Codex 把每场会话保存在 ~/.codex/sessions 和 ~/.codex/archived_sessions 下,同时维护一个 sqlite 状态库 (state_*.sqlite)。在展示历史列表时,它会先用 model_provider 的值作为筛选条件,只加载属于当前 provider 的对话。

也就是说,model_provider 在这里充当的是桶(bucket)的角色——你换一个 provider,就等于换了一个桶,之前桶里的对话文件虽然还在磁盘上,但界面上就看不见了。config.toml 里的 name 字段只是给你看的标签,并不参与历史记录的归属判断。

因此,只要保持 model_provider 不变,无论你怎么改 name、base_url、api_key,历史记录都不会丢失。如果你已经因为更换 provider 而“丢了”对话,可以用专门的迁移脚本把分散在不同桶里的记录统一到同一个 provider key 下,脚本会同步修正会话文件和数据库,重启 Codex 后它们就会重新出现。


解决脚本和示例配置

大佬的解决方案:寻求codex对话session记录不丢失方案,在官号和API key之间切换。 - 开发调优 - LINUX DO

我这里写了一个脚本更直接一点,脚本其实就是做了一件事,把历史记录的provider全部统一迁移到当前provider。不管历史记录是什么,全部都切换到当前的配置。

注意执行所有命令之前都建议备份你的.codex文件夹。

请查看:

https://blog.csdn.net/m0_54138660/article/details/160767760?fromshare=blogdetail&sharetype=blogdetail&sharerId=160767760&sharerefer=PC&sharesource=m0_54138660&sharefrom=from_link

http://www.jsqmd.com/news/754570/

相关文章:

  • 为什么 JWT 推荐使用 RS256 非对称加密而不是 HS256 对称加密?
  • AD9910 DDS模块扫频功能深度实战:在射频测试和滤波器特性分析中的应用
  • 基于RAG与向量数据库的AI代码助手:本地化部署与工程实践
  • 构建自动化数字媒体资产库:基于yt-dlp与FFmpeg的智能归档方案
  • 3个关键突破:将普通对讲机升级为专业通信工具
  • C语言中的指针声明
  • 从LINQ to Collections:C# 13集合表达式与System.Linq.Expressions深度融合的5种高级配置路径
  • Windows 11终极清理工具:3步让你的电脑重获新生
  • QMCDecode深度解析:解锁QQ音乐加密文件的全面指南
  • 基于SSH隧道实现Cursor远程开发:原理、配置与Python环境搭建
  • 紧急预警:C++27标准草案Final Draft前最后窗口期!掌握这6个constexpr约束放宽特性,避免代码在C++28中彻底失效
  • ai辅助开发:让快马平台智能生成hermes飞书复杂列表优化方案
  • QT多线程实战:用QThread封装USBCAN收发,告别界面卡顿
  • 从MobileNet到MobileViT:苹果这篇论文如何用‘卷积思维’重新设计Transformer?
  • 【微软内部性能白皮书级实践】:Span<T>与Memory<T>选型决策树,12种IO/计算场景精准匹配
  • 智能体记忆系统:动态管理与进化机制详解
  • 从一次线上告警复盘:我是如何用stress和dd命令,定位到那台‘假空闲’的Linux服务器的
  • 拆开这台AI盒子,用高通QCS6490开发板FV01跑通你的第一个视频分析Demo
  • 私有化Helm Chart仓库ChartMuseum:架构、部署与生产实践
  • Centmin Mod环境下OpenClaw日志分析工具集成部署与实战指南
  • 3步终极解决方案:PCL2启动器Java环境配置完整指南
  • RGMII接口时序调试详解:为什么你的千兆网口总丢包?从原理到实战调整TX/RX Delay
  • TAPFormer:多模态融合点跟踪框架的技术解析与应用
  • 深入x86硬件层:手把手教你通过端口I/O在UEFI Shell中读取CMOS实时时钟(RTC)
  • 量子开源社区的社会技术健康挑战与优化策略
  • 视觉语言模型自训练评估框架解析与应用
  • WorkBuddy 自带的 replace_in_file 工具能实现对 MD 文件的修改操作
  • npm install卡在code128?可能是你的Git配置在“打架”!一份排查清单请收好
  • YOLOv5模型优化实战:手把手教你集成CBAM注意力模块(附完整代码与配置文件)
  • LoRA与对比学习在视频检索中的高效训练方案