4.6 KiB
4.6 KiB
title, aliases, tags, created, updated, related
| title | aliases | tags | created | updated | related | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| naisei / reflect-skip — проект |
|
|
2026-05-17 | 2026-05-25 |
|
naisei / reflect-skip — проект
Статус
- Имя продукта: naisei
- Активная кодовая база:
~/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.
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/.