Установка с помощью агента

Эта страница для ИИ-агента для программирования (Claude Code или любого агента с shell), которого попросили установить и настроить aipager для своего человека. Следуй ей шаг за шагом. Каждая команда здесь выполняется без вопросов и никогда не требует интерактивного терминала.

Исходник на GitHub ↗Эта страница переведена с английской; если они расходятся, верна английская версия. English

aipager позволяет этому человеку управлять сессиями Claude Code из Telegram. Когда закончишь, у человека будет Telegram-бот, который общается только с ним, а aipager будет работать в фоне на этом компьютере.

1. Что может сделать только сам человек#

Попроси человека сделать это. Ты не можешь сделать это за него.

  1. Создать бота. В Telegram открыть @BotFather, отправить /newbot, выбрать имя и имя пользователя. BotFather отвечает токеном бота (он выглядит как 123456789:AA...).

  2. Нажать «Запустить» (Start) в боте. Открыть нового бота (BotFather даёт ссылку t.me/<bot username>) и нажать «Запустить». Бот не может написать тому, кто этого не сделал.

  3. Войти в Claude Code на этом компьютере. Если человек уже пользуется здесь Claude Code, делать ничего не нужно. На сервере без экрана он один раз запускает claude в своём терминале и входит (там будет ссылка, которую нужно открыть на другом устройстве). Если удобнее долгоживущий токен, он запускает claude setup-token, который только выводит токен: человек сам сохраняет его для сессий aipager, в своём терминале (вставить токен, нажать Enter, потом Ctrl-D):

    sh
    mkdir -p ~/.config/aipager
    (umask 077 && { printf 'CLAUDE_CODE_OAUTH_TOKEN='; cat; } >> ~/.config/aipager/daemon.env)
    

    aipager передаёт этот токен каждой сессии, которую запускает (см. безопасность). Ты его никогда не читаешь.

2. Как человек передаёт тебе токен#

У кого есть токен бота, тот управляет ботом. Предложи человеку эти два способа и дай выбрать.

  • Самый безопасный: файл, который ты никогда не читаешь. В своём терминале человек запускает:

    sh
    mkdir -p ~/.config/aipager
    rm -f ~/.config/aipager/bot-token
    (umask 077 && cat > ~/.config/aipager/bot-token)
    chmod 600 ~/.config/aipager/bot-token
    

    потом вставляет токен, нажимает Enter и нажимает Ctrl-D. Читать файл может только этот человек (права 600). Когда настройка пройдёт успешно, файл можно удалить (aipager хранит свою копию в своей конфигурации). Человек говорит тебе путь (~/.config/aipager/bot-token). Токен никогда не попадает в твою переписку, а ты передаёшь путь в --token-file.

  • Самый быстрый: вставить в переписку. Так тоже можно, но прямо скажи, что это значит: токен останется в истории твоей переписки и уйдёт к поставщику твоей модели. Если эту историю когда-нибудь могут увидеть другие, человеку стоит потом отправить /revoke в @BotFather и поставить новый токен через aipager setup --force (шаг 3.2, с --force). Если человек выбирает этот способ, сохрани токен в тот же файл, не выводя его: лучше всего своим инструментом записи файлов, потом chmod 600 ~/.config/aipager/bot-token. Если у тебя есть только shell, передай его через stdin с помощью here-document, чтобы он не был аргументом команды, которая его пишет:

    sh
    mkdir -p ~/.config/aipager
    rm -f ~/.config/aipager/bot-token
    (umask 077 && cat > ~/.config/aipager/bot-token) <<'EOF'
    <the token>
    EOF
    chmod 600 ~/.config/aipager/bot-token
    

    Потом используй --token-file, как ниже.

Telegram ID человека (ID его чата, число вроде 123456789) не секрет. Если человек его не знает, ты можешь его найти (шаг 3.3).

3. Твои шаги#

3.1 Установить aipager#

sh
curl -fsSL https://raw.githubusercontent.com/dev-aly3n/aipager/main/install.sh | sh

Он использует uv или pipx, что найдётся (на macOS ещё и Homebrew), и сначала ставит uv, если нет ничего. Можно и самому запустить uv tool install aipager или pipx install aipager. Если после этого aipager не находится, добавь ~/.local/bin в PATH своего shell (export PATH="$HOME/.local/bin:$PATH").

Если aipager уже был установлен, эти команды его не обновляют. Проверь, что работает aipager setup --help; если нет, установленный aipager слишком старый: запусти aipager update и проверь ещё раз. Если aipager update говорит перезапустить aipager, скажи об этом человеку и не перезапускай его со своей стороны (см. 4).

Не запускай aipager config: это интерактивный мастер для людей.

3.2 Настроить aipager#

sh
aipager setup --token-file ~/.config/aipager/bot-token --chat-id 123456789 --service --json

Используй настоящий ID человека и путь к файлу с токеном. Вместо --token-file можно передать токен через pipe с --token-stdin (например, --token-stdin < path); pipe должен закрыться, setup ждёт его не больше 30 секунд.

setup проверяет токен в Telegram, проверяет этот компьютер, отправляет человеку одно тестовое сообщение («aipager is set up for you. ...») и только потом записывает свою конфигурацию, добавляет hooks Claude Code в ~/.claude/settings.json и, с --service, ставит и запускает фоновую службу. Если какая-то проверка не проходит, ничего не записывается.

