📸 Foto del desayuno → macros
La forma de registrar comida en HealthOS no es escribir gramos, sino enviar la foto del plato. La visión (modelo Gemini) mira la imagen, estima la proteína y los demás macros, plantea flags (p. ej., grasa saturada alta) y registra todo en una línea de food_log. Solo revisas la respuesta.
🟢 ¿Nuevo por aquí? Dos términos
- Visión (Gemini) — es el modelo de IA que "ve" la foto. En vez de describirla, el modelo lee la imagen y devuelve una estimación de la comida y sus macros.
- Macro — «macronutriente»: proteína, carbohidratos y grasa. Son los tres valores que el coach sigue día a día.
📊 Cómo leer: sigue la imagen de izquierda a derecha. El recuadro morado (la visión) es el paso que hace el trabajo: lee la imagen, estima y marca las flags. El final de la línea muestra que ese dato no desaparece después del registro: vuelve a aparecer en la recuperación del día siguiente (tema 6).
📷 Tú tomas una foto
Toma una foto del plato y envíala por Telegram, con una leyenda breve si quieres ayudar ("huevos revueltos y aguacate").
🧠 La visión estima
Gemini identifica los alimentos, estima las proteínas, las grasas y los carbohidratos, y señala alertas relevantes (p. ej., alto contenido de grasas saturadas).
🗄️ Guarda y confirma
La línea entra en food_log y el coach confirma en una frase: «~38g de proteína, bajo en grasas saturadas, registrado».
▶ Copia y usa en Telegram
Objetivo: registrar el desayuno sin escribir ningún macro.
Envías
[📷 foto do prato] + legenda: <ex.: ovos mexidos e abacate>
El coach responde
~38g proteína, baixa gordura saturada, registrado ✓
/today — la comida aparece en la lista de hoy; o ejecuta en el servidor python3 agent/scripts/db.py select food_log --limit 1 y mira la fila guardada. Los números son ilustrativos.Conceptos clave
Envías la imagen; la visión hace el cálculo.
La proteína y los macros son aproximados, no se pesan.
Avisos como «alto en grasas saturadas».
Una frase cierra el registro en el chat.
🗄️ food_log: qué queda guardado
Cada foto se convierte en una fila estructurada en la tabla food_log. No es solo texto: son campos que el coach suma y cruza después (ingesta del día, tendencia, patrón). Por eso "recuerda" lo que comiste: todo está en líneas, no en una conversación que se pierde.
🧾 Lo que suele incluirse en la línea
✓ Ideal para
- ✓Tendencia: "alcanzaste tu meta de proteína 5 de los últimos 7 días".
- ✓Patrón: "cada vez que cenas tarde, duermes peor".
- ✓Registro sin fricción — la barrera es tomar una foto.
✗ No sustituye
- ✗Pesar la comida — la foto es estimación visual, no la balanza.
- ✗Precisión clínica para una dieta médica restringida.
- ✗Adivinar qué está oculto en el plato (salsa, aceite).
💡 Buena para ver tendencias, no para medir el peso exacto
Los macros de la foto son estimaciones: excelentes para ver el dirección a lo largo de semanas, no para calcular con exactitud las calorías. Si un número realmente importa (dieta médica, definición agresiva), pesa y corrige la línea — el tema 5 muestra cómo.
Conceptos clave
Campos sumables, no texto suelto.
Avisos que el coach lee después.
El valor está en el patrón de semanas.
Visión, no báscula.
🏋️ Registrar el entrenamiento
El entrenamiento también es un mensaje. Lo describes con texto libre — tipo, duración e intensidad — y el coach guarda una fila en la tabla workouts. Esto completa el otro lado de la cuenta: lo que ingresa (comida) y lo que gastas (entrenamiento), ambos junto a la recuperación.
▶ Copia y usa en Telegram
Objetivo: registrar la sesión de hoy como una línea en workouts.
Envías
treino: <tipo> <duração> intensidade <baixa|média|alta> ex.: treino: push 45min intensidade alta
El coach responde
Push 45min, intensidade alta — registrado. Põe carbo perto da sessão. ✓
/today y mira el entrenamiento en la lista; o en el servidor python3 agent/scripts/db.py select workouts --limit 1.💡 Texto libre, no formulario
No necesitas memorizar un formato. «Hice una carrera suave de media hora» funciona igual: el agente extrae el tipo, la duración y la intensidad de la frase. El ejemplo estructurado de arriba es solo la vía más rápida.
Conceptos clave
La tabla donde el entrenamiento se convierte en una fila.
Tipo, duración, intensidad.
Descríbelo con libertad; el agente lo extrae.
La carga de hoy pesa en el mañana.
🎬 Clip demo del ejercicio (opcional)
Esto es un extra. El script exercise_clip.py usa ffmpeg para preparar un clip corto que muestre un ejercicio — útil cuando no recuerdas cómo hacer un movimiento. No forma parte del registro; es una ayuda visual a demanda.
🟢 ¿Nuevo por aquí?
ffmpeg — es una herramienta de línea de comandos para procesar video y audio. En HealthOS solo aparece aquí, para generar el clip del ejercicio; el resto del coach no depende de ella.
▶ Copia y ejecuta en el servidor
Objetivo: generar un clip de demostración de un ejercicio (necesita tener ffmpeg instalado).
Comando
python3 agent/scripts/exercise_clip.py "<nome do exercício>"
ex.: python3 agent/scripts/exercise_clip.py "agachamento búlgaro"
exercise_clip.py)» pasa cuando el clip se genera sin errores.🧭 Puedes saltártelo sin perderte nada
Si no instalaste ffmpeg o no usas clips, HealthOS sigue siendo 100% funcional: la comida, el entrenamiento, la recuperación y la presión no dependen de este paso. Es una comodidad, no una base.
Conceptos clave
Genera el clip demo del movimiento.
La herramienta de video que hay detrás.
El coach funciona sin eso.
Generas cuando lo necesitas.
✏️ Corregir lo que la IA hizo mal
La visión calcula — y el coach avisa cuando está adivinando. Esto es intencional: el registro se mantiene fiel a la realidad y tú tienes el control. Cuando la estimación sea incorrecta, la corriges con un mensaje y la línea se actualiza. Tú eres quien verifica.
✓ Vale la pena corregir cuando
- ✓La visión se equivocó con la cantidad ("eran 2 huevos, no 3").
- ✓Faltó un elemento oculto (el aceite, la salsa).
- ✓El coach dijo explícitamente que no estaba seguro.
✗ No hace falta preocuparse cuando
- ✗La estimación está cerca: es una tendencia, no una báscula.
- ✗Solo quieres saber la tendencia de la semana, no el gramo exacto.
- ✗Buscar precisión clínica en una foto: para eso, pésala.
▶ Copia y usa en Telegram
Objetivo: corregir una estimación que quedó mal.
Envías
na verdade era <correção>
ex.: na verdade eram 2 ovos, não 3, e tinha azeite
El coach responde
Corrigido: ~30g proteína, gordura um pouco maior. Linha atualizada. ✓
/today de nuevo: la comida aparece con los números corregidos en lugar de los anteriores.⚠️ La IA puede estar segura y equivocarse
El coach es un modelo de IA: puede adivinar con convicción. Toma la estimación como punto de partida, no como verdad. Para cualquier cosa que realmente importe para tu salud, consúltalo con un profesional; esto no es consejo médico.
Conceptos clave
El coach señala la incertidumbre.
Un mensaje actualiza la fila.
Tú eres el control de calidad.
Tener confianza no significa tener razón.
🔁 Ayer en el recovery de mañana
Aquí se cierra el ciclo. La cena tarde, la copa de vino, el entrenamiento intenso: todo eso se registra hoy, y reaparece mañana por la mañana dentro de la recuperación. El coach no solo muestra el número: señala la causa probable usando lo que registraste. Por eso vale la pena registrar.
📊 Cómo leer: las tres cajas forman un ciclo. Lo que registras (morado) cambia la recuperación (rojo), que cambia el consejo (cian) — y la línea discontinua cierra el ciclo de vuelta en la comida. Es el mismo loop del Módulo 1.1, ahora visto desde el lado de quien registra.
💡 Registrar es lo que le da causa al número
Sin el registro de ayer, el recovery de mañana sería solo un número suelto. Con él, se convierte en explicación: "fue el vino", "fue la cena tarde". Cuanto más registras, más aprende el coach cuáles son tus propios desencadenantes.
Conceptos clave
La elección de hoy se convierte en el número de mañana.
El coach señala el porqué, no solo el qué.
Sin datos, el número queda huérfano.
Aprendes qué influye en ti.
🩺 Presión y peso
Los dos registros más rápidos del día: la presión (BP) e o peso de la mañana (weigh-in). Cada uno es un mensaje. La presión va a la tabla vitals; el peso, en weigh_ins. Junto con la comida, permiten que el coach relacione la sal con la presión arterial, o la cena con el peso.
🟢 ¿Nuevo por aquí?
- BP — «blood pressure», presión arterial. Tiene dos números: sistólica/diastólica (ej.: 120/80).
- weigh-in — el pesaje, de preferencia a la misma hora todos los días (por la mañana, en ayunas) para que la tendencia sea comparable.
▶ Copia y usa en Telegram
Objetivo: registrar la presión y el peso de la mañana.
Envías
pressão <sistólica>/<diastólica> peso <kg> ex.: pressão 124/79 · peso 78.4
El coach responde
BP 124/79 registrada (vitals). Peso 78,4kg registrado (weigh_ins). ✓
vitals row" y "A weight message writes a weigh_ins row"; o python3 agent/scripts/db.py select vitals --limit 1.🧂 El ejemplo del autor: sal × presión
En el caso del autor, registrar la comida y la presión juntos reveló un patrón: después de comidas más saladas, su presión subía alrededor de 10-15%. Este tipo de vínculo solo aparece porque ambos datos están en la misma base de datos. Es la experiencia de una persona, número ilustrativo —no es una meta para ti.
⚠️ No es consejo médico
La presión es un dato clínico serio. El coach no diagnostica ni modifica la medicación — registra y señala patrones para que los lleves al médico. Cualquier lectura fuera de lo normal debe tratarse con un profesional de la salud, no con el bot.
Conceptos clave
La tabla de presión arterial (BP).
La tabla del peso de la mañana.
Patrón que solo aparece al cruzar datos.
Registra; el médico decide.
✅ Autoevaluación (opcional): ¿por qué las macros de la foto son "buenas para ver tendencias, no para medir gramos"?
📋 Resumen del módulo
Próximo módulo:
3.3 — Memoria, patrones y suplementos: cómo el coach recuerda el historial, detecta patrones a lo largo de las semanas y organiza el horario de los suplementos.