关注我 与AI共舞
用过 QQ 和微信桌面版的应该都知道,聊天窗口的背景图是可以自定义的,一张自己喜欢的图片,整个聊天界面就有了温度。
Codex 桌面端底层是 Electron(Chromium 内核),按理说也能做到。
OpenAI 并没有提供"换皮肤"的官方接口。于是社区有人做了一个开源项目 **codex-autoskin**,实现了这个功能。
这个项目刚发布到github上不久,我用了一下,发现还可以,啥时候想更换自己的聊天背景了,就找张图让codex更换一下,一句话就行。
今天我就把自己使用的过程做个记录,希望你也可以试试。
一、安装
安装方式有两种:
方式一:一句话安装(强烈推荐)
把下面这句话发给 Codex,它会自动帮你完成所有安装:
安装这个皮肤引擎:
https://github.com/Finderchangchang/codex-autoskin ,装好后用我附的这张图生成一个主题并立即应用。
全程不需要手动敲命令。
方式二:手动安装
也可以参照项目:
(https://github.com/Finderchangchang/codex-autoskin/blob/master/README.zh-CN.md) 中的步骤手动安装。
二、使用
安装完成后需要重启 Codex。重启后,Codex 的聊天页面背景就是你上传的图片了。
更换背景图也很简单——重新上传一张图片,告诉 Codex:"帮我更换一下背景图"
三、核心技术Chrome DevTools Protocol (CDP)
Codex 桌面端是 Electron 应用,底层就是 Chromium 浏览器渲染机制。
每个 Electron 窗口本质上就是一个 Chrome 渲染进程,自带了 Chrome DevTools。
Chrome DevTools 的远程调试协议(CDP)允许你在运行时连接到一个 Chrome 渲染进程,然后像在浏览器控制台里执行代码一样,操作页面中的任何 DOM 元素、修改任何样式。
具体来说,启动 Chromium 时加上 `--remote-debugging-port=9335` 参数,这个端口就会暴露一个 HTTP 端点。
通过这个端点,你可以拿到所有渲染进程的 WebSocket 地址,连接进去,然后就等于有了完整的 DevTools 控制权。
autoskin 的核心思路就是:不是给 Codex 装了一个皮肤插件,而是在 Codex 启动时通过 CDP 协议,像你在浏览器 F12 里敲 CSS 一样,把样式动态注入到渲染进程中。
整个过程不改 app.asar、不碰代码签名、不走任何 Electron 插件机制。
这也是为什么它能做到一键恢复——杀掉 injector 进程,所有样式自动消失,Codex 回到原生外观。
四、完整流程
安装和启动阶段上面已经说了,现在说一下第三个阶段:注入阶段。
injector 启动后的循环逻辑如下:
- 轮询 http://127.0.0.1:9335/json (CDP 端点)
- 找到 app://-/index.html(Codex 主窗口的渲染进程)
关键细节:注入是幂等的。每次切换主题时,injector 只是重新设置 CSS 变量值,不会重复插入 DOM。恢复原生外观时,清除这些 CSS 变量即可。
主题系统:
一个主题就是一个文件夹,结构如下:
themes/<主题名>/
├── theme.json 28 个 CSS 变量的值
├── art.jpg 壁纸图片
└── extra.css 可选的自定义样式
Watcher 守护:
Watcher 是一个独立的 shell 脚本进程,逻辑很简单:
每 2 秒轮询一次:
检查 port 9335 是否在监听
检查 injector 进程是否存活
如果一切正常 → 继续休眠
如果 CDP 端口可用但 injector 挂了 → 重启 injector
如果 Codex 在跑但 CDP 不通 → 重新启动 Codex(带上皮肤引擎)
限速保护:
一句话总结:
codex-autoskin 的本质是一个 CDP 注入器 + 主题数据系统的组合。
它不是给 Codex 装了个皮肤插件,实际上它什么都没有装进 Codex。它是在 Codex 启动时通过 Chrome 远程调试协议,像你在浏览器控制台里敲 `document.body.style.backgroundColor = 'red'` 一样,把样式动态注入到渲染进程的 DOM 中。
整个过程不改安装包、不碰代码签名、不走任何 Electron 插件机制,全部在运行时通过调试协议完成。这也是为什么它能做到一键恢复——只要杀掉 injector 进程,所有样式自动消失,Codex 回到原生外观。
如果您觉得有用的话,别忘了转发给身边的朋友,一起解锁AI生产力!
END
关注我 与AI共舞