Pavel Zloi
3.32K subscribers
646 photos
60 videos
2 files
923 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
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.
114🔥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, что позволяет использовать их в качестве базы для агента

Пока что только рабочую группу собираю, но на следующей неделе полагаю эксперимент пойдет в полную силу. Результатами промежуточными поделюсь в конце следующей недели, ну или раньше, ежели чего прикольного будет.
🔥308👍8👎1
Pavel Zloi
Тысячу мы преодолели за почти три года, 21 января 2025. Тогда казалось, что до второй ещё кондёхать и кондёхать, но это произошло гораздо раньше, чем я ожидал. Спасибо всем, кто читает мои ворчания и следит за проектиками, ваши комментарии, внимание и конструктивная…
Сегодня канал преодолел 3000 подписчиков, удивительно с какой скоростью это произошло, ведь 2000 было всего навсего в ноябре прошлого года, а с тех пор прошло чуть больше 4 месяцев.

Спасибо, что вы здесь, постараюсь и дальше радовать вас своим ворчанием, феласофией и забористым контентом :)
🔥3833👍13
Pavel Zloi
Вайбкод для неискушенных Решил провести на работе один небольшой эксперимент, предложил коллегам у которых нет айтишного образования попробовать нейросети и инструменты вайбкодинга при решении своих повседневных задач. Важное условие эксперимента в использовании…
Эксперимент (день 1)

Первая проблема с которой столкнулись участники оказалась в сложности установки консольного тула Crush, на виндовс нужна утилита winget, на макоси brew, я кстати пробежался по всем консольным тулам (типа курсора, клод кода, джемини и так далее) и эта общая проблема, вместо создания MSI/EXE пакетов для виндовс и DMG для макоси авторы большинства консольных тулов делают непонятно что, какие-то скрипты для PowerShell, какие-то curl | bash, ладно бы на линуксе только, мы тут все привычные к такому.

Вторая проблема в том, что Crush оказывается не поддерживает ACP, на эту тему есть PR у них, который открыт с февраля, вообще это очень странно, ведь Crush это форк OpenCode, почему эту часть не портировали не очень понимаю.

Третья проблема с кодировками в конфигах, нельзя просто взять, прислать JSON-конфиг с линукса, вставить его в текстовый файл на виндовс и чтобы это работало, других способов настроить тул разработчики не предусмотрели, прямо как в старые добрые времена.
63🤯2👍1💯1
ACPBox - Agent Client Protocol (ACP) в формате OpenAI API

В последнее время много занимаюсь интеграцией агентов и в какой-то момент устал каждый раз заново собирать ReAct лупу под задачу, пришла идея взять уже готового агента по Agent Client Protocol (stdio, JSON-RPC) и не городить свой HTTP-слой, а выставить наружу привычный OpenAI-совместимый API - один base URL, те же /v1/models, /v1/chat/completions (стейтлесс), /v1/responses (стейтфул), чтобы подключались обычные клиенты и SDK, типа Open WebUI и аналогов.

За пару вечеров собрать проект ACPBox, под капотом там uvicorn, на каждый worker один долгоживущий процесс агента, запросы с OpenAI-формата переводятся в ACP и обратно, стриминг и список моделей из режимов агента поддерживаются.

Установка изолированно через pipx:
pipx install acpbox


Пример минимального config.yaml для OpenCode агента:
acp:
command:
- opencode
- acp
env: {}
workspace: "./workspace"

gateway:
host: "0.0.0.0"
port: 8080
workers: 1
threads: 1

Для курсора вместо opencode acp задаём agent acp, аналогичная фичу можно использовать и для джемини, и для клод кода и так далее.

Запускаем так:
acpbox --config ./config.yaml

На http://localhost:8080/docs появится OpenAPI/Swagger UI, можно будет потыкать агента.

Репозиторий: https://github.com/EvilFreelancer/acpbox
PyPi пакет: https://pypi.org/project/acpbox/

