hibi
0.1experimental · veja o que já funciona →

hibi

melhor a cada dia

Um tutor de programação que roda no seu terminal. Ele lê o projeto em que você está trabalhando e te ajuda a aprender a escrever código por conta própria.

a raposa do hibi deitada em cima do terminal
hibi 日々 ~/code/pipeline
Oi, Ana. O que você quer aprender hoje?
Escreva do seu jeito, peça um exercício ou digite /help.
❯ me passa um exercício sobre channels
Escreva uma função Fanout em internal/pipeline/fanout.go. Ela recebe um channel de entrada e devolve três channels de saída, e cada valor que chega vai para exatamente um deles. Quando a entrada fechar, as três saídas também precisam fechar.
Já tem um teste pronto para ela em fanout_test.go.
❯ acho que terminei
Antes de rodar os testes: o teste cria três consumidores e depois fecha a entrada. O que você acha que acontece com os três channels de saída?
❯ os três fecham
Dois fecharam e um não:
│ --- FAIL: TestFanoutClosesOutputs
│ fanout_test.go:42: output channel 2 was never closed
Você esperava que os três fechassem. Em que ponto do seu código cada channel de saída é fechado?
❯ não faço ideia, me dá uma dica?
dica 1 de 3
Olha o fim da Fanout, logo depois que o loop sobre a entrada termina. O conceito aqui é quem é responsável por fechar um channel.
❯

Dicas em etapas.

Quando você trava, o hibi primeiro aponta onde está o problema. Se você continuar travado, ele explica qual é. A correção só aparece no fim.

Testa de verdade.

Quando você diz que terminou, o hibi roda os testes do seu projeto. Um teste passando vale muito mais do que a opinião do modelo sobre o seu código.

Lembra de você.

O que você aprende em um projeto continua valendo no próximo, e tudo fica salvo no seu computador.

02 · por quê

Por que o hibi existe

Nem sempre pedir ajuda a um assistente de IA funciona bem. Ele pode simplesmente te entregar o código completo. No trabalho, talvez seja exatamente o que você quer. Quando você está aprendendo, porém, isso pode atrapalhar: você lê a resposta, entende, cola no projeto e, uma semana depois, não consegue escrever aquilo sozinho. Você também pode não saber direito o que realmente entendeu — e o assistente menos ainda, porque nunca te perguntou.

O hibi foi feito para quem está aprendendo. Ele segura a solução de propósito e aumenta a ajuda conforme você tenta. Também confere seu trabalho rodando o código. E vai registrando o que você já mostrou que sabe. Depois de algumas semanas, ele consegue distinguir o que você domina, onde está chutando e o que você não pratica há algum tempo.

03 · instalação

Instalação

O hibi está no npm. Se você já tem o Bun instalado, é só rodar um comando.

O que você precisa

runtime

Bun 1.2 ou mais recente. É o programa que roda o hibi.

modelo

Uma chave de API da OpenAI ou da Anthropic. O hibi usa um dos modelos dessas empresas. A chave funciona como uma espécie de senha para usar a sua conta. Você cria a chave no site da empresa, e a cobrança vai direto para você, geralmente alguns centavos por pergunta.

opcional

git. Sem ele, o hibi não consegue distinguir o código que você escreveu do código que já veio pronto em um template.

Com o Bun

bash
bun install -g @hwgo1/hibi

A partir do código-fonte

Se quiser ler ou mexer no código, instale direto do repositório:

bash
git clone https://github.com/hwgo1/hibi
cd hibi
bun install
cd packages/cli && bun link && cd ../..
bun link @hwgo1/hibi

Primeira vez

Abra uma pasta com o seu código e rode hibi. Na primeira vez, ele vai fazer três perguntas:

