spark-mind

Self-hosted автономный агент (MVP). Концепт позаимствован из Animus (Craigtut): heartbeat, 4 слоя памяти, persona в 8 слоёв. Движок — Spark X2.5-4B (локально, self-hosted).

Почему Spark X2.5-4B

  • Локальный inference (llama.cpp / Ollama), никаких облачных ключей
  • Нативная поддержка agent-инструментов (tool-calling) — саб-агенты
  • 1M контекст (для heartbeat держим 4K-16K + внешняя память)
  • ~59 t/s на Q4_K_M (RTX A2000 12GB)

⚠️ 4B — это слабость для сложного reasoning. Стратегия: heartbeat-мысли на Spark (быстро/дёшево), саб-агенты на Ornith-9B (качественнее).

Архитектура

heartbeat.ts  — ядро: 5 триггеров тика, состояния Cold/Warm
memory.ts     — 4 слоя памяти (short/working/core self/long-term)
persona.ts    — 8 слоёв → системный промпт
mind.ts       — оркестратор: heartbeat + memory + persona + Spark LLM

Heartbeat (5 триггеров)

  1. Interval — idle-мысли по таймеру (default 5 мин)
  2. Message — сообщение от known-контакта
  3. Task — scheduled-задача (cron)
  4. SubAgent-Complete — завершение саб-агента
  5. Plugin — внешний триггер (HomeKit, сенсор и т.д.)

Таймер сбрасывается после любого тика. Warmth-окно 15 мин — сессия переиспользуется, иначе cold-start.

Memory (4 слоя)

Слой Хранение Что держит
short-term SQLite последние ~10 мыслей/опыт/сообщений
working SQLite notepad по контактам
core self SQLite самосознательность
long-term LanceDB/Qdrant факты/опыт/процедуры (векторный поиск)

Persona (8 слоёв)

Existence Paradigm → Identity → Archetype → Dimensions → Traits → Values → Background → Review

Компилируется в системный промпт. values — safety-layer (границы для EXECUTE).

Запуск

npm install
npm run build   # tsc -p tsconfig.json (проверка типов)
npm start       # node dist/index.js

Spark X2.5-4B должен быть доступен по OpenAI-совместимому API:

  • Ollama: http://localhost:11434
  • llama.cpp: http://localhost:8080/v1

Roadmap

  • SQLite-репозиторий вместо in-memory (персистентность) — отложено (P4)
  • LanceDB/Qdrant integration для long-term — bge-m3 embeddings локально (Ollama)
  • Channel layer (вывод) — console-заглушка, подключение Telegram/SMS (P5)
  • Sub-agent SDK (делегирование Ornith-9B)
  • Sleep & energy (циркадный ритм)
  • Web UI (persona setup)

License

MIT — концепт вдохновлён Animus (MIT, Craig Tuttle).

S
Description
Self-hosted autonomous agent (heartbeat + memory + persona) on Spark X2.5-4B
Readme
117 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 100%