PS. Важный нюанс, кодовый агент, типа того же OpenCode или Cursor нужно настраивать заранее и отдельно, так как ACPBox это просто обёртка для работы кодовым агентом и занимается только решение задачи проксирования запросов от пользователя к агенту и обратно.
👍93
Pavel Zloi
Прокачал за вчера coddy. Запилил такие вот фичи: - добавил в observer синхронизацию всех issues и pull_requests на старте системы - переработал логику раскладывания issues и pull_requests по разным папкам (рис.2) - добавил флоу автоматического тестирования…
За вчера порядочно прокачал проект Coddy, переделал подсистему которая пишет код на ACP, так что теперь её можно использовать с любым кодовым агентом.

В планах реализовать хук автоматического переключения на новую версию Docker-контейнера после мерджа PR и автоматического бампа версии.
🔥101👍1
Пришли две новые штукенции, коммутатор на 2.5Гбит и райзер сплитер 16x на пару 8x. #server
🔥19👍1👏1
Media is too big
VIEW IN TELEGRAM
"What I cannot create I do not understand" (c) Richard Feynman

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

Если кратко, то да, может, но обо всём по порядку.

В качестве кодогенератора взял Cursor, но не простой, а используя модельку Sonnet 4.6 от Antropic, при этом, поскольку Claude Code мне так и не удалось настроить нормально, пришлось юзать модельку через API.

Заранее написал и предоставил агенту подробные спецификации по разработке кодового агента, агент этот должен собираться в один бинарник (да да, выбрал golang), должен уметь работать в формате Agent Client Protocol (ACP) агента, приложил ссылки на документацию, спецификации ACP, примеры того как работает Cursor, Codex и Claude Code, информацию о том как работать со скилами и MCP-серверами, плюс информацию о разных протоколах общения с моделями (OpenAI, Antripic, Ollama, OpenAI-like) и что мне нужен агент способный работать в режиме агента и в режиме планировщика (два моих любимых режима), плюс нужен визард конфига для первичной настройки.

Флоу стандартный BDD, сначала модель должна изучить все документы что я предоставил, потом синтезировать спецификации того, что конкретно она будет делать, потом по слоям создавать решение, сначала тесты, потом класс и так далее. В финале она должна убедиться, что полученное решение проходит все тесты, собирается по инструкции и что его можно по ACP использовать. Моделька соннет 4.6 где-то полчаса пилила проект, составил документацию хорошую. потом итеративно реализовала код. Отскакивая в сторону могу сказать, что качество кода для one-shot в целом очень приемлемое, понимаю почему людям так нравится клод код и эти модельки.

Далее я попробовал через плагин obsidian-agent-client для Obsidian настроить созданный мой агент и о чудо, он работает, хотя конечно у меня есть вопросики к интерфейсу ACP-клиента в Obsidian (форкну@пофикшу, ага), но это пока что мелочи.

Исходники Coddy Agent тут: https://github.com/coddy-project/coddy-agent
🔥125
Кстати, поскольку судьба Телеграм неизвестна, на всякий случай, чтобы не потерять связь, завёл страничку на Бусти:
https://boosty.to/evilfreelancer

Планирую там публиковать посты про внутрянку проектов, лонгриды, которые не попадают в формат телеги, размышления на разные темы, ну и анонсы проектов для тех кому будет интересно принять участие в тестировании новинок.
🔥8❤‍🔥22😁1😢1
Pavel Zloi pinned «Кстати, поскольку судьба Телеграм неизвестна, на всякий случай, чтобы не потерять связь, завёл страничку на Бусти: https://boosty.to/evilfreelancer Планирую там публиковать посты про внутрянку проектов, лонгриды, которые не попадают в формат телеги, размышления…»
Проблема долговременной памяти чатов

Хоть я и считаю себя сторонником памяти агентных систем, даже большой пост на эту тему писал, но работая с чатами в которых есть память истории всех сообщений периодически ловлю себя на мысли, что надо напилить какой-нибудь пост на тему того, что память эта частенько работает плохо, вносит искажения в ответы модели и единственный годный режим её работы это "off", то есть отключена.

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

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

Проще всего описать это в формате графа, где синие узлы это группы, а серые это чаты, чаты в пределах своего домена и в пределах доменов в которые есть доступ могут искать данные, но в других нет.
👍94🔥41
Loading model from ruGPT3XL ...
Device: cpu, dtype: float32
Loading weights: 100%|██████████| 389/389 [00:01<00:00, 213.86it/s]
Model loaded. Parameters: 1,418,678,272

