Справочник CLI
aetron-miner - референсный клиент, который майнер запускает у себя. Это тонкая обёртка командной строки над фоновым демоном: CLI шлёт запросы через локальный RPC-сокет, а демон держит личность, соединение с цепью и движок, который забирает задания. Здесь перечислены все группы команд, что делает каждая подкоманда, её синтаксис и типичный пример. Пошаговая первая настройка описана в статье С чего начать майнить.
Вызов и глобальные опции
aetron-miner [--lang <en|ru>] [COMMAND] [ARGS]
--lang глобальный и может стоять при любой команде. Принимает en и ru. Если его нет, язык интерфейса определяется по операционной системе. Флаг имеет приоритет над переменной окружения AETRON_LANG, и выбор замораживается на весь оставшийся процесс.
Запуск aetron-miner без команды ведёт себя по-разному в зависимости от того, где он выполняется:
- В терминале (когда и stdin, и stdout являются TTY) открывается интерактивный TUI, полноэкранная панель для тех же операций, что описаны ниже.
- В пайпе, скрипте или CI печатается стандартная справка, и процесс завершается, а не зависает на интерактивном экране.
aetron-miner # интерактивный TUI
aetron-miner --lang ru status
aetron-miner | cat # печатает справку, TUI не открывается
Состояние живёт под ~/.aetron-miner/: config.toml для конфигурации, daemon.sock для RPC-сокета, daemon.log для логов и keystore/ для ключей.
Настройка и жизненный цикл
init
Интерактивный мастер, создающий ~/.aetron-miner/config.toml. Если файл уже существует, спрашивает перед перезаписью. Когда stdin не является TTY, переходит на построчное чтение ответов и работает в скриптах.
aetron-miner init
Мастер спрашивает путь к кошельку, идентификатор Нейронета, путь к файлу модели, необязательный лимит GPU от 0 до 100 процентов (пусто означает отсутствие лимита), каталог кэша для моделей и датасетов и максимальный размер кэша в ГБ как мягкий лимит, где 0 означает без ограничений. Для размера кэша он предлагает половину свободного места на томе с этим каталогом. Затем спрашивает сеть (mainnet, testnet или local, по умолчанию testnet), а для local дополнительно WebSocket-адрес ноды Substrate и идентификатор задачи.
start
Поднимает майнера целиком одной командой: запускает фоновый демон, дожидается его RPC-сокета, затем запускает цикл событий движка. Эквивалентно daemon start, за которым идёт engine start.
aetron-miner start
stop
Сначала останавливает движок (аккуратно, дав текущему заданию завершиться), затем демон.
aetron-miner stop
status
Печатает, существует ли файл конфигурации, затем опрашивает демон по RPC и отдаёт живой снимок: PID, аптайм, настроенную сеть, реально собранный бэкенд цепи, состояние майнинга и число выполненных заданий. Если демон не запущен, откатывается на то, что можно прочитать локально, и подсказывает, как его поднять.
aetron-miner status
logs
Стримит ~/.aetron-miner/daemon.log: сначала печатает уже накопленное, затем следует за файлом, как tail -f. Ротацию обрабатывает перечитыванием с начала, когда файл уменьшился. Если файла нет, скажет об этом, а не будет ждать.
aetron-miner logs
daemon
Жизненный цикл фонового процесса. start порождает отсоединённый демон, который пишет pid-файл и открывает Unix-сокет; CLI ждёт появления обоих до 3 секунд, прежде чем отчитаться об успехе. stop читает pid-файл, шлёт SIGTERM, ждёт корректного выхода до 5 секунд, затем шлёт SIGKILL. restart - это stop и start подряд, и именно так применяются правки конфига. status шлёт пинг и печатает PID с аптаймом либо сообщает, что ничего не запущено.
aetron-miner daemon start
aetron-miner daemon stop
aetron-miner daemon restart # применить изменения в config.toml
aetron-miner daemon status
engine
Управляет циклом событий внутри работающего демона. Всем пяти подкомандам нужен поднятый демон, иначе CLI попросит сначала выполнить daemon start.
startначинает забирать задания.stopзапрашивает аккуратное завершение и дожидается текущего задания.pauseприостанавливает цикл, ничего не разбирая.resumeснимает паузу.statusпечатает снимок движка: режим, выполненные задания, упавшие задания, среднюю задержку в миллисекундах, идентификатор текущего задания, если оно есть, последнюю ошибку, если она была, завершённые циклы Pulse, число сделанных проверок Pulse, уровень Pulse и активный бэкенд инференса.
aetron-miner engine start
aetron-miner engine stop
aetron-miner engine pause # освободить GPU, не теряя состояние демона
aetron-miner engine resume
aetron-miner engine status
env
Окружение Python для раннера, то есть стек PyTorch, который нужен вычислительной части. Сам бинарь раннера ML-стека не содержит, поэтому именно это окружение и даёт ему возможность работать.
aetron-miner env install [--manifest <path|url>] [--profile <name>] [--skip-selftest]
aetron-miner env update [--manifest <path|url>] [--profile <name>]
aetron-miner env status [--json]
aetron-miner env verify
aetron-miner env rollback
installчитает подписанный манифест версий, определяет ваше железо, подбирает подходящий профиль (сборка CUDA, Apple Silicon MPS или CPU) и ставит зафиксированный набор колёс. На вашей машине ничего не резолвится: lock-файл перечисляет каждый пакет с хэшем.--profileнавязывает профиль вместо автоопределения, и так проверяют стек, который вашему GPU не достался бы.updateсобирает новое окружение рядом с текущим и переключается только после успешного самотеста. Старое окружение остаётся на диске.statusсообщает активный профиль, установленные версии и результат последнего самотеста.--jsonделает вывод машиночитаемым.verifyзаново прогоняет самотест раннера против текущего окружения.rollbackвозвращаетcurrentна предыдущее окружение. Это выход из неудачного обновления.
--skip-selftest активирует окружение, которое себя не доказало. Он существует для отладки и так к нему и стоит относиться: окружение, чьи числа отличаются от зафиксированного стека, выдаёт результаты, не проходящие проверку.
aetron-miner env install
aetron-miner env status --json
aetron-miner env rollback
config
Локальные настройки клиента, которым не место в config.toml. Сейчас это токен HuggingFace, который ускоряет загрузку моделей и обязателен для весов с ограниченным доступом.
aetron-miner config set-hf-token [<token>]
aetron-miner config show-hf-token
aetron-miner config clear-hf-token
Передача токена аргументом работает в скриптах; в терминале его можно не указывать, и CLI спросит его скрытым вводом. show-hf-token печатает, откуда токен взялся, и маскированное значение, но никогда сам токен. clear-hf-token удаляет ~/.aetron-miner/hf_token и не трогает ни переменные окружения, ни файл от huggingface-cli login.
wallet
Управление хранилищем ключей. Каждая подкоманда общается с работающим демоном, который держит разблокированный ключ в памяти до своей остановки. Пароли читаются без эха, когда терминал интерактивный.
aetron-miner wallet generate [--name <label>]
aetron-miner wallet import-seed [--name <label>]
aetron-miner wallet import-json <json_path> [--name <label>]
aetron-miner wallet unlock
aetron-miner wallet info
generateсоздаёт новое хранилище sr25519 из случайного сида BIP-39 и один раз печатает сид-фразу.--nameзадаёт метку в метаданных хранилища, по умолчаниюminer-hotkey.import-seedимпортирует существующую сид-фразу BIP-39 из 12 или 24 слов, читая её из stdin, и шифрует паролем, который вы вводите дважды.import-jsonимпортирует JSON-экспорт хранилища polkadot-js. Спрашивает пароль, которым экспорт был зашифрован, а затем новый пароль для локального хранения.unlockрасшифровывает хранилище и передаёт ключ демону, который держит его в памяти до остановки.infoпечатает адрес, состояние (заблокировано или разблокировано) и имя.
aetron-miner wallet generate --name my-hotkey
aetron-miner wallet unlock
aetron-miner wallet info
neuronets
Читает реестр Нейронетов в цепи и регистрирует майнера. Этим командам нужен работающий демон, подключённый к ноде, потому что реестр читается из цепи.
list
Показывает доступные Нейронеты с идентификатором, именем, обоими бейджами приватности (режим безопасности - Standard или Confidential с TEE, и режим допуска - Auto, Manual или Open), стейком в AET, занятыми и всеми слотами, процентом комиссии владельца, видами задач и вашим собственным статусом по этому Нейронету под вашим горячим ключом.
aetron-miner neuronets list
show
Детали по одному Нейронету: его задачи, майнеры, экономика и приглашение, если оно к вам относится.
aetron-miner neuronets show <id>
register
Регистрирует майнера в паре (neuronet_id, task_id). task_id позиционный и по умолчанию равен 0. Регистрация не бесплатна: она сжигает AET, а при включённом принуждении залога ещё и резервирует обеспечение. При успехе демон записывает идентификаторы Нейронета и задачи в конфиг. Нейронеты в режиме ручного одобрения доступны только по приглашению, поэтому регистрация проходит лишь пока приглашение действует; его видно в колонке статуса в neuronets list.
aetron-miner neuronets register <neuronet_id> [task_id]
aetron-miner neuronets register 3 0 # пример
register-prepare
Для схемы «холодный отдельно от горячего», когда платящий холодный ключ не лежит на этой машине. Команда печатает параметры экстринзика burned_register, вы подписываете его своим кошельком, а демон добавляет подпись, доказывающую, что горячим ключом управляет он. Используйте её вместо register, когда холодный ключ живёт в другом месте.
aetron-miner neuronets register-prepare <neuronet_id> [task_id] [--coldkey <ss58>]
--coldkey перебивает значение coldkey_ss58 из конфига.
deregister
Выходит из пары (neuronet_id, task_id). Обеспечение не возвращается сразу: сначала оно уходит в окно разблокировки, а сожжённое при регистрации не возвращается никогда.
aetron-miner neuronets deregister <neuronet_id> [task_id]
models и datasets
Обе группы управляют локальным кэшем артефактов и принимают одинаковые подкоманды; разница только в том, с каким видом артефактов они работают. Артефакты адресуются префиксом хэша длиной не менее 6 шестнадцатеричных символов.
list
Показывает таблицу закэшированных артефактов. Сначала спрашивает демон, а если тот не запущен, сканирует локальный каталог кэша, поэтому работает и офлайн.
aetron-miner models list
aetron-miner datasets list
show
Печатает детали одного артефакта, найденного по префиксу хэша.
aetron-miner models show <hash_prefix>
verify
Перепроверяет артефакт. По умолчанию делается лёгкая проверка только по метаданным. С --full пересчитывается SHA-256 каждого файла из манифеста, что дольше, но ловит повреждения на диске.
aetron-miner models verify <hash_prefix> [--full]
delete
Удаляет артефакт из кэша после подтверждения. --yes пропускает вопрос для использования в скриптах.
aetron-miner models delete <hash_prefix> [--yes]
download
Забирает артефакт в кэш из указанного вами источника. Демон тянет manifest.json с базового URL, скачивает каждый файл, сверяет его SHA-256 и атомарно публикует результат, поэтому демон обязан быть запущен. --from обязателен, потому что цепь не несёт списка зеркал по каждой модели и оператор обязан указать источник явно. --model-hash включает гейт целостности: если передать ожидаемый хэш модели из цепи, корень Меркла манифеста обязан с ним совпасть, иначе загрузка отклоняется, что закрывает дорогу поддельному зеркалу.
aetron-miner models download --from <base_url> [--model-hash <hex>]
aetron-miner models list
aetron-miner models verify a1b2c3 --full
aetron-miner models download --from https://host/models/a1b2c3 --model-hash 0xa1b2...
aetron-miner datasets delete a1b2c3 --yes
Куда идти дальше
- Установка: как поставить клиент на машину.
- Конфигурация: что означают поля в
config.toml. - С чего начать майнить: выбор Нейронета и сохранение полной награды.
- Диагностика: частые сбои и как их читать.