Files
obsidian-vault/personal/projects/nolvu-reflect-skip.md
T

4.6 KiB

title, aliases, tags, created, updated, related
title aliases tags created updated related
naisei / reflect-skip — проект
naisei
nolvu
reflect-skip
Naisei проект
Reflect Skip
personal
project
app
psychology
skip-tools
2026-05-17 2026-05-25
personal/projects/psychologist-app/overview
personal/projects/psychologist-app/dev-setup

naisei / reflect-skip — проект

Статус

  • Имя продукта: naisei
  • Активная кодовая база: ~/Developer/reflect-skip/
  • Android: публикуется на https://reflect.qentra.top (F-Droid)
  • iOS: собирается через Project.xcworkspaceDarwin/ReflectApp.xcodeproj
  • Текущая версия: v0.0.25

Структура проекта

Два источника Swift-кода в reflect-skip

  • Sources/ReflectApp/актуальный Skip-источник. Компилируется Darwin-проектом. Используется для iOS и Android.
  • ReflectApp/legacy iOS-only код, существовавший до перехода на Skip. Компилируется ReflectApp.xcodeproj в корне. Не используется в продакшне.

Как открывать iOS-проект

Всегда через Project.xcworkspace, не через ReflectApp.xcodeproj напрямую.

Как собирается Android

build-and-publish.sh → Skip компилирует Sources/ReflectApp/ → APK → F-Droid repo.

Прокси

  • LaunchAgent: ai.reflect-proxylocalhost:8765
  • Cloudflare tunnel: ai.qentra.toplocalhost:8765
  • Бэкенд: claude-proxy на localhost:3456
  • Лог сессий: ~/Developer/reflect-skip/sessions.log

Агенты

  • NarratorBot — нейтрализует ввод пользователя (убирает эмоциональную окраску, 3-е лицо)
  • AnalystBot — задаёт 2-3 глубоких вопроса по профилю + контексту сессии
  • SessionManager — управляет историей сессий

Исправления (v0.0.25, май 2026)

Fix 1 — дублирование нарратора

buildSessionContext() вызывался после addMessage() → нарратор видел своё же сообщение в контексте. Исправлено: поменяли порядок в Sources/SessionManager.swift.

Fix 2 — AnalystBot не видел текущий диалог

ProfileManager.loadRecentSessions(count: 3) загружал прошлые ФАЙЛЫ, не текущую сессию. Исправлено: добавили buildCurrentSessionDialogue() (последние 8 пар user/analyst), передаём в analyze().

Fix 3 — нарратору уходили вопросы аналитика

sendBatchSummary() отправлял весь диалог включая вопросы аналитика. Исправлено: фильтруем только user answers.

Obsidian-совместимость

Приложение читает сессии из папки observations/ (формат vault), а не sessions/.

  • Папка сессий: observations/ в корне импортируемой директории
  • Именование файлов: ISO week — 2026-W20.md, 2026-W21.md
  • Запись сессий: аппендит ## Сессия DD.MM.YYYY HH:mm в текущий недельный файл
  • Счётчик сессий: считается напрямую как количество .md файлов в observations/ (не хранится в profile.md)
  • Профиль: profile.md — строка **Имя:** Алексей нужна для parseName()
  • Инсайты: insights.md — произвольный формат, передаётся напрямую в Claude

Vault путь для импорта: personal/psychology/ (на Taiga).

Pitfalls

  • Если на iOS-симуляторе не появляется DevSetupView (ввод токена) — значит dev_setup_done = true в UserDefaults. Удалить приложение с симулятора и запустить заново.
  • ReflectApp/ в корне — legacy, не трогать. Реальные правки только в Sources/ReflectApp/.

Связанные заметки