Persona — что где и куда тыкать

v1.71.0 · сейчас в базе 714 скринов (405 за последние сутки), 0 заметок.

⚠️ Главное

  • Persona сейчас local-first: всё хранится ~/.persona/persona.db на твоём Mac.
  • Web-морда тут (на Windows-сервере) смотрит на этот же файл через devtunnel. Если выключишь Mac — данных не будет.
  • Multi-device аккаунты ещё не сделаны (в плане).
  • AI можно подключить через /settings/llm: YandexGPT/GigaChat работают в России без VPN, или Ollama локально на твоём ПК бесплатно (см. ниже).

🏠 Свой AI на твоём ПК (Ollama) — бесплатно

Это для тех, кто хочет полную независимость: AI крутится на твоём железе, ничего никуда не отправляется, бесплатно навсегда.

  1. 1. Скачай Ollama с ollama.com/download (Windows/Mac/Linux). Установи как обычное приложение.
  2. 2. После установки открой терминал (cmd или PowerShell) и запусти:
    ollama pull qwen2.5:3b
    Это скачает 2 GB модель Qwen 2.5 (3 миллиарда параметров, нормально говорит по-русски). Один раз, навсегда.
  3. 3. Ollama сам стартует HTTP-сервер на localhost:11434. Проверь что работает: открой localhost:11434 — должно написать "Ollama is running".
  4. 4. Зайди в /settings/llm, выбери "Локально на твоём ПК через Ollama", в поле endpoint вставь http://localhost:11434 (или оставь пусто — это дефолт). Сохрани.
  5. 5. Открой /ask, задай вопрос. Первый ответ будет 10-30 секунд (модель грузится в RAM), дальше быстрее.
Какую модель выбрать под твоё железо
МодельРазмерRAMСкорость на CPU
qwen2.5:1.5b1 GB2 GB15-20 т/с
qwen2.5:3b2 GB4 GB10-15 т/с ⭐
llama3.2:3b2 GB4 GB10-15 т/с
phi3:mini2.5 GB5 GB8-12 т/с
qwen2.5:7b5 GB8 GB3-5 т/с

Чтобы переключиться на другую модель: ollama pull <имя>, потом в kv-настройках ollama_model укажи имя.

💡 Когда твой ПК выключен — Ollama не отвечает. Persona в это время не сможет ответить на вопросы (но захват скриншотов продолжается без AI).

📦 Распределение данных между устройствами

У каждого устройства есть своя роль и свой бюджет места. Сервер всегда хранит всё, а устройство решает что держать локально и что получать по синхронизации.

Роли устройств

РольКогда выбиратьДефолт
primaryОсновная машина (Mac), хранит всёбез лимита
archiveДолгосрочный бэкапбез лимита
viewerТелефон/iPad — только смотреть500 МБ · 7 дней
passiveСтарая машина для подстраховки200 МБ · 14 дней

Как настроить

  1. 1./devices → выбери устройство → нажми Хранилище.
  2. 2.Выбери роль из списка (это просто пометка) и нажми Применить настройки роли для дефолтов — или впиши свои.
  3. 3.Лимит места (МБ): пусто = без лимита; иначе старые файлы удалятся локально при переполнении (на сервере остаются).
  4. 4.Хранить N дней: пусто = навсегда; иначе старше N — выкинется с устройства.
  5. 5.Внизу список «Какие данные получает устройство» — снимай галочки с того что не нужно (например, на телефон не присылать файлы скриншотов).

Типичные сценарии

  • Mac (основной): primary, всё включено — это твоя главная машина.
  • iPhone: viewer, 500 МБ, 7 дней, отключи shot_blob (картинки), но note и tag оставь.
  • Старый PC дома: archive, без лимита — пусть лежит как страховка.
  • iPad жены: passive, 200 МБ — синкается, но почти ничего не держит.

💡 Главное правило: сервер хранит всё. Лимит на устройстве — это про локальный кеш. Удалил с iPhone — на сервере осталось, через web всё видно.

🗂 /storage — отдельная страница для управления серверным хранилищем: сколько занято всего, политика «хранить N дней», ручная чистка, история запусков чистки. Туда же тыкает воркер раз в сутки.

📱 Захват с iPhone (iOS Shortcuts)

Реальность: Apple физически блокирует приложениям делать скриншоты в фоне. Continuous capture как на Mac на iOS невозможен — это политика iOS, не недоработка Persona. ReplayKit требует ручного тапа на каждую сессию и останавливается при выходе из приложения.

Реалистичный способ — iOS Shortcuts: настраиваешь автоматизацию которая периодически делает скриншот и загружает в Persona. Не silent, но рабочий.

