75 lines
3.2 KiB
Markdown
75 lines
3.2 KiB
Markdown
# spark-mind
|
|
|
|
Self-hosted автономный агент (MVP). Концепт позаимствован из
|
|
[Animus](https://github.com/Craigtut/animus) (Craigtut): heartbeat,
|
|
4 слоя памяти, persona в 8 слоёв. Движок — **Ornith-1.5-9B** (локально, self-hosted, Ollama).
|
|
|
|
## Почему Ornith-1.5-9B
|
|
|
|
- Локальный inference (Ollama), никаких облачных ключей
|
|
- Нативная поддержка tool-calling (саб-агенты) + thinking
|
|
- 262K контекст (для heartbeat держим 4K-16K + внешняя память)
|
|
- ~40-60 t/s на Q6_K
|
|
|
|
> ⚠️ Spark X2.5-4B не грузится в Ollama (unknown architecture 'spark2_5').
|
|
> Ornith-9B — рабочая замена: thinking + tools, дефицитный ресурс.
|
|
|
|
## Архитектура
|
|
|
|
```
|
|
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).
|
|
|
|
## Запуск
|
|
|
|
```bash
|
|
npm install
|
|
npm run build # tsc -p tsconfig.json (проверка типов)
|
|
npm start # node dist/index.js
|
|
```
|
|
|
|
Ornith-1.5-9B должен быть доступен по OpenAI-совместимому API (Ollama):
|
|
- Ollama: `http://localhost:11434` (модель `ornith-1.5-9b:latest`)
|
|
|
|
## Roadmap
|
|
|
|
- [x] SQLite-репозиторий вместо in-memory (персистентность) — отложено (P4)
|
|
- [x] LanceDB/Qdrant integration для long-term — bge-m3 embeddings локально (Ollama)
|
|
- [x] Channel layer (вывод) — console-заглушка, подключение Telegram/SMS (P5)
|
|
- [ ] Sub-agent SDK (делегирование Ornith-9B)
|
|
- [ ] Sleep & energy (циркадный ритм)
|
|
- [ ] Web UI (persona setup)
|
|
|
|
## License
|
|
|
|
MIT — концепт вдохновлён Animus (MIT, Craig Tuttle).
|