会话管理

把「打开报错」的历史会话一键适配回来,或转交归还给原生打开。

1. 什么时候用这一页

ChatGPT.app 的会话在建立时会把 provider 写进内核 DB。如果这个 provider 后来被删掉或改名 (换网关、清理旧供应商、从 CLI 录过又删掉的临时条目……),这些历史会话再打开就会打开即报错: 会话本身还在,但它指向的 provider 已经不可解析。

Coskey 的「会话」页把这件事显性化,并给两条出路:

出路 做什么 适用
适配(接管) 把该会话的 provider 改成 Coskey 本地中转:之后照常打开,会话内还能自由切模型 provider 不可解析的会话;或未受管但想交给 Coskey 管的会话
转交(归还) 把持久化 provider 改回一个原生可解析的值(如 openai):交还 ChatGPT.app / codex 原生打开 想彻底退出 Coskey 管理,或本来就该用官方模型的会话

2. 会话页怎么看

会话页总览

  • 顶层「适配状态」:全部 / 已适配 / 未适配 / 打开报错,括号里是数量;
  • 细化过滤 + 搜索:会话名 / threadId / 目录都能搜;
  • 按项目分组:与 ChatGPT.app 左侧的项目一致,无归属的进「其它」;
  • 每行:threadId、状态徽标、持久化 provider、持久化模型、钉住模型、最近下发,右侧是单条 「适配」「转交」按钮;
  • 状态徽标provider 不可解析(可救)、会话文件缺失(rollout 已丢,接管/转交都救不回来)、 已归档使用中残留窗口待生效

3. 一键适配:解决「打开历史会话报错」

点「打开报错(N)」,列表只剩有问题的会话:

过滤打开报错的历史会话

  • 两行 provider 不可解析(provider = legacy,早已不在配置里)——这是可以救的;
  • 一行 会话文件缺失——rollout 文件已丢,任何 provider 改写都救不回来,只能在 ChatGPT.app 里处理(或删除);
  • 所以上面的按钮只统计能处理的部分:「适配全部报错风险(2)」「转交全部报错会话(2)」, 缺失文件那条不在其中。

点「适配全部报错风险(2)」,确认弹窗会列出这次要改写的会话:

适配确认

确认后:provider 换成 coskey,顶部提示「适配 2,跳过官方 0,跳过归档 0,残留 0」, 报错列表只剩救不了的那一条:

适配完成

切到「已适配(3)」可以核对结果:provider 变成 coskey,最近下发是当前默认模型:

已适配列表

之后再在 ChatGPT.app 里打开这些会话就不会报错了;会话内容不变,会话里还能自由切换其它 供应商的模型。适配只改写 provider 归属,并记下接管前的值——卸载 Coskey 时可选「恢复接管前 provider」改回去。

4. 单条操作与其它过滤

  • 每行右侧的「适配」「转交」只处理这一条,适合精确救某一个会话;
  • 「转交」要选一个原生可解析的目标 provider(openai、或 ~/.codex/config.toml 里定义过的 名字);转交后会话由 ChatGPT.app / codex 原生打开,暂不经 Coskey,随时可以再适配回来;
  • 「未适配·可打开」列出 provider 仍可解析、只是没交给 Coskey 的会话——想统一管理就批量适配, 不想动就放着;
  • 「可释放」列出接管时可以归还的会话,批量「转交全部可释放」= 一次性归还;
  • 「显示归档」默认关闭,归档会话既不计入计数也不进列表(Coskey 不修改归档状态)。

5. 与 CLI 的对应关系

GUI 操作 CLI 等价
单条 / 批量适配 coskey take-over <threadId>... [--all] [--pin <模型>]
单条 / 批量转交 coskey hand-over <threadId>... [--all] [--to <provider>] [--dry-run]
解除钉住 coskey unpin <threadId>
查看列表 coskey threads [--group] [--adapted yes|no|broken]

6. 常见问题

现象 原因 / 处理
打开某个历史会话就报错 该会话持久化 provider 已不可解析:在「打开报错(N)」里一键适配
适配之后还是打不开,列表写着「会话文件缺失」 rollout 文件已丢(内核 DB 里指向的会话文件不存在),Coskey 无法修复;回 ChatGPT.app 处理该会话
适配会改我的会话内容吗 不会:只把内核 DB 里的 provider 字段改写成本地中转,并在 Coskey 侧记下接管前的值
不想再让 Coskey 管这个会话 用「转交」把它归还给原生可解析的 provider(写入前自动备份内核 DB)
数字对不上 顶部「显示归档」默认关闭,归档会话不计入计数;子代理会话跟随父会话展开

下一步:状态与设置