Pavel Zloi
3.66K subscribers
665 photos
62 videos
2 files
949 links
директор ИИ · инженер‑интегратор
@eprogrammist | https://github.com/EvilFreelancer

20 лет в IT
∈ 10 лет в разработке
∈ 3 года в ML/AI
∈ 1 год - вайбмастер

Бусти:
https://boosty.to/evilfreelancer

Пожертвования:
https://pay.cloudtips.ru/p/937f48ac
Download Telegram
Песочница

Похоже я нашёл первый случай когда несколько агентов работающих параллельно это хорошая идея, встречайте игру Pax Historia.

Данная игра реализована в виде песочницы, навевает вайбы Hears of Iron, при запуске пользователь задает стартовый сценарий, далее выбирает страну за которую будет играть и модель под капотом агентов, при этом каждой страной управляет свой полноценный агент, с памятью, моделью и так далее, смотрите мой пост на тему агентов.

Далее перед пользователем открывается игровая политическая карта и слева чатик, пользователь пишет своё действие, потом нажимает кнопку промотки времени, происходят события и можно почитать, что получилось и как наши действия повлияли на политическую карту. Самое занятное, что другие страны (агенты) тоже живут своей жизнью и одновременно с вашими действиями выполняют какие-то свои (у них происходят разные события укладывающиеся в парадигму данного агента и его сценария).

Очень любопытный проект, рекомендую ознакомиться.
78🔥2
Прокачал за вчера coddy.

Запилил такие вот фичи:
- добавил в observer синхронизацию всех issues и pull_requests на старте системы
- переработал логику раскладывания issues и pull_requests по разным папкам (рис.2)
- добавил флоу автоматического тестирования PR
- флоу автоматической простановки git tag при мердже PR
- флоу, который запускает сборку docker-образа и пушит на docker hub
- и много других небольших правок и оптимизации.

Исходники тут::
https://github.com/coddy-project/coddy-bot

Готовые образы тут:
https://hub.docker.com/r/evilfreelancer/coddybot

Там же на Docker Hub будет подробная инструкция как запустить контейнер.
1🔥134👍1
Crab People

Последовал примеру Валерия @neuraldeep и поднял себе на домашней малинке PicoClaw, решил начать с простых задач, типа работы с github и поиска в сети, очень приятно и легко всё настраивается, хотя возможно людям без опыта работы с linux будет местами сложновато, так как надо будет прописывать allow list команд который можно выполнять, но это в любом случае в разы более качественный и удобный проект нежели OpenClaw.

Запустил всё ессно в docker-конейнере.

Чуть поразбирался с этим проектом, он состоит из 3х контейнеров:
- onboard - хитрый контейнер который генерит пустой конфиг
- gateway - контейнер который запускает ботов, без web-интерфейса
- launcher - контейнер который включает в себя все функции gateway, плюс имеет web-интерфейс

В админке (launcher) скажем так не очень много возможностей предусмотрено, хотя вполне достаточно и наверно больше и не требуется, однако, авторизации нет, так что его в формате сайтика за пределы сети выпускать не стоит, поэтому я пока еду на клиенте (gateway).

Ещё пока разбираюсь, но пользоваться приятно.
👍16
Обычно я редко пишу про релизы новых языковых моделей, но это случай выдающийся, вчера компания Nvidia зарелизила NVIDIA Nemotron v3, это линейка MoE моделей, на 120B параметров всего и 12B активных.

Нашему внимания представлены несколько вариантов сжатия, самый любопытный из них лично для меня nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4, так как этот формат является почти полным аналогом MXFP4 (подробнее тут).

Позиционируется данная модель как решение для продвинутых on-prem агентов (циферки и правда впечатляют), а так же как конкурент:
- openai/gpt-oss-120b (MoE, у которой лишь 5B активных и только MXFP4)
- Qwen/Qwen3.5-122B-A10B (MoE у которой 10B активных, но нет MXFP4 версий, только BF16, F16 и FP8)

Ну и так вот, примечательно в новом Немотроне то, что у неё 12B активных, что почти является рубиконом эмерджентности (13B параметров), плюс нативная поддержка FP4, а это значит для её запуска на контексте в 128к (но продел до 1m) токенов хватит 86Гб VRAM, почти как gpt-oss-120b.
👍133
О чём молчат Антропики (про скилы, опять)

