[2026-05-21] add nolvu/reflect-skip project note
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
# nolvu / reflect-skip — проект
|
||||
|
||||
## Статус
|
||||
- Активная кодовая база: `~/Developer/reflect-skip/`
|
||||
- Android: публикуется на `https://reflect.qentra.top` (F-Droid)
|
||||
- iOS: собирается через `Project.xcworkspace` → `Darwin/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-proxy` → `localhost:8765`
|
||||
- Cloudflare tunnel: `ai.qentra.top` → `localhost: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/`.
|
||||
Reference in New Issue
Block a user