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

推荐订阅源

云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
博客园 - 三生石上(FineUI控件)
T
The Blog of Author Tim Ferriss
宝玉的分享
宝玉的分享
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
V
Visual Studio Blog
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
MongoDB | Blog
MongoDB | Blog
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
Microsoft Azure Blog
Microsoft Azure Blog
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
L
LangChain Blog
Martin Fowler
Martin Fowler
GbyAI
GbyAI
博客园 - 司徒正美

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - SynapCores/synapcores-agent: Real, framework-fre...
SQLv2 · 2026-05-26 · via Hacker News: Show HN

A real customer-support agent where the database is the memory. Watch the chat on the left; watch the engine remember, retrieve, and route on the right.

SynapCores chat widget with a live Brain debug sidebar — gpt-4o demo

A real, framework-free AI agent whose brain is SynapCores.

Most "AI agent" stacks bolt together a vector DB, a graph DB, a cache, an LLM, and a framework (LangChain, etc.) with a lot of glue. This agent does none of that. It is a thin, dependency-free Python loop where SynapCores is the entire brain — memory, retrieval (RAG), semantic tool routing, state, and text generation — reached over plain HTTP.

The point is to be agent-agnostic by being framework-free. There is no LangChain dependency. The agent is a few hundred lines of standard-library Python you can read top to bottom and fork in an afternoon. The same brain is reachable from any framework — or from Claude Code — over MCP.


The agent loop

  input
    → recall memory (vector)     what has this user told us before?
    → retrieve knowledge (RAG)   ground the answer in the knowledge base
    → semantic tool-route        pick the right tool by meaning, not keywords
    → act                        run the chosen tool to gather context
    → GENERATE reply             grounded generation with the bundled LLM
    → write memory back          persist the turn for next time

Every arrow is a real SynapCores callEMBED, COSINE_SIMILARITY, GENERATE, and (for the graph-memory variant) Cypher MERGE / MATCH. No local embedding model, no separate vector index, no glue service.

Each step is also a certified recipe — "this is how the brain works":

Loop step What it does Recipe
recall memory EMBED the query, rank past turns by COSINE_SIMILARITY give-any-agent-long-term-memory
retrieve knowledge semantic search over a knowledge base rag-ground-any-agent
semantic tool-route embed tool descriptions + query, pick the closest semantic-tool-routing
episodic recall recall how similar past tickets were resolved agentic-memory-graph
act + GENERATE + persist the full support-agent composition build-a-customer-support-agent

The agents recipe cluster lives at https://synapcores.com/recipes/agents/.


The persona: a customer-support agent

A working support agent with three real tools, each backed by a verified SynapCores surface:

  1. search_knowledge_base — semantic search over help articles (RAG).
  2. find_similar_tickets — recall how similar past incidents were resolved.
  3. draft_reply — grounded generation when nothing else is a strong match.

Conversation memory persists across runs — ask a follow-up tomorrow and the agent recalls today's conversation by meaning.


Quick start

1. Run SynapCores locally

docker run -d --name synapcores -p 8080:8080 \
  -e AIDB_ACCEPT_LICENSE=1 \
  -e AIDB_JWT_SECRET="$(openssl rand -base64 32)" \
  -v synapcores-data:/var/lib/synapcores \
  ghcr.io/synapcores/community:latest

# Grab the one-time admin credentials printed on first boot:
docker logs synapcores | grep -A 12 FIRST-BOOT

The Community image ships the embedded LLM (a small GGUF model) and embeddings out of the box — no external API key required. The first EMBED() call lazily downloads the MiniLM embedding model (~90 MB) into the container's Hugging Face cache; subsequent calls are offline.

Cold-start timeout: the bundled GGUF model loads lazily, so the first GENERATE call on CPU can take ~30 s. The gateway's default request_timeout is 30 s, which the cold load can just exceed. If your first replies time out, raise it in /etc/synapcores/gateway.toml:

request_timeout = 300            # [server]
default_timeout_ms = 300000      # [query]

then restart the container. After the model is warm, GENERATE is sub-second. (To avoid local LLM entirely, point the gateway at OpenAI/Anthropic/Ollama — see Bring your own LLM below.)

2. Configure the agent

git clone <this repo> && cd synapcores-agent
cp .env.example .env
# edit .env: set SYNAPCORES_URL, SYNAPCORES_USERNAME, SYNAPCORES_PASSWORD
pip install -e .          # or: pip install -e ".[dev]" for tests

3. Run it

# Seed a demo knowledge base + past tickets, then chat interactively:
python -m synapcores_agent --seed --trace

# Ask one question and exit:
python -m synapcores_agent --ask "I can't log in, it says my password is wrong."

# Watch the full loop (recall / RAG / route) per turn:
python -m synapcores_agent --trace

# Reset the agent's tables:
python -m synapcores_agent --reset

Or run the scripted multi-turn demo:

python examples/demo_session.py

What an actual session looks like

you> I can't log in, it keeps saying my password is wrong.
   recall=0 kb=2 route=[find_similar_tickets=0.53, search_knowledge_base=0.05] -> find_similar_tickets
agent> I understand you're experiencing difficulty with your login... Please
       check your password reset link in your inbox and try again...

you> Also, how do I get a refund on my annual plan?
   recall=0 kb=2 route=[search_knowledge_base=0.30, find_similar_tickets=0.05] -> search_knowledge_base
agent> Since your annual plan is prorated, you should contact support to
       discuss your options...

you> Remind me what we were troubleshooting earlier with my account?
   recall=4 kb=3 route=[find_similar_tickets=0.56] -> find_similar_tickets
agent> We were investigating an issue with your login password...