Концепция Skills, которую предложили Антропики не так давно, мне очень нравится, я несколько раз писал на эту тему (раз, два, три), часто пользуюсь готовыми скилами, а какие-то пишу сам, но есть у них один фатальный недостаток, о котором, к моему большому удивлению, мало кто задумывается, эту проблему можно описать как кроссплатформенность компилируемых бинарных файлов.

К примеру, у меня есть скил, который вызывает некий бинарник, скомпилированный под x86/64, и есть Raspberry Pi на процессоре ARM64, допустим, я хочу установить этот скил, он устанавливается, но по факту бесполезен, так как архитектура бинарника и моего процессора не совпадает, можно придумать и другой пример, скажем, бинарь собран под Linux, но пользователь хочет установить скил на Windows.

Из вероятных решений, которые приходят на ум, это процедура установки, когда агент сам скачивает бинарник через условный curl/wget под нужную архитектуру (в момент первого вызова), сам закидывает в папку с бинарниками и выполняет полезную работу, но что-то подобных скилов мне ещё пока не попадалось, все, что видел, предлагают отдельно выполнить установку бинаря и отдельно ставить скил на систему, в которой нужный бинарь уже есть.

А как вы решаете эту проблему?
7🤣2💯1
OpenAPI to CLI это врапер между API и консолью

Не так давно я публиковал проект openapi-to-mcp, который позволяет любой API сервер с нормальной OpenAPI/Swagger спецификацией конвертировать в MCP сервер. Но теперь я развил эту идею в сторону консоли и сделал openapi-to-cli, который по OpenAPI/Swagger спецификации генерит удобную CLI над тем же самым API.

Как это работает

Допустим в спецификации API есть такие эндпоинты:
- GET /messages
- POST /messages
- GET /status
- GET /users

В момент добавления профиля openapi-to-cli конвертирует их в команды CLI примерно такого вида:
- npx openapi-to-cli messages_get
- npx openapi-to-cli messages_post
- npx openapi-to-cli status
- npx openapi-to-cli users

Каждая такая команда это по сути HTTP запрос к API серверу, параметры запроса попадают через опции CLI, а ответ API печатается обратно в терминал, подробную справку по каждой команде можно почитать добавив -h или --help на конце.

Быстрый старт через npx

Самый простой способ попробовать:
npx openapi-to-cli profiles add default \
--api-base-url https://127.0.0.1:8080 \
--openapi-spec https://raw.githubusercontent.com/readmeio/oas-examples/refs/heads/main/3.1/json/petstore-simple.json


Эта команда:
1. качает пакет openapi-to-cli, если его еще нет в кэше
2. создает профиль default для вашего API
3. скачивает и кэширует OpenAPI спеку под .ocli/specs/default.json
4. записывает настройки профиля в .ocli/profiles.ini

Список доступных команд можно посмотреть вызвав:
npx openapi-to-cli commands


После этого можно ходить в API из терминала, например вот так:
npx openapi-to-cli messages --limit 10


Есть короткая команда ocli, она заменяет npx openapi-to-cli, но нужно ставить глобально через через:
npm -g openapi-to-cli


Подробная справка на странице проекта.

Исходники: https://github.com/EvilFreelancer/openapi-to-cli
Пакет: https://www.npmjs.com/package/openapi-to-cli
7🔥28👍43
Забудь про MCP и tools — конвертируй 100 000 API методов в один CLI инструмент на лету

Все сейчас пишут MCP-серверы и tools для агентов
На каждый API endpoint — отдельный tool с описанием, параметрами, схемой
10 методов? Ок
100? Уже больно
845 (GitHub API)? Удачи (да да можно делать поиск и тулов и MCP) но какой же это зоопарк и как его поддерживать?

Но так же мы поняли новый тренд это cli обертки
От сюда мы с @evilfreelancer пошли другим путём: берём любой OpenAPI spec (JSON/YAML) и конвертируем его в CLI команды на лету Без кодогенерации.
Без компиляции
Один бинарник — любое API

Что это даёт:

→ ocli search --query "create pull request" --limit 5 — BM25-поиск по 845 эндпоинтам за 7мс
→ ocli search --regex "repos.*pulls" — regex по путям, именам, описаниям
→ Несколько профилей одного API с разными наборами эндпоинтов (include/exclude)
→ Несколько API серверов в одном инструменте

Почему CLI, а не MCP tools для агентов?