$ hibi
hibi 日々
Oi! Eu sou o hibi, um tutor de programação.
Eu te ajudo a aprender de verdade: explico, proponho exercícios e dou dicas,
sem entregar a resposta pronta. Antes de começar, preciso saber algumas coisas.
1/3 Idioma
Vou falar em português (Brasil). Aperte Enter para confirmar ou digite outro idioma (en, es):
2/3 Nome
Como posso te chamar? (Enter para deixar em branco) Ana
3/3 Chave de acesso
O hibi usa a inteligência artificial de outra empresa, que cobra pelo uso —
normalmente alguns centavos por pergunta. Você cria uma chave no site dela e
cola aqui; o custo fica na sua conta.
Qual empresa você quer usar?
1 OpenAI
2 Anthropic
Escolha [1]: 1
Crie sua chave em: https://platform.openai.com/api-keys
Cole a chave aqui: ••••••••3f9a
Testando a chave… funcionou!
Ela fica guardada só no seu computador.
Tudo pronto.

O idioma vem primeiro, então o resto já aparece em português. O hibi testa a chave antes de salvá-la e a esconde na tela assim que você cola. Ele também escolhe um modelo recomendado, que você pode trocar depois com /model.

04 · primeiros minutos

Seus primeiros cinco minutos

  1. 1
    Abra um projeto.

    Entre numa pasta com o seu código e rode hibi. Na primeira vez, ele lê o projeto para descobrir a linguagem, como os testes rodam e quais arquivos você escreveu.

  2. 2
    Diga o que quer aprender.

    “Quero aprender Go” e “o que é uma variável?” funcionam do mesmo jeito. Se você disser um objetivo, o hibi guarda e continua de onde você parou na próxima vez.

  3. 3
    Peça um exercício.

    O hibi escreve o enunciado e diz em qual arquivo você vai trabalhar.

  4. 4
    Tente e avise quando terminar.

    O hibi roda seus testes. Se travar, peça uma dica e veja a ajuda passar de “olha aqui” para “o problema é esse”.

  5. 5
    Digite /help.

    Você vê exemplos do que perguntar e os dois comandos que mais vai usar.

05 · documentação

Documentação

5.1 · docs

Comandos

Na maior parte do tempo, você só conversa com o hibi. Os comandos servem para consultar o que ele registrou sobre você ou mudar alguma configuração. O /help all mostra todos eles, separados nesses mesmos grupos.

Seu progresso
/profile
O que o hibi sabe sobre você: preferências, objetivo e o quanto você domina cada assunto
/state
O que está em andamento: o exercício atual, quantas dicas você recebeu e perguntas sem resposta
/signals
O que o hibi percebeu sobre o seu jeito de aprender e o quanto ele confia em cada observação
Conversa
/undo
Desfaz a última resposta e tira o registro dela do seu histórico
/clear
Limpa a conversa. O exercício, as dicas e o seu progresso continuam salvos
/forget <assunto>
Apaga tudo o que foi registrado sobre um assunto
Configurações
/prefs
Mostra como o hibi está ensinando você. /prefs <nome> <valor> muda uma configuração
/model
Lista os modelos disponíveis. /model <nome> troca o modelo
/provider
Troca entre OpenAI e Anthropic, se você tiver as duas chaves salvas
/reset
Apaga a chave salva. Na próxima vez que precisar dela, o hibi pede de novo
Outros
/help
Mostra exemplos do que perguntar. /help all lista todos os comandos
/index
Lê os arquivos do projeto de novo depois de mudanças grandes
/cost
Quanto a conversa custou até agora
/stop
Desliga o processo do hibi que está rodando em segundo plano
/exit
Sai do hibi

Os comandos ficam em inglês em qualquer idioma, já que é você quem digita. As descrições do /help aparecem no seu idioma.

5.2 · docs

Dicas

Quando você trava em um exercício, a ajuda vem em três etapas. Acima da resposta, o hibi mostra em qual delas você está, por exemplo, “dica 1 de 3”.

  1. etapa 1

    Aponta a parte do código onde está o problema e indica qual conceito está envolvido. Não diz o que está errado.

  2. etapa 2

    Diz qual é o problema e mostra exatamente onde ele está. Não escreve a correção.

  3. etapa 3

    Mostra a correção, explica por que ela funciona e te passa um problema parecido, em outro contexto, para você resolver sozinho.

A primeira dica

