Files
spark-mind/TODO.md
T

64 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# spark-mind — Оставшиеся TODO
Статус: **P0–P5 завершены** (heartbeat→mind, JSON output, embeddings, sub-agents,
SQLite, Telegram). Ниже — реально незакрытые пункты, проверенные по коду
(2026-09-15). Порядок — по приоритету.
## P6 — Функциональная полнота
- [ ] **Sleep & energy (циркадный ритм).** Сейчас heartbeat тикает всегда
с фиксированным интервалом 5 мин. Нужно: окна активности/сна, накопление
«энергии», снижение частоты тиков в пассивные периоды.
- [ ] **Планировщик задач (cron).** Тип триггера `{ type: 'task' }` объявлен
в `heartbeat.ts`, но **ничто его не эмитит** — планировщика нет
(`scheduleNext` — это idle-таймер, не cron). Нужен движок отложенных задач.
- [ ] **Рабочая память (notepads) в цикле mind.** Таблица `notepads` и методы
`updateNotepad()`/`getNotepad()` реализованы, но **вне memory.ts не
вызываются** — слой не участвует в `handleTick`.
- [ ] **Core self (self_observations) в цикле mind.** Аналогично: `addSelfObservation()` /
`getAllSelfObservations()` реализованы, но из mind не вызываются.
Самосознательность не накапливается автоматически.
- [ ] **Реальное исполнение инструментов под-агентов.** `subagent.ts` объявляет
список tools (web_search, terminal, file_write…), но это **строки-декларации** —
исполнения нет. Нужен tool-runtime для под-агентов.
## P7 — Инфраструктура
- [ ] **Web UI (persona setup).** Настройка 8 слоёв persona через интерфейс
вместо `DEFAULT_PERSONA` в коде.
- [ ] **Конфиг / .env.** URL-ы Ollama (`localhost:11434`), dbPath, Telegram
захардкожены в `index.ts`. Вынести в конфиг/`.env`.
- [ ] **Retry + timeout для LLM-запросов.** `fetch` в `mind.ts` и `embedding.ts`
без retry и без `AbortController` — один сетевой сбой роняет тик.
- [ ] **Тесты.** Их нет вообще. Минимум: unit на `parseSparkOutput` (nested JSON,
fences, fallback), на `Database` CRUD, на cosine-поиск.
## Каналы вывода
- [ ] **Telegram: обход SSL-проблемы bot.qw4.ru.** Сервер отдаёт
`tlsv1 unrecognized name` (SSL alert 112) при TLS-handshake — проблема
на стороне сервера, не клиента (проверено curl-ом и Node https).
Агент сейчас работает в console-only fallback. Варианты: починить
SNI/сертификат на qw4.ru, поднять локальный MAX-релей, или другой канал
(Telegram Bot API напрямую).
## Движок
- [ ] **Spark X2.5-4B.** Не грузится в текущей Ollama:
`error loading model: unknown model architecture: 'spark2_5'`.
Варианты: собрать совместимый GGUF, поднять через llama.cpp напрямую
(OpenAI-сервер на :8080), или оставить Ornith-1.5-9B как основной движок.
**Важно:** локальные модели пумолкают (пустой ответ), если `subAgent`
присутствует в JSON-схеме structured output — учитывать при правках промпта.
## Косметика
- [ ] Устаревший doc-комментарий в `mind.ts`: класс `SparkLLMClient` всё ещё
описан как «Реальный LLM-клиент для Spark X2.5-4B. В MVP — заглушка»,
хотя работает с Ornith-9B и без заглушки.
- [ ] Дефолтное имя модели в конструкторе `SparkLLMClient` = `'spark-x2.5-4b'`
(index.ts переопределяет на `ornith-1.5-9b:latest`, но дефолт вводит в заблуждение).
---
Проверено `grep`-ом по коду: dead-code слои, отсутствие cron/retry/tests/.env, SSL-ошибка Telegram.