P3-P5: SubAgent SDK, Telegram Channel, SQLite persistence, full pipeline
P3 - SubAgent SDK: - src/subagent.ts: researcher, coder, analyst, content-writer - Mind.runSubAgent() → SubAgentFactory.create() → execute() - Результаты сохраняются в long-term memory - Heartbeat.notify(subagent-complete) после завершения P4 - SQLite persistence (5 таблиц, WAL): - src/database.ts: thoughts, notepads, self_observations, long_term, embeddings - memory.ts → Database (полная замена in-memory) - index.ts: dbPath → ~/.local/share/spark-mind/spark-mind.db P5 - Telegram Channel Layer: - src/telegram.ts: https module (SNI fix), MAX Messenger API - mind.ts: sendReply() → Telegram + console fallback - index.ts: TelegramMessenger(config) → Mind Fixes: - FK constraint: long_term INSERT → long_term_embeddings INSERT - JSON parse: nested objects, markdown fences - P5 telegram: graceful degradation on SSL error
This commit is contained in:
1 parent
a01f183680
commit
bae171d6b4
9 files changed
+536
-58
No files matched your search
@@ -18,9 +18,13 @@ Self-hosted автономный агент (MVP). Концепт позаимс
|
||||
|
||||
```
|
||||
heartbeat.ts — ядро: 5 триггеров тика, состояния Cold/Warm
|
||||
memory.ts — 4 слоя памяти (short/working/core self/long-term)
|
||||
memory.ts — 4 слоя памяти (short/working/core self/long-term) + SQLite
|
||||
persona.ts — 8 слоёв → системный промпт
|
||||
mind.ts — оркестратор: heartbeat + memory + persona + Spark LLM
|
||||
mind.ts — оркестратор: heartbeat + memory + persona + LLM
|
||||
subagent.ts — SubAgent SDK: researcher, coder, analyst, content-writer
|
||||
embedding.ts — bge-m3 embeddings (dim=1024), cosine similarity
|
||||
database.ts — SQLite репозиторий: 5 таблиц, WAL-режим
|
||||
telegram.ts — Telegram Channel Layer: MAX Messenger API
|
||||
```
|
||||
|
||||
### Heartbeat (5 триггеров)
|
||||
@@ -38,16 +42,18 @@ mind.ts — оркестратор: heartbeat + memory + persona + Spark L
|
||||
|
||||
| Слой | Хранение | Что держит |
|
||||
|------|----------|-----------|
|
||||
| short-term | SQLite | последние ~10 мыслей/опыт/сообщений |
|
||||
| working | SQLite | notepad по контактам |
|
||||
| core self | SQLite | самосознательность |
|
||||
| long-term | LanceDB/Qdrant | факты/опыт/процедуры (векторный поиск) |
|
||||
| short-term | SQLite (thoughts) | последние ~10 мыслей/опыт/сообщений |
|
||||
| working | SQLite (notepads) | notepad по контактам |
|
||||
| core self | SQLite (self_observations) | самосознательность |
|
||||
| long-term | SQLite (long_term + embeddings) | факты/опыт/процедуры + bge-m3 векторы |
|
||||
|
||||
### Persona (8 слоёв)
|
||||
### Sub-Agents
|
||||
|
||||
Existence Paradigm → Identity → Archetype → Dimensions → Traits → Values → Background → Review
|
||||
|
||||
Компилируется в системный промпт. `values` — safety-layer (границы для EXECUTE).
|
||||
Поддерживаемые агенты:
|
||||
- **researcher** — сбор и анализ информации (web_search, file_read, web_extract)
|
||||
- **coder** — написание и ревью кода (file_write, terminal, code_review)
|
||||
- **analyst** — анализ данных и ситуаций (data_query, spreadsheet, chart_generator)
|
||||
- **content-writer** — создание веб-контента (template_search, seo_check, grammar_check)
|
||||
|
||||
## Запуск
|
||||
|
||||
@@ -60,12 +66,36 @@ npm start # node dist/index.js
|
||||
Ornith-1.5-9B должен быть доступен по OpenAI-совместимому API (Ollama):
|
||||
- Ollama: `http://localhost:11434` (модель `ornith-1.5-9b:latest`)
|
||||
|
||||
## Roadmap
|
||||
### Настройка Telegram
|
||||
|
||||
- [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)
|
||||
Для отправки ответов в Telegram добавьте в `index.ts`:
|
||||
```typescript
|
||||
import { TelegramMessenger } from './src/telegram.js';
|
||||
|
||||
const telegram = new TelegramMessenger({
|
||||
botUrl: 'https://bot.qw4.ru/bot/nik_bot',
|
||||
userId: '140245519',
|
||||
});
|
||||
```
|
||||
|
||||
> ⚠️ Примечание: если bot.qw4.ru недоступен (SSL-ошибка 'unrecognized name'),
|
||||
> агент работает в console-only режиме.
|
||||
|
||||
## Статус P0–P5
|
||||
|
||||
| Priority | Компонент | Статус |
|
||||
|----------|-----------|--------|
|
||||
| P0 | heartbeat → mind wiring | ✅ |
|
||||
| P1 | structured JSON output (parseSparkOutput) | ✅ |
|
||||
| P2 | bge-m3 embeddings + cosine search | ✅ |
|
||||
| P3 | SubAgent SDK (researcher, coder, analyst, content-writer) | ✅ |
|
||||
| P4 | SQLite persistence (5 таблиц, WAL) | ✅ |
|
||||
| P5 | Telegram Channel Layer (MAX API + fallback) | ✅ |
|
||||
|
||||
## Roadmap (P6+)
|
||||
|
||||
- [ ] Sleep & energy (циркадный ритм)
|
||||
- [ ] Web UI (persona setup)
|
||||
- [ ] Sleep & energy (циркадный ритм)
|
||||
- [ ] Web UI (persona setup)
|
||||
|
||||
|
||||
Reference in new issue
Block a user