Ela aparece depois da sua primeira tentativa ou depois de uns três minutos no problema. Receber uma dica antes de tentar costuma ajudar menos a fixar o que você aprendeu.

Quando a etapa sobe

Depois de mais duas tentativas ou de uns oito minutos sem avançar. No mesmo problema, a etapa nunca volta.

Começando da etapa 2

Se você pergunta sobre um código que já escreveu, o hibi pode pular a etapa 1. Você já encontrou o lugar, então apontar para ele de novo só faria você perder tempo.

Pedindo a resposta

Peça a resposta diretamente e você recebe. Só que esse exercício passa a valer menos no seu histórico, e o hibi registra que você pediu.

O modelo não decide quanto revelar.

A ferramenta de dicas não tem ajuste de “profundidade”, e nenhuma ferramenta do hibi consegue escrever a solução de um exercício. Até onde a dica vai é definido pelo próprio código, com base nas suas tentativas e no tempo que você passou no problema.

5.3 · docs

Conferindo seu código

Quando você diz que terminou, o hibi roda o comando de testes do próprio projeto. O comando muda de acordo com o projeto:

go test ./...npm testcargo testpytest

Ele descobre qual é o comando quando lê o projeto pela primeira vez e nunca pega essa informação da conversa. Assim, nenhum texto escrito em um arquivo consegue mudar o que será executado.

Problema no ambiente não conta contra você.

Se os testes falharem porque falta alguma coisa no seu computador, como um compilador que não foi instalado, o hibi avisa e ajuda a resolver. Isso não conta como uma tentativa errada.

Projeto sem testes?

Nesse caso, o hibi lê seu código e faz uma avaliação. Ela vale mais ou menos um terço de um teste de verdade no seu histórico.

5.4 · docs

Perguntas antes das respostas

Às vezes o hibi faz uma pergunta antes de explicar alguma coisa ou rodar um teste. São três tipos de pergunta, e cada um aparece em um momento natural da conversa.

Antes de um assunto novo

Ele confere o que você já sabe. Se você usa promises em JavaScript, pode perguntar se você se sente à vontade com elas e explicar o select do Go fazendo uma comparação entre os dois. Também pode perguntar algo como “se dois programas somam no mesmo contador ao mesmo tempo, o que acontece?” e partir da sua resposta.

Antes de rodar os testes

Ele pergunta o que você espera que seu código faça naquele exercício. Quando o resultado mostra que você estava errado, fica mais fácil corrigir a ideia que você tinha.

Depois de um exercício

Ele pede que você diga, em uma linha, qual era o problema no fim das contas. Um resumo quase certo pode revelar uma lacuna que um teste passando não mostra.

Para pular uma pergunta, é só continuar o que você estava fazendo. O hibi pergunta no máximo uma vez a cada quatro mensagens e seis vezes por sessão. Se você pular duas seguidas, ele para de perguntar até o fim da sessão. Para desligar as perguntas, use /prefs unsolicitedHints never.

5.5 · docs

Quizzes

Rodar o código não mostra tudo. Saber quando usar um lock é diferente de saber escrever um, então o hibi também faz perguntas de múltipla escolha.

Três respostas possíveis

Certo, errado ou “não sei”. Dizer que não sabe fica registrado como algo para estudar depois e nunca conta como erro. Um chute certo deixaria seu histórico menos fiel.

certoerradonão sei
Alternativas erradas que parecem certas

As alternativas erradas representam erros que alguém aprendendo poderia cometer de verdade, e cada uma está ligada ao mal-entendido que leva até ela. Quando você escolhe uma, o hibi explica esse mal-entendido e mostra a resposta certa.

Sem espiar

A resposta certa só aparece depois que você responde. Quem confere a resposta é o código do hibi, então não dá para convencer o modelo a marcar uma resposta como certa.

5.6 · docs

Objetivos

Conte ao hibi onde você quer chegar: aprender uma linguagem, se preparar para entrevistas, construir um projeto. Ele guarda isso e retoma quando você volta (“Da última vez, você estava em: aprender Go.”).