100 MCP tools → ~50 000 токенов на описания в контексте
100 CLI команд → 1 tool "execute_command" + поиск нужной команды

Объективно я счита что агентов больше таскают команды вызвать, нежели разбираться с тонне контекста tools

Агент вызывает ocli search, находит нужную команду, выполняет её
Один tool_exec вместо тысяч
Контекстное окно свободно для работы, а не для описаний инструментов.

Сделал быстрый тест на реальных API:
- GitHub API — 845 endpoints, 11MB spec, JSON
- Box API — 258 endpoints, YAML

BM25 поиск — порт из Go (picoclaw) на TypeScript с Robertson IDF smoothing.

npm install -g git+https://github.com/EvilFreelancer/openapi-to-cli.git#feat/command-search

ocli profile add github

ocli search --query "upload file" --limit 5

GitHub: https://github.com/EvilFreelancer/openapi-to-cli
5🔥265
Приехала коробочка Beelink ME mini на 16гб RAM и процессором N150 с AliExpress, повезло урвать себе версию с 1Тб nvme на борту.
2🔥30👎1
Media is too big
VIEW IN TELEGRAM
Забрал RTX 4090 из сервиса Vik-on после модификации до 48гб, солидно она схуднула конечно. #server
1🔥302
Поставил в сервер, загрузил, ничего настраивать не пришлось, система подхватила карточку сама, штатный драйвер её увидел, даже vllm зарезервировала память под кеш.
1🔥22
Феномен предвзятости подтверждения и... нейросети

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

Когда человек изучает некую тему, например про бег, он может спросить модельку "почему бег полезен" и получить вполне убедительный текст про сердце, кардиовыносливость, настроение и метаболизм. Но если другой человек спросит "почему бег вреден", модель с такой же уверенностью распишет про нагрузку на суставы, травмы, кортизол и износ организма.

Чуть иначе сформулировал запрос - и получил не просто другой акцент, а местами вообще противоположный вывод, в таких случаях мне вспоминается народная мудрость:
Вопрос содержит в себе 90% ответа.

Любой наш вопрос по отношению к модели скорее всего будет задан не из нейтральной позиции, даже при работе с кодовым агентом, а склоняясь к некоей определённой точке зрения, так как обычно вопрос уже содержит в себе скрытый ответ или намёк на него.

Частенько некоторые из нас не столько исследуют тему, сколько приходят за подтверждением того, к чему уже и так склоняются. И модель в таком сценарии работает не как объективный источник знаний, а как множитель мысли пользователя, усиливая его позицию аргументами. Про нечто похожее я уже писал ранее (но с точки зрения программирования), в том исследовании говорилось, что чем менее опытный инженер при помощи агентов создаёт программное обеспечение, тем менее сопровождаемое оно получается. И в этом, как по мне, одна из самых неприятных сторон языковых моделей, они очень убедительны там, где меньше всего нужна убедительность и больше всего нужна объективность. Проблема не только в том, что модель может ошибиться, проблема в том, что она может ошибиться в желаемую для пользователя сторону.

На этом фоне показательно смотрится тема, которую поднял Влад @NGI_ru в разрезе психологии. В посте на который я ссылаюсь проблема рассматривается с точки зрения галлюцинаций модели, но я всё же склоняюсь к предположению о том, что причина в самих вопросах (составленных вероятно предвзято), содержащих в себе частицу ответа, которую модель мультиплицировала.

В общем есть над чем задуматься.

PS. Кстати, рекомендую ознакомиться с вот этой публикацией Confirmation bias (предвзятость подтверждения), там очень хорошо расписана затронутая мною тема.
👍24💯6❤‍🔥3
Openapi-to-cli

«openapi-to-cli» (ocli) — CLI-утилита на TypeScript, которая превращает любое OpenAPI/Swagger API в набор CLI-команд в рантайме, без кодогенерации. По сравнению с MCP+Search подходом, ocli даёт в 15 раз более компактные результаты поиска

Самый быстро растущий наш с Пашей проект за меньше чем 5 дней 100+ звезд

400 + Clones
2000 посещений репо

Что интересно в части рабочих чатиков видел обсуждение и тесты тулзы (и пока только положительные впечетления)

