Personal OS Dashboard
Управление процессами, задачами и агентами Personal OS
Процессы
8
сквозных цепочек
Работает
6
голос, текст, sync, ST, logs, KE
Ждёт проверки
2
брифинг, вечерний итог
Не работает
1
Zoom-хук
Компоненты
27
19 ok / 2 ? / 3 todo / 3 off
Стоимость
$133
VPS $20 + Claude $100 + API $13
pos-bot: проверка...
Архитектура
Mac (разработка) + VPS Finland (бот 24/7). Vault синхронизируется через GitHub.
Работающие процессы (6)
ShuttleTasks (ночной сбор)
OK1cron 22:57 (VPS) + scheduled 23:00 (Mac)
2Парсит JSONL-сессии → задачи + решения → бэклоги → Telegram отчёт → git push
✓Проверен 03.04: 7 сессий, 14 задач, 5 решений
Session Logs Processor
OK✓Починен 03.04: добавлен путь /home/posbot/.claude/, обработал 10 сессий
Knowledge Engine Reindex
OK✓Cron создан 03.04: ежедневно 04:17 на VPS
Голосовое в Telegram
OK1Telegram .ogg → pos-bot скачивает → SQLite queue
2worker берёт из очереди → whisper.ts → OpenAI Whisper API
3claude -p spawn → skill process-input (классификация)
4skill vault-write → файл в vault → git commit+push
5Ответ в Telegram: title / project_id / type / N задач
Текст в Telegram
OK1Текст → pos-bot enqueue → classifier (light/medium/heavy)
2claude -p с system prompt по tier-у → process-input
3vault-write → vault + git sync + Telegram reply
Vault Sync
OK↔VPS cron */5: git add -A → commit → pull --rebase → push
↔Mac launchd 2 мин: git pull --rebase (только pull)
↔GitHub (vault-private) — центральный remote
Нерабочие / ждут проверки
Утренний брифинг
ЖДЁТ 09:03✓Cron создан 03.04 на VPS:
/root/scripts/morning-briefing.sh?Первый запуск — завтра 09:03. Проверить Telegram.
Вечерний итог
ЖДЁТ 21:03✓Cron создан 03.04 на VPS:
/root/scripts/evening-recap.sh?Первый запуск — сегодня 21:03. Проверить Telegram.
Zoom-запись → vault
ЧАСТИЧНО1НЕТ ХУКА — нет автоматической проверки новых записей в Zoom
2Ручная загрузка: аудио (.m4a) + VTT-файл
3zoom_hybrid_transcribe.py: Whisper (точный текст) + VTT (спикеры по таймкодам)
Linear интеграция
ЧАСТИЧНО1Skill linear-create написан, API-ключ есть
2Вызывается только при process-input, не при process-meeting
Задачи из GitHub Issues
Репозиторий: vslgvrlv/personal-os
| # | Проект | Приоритет | Название | Статус | |
|---|---|---|---|---|---|
| Загрузка... | |||||
1. Голосовое сообщение → Vault
Telegram voice → pos-bot → Whisper → classify → vault. Полностью автоматический.
1Василий отправляет голосовое в Telegram
2bot.ts ловит voice event, скачивает .ogg через Bot API в
/root/pos-bot/data/voice/, ставит реакцию, помещает в SQLite queue как type=voice3worker.ts poll каждые 1.5 сек, берёт из очереди, вызывает whisper.ts: POST на OpenAI API (model=whisper-1, lang=ru) → текст транскрипции
4worker.ts определяет tier через classifier. Формирует prompt = транскрипция + system prompt по tier-у
5claude-runner.ts spawn:
claude -p "..." --model opus --output-format json --permission-mode bypassPermissions --allowedTools ... Бюджет $0.50, таймаут 3 мин, cwd=/root/vault6Claude читает
CLAUDE.md vault-а, вызывает skill process-input: классифицирует project_id (EA/PBTH/PRSNL/WSHW), type (task/decision/note/idea), title, summary, tags, tasks, people7skill vault-write: git pull → формирует имя файла
{pid}_{type}_{date}_{time}_{title}.md с frontmatter → записывает в 02_PROJECTS/{project}/ → git add+commit+push8Если есть action items: skill linear-create → Linear GraphQL API → задачи с приоритетами
9worker.ts получает ответ Claude, отправляет в Telegram. Если >4000 символов — разбивает на части
10Сессия Claude сохраняется (sessionId). При следующем сообщении —
--resume. Ротация через 35 turns (summary передаётся в новую)2. Zoom-запись → Vault (гибридная транскрибация)
Аудио + VTT от Zoom → Whisper (точный текст) + Zoom (спикеры) → merge → dual pipeline → vault + Linear + Telegram
Шаг 1 отсутствует: нет хука на новые записи в Zoom. Загрузка ручная.
1Ручная загрузка: аудио (.m4a) + VTT-файл с Zoom (audio_transcript)
2zoom_hybrid_transcribe.py парсит VTT: извлекает сегменты (start, end, speaker)
3Строит посекундную timeline спикеров из VTT
4
ffmpeg сжимает аудио в mp3 mono 16kHz 32kbps. Если >24MB → нарезка на 10-мин чанки5Каждый чанк → Whisper API (verbose_json, timestamp_granularities=segment) → точный текст + таймкоды
6Merge: для каждого Whisper-сегмента находит доминирующего спикера по перекрытию таймкодов с VTT-timeline. Группирует последовательные сегменты одного спикера
7Markdown:
**Спикер:** текст — качественная диаризация без отдельного API8skill process-meeting — Dual Pipeline:
Pipeline A: chain-of-thought → action items → кто/что/когда → только подтверждённые → Linear
Pipeline B: решения (ЧТО + ПОЧЕМУ) + TL;DR (2 предложения) + открытые вопросы
Pipeline A: chain-of-thought → action items → кто/что/когда → только подтверждённые → Linear
Pipeline B: решения (ЧТО + ПОЧЕМУ) + TL;DR (2 предложения) + открытые вопросы
9vault-write →
Frontmatter: entities, decisions (с why), tasks (с owner). Body: полный транскрипт
05_meetings/{pid}_meeting_{date}_{source}_{duration}min.mdFrontmatter: entities, decisions (с why), tasks (с owner). Body: полный транскрипт
10Обновить профили в
05_OWNER/people/ + linear-create + Telegram-карточка3. ShuttleTasks (ночной сбор задач)
Ежедневно ~23:00. Парсит JSONL-сессии Claude Code, извлекает задачи и решения, раскладывает по проектам.
1
find *.jsonl -mtime 0 — находит все сессии за сегодня (Mac: .claude/projects/-Users-pk-Documents-Git/, VPS: .claude/projects/-root-vault/)2Парсит JSONL: type=human (сообщения) + type=assistant (ответы). Для больших >5MB — первые и последние 300 строк
3Извлекает: темы, решения, action items. Маппит на проекты по ключевым словам
4Читает
04_tasks/ бэклоги → сравнивает семантически → добавляет новые (без дублей)5Фиксирует решения в
03_decisions/ с frontmatter source=shuttle-tasks-auto6Telegram отчёт: N сессий, M задач, K решений + git commit+push
4. Утренний брифинг / Вечерний итог
Cron создан 03.04. Ждёт первого запуска для проверки.
Утро (09:00)
1git pull → сканирование вчерашних заметок
2Задачи с дедлайном сегодня + встречи из calendar
3Открытые вопросы из недавних заметок
4Inbox count (неклассифицированное)
→Telegram: Вчера / Сегодня / Открытые / Inbox: N
Вечер (21:00)
1Что сделано: заметки за сегодня, завершённые задачи
2Новые задачи в Linear за сегодня
3Что осталось открытым
→Telegram: Сделано / Новые задачи / На завтра
5. Правила классификации (process-input)
Как входящее сообщение превращается в структурированную заметку в vault
Определение типа
ameeting — обсуждение, несколько участников, протокол
bdecision — явное решение: "давай так", "решили"
ctask — конкретное действие: "нужно", "сделай"
didea — мысль, гипотеза, "а что если"
econtext — факт, информация для будущего
fnote — всё остальное, короткие сообщения <10 слов
Определение проекта (project_id)
EAEclipse Auto — автодилер, машины, Денис
PBTHPaintball TeamHub — турниры, caldev, приложение
PRSNLPersonal Planning — семья, поездки, коучинг
WSHWWeShow — мероприятия, CRM, Маша
POSPersonal OS — бот, VPS, vault, система
?При неоднозначности — наиболее вероятный, не спрашивать
6. Vault-write (запись в vault)
Единый процесс записи для всех источников
1
git pull --rebase2Имя файла:
{project_id}_{type}_{YYYY_MM_DD}_{HHMM}_{safe_title}.md3Путь: project_id + type → конкретная папка в
02_PROJECTS/{project}/4Frontmatter: type, project, project_id, status, created, source, tags, summary
5Body: суть, полный текст, задачи, упомянутые люди
6
git add -A → commit "auto: {type} — {title}" → pushShuttleTasks
Ночной сбор задач из JSONL-сессий Claude Code. Парсит сессии за день, извлекает задачи и решения, раскладывает по проектным бэклогам, отправляет отчёт в Telegram.
Утренний брифинг
Сканирует вчерашние заметки, задачи с дедлайном сегодня, встречи из календаря. Отправляет сводку в Telegram утром.
Вечерний итог
Подводит итоги дня: что сделано, новые задачи, что осталось открытым. Отправляет вечернюю сводку в Telegram.
pos-bot
Telegram-бот: Bun + grammY, SQLite queue, systemd service
Загрузка статуса...
Все компоненты (27)
| Статус | Компонент | Где | Триггер | Что делает |
|---|---|---|---|---|
| OK | pos-bot | VPS | systemd 24/7 | Telegram-бот: Bun + grammY, SQLite queue, text/voice/photo/doc/forward |
| OK | worker.ts | VPS | poll 1.5s | Берёт из очереди, classifier (light/medium/heavy), spawn claude -p, ротация сессий |
| OK | whisper.ts | VPS | по запросу | OpenAI Whisper API (whisper-1, ru), для коротких голосовых без чанкинга |
| OK | claude-runner.ts | VPS | по запросу | Spawn claude CLI: model/cwd/timeout по tier-у, budget $0.50, bypassPermissions |
| OK | watchdog.sh | VPS | cron * мин | Healthcheck pos-bot :9090, restart при падении |
| OK | vault-sync (VPS) | VPS | cron */5 мин | git add+commit+pull --rebase+push, алерт в TG при ошибке |
| OK | vault-sync (Mac) | Mac | launchd 2мин | git pull --rebase (только pull, без push) |
| OK | Claude Code CLI | Mac | ручной | Opus 4.6, Max, основной рабочий инструмент |
| OK | /project | Mac | /project <id> | Загрузка контекста: project_index, current_state, tasks, logs, decisions |
| OK | /ceo-council | Mac | /ceo-council | 3-5 параллельных субагентов-экспертов, синтез разногласий |
| OK | hook: PostCompact | Mac | auto compact | Напоминание: перечитай memory/MEMORY.md и current_sprint |
| OK | hook: Stop | Mac | auto stop | Проверка: current_sprint.md обновлялся <2ч назад? |
| OK | claude-config | Both | ручной | Repo + setup.sh: symlinks CLAUDE.md + hooks, портативность |
| OK | MCP: Google Drive | Mac | auto | Чтение/запись Google Sheets через OAuth |
| ? | ShuttleTasks (Mac) | Mac | scheduled 23:00 | Ночной сбор: JSONL-сессии → задачи → vault |
| ? | ShuttleTasks (VPS) | VPS | cron 22:57 | То же, для VPS-сессий |
| ? | process-meeting | VPS | ручной | Dual pipeline: tasks+summary, vault-write, Linear, TG-карточка |
| ? | knowledge_engine.py | VPS | ? | SQLite+FTS5+embeddings индексация vault |
| ? | zoom_hybrid_transcribe.py | VPS | ручной | Whisper текст + VTT спикеры → Markdown с диаризацией |
| OK | process_session_logs.py | VPS | cron */час | Починен 03.04: добавлен путь posbot |
| OK | current_sprint.md | Mac | hook Stop | Создан 03.04 |
| ? | Утренний брифинг | VPS | cron 09:03 | Cron создан 03.04, ждёт первого запуска |
| ? | Вечерний итог | VPS | cron 21:03 | Cron создан 03.04, ждёт первого запуска |
| OK | Бэклоги WeShow, EA | Both | ShuttleTasks | Созданы 03.04, наполнены (14 задач) |
| OK | knowledge_engine reindex | VPS | cron 04:17 | Cron создан 03.04 |
| OFF | Telegram plugin (Mac) | Mac | -- | Отключён: конфликт polling VPS/Mac |
| OFF | context-engine.service | VPS | -- | Legacy (node-pty), заменён pos-bot |
| OFF | watchdog.sh (legacy) | VPS | -- | Старый tmux-based, не используется |
Mac
| Vault | /Users/pk/Documents/Git/arc/ |
| Memory | ~/.claude/projects/-Users-pk-Documents-Git/memory/ |
| Skills | ~/.claude/skills/{project,ceo-council}/ |
| Scheduled | ~/.claude/scheduled-tasks/shuttle-tasks/ |
| Hooks | ~/.claude/hooks/stop_check_memory.sh |
| Settings | ~/.claude/settings.json |
| CLAUDE.md | ~/.claude/CLAUDE.md → claude-config/ |
| Сессии JSONL | ~/.claude/projects/-Users-pk-Documents-Git/*.jsonl |
| vault-sync | ~/.local/bin/vault-sync.sh |
| LaunchAgent | ~/Library/LaunchAgents/com.pk.vault-sync.plist |
| Дашборды | /Users/pk/Documents/Git/dshbrds/ |
VPS 78.17.11.162
| Vault | /root/vault/ |
| pos-bot | /root/pos-bot/ (user: posbot) |
| pos-bot data | /root/pos-bot/data/ (pos.db, voice/, photos/) |
| Skills | /root/.claude/skills/process-meeting/ |
| Scheduled | /root/.claude/scheduled-tasks/shuttle-tasks/ |
| Scripts | /root/scripts/{vault-sync,shuttle-tasks}.sh |
| CLAUDE.md | /root/vault/CLAUDE.md |
| System scripts | /root/vault/00_SYSTEM/scripts/ |
| Сессии JSONL | /root/.claude/projects/-root-vault/*.jsonl |
| .env (ключи) | /root/.env + /root/pos-bot/.env |
| Логи | /root/logs/ + /var/log/session_processor.log |
| Git remote | git@github.com:vslgvrlv/vault-private.git |
Расписание
| Время | Где | Процесс | Статус |
|---|---|---|---|
| * мин | VPS | watchdog → healthcheck pos-bot | OK |
| 1.5 сек | VPS | worker.ts → poll SQLite queue | OK |
| 2 мин | Mac | vault-sync → git pull | OK |
| */5 мин | VPS | vault-sync → git add+commit+push | OK |
| */час | VPS | process_session_logs.py | OK |
| 04:17 | VPS | knowledge_engine reindex | OK |
| 09:03 | VPS | Утренний брифинг | ЖДЁТ |
| 21:03 | VPS | Вечерний итог | ЖДЁТ |
| 22:57 | VPS | ShuttleTasks | OK |
| ~23:00 | Mac | ShuttleTasks | OK |
Критические проблемы
1. Zoom-хук не существуетНет автоматической проверки новых записей в Zoom. Скрипт
zoom_hybrid_transcribe.py работает, но его нужно вызывать вручную. Zoom API ключи есть в /root/.env.2. UFW firewall на VPS (#16)VPS открыт наружу без firewall. Нужно настроить UFW.
3. Отдельный пользователь claude-runner (#15)Всё работает от root, что небезопасно.
Предупреждения
4. Linear интеграция неполнаяРаботает при process-input (Telegram), но НЕ вызывается при process-meeting (Zoom).
5. Дубликаты bun-процессов (#14)Root cause не найден. Watchdog убивает, но проблема остаётся.
6. Утренний брифинг + вечерний итогCron создан 03.04. Ждём первого запуска для проверки.
Проекты в vault
| ID | Проект | Папка | overview | context | decisions | tasks | meetings | logs |
|---|---|---|---|---|---|---|---|---|
| EA | Eclipse Auto | Eclipce Auto | -- | -- | 1 | ПУСТО | 20+ | 1 |
| PBTH | Paintball TeamHub | Paintball TeamHub | 1 | 6 | 6 | 1 | 2 | 7 |
| PRSNL | Personal Planning | Personal Planning | 1 | 5 | -- | 1 | 1 | 2 |
| POS | Personal OS | Personal OS | 1 | 2 | 3 | 1 | -- | -- |
| WSHW | WeShow | WeShow | -- | -- | -- | ПУСТО | -- | 3 |