아담: C 언어로 제작된 임베디드 크로스 플랫폼 AI 에이전트 라이브러리

Adam은 C로 작성된 내장형 AI 에이전트 라이브러리입니다. 단일 #include로 툴 호출, 메모리, 세션, 음성, 스트리밍, 구조화된 출력 등 완전한 에이전트 루프를 제공합니다. 동일한 인터페이스를 통해 클라우드 API(Anthropic, OpenAI, Google Gemini, Groq, Together, xAI)와 llama.cpp를 통한 로컬 모델을 지원합니다. macOS, Linux, Windows, iOS, Android, WASM에서 컴파일됩니다.
빠른 시작
#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, "프랑스의 수도는 어디인가요?");
printf("%s\n", r.final_response); // "프랑스의 수도는 파리입니다."
adam_run_result_free(&r);
adam_history_destroy(h);
adam_settings_destroy(s);
adam_cleanup();
}
make deps # llama.cpp + whisper.cpp 빌드
make all # libadam.a 빌드
make test # 161개 테스트 실행 (ASan + UBSan)
주요 기능
- 에이전트 루프 – 최종 응답까지 자동 반복되는 툴 호출
- 세 가지 제공자 – Anthropic, OpenAI, Google Gemini + 호환 API + llama.cpp를 통한 로컬 GGUF
- 로컬 비전 – llama.cpp + mmproj(Gemma 3, LLaVA 등)를 통한 멀티모달 이미지 이해
- 이미지 생성 – Gemini 이미지 모델을 통한 네이티브 이미지 출력
- 데이터베이스 확장 – Adam을 SQL 함수로 내장하는 SQLite 및 PostgreSQL 확장
- 13가지 내장 툴 – 파일 I/O, 셸, 계산기, SQL, 웹 가져오기/검색, HTTP POST, 메모리, 연구, 멀티 에이전트
- 장기 메모리 – SQLite를 통한 하이브리드 BM25 + 벡터 검색(sqlite-memory + sqlite-vector)
- 세션 영속성 – UUIDv7 키를 사용한 대화 저장/불러오기
- 텔레그램 봇 – 텍스트, 음성, 이미지, 툴, 메모리를 갖춘 완전한 기능
- 음성 – STT(Whisper 클라우드/로컬) + TTS(클라우드/시스템) + 전체 오디오 파이프라인
- 스트리밍 – 콜백을 통한 실시간 토큰 전달
- 구조화된 출력 – 검증 및 재시도가 포함된
adam_run_json() - 진화 루프 – 자기 개선 에이전트: 반복, 점수 매기기, 전략 개선
- 연구 모드 – 자율적 다중 반복 정보 수집 및 보고서 종합
- 멀티 에이전트 – 에이전트 A가 독립적인 설정/툴을 가진 에이전트 B를 툴로 호출
- 가드레일 – 전송 전 및 수신 후 검증 콜백
- 응답 캐시 – 모델 + 메시지 기록을 키로 하는 LRU 해시 테이블
- 기록 관리 – 복제, 요약(LLM 기반 압축), 토큰 추정
- 스레드 풀 – 작업 큐를 통한 동시 에이전트 실행
- 파일 시스템 샌드박스 – 명시적으로 허용된 디렉터리로 제한된 툴
- 아레나 할당자 – 자동 정리를 통한 반복당 제로 누수 메모리
빌드 대상
make deps # llama.cpp, whisper.cpp 빌드 (Linux에서는 mbedtls/curl 추가)
make all # libadam.a 빌드
make test # 단위 테스트 빌드 및 실행 (ASan + UBSan)
make chat # 대화형 텍스트 채팅 (클라우드 API)
make chat GGUF=models/model.gguf # 대화형 텍스트 채팅 (로컬)
make vision GGUF=models/model.gguf MMPROJ=models/mmproj.gguf # 로컬 비전 테스트
make talk # 음성 에이전트 (클라우드)
make talk LOCAL=1 # 음성 에이전트 (완전 로컬)
make memory # 메모리 시스템 테스트
make clean # 모든 빌드 아티팩트 제거
전체 API 문서는 API.md에서 모든 함수, 타입, 콜백을 확인할 수 있습니다.
📖 전체 소스 읽기: HN AI Agents
👀 See Also

RiserFlow MCP 서버, OpenClaw에 이커머스 기능 추가
RiserFlow라는 오픈소스 MCP 서버는 OpenClaw가 제품을 의미적으로 검색하고, 장바구니를 관리하며, 상점 관리 시스템에 실제로 반영되는 주문을 할 수 있도록 합니다. 현재 Bitrix를 지원하며, 다른 플랫폼을 위한 어댑터 패턴을 갖추고 있습니다.

자율 코딩 워크플로우가 클로드 코드를 활용해 하룻밤 사이에 16만 3천 줄의 코드를 배포했습니다
한 개발자가 자율적인 워크플로우를 구축하여 하룻밤 사이에 72개의 작업을 완료했으며, 163,643줄의 코드와 6,400개 이상의 통과 테스트를 생성했으며, 첫 시도 성공률은 85%였습니다.
Wakehook: 실제 기상 시간에 OpenClaw 아침 자동화 트리거, Cron이 아님
Wakehook는 구글 헬스/Fitbit 수면 데이터를 읽고 실제로 일어났을 때 OpenClaw에 user.awake 이벤트를 POST합니다. 자체 호스팅 가능, 폴링 방식, 공개 URL 불필요.
Terry Tao, LLM 에이전트를 사용해 24개의 Java 애플릿을 JavaScript로 포팅하다 — 원본 코드에서 버그 발견
테렌스 타오가 LLM 코딩 에이전트를 사용하여 1999년에 만든 자바 애플릿 24개를 단 몇 시간 만에 자바스크립트로 포팅했습니다. 에이전트는 원본 코드에서 버그 2개를 찾아냈고, 드래그 처리 관련 사소한 버그 하나만 새로 만들었습니다.