[2026-05-16] psychologist-app: add dual-bot architecture + on-device MD knowledge base sections
This commit is contained in:
@@ -122,7 +122,107 @@ Apple требует дисклеймер: "Не является заменой
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 6. Технический стек
|
## 6. Архитектура системы
|
||||||
|
|
||||||
|
### Двойной бот — core механизм
|
||||||
|
|
||||||
|
Ключевая идея: пользователь говорит от первого лица → AI склонен соглашаться (sycophancy).
|
||||||
|
Решение: два независимых бота в pipeline, каждый не знает о пользователе напрямую.
|
||||||
|
|
||||||
|
```
|
||||||
|
Пользователь (1-е лицо)
|
||||||
|
↓
|
||||||
|
┌─────────────────────────────┐
|
||||||
|
│ БОТ 1 — Narrator (Haiku) │
|
||||||
|
│ Системный промпт: │
|
||||||
|
│ "Перескажи от 3-го лица, │
|
||||||
|
│ нейтрально, только факты, │
|
||||||
|
│ без оценок и сочувствия. │
|
||||||
|
│ Называй человека │
|
||||||
|
│ 'пользователь'." │
|
||||||
|
└─────────────────────────────┘
|
||||||
|
↓
|
||||||
|
"Пользователь говорит что..."
|
||||||
|
↓
|
||||||
|
┌─────────────────────────────┐
|
||||||
|
│ БОТ 2 — Analyst (Sonnet) │
|
||||||
|
│ Системный промпт: │
|
||||||
|
│ "Ты опытный психолог. │
|
||||||
|
│ Перед тобой описание │
|
||||||
|
│ незнакомого человека от │
|
||||||
|
│ 3-го лица. Задай 1-2 │
|
||||||
|
│ точных вопроса. Не давай │
|
||||||
|
│ советов. Не валидируй." │
|
||||||
|
│ │
|
||||||
|
│ + читает profile.md │
|
||||||
|
│ + детектирует SI/SH │
|
||||||
|
└─────────────────────────────┘
|
||||||
|
↓
|
||||||
|
Вопрос пользователю ИЛИ 🚨 Crisis flow
|
||||||
|
```
|
||||||
|
|
||||||
|
**Почему это работает:**
|
||||||
|
- Бот 2 анализирует _описание незнакомца_, а не собеседника — убирает emotional bias
|
||||||
|
- Снижение sycophancy ~13.6% доказано научно (arXiv 2508.02087, 3rd vs 1st person)
|
||||||
|
- Бот 1 дешёвый (Haiku), Бот 2 качественный (Sonnet) — оптимально по cost/quality
|
||||||
|
|
||||||
|
**Кризисный детектор** встроен в Бот 2:
|
||||||
|
- Hardcoded детекция ключевых слов на RU + EN (не через LLM — надёжнее и быстрее)
|
||||||
|
- При срабатывании: немедленно прерывает диалог, показывает CrisisView с горячими линиями
|
||||||
|
- Уровни: `warning` (косвенные упоминания) / `critical` (прямые угрозы) — разный флоу
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### On-device база знаний (Obsidian-like)
|
||||||
|
|
||||||
|
Вместо облачной БД — markdown файлы на устройстве пользователя с тегами и ссылками.
|
||||||
|
|
||||||
|
```
|
||||||
|
Documents/UserProfile/
|
||||||
|
├── profile.md ← живой профиль: паттерны, наблюдения, прогресс
|
||||||
|
├── insights.md ← кристаллизованные инсайты (обновляется редко)
|
||||||
|
├── sessions/
|
||||||
|
│ ├── 2026-05-16.md ← каждая сессия: вопросы, ответы, наблюдение
|
||||||
|
│ ├── 2026-05-20.md
|
||||||
|
│ └── ...
|
||||||
|
└── topics/
|
||||||
|
├── sleep.md ← паттерн сна [[связано с sessions/2026-05-16]]
|
||||||
|
├── work.md
|
||||||
|
└── relationships.md
|
||||||
|
```
|
||||||
|
|
||||||
|
**profile.md** (пример):
|
||||||
|
```markdown
|
||||||
|
# Профиль пользователя
|
||||||
|
|
||||||
|
#паттерн Откладывает сложные разговоры → избегание через работу
|
||||||
|
#паттерн Энергия падает к 16:00 если не было физической активности
|
||||||
|
#прогресс Трезвость — 47 дней ✓
|
||||||
|
#прогресс Спортзал — 3 раза на прошлой неделе ✓
|
||||||
|
|
||||||
|
## Текущие темы
|
||||||
|
- [[topics/sleep]] — замкнутый цикл сна, прорабатываем
|
||||||
|
- [[topics/work]] — граница рабочего и личного времени
|
||||||
|
|
||||||
|
## Наблюдение агента (2026-05-16)
|
||||||
|
Пользователь описывает продуктивность через количество задач, но...
|
||||||
|
```
|
||||||
|
|
||||||
|
**Как это работает в pipeline:**
|
||||||
|
1. Начало сессии: Бот 2 читает `profile.md` + последние 2-3 сессии
|
||||||
|
2. Конец сессии: Бот 2 пишет краткое summary в `sessions/YYYY-MM-DD.md`
|
||||||
|
3. Значимый инсайт: обновляет `profile.md` (дописывает наблюдение)
|
||||||
|
4. Пользователь видит свою базу знаний в приложении (ProfileView)
|
||||||
|
|
||||||
|
**Преимущества перед облачной БД:**
|
||||||
|
- Полный контроль данных у пользователя (privacy-first)
|
||||||
|
- Работает офлайн
|
||||||
|
- Пользователь может экспортировать/читать свои данные
|
||||||
|
- Ссылки между файлами = граф паттернов (Obsidian-логика)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Технический стек
|
||||||
|
|
||||||
### Мобильное приложение
|
### Мобильное приложение
|
||||||
**Skip.tools** — SwiftUI компилируется в нативный Jetpack Compose для Android.
|
**Skip.tools** — SwiftUI компилируется в нативный Jetpack Compose для Android.
|
||||||
|
|||||||
@@ -26,6 +26,10 @@ Auto-maintained catalog of all pages in `wiki/`. Updated by the daily curation c
|
|||||||
- [[wiki-ingest-process]] — How wiki pages are generated from sources
|
- [[wiki-ingest-process]] — How wiki pages are generated from sources
|
||||||
- [[obsidian-mcp-wrapper]] — mcpvault / obsidian MCP setup
|
- [[obsidian-mcp-wrapper]] — mcpvault / obsidian MCP setup
|
||||||
|
|
||||||
|
## User Profile
|
||||||
|
|
||||||
|
- [[user-profile]] — Alex's personal profile: identity, family, work, interests, goals, travel plans
|
||||||
|
|
||||||
## Workflows
|
## Workflows
|
||||||
|
|
||||||
- [[ddg-asana-workflow]] — DuckDuckGo + Asana daily workflow
|
- [[ddg-asana-workflow]] — DuckDuckGo + Asana daily workflow
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
---
|
---
|
||||||
|
namespace: personal
|
||||||
created: '2026-05-15'
|
created: '2026-05-15'
|
||||||
updated: '2026-05-15'
|
updated: '2026-05-15'
|
||||||
|
last_synced: '2026-05-16'
|
||||||
tags:
|
tags:
|
||||||
- profile
|
- profile
|
||||||
- user
|
- user
|
||||||
- alex
|
- alex
|
||||||
status: active
|
confidence: 0.9
|
||||||
---
|
---
|
||||||
# User Profile — Alex
|
# User Profile — Alex
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user