📸 Foto do café → macros
O jeito de registrar comida no HealthOS não é digitar gramas — é mandar a foto do prato. A visão (modelo Gemini) olha a imagem, estima proteína e os outros macros, levanta flags (ex.: gordura saturada alta) e grava tudo numa linha de food_log. Você só confere a resposta.
🟢 Novo aqui? Dois termos
- Visão (Gemini) — é o modelo de IA que "enxerga" a foto. Em vez de você descrever, ele lê a imagem e devolve uma estimativa de comida e macros.
- Macro — "macronutriente": proteína, carboidrato e gordura. São as três contas que o coach acompanha no dia a dia.
📊 Como ler: siga a foto da esquerda pra direita. A caixa roxa (a visão) é o passo que faz o trabalho: lê a imagem, estima e marca as flags. O fim da linha mostra que esse dado não morre no registro — ele reaparece na recuperação do dia seguinte (tópico 6).
📷 Você fotografa
Tira a foto do prato e manda no Telegram, com uma legenda curta se quiser ajudar ("ovos mexidos e abacate").
🧠 A visão estima
O Gemini identifica os itens, estima proteína/gordura/carbo e levanta flags relevantes (ex.: gordura saturada alta).
🗄️ Grava e confirma
A linha entra em food_log e o coach confirma em uma frase: "~38g proteína, baixa gordura saturada, registrado".
▶ Copie e use no Telegram
Objetivo: registrar o café da manhã sem digitar nenhum macro.
Você envia
[📷 foto do prato] + legenda: <ex.: ovos mexidos e abacate>
O coach responde
~38g proteína, baixa gordura saturada, registrado ✓
/today — a refeição aparece na lista de hoje; ou no servidor rode python3 agent/scripts/db.py select food_log --limit 1 e veja a linha gravada. Os números são ilustrativos.Conceitos-chave
Você manda a imagem; a visão faz a conta.
Proteína e macros vêm aproximados, não pesados.
Avisos como "gordura saturada alta".
Uma frase fecha o registro no chat.
🗄️ food_log: o que fica gravado
Cada foto vira uma linha estruturada na tabela food_log. Não é só texto: são campos que o coach soma e cruza depois (intake do dia, tendência, padrão). É por isso que ele "lembra" o que você comeu — está tudo em linhas, não numa conversa que se perde.
🧾 O que costuma entrar na linha
✓ Ótimo para
- ✓Tendência: "sua proteína bateu a meta 5 dos últimos 7 dias".
- ✓Padrão: "toda vez que você janta tarde, o sono cai".
- ✓Registro sem fricção — a barreira é tirar uma foto.
✗ Não substitui
- ✗Pesar a comida — a foto é estimativa de visão, não balança.
- ✗Precisão clínica para dieta médica restrita.
- ✗Adivinhar o que está escondido no prato (molho, óleo).
💡 Boa para tendência, não para gramatura
As macros da foto são estimativas: ótimas para ver a direção ao longo de semanas, não para fechar uma conta exata de calorias. Se um número importa de verdade (dieta médica, cutting agressivo), pese e corrija a linha — o tópico 5 mostra como.
Conceitos-chave
Campos somáveis, não texto solto.
Avisos que o coach lê depois.
O valor está no padrão de semanas.
Visão, não balança.
🏋️ Logar o treino
Treino também é uma mensagem. Você descreve em texto livre — tipo, duração e intensidade — e o coach grava uma linha na tabela workouts. Isso fecha o outro lado da conta: o que entra (comida) e o que gasta (treino), os dois ao lado da recuperação.
▶ Copie e use no Telegram
Objetivo: registrar a sessão de hoje como uma linha em workouts.
Você envia
treino: <tipo> <duração> intensidade <baixa|média|alta> ex.: treino: push 45min intensidade alta
O coach responde
Push 45min, intensidade alta — registrado. Põe carbo perto da sessão. ✓
/today e veja o treino na lista; ou no servidor python3 agent/scripts/db.py select workouts --limit 1.💡 Texto livre, não formulário
Você não precisa decorar um formato. "Fiz uma corrida leve de meia hora" funciona igual — o agente extrai tipo, duração e intensidade da frase. O exemplo estruturado acima é só o caminho mais rápido.
Conceitos-chave
A tabela onde o treino vira linha.
Tipo, duração, intensidade.
Descreva à vontade; o agente extrai.
Carga de hoje pesa no amanhã.
🎬 Clipe demo do exercício (opcional)
Esse é um extra. O script exercise_clip.py usa ffmpeg para montar um clipe curto demonstrando um exercício — útil quando você não lembra a execução de um movimento. Não é parte do registro; é uma ajuda visual sob demanda.
🟢 Novo aqui?
ffmpeg — é uma ferramenta de linha de comando para processar vídeo e áudio. No HealthOS ela só aparece aqui, para gerar o clipe do exercício; o resto do coach não depende dela.
▶ Copie e rode no servidor
Objetivo: gerar um clipe demo de um exercício (precisa de 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)" passa quando o clipe é gerado sem erro.🧭 Pode pular sem perder nada
Se você não instalou ffmpeg ou não usa clipes, o HealthOS continua 100% funcional — comida, treino, recovery e pressão não dependem deste passo. É conveniência, não fundação.
Conceitos-chave
Gera o clipe demo do movimento.
A ferramenta de vídeo por trás.
O coach roda sem isso.
Você gera quando precisa.
✏️ Corrigir o que a IA errou
A visão chuta — e o coach avisa quando está chutando. Isso é de propósito: o registro fica honesto e você fica no comando. Quando a estimativa estiver errada, você corrige em uma mensagem e a linha é atualizada. Você é a verificação humana.
✓ Vale corrigir quando
- ✓A visão errou a quantidade ("eram 2 ovos, não 3").
- ✓Faltou um item escondido (o azeite, o molho).
- ✓O coach disse explicitamente que estava incerto.
✗ Não precisa pirar quando
- ✗A estimativa está perto — é trend, não balança.
- ✗Você só quer a direção da semana, não o grama exato.
- ✗Buscar precisão clínica numa foto — para isso, pese.
▶ Copie e use no Telegram
Objetivo: corrigir uma estimativa que ficou errada.
Você envia
na verdade era <correção>
ex.: na verdade eram 2 ovos, não 3, e tinha azeite
O coach responde
Corrigido: ~30g proteína, gordura um pouco maior. Linha atualizada. ✓
/today de novo — a refeição aparece com os números corrigidos no lugar dos antigos.⚠️ A IA pode estar confiante e errada
O coach é um modelo de IA: pode chutar com convicção. Trate a estimativa como ponto de partida, não verdade. Para qualquer coisa que importe de verdade na sua saúde, confira com um profissional — isto não é conselho médico.
Conceitos-chave
O coach sinaliza a incerteza.
Uma mensagem atualiza a linha.
Você é o controle de qualidade.
Confiante não é correto.
🔁 Ontem no recovery de amanhã
Aqui o loop fecha. O jantar tarde, a taça de vinho, o treino pesado — tudo isso entra como linha hoje, e reaparece amanhã de manhã dentro da recuperação. O coach não só mostra o número: ele aponta a causa provável, usando o que você registrou. É por isso que registrar vale a pena.
📊 Como ler: as três caixas são uma volta. O que você registra (roxo) muda a recuperação (vermelho), que muda o conselho (ciano) — e a linha tracejada fecha o ciclo de volta na comida. É o mesmo loop do Módulo 1.1, agora visto do lado de quem registra.
💡 Registrar é o que dá causa ao número
Sem o registro de ontem, o recovery de amanhã seria só um número solto. Com ele, vira explicação: "foi o vinho", "foi o jantar tarde". Quanto mais você registra, mais o coach aprende os seus próprios botões.
Conceitos-chave
A escolha de hoje vira o número de amanhã.
O coach aponta o porquê, não só o quê.
Sem dado, o número fica órfão.
Você aprende o que mexe em você.
🩺 Pressão e peso
Os dois registros mais rápidos do dia: a pressão (BP) e o peso da manhã (weigh-in). Cada um é uma mensagem. A pressão entra na tabela vitals; o peso, em weigh_ins. Junto com a comida, eles deixam o coach ligar sal e pressão, ou jantar e peso.
🟢 Novo aqui?
- BP — "blood pressure", pressão arterial. Vem em dois números: sistólica/diastólica (ex.: 120/80).
- weigh-in — a pesagem, de preferência na mesma hora todo dia (de manhã, em jejum) para a tendência ser comparável.
▶ Copie e use no Telegram
Objetivo: registrar a pressão e o peso da manhã.
Você envia
pressão <sistólica>/<diastólica> peso <kg> ex.: pressão 124/79 · peso 78.4
O coach responde
BP 124/79 registrada (vitals). Peso 78,4kg registrado (weigh_ins). ✓
vitals row" e "A weight message writes a weigh_ins row"; ou python3 agent/scripts/db.py select vitals --limit 1.🧂 O exemplo do autor: sal × pressão
No caso do autor, registrar comida e pressão juntos revelou um padrão: depois de refeições mais salgadas, a pressão dele subia cerca de 10-15%. Esse tipo de elo só aparece porque os dois dados moram no mesmo banco. É a experiência de uma pessoa, número ilustrativo — não vale como alvo para você.
⚠️ Não é conselho médico
Pressão é dado clínico sério. O coach não diagnostica nem mexe em medicação — ele registra e aponta padrões para você levar ao médico. Qualquer leitura fora do normal é assunto de um profissional de saúde, não do bot.
Conceitos-chave
A tabela da pressão (BP).
A tabela do peso da manhã.
Padrão que só aparece cruzando dados.
Registra; o médico decide.
✅ Auto-checagem (opcional): por que as macros da foto são "boas para tendência, não para gramatura"?
📋 Resumo do módulo
Próximo módulo:
3.3 — Memória, padrões e suplementos: como o coach lembra do histórico, enxerga padrões ao longo de semanas e organiza a agenda de suplementos.