Prompt: В далеком космосе
Generated: В далеком космосе, в одной из звездных систем галактики Млечный путь на орбите искусственного спутника Земли вращается небольшое космическое тело — искусственный спутник «К-2», по своим размерам и массе не уступающий самой планете. На борту этого космического тела находится база для исследовательских работ землян под названием Земля-3126/1А.

На Земле же все спокойно: ученые проводят исследования атмосферы планеты
5
Ловите мой новый пост на Бусти, в нём я рассказываю про модельку ruGPT3XL на 1.3B, которую мне удалось отреставрировать и заставить работать на современном железе.

upd. Пост на бусти так как ещё не всё готово, но всех кому интересно приглашаю принять участие в тестировании.
17
Встречайте мой новый пост "Реставрация ruGPT-3 XL или как я вернул к жизни забытую русскую языковую модель" на Хабр, в нём я подробно рассказал о том как была реализована конвертация, как проводилось её тестирование, как запустить локально, как конвертировать в GGUF.

А вот ссылочки:
- evilfreelancer/ruGPT3XL - сконвертированная модель в формате HuggingFace (safetensors)
- evilfreelancer/ruGPT3XL-GGUF - квантизированные GGUF-веса для llama.cpp и Ollama
- evilfreelancer/rugpt3 - GGUF загруженные на Ollama
- EvilFreelancer/rugpt3xl-convert - исходники скриптов конвертации
4🔥189👍5
Forwarded from Data Secrets
NeuralDeep Skills: локальная база агентных навыков под ру-сервисы

Всем, кто пользуется агентами, 100% известна такая вещь, как skills.sh. Это огромная база скиллов агентов под любые сервисы. Ставишь – и агент уже умеет с ними работать из коробки.

Так вот, в российском сообществе давно напрашивался аналог под локальный стек. И его сделал наш друг и коллега по тг – Валерий @neuraldeep. Он в целом регулярно делает разные практичные штуки для разработчиков, и это как раз одна из них.

Итак, встречайте: neuraldeep.ru/

Это база, в которой будут собраны скиллы для работы с самими разными ру-сервисами. Туда уже залили интеграции под инструменты Яндекс, Битрикс24, 1С и другое, чем многие пользуются каждый день.

– Установка все так же происходит одной командой, все привычно и понятно
Проект опенсорсный: туда можно просто прийти и залить свой скилл через GitHub (формат claude-skill)
– Есть модерация и базовые проверки безопасности

Из этого вполне может получиться что-то вроде стандартного слоя для агентных интеграций под рф-рынок. Если работаете с агентами – заходите попробовать или даже поучаствовать.

Проект -> neuraldeep.ru/
Гитхаб -> https://github.com/vakovalskii/neuraldeep
Следите за обновлениями в канале Валеры -> @neuraldeep
👍15🔥2🤮1💩1
Выгрузить модель на HuggingFace не так-то просто

Конвертировал тут новинку chromadb/context-1 в mxfp4 формат и пытаюсь загрузить веса на HuggingFace, но по какой-то причине huggingface-cli перестал подхватывать переменные прокси, в результате чего из моего контура запросы не уходят, пришлось лезть в исходники и оказалось, что авторы HF добавили в свой тул хранилища типа Xet включенные по умолчанию, а эта штука не использует httpx и как следствие игнорирует настройки прокси.

Короче чтобы решить эту проблему и из рабочего контура подключиться к проксику надо вырубить Xet переменной HF_HUB_DISABLE_XET, а дальше передать проксики и команду:
HF_HUB_DISABLE_XET=1 \
ALL_PROXY=socks5://192.168.1.21:1080 \
HTTPS_PROXY=socks5://192.168.1.21:1080 \
HTTP_PROXY=socks5://192.168.1.21:1080 \
huggingface-cli upload evilfreelancer/context-1-mxfp4 ./context-1-mxfp4 . --repo-type model

После этого загрузка начала работать.
👍13🤔3🔥21