Quando você pergunta o que fazer agora, o hibi sugere dois ou três assuntos com base no seu histórico:

  • assuntos que você nunca viu
  • assuntos que você já tentou, mas ainda não domina
  • assuntos que você disse que sabe, mas nunca mostrou
  • assuntos que você não pratica há umas três semanas

Essa lista é refeita a cada sessão. Não existe um cronograma fixo, porque um plano salvo ficaria desatualizado assim que você aprendesse alguma coisa nova.

Se você já sabe alguma coisa que ele sugeriu, é só falar. O hibi acredita em você e segue em frente sem te testar.

5.7 · docs

O que o hibi sabe sobre você

O hibi mantém dois registros.

O históricoevidence.jsonl

Tudo o que aconteceu, uma entrada por vez. As entradas nunca são editadas nem apagadas, só recebem novas entradas.

12 de setembro, goroutines, testes rodaram e passaram, depois de uma dica
A estimativaprofile.json

O quanto o hibi acha que você sabe de cada assunto. Essa estimativa é calculada a partir do histórico. Quando a fórmula melhora, todo o histórico pode ser recalculado com ela.

0,62 em goroutines, com confiança de 0,40

De onde vem cada evidência

Um teste que passou é um fato. Acertar uma pergunta de quiz é uma observação. O modelo achar que seu código está certo é uma opinião. Cada entrada do histórico diz de que tipo é, e isso define quanto ela vale.

FontePesoExemplo
Teste executado1.0Seus testes rodaram e passaram ou falharam
Resposta de quiz0.8Você respondeu uma pergunta de múltipla escolha
Comportamento0.5Algo que o hibi observou no seu projeto
Avaliação do modelo0.35O modelo leu seu código e achou que estava certo
Sua palavra0.15Você disse que sabe
Ações do hibi0O hibi explicou algo ou deu uma dica

Além disso, resolver sozinho vale o peso inteiro. Resolver depois de ver a correção vale mais ou menos um terço, e pedir a resposta diretamente corta esse valor pela metade de novo.

Sozinhointeiro
Depois de ver a correção≈ ⅓
Pedindo a resposta≈ ⅙

Confiança

Toda estimativa vem acompanhada do nível de confiança do hibi nela. Uma nota baixa com confiança baixa só quer dizer que o hibi ainda sabe pouco sobre você naquele assunto. Ele nunca mostra uma nota sem a confiança junto.

❯ /profile
mastery
goroutines: 0.62 (confidence 0.40, 3 direct)

O que o hibi percebeu

Com evidência suficiente, o hibi começa a perceber padrões no seu jeito de aprender. O /signals lista esses padrões e o quanto ele confia em cada um:

❯ /signals
observed tendencies
self-assessment = tends to overestimate (55%, 12 events)
hint-depth = usually unblocks at the first hint (50%, 10 events)
these are guesses — declare the opposite with /prefs to override one

A primeira linha vem da comparação entre o que você previu antes de rodar os testes e o resultado: na maioria das vezes, você achava que ia passar, mas não passava.

São palpites e só aparecem depois de pelo menos oito eventos parecidos. O que você define em /prefs sempre vale mais do que um palpite do hibi.

Assuntos

Os assuntos formam uma árvore que cresce conforme você aprende. “linked list”, “linked lists” e “lista encadeada” contam como um único assunto.

linked listlinked listslista encadeadaum assunto só

O progresso em um assunto específico também conta, com peso menor, para os assuntos mais amplos acima dele. Resolver algo sobre goroutines também soma um pouco em concorrência.

5.8 · docs

Discordando de uma nota

Se o hibi diz que sua nota em ponteiros é 0,2 e você acha que está errado, diga isso. A nota não muda só porque você pediu. O hibi propõe um quiz ou um exercício sobre ponteiros, e é o resultado que muda a nota.

Discordar não custa nada e nunca abaixa uma nota por si só. Se você contestar o mesmo assunto de novo, o próximo resultado vale um pouco menos, mas o hibi aceita a contestação e propõe outro quiz.

5.9 · docs

