infra/@kt-station.infra/connect/ALGORITHM.md

Алгоритм Connect канала

РОЛИ

Роль Где Действия
Клод сервер пишет скрипты в beget-s3/dl/, читает результаты из beget-s3/up/
Коннектор ПК kt смотрит локальный ~/SERVER/dataspace/dl/ (sshfs), запускает скрипты, пишет результаты в up/

ПОЛНЫЙ ЦИКЛ

ПК kt                                    Сервер / beget-s3
─────────────────────────────────────────────────────────────

[1] Пользователь запускает коннектор:
    bash <(curl -s http://91.218.142.168/files/connector.sh)

[2] Клод кладёт задачу:
    /mnt/beget-s3/dl/task.sh

[3] Файл мгновенно появляется на ПК (sshfs):
    ~/SERVER/dataspace/dl/task.sh

[4] Коннектор каждые 15 сек (таймаут скрипта 120с, простой 120 опросов = 30 мин):
    ls ~/SERVER/dataspace/dl/*.sh
    → видит task.sh
    → bash task.sh  ← выполняет локально
    → результат → ~/SERVER/dataspace/up/TIMESTAMP_task.log
    → rm ~/SERVER/dataspace/dl/task.sh   ← удаляет (через sshfs)

[5] Клод проверяет beget-s3/up/:
    → видит TIMESTAMP_task.log → читает результат
    → кладёт следующую задачу: /mnt/beget-s3/dl/task2.sh

[6] → повторяется с шага [3]

ПРАВИЛА

  1. Скрипты читаются локально из ~/SERVER/dataspace/dl/ (sshfs)
  2. Скрипт удаляется после выполнения (через sshfs)
  3. Результат всегда в beget-s3/up/ — имя: YYYYMMDD_HHMMSS_taskname.log
  4. Клод сам ждёт результат — полит beget-s3/up/ в цикле
  5. SSH резерв: если dl/ не смонтирован — коннектор переключается на SSH

КАК КЛОД ОТПРАВЛЯЕТ ЗАДАЧУ И ЖДЁТ РЕЗУЛЬТАТ

# 1. Положить задачу
cat > /mnt/beget-s3/dl/task.sh << 'EOF'
#!/bin/bash
# команды на ПК
EOF

# 2. Ждать результат (до 100 сек)
for i in $(seq 1 20); do
    RESULT=$(ls /mnt/beget-s3/up/*task* 2>/dev/null)
    if [ -n "$RESULT" ]; then
        cat "$RESULT"
        break
    fi
    sleep 5
done

ПАПКИ

Папка на сервере Папка на ПК Метод Направление Назначение
beget-s3/dl/ ~/SERVER/dataspace/dl/ sshfs сервер→ПК задачи для ПК
beget-s3/up/ ~/SERVER/dataspace/up/ sshfs ПК→сервер результаты с ПК

РЕЗЕРВНЫЙ РЕЖИМ (SSH)

Если ~/SERVER/dataspace/dl/ не смонтирован, коннектор автоматически переключается на SSH:

primary:  ls ~/SERVER/dataspace/dl/*.sh    sshfs
fallback: ssh ls /mnt/beget-s3/dl/*.sh    SSH