windows下Codex Desktop的git ui的奇妙问题

如题 今天下午蹬codex的时候发现codex有个更新,顺手就更了 更完后发现,只要让他去git提交代码,在提交完的对话的最后一个字吐出来的瞬间会话会崩,并且再也进不去。 症状如图 但是我和gpt的甜蜜往事可不能丢啊!(丢了我会忘记以前做过什么的 ) 于是找到了解决办法 一句话总结 去 C:\Use...
windows下Codex Desktop的git ui的奇妙问题
windows下Codex Desktop的git ui的奇妙问题

如题
今天下午蹬codex的时候发现codex有个更新,顺手就更了
更完后发现,只要让他去git提交代码,在提交完的对话的最后一个字吐出来的瞬间会话会崩,并且再也进不去。
症状如图

屏幕截图 2026-05-16 201229
但是我和gpt的甜蜜往事可不能丢啊!(丢了我会忘记以前做过什么的 :zany_face:

于是找到了解决办法

一句话总结

C:\Users\用户名\.codex\sessions\YYYY\MM\DD目录找到你的会话对应的jsonl文件(YMD分别是会话创建的年月日),在里面找到最后一次对话的有"phase":"final_answer"字段的第一项(实际会有三个带final anwser的但是经过测试只有第一行会引起崩溃),把里面的::git-stage{cwd=\"D:/abc\"}\n::git-commit{cwd=\"D:\\abc\"}里的cwd字段的\\替换掉,可以换成/但是实际上怎么换都无所谓因为这个字段貌似只有让你崩溃的作用 :distorted_face:

分析

首先要先搞清楚引起崩溃的字段到底是什么
::git-stage{cwd=\"D:/abc\"}\n::git-commit{cwd=\"D:\\abc\"}
问gpt得知这是一个codex ui指令,含义是让codex的ui知道commit已经完成,就是用来更新右边git栏的。
联想到之前那个git栏就经常奇奇怪怪的,经常冒出来奇形怪状的+ -n行但是实际根本没有未提交改动,大概率就是codex这次更新本意修bug结果引入了更恶性的bug。

那我们看看以前的codex为什么不会有这种问题呢。
翻到以前的对话可以看见同样的字段内容是::git-commit{cwd=\"/absolute/path\"}很明显这就是个占位符,所以背后的逻辑理所应当的是占位逻辑,实际没有用。

我的猜测

问题解决了我也没有精力进一步分析了,留一个我的猜测
也许是\\abc中的\a被解析了

新解决办法

在codex的issues/23013下有一个回复,解决办法和上面提到的一样但是能一键

taskkill /F /IM Codex.exe 2>$null; $ts=Get-Date -Format 'yyyyMMdd-HHmmss'; $roots=@("$env:USERPROFILE\.codex\sessions","$env:USERPROFILE\.codex\archived_sessions")|?{Test-Path $_}; $rx='(?<a>\b(?:cwd|cwds|file)=\\?"?)(?<v>(?:[A-Za-z]:|\\\\)[^"\\]*(?:\\+[^"\\]*)*)(?<q>\\?")'; Get-ChildItem $roots -Recurse -File -Filter '*.jsonl' -ErrorAction SilentlyContinue | % {$p=$_.FullName; $s=[IO.File]::ReadAllText($p); $n=([regex]::Matches($s,$rx)).Count; if($n -gt 0){Copy-Item $p "$p.bak-pathfix-$ts"; $s=[regex]::Replace($s,$rx,{param($m) $m.Groups['a'].Value + ($m.Groups['v'].Value -replace '\\+','/') + $m.Groups['q'].Value}); [IO.File]::WriteAllText($p,$s,[Text.UTF8Encoding]::new($false)); "fixed=$n file=$p"}}

3 个帖子 - 2 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文