codex app 开启 fast 模式 (使用中转站的方案)
- 内容介绍
- 文章标签
- 相关推荐
目前 codex app 是不会去读取 ~/.codex/config.toml 中的 service_tier 配置的。
同时 codex app 显示 fast 的行为取决于: 登录 openai + statsig_default_enable_features(AB Test 放量)
就目前而言,看起来 statsig_default_enable_features 的放量是 100%。
codex app 是不可能既登录又使用中转站的 api key 的,所以这就是为什么,很多人在使用 codex app 时,看不见 fast 的选项。
解决方案(仅介绍 macOS,Windows 同理):
# 进入 app 目录
cd /Applications/Codex.app/Contents/Resources
# 解压 app.asar
npx @electron/asar e ./app.asar app
# 重命名,以便让 electron 优先读取 app,而不是 app.asar
mv ./app.asar ./app.asar1
修改 webview/assets/general-settings-CyhRPSTM.js 文件,如果此文件没找到,请寻找其他以 general-settings 开头的 js 文件。
CleanShot 2026-03-19 at 14.16.262738×296 108 KB
然后修改 function Dt() 函数的返回值,将其改为 true 即可(图中的选择r 改为 true)。如下 diff
- function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(`statsig_default_enable_features`),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],r}
+ function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(`statsig_default_enable_features`),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],true}
修改完成后,再执行下面的命令,来关闭其所有的 electron fuses 的保护:
npx @electron/fuses write --app /Applications/Codex.app GrantFileProtocolExtraPrivileges=off
npx @electron/fuses write --app /Applications/Codex.app EnableCookieEncryption=off
npx @electron/fuses write --app /Applications/Codex.app OnlyLoadAppFromAsar=off
npx @electron/fuses write --app /Applications/Codex.app EnableEmbeddedAsarIntegrityValidation=off
最后进行强制签名,避免无法打开:
codesign --force --deep --sign - /Applications/Codex.app
重新打开后,就可以在 codex app 设置页面看到 fast 了,如:
CleanShot 2026-03-19 at 14.22.133422×1940 393 KB
网友解答:可以将本篇文章直接丢给 AI,让其进行操作
--【壹】--:
我解决了,方法在我的帖子里vscode里面codex插件开启fast最新方法
希望对后来看到的人有帮助
--【贰】--:
原来如此,试着给vscode插件改了一下。
%USERPROFILE%.vscode\extensions\openai.chatgpt-26.318.11754-win32-x64\webview\assets\general-settings-B6cN6-IR.js
找到statsig_default_enable_features所在的函数做对应修改,重启vscode,完美~
fast615×237 13.4 KB
--【叁】--:
感觉速度没有提升!我看了一下claude code hub!不知道是不是我个人的问题!
--【肆】--:
我没问题啊,但只有5.4fast。。。。
--【伍】--:
我是直接让codex自己去分析的。。可能不太稳定吧,搞不太懂
--【陆】--:
感谢大佬分享得方案,如果我想用到其它ai比如droid上,如何处理呀。请求头要设置啥嘛。
--【柒】--:
还能这样,有用的知识增加了,希望官方早点支持
--【捌】--:
额,玩坏了。。直接启动不了了,还是老老实实用普通模式吧
--【玖】--: 翼若垂云:
statsig_default_enable_features
佬友,我修改了,还是没有,对了,我openai.chatgpt-xxxxxxx-win32-x64这个类型的文件夹我有两个,一个文件夹里面有这个参数,另一个文件夹没有这个参数,我只把有这个参数的文件修改了,但是重启还是没有这个speed选项
--【拾】--: Kevin Cui:
# 进入 app 目录 cd /Applications/Codex.app/Contents/Resources # 解压 app.asar npx @electron/asar e ./app.asar app # 重命名,以便让 electron 优先读取 app,而不是 app.asar mv ./app.asar ./app.asar1
手动执行完这三步,然后把修改文件内容发给codex,一路yes,他自己就把自己改好了
image568×472 40.7 KB
image2518×1382 226 KB
看设置描述,其实只是提速1.5倍,并不是很快,但是消耗要用两倍的使用量
--【拾壹】--:
有用,厉害哦
--【拾贰】--:
问一下,只有5.4有fast是正常的吗。。
--【拾叁】--:
太强了,今天太晚了,明天高低要试一试!!
--【拾肆】--:
强啊佬,请问free号池按这个方法改完上了fast有用吗
--【拾伍】--:
哇是哈雷我们有救了!
--【拾陆】--:
当时我直接给他rebuild了
GitHub - Haleclipse/CodexDesktop-Rebuild: Codex Desktop App - Cross-platform Rebuild · GitHub
写个CI基本上能自动化更新 (懒) (摊)
已经实现 开始躺平
--【拾柒】--:
我用着感觉不出来啥区别,好像耗时都差不多
--【拾捌】--:
可以试一下下面的脚本
#!/bin/bash
set -euo pipefail
APP_PATH="${CODEX_APP_PATH:-/Applications/Codex.app}"
RESOURCES_DIR="$APP_PATH/Contents/Resources"
APP_ASAR="$RESOURCES_DIR/app.asar"
APP_ASAR_BACKUP="$RESOURCES_DIR/app.asar.fastmode.bak"
UNPACKED_DIR="$RESOURCES_DIR/app"
red() { printf '\033[31m%s\033[0m\n' "$*"; }
green() { printf '\033[32m%s\033[0m\n' "$*"; }
yellow() { printf '\033[33m%s\033[0m\n' "$*"; }
blue() { printf '\033[36m%s\033[0m\n' "$*"; }
require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
red "缺少依赖命令: $1"
exit 1
fi
}
confirm() {
local prompt="${1:-确认继续?}"
local answer
read -r -p "$prompt [y/N]: " answer
[[ "$answer" =~ ^([yY][eE][sS]|[yY])$ ]]
}
is_codex_running() {
pgrep -x "Codex" >/dev/null 2>&1
}
restart_app() {
require_cmd open
require_cmd pgrep
require_cmd sleep
if [[ ! -d "$APP_PATH" ]]; then
red "未找到 Codex.app,请通过环境变量 CODEX_APP_PATH 指定路径"
exit 1
fi
if is_codex_running; then
blue "正在关闭 Codex.app"
osascript -e 'tell application "Codex" to quit' >/dev/null 2>&1 || true
local waited=0
while is_codex_running && [[ "$waited" -lt 15 ]]; do
sleep 1
waited=$((waited + 1))
done
if is_codex_running; then
yellow "Codex.app 未在预期时间内退出,将继续尝试重新打开"
fi
fi
blue "正在启动 Codex.app"
open "$APP_PATH"
green "已触发 Codex.app 重启"
}
find_target_js() {
find "$UNPACKED_DIR/webview/assets" -type f -name 'general-settings*.js' 2>/dev/null | head -n 1
}
is_patched_file() {
local target_file="${1:-}"
[[ -n "$target_file" ]] || return 1
grep -Eq ',true\}|if\(!1\)return null;|if\(false\)return null;' "$target_file" 2>/dev/null
}
print_paths() {
blue "应用路径: $APP_PATH"
blue "资源目录: $RESOURCES_DIR"
blue "备份路径: $APP_ASAR_BACKUP"
}
status() {
print_paths
if [[ ! -d "$APP_PATH" ]]; then
red "未找到 Codex.app"
return 1
fi
if [[ -f "$APP_ASAR_BACKUP" ]]; then
green "已检测到原始 app.asar 备份"
else
yellow "未检测到原始 app.asar 备份"
fi
if [[ -d "$UNPACKED_DIR" ]]; then
green "已检测到解包目录: $UNPACKED_DIR"
else
yellow "未检测到解包目录"
fi
local target_js
target_js="$(find_target_js || true)"
if [[ -n "$target_js" ]]; then
blue "配置文件: $target_js"
if is_patched_file "$target_js"; then
green "fast 模式补丁: 已应用"
else
yellow "fast 模式补丁: 未应用"
fi
else
yellow "未找到 general-settings*.js,可能尚未解包或版本结构已变化"
fi
}
patch_js_file() {
local target_file="$1"
if is_patched_file "$target_file"; then
yellow "目标文件已处于补丁状态,跳过 JS 修改"
return 0
fi
# 兼容旧版帖子中的布尔判断写法。
perl -0pi -e 's/:r=e\[2\],r\}/:r=e[2],true\}/g' "$target_file"
if is_patched_file "$target_file"; then
green "已命中旧版 fast 模式补丁规则"
return 0
fi
# 兼容当前版本的功能门控写法:直接去掉 Speed 设置项的提前返回。
perl -0pi -e 's/if\(!n\)return null;/if(!1)return null;/g' "$target_file"
if is_patched_file "$target_file"; then
green "已命中当前版本的 fast 模式补丁规则"
return 0
fi
red "JS 补丁未生效,当前版本的代码结构可能已变化"
exit 1
}
write_fuses() {
require_cmd npx
local fuse
for fuse in \
GrantFileProtocolExtraPrivileges=off \
EnableCookieEncryption=off \
OnlyLoadAppFromAsar=off \
EnableEmbeddedAsarIntegrityValidation=off
do
blue "写入 fuse: $fuse"
npx @electron/fuses write --app "$APP_PATH" "$fuse"
done
}
resign_app() {
require_cmd codesign
blue "重新签名 Codex.app"
codesign --force --deep --sign - "$APP_PATH"
}
apply_patch_flow() {
print_paths
require_cmd find
require_cmd perl
require_cmd mv
require_cmd rm
if [[ ! -d "$APP_PATH" ]]; then
red "未找到 Codex.app,请通过环境变量 CODEX_APP_PATH 指定路径"
exit 1
fi
if [[ ! -d "$RESOURCES_DIR" ]]; then
red "未找到资源目录: $RESOURCES_DIR"
exit 1
fi
if [[ ! -d "$UNPACKED_DIR" ]]; then
if [[ ! -f "$APP_ASAR" ]]; then
red "未找到 app.asar,无法自动解包"
exit 1
fi
require_cmd npx
blue "开始解包 app.asar"
npx @electron/asar extract "$APP_ASAR" "$UNPACKED_DIR"
fi
if [[ -f "$APP_ASAR" && ! -f "$APP_ASAR_BACKUP" ]]; then
blue "创建原始包备份"
mv "$APP_ASAR" "$APP_ASAR_BACKUP"
fi
local target_js
target_js="$(find_target_js || true)"
if [[ -z "$target_js" ]]; then
red "未找到 general-settings*.js,当前版本可能不兼容"
exit 1
fi
blue "应用 JS 补丁: $target_js"
patch_js_file "$target_js"
write_fuses
resign_app
green "补丁已完成。重新启动 Codex.app 后,可在设置页检查是否出现 fast 选项。"
}
restore() {
print_paths
require_cmd rm
require_cmd mv
if [[ ! -f "$APP_ASAR_BACKUP" ]]; then
red "未找到备份文件,无法恢复"
exit 1
fi
if [[ -d "$UNPACKED_DIR" ]]; then
blue "删除解包目录"
rm -rf "$UNPACKED_DIR"
fi
if [[ -f "$APP_ASAR" ]]; then
blue "删除当前 app.asar"
rm -f "$APP_ASAR"
fi
blue "恢复原始 app.asar"
mv "$APP_ASAR_BACKUP" "$APP_ASAR"
resign_app
green "已恢复原始包。"
}
interactive_menu() {
print_paths
printf '\n'
echo "请选择操作:"
echo " 1) 查看状态"
echo " 2) 应用 fast 模式补丁"
echo " 3) 恢复原始文件"
echo " 4) 立即重启 Codex.app"
echo " 5) 退出"
printf '\n'
local choice
read -r -p "输入序号: " choice
case "$choice" in
1) status ;;
2)
confirm "即将修改 Codex.app,并重签名,是否继续?" || exit 0
apply_patch_flow
confirm "补丁完成,是否立即自动重启 Codex.app?" && restart_app
;;
3)
confirm "即将恢复原始 app.asar,是否继续?" || exit 0
restore
confirm "恢复完成,是否立即自动重启 Codex.app?" && restart_app
;;
4) restart_app ;;
5) exit 0 ;;
*) red "无效选项"; exit 1 ;;
esac
}
main() {
case "${1:-interactive}" in
status) status ;;
apply) apply_patch_flow ;;
restore) restore ;;
restart) restart_app ;;
interactive) interactive_menu ;;
*)
echo "用法:"
echo " $0 # 交互模式"
echo " $0 status # 查看状态"
echo " $0 apply # 应用补丁"
echo " $0 restore # 恢复原始包"
echo " $0 restart # 重启 Codex.app"
echo
echo "可选环境变量:"
echo " CODEX_APP_PATH=/Applications/Codex.app"
exit 1
;;
esac
}
main "$@"
--【拾玖】--:
现在已经找不到这块代码了 - function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(statsig_default_enable_features),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],r}
- function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(
statsig_default_enable_features),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],true}
目前 codex app 是不会去读取 ~/.codex/config.toml 中的 service_tier 配置的。
同时 codex app 显示 fast 的行为取决于: 登录 openai + statsig_default_enable_features(AB Test 放量)
就目前而言,看起来 statsig_default_enable_features 的放量是 100%。
codex app 是不可能既登录又使用中转站的 api key 的,所以这就是为什么,很多人在使用 codex app 时,看不见 fast 的选项。
解决方案(仅介绍 macOS,Windows 同理):
# 进入 app 目录
cd /Applications/Codex.app/Contents/Resources
# 解压 app.asar
npx @electron/asar e ./app.asar app
# 重命名,以便让 electron 优先读取 app,而不是 app.asar
mv ./app.asar ./app.asar1
修改 webview/assets/general-settings-CyhRPSTM.js 文件,如果此文件没找到,请寻找其他以 general-settings 开头的 js 文件。
CleanShot 2026-03-19 at 14.16.262738×296 108 KB
然后修改 function Dt() 函数的返回值,将其改为 true 即可(图中的选择r 改为 true)。如下 diff
- function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(`statsig_default_enable_features`),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],r}
+ function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(`statsig_default_enable_features`),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],true}
修改完成后,再执行下面的命令,来关闭其所有的 electron fuses 的保护:
npx @electron/fuses write --app /Applications/Codex.app GrantFileProtocolExtraPrivileges=off
npx @electron/fuses write --app /Applications/Codex.app EnableCookieEncryption=off
npx @electron/fuses write --app /Applications/Codex.app OnlyLoadAppFromAsar=off
npx @electron/fuses write --app /Applications/Codex.app EnableEmbeddedAsarIntegrityValidation=off
最后进行强制签名,避免无法打开:
codesign --force --deep --sign - /Applications/Codex.app
重新打开后,就可以在 codex app 设置页面看到 fast 了,如:
CleanShot 2026-03-19 at 14.22.133422×1940 393 KB
网友解答:可以将本篇文章直接丢给 AI,让其进行操作
--【壹】--:
我解决了,方法在我的帖子里vscode里面codex插件开启fast最新方法
希望对后来看到的人有帮助
--【贰】--:
原来如此,试着给vscode插件改了一下。
%USERPROFILE%.vscode\extensions\openai.chatgpt-26.318.11754-win32-x64\webview\assets\general-settings-B6cN6-IR.js
找到statsig_default_enable_features所在的函数做对应修改,重启vscode,完美~
fast615×237 13.4 KB
--【叁】--:
感觉速度没有提升!我看了一下claude code hub!不知道是不是我个人的问题!
--【肆】--:
我没问题啊,但只有5.4fast。。。。
--【伍】--:
我是直接让codex自己去分析的。。可能不太稳定吧,搞不太懂
--【陆】--:
感谢大佬分享得方案,如果我想用到其它ai比如droid上,如何处理呀。请求头要设置啥嘛。
--【柒】--:
还能这样,有用的知识增加了,希望官方早点支持
--【捌】--:
额,玩坏了。。直接启动不了了,还是老老实实用普通模式吧
--【玖】--: 翼若垂云:
statsig_default_enable_features
佬友,我修改了,还是没有,对了,我openai.chatgpt-xxxxxxx-win32-x64这个类型的文件夹我有两个,一个文件夹里面有这个参数,另一个文件夹没有这个参数,我只把有这个参数的文件修改了,但是重启还是没有这个speed选项
--【拾】--: Kevin Cui:
# 进入 app 目录 cd /Applications/Codex.app/Contents/Resources # 解压 app.asar npx @electron/asar e ./app.asar app # 重命名,以便让 electron 优先读取 app,而不是 app.asar mv ./app.asar ./app.asar1
手动执行完这三步,然后把修改文件内容发给codex,一路yes,他自己就把自己改好了
image568×472 40.7 KB
image2518×1382 226 KB
看设置描述,其实只是提速1.5倍,并不是很快,但是消耗要用两倍的使用量
--【拾壹】--:
有用,厉害哦
--【拾贰】--:
问一下,只有5.4有fast是正常的吗。。
--【拾叁】--:
太强了,今天太晚了,明天高低要试一试!!
--【拾肆】--:
强啊佬,请问free号池按这个方法改完上了fast有用吗
--【拾伍】--:
哇是哈雷我们有救了!
--【拾陆】--:
当时我直接给他rebuild了
GitHub - Haleclipse/CodexDesktop-Rebuild: Codex Desktop App - Cross-platform Rebuild · GitHub
写个CI基本上能自动化更新 (懒) (摊)
已经实现 开始躺平
--【拾柒】--:
我用着感觉不出来啥区别,好像耗时都差不多
--【拾捌】--:
可以试一下下面的脚本
#!/bin/bash
set -euo pipefail
APP_PATH="${CODEX_APP_PATH:-/Applications/Codex.app}"
RESOURCES_DIR="$APP_PATH/Contents/Resources"
APP_ASAR="$RESOURCES_DIR/app.asar"
APP_ASAR_BACKUP="$RESOURCES_DIR/app.asar.fastmode.bak"
UNPACKED_DIR="$RESOURCES_DIR/app"
red() { printf '\033[31m%s\033[0m\n' "$*"; }
green() { printf '\033[32m%s\033[0m\n' "$*"; }
yellow() { printf '\033[33m%s\033[0m\n' "$*"; }
blue() { printf '\033[36m%s\033[0m\n' "$*"; }
require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
red "缺少依赖命令: $1"
exit 1
fi
}
confirm() {
local prompt="${1:-确认继续?}"
local answer
read -r -p "$prompt [y/N]: " answer
[[ "$answer" =~ ^([yY][eE][sS]|[yY])$ ]]
}
is_codex_running() {
pgrep -x "Codex" >/dev/null 2>&1
}
restart_app() {
require_cmd open
require_cmd pgrep
require_cmd sleep
if [[ ! -d "$APP_PATH" ]]; then
red "未找到 Codex.app,请通过环境变量 CODEX_APP_PATH 指定路径"
exit 1
fi
if is_codex_running; then
blue "正在关闭 Codex.app"
osascript -e 'tell application "Codex" to quit' >/dev/null 2>&1 || true
local waited=0
while is_codex_running && [[ "$waited" -lt 15 ]]; do
sleep 1
waited=$((waited + 1))
done
if is_codex_running; then
yellow "Codex.app 未在预期时间内退出,将继续尝试重新打开"
fi
fi
blue "正在启动 Codex.app"
open "$APP_PATH"
green "已触发 Codex.app 重启"
}
find_target_js() {
find "$UNPACKED_DIR/webview/assets" -type f -name 'general-settings*.js' 2>/dev/null | head -n 1
}
is_patched_file() {
local target_file="${1:-}"
[[ -n "$target_file" ]] || return 1
grep -Eq ',true\}|if\(!1\)return null;|if\(false\)return null;' "$target_file" 2>/dev/null
}
print_paths() {
blue "应用路径: $APP_PATH"
blue "资源目录: $RESOURCES_DIR"
blue "备份路径: $APP_ASAR_BACKUP"
}
status() {
print_paths
if [[ ! -d "$APP_PATH" ]]; then
red "未找到 Codex.app"
return 1
fi
if [[ -f "$APP_ASAR_BACKUP" ]]; then
green "已检测到原始 app.asar 备份"
else
yellow "未检测到原始 app.asar 备份"
fi
if [[ -d "$UNPACKED_DIR" ]]; then
green "已检测到解包目录: $UNPACKED_DIR"
else
yellow "未检测到解包目录"
fi
local target_js
target_js="$(find_target_js || true)"
if [[ -n "$target_js" ]]; then
blue "配置文件: $target_js"
if is_patched_file "$target_js"; then
green "fast 模式补丁: 已应用"
else
yellow "fast 模式补丁: 未应用"
fi
else
yellow "未找到 general-settings*.js,可能尚未解包或版本结构已变化"
fi
}
patch_js_file() {
local target_file="$1"
if is_patched_file "$target_file"; then
yellow "目标文件已处于补丁状态,跳过 JS 修改"
return 0
fi
# 兼容旧版帖子中的布尔判断写法。
perl -0pi -e 's/:r=e\[2\],r\}/:r=e[2],true\}/g' "$target_file"
if is_patched_file "$target_file"; then
green "已命中旧版 fast 模式补丁规则"
return 0
fi
# 兼容当前版本的功能门控写法:直接去掉 Speed 设置项的提前返回。
perl -0pi -e 's/if\(!n\)return null;/if(!1)return null;/g' "$target_file"
if is_patched_file "$target_file"; then
green "已命中当前版本的 fast 模式补丁规则"
return 0
fi
red "JS 补丁未生效,当前版本的代码结构可能已变化"
exit 1
}
write_fuses() {
require_cmd npx
local fuse
for fuse in \
GrantFileProtocolExtraPrivileges=off \
EnableCookieEncryption=off \
OnlyLoadAppFromAsar=off \
EnableEmbeddedAsarIntegrityValidation=off
do
blue "写入 fuse: $fuse"
npx @electron/fuses write --app "$APP_PATH" "$fuse"
done
}
resign_app() {
require_cmd codesign
blue "重新签名 Codex.app"
codesign --force --deep --sign - "$APP_PATH"
}
apply_patch_flow() {
print_paths
require_cmd find
require_cmd perl
require_cmd mv
require_cmd rm
if [[ ! -d "$APP_PATH" ]]; then
red "未找到 Codex.app,请通过环境变量 CODEX_APP_PATH 指定路径"
exit 1
fi
if [[ ! -d "$RESOURCES_DIR" ]]; then
red "未找到资源目录: $RESOURCES_DIR"
exit 1
fi
if [[ ! -d "$UNPACKED_DIR" ]]; then
if [[ ! -f "$APP_ASAR" ]]; then
red "未找到 app.asar,无法自动解包"
exit 1
fi
require_cmd npx
blue "开始解包 app.asar"
npx @electron/asar extract "$APP_ASAR" "$UNPACKED_DIR"
fi
if [[ -f "$APP_ASAR" && ! -f "$APP_ASAR_BACKUP" ]]; then
blue "创建原始包备份"
mv "$APP_ASAR" "$APP_ASAR_BACKUP"
fi
local target_js
target_js="$(find_target_js || true)"
if [[ -z "$target_js" ]]; then
red "未找到 general-settings*.js,当前版本可能不兼容"
exit 1
fi
blue "应用 JS 补丁: $target_js"
patch_js_file "$target_js"
write_fuses
resign_app
green "补丁已完成。重新启动 Codex.app 后,可在设置页检查是否出现 fast 选项。"
}
restore() {
print_paths
require_cmd rm
require_cmd mv
if [[ ! -f "$APP_ASAR_BACKUP" ]]; then
red "未找到备份文件,无法恢复"
exit 1
fi
if [[ -d "$UNPACKED_DIR" ]]; then
blue "删除解包目录"
rm -rf "$UNPACKED_DIR"
fi
if [[ -f "$APP_ASAR" ]]; then
blue "删除当前 app.asar"
rm -f "$APP_ASAR"
fi
blue "恢复原始 app.asar"
mv "$APP_ASAR_BACKUP" "$APP_ASAR"
resign_app
green "已恢复原始包。"
}
interactive_menu() {
print_paths
printf '\n'
echo "请选择操作:"
echo " 1) 查看状态"
echo " 2) 应用 fast 模式补丁"
echo " 3) 恢复原始文件"
echo " 4) 立即重启 Codex.app"
echo " 5) 退出"
printf '\n'
local choice
read -r -p "输入序号: " choice
case "$choice" in
1) status ;;
2)
confirm "即将修改 Codex.app,并重签名,是否继续?" || exit 0
apply_patch_flow
confirm "补丁完成,是否立即自动重启 Codex.app?" && restart_app
;;
3)
confirm "即将恢复原始 app.asar,是否继续?" || exit 0
restore
confirm "恢复完成,是否立即自动重启 Codex.app?" && restart_app
;;
4) restart_app ;;
5) exit 0 ;;
*) red "无效选项"; exit 1 ;;
esac
}
main() {
case "${1:-interactive}" in
status) status ;;
apply) apply_patch_flow ;;
restore) restore ;;
restart) restart_app ;;
interactive) interactive_menu ;;
*)
echo "用法:"
echo " $0 # 交互模式"
echo " $0 status # 查看状态"
echo " $0 apply # 应用补丁"
echo " $0 restore # 恢复原始包"
echo " $0 restart # 重启 Codex.app"
echo
echo "可选环境变量:"
echo " CODEX_APP_PATH=/Applications/Codex.app"
exit 1
;;
esac
}
main "$@"
--【拾玖】--:
现在已经找不到这块代码了 - function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(statsig_default_enable_features),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],r}
- function Dt(){let e=(0,J.c)(3),{authMethod:t}=R(),[n]=b(
statsig_default_enable_features),r;return e[0]!==t||e[1]!==n?.fast_mode?(r=n?.fast_mode===!0&&Ot(t),e[0]=t,e[1]=n?.fast_mode,e[2]=r):r=e[2],true}