Добавь --dry-run, чтобы сначала посмотреть, что изменится. --role admin даёт человеку роль admin вместо роли owner (вариант по умолчанию, owner, правильный для человека, который настраивает свой собственный компьютер).

3.3 Если человек не знает свой Telegram ID#

sh
aipager setup detect-chat --token-file ~/.config/aipager/bot-token --json

Попроси человека нажать «Запустить» в боте (или отправить ему любое сообщение), пока команда ждёт (до 5 минут; --timeout SECONDS меняет это время). Она выводит самого последнего отправителя в candidate (id, first_name, last_name, username) и ничего не сохраняет. Покажи человеку имя и имя пользователя и спроси «Это ты?». Только если человек ответит «да», запусти шаг 3.2 с --chat-id, равным candidate.id. Если other_candidates не 0, боту писали и другие люди: проверь особенно внимательно.

3.4 Прочитать результат#

С --json setup выводит ровно один JSON-объект в stdout. Читай exit_code (то же, что код выхода процесса), status, error, message, fix и next_step. Если stdout не JSON (неизвестный флаг, неправильное слово после setup или aipager настолько старый, что у него нет setup), код выхода 2, а причина написана простым текстом в stderr: прочитай её, а для старого aipager см. 3.1.

ВыходerrorЧто ты делаешь
0installed, updated или unchanged: готово, переходи к 3.5. dry_run: ничего не записано; запусти ту же команду без --dry-run. detect-chat found: попроси человека подтвердить, как в 3.3, потом запусти 3.2.
1config_malformed, ambiguous_install, settings_invalid, test_send_failed, write_failed, service_failed, internal_errorПокажи человеку message и fix. ambiguous_install: человек исправляет это в aipager config. Не правь файлы вручную.
2usage, token_malformed, token_stdin_timeout, bad_chat_id, ...Твой ввод был неверным; fix называет флаг. token_malformed: в файле нет токена бота, попроси человека его проверить.
3deps_missingСледуй fix (у каждого недостающего пункта есть свой fix в deps.items), потом снова запусти setup.
4token_rejectedTelegram отклонил токен. Попроси у человека токен ещё раз (или новый у @BotFather).
5chat_not_started, bot_blockedПопроси человека открыть бота, нажать «Запустить» (или разблокировать его), потом снова запусти setup.
6existing_installaipager уже настроен с другим токеном, чатом или ролью. Скажи человеку, что отличается, и спроси, прежде чем добавлять --force.
7telegram_unreachableПроблемы с сетью, или Telegram перегружен. Подожди минуту и попробуй снова.
8detect_timeoutdetect-chat не увидел ни одного сообщения. Попроси человека снова нажать «Запустить» и запусти ещё раз. С предупреждением updates_backlog нажатие «Запустить» не поможет: спроси у человека его числовой ID.
9daemon_runningdetect-chat: aipager для этого бота уже работает и получает его сообщения. Спроси у человека его числовой ID (или спроси разрешения, прежде чем останавливать его через aipager service stop).
10updates_conflictdetect-chat: сообщения этого бота читает другая программа. Спроси у человека его числовой ID.
130interruptedОстановлено через Ctrl-C.

Если daemon.restart_needed равно true, aipager нужно перезапустить, чтобы применить изменение, или setup не смог понять, работает ли он (предупреждение daemon_unknown). Следуй next_step, он говорит, что из этого (если он предлагает aipager start, который остаётся на переднем плане, лучше выбери aipager service install). Скажи человеку и перезапускай (aipager service stop, потом aipager service start) только если он попросит, и никогда изнутри сессии, которой человек управляет через aipager (см. 4). Полный список ошибок, предупреждений и ключей JSON есть в справке по команде setup.

3.5 Проверить установку#

sh
aipager doctor --json

Команда только читает и ничего не отправляет. Выход 0 значит, что ни одна проверка не провалилась. Для каждой проверки со status, равным fail (или warn), покажи человеку её title, detail и fix.

3.6 Рассказать человеку о результате#

Скажи в нескольких строках:

  • бота (@ + bot_username) и было ли отправлено тестовое сообщение (test_message);
  • что было настроено (changed и service.result);
  • как запустить сессию Claude: отправить /new боту в Telegram или запустить aipager session <name> в терминале;
  • всё, на что указал doctor, и next_step, если он что-то просит.

4. Чего делать нельзя#

  • Не выводи токен, не передавай его в echo или cat и никогда не ставь его в командную строку (--token всё равно отклоняется). Передавай его только файлом или через stdin.
  • Не правь вручную ~/.config/aipager/ (кроме файла с токеном из шага 2) и ~/.claude/settings.json. Их записывают aipager setup и aipager config.
  • Не добавляй --force, не спросив человека: он заменяет уже существующие токен, чат или роль.
  • Не перезапускай и не завершай свою собственную сессию Claude Code. При первой установке сессия, в которой ты работаешь, не находится под aipager и не должна: новые сессии появляются через /new в Telegram или aipager session <name>. Если aipager уже настроен и человек общается с тобой через него (например, чтобы запустить setup --force с новым токеном), не останавливай и не перезапускай aipager со своей стороны: твоя задача и её ответ оборвутся. Скажи человеку перезапустить его, когда закончишь.

5. Группы#

aipager setup настраивает личный чат человека с ботом. Чтобы добавить группу Telegram с другими людьми и их ролями, человек запускает aipager config (настройку групп пока нельзя сделать скриптом). См. Работа в команде и группы.

См. также#