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

3.5 KiB

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

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

Статус

  • Активная кодовая база: ~/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.

Pitfalls

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

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