惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
博客园_首页
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
IT之家
IT之家
The Cloudflare Blog
V
Visual Studio Blog
罗磊的独立博客
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
Hugging Face - Blog
Hugging Face - Blog
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
D
Docker
Last Week in AI
Last Week in AI
B
Blog RSS Feed
C
Check Point Blog
J
Java Code Geeks
The GitHub Blog
The GitHub Blog
有赞技术团队
有赞技术团队
博客园 - 聂微东
MongoDB | Blog
MongoDB | Blog
雷峰网
雷峰网

Hacker News: Front Page

SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Introducing Claude Opus 4.7 Qwen Studio The Future of Everything is Lies, I Guess: Where Do We Go From Here? GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Ancient DNA reveals pervasive directional selection across West Eurasia [pdf] AI cybersecurity is not proof of work Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. A Better Ludum Dare; Or, How to Ruin a Legacy GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Unexpected €54k billing spike in 13 hours: Firebase browser key without API restrictions used for Gemini requests Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent Codex Hacked a Samsung TV
GitHub - sqliteai/adam: An embeddable cross-platform AI a...
marcobambini · 2026-05-06 · via Hacker News: Front Page

Embeddable AI agent library in C.

Adam gives you a complete agent loop: tool calling, memory, sessions, voice, streaming, structured output, in one #include. Works with cloud APIs (Anthropic, OpenAI, Google Gemini, Groq, Together, xAI) and local models (llama.cpp) through the same interface. Compiles on macOS, Linux, Windows, iOS, Android, and WASM.

Quick Start

#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, "What is the capital of France?");

    printf("%s\n", r.final_response);  // "The capital of France is Paris."

    adam_run_result_free(&r);
    adam_history_destroy(h);
    adam_settings_destroy(s);
    adam_cleanup();
}
make deps    # build llama.cpp + whisper.cpp
make all     # build libadam.a
make test    # run 161 tests (ASan + UBSan)

Features

Feature Description
Agent loop Tool calling with automatic iteration until final response
Three providers Anthropic, OpenAI, Google Gemini + any compatible API + local GGUF via llama.cpp
Local vision Multimodal image understanding via llama.cpp + mmproj (Gemma 3, LLaVA, etc.)
Image generation Native image output via Gemini image models (gemini-3.1-flash-image-preview)
Database extensions SQLite and PostgreSQL extensions — embed Adam as SQL functions that query the same database
13 built-in tools File I/O, shell, calculator, SQL, web fetch/search, HTTP POST, memory, research, multi-agent
Long-term memory Hybrid BM25 + vector search via SQLite (sqlite-memory + sqlite-vector)
Session persistence Save/load conversations with UUIDv7 keys
Telegram bot Full-featured Telegram integration with text, voice, images, tools, and memory
Voice STT (Whisper cloud/local) + TTS (cloud/system) + full audio pipeline
Streaming Real-time token delivery via callback
Structured output adam_run_json() with validation and retry
Evolution loop Self-improving agent: iterate, score, refine strategy
Research mode Autonomous multi-iteration information gathering with report synthesis
Multi-agent Agent A invokes Agent B as a tool, with independent settings/tools
Guardrails Pre-send and post-receive validation callbacks
Response cache LRU hash table keyed on model + message history
History management Clone, summarize (LLM-based compression), token estimation
Thread pool Concurrent agent execution with job queue
Filesystem sandbox Tools restricted to explicitly allowed directories
Cross-platform macOS, Linux, Windows, iOS, Android, WASM (Emscripten)
Arena allocator Zero-leak per-iteration memory with automatic cleanup

Build

make deps          # Build llama.cpp, whisper.cpp (+ mbedtls/curl on Linux)
make all           # Build libadam.a
make test          # Build & run unit tests (ASan + UBSan)
make chat          # Interactive text chat (cloud API)
make chat GGUF=models/model.gguf  # Interactive text chat (local)
make vision GGUF=models/model.gguf MMPROJ=models/mmproj.gguf  # Local vision test
make talk          # Voice agent (cloud)
make talk LOCAL=1  # Voice agent (fully local)
make memory        # Memory system tests
make clean         # Remove all build artifacts

API Reference

Full API documentation with every function, type, and callback: API.md

Examples

adam_settings_t *s = adam_create_settings();
adam_settings_set_provider(s, ADAM_API_ANTHROPIC, api_key, "claude-sonnet-4-20250514");

