(已解决)codex桌面版被我搞坏了好像.......

fengy 2026-04-17 14:39 1

各位佬好,


故事是这样的,我使用的codex的windows桌面版,现在每次切换官方会员和api key时,左侧的对话框历史都是各自独立的,官方会员和api key都有各自的历史.一直觉得很不方便,对话沟通容易断档.


今天心血来潮就让codex自己优化自己,想着把他们的历史记录合并,无论我切换到哪个方式对话历史都能够共用.然后它今天也很爽快,很自信的就就给我创建了一个bat一键脚本,我也很爽快地点击后,就切换到官方会员点击"使用GPT登录",结果就弹窗显示:登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013)



看到这一幕整个人都傻了呀,然后我就尝试了:


1)将C:\Users\admin.codex中所有内容替换成之前备份的老版本,没效果


2)卸载掉codex桌面版重新安装并启动,也还是报错


现在整个人都蒙了,人生的意义到底是什么,我为什么要这么纠结对话框历史记录的事情…


有没有佬知道这种情况如何处理,小弟不胜感激! 如果非常复杂的话我愿意付费解决!感谢了各位佬!


PS:最终在大家的建议下,我深度和AI做了一个沟通,发现确实不是本身脚本的问题,而是中午左右开过一次 TUN ,Windows 虚拟网络状态被改了,导致本地端口异常。


那么解决办法我也分享给大家:如果刚开过 TUN,之后会员登录按钮突然报 10013,优先做这套动作:

1.完全退出 Codex

2.打开powershell(管理员)然后执行以下命令(4个独立的命令,在打开的powershell中按照顺序执行一次):

wsl --shutdown

Stop-Service WinNAT -Force

Stop-Service hns -Force

Stop-Service vmcompute -Force


然后再去测试就能完整打开了,这个帖子我会持续保留,给以后需要的佬友做参考,也希望大家工作愉快顺利!

