惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
爱范儿
爱范儿
The Cloudflare Blog
Y
Y Combinator Blog
B
Blog RSS Feed
Stack Overflow Blog
Stack Overflow Blog
博客园 - 叶小钗
G
Google Developers Blog
J
Java Code Geeks
P
Proofpoint News Feed
美团技术团队
Engineering at Meta
Engineering at Meta
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
有赞技术团队
有赞技术团队
L
LangChain Blog
N
Netflix TechBlog - Medium
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Локальный агент для диагностики инфраструктуры
breakingtest · 2026-05-11 · via Все публикации подряд на Хабре

Локальный агент для диагностики инфраструктуры

Уровень сложностиСредний

Время на прочтение3 мин

Охват и читатели276

Кейс

В статье описаны результаты, которые получил в поисках ответа на вопрос "можно ли решать реальные задачи диагностики и исправления проблем инфраструктуры на слабом 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 на более сложных проблемах.