Adam: Uma Biblioteca de Agente de IA Multiplataforma Incorporável em C

Adam é uma biblioteca de agente de IA incorporável escrita em C. Ela oferece um loop completo de agente — chamada de ferramentas, memória, sessões, voz, streaming, saída estruturada — como um único #include. Suporta APIs de nuvem (Anthropic, OpenAI, Google Gemini, Groq, Together, xAI) e modelos locais via llama.cpp através da mesma interface. Compila em macOS, Linux, Windows, iOS, Android e WASM.
Início Rápido
#include "adam.h"
int main(void) {
adam_init();
adam_settings_t *s = adam_create_settings();
adam_settings_set_provider(s, ADAM_API_ANTHROPIC, getenv("ANTHROPIC_API_KEY"), "claude-sonnet-4-20250514");
adam_history_t *h = adam_history_create();
adam_run_result_t r = adam_run(s, h, "Qual é a capital da França?");
printf("%s\n", r.final_response); // "A capital da França é Paris."
adam_run_result_free(&r);
adam_history_destroy(h);
adam_settings_destroy(s);
adam_cleanup();
}
make deps # compila llama.cpp + whisper.cpp
make all # compila libadam.a
make test # executa 161 testes (ASan + UBSan)
Principais Recursos
- Loop de agente – chamada de ferramentas com iteração automática até a resposta final
- Três provedores – Anthropic, OpenAI, Google Gemini + qualquer API compatível + GGUF local via llama.cpp
- Visão local – compreensão multimodal de imagens via llama.cpp + mmproj (Gemma 3, LLaVA, etc.)
- Geração de imagens – saída nativa de imagem via modelos de imagem Gemini
- Extensões de banco de dados – extensões SQLite e PostgreSQL que incorporam Adam como funções SQL
- 13 ferramentas embutidas – E/S de arquivo, shell, calculadora, SQL, busca/obtenção na web, POST HTTP, memória, pesquisa, multi-agente
- Memória de longo prazo – busca híbrida BM25 + vetorial via SQLite (sqlite-memory + sqlite-vector)
- Persistência de sessão – salvar/carregar conversas com chaves UUIDv7
- Bot do Telegram – completo com texto, voz, imagens, ferramentas e memória
- Voz – STT (Whisper nuvem/local) + TTS (nuvem/sistema) + pipeline de áudio completo
- Streaming – entrega de tokens em tempo real via callback
- Saída estruturada –
adam_run_json()com validação e retentativa - Loop de evolução – agente auto-melhorável: iterar, pontuar, refinar estratégia
- Modo de pesquisa – coleta autônoma de informações com múltiplas iterações e síntese de relatório
- Multi-agente – Agente A invoca Agente B como ferramenta, com configurações/ferramentas independentes
- Guardrails – callbacks de validação pré-envio e pós-recebimento
- Cache de resposta – tabela hash LRU indexada por modelo + histórico de mensagens
- Gerenciamento de histórico – clonar, resumir (compressão baseada em LLM), estimativa de tokens
- Pool de threads – execução concorrente de agentes com fila de tarefas
- Sandbox de sistema de arquivos – ferramentas restritas a diretórios explicitamente permitidos
- Alocador Arena – memória sem vazamento por iteração com limpeza automática
Alvos de Compilação
make deps # Compila llama.cpp, whisper.cpp (+ mbedtls/curl no Linux)
make all # Compila libadam.a
make test # Compila e executa testes unitários (ASan + UBSan)
make chat # Chat de texto interativo (API de nuvem)
make chat GGUF=models/model.gguf # Chat de texto interativo (local)
make vision GGUF=models/model.gguf MMPROJ=models/mmproj.gguf # Teste de visão local
make talk # Agente de voz (nuvem)
make talk LOCAL=1 # Agente de voz (totalmente local)
make memory # Testes do sistema de memória
make clean # Remove todos os artefatos de compilação
A documentação completa da API está disponível em API.md com todas as funções, tipos e callbacks.
📖 Leia o código-fonte completo: HN AI Agents
👀 See Also

O conjunto MCP de código aberto melhora a qualidade da geração de código do Claude em 15-20%.
Um conjunto MCP de código aberto composto por três servidores locais e uma habilidade de prompt aborda o problema do 'token ruim' na geração de código por IA, com um cliente relatando uma melhoria de 15-20% na qualidade para o Claude Code.

Markdown como Protocolo para Interface de Agente com Execução em Fluxo Contínuo
Um protótipo usa Markdown como um protocolo unificado para agentes de IA transmitirem texto, código executável e dados em uma única resposta. Ele apresenta execução em streaming, onde o código é executado instrução por instrução conforme chega, e um primitivo mount() para criar interfaces React com fluxo de dados entre cliente, servidor e LLM.

LORE.md: Um Padrão Aberto para Extrair Conhecimento Estruturado de Conversas com IA
LORE.md é um padrão aberto para extrair conhecimento duradouro de conversas com IA em um formato estruturado. Ele captura decisões com justificativa, insights, padrões, questões em aberto e próximos passos, com tudo interligado entre sessões.

Bernstein: Um orquestrador semelhante ao Kubernetes para agentes de codificação de IA com verificação e políticas de modelo
Bernstein é um orquestrador para agentes de codificação de IA que inclui verificação independente das saídas dos agentes, controles de política de modelo, 13 adaptadores de agentes e agendamento determinístico baseado em Python. O projeto possui mais de 5000 testes e recursos como disjuntores, detecção de anomalias de custo e varredura de PII.