¿Qué hace Codex Multi-Profile (Windows)?
Asistente no oficial para Codex Desktop en Windows cuando necesitas más de un inicio de sesión de ChatGPT y aún así deseas un único espacio de trabajo compartido.
Predeterminado: ShareLive + AuthSwap
| Componente | Ubicación |
|---|---|
| Sesiones, habilidades, MCP, recuerdos, proyectos | Siempre %USERPROFILE%\.codex |
| Cuenta | profiles\<nombre>\auth.json, intercambiada con ~\.codex\auth.json al iniciar |
| Al cerrar | El vigilante guarda la autenticación secundaria y luego restaura el auth.json principal |
| Interfaz de Electron | --user-data-dir=profiles\<nombre> (raíz del perfil, no una carpeta anidada electron\) |
No abras el Codex principal de la Tienda y un perfil al mismo tiempo.
Por qué AuthSwap (no un segundo CODEX_HOME)
El servidor de la aplicación de escritorio a veces ignora CODEX_HOME y de todos modos lee ~\.codex\auth.json. Un segundo directorio de inicio muestra entonces la cuenta principal. AuthSwap coloca el token secundario en la ruta que la aplicación realmente lee.
Reglas de lanzamiento (verificadas)
- No ejecutar ejecutables desde
WindowsApps(Acceso Denegado). ClonarChatGPT.exeprimero. - El punto de entrada es
ChatGPT.exe.Codex.exesale con código 1. Get-AppxPackage.InstallLocationpuede estar vacío: prefiere un clon local existente.- Establecer ambas variables
CODEX_ELECTRON_USER_DATA_PATHy--user-data-diren la raíz del perfil. - No confiar en que
Start-Processherede$env:CODEX_HOME. Escribir un.cmdconsetystart. Set-Content -Encoding UTF8de PowerShell 5.1 escribe una Marca de Orden de Bytes (BOM). Esto puede invalidarconfig.toml. Usar[IO.File]::WriteAllText(..., UTF8Encoding $false).- Nunca establecer un
CODEX_HOMEpersistente a nivel de usuario. - No copiar
auth.jsonentre máquinas ni en git.
Rutas
| Elemento | Ruta |
|---|---|
| Raíz de instalación | %LOCALAPPDATA%\CodexParallelDesktop |
| Módulo compartido | CodexMultiProfile.psm1 |
| Lanzador de perfiles | Launch-CodexProfile.ps1 |
| Restaurar principal | Launch-CodexMain.ps1 |
| Administrador | CodexProfile.ps1 (new, list, stop, shortcut, launch) |
| Perfiles | ...\profiles\<nombre>\ |
| Clon | ...\versions\<ver>\app\ChatGPT.exe |
| Directorio compartido | %USERPROFILE%\.codex |
Comandos
$root = "$env:LOCALAPPDATA\CodexParallelDesktop"
# Lanzamiento recomendado (AuthSwap)
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\Launch-CodexProfile.ps1" -Name codex1
# Restaurar el Codex principal de la Tienda
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\Launch-CodexMain.ps1"
# Administrador
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action new -Name codex2
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action list
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action status
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action verify
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action stop -Name codex1
Flujo de trabajo del agente
- "Cambiar cuenta / mantener mis datos" → AuthSwap mediante
Launch-CodexProfile.ps1. - "Crear otro perfil" →
-Action new, luego iniciar conLaunch-CodexProfile.ps1. - Cuenta incorrecta en la interfaz → comparar correos electrónicos en los dos archivos
auth.json; corregir el lanzamiento (wrapper .cmd); no indicar al usuario que inicie sesión nuevamente si la autenticación del perfil sigue siendo válida. - Acceso Denegado / ruta vacía / código de salida 1 → clonar
ChatGPT.exe, nunca usarWindowsApps, nunca usarInstallLocationvacío. - Después de editar scripts, copiar
CodexMultiProfile.psm1y los lanzadores en%LOCALAPPDATA%\CodexParallelDesktopy enscripts\dentro de este skill. Los lanzadores importan el módulo desde$PSScriptRoot. - "¿Está instalado / qué cuenta está activa?" →
-Action status(los correos están enmascarados) luego-Action verify.
Autenticación de perfil envenenada
Si el usuario abre Codex Main mientras un perfil sigue ejecutándose, la restauración puede escribir el token principal en profiles\<nombre>\auth.json.
Protecciones ya incluidas en los scripts:
- El vigilante /
Launch-CodexMainsolo guarda la autenticación del perfil cuando el correo activo difiere deauth.json.__main__ - Conservar
auth.json.secondary.bak - Si la autenticación del perfil falta o es igual a la principal → inicio de sesión bootstrap (borrar autenticación activa, forzar inicio de sesión secundario)
No hacer
- Copiar ni enviar a git
auth.json - Abrir Main + perfil ShareLive juntos
- Iniciar
Codex.exeo una ruta deWindowsApps Start-Processsin un cmd explícito /CODEX_HOME- Escribir
config.tomlconSet-Content -Encoding UTF8en Windows PowerShell 5.1
Detalles: docs/architecture.md, docs/troubleshooting.md.