Перейти к содержанию
Публикация AiManual

Как настроить Ajazz AKP05E Pro как AI-ассистент: практический гайд по кастомизации стриминг-дока

Настройка Ajazz AKP05E Pro как AI-ассистента: HID-команды для дисплея, Python-скрипты для CPU/GPU/RAM и лимитов Claude API, структура config.yaml и привязка кру

Коротко

Что будет в материале

  1. 01

    Что вы получите после настройки: обзор возможностей

  2. 02

    Почему Ajazz AKP05E Pro: сравнение с Codex Micro и другими контроллерами

  3. 03

    Подготовка к кастомизации: что нужно установить и настроить

  4. 04

    Вывод системной информации на дисплей: CPU, GPU, RAM

Что вы получите после настройки: обзор возможностей

Стриминг-док Ajazz AKP05E Pro с 15 программируемыми клавишами, тремя поворотными ручками и дисплеем превращается в центр управления AI-задачами. После настройки вы получаете устройство, которое в реальном времени показывает загрузку CPU, GPU и RAM, отслеживает остаток токенов в API Claude и Codex, выводит ближайшие события из календаря и прогноз погоды, а крутилки управляют громкостью отдельных приложений.

Фактически это аналог Codex Micro, но с открытой архитектурой: вы не привязаны к одному вендору и можете добавлять любые функции через Python-скрипты или готовые плагины. Главный экран отображает системные метрики, по нажатию кнопки переключается на API-лимиты, ещё одно нажатие — календарь и погода. Подсветка клавиш меняет цвет при критическом остатке токенов.

Ниже — вся цепочка целиком: HID-пакеты для дисплея, скрипты на psutil и GPUtil, опрос лимитов API, структура config.yaml и обработка поворота ручек. Ключевые фрагменты приведены прямо в тексте, так что профиль можно собрать, не открывая репозиторий.

Почему Ajazz AKP05E Pro: сравнение с Codex Micro и другими контроллерами

Codex Micro позиционируется как AI-девайс «из коробки», но его закрытая экосистема ограничивает кастомизацию. Ajazz AKP05E Pro стоит в 2-3 раза дешевле, имеет больше физических элементов управления и полностью открыт для программирования через HID-команды.

Характеристика Ajazz AKP05E Pro Codex Micro Stream Deck MK.2
Кнопок 15 6 15
Поворотных ручек 3 2 0
Дисплей Есть (настраиваемый) Есть (фиксированные виджеты) Нет (кнопки с экранами)
Открытое API Да (HID, Python) Нет Частично (плагины Elgato)
Ориентировочная цена ~$60 ~$150 ~$150

Цены ориентировочные и меняются со временем — проверяйте актуальные значения у продавца перед покупкой.

Ключевое преимущество Ajazz — три поворотные ручки. В сценарии AI-ассистента они управляют громкостью микрофона, системы и браузера одновременно, что критично при созвонах с демонстрацией экрана. Stream Deck требует покупать отдельный модуль для регуляторов, Codex Micro даёт только две ручки без тонкой настройки.

Дисплей Ajazz обновляется с задержкой 200-300 мс — достаточно для мониторинга, но не для анимаций. Это аппаратное ограничение, которое есть и у Codex Micro.

Подготовка к кастомизации: что нужно установить и настроить

Для работы потребуется: драйверы Ajazz, Python 3.11+, HID-библиотеки и набор скриптов. Док подключается по USB-C, определяется системой как HID-устройство и COM-порт одновременно. На актуальных сборках Windows 11 драйвер обычно встаёт автоматически, на macOS требуется разрешить доступ к USB-устройствам в System Preferences.

Установка драйверов и утилит Ajazz

Скачайте последнюю версию Ajazz Control Center с официального сайта производителя. После установки проверьте, что док отображается в списке устройств и реагирует на нажатия. На ревизиях ниже 2.4.1 отправка текста на дисплей через HID-команды может не работать — проверьте версию прошивки в Control Center перед началом.

На Windows откройте Диспетчер устройств, найдите Ajazz AKP05E Pro в разделе HID-устройств. Если устройство определяется как неизвестное, установите драйвер вручную из папки с Control Center. VID и PID пригодятся в скриптах: их видно в свойствах устройства, вкладка «Сведения», параметр «ИД оборудования».

Выбор среды для программирования кнопок и дисплея

