diff --git a/family/how-to/htpc-gaming-plans.md b/family/how-to/htpc-gaming-plans.md index a36b51e2..79dabe7e 100644 --- a/family/how-to/htpc-gaming-plans.md +++ b/family/how-to/htpc-gaming-plans.md @@ -44,12 +44,14 @@ ## Эмуляция: план -→ Полный план: см. секцию ниже. +→ **Полное research + план действий: [[switch-emulation-rom-infra]]** -Приоритет 1: **Switch (DKC: Tropical Freeze, Returns)** -Приоритет 2: **Wii (DKC Returns оригинал)** +Приоритет 1: **Switch (DKC: Tropical Freeze)** — Ryujinx (GreemDev fork) через EmuDeck +Приоритет 2: **Wii (DKC Returns оригинал)** — Dolphin через EmuDeck (проще, без keys) -### EmuDeck +**Важно:** оригинальный Ryujinx закрылся (окт. 2024). Актуальный — GreemDev fork. Eden — для Android. + +### EmuDeck (первый шаг) ```bash # В KDE Desktop Mode (не gamescope): diff --git a/family/how-to/switch-emulation-rom-infra.md b/family/how-to/switch-emulation-rom-infra.md new file mode 100644 index 00000000..6f22cfc7 --- /dev/null +++ b/family/how-to/switch-emulation-rom-infra.md @@ -0,0 +1,247 @@ +# Switch Эмуляция и ROM-инфраструктура — Research + +> Исследование: май 2026. Цель: запустить DKC Tropical Freeze / Returns на HTPC, настроить автоматический поиск и скачку через Кракена/Eagle. + +--- + +## 1. Switch Эмулятор — Текущий Landscape (2026) + +### Ситуация +Nintendo подала в суд: **оригинальный Ryujinx закрылся** (октябрь 2024), **Yuzu закрылся** раньше. Оба форка живы: + +| Эмулятор | Основа | Статус | Для чего | +|----------|--------|--------|----------| +| **Ryujinx (GreemDev)** | Ryujinx | ✅ Активно, GitHub | Десктоп (Win/Linux/macOS) | +| **Eden** | Yuzu | ✅ Активно, eden-emu.dev | Android + десктоп | +| Citron | Yuzu | Активно | Альтернатива | +| Suyu/Sudachi | Yuzu | Менее активны | Эксперименты | + +**Для HTPC (Bazzite/Linux десктоп): рекомендован Ryujinx (GreemDev fork).** +Eden больше ориентирован на Android, хотя DKC Tropical Freeze на нём тоже работает. + +### EmuDeck — правильный способ установки +EmuDeck автоматически ставит Ryujinx, настраивает пути, добавляет в Steam ROM Manager. + +```bash +# В KDE Desktop Mode (не gamescope): +curl -L https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh | bash +``` + +Ryujinx после установки через EmuDeck: +- Бинарь: `/home/bazzite/Applications/publish/Ryujinx` +- Конфиг: `~/.config/Ryujinx/` +- **Keys: `~/Emulation/bios/ryujinx/keys/`** (не `~/.config/Ryujinx/system/`) +- ROMs: `~/Emulation/roms/switch/` +- Saves: `~/Emulation/saves/ryujinx/saves/` + +--- + +## 2. prod.keys — Где взять + +`prod.keys` — ключи шифрования Nintendo Switch. Технически: дамп из реального Switch через Hekate/Lockpick_RCM. + +### Практика (common knowledge) +Ключи широко распространены в community-источниках: +- **Rutracker**: поиск "Nintendo Switch prod.keys" или "switch firmware keys" +- **4PDA**: раздел эмуляторов Switch +- **Archive.org**: публичные архивы с firmware дампами +- Telegram-каналы по Switch эмуляции + +### Версионность +`prod.keys` должны соответствовать или быть новее firmware. Рекомендуется брать свежую связку keys + firmware одной версии (17.0.0+). + +### Установка +``` +~/Emulation/bios/ryujinx/keys/prod.keys +~/Emulation/bios/ryujinx/keys/title.keys # опционально, нужны для некоторых игр +``` + +Firmware ставится через GUI: Ryujinx → `Tools → Install Firmware → Install from XCI or ZIP` + +--- + +## 3. DKC Tropical Freeze — Совместимость + +**Статус:** ✅ Работает + +| Железо | Эмулятор | Результат | +|--------|----------|-----------| +| i5-6500 + GTX 1050 Ti | Eden | Perfect | +| M1 Pro | Ryujinx 1.1.0 | Отлично (video на Reddit) | + +Наше железо (i7-6800K + RX 570) сопоставимо с i5-6500 + GTX 1050 Ti. RX 570 поддерживает Vulkan — основной backend для Linux. **Ожидается: Playable до Perfect.** + +**DKC Returns HD** (2025, Switch): новая ремастер-версия, более требовательная. Начинать с Tropical Freeze (2018 порт) — он оптимальнее на эмуляторе. + +### ROMs форматы +- `.nsp` — предпочтительный (NSP = Nintendo Submission Package) +- `.xci` — картридж-дамп, тоже работает + +--- + +## 4. qBittorrent на HTPC + +### Установка (Flatpak, без rpm-ostree) +```bash +ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \ + "flatpak install -y flathub com.qbittorrent.qBittorrent" +``` + +### Настройка Web UI +В GUI: Tools → Options → Web UI: +- Enable Web UI: ✅ +- Port: **8080** +- Authentication: задать логин/пароль +- IP: 0.0.0.0 (все интерфейсы) + +Или через SSH после запуска — конфиг в `~/.var/app/com.qbittorrent.qBittorrent/config/qBittorrent/qBittorrent.conf`. + +После настройки: `http://192.168.1.86:8080` + +### API — как Eagle/Кракен добавляет торрент + +```bash +# 1. Логин — получаем SID cookie +SID=$(curl -s -i \ + --header 'Referer: http://192.168.1.86:8080' \ + --data 'username=admin&password=PASSWORD' \ + http://192.168.1.86:8080/api/v2/auth/login \ + | grep -i 'set-cookie' | grep -o 'SID=[^;]*') + +# 2. Добавить магнет-ссылку +curl -s \ + --cookie "$SID" \ + --data-urlencode "urls=magnet:?xt=urn:btih:HASH&dn=..." \ + --data "savepath=/home/bazzite/Emulation/roms/switch/" \ + http://192.168.1.86:8080/api/v2/torrents/add + +# 3. Проверить статус +curl -s --cookie "$SID" \ + "http://192.168.1.86:8080/api/v2/torrents/info?filter=all" | jq '.[].name' +``` + +Полный API: cookie-based, `/api/v2/torrents/add` принимает: +- `urls` — магнет или URL торрент-файла +- `savepath` — куда сохранить +- `category` — категория + +--- + +## 5. Jackett на Кракене — Поиск по трекерам + +### Что это +Jackett — proxy-сервер который транслирует поисковые запросы в tracker-специфичные HTTP запросы. Поддерживает **RuTracker.org** (semi-private, нужна учётка). + +### Установка на Кракене (Docker) +```yaml +# /srv/.../docker/jackett/docker-compose.yml +services: + jackett: + image: lscr.io/linuxserver/jackett:latest + container_name: jackett + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Bishkek + volumes: + - ./config:/config + - ./downloads:/downloads + ports: + - 9117:9117 + restart: unless-stopped +``` + +```bash +ssh kraken-ssh "cd /srv/.../docker/jackett && docker compose up -d" +``` + +Web UI: `http://192.168.1.14:9117` + +### Настройка RuTracker +1. Открыть Jackett Web UI → Add Indexer → поиск "rutracker" +2. Ввести логин/пароль от RuTracker.org +3. Test indexer — должен вернуть результаты + +### API — как Eagle ищет игру +```bash +# Поиск через Jackett Torznab API +curl "http://192.168.1.14:9117/api/v2.0/indexers/rutracker/results/torznab/?apikey=JACKETT_KEY&t=search&q=Donkey+Kong+Tropical+Freeze+Switch&cat=8000" +# Возвращает XML/JSON с magnet-ссылками и метаданными +``` + +Jackett также поддерживает JSON: добавить `&format=json` или использовать `results/torznab` endpoint. + +--- + +## 6. Целевая Архитектура: Полный Flow + +``` +Eagle/Кракен (агент) + │ + ├── 1. Запрос: "найди DKC Tropical Freeze NSP" + │ + ├── 2. Поиск: Jackett API (Кракен :9117) + │ └── rutracker → список торрентов с магнетами + │ + ├── 3. Выбор лучшего результата (seeders, размер, формат) + │ + ├── 4. Добавление в qBittorrent (HTPC :8080) + │ └── magnet URL + savepath=/home/bazzite/Emulation/roms/switch/ + │ + └── 5. Уведомление: "скачивается X GB, ~Y мин" +``` + +--- + +## 7. План действий (приоритет) + +### Шаг 1: EmuDeck + Ryujinx (разовая установка, нужен Desktop Mode) +```bash +# Переключиться в Desktop Mode на HTPC, затем: +ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \ + "curl -L https://raw.githubusercontent.com/dragoonDorise/EmuDeck/main/install.sh -o /tmp/emudeck.sh && bash /tmp/emudeck.sh" +# Либо запустить интерактивно из браузера на HTPC +``` +⚠️ EmuDeck требует GUI для первоначальной настройки (создаёт директории, настраивает Steam ROM Manager). + +### Шаг 2: prod.keys + firmware +- Найти на Rutracker или 4PDA свежую пару keys + firmware (17.0.x) +- Положить в `~/Emulation/bios/ryujinx/keys/` +- Установить firmware через Ryujinx GUI + +### Шаг 3: qBittorrent на HTPC +```bash +ssh -i ~/.ssh/id_rsa bazzite@192.168.1.86 \ + "flatpak install -y flathub com.qbittorrent.qBittorrent" +``` +Настроить Web UI через GUI (один раз). + +### Шаг 4: Jackett на Кракене +```bash +ssh kraken-ssh "mkdir -p /srv/.../docker/jackett && cd /srv/.../docker/jackett" +# Создать docker-compose.yml (выше), добавить RuTracker учётку +``` + +### Шаг 5: ROM +- Через Jackett: найти NSP/XCI для DKC Tropical Freeze +- Закачать через qBittorrent в `~/Emulation/roms/switch/` +- Запустить через Steam ROM Manager → появится в Gaming Mode + +--- + +## 8. Open Questions + +- [ ] EmuDeck требует десктопного сессии на HTPC — нужно физически или через VNC? Через SSH не пойдёт (нужен GUI установщик) +- [ ] RuTracker учётка — есть? Надо создать если нет +- [ ] Jackett: добавить на Кракен как постоянный сервис рядом с Transmission +- [ ] Совместная игра: DKC Tropical Freeze поддерживает кооп (2 игрока) — идеально папа + Лиза + +--- + +## Ссылки + +- EmuDeck Wiki Ryujinx: https://emudeck.github.io/emulators/steamos/ryujinx/ +- Ryujinx (GreemDev fork): https://github.com/GreemDev/Ryujinx +- Eden: https://eden-emu.dev +- Jackett: https://github.com/Jackett/Jackett +- qBittorrent API: https://github.com/qbittorrent/qBittorrent/wiki/Web-API-Documentation diff --git a/personal/projects/personal-os/obsidian-vault-strategy.md b/personal/projects/personal-os/obsidian-vault-strategy.md index a629a0b1..e5b74f6d 100644 --- a/personal/projects/personal-os/obsidian-vault-strategy.md +++ b/personal/projects/personal-os/obsidian-vault-strategy.md @@ -231,99 +231,65 @@ AI/ML memory architectures, Obsidian PKM patterns, personal-os architecture deci **Цель:** агент сам инициирует исследования исходя из профиля и пробелов в wiki. -**Архитектура:** +#### Архитектура + ``` -User Profile (интересы, проекты, домены, семья) +Gap Detector (читает vault, находит темы без wiki-страниц) ↓ -Gap Detector (читает wiki, находит слабосвязанные области) +research-queue.md (приоритизированный список) ↓ -Hypothesis Generator (формирует вопросы для исследования) +proactive-research cron (суббота 05:00, 1 тема за прогон) ↓ -Research Queue (приоритизированный список) +3-round research loop → wiki page ↓ -Autonomous Research Runs (по расписанию, по одному вопросу) - ↓ -Results → wiki/inbox → review +queue item помечается [x], wiki/index.md обновляется ``` +#### Компоненты + +**research-queue.md** (`wiki/research-queue.md`) +- Живой список тем для исследования +- Воркер берёт top-1 `[ ]` item каждую субботу +- Alex может добавлять вручную +- ✅ Создан с 7 начальными темами (2026-05-16) + +**proactive-research cron** (суббота 05:00) +- Gap detection: темы 3+ упоминаний в vault без wiki-страницы → добавляет в queue +- 3-round research loop: broad → deep → synthesis +- Создаёт/обновляет wiki page, обновляет index.md, отмечает queue item +- ✅ Cron создан (job: 41896d17f5fc, 2026-05-16) + +**Начальная очередь:** +- Obsidian Bases vs Dataview 2026 +- Skip.tools production-readiness +- Home Assistant + Zigbee для RPi5 +- AI mental health apps landscape +- Swift Concurrency 2026 +- Personal OS orchestration alternatives +- Indie iOS monetization 2026 + +**Статус:** ✅ Инфраструктура создана 2026-05-16. Первый прогон: 2026-05-23. + --- ### Проект 4: Cross-domain Enrichment Agent -**Цель:** универсальный агент который берёт любой список/заметку из vault, читает user profile, обогащает данными из внешних источников. +**Цель:** vault note + external signal → personalized insight. Два режима: разовое обогащение и регулярный мониторинг. -**Принципы (без хардкода конкретных файлов):** +#### Архитектура -1. **Target Discovery** — агент сам находит заметки которые поддаются обогащению: списки без внешних данных, заметки с тегом `enrich-me`, файлы давно не обновлявшиеся -2. **Profile-aware** — всегда читает `wiki/user-profile.md` перед обогащением, фильтрует под конкретный контекст -3. **Output isolation** — результат сохраняется как отдельная заметка рядом с исходной, исходник не трогает -4. **Source tagging** — каждый enriched факт содержит источник + дату → можно обновлять - -**User Profile** (создать `wiki/user-profile.md`) — единый источник правды о пользователе: -```markdown -## Alex -- Интересы: [заполнить] -- Текущие проекты: [заполнить] -- Домены: [заполнить] - -## Семья -- [заполнить — состав, возрасты, интересы] +``` +Enrichment: Vault note + External (web) → companion note рядом с исходником +Monitoring: External stream → фильтр через user-profile → digest delivered ``` -**Примеры цепочек:** см. Часть 5a - -**Стек:** Hermes cron + web toolset + terminal (git change detection) + obsidian MCP - -**Оценка:** зависит от количества target notes; архитектура универсальная - ---- - -**Цель:** агент сам инициирует исследования исходя из профиля и пробелов в wiki. - -**Архитектура:** -``` -User Profile (интересы, проекты, домены) - ↓ -Gap Detector (читает wiki, находит слабосвязанные области) - ↓ -Hypothesis Generator (формирует вопросы для исследования) - ↓ -Research Queue (приоритизированный список) - ↓ -Autonomous Research Runs (по расписанию, по одному вопросу) - ↓ -Results → wiki/inbox → review -``` - -**User Profile** — файл `wiki/user-profile.md`: -- Технические домены: Swift/iOS, home infrastructure, AI agents, media pipeline -- Текущие проекты: personal-os, executor, media-toolbox -- Интересы: home automation, music production, cycling, parenting - -**Gap Detector** (еженедельно): -1. Читает wiki/index.md -2. Смотрит на последние сессии (briefs/daily) -3. Находит: что упоминается но нет страницы? что давно не обновлялось? где кластеры не связаны? -4. Генерирует список hypothesis: "исследовать X", "сравнить A vs B", "что нового в Y" - -**Research Queue** — `wiki/research-queue.md`: -```markdown -## Priority Queue -- [ ] Obsidian Bases vs Dataview — что использовать в 2026? -- [ ] Home Assistant integrations для RPi5 -- [ ] Swift Concurrency patterns актуальные -- [ ] Personal OS orchestration alternatives -``` - -**Scheduled Research** (например, еженедельно по субботам): -- Берёт top-1 из queue -- Запускает 3-round research loop -- Сохраняет в wiki -- Репортирует тебе с саммари - -**Стек:** новый cron + wiki-research skill + research-queue.md - -**Оценка:** 1-2 недели (зависит от wiki-research skill) +**vault-cross-enrichment cron** (воскресенье 04:00, web+file+terminal toolsets) +- Target discovery: `enrich-me` тег, файлы 30+ дней без обновления, app-ideas +- Enrichment types: app-ideas competitive analysis, wishlists (games/books/movies), travel, home automation +- Profile-aware: всё фильтруется через `wiki/user-profile.md` +- Output isolation: результат в `-enriched.md` companion файле, исходник не трогает +- Monitoring digest: tech stack updates, indie/App Store news, Bishkek local +- ✅ Cron создан (job: f3de00040aac, 2026-05-16) --- @@ -528,11 +494,11 @@ skills/ → процедуры и workflows пошагово | Проект | Статус | Следующий шаг | |---|---|---| -| Проект 1: Vault Enrichment | 🟡 В процессе | Воскресный прогон по новому промпту (топик-карты) | -| Проект 2: LLM Wiki Accumulation | ✅ Реализован | wiki-curation обновлён: crystallization + synthesize + inbox | -| Проект 3: Proactive Research | ⬜ Не начат | После наполнения wiki | -| Проект 4: Cross-domain Enrichment | ⬜ Следующий | Архитектура готова, воркер не создан | -| Проект 5: Memory Organizer | 🟡 В процессе | Шаг 0 сделан; daily cron запущен; wiki/tech/ частично заполнена | +| Проект 1: Vault Enrichment | 🟡 В процессе | Воскресный прогон по топик-картам | +| Проект 2: LLM Wiki Accumulation | ✅ Готов | crystallization + synthesize + inbox в wiki-curation | +| Проект 3: Proactive Research | ✅ Готов | research-queue.md + cron суббота 05:00 | +| Проект 4: Cross-domain Enrichment | ✅ Готов | vault-cross-enrichment cron воскресенье 04:00 | +| Проект 5: Memory Organizer | 🟡 В процессе | daily cron 04:00; wiki/tech/ частично заполнена | ### Что сделано (2026-05-16) - Task 3b убран из wiki-curation diff --git a/wiki/SCHEMA.md b/wiki/SCHEMA.md index 31e0acb2..83342e06 100644 --- a/wiki/SCHEMA.md +++ b/wiki/SCHEMA.md @@ -67,6 +67,7 @@ relevant to Alex's specific setup. | `raw/inbox/` | drop zone — files here get processed by nightly cron | | `raw/articles/` | extracted web articles (immutable after write) | | `raw/papers/` | PDFs and papers (immutable after write) | +| `research-queue.md` | proactive research queue — topics to investigate (Saturday cron) | ## Inbox Protocol diff --git a/wiki/index.md b/wiki/index.md index d5cc5730..06244307 100644 --- a/wiki/index.md +++ b/wiki/index.md @@ -47,3 +47,4 @@ Auto-maintained catalog of all pages in `wiki/`. Updated by the daily curation c - [[SCHEMA]] — Domain definition and curation rules for this wiki - [[log]] — Curation activity log +- [[research-queue]] — Proactive research queue (Saturday cron picks top item) diff --git a/wiki/research-queue.md b/wiki/research-queue.md new file mode 100644 index 00000000..00c5670c --- /dev/null +++ b/wiki/research-queue.md @@ -0,0 +1,29 @@ +--- +title: Research Queue +updated: '2026-05-16' +tags: + - research + - queue + - personal-os +--- +# Research Queue + +> Приоритизированная очередь для автономных исследований. Читается `proactive-research` cron (суббота 05:00). +> Воркер берёт top-1 `[ ]` item, исследует, сохраняет в wiki/, отмечает `[x]`. +> Для добавления: просто добавь `- [ ]` строку в ## Priority Queue. + +--- + +## Priority Queue + +- [ ] Obsidian Bases vs Dataview — что использовать в 2026 для личного vault? +- [ ] Skip.tools — текущее состояние, production-ready ли для iOS+Android из одного SwiftUI кода? +- [ ] Home Assistant + Zigbee 2026 — лучшие устройства под RPi5 бюджетно +- [ ] AI mental health apps — что вышло в 2025-2026, какие ниши заняты, где Gap для Reflect +- [ ] Swift Concurrency patterns — async/await best practices 2026, что изменилось +- [ ] Personal OS orchestration alternatives — что появилось после MemGPT/Letta, есть ли что лучше для home use +- [ ] Indie iOS app monetization 2026 — RevenueCat vs alternatives, что работает для нишевых apps + +## Completed + +