Desfazer e esquecer

/undo

Desfaz a última troca de mensagens. O que ela registrou sobre você deixa de contar, mas a conversa continua na tela.

/forget <assunto>

Faz o mesmo com tudo o que foi registrado sobre um assunto.

Os dois funcionam adicionando ao histórico uma anotação que cancela as entradas anteriores. Assim, o histórico continua completo e ainda pode ser recalculado.

/forget all forget

Esse comando é a exceção. Ele apaga todo o seu histórico de aprendizado, sem volta. Repetir a palavra serve como confirmação.

5.10 · docs

Configurações

Para mudar alguma coisa, use /prefs <nome> <valor>.

ConfiguraçãoValoresPadrão
name
qualquer texto
o que você informou na primeira vez
language
um código de idioma, como pt-BR
detectado no seu computador
theoryDepth
minimal, balanced, thorough
balanced
exerciseSize
small, medium, large
medium
unsolicitedHints
never, when-stuck, proactive
when-stuck
explanationStyle
concise, detailed
concise

Não existe configuração para o quanto o hibi segura a resposta. Dá para mudar o jeito como ele ensina, mas as dicas em etapas continuam valendo.

5.11 · docs

Onde ficam seus dados

Tudo fica no seu computador, dentro de uma pasta chamada .hibi na sua pasta de usuário:

~/.hibi/
credentials.json sua chave de API, que só você consegue ler
profile.json suas preferências, objetivo e notas
concepts.json sua árvore de assuntos
evidence.jsonl o histórico de tudo o que aconteceu
repos/<id>/
repo.json o que o hibi aprendeu sobre esse projeto
session.json o exercício atual, as dicas e as perguntas

Suas notas, assuntos e histórico valem para todos os projetos. A sessão e os detalhes de cada projeto ficam separados.

A única coisa que sai do seu computador é a conversa enviada para a empresa de IA que você escolheu, usando a sua própria chave.

Para começar do zero, apague esta pasta:

bash
rm -rf ~/.hibi
06 · por dentro

Como funciona por dentro

hibi clio terminal, que só exibe e envia
socket
painel no editorplanejado
socket
processo em segundo planoum por projeto · guarda a sessão
coreo tutor · sem disco, sem rede
~/.hibi/sessão, assuntos, histórico
empresa de IAsua chave · a única conexão externa

O hibi não tem um modelo de IA próprio. Ele conduz a conversa com o modelo que você escolheu: define as regras de ensino, as ferramentas que ele pode usar e como o seu progresso é registrado.

Cada projeto tem um pequeno processo rodando em segundo plano que guarda a sessão. A interface do terminal é um cliente simples que conversa com ele por um socket local. No futuro, isso também vai permitir que um painel no editor entre na mesma sessão.

O hibi não depende do texto da conversa para saber onde você está. O exercício atual, a etapa da dica e o seu histórico ficam salvos em disco e são carregados de novo a cada mensagem. Você pode limpar a conversa no meio de um exercício e o hibi ainda sabe onde você parou.

O código é TypeScript rodando no Bun, dividido em três pacotes. O core é o tutor em si e não acessa disco nem rede diretamente; tudo passa por interfaces pequenas. O daemon é o processo em segundo plano, e o cli é a interface do terminal.

07 · situação

Situação do projeto

O hibi está na versão 0.1 e ainda é experimental. Mesmo assim, tudo o que aparece nesta página já funciona.

ainda não existe0.1 · experimental
Outras interfacesPor enquanto, só existe a interface de terminal. O processo em segundo plano já está preparado para um painel no editor, mas esse painel ainda não existe.
Saídas em linguagem simplesO que /profile, /state e /signals mostram ainda está em inglês e usa alguns termos técnicos.

Os números que decidem quando uma dica sobe de etapa (duas tentativas, oito minutos, três minutos antes da primeira dica) e com que frequência o hibi faz perguntas são estimativas iniciais. Ainda não foram testados com ninguém além do autor. Se o hibi ajudar cedo ou tarde demais, abra uma issue e conte em qual exercício isso aconteceu.