adam_history_t *h = adam_history_create();
adam_run_result_t r = adam_run(s, h, "Explain quantum entanglement simply.");
printf("%s\n", r.final_response);
adam_run_result_free(&r);

// Continue the conversation — history carries forward
r = adam_run(s, h, "Can you give an analogy?");
printf("%s\n", r.final_response);
adam_run_result_free(&r);

adam_history_destroy(h);
adam_settings_destroy(s);

More examples are available in the examples/ directory:

Example Description
simple-conversation Multi-turn chat with a cloud API
tool-calling Register a custom tool and let the agent call it
local-model Run a local GGUF model via llama.cpp
local-vision Image understanding with a local vision model + mmproj
google-gemini Use Google Gemini models
image-generation Generate images with Gemini
sqlite-query Natural language queries on any SQLite database
structured-json Get validated JSON output with retry
memory Long-term memory with hybrid BM25 + vector search
sessions Save and restore conversations
streaming Real-time token streaming via callback
voice Speech-to-text + agent + text-to-speech pipeline
multi-agent Agent A delegates to Agent B as a tool
evolution Self-improving agent with scoring loop
research Autonomous multi-iteration research with report
filesystem-sandbox File and shell tools restricted to allowed directories
guardrails Pre-send and post-receive validation
response-cache LRU cache for repeated queries
thread-pool Concurrent agent execution
telegram Telegram bot with text, images, tools, and memory
wasm-chat Browser-based chat UI via WebAssembly
full-agent All features combined

Database Extensions

Adam can be embedded directly inside SQLite and PostgreSQL as a SQL extension. The agent can query the same database it's loaded in — ask questions in natural language, get answers from your data.

-- SQLite
.load adam

-- PostgreSQL
CREATE EXTENSION adam;

-- Configure (both)
SELECT adam_config('provider', 'anthropic');
SELECT adam_config('api_key', 'sk-ant-...');

-- Ask about your data — the agent reads the schema and runs SQL
SELECT adam_ask('How many users signed up last month?');
-- → "47 users signed up last month."

-- Generate SQL without executing
SELECT adam_sql('top 5 products by revenue');
-- → "SELECT p.name, SUM(oi.quantity * oi.price) AS revenue FROM ..."
Function Description
adam_config(key, val) Configure provider, API key, model (persisted)
adam(msg) Stateless one-shot chat
adam_ask(msg) SQL-aware agent — reads schema, queries data, multi-turn
adam_sql(question) Generate SQL from natural language
adam_create_session() Create session (auto-created on first adam_ask)
adam_get_session() Get current session UUID
adam_clear_session() Clear session and history

See extensions/sqlite/ and extensions/postgres/ for build instructions.

Architecture

adam_run() loop:
  build system prompt (identity + instructions + bootstrap files + memory + datetime)
  -> check guardrails (on_before_send)
  -> check cache
  -> dispatch LLM (mock | local/llama.cpp | remote/HTTP)
  -> check guardrails (on_after_receive)
  -> if tool_calls: execute tools -> append results -> loop
  -> if text: return final response -> auto-save session -> extract memory

Platform abstraction: macOS uses NSURLSession, Linux uses libcurl+mbedtls, WASM uses embedder-provided http_fn callback.

Memory management: Arena allocators for per-iteration zero-copy work. malloc/free for long-lived structures. Arena-allocated strings are only valid within the current iteration.

Feature Gates

Define before #include "adam.h" to disable features:

Gate Effect
ADAM_NO_CURL No libcurl (must provide http_fn callback)
ADAM_NO_LOCAL No llama.cpp (no local inference)
ADAM_NO_PTHREADS No thread pool, no voice thread
ADAM_NO_SQLITE No SQLite (no memory, sessions, or SQL tool)
ADAM_NO_VOICE No voice subsystem
ADAM_NO_FILESYSTEM No file_read/file_write/list_directory tools
ADAM_NO_SHELL No shell_exec tool

Dependencies

All vendored as git submodules in modules/:

Module Purpose
llama.cpp Local LLM inference + GGML compute
whisper.cpp Local speech-to-text (shares ggml via symlink)
miniaudio Cross-platform audio I/O
sqlite Amalgamation build
sqlite-memory Hybrid BM25 + vector knowledge store
sqlite-vector Vector similarity search
mbedtls TLS (Linux only)
curl HTTP (Linux only)

macOS uses system frameworks (Foundation, Security, Metal, AVFoundation, Accelerate) instead of curl/mbedtls.

License

MIT