Sobre el proyecto
claude-print es un envoltorio de línea de comandos para la interfaz de usuario de terminal (TUI) interactiva de Claude Code. Su propósito es estrecho y explícito: Anthropic redirige el modo headless (`claude -p`, la ruta de SDK/pipe) a través de un pool de créditos de Agent SDK separado, mientras que solo la TUI interactiva se factura contra una suscripción ilimitada. El README establece que la ruta de facturación se decide mediante una comprobación `isatty` dentro del binario `claude`: la salida TTY etiqueta la sesión como `cc_entrypoint=cli`, mientras que un pipe la etiqueta como `cc_entrypoint=sdk-cli`. claude-print asigna un PTY, impulsa la TUI a través de él y busca mantener la compatibilidad de cable con la salida de `claude -p` mientras factura contra la suscripción.
Cómo funciona, según el README:
- Inicia `claude` bajo un PTY para que `isatty` devuelva true.
- Vigila el diálogo de confianza del proyecto de una sola vez y envía la pulsación de tecla de confirmación automáticamente.
- Inyecta el prompt utilizando secuencias de escape de pegado entre corchetes (bracketed-paste), para que la TUI lo trate como entrada de usuario sin interpretación del shell.
- Instala un hook de parada de Claude Code temporal que escribe en un FIFO; el proceso se bloquea en esa lectura.
- Lee la transcripción de la sesión en JSONL, extrae el turno del asistente y lo emite en el formato solicitado.
La entrada puede provenir de un argumento posicional, `--input-file` o stdin no-TTY; estos son mutuamente excluyentes. Los formatos de salida son `text` (predeterminado), `json` (un objeto de una sola línea con campos como result, session_id, num_turns, duration_ms, cost_usd, claude_version y un objeto de uso con recuentos de tokens de entrada/salida/caché) y `stream-json` (reproducción en tiempo real de eventos de transcripción en JSONL). Los flags documentados incluyen `--model`, `--max-turns`, `--allowedTools`/`--disallowedTools`, `--dangerously-skip-permissions`, varios controles de tiempo de espera (wall-clock, first-output, stream-json, Stop hook), `--claude-binary`, `--config`, `--no-inherit-hooks`, `--verbose`, `--check`, `--version` y `--help`. Los códigos de salida están documentados para éxito (0), error del asistente (1), error interno (2), error de entrada (4), tiempo de espera (124) y SIGINT (130).
La configuración es un TOML opcional en `$XDG_CONFIG_HOME/claude-print/config.toml` o `~/.config/claude-print/config.toml`, anulable con `--config`. Las claves documentadas son `model`, `inherit_hooks`, `max_turns` y `timeout_secs`, cada una opcional, con validación: si falta el archivo, se recurre a los valores predeterminados, pero una configuración ilegible, malformada o fuera de rango sale con el estado 2 en lugar de advertir y continuar.
La instalación es `sh install.sh`, que descarga un binario estático musl precompilado desde GitHub Releases, ejecuta `--check` y, opcionalmente, copia un YAML de adaptador en `~/.needle/agents/` para el despacho de la flota NEEDLE. También se documenta la compilación desde el código fuente con Cargo. Solo es compatible con Linux x86_64; aarch64/ARM y Windows ConPTY están explícitamente fuera de alcance. El README también documenta scripts de verificación de facturación que inspeccionan el campo `entrypoint` de la última transcripción y un servicio/temporizador canario diario.
Limitaciones declaradas: asignación de PTY solo para Linux, el binario `claude` debe estar ya instalado y autenticado, un prompt por invocación sin modo de sesión de múltiples turnos, y aproximadamente 2–5 segundos de latencia de inicio en comparación con una llamada HTTP directa. Un requisito operativo prominente es que `HOME` debe estar configurado en un directorio existente, escribible y no vacío; la herramienta deliberadamente no adivina `/root` ni consulta la base de datos de passwd, y las compilaciones actuales aplican este contrato antes del inicio de la sesión, `--check` y `--version`. Las notas de resolución de problemas cubren la falta de `/dev/ptmx`, hooks de parada que no se activan y condiciones de carrera de transcripción.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.