最新回复 (15)
  • 小诚 04-17 14:41
    1

    直接把.codex文件删了,再重新进app

  • fengy 楼主 04-17 14:42
    2

    删了佬,然后我启动app重新进去后还是这样…

  • PantaT 04-17 14:44
    3

    是不是没有完全卸载干净呀?你看下他写的脚本干了啥,再反向恢复回去呢?

  • BanPai 04-17 14:45
    4

    其实可以尝试用CLI的codex去修复一下 让他自己修复自己

  • fengy 楼主 04-17 14:56
    5

    当时让它建立的恢复的脚本,我点击恢复后还是不行…下面是这个脚本改的内容:


    $ErrorActionPreference = “Stop”


    $liveRoot = “C:\Users\admin.codex”

    $configPath = Join-Path $liveRoot “config.toml”

    $dbPath = Join-Path $liveRoot “state_5.sqlite”

    $sqlite = “D:\Miniconda3\Library\bin\sqlite3.exe”

    $backupRoot = Join-Path $PSScriptRoot “thread_namespace_sync_history”


    if (-not (Test-Path -LiteralPath $configPath)) {

    throw “Missing config.toml: $configPath”

    }

    if (-not (Test-Path -LiteralPath $dbPath)) {

    throw “Missing state_5.sqlite: $dbPath”

    }

    if (-not (Test-Path -LiteralPath $sqlite)) {

    throw “sqlite3.exe not found: $sqlite”

    }


    running = Get-Process | Where-Object { .ProcessName -like "codex" -or $.ProcessName -like “OpenAI.Codex” }

    if ($running) {

    throw “Codex Desktop is still running. Fully close Codex before syncing the left sidebar thread namespace.”

    }


    $configText = Get-Content -LiteralPath $configPath -Raw

    $providerMatch = [regex]::Match($configText, ‘(?m)^model_provider\s*=\s*“([^”]+)"’)

    $targetProvider = if ($providerMatch.Success) { $providerMatch.Groups[1].Value.Trim() } else { “openai” }


    $sharedProviders = @(“sub2”, “openai”, “OpenAI”)

    if ($sharedProviders -notcontains $targetProvider) {

    $sharedProviders += $targetProvider

    }


    New-Item -ItemType Directory -Path $backupRoot -Force | Out-Null

    $ts = Get-Date -Format “yyyyMMdd-HHmmss”

    $runRoot = Join-Path $backupRoot (“sync-” + $ts)

    New-Item -ItemType Directory -Path $runRoot -Force | Out-Null


    foreach ($name in @(“config.toml”, “state_5.sqlite”, “state_5.sqlite-shm”, “state_5.sqlite-wal”)) {

    $src = Join-Path $liveRoot $name

    if (Test-Path -LiteralPath $src) {

    Copy-Item -LiteralPath $src -Destination (Join-Path $runRoot $name) -Force

    }

    }


    $providersSql = (sharedProviders | ForEach-Object { "'" + _.Replace(“'”, “‘’”) + “'” }) -join “, "

    $escapedTargetProvider = $targetProvider.Replace(”‘", "’'“)

    $updateSql = @”

    BEGIN IMMEDIATE;

    UPDATE threads

    SET model_provider = ‘$escapedTargetProvider’

    WHERE model_provider IN ($providersSql);

    COMMIT;

    "@


    & $sqlite $dbPath $updateSql | Out-Null


    $counts = & $sqlite -header -column $dbPath “select model_provider, count(*) cnt from threads group by model_provider order by cnt desc;”


    Set-Content -LiteralPath (Join-Path $runRoot “sync.meta.txt”) -Value @(

    “timestamp=$ts”,

    “target_provider=$targetProvider”,

    “shared_providers=$($sharedProviders -join ‘,’)”

    ) -Encoding Ascii


    Write-Host “Left sidebar thread namespace sync completed.”

    Write-Host “Target provider:” $targetProvider

    Write-Host “Backup folder:” $runRoot

    Write-Host “”

    Write-Host $counts

  • hai wen 04-17 15:03
    6

    你是不是旧的 codex 进程没关掉啊,好像是端口被占用了

  • Rvioleck 04-17 15:05
    7

    重启解决90%,重装解决99%,重买电脑立即解决 ^-^(开个玩笑,我也不知道咋解决)

  • fengy 楼主 04-17 15:15
    8

    佬任务管理器关闭进程了 ,然后也重启了,打开还是这样

  • fengy 楼主 04-17 15:16
    9

    重启了的佬,我还让gemini根据这个修改脚本帮我做了一个恢复脚本也不行…

  • PantaT 04-17 15:18
    10

    看起来是更新了一下.codex 目录下的 state_5.sqlite 文件,你都删掉整个目录重装了,应该也不会有什么问题了。不行参考一下下面佬友的,重启一下电脑试试吧 ^-^

  • PantaT 04-17 15:22
    11



    这是codex的解决方案,你参考一下吧,我也不会了 ^-^

  • fengy 楼主 04-17 15:26
    12

    好的谢谢佬,我这就去一步一步试下,非常感谢

  • 变异僵尸 06-01 00:38
    13

    net stop winnat

    net start winnat

    亲测有效

  • 万象心生 07-24 13:13
    14

    1.完全退出 Codex

    2.打开powershell(管理员)然后执行以下命令(4个独立的命令,在打开的powershell中按照顺序执行一次):

    wsl --shutdown

    Stop-Service WinNAT -Force

    Stop-Service hns -Force

    Stop-Service vmcompute -Force



    感谢佬, 有效! 我也是提示 以一种访问权限不允许的方式做了一个访问套接字的尝试 然后尝试过其他方式不行,用你这个就可以正常登录了。

  • 朱高祖 08-02 02:41
    15

    Stop-Service WinNAT -Force

    Stop-Service hns -Force

    Stop-Service vmcompute -Force



    太神奇了,还真的是可以。差点卖电脑了

* 帖子来源Linux.do
返回