Panel de Modelo y Esfuerzo
Model & Effort Panel Panel de Modelo y Esfuerzo
StickShift es un panel de barra de menú en macOS con un patrón H de cambios real: mueve la palanca para cambiar el modelo de Claude Code o Codex en el panel de terminal que estás viendo, arrastra el acelerador para cambiar el nivel de esfuerzo. Todo se comprueba antes de actuar — o se niega con un motivo; nunca escribe a ciegas.

Nada de editar la configuración a mano ni memorizar comandos: StickShift lee el panel mediante la Accessibility API de
macOS, comprueba que sea un agente local inactivo y escribe exactamente lo que tú escribirías — /model,
/effort, o las teclas del selector de Codex.
Nunca edita archivos de configuración, nunca llama a la API de un proveedor ni usa automatización de terminal. Solo escribe después de comprobar que el panel está inactivo, que el proceso local es el correcto y que el binario está firmado y calificado — cualquier comprobación que falle se convierte en una negativa con un código de motivo.
Cara de Claude (throttle hasta ULTRACODE) y cara de Codex (throttle hasta ULTRA), con las etiquetas exactas de cada proveedor y atajos globales (Cmd+Shift+1..5, Cmd+Shift+R) que cambian la marcha sin siquiera abrir el panel.
bin/shift hace una simulación por defecto (no escribe nada);
--commit se ejecuta de verdad. shift doctor diagnostica permisos, configuración y asignación
del panel enfocado con un solo comando.
Entre cambiar la marcha y el toast CHANGED, el motor pasa por una cadena de comprobaciones — cualquier eslabón que falle interrumpe el cambio y devuelve un código de motivo en vez de una pulsación de tecla.
El panel enfocado se lee mediante Accessibility API; un clasificador puro extrae el agente, el modelo, el effort, el cwd y si está inactivo/ocupado/con un diálogo abierto, con el composer comprobablemente vacío.
El panel se vincula a un proceso local (tty → grupo en primer plano → cwd), y se comprueban la firma, el team y la versión del binario atribuido frente al manifiesto.
Escribe con keycodes resueltos según la distribución actual del teclado y comprueba la entrega mediante el delta de ocurrencias antes de cualquier Enter. Solo informa que tuvo éxito con un veredicto confirmado al final del panel.
La ruta automática (setup.sh) cubre casi todo; esto es lo que debe existir
antes en la máquina.
Necesita clang para compilar.
# instala las command line tools si faltan
xcode-select --installWarp es el predeterminado verificado de punta a punta. Terminal.app ya pasó las dos pruebas más difíciles; otros terminales califican en 4 pasos.
# califica una terminal nueva
./scripts/qualify-terminal.sh "iTerm"StickShift solicita el permiso por sí solo en el primer lanzamiento; solo tienes que concederlo en System Settings cuando aparezca el diálogo.
# confirma lo que está concedido
./bin/shift doctorEl script es idempotente: puedes volver a ejecutarlo sin miedo si algo falla a mitad del proceso.
Verifica los requisitos previos, crea una identidad de firma estable, compila, ejecuta toda la suite de pruebas,
instala en ~/Applications/StickShift.app y ya abre la app.
git clone https://github.com/inematds/stickshift && cd stickshift # descarga el repo ./scripts/setup.sh # idempotente, instala todo
Activa StickShift en System Settings → Privacy & Security → Accessibility. Después sal y vuelve a abrir la app (clic derecho en el gear del menú → Quit → vuelve a abrir) — el permiso solo se aplica al proceso después de reiniciarlo; este es el problema de soporte nº 1.
Haz clic en el panel de la terminal donde se está ejecutando el agente y arrastra la palanca hasta una marcha (o actívala desde la CLI a partir de
otro panel — la CLI rechaza el propio panel como SELF_TARGET).
./bin/shift 4 # simulación: muestra el plan, no escribe nada ./bin/shift 4 --commit # ejecuta de verdad
CHANGED significa que funcionó; cualquier otro código es un rechazo explicado — cada
intento queda registrado con el motivo, nunca con el contenido del panel.
tail -5 ~/.stickshift/log
Indícale a Claude Code, Codex o cualquier agente de código que use este repo y dile
"configurar StickShift en esta Mac". O AGENTS.md del repo es el playbook operativo
completo: instalación, adaptación a terminal y versión del agente, y depuración de rechazos por código de motivo.
La versión publicada solo conocía Opus 4.8, Fable 5 y la familia gpt-5.x. En la rama
catalogo-modelos, los modelos se convierten en datos:
un catálogo único indica qué modelos existen, cómo aparece cada uno en pantalla y qué niveles de esfuerzo acepta. Los niveles
estándar ya incluyen Opus 5.5 y la familia GPT-6.
El código se escribió en un servidor Linux, sin el compilador de Apple. Los nombres de los modelos se obtuvieron de los
programas instalados (Claude Code 2.1.282 y Codex 0.156.1) y fueron verificados en la pantalla real
vía tmux en Linux, que es la misma interfaz de macOS. En esta revisión aparecieron dos cambios de Codex, ya
corregidos en la rama: el pie de página muestra "GPT-6-Astra" con mayúsculas, y Max/Ultra ahora están en un submenú
"More reasoning…". Puntos para revisar en Mac: la lista de textos fantasma del campo de Codex todavía es de la
versión 0.144.1 (si rechaza con DRAFT_PRESENT, basta con volver a extraer) y el modelo de Claude se lee de
una línea de estado 📂 pasta · Modelo, que parece provenir de una statusline personalizada. Antes de usarlo, en una Mac: git checkout catalogo-modelos,
make test, make matrix, stickshift doctor e stickshift status
en un panel con cada agente. Solo después de eso la rama entra en el main.
| Marcha | Claude Code | Codex |
|---|---|---|
| 1 | Haiku 4.5 | gpt-6-luna · medium |
| 2 | Sonnet 5 | gpt-6-sol · medium |
| 3 | Opus 5.5 · medium | gpt-6-astra · medium |
| 4 | Opus 5.5 · high | gpt-6-astra · high |
| 5 | Opus 5.5 · xhigh | gpt-6-astra · xhigh |
| R | Opus 5.5 · low | gpt-6-sol · low |
| ULTRA | Opus 5.5 · ultracode | gpt-6-astra · ultra |
La escalera sigue la referencia de esfuerzo: medium como nivel de trabajo, high cuando necesites más razonamiento y xhigh para los casos difíciles. max queda fuera de los niveles estándar, pero sigue disponible mediante el acelerador o la reasignación de teclas.
No ~/.stickshift/config.toml, una línea por modelo:
claude_model.opus = "Opus 5.6" codex_model.gpt-7-nova = "low medium high xhigh max" gear.3.claude = "opus medium"
En Claude, la clave es el argumento de /model y el valor es el nombre de la línea de estado. En Codex, la
clave es el nombre en el selector y el valor es la lista de esfuerzos que acepta el modelo.
stickshift status en un panel con el modelo nuevo debe mostrar el mismo nombre. Después,
stickshift 3 sin --commit imprime el plan sin escribir nada; solo entonces usa
--commit.
La comparación de nombres acepta decoraciones ("Opus 5.5 (1M context)" cuenta como Opus 5.5), pero nunca confunde versiones: "Opus 5" no es "Opus 5.5". En Codex, cada modelo solo acepta sus propios niveles de esfuerzo; ultra en luna se rechaza.
En Linux y en Windows mediante WSL, StickShift v2 le pide al propio terminal (tmux) que lea la pantalla y escriba, sin la Accesibilidad de macOS ni una app nativa. Cambia el modelo y el nivel de esfuerzo de Claude Code y Codex desde la línea de comandos o mediante un panel web con el mismo cambio, y tiene un chat nivel 1 que envía prompts al agente del panel elegido. Usa solo Python 3, sin instalar nada. Validado en vivo el 24/09/2026 con Claude Code 2.1.282 y Codex 0.156.1.
Clona el repositorio y agrega el lanzador al PATH. El list muestra los paneles tmux con Claude Code o Codex y el estado de cada uno.
ln -s "$PWD/v2/bin/stickshift2" \ ~/.local/bin/stickshift2 stickshift2 list
Sin --commit, es solo una simulación y muestra el plan. Con --commit, escribe y confirma mediante el mensaje del propio agente.
stickshift2 shift 4 --pane %3
stickshift2 shift 4 --pane %3 --commit
stickshift2 keys # atajos de tmuxSe abre en 127.0.0.1 con un token. A la izquierda, los terminales; en el centro, el cambio; a la derecha, el chat con el agente.
stickshift2 web
# abre la dirección con ?t=… impresoEl agente se identifica mediante proceso que se ejecuta en el panel, no por el texto. Solo escribe cuando el agente
está inactivo y el campo está vacío; la sugerencia gris de Claude no cuenta como borrador. El cambio se confirma con el mensaje del agente
("Set model to …", "Model changed to …"). El panel web exige un token en cada llamada, verifica Host e Origin
y registra todo en ~/.stickshift/v2.log.
Solo prompts: mensajes que empiezan con /, ! o # se rechazan,
al igual que los saltos de línea. Las tareas del sistema pasan por el agente y sus permisos. Si el agente pide permiso,
el chat te avisa y la decisión queda en el terminal; aprobar desde el chat será la v3.
Cada cambio también se convierte en la configuración predeterminada del agente para las sesiones nuevas, como escribir /model a mano.
opus e opus[1m] son modelos diferentes (200K y 1M de contexto); los niveles usan opus[1m].
O Windows nativo (backend WezTerm) es la fase 5 del plan y todavía no existe. Por ahora, en Windows,
usa WSL con tmux. Código y README de la v2 → ·
plan →
Directo desde docs/: la anatomía de un cambio y el mapa del código fuente, tal como
aparecen en el README.
Tal como lo documenta el README actual.
scripts/qualify-terminal.sh; reducir la ambigüedad que hoy depende del título de la ventana + la geometría + el cwd.catalogo-modelos)Opus 5.5 y GPT-6 en las marchas predeterminadas; modelo nuevo mediante config.toml; falta compilar y probar en una Mac antes del merge.