Files
spark-mind/TODO.md
T

4.6 KiB
Raw Blame History

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.