Шаги настройки

  1. 1.На сайте: /devicesДобавить устройство → kind = iPhone. Скопируй device_token (показывается один раз!).
  2. 2.На iPhone: открой приложение Команды (Shortcuts) → + Новая.
  3. 3.Добавь действия в таком порядке:
    • Сделать скриншот (Take Screenshot)
    • Получить содержимое URL (Get Contents of URL):
      • URL: https://<твой-домен>/api/ingest/photo
      • Метод: POST
      • Заголовки: X-Device-Token = твой токен из шага 1
      • Тело: Форма, добавь поле file = последний скриншот, поле caption = текст или вход для подсказки
    • Показать уведомление с результатом (необязательно)
  4. 4.Сохрани шорткат как «Загрузить в Persona».
  5. 5.Создай Личную автоматизацию: «Время суток» → каждый час → Запустить шорткат «Загрузить в Persona».
    ⚠️ iOS 14+ требует подтверждения каждый запуск (через notification). Это апплевский security feature, никак не обходится без jailbreak.
Alternative: photo library scan

Шорткат может вместо Take Screenshot читать последние N фото из Photos (любой скриншот который ты сделал руками через кнопки питания+громкости). Это даёт автоматизацию «загружай все мои скриншоты в Persona» — но требует разрешения на доступ к Фото.

💡 Альтернатива всему этому: используй iPhone как viewer. Открываешь сайт Persona в Safari, видишь всё что захватил Mac — без авто-захвата с iPhone. Это самый простой путь.

💬 Чат с памятью

/chat — это разговор с моделью, который помнит контекст всей беседы. В отличие от /ask (одиночные запросы), здесь модель видит последние 20 сообщений и отвечает с учётом контекста.

  • Можно вести несколько бесед параллельно: «работа», «идеи», «личное» — каждая отдельная нить.
  • История бесед в SQLite — год активного общения ≈ 50 МБ.
  • Модель можно переключить в любой момент (/settings/llm) — память остаётся, меняется только стиль ответов.
  • Голос-ввод (🎙) и голос-вывод (🔊) есть на странице /ask.

Куда смотреть каждый день

Как проверить что всё работает

  1. 1. Открой /now. Если capture-loop живой, в "Active app" будет имя текущего приложения и last-shot-ago маленькое число секунд.
  2. 2. Открой /health-dashboard. Worker grid — все строчки должны быть зелёные (или amber если worker давно не тикал). Если все красные — capture не работает.
  3. 3. Открой /stats. График captures должен быть непустой. Если 0 — capture-loop не записывает (проверь /settings/capture).
  4. 4. Проверь LLM: открой /ask → "что я делал час назад?" → если ключ вставлен и есть данные — будет ответ. Если "LLM not configured" — иди в /setup.

Настройки которые реально полезные

/settings/capture — частота захвата (default 6 сек), включить/выключить захват, blocklist приложений.
/settings/capture-quality — слайдер JPEG quality 10-95. Снижай до 20-30 если экономишь место.
/settings/llm — провайдер (Anthropic/OpenAI/Groq/Gemini), API ключ, default model.
/settings/redaction — regex-правила что вырезать из OCR (пароли, токены, банковские номера).
/settings/hub — все остальные настройки (есть много, но трогать не обязательно).

Что НЕ трогать

  • /admin/dup-finder — soft-deletes shots по hamming. Сначала Preview, потом Apply.
  • /admin/stale-notes — авто-удаление пустых заметок. Off-by-default.
  • /admin/audit-log-rotation — архивирует и удаляет старые audit-log rows. Тоже сначала смотри что архивируется.
  • /admin/demo-seeder — заполняет DB фейковыми данными. Не запускай на проде, есть safety-check (refuse если >50 real rows).

iPhone (как иконка приложения)

  1. 1.Открой ссылку сайта в Safari на iPhone.
  2. 2.Нажми «Поделиться» (квадратик со стрелкой) → «На экран Домой».
  3. 3.На главном экране появится иконка — фиолетовая точка.
  4. 4.Долгое нажатие на иконку → быстрые ссылки: Сейчас / Спросить / Действия.
  5. 5.Обычный тап → откроется в полноэкранном режиме без шапки Safari.

Что уже готово

  • Аккаунты по email + пароль
  • Мульти-устройство: добавить телефон + Mac в один аккаунт
  • Голосовой ввод и озвучивание ответа в /ask
  • Удалённое управление другими устройствами через /devices
  • Синхронизация заметок, тегов и аннотаций между устройствами

Подробнее — в коммитах репозитория.