РЕПО: https://github.com/EvilFreelancer/openapi-to-cli
52🔥26👍1
Pavel Zloi pinned «Вокруг AGENTS.md и всяких "универсальных" файлов для агентов в последнее время как-то слишком много разговоров. Особенно забавно это выглядит на фоне того, что рядом уже начали появляться вполне трезвые наблюдения о том, что польза таких файлов слегка преувеличена.…»
Forwarded from SGR Agent Core
SGR Agent Core 0.7.0

Кратенько и по порядку, в этом релизе:

0️⃣ В документацию добавили страницу Highlights.

1️⃣ В ядро доехал долгострой RunCommandTool, причём не просто "запусти команду", а с разделением на safe и unsafe режимы, workspace-настройками и нормальной обвязкой под выполнение команд.

2️⃣ Переработали WebSearchTool, теперь помимо Tavily есть ещё поддержка Brave и Perplexity.

3️⃣ Ещё одна важная фича - поддержка stateless контекста пользователя, для интеграций, где нельзя или неудобно тащить полноценный stateful контекст, это очень полезная штука.

4️⃣ Переосмыслили ReasoningTool, сделали его более заменяемым, в агентов добавили возможность подсовывать свой кастомный тул через параметр, тем самым завезли поддержку ризонинг моделей.

5️⃣ Добавили новый агент IronAgent для работы с моделями у которых не предусмотрена поддержка function calling.

6️⃣ Из более прикладных историй ещё доехала пагинация для web_search_tool через limit/offset, добавили фикс пустого json_data для LLM-провайдеров с кривоватым поведением, добавили простой интерактивный шел sgrsh, а также логику фильтрации тулов по их названию/описанию (чтобы экономить контекст).

7️⃣ Добавили в example агента progressive_discovery, который может эффективно работать с 50+ тулами.

Параллельно в релизе заметно причесали внутрянку, проработали возможность передавать настройки в тулы через конфиг, вынесли преобразования и валидацию на уровень model validators, упростили factory-слой, привели всё к единой модели ToolDefinition, пофиксили работу стриминга и рендеринга диалоговых сообщений и много других приятных мелочей улучшающих качество жизни.

В 0.7.0 завезли много интересного, при этом наш проект продолжает активно развиваться, а в следующих итерациях мы планируем добавить поддержку Skills, LangFuse, SearXNG и Agent Client Protocol (ACP) в режиме агента.

Обновляйтесь, тестируйте новые возможности и делитесь обратной связью, а если встретите баги или проблемы - приносите их в issues на GitHub.

Репо: https://github.com/vamplabAI/sgr-agent-core/

С уважением, команда SGR Team.
115🔥7🐳4👍2
Принял VibeCode эстафету от Рината @llm_under_hood

Попросил Cursor проанализировать все репозитории на диске в которые я коммитал хотя бы один раз, репозитории без .git индекса попросил игнорировать, полученный отчёт агент собрал в Markdown файл, после чего сгенерировал из него лендос по шаблону, получилась такая вот красота.

На графике хорошо видно, что весь 2025 всё шло более менее как обычно, но в первом квартале этого года я начал уже вайбкодить по-взрослому, число уникальных репозиториев и количество коммитов увеличилось в разы.

Эстафета - передай другому вайбкодеру, прощу коллег @countwithsasha, @alexs_journal, @kdoronin_blog и @simple_agi
принять участие в этом маленьком мероприятии и поделиться своими результатами.
🔥1610👍7🥱2❤‍🔥1🤡1🤗1
Вайбкод для неискушенных

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

Важное условие эксперимента в использовании self-hosted моделей и opensource агентов. Плюс поскольку участники эксперимента специализируются не на разработке, а на решении проблем бизнеса нужна модель которая пусть и не супер кодит, но зато имеет широкий кругозор.

Поэтому мною были выбраны:
- агент Crush (в девичестве OpenCode) в качестве базового TUI, но важной его особенностью является поддержка Agent Client Protocol (ACP), что позволяет встроить его в любой совместимый клиент (например obsidian, drawio или pycharm)
- модели gpt-oss 20b и 120b, потому что они в себе идеально сочетают широкий кругозор, размер, скорость и поддержку function calling, что позволяет использовать их в качестве базы для агента

Пока что только рабочую группу собираю, но на следующей неделе полагаю эксперимент пойдет в полную силу. Результатами промежуточными поделюсь в конце следующей недели, ну или раньше, ежели чего прикольного будет.
🔥318👍8👎1