Sobre el proyecto
tg-cli (nombre de comando tg) es un puente de Telegram para agentes de codificación de IA. Consta de dos partes: una CLI de salida que los agentes llaman para enviar actualizaciones, y un demonio de entrada, tg-ctl, que transporta sus respuestas desde un teléfono de vuelta a una sesión de agente en ejecución.
Salida. Los agentes envían texto, informes HTML, fotos y archivos. Las etiquetas HTML se detectan automáticamente y se añade un prefijo de emoji de marca para el agente detectado. Los archivos Markdown se convierten a PDF mediante pandoc y Chrome headless antes de la carga, recurriendo al envío del original si la conversión falla. Las rutas de archivos mencionadas en el texto del mensaje se detectan y adjuntan automáticamente mediante una búsqueda recursiva en el árbol de trabajo, dejando la ruta en el pie de foto.
Se ejecutan varias protecciones antes de un envío. Un mensaje lo suficientemente largo como para fragmentarse en más de seis envíos de Telegram es rechazado de antemano con el recuento de caracteres y de fragmentos. Los archivos que parecen secretos nunca se adjuntan: archivos .env, claves privadas SSH, pem/key/p12/pfx/ppk, archivos rc de credenciales, historiales de shell, tfvars, credentials.json y kubeconfig; las menciones detectadas automáticamente se omiten, mientras que un argumento de archivo explícito provoca un error crítico. Una protección de tokens corruptos bloquea un único punto de código CJK atrapado dentro de una palabra latina o cirílica y tokens cuyo script cambia dos o más veces, permitiendo texto genuinamente bilingüe. Una protección de capturas de pantalla rechaza un mensaje que menciona una captura de pantalla sin ninguna foto adjunta. Una puerta de diccionario coteja palabras prohibidas de un archivo JSON mantenido por el usuario con el título, cuerpo y pies de foto de cada envío, sin bandera de omisión por diseño; un archivo mal formado provoca el cierre del proceso. Los autovínculos resuelven IDs de tickets de Linear a través de la CLI de linear y números de PR/issue de GitHub a través de gh, almacenando los veredictos durante una hora y degradándose a texto plano. Las funciones individuales pueden desactivarse con una bandera no-feature.
Entrada. tg-ctl se inicia automáticamente en el primer envío de salida desde un panel de tmux con un agente detectado. Las respuestas de texto plano de Telegram se inyectan en el panel de ese agente. Responder a un mensaje con una cita adjunta un ancla de cita que nombra el mensaje respondido, y el comando tg replies puede recuperar el original completo. El comando /agent enruta un mensaje a un agente específico, mediante coincidencia difusa (y compatible con cirílico) de los nombres de las ventanas, ofreciendo botones de selección agrupados por sesión cuando hay ambigüedad, y proporcionando una lista de agentes ante una invocación simple.
Un agente iniciado fuera de tmux no tiene panel; se enumera como inalcanzable con el motivo y, en su lugar, obtiene un segundo canal a través de una bandeja de entrada de Stop-hook, que se lee al final de cada turno. El README establece la limitación claramente: un agente que ya está inactivo recibe el mensaje en cola solo cuando finaliza su siguiente turno. El comando inbox de tg-ctl muestra lo que está en cola.
Question-to-buttons reenvía las preguntas del agente y las solicitudes de permiso a Telegram como botones en línea, para que pueda responder tocando y que la respuesta se inyecte directamente en el panel. Cubre las formas de preguntas y permisos de Claude Code, PermissionRequest de Codex y los eventos question.asked y permission.asked de opencode, y se configura de forma idempotente mediante un comando install-hooks que respalda y preserva la configuración existente. Los mensajes enviados mientras hay una pregunta pendiente se difieren en lugar de interrumpir el prompt, y una tarjeta de pregunta caducada aún puede responderse con texto plano.
Los comandos incluyen stop (interrumpe el turno actual), kill, status, limit (telemetría de uso más reciente por agente), tasks (un tablero de tareas filtrable), agent, daily (informe de trabajo entregado) y spend (uso de tokens y costes). Las fotos y documentos enviados desde Telegram se descargan en un directorio de caché local y la ruta se inyecta para que el agente la lea. La telemetría de uso canalizada desde statusLine de Claude Code, los recuentos de tokens de Codex y las estadísticas de sesión de Pi puede activar una advertencia deduplicada cuando un límite alcanza el 90 por ciento. El enrutamiento por temas de foro es opcional y experimental, con advertencias documentadas sobre la creación de temas que generan un agente y la reapertura de un tema activo que no vuelve a adjuntar su agente. El control puede desactivarse en el archivo de configuración.
Instalación. Un script de instalación de una sola línea instala las dependencias a través de Bun, vincula tg en el PATH y registra la habilidad del agente; también funciona la clonación manual más un enlace simbólico. La configuración reside en un archivo dotenv bajo el directorio config con un token de bot y un ID de chat. Un subcomando install-skill escribe un archivo de habilidad y añade instrucciones cortas a los archivos de arnés detectados. Debido a que el script descargado es el binario en ejecución, no hay paso de compilación, y un script de despliegue adelanta la descarga, rechazando la extracción sobre cambios locales; los cambios en el código del demonio requieren un reinicio, que el script detecta e informa. Se requiere un token de bot por máquina, ya que Telegram permite un único consumidor de getUpdates por token.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.