Note the last turn: recall=4 — the agent pulled the earlier login conversation out of long-term memory by meaning and grounded its answer on it. That memory survives process restarts because it lives in SynapCores.


How the brain works (the verified surfaces)

Everything routes through one SQL/Cypher endpointPOST /v1/query/execute — plus POST /v1/auth/login to mint a JWT.

Memory recall (brain.py):

SELECT role, content,
       COSINE_SIMILARITY(embedding, EMBED('what was my order number')) AS score
FROM support_agent_memory
WHERE user_id = 'demo-user'
ORDER BY score DESC LIMIT 4;

RAG retrieval:

SELECT title, body,
       COSINE_SIMILARITY(embedding, EMBED('I forgot my password')) AS score
FROM support_agent_kb
ORDER BY score DESC LIMIT 3;

Semantic tool routing (router.py) — one COSINE_SIMILARITY per tool description in a single row, ranked in Python:

SELECT COSINE_SIMILARITY(EMBED('<tool 1 description>'), EMBED('<user msg>')) AS s0,
       COSINE_SIMILARITY(EMBED('<tool 2 description>'), EMBED('<user msg>')) AS s1,
       ...;

Grounded generation — the bundled LLM, sourced from a scan (not a bare literal):

SELECT GENERATE(p) AS reply FROM (SELECT '<grounded prompt>' AS p) r;

Two surface notes worth knowing

  • String literals use single quotes. A double-quoted token in SynapCores SQL is an identifier (column name), not a string. All user text is escaped via sql_quote() and single-quoted. This is the #1 footgun when hand-building queries.
  • Source AI-function inputs from a FROM (SELECT … AS col) r scan. A bare literal works for GENERATE, but the same pattern is required for AUTOML.PREDICT (a bare literal there trips a duplicate 'value' planner error). The client uses the scan form uniformly so the pattern is consistent.

Plug into any framework — or Claude Code — via MCP

The agent loop above uses the REST client for clarity, but SynapCores also speaks the Model Context Protocol (MCP), so any MCP client can use the same brain with no Python at all.

The gateway exposes MCP as JSON-RPC 2.0:

POST /v1/mcp          — single JSON-RPC request
POST /v1/mcp/batch    — batch
GET  /v1/mcp/info     — server info

with these tools (the original SQL-mediated six, plus AI primitives added in later releases):

query, execute, list_tables, describe_table, validate_query, sql_manual — and train_model / predict / list_models / describe_model, semantic_search, embed_text, graph_query, generate_text.

Claude Code / Claude Desktop

Claude clients speak MCP over stdio, so the engine ships a tiny stdio→HTTP bridge (scripts/integrations/synapcores-mcp-bridge.js). One command:

claude mcp add synapcores \
  --transport stdio \
  --env SYNAPCORES_URL=http://127.0.0.1:8080 \
  --env SYNAPCORES_USERNAME=admin \
  --env SYNAPCORES_PASSWORD='your-admin-password' \
  -- node ~/.synapcores/synapcores-mcp-bridge.js

Now Claude Code can query/execute/semantic_search/graph_query directly — SynapCores becomes Claude's memory + RAG + graph brain. A future engine release adds native SSE / streamable-HTTP transports so clients connect to the gateway URL directly (ws://<host>/mcp?token=<jwt> style) without the bridge.

From your own code

This repo includes a tiny MCP client (mcp.py):

from synapcores_agent.mcp import MCPClient

mcp = MCPClient("http://127.0.0.1:8080", token=jwt)
mcp.initialize()
print(mcp.list_tools())
print(mcp.query("SELECT 1 + 1 AS x"))

From LangChain / other frameworks

The brain methods are framework-neutral. Wrap Brain.search_kb, Brain.find_similar_tickets, and Brain.recall_memory as tools in your framework of choice, or expose the MCP tools to any MCP-aware agent runtime. The SynapCores side is identical — the framework is just a thin shell around it.


Bring your own LLM

By default the agent uses the bundled GENERATE (zero external key). To use an external provider instead, wire it into the gateway's /etc/synapcores/gateway.toml:

[query.ai_service]
provider = "openai"          # or "anthropic" / "ollama"
api_key  = "${OPENAI_API_KEY}"
model    = "gpt-4o-mini"

(set OPENAI_API_KEY / ANTHROPIC_API_KEY on the container/service env, restart), and the agent's GENERATE calls transparently use it. No agent code changes.


Project layout

src/synapcores_agent/
  client.py        # dependency-free REST client (login, execute, generate)
  config.py        # .env / env loading
  brain.py         # SynapCores as memory + RAG + episodic recall + generation
  router.py        # semantic tool routing (EMBED + COSINE_SIMILARITY)
  agent.py         # the framework-free agent loop
  tools/           # the three support tools
  mcp.py           # optional MCP (JSON-RPC) client — the agnostic path
  seed.py          # demo KB + ticket corpus
  __main__.py      # `python -m synapcores_agent` CLI / REPL
examples/
  demo_session.py  # scripted multi-turn end-to-end session
tests/
  test_unit.py     # pure-Python tests (no gateway needed)
  test_live.py     # end-to-end against a real gateway (auto-skips if absent)

Tests

pip install -e ".[dev]"
pytest tests/test_unit.py -q                       # always runs
SYNAPCORES_URL=http://127.0.0.1:8080 \
SYNAPCORES_USERNAME=admin SYNAPCORES_PASSWORD=... \
  pytest tests/test_live.py -v                      # needs a live gateway

The live suite verifies the real surfaces: EMBED + COSINE_SIMILARITY semantic ranking, KB retrieval, similar-ticket recall, memory persistence, semantic routing, and a full grounded turn.


License

MIT — see LICENSE.

Built on SynapCores. The agent patterns are the certified recipes at https://synapcores.com/recipes/agents/.