Встроенное ПО Ajazz позволяет назначать клавиши на макросы и запуск программ, но не умеет выводить данные на дисплей. Для полноценной кастомизации используйте Python с библиотекой hidapi — она отправляет команды напрямую на устройство.

Новичкам подойдёт готовый пакет плагинов из репозитория проекта. Продвинутые пользователи могут писать скрипты с нуля, используя psutil для системных метрик и requests для API-запросов.

Вывод системной информации на дисплей: CPU, GPU, RAM

Мониторинг ресурсов — базовая функция AI-ассистента. При локальном инференсе моделей загрузка GPU достигает 100%, и видеть это на отдельном экране удобнее, чем сворачивать окна для проверки в диспетчере задач.

Как вывести CPU и GPU на дисплей Ajazz через HWiNFO

HWiNFO экспортирует сенсоры через Shared Memory. Плагин AjazzHWiNFO читает эти данные и выводит на дисплей. Настройка: запустите HWiNFO в режиме Sensors-only, затем откройте Settings → Safety → Shared Memory Support и включите опцию, после чего установите плагин AjazzHWiNFO. Плагин обновляется реже самого HWiNFO, поэтому перед установкой проверьте, что его версия совместима с вашей версией HWiNFO и ревизией дока. На дисплее появятся температура CPU, загрузка GPU и занятая RAM.

Метод не требует программирования, но ограничен фиксированным набором метрик. Частота обновления — 1 секунда, что достаточно для мониторинга.

Самописный скрипт на Python: гибкость и кастомизация

Скрипт с psutil и GPUtil даёт полный контроль над выводом. Пример кода:

import psutil
import GPUtil
import hid
import time

def get_system_info():
    cpu = psutil.cpu_percent(interval=1)
    ram = psutil.virtual_memory().percent
    gpus = GPUtil.getGPUs()
    gpu_load = gpus[0].load * 100 if gpus else 0
    gpu_temp = gpus[0].temperature if gpus else 0
    return f"CPU:{cpu:3d}% RAM:{ram:3d}%\nGPU:{gpu_load:3d}% {gpu_temp:2d}C"

Отправка строки на дисплей — через тот же hid. Минимальный пример: открываем устройство, формируем отчёт из report_id и полезной нагрузки, пишем его через device.write().

VENDOR_ID = 0x0000   # VID из свойств устройства
PRODUCT_ID = 0x0000  # PID из свойств устройства
REPORT_ID = 0x00     # сверьте с документацией вашей ревизии

def send_to_display(device, text):
    payload = text.encode("utf-8")[:64]  # размер пакета зависит от ревизии
    report = bytes([REPORT_ID]) + payload
    device.write(report)

device = hid.device()
device.open(VENDOR_ID, PRODUCT_ID)

while True:
    send_to_display(device, get_system_info())
    time.sleep(2)

Точный REPORT_ID, размер пакета и порядок байтов зависят от ревизии прошивки — их нужно сверить с документацией или с логом HID-трафика, снятым при работе штатного Control Center. Скрипт обновляет данные каждые 2 секунды. Добавьте отображение скорости вентиляторов через psutil.sensors_fans() — полезно при длительных прогонах инференса.

Отслеживание лимитов API Claude и Codex

Исчерпание лимита токенов во время генерации кода или анализа данных ломает рабочий процесс. Док с индикацией остатка предупреждает о проблеме заранее.

Получение данных из API: ключи и лимиты

Claude API отдаёт остаток лимитов прямо в заголовках ответов — x-ratelimit-remaining-requests и x-ratelimit-remaining-tokens. Codex использует аналогичные по смыслу заголовки. Отдельный usage-эндпоинт (в примере ниже — https://api.anthropic.com/v1/usage) есть не во всех тарифах и зависит от версии API, поэтому перед реализацией сверьтесь с актуальной документацией Anthropic и Codex.

Доступ к статистике тоже зависит от уровня ключа: для части методов требуется ключ уровня Organization, а Usage API в Anthropic Console может понадобиться включить отдельно. Проверьте права своего ключа до того, как строить на этих данных индикацию на доке.

Как отслеживать лимиты Claude API на доке: скрипт мониторинга

Python-скрипт опрашивает API каждые 60 секунд и обновляет дисплей. Цветовая схема: зелёная подсветка клавиш при остатке выше 50%, жёлтая — ниже 20%, красное мигание — ниже 5%.

import requests
import time

API_KEY = "sk-ant-your-key"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

def check_limits():
    # эндпоинт и формат ответа зависят от тарифа и версии API —
    # перед запуском сверьтесь с документацией Anthropic
    resp = requests.get("https://api.anthropic.com/v1/usage", headers=HEADERS)
    data = resp.json()
    remaining = data.get("remaining_tokens", 0)
    limit = data.get("limit_tokens", 1)
    pct = (remaining / limit) * 100
    return pct, remaining

# отправка на дисплей — через send_to_display() из раздела про метрики,
# цвет подсветки выбирается по значению pct

Если заголовки x-ratelimit-* доступны в вашем тарифе, надёжнее читать остаток именно из них: они приходят с каждым обычным ответом модели и не требуют отдельного запроса. При падении остатка ниже 5% скрипт отправляет HID-команду на мигание всех клавиш — пропустить такое предупреждение сложно.

Интеграция с календарем и погодными сервисами

Быстрый взгляд на док заменяет проверку смартфона. Ближайшая встреча и прогноз на день выводятся на отдельный экран, переключение — одна кнопка.

Настройка Google Calendar API

Создайте проект в Google Cloud Console, включите Calendar API, получите OAuth 2.0 credentials. Установите библиотеку google-api-python-client. Скрипт запрашивает события на текущий день и выводит первые три с временем начала:

from googleapiclient.discovery import build
from datetime import datetime

def get_events():
    service = build('calendar', 'v3', credentials=creds)
    now = datetime.utcnow().isoformat() + 'Z'
    events_result = service.events().list(
        calendarId='primary', timeMin=now,
        maxResults=3, singleEvents=True,
        orderBy='startTime'
    ).execute()
    return events_result.get('items', [])

Отображение погоды через OpenWeatherMap

Зарегистрируйтесь на OpenWeatherMap, получите бесплатный API-ключ (1000 запросов в день). Скрипт запрашивает текущую погоду по городу и выводит температуру, влажность и описание одной строкой:

import requests

def get_weather(city="Moscow"):
    url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric"
    data = requests.get(url).json()
    temp = data['main']['temp']
    desc = data['weather'][0]['description']
    return f"{temp:.0f}C {desc}"

Оба скрипта объединяются в один поток, который обновляет данные раз в 10 минут — API-лимиты бесплатных тарифов соблюдаются.

Настройка крутилок для микширования звука

Три поворотные ручки — это физический микшер для Windows. При работе с голосовыми AI-агентами, как в связке LangSmith с Pipecat и LiveKit, раздельное управление громкостью микрофона, системы и браузера экономит время на переключении между окнами.

Как настроить крутилки Ajazz для громкости приложений через pycaw

Библиотека pycaw даёт доступ к Windows Audio Session API. Каждая крутилка привязывается к конкретному процессу:

from pycaw.pycaw import AudioUtilities, ISimpleAudioVolume

def set_app_volume(process_name, volume_level):
    sessions = AudioUtilities.GetAllSessions()
    for session in sessions:
        if session.Process and session.Process.name() == process_name:
            volume = session._ctl.QueryInterface(ISimpleAudioVolume)
            volume.SetMasterVolume(volume_level, None)

# Привязка крутилки к Discord
# volume_level от 0.0 до 1.0

Сама по себе функция громкость не меняет — нужно связать её с железом: читать HID-отчёты, вытаскивать из них значение энкодера и переводить в диапазон 0.0–1.0.

KNOB_REPORT_ID = 0x00  # сверьте с документацией вашей ревизии

def map_knob_value(raw, raw_min=0, raw_max=255):
    return max(0.0, min(1.0, (raw - raw_min) / (raw_max - raw_min)))

def knob_loop(device, process_name, raw_min=0, raw_max=255):
    while True:
        report = device.read(64)
        if not report or report[0] != KNOB_REPORT_ID:
            continue
        raw = report[1]  # значение энкодера в отчёте
        level = map_knob_value(raw, raw_min, raw_max)
        set_app_volume(process_name, level)

Структура отчёта зависит от ревизии дока: где-то в пакете лежит абсолютное положение ручки, где-то — знаковая дельта поворота, и тогда накопленное значение придётся хранить в переменной. Проверить это проще всего эмпирически: откройте устройство через hid.device() и выведите несколько отчётов в консоль, поворачивая ручку.

Настройте три крутилки: левая — системные звуки, средняя — Discord или Zoom, правая — браузер. При повороте ручки скрипт считывает HID-событие и вызывает set_app_volume с новым значением.

Готовые решения: Voicemeeter и макросы

Voicemeeter Banana создаёт виртуальные аудиоканалы, а Control Center Ajazz назначает крутилки на эмуляцию нажатий клавиш. Метод проще в настройке, но добавляет задержку 50-100 мс и занимает виртуальные входы. Подходит, если вы не хотите писать код.

Сборка итогового профиля: объединяем все функции

Все скрипты работают в фоновом режиме как Python-процессы. Главный скрипт-диспетчер слушает нажатия кнопок и переключает экраны: кнопка 1 — системные метрики, кнопка 2 — API-лимиты, кнопка 3 — календарь и погода. Крутилки активны всегда, независимо от выбранного экрана.

Готовые плагины и конфигурации для быстрого старта

В репозитории проекта выложен пакет со всеми скриптами, файлом конфигурации config.yaml и инструкцией по запуску. После клонирования репозитория и установки зависимостей (pip install -r requirements.txt) достаточно запустить python main.py и указать свои API-ключи в конфиге.

Минимальный config.yaml для сборки профиля выглядит так:

api_keys:
  anthropic: "sk-ant-your-key"
  openweathermap: "your-openweathermap-key"

update_intervals:
  system_metrics: 2      # секунды
  api_limits: 60
  calendar_weather: 600

button_mapping:
  13: system_metrics
  14: api_limits
  15: calendar_weather

knob_mapping:
  knob_1: system_volume
  knob_2: discord.exe
  knob_3: browser.exe

Интервалы подобраны так, чтобы не упираться в лимиты бесплатных тарифов: системные метрики обновляются каждые 2 секунды, лимиты API — раз в минуту, календарь и погода — раз в 10 минут.

«Из коробки» работают: мониторинг CPU/GPU/RAM через psutil, отслеживание лимитов Claude с цветовой индикацией, календарь Google и погода OpenWeatherMap, управление громкостью через pycaw. Переключение экранов назначено на кнопки 13-15.

Если вы проектируете AI-агентов с нуля, обратите внимание на нашу статью об архитектуре самописных AI-агентов — там разобраны оркестрация LLM, память и обработка ошибок с цифрами по latency и cost. Для тех, кто работает с десктопными AI-инструментами, будет полезен обзор Koda Desktop — универсального AI-агента для тестировщиков и аналитиков. А если вы задумываетесь о более глубокой интеграции AI в рабочие процессы, почитайте наш разбор личных ИИ-агентов, которые живут в мессенджере и управляют проектами 24/7.

Ограничения и подводные камни

Дисплей обновляется с задержкой 200-300 мс — анимации и плавные переходы невозможны. Это ограничение прошивки, не снимается никакими скриптами.

HID-команды на отправку текста различаются между ревизиями дока. Если после обновления прошивки дисплей перестал принимать данные, проверьте версию в Control Center и сверьтесь с документацией к репозиторию.

Примеры кода в статье — шаблоны. VID, PID, report_id, размер пакета и структура отчёта с энкодера зависят от конкретной ревизии устройства, поэтому их нужно сверить со своим доком, прежде чем рассчитывать на рабочий результат.

Google Calendar API требует OAuth-токен, который истекает через 7 дней в тестовом режиме. Для постоянной работы переведите проект в production или добавьте автоматическое обновление токена через refresh_token.

pycaw работает только на Windows. На macOS используйте библиотеку osascript для управления громкостью — примеры есть в репозитории.

При одновременной работе HWiNFO и самописного скрипта возможны конфликты доступа к сенсорам. Выберите один метод мониторинга.

Заключение: ваш персональный AI-ассистент готов

Ajazz AKP05E Pro с набором скриптов закрывает три ключевые потребности: мониторинг ресурсов при инференсе, контроль API-лимитов и быстрое переключение между задачами через физические элементы управления. Цена решения — ориентировочно $60 за сам док (цены у продавцов меняются) плюс от часа на настройку в зависимости от опыта.

Дальнейшие направления кастомизации: интеграция с Ollama для отображения статуса локальных LLM, управление умным домом через Home Assistant API, вывод уведомлений из CI/CD пайплайнов. Код открыт для доработки: можно добавлять свои экраны и сценарии.

Подписаться на канал