[2026-05-16] Проекты 3+4: proactive-research cron, cross-enrichment cron, research-queue, plan updated

This commit is contained in:
Alexey Martemyanov
2026-05-16 13:27:20 +06:00
parent e369194810
commit 0b51499848
6 changed files with 333 additions and 87 deletions
+6 -4
View File
@@ -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):
+247
View File
@@ -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
@@ -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
+1
View File
@@ -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
+1
View File
@@ -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)
+29
View File
@@ -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
<!-- Воркер переносит сюда выполненные, ссылается на wiki page -->