В статье описаны результаты, которые получил в поисках ответа на вопрос "можно ли решать реальные задачи диагностики и исправления проблем инфраструктуры на слабом MacBook в агентском режиме". Сопутствующими целями были:

  • Сравнить качество и эффективность работы одной LLM на разном железе

  • Сравнить качество и эффективность более мощной версии LLM с менее мощной

Содержание

Что имеем

Железо:
- MacBook Pro M2 - 12 CPU (8+4), 19 GPU, 16GB Unified RAM (далее MB16)
- MacBook Pro M4 - 14 CPU (10+4), 20 GPU, 48GB Unified RAM (далее MB48)

ПО для реализации агентности:
- LMStudio 0.4.6+1
- LMStudio MLX Runtime 1.6.0
- Qwen3.5-9B-MLX-4bit (далее модель 9B)
- Qwen3.5-35B-A3B-MLX-IQ4_M-NVFP4 (далее модель 35B)
- TG Pro для управления кулерами
- Swift-приложение в духе стандартного Spotlight, реализующее взаимодействие "пользователь - LLM - инфраструктура"

Тестовая инфраструктура, которую диагностируем и чиним:
- Виртуальная машина Ubuntu 22.04
- Простой Python/FastAPI сервис, который выполняется и доступен по порту 8000
- Намеренно допущенные ошибки: main.py:14(опечатка), main.py (потерянный import requests), отсутствующий пакет requests в virtualenv

main.py
# ----- main.py -----
import os
from fastapi import FastAPI

import internet


app = FastAPI()

@app.get("/info")
def get_info():
    try:
        internet_ok = internet.check()
    except requests.exceptions.RequestExceptio:
        return {"something went wrong"}
    return {"system_name": os.uname().sysname, "internet_ok": internet_ok}
internet.py
# ----- internet -----
def check():
    import requests
    response = requests.get("https://www.google.com", timeout=5)
    return response.status_code == 200

Ход эксперимента

Во всех экспериментах использовался такой промпт

python приложение по адресу http://10.12.2.134:8000/info возвращает 500. раньше возвращалось {"system_name":"Linux","internet_ok":true}. исправь

Системный промпт

You are a server debugging assistant. Your task is to diagnose and fix the user's problem by running commands on the remote server.

CRITICAL RULES:
1. For each step, output EXACTLY ONE command in the format: COMMAND: <exact command>
2. NEVER output ANSWER in the same message where you output COMMAND.
3. After I provide the command output, you may output the next command or finally ANSWER.
4. If you need to run multiple commands, do them ONE BY ONE in separate messages.
5. Do NOT use heredoc if you ever need to write remote file, use echo/printf and newline symbols.
6. Do NOT wrap the command in backticks. Output only the plain command without quotes.
7. Avoid commands requiring interactive passwords.
8. When you have enough information to give a final solution, output ONLY: ANSWER: <final diagnosis and solution>

Remember: A message with COMMAND must NOT contain ANSWER. A message with ANSWER must NOT contain COMMAND.


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

Агент будет предлагать пользователю команды для диагностики и исправления. Получив соглашение на выполнение каждой команды, выполняет на указанном сервере через SSH, передаёт exit code и вывод обратно в LLM.

Вот так ведёт себя модель 9B - в среднем 41 цикл “подумать -> запросить разрешение выполнения команды -> выполнить команду -> проанализировать вывод команды”. Графики для MB16 и MB48

потребление памяти (memory footprint) в зависимости от итерации/количества токенов
потребление памяти (memory footprint) в зависимости от итерации/количества токенов
снижение TPS, возрастание TTFT
снижение TPS, возрастание TTFT

Агент, работающий с этой моделью на MB16 и MB48 дает одинаковые качественные (цепочка проблем исправлена, были зацикливания на некоторых командах), но разные количественные результаты.

Сравнение модели 9B на MB16 и MB48

Сравнение моделей 9B/35B на MB16 и MB48

Агент, работающий на модели 35B, дает более крутые результаты в сравнении с моделью 9B: Цепочка проблем исправлена, зацикливаний не было, израсходовано кратно меньше токенов (~50.000 против ~300.000)

Результаты

  1. Модель 9B работающая на MB16, решает задачу в 50-60% сессий

  2. Модель 9B качественно даёт одинаковый результат на MB16 и MB48

  3. Модель 9B количественно даёт более плохой результат на MB16, чем на MB48

  4. Модель 35B - космолёт относительно 9B - решает задачу в 95% сессий

  5. Модели 35B нужно меньше итераций (примерно в 3 раза - нет зацикливаний) и меньше количество токенов расходуется (50к против 300к на модели 9B)

  6. Жалко ноутбук - без управления кулерами - без специального ПО кулеры вообще не крутятся - температура GPU в моменты работы достигает 90-100, медленно спадает. Включив управление кулерами - температура редко превышает 70, спадает значительно быстрее - за ноутбук спокоен.

В следующей статье будут результаты эксперимента с моделью 35B на более сложных проблемах.

Комментарии (2)


  1. diflux
    11.05.2026 08:21

    Мне 9b весь код запорола, на более сложных задачах. Qwen3.6-27b себя показывает лучше чем 35b. Но это все равно рядом не стояло с облачными моделями.


  1. kacic
    11.05.2026 08:21

    в 2023м M2 Pro 16" 16GB стоила около примерно сколько в конце 2025 M4 Pro 16" 48GB... (~230.000)