Uname:Linux antigravity-cli 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64

Base Dir : /var/www/moonbloom

User : wp-moonbloom


403WebShell
403Webshell
Server IP : 85.155.190.233  /  Your IP : 216.73.216.103
Web Server : nginx/1.24.0
System : Linux antigravity-cli 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 x86_64
User : wp-moonbloom ( 1001)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /opt/Gemini_Swarm_Core/docs/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/Gemini_Swarm_Core/docs/vps_scheduler_implementation_plan.md
# План реализации локального планировщика Роя на VPS

Этот план описывает шаги по внедрению надежного, локального планировщика задач для Роя на вашем VPS. Он будет работать напрямую с локальными путями проектов (без клонирования), обеспечивая полную изоляцию контекстов и логов для каждой задачи.

---

## 🛠️ Предлагаемые изменения

### 1. [NEW] [schedule.json](file:///c:/Users/Mikhail/nocode/Gemini%20CLI/Gemini_Swarm_Core/schedule.json)
Файл конфигурации расписания. Будет содержать массив задач с указанием локального пути, cron-выражения, промпта для запуска и таймаута.

```json
[
  {
    "id": 1,
    "task_name": "send_proposals",
    "repo_path": "/opt/project-a-proposals",
    "cron": "0 11 * * 2",
    "prompt": "Read GEMINI.md and tasks.md. Find the next incomplete task in tasks.md, execute it, mark it as completed, and commit/push changes.",
    "timeout_sec": 1800,
    "enabled": true
  },
  {
    "id": 2,
    "task_name": "write_seo_articles",
    "repo_path": "/var/www/html/seo-blog",
    "cron": "30 11 * * 2",
    "prompt": "Read GEMINI.md and tasks.md. Select the next keyword/topic from content plan, generate the article HTML, save it directly to the blog directory, mark task completed, and commit changes.",
    "timeout_sec": 1800,
    "enabled": true
  }
]
```

### 2. [NEW] [run_agent_task.py](file:///c:/Users/Mikhail/nocode/Gemini%20CLI/Gemini_Swarm_Core/scripts/run_agent_task.py)
Автономный скрипт-обертка для запуска задачи. Будет выполнять переключение контекста в базе данных и запускать `agy` в нужной директории.

**Логика работы скрипта:**
1. Принимает аргумент `--task-id` (или считывает параметры из `schedule.json`).
2. Подключается к базе данных `sessions.db` на VPS.
3. Проверяет, существует ли сессия для данного `repo_path` и `task_name`.
   - Если нет: создает новую запись в таблице `sessions` и генерирует уникальный `conversation_id` (UUID).
4. Прописывает `active_session_id` in `app_settings` (для изоляции логов).
5. Запускает `agy` в дочернем процессе:
   - `cwd` = `repo_path`
   - Флаги: `-p "<prompt>" --conversation <conversation_id>`
   - `stdout` и `stderr` перенаправляются в `/путь_к_проекту/swarm.log`.
6. После завершения процесса `agy` отправляет результат (success/fail) и последние строки лога обратно в Telegram-мост.

---

### 3. [MODIFY] [tg_bridge.py](file:///c:/Users/Mikhail/nocode/Gemini%20CLI/Gemini_Swarm_Core/scripts/tg_bridge.py)
Интеграция фонового планировщика и новых команд в Telegram-мост.

**Что изменится:**
* **Фоновый цикл (`swarm_scheduler_loop`):**
  Асинхронная функция, которая каждые 30 секунд читает `schedule.json`, парсит cron-выражения (будет использован легковесный парсер cron на чистом Python) и запускает `run_agent_task.py` в фоновом режиме через `asyncio.create_subprocess_exec`.
* **Новые Telegram-команды:**
  * `/schedules` — показывает список задач, их пути, расписание и статус активности.
  * `/schedule_run <id>` — позволяет принудительно запустить любую задачу из расписания прямо сейчас в фоне.
* **Menu hints:** Добавление этих команд в список автодополнения бота.

---

### 4. [MODIFY] [GEMINI.md](file:///c:/Users/Mikhail/nocode/Gemini%20CLI/Gemini_Swarm_Core/GEMINI.md)
Обновление документации: внесение описания стандартизированного манифеста для целевых репозиториев (структура файлов `GEMINI.md`, `tasks.md`, `.geminiignore` в каждом проекте).

---

## 🧪 План верификации

### Автоматические проверки (VPS):
1. **Тест парсинга cron:** Запуск юнит-теста для проверки корректности разбора cron-выражений (например, `*/5 * * * *`, `0 11 * * 2`).
2. **Тест переключения контекста:** Запуск `run_agent_task.py` вручную и проверка через sqlite-клиент, что `active_session_id` в `sessions.db` изменился на правильный и лог записался в нужную сессию.

### Ручные проверки (Telegram):
1. Отправка боту команды `/schedules` — бот должен вывести таблицу расписания из `schedule.json`.
2. Отправка команды `/schedule_run 1` — бот должен запустить задачу №1, переключить контекст на её папку, выполнить промпт, записать логи в `swarm.log` этого проекта и прислать отчет о завершении.
3. Проверка через команду `/log send_proposals` — бот должен вывести последние строки выполнения именно для этой задачи.

Youez - 2016 - github.com/yon3zu
LinuXploit