Обычно я редко пишу про релизы новых языковых моделей, но это случай выдающийся, вчера компания 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.
Нашему внимания представлены несколько вариантов сжатия, самый любопытный из них лично для меня 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.
👍13❤3
О чём молчат Антропики (про скилы, опять)
Концепция Skills, которую предложили Антропики не так давно, мне очень нравится, я несколько раз писал на эту тему (раз, два, три), часто пользуюсь готовыми скилами, а какие-то пишу сам, но есть у них один фатальный недостаток, о котором, к моему большому удивлению, мало кто задумывается, эту проблему можно описать как кроссплатформенность компилируемых бинарных файлов.
К примеру, у меня есть скил, который вызывает некий бинарник, скомпилированный под x86/64, и есть Raspberry Pi на процессоре ARM64, допустим, я хочу установить этот скил, он устанавливается, но по факту бесполезен, так как архитектура бинарника и моего процессора не совпадает, можно придумать и другой пример, скажем, бинарь собран под Linux, но пользователь хочет установить скил на Windows.
Из вероятных решений, которые приходят на ум, это процедура установки, когда агент сам скачивает бинарник через условный curl/wget под нужную архитектуру (в момент первого вызова), сам закидывает в папку с бинарниками и выполняет полезную работу, но что-то подобных скилов мне ещё пока не попадалось, все, что видел, предлагают отдельно выполнить установку бинаря и отдельно ставить скил на систему, в которой нужный бинарь уже есть.
А как вы решаете эту проблему?
Концепция 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
В момент добавления профиля
- 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 печатается обратно в терминал, подробную справку по каждой команде можно почитать добавив
Быстрый старт через npx
Самый простой способ попробовать:
Эта команда:
1. качает пакет
2. создает профиль
3. скачивает и кэширует OpenAPI спеку под
4. записывает настройки профиля в
Список доступных команд можно посмотреть вызвав:
После этого можно ходить в API из терминала, например вот так:
Есть короткая команда
Подробная справка на странице проекта.
Исходники: https://github.com/EvilFreelancer/openapi-to-cli
Пакет: https://www.npmjs.com/package/openapi-to-cli
Не так давно я публиковал проект 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 для вашего API3. скачивает и кэширует OpenAPI спеку под
.ocli/specs/default.json4. записывает настройки профиля в
.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👍4❤3
Forwarded from Валера Ковальский
Забудь про 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.
GitHub: https://github.com/EvilFreelancer/openapi-to-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-searchocli profile add githubocli search --query "upload file" --limit 5GitHub: https://github.com/EvilFreelancer/openapi-to-cli
GitHub
GitHub - EvilFreelancer/openapi-to-cli: Turns any OpenAPI/Swagger API into an CLI with set of commands. One CLI command per endpoint.
Turns any OpenAPI/Swagger API into an CLI with set of commands. One CLI command per endpoint. - EvilFreelancer/openapi-to-cli
5🔥26❤5
Приехала коробочка Beelink ME mini на 16гб RAM и процессором N150 с AliExpress, повезло урвать себе версию с 1Тб nvme на борту.
2🔥30👎1
Валера Ковальский
Забудь про MCP и tools — конвертируй 100 000 API методов в один CLI инструмент на лету Все сейчас пишут MCP-серверы и tools для агентов На каждый API endpoint — отдельный tool с описанием, параметрами, схемой 10 методов? Ок 100? Уже больно 845 (GitHub API)?…
Немножечко хайпа на Reddit думаю не помешает ;)
Reddit
From the LocalLLaMA community on Reddit: Turn 10,000 API endpoints into one CLI tool instead of MCP, Skills and tools zoo
Explore this post and more from the LocalLLaMA community
3👍26👏6❤1🤡1
Media is too big
VIEW IN TELEGRAM
Забрал RTX 4090 из сервиса Vik-on после модификации до 48гб, солидно она схуднула конечно. #server
1🔥30❤2
Феномен предвзятости подтверждения и... нейросети
Сегодня предлагаю ещё один вопрос для рефлексии и философствования, на этот раз про одну из самых недооценённых проблем LLM, которая заключена не в галлюцинациях и даже не ошибках самих по себе, а в том как легко модели подыгрывают позиции пользователя.
Когда человек изучает некую тему, например про бег, он может спросить модельку "почему бег полезен" и получить вполне убедительный текст про сердце, кардиовыносливость, настроение и метаболизм. Но если другой человек спросит "почему бег вреден", модель с такой же уверенностью распишет про нагрузку на суставы, травмы, кортизол и износ организма.
Чуть иначе сформулировал запрос - и получил не просто другой акцент, а местами вообще противоположный вывод, в таких случаях мне вспоминается народная мудрость:
Любой наш вопрос по отношению к модели скорее всего будет задан не из нейтральной позиции, даже при работе с кодовым агентом, а склоняясь к некоей определённой точке зрения, так как обычно вопрос уже содержит в себе скрытый ответ или намёк на него.
Частенько некоторые из нас не столько исследуют тему, сколько приходят за подтверждением того, к чему уже и так склоняются. И модель в таком сценарии работает не как объективный источник знаний, а как множитель мысли пользователя, усиливая его позицию аргументами. Про нечто похожее я уже писал ранее (но с точки зрения программирования), в том исследовании говорилось, что чем менее опытный инженер при помощи агентов создаёт программное обеспечение, тем менее сопровождаемое оно получается. И в этом, как по мне, одна из самых неприятных сторон языковых моделей, они очень убедительны там, где меньше всего нужна убедительность и больше всего нужна объективность. Проблема не только в том, что модель может ошибиться, проблема в том, что она может ошибиться в желаемую для пользователя сторону.
На этом фоне показательно смотрится тема, которую поднял Влад @NGI_ru в разрезе психологии. В посте на который я ссылаюсь проблема рассматривается с точки зрения галлюцинаций модели, но я всё же склоняюсь к предположению о том, что причина в самих вопросах (составленных вероятно предвзято), содержащих в себе частицу ответа, которую модель мультиплицировала.
В общем есть над чем задуматься.
PS. Кстати, рекомендую ознакомиться с вот этой публикацией Confirmation bias (предвзятость подтверждения), там очень хорошо расписана затронутая мною тема.
Сегодня предлагаю ещё один вопрос для рефлексии и философствования, на этот раз про одну из самых недооценённых проблем LLM, которая заключена не в галлюцинациях и даже не ошибках самих по себе, а в том как легко модели подыгрывают позиции пользователя.
Когда человек изучает некую тему, например про бег, он может спросить модельку "почему бег полезен" и получить вполне убедительный текст про сердце, кардиовыносливость, настроение и метаболизм. Но если другой человек спросит "почему бег вреден", модель с такой же уверенностью распишет про нагрузку на суставы, травмы, кортизол и износ организма.
Чуть иначе сформулировал запрос - и получил не просто другой акцент, а местами вообще противоположный вывод, в таких случаях мне вспоминается народная мудрость:
Вопрос содержит в себе 90% ответа.
Любой наш вопрос по отношению к модели скорее всего будет задан не из нейтральной позиции, даже при работе с кодовым агентом, а склоняясь к некоей определённой точке зрения, так как обычно вопрос уже содержит в себе скрытый ответ или намёк на него.
Частенько некоторые из нас не столько исследуют тему, сколько приходят за подтверждением того, к чему уже и так склоняются. И модель в таком сценарии работает не как объективный источник знаний, а как множитель мысли пользователя, усиливая его позицию аргументами. Про нечто похожее я уже писал ранее (но с точки зрения программирования), в том исследовании говорилось, что чем менее опытный инженер при помощи агентов создаёт программное обеспечение, тем менее сопровождаемое оно получается. И в этом, как по мне, одна из самых неприятных сторон языковых моделей, они очень убедительны там, где меньше всего нужна убедительность и больше всего нужна объективность. Проблема не только в том, что модель может ошибиться, проблема в том, что она может ошибиться в желаемую для пользователя сторону.
На этом фоне показательно смотрится тема, которую поднял Влад @NGI_ru в разрезе психологии. В посте на который я ссылаюсь проблема рассматривается с точки зрения галлюцинаций модели, но я всё же склоняюсь к предположению о том, что причина в самих вопросах (составленных вероятно предвзято), содержащих в себе частицу ответа, которую модель мультиплицировала.
В общем есть над чем задуматься.
PS. Кстати, рекомендую ознакомиться с вот этой публикацией Confirmation bias (предвзятость подтверждения), там очень хорошо расписана затронутая мною тема.
👍24💯6❤🔥3
Forwarded from Валера Ковальский
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
«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
GitHub
GitHub - vamplabAI/sgr-agent-core: Schema-Guided Reasoning (SGR) has agentic system design created by neuraldeep community
Schema-Guided Reasoning (SGR) has agentic system design created by neuraldeep community - vamplabAI/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️⃣ Из более прикладных историй ещё доехала пагинация для
7️⃣ Добавили в example агента progressive_discovery, который может эффективно работать с 50+ тулами.
Параллельно в релизе заметно причесали внутрянку, проработали возможность передавать настройки в тулы через конфиг, вынесли преобразования и валидацию на уровень model validators, упростили factory-слой, привели всё к единой модели
В 0.7.0 завезли много интересного, при этом наш проект продолжает активно развиваться, а в следующих итерациях мы планируем добавить поддержку Skills, LangFuse, SearXNG и Agent Client Protocol (ACP) в режиме агента.
Обновляйтесь, тестируйте новые возможности и делитесь обратной связью, а если встретите баги или проблемы - приносите их в issues на GitHub.
Репо: https://github.com/vamplabAI/sgr-agent-core/
С уважением, команда SGR Team.
Кратенько и по порядку, в этом релизе:
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.
1❤15🔥7🐳4👍2
Принял VibeCode эстафету от Рината @llm_under_hood
Попросил Cursor проанализировать все репозитории на диске в которые я коммитал хотя бы один раз, репозитории без .git индекса попросил игнорировать, полученный отчёт агент собрал в Markdown файл, после чего сгенерировал из него лендос по шаблону, получилась такая вот красота.
На графике хорошо видно, что весь 2025 всё шло более менее как обычно, но в первом квартале этого года я начал уже вайбкодить по-взрослому, число уникальных репозиториев и количество коммитов увеличилось в разы.
Эстафета - передай другому вайбкодеру, прощу коллег @countwithsasha, @alexs_journal, @kdoronin_blog и @simple_agi
принять участие в этом маленьком мероприятии и поделиться своими результатами.
Попросил Cursor проанализировать все репозитории на диске в которые я коммитал хотя бы один раз, репозитории без .git индекса попросил игнорировать, полученный отчёт агент собрал в Markdown файл, после чего сгенерировал из него лендос по шаблону, получилась такая вот красота.
На графике хорошо видно, что весь 2025 всё шло более менее как обычно, но в первом квартале этого года я начал уже вайбкодить по-взрослому, число уникальных репозиториев и количество коммитов увеличилось в разы.
Эстафета - передай другому вайбкодеру, прощу коллег @countwithsasha, @alexs_journal, @kdoronin_blog и @simple_agi
принять участие в этом маленьком мероприятии и поделиться своими результатами.
🔥16❤10👍7🥱2❤🔥1🤡1🤗1
Вайбкод для неискушенных
Решил провести на работе один небольшой эксперимент, предложил коллегам у которых нет айтишного образования попробовать нейросети и инструменты вайбкодинга при решении своих повседневных задач.
Важное условие эксперимента в использовании self-hosted моделей и opensource агентов. Плюс поскольку участники эксперимента специализируются не на разработке, а на решении проблем бизнеса нужна модель которая пусть и не супер кодит, но зато имеет широкий кругозор.
Поэтому мною были выбраны:
- агент Crush (в девичестве OpenCode) в качестве базового TUI, но важной его особенностью является поддержка Agent Client Protocol (ACP), что позволяет встроить его в любой совместимый клиент (например obsidian, drawio или pycharm)
- модели gpt-oss 20b и 120b, потому что они в себе идеально сочетают широкий кругозор, размер, скорость и поддержку function calling, что позволяет использовать их в качестве базы для агента
Пока что только рабочую группу собираю, но на следующей неделе полагаю эксперимент пойдет в полную силу. Результатами промежуточными поделюсь в конце следующей недели, ну или раньше, ежели чего прикольного будет.
Решил провести на работе один небольшой эксперимент, предложил коллегам у которых нет айтишного образования попробовать нейросети и инструменты вайбкодинга при решении своих повседневных задач.
Важное условие эксперимента в использовании self-hosted моделей и opensource агентов. Плюс поскольку участники эксперимента специализируются не на разработке, а на решении проблем бизнеса нужна модель которая пусть и не супер кодит, но зато имеет широкий кругозор.
Поэтому мною были выбраны:
- агент Crush (в девичестве OpenCode) в качестве базового TUI, но важной его особенностью является поддержка Agent Client Protocol (ACP), что позволяет встроить его в любой совместимый клиент (например obsidian, drawio или pycharm)
- модели gpt-oss 20b и 120b, потому что они в себе идеально сочетают широкий кругозор, размер, скорость и поддержку function calling, что позволяет использовать их в качестве базы для агента
Пока что только рабочую группу собираю, но на следующей неделе полагаю эксперимент пойдет в полную силу. Результатами промежуточными поделюсь в конце следующей недели, ну или раньше, ежели чего прикольного будет.
🔥31❤8👍8👎1
Pavel Zloi
Тысячу мы преодолели за почти три года, 21 января 2025. Тогда казалось, что до второй ещё кондёхать и кондёхать, но это произошло гораздо раньше, чем я ожидал. Спасибо всем, кто читает мои ворчания и следит за проектиками, ваши комментарии, внимание и конструктивная…
Сегодня канал преодолел 3000 подписчиков, удивительно с какой скоростью это произошло, ведь 2000 было всего навсего в ноябре прошлого года, а с тех пор прошло чуть больше 4 месяцев.
Спасибо, что вы здесь, постараюсь и дальше радовать вас своим ворчанием, феласофией и забористым контентом :)
Спасибо, что вы здесь, постараюсь и дальше радовать вас своим ворчанием, феласофией и забористым контентом :)
🔥40❤33👍13
Pavel Zloi
Вайбкод для неискушенных Решил провести на работе один небольшой эксперимент, предложил коллегам у которых нет айтишного образования попробовать нейросети и инструменты вайбкодинга при решении своих повседневных задач. Важное условие эксперимента в использовании…
Эксперимент (день 1)
Первая проблема с которой столкнулись участники оказалась в сложности установки консольного тула Crush, на виндовс нужна утилита winget, на макоси brew, я кстати пробежался по всем консольным тулам (типа курсора, клод кода, джемини и так далее) и эта общая проблема, вместо создания MSI/EXE пакетов для виндовс и DMG для макоси авторы большинства консольных тулов делают непонятно что, какие-то скрипты для PowerShell, какие-то curl | bash, ладно бы на линуксе только, мы тут все привычные к такому.
Вторая проблема в том, что Crush оказывается не поддерживает ACP, на эту тему есть PR у них, который открыт с февраля, вообще это очень странно, ведь Crush это форк OpenCode, почему эту часть не портировали не очень понимаю.
Третья проблема с кодировками в конфигах, нельзя просто взять, прислать JSON-конфиг с линукса, вставить его в текстовый файл на виндовс и чтобы это работало, других способов настроить тул разработчики не предусмотрели, прямо как в старые добрые времена.
Первая проблема с которой столкнулись участники оказалась в сложности установки консольного тула Crush, на виндовс нужна утилита winget, на макоси brew, я кстати пробежался по всем консольным тулам (типа курсора, клод кода, джемини и так далее) и эта общая проблема, вместо создания MSI/EXE пакетов для виндовс и DMG для макоси авторы большинства консольных тулов делают непонятно что, какие-то скрипты для PowerShell, какие-то curl | bash, ладно бы на линуксе только, мы тут все привычные к такому.
Вторая проблема в том, что Crush оказывается не поддерживает ACP, на эту тему есть PR у них, который открыт с февраля, вообще это очень странно, ведь Crush это форк OpenCode, почему эту часть не портировали не очень понимаю.
Третья проблема с кодировками в конфигах, нельзя просто взять, прислать JSON-конфиг с линукса, вставить его в текстовый файл на виндовс и чтобы это работало, других способов настроить тул разработчики не предусмотрели, прямо как в старые добрые времена.
❤7✍3🤯2👍1💯1
GitHub
GitHub - EvilFreelancer/acpbox: OpenAI-compatible HTTP API that acts as a gateway to the Agent Client Protocol (ACP)
OpenAI-compatible HTTP API that acts as a gateway to the Agent Client Protocol (ACP) - EvilFreelancer/acpbox
ACPBox - Agent Client Protocol (ACP) в формате OpenAI API
В последнее время много занимаюсь интеграцией агентов и в какой-то момент устал каждый раз заново собирать ReAct лупу под задачу, пришла идея взять уже готового агента по Agent Client Protocol (stdio, JSON-RPC) и не городить свой HTTP-слой, а выставить наружу привычный OpenAI-совместимый API - один base URL, те же
За пару вечеров собрать проект ACPBox, под капотом там uvicorn, на каждый worker один долгоживущий процесс агента, запросы с OpenAI-формата переводятся в ACP и обратно, стриминг и список моделей из режимов агента поддерживаются.
Установка изолированно через pipx:
Пример минимального
Для курсора вместо
Запускаем так:
На
Репозиторий: https://github.com/EvilFreelancer/acpbox
PyPi пакет: https://pypi.org/project/acpbox/
PS. Важный нюанс, кодовый агент, типа того же OpenCode или Cursor нужно настраивать заранее и отдельно, так как ACPBox это просто обёртка для работы кодовым агентом и занимается только решение задачи проксирования запросов от пользователя к агенту и обратно.
В последнее время много занимаюсь интеграцией агентов и в какой-то момент устал каждый раз заново собирать 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
На
https://localhost:8080/docs появится OpenAPI/Swagger UI, можно будет потыкать агента.Репозиторий: https://github.com/EvilFreelancer/acpbox
PyPi пакет: https://pypi.org/project/acpbox/
PS. Важный нюанс, кодовый агент, типа того же OpenCode или Cursor нужно настраивать заранее и отдельно, так как ACPBox это просто обёртка для работы кодовым агентом и занимается только решение задачи проксирования запросов от пользователя к агенту и обратно.
👍10❤3
Pavel Zloi
Прокачал за вчера coddy. Запилил такие вот фичи: - добавил в observer синхронизацию всех issues и pull_requests на старте системы - переработал логику раскладывания issues и pull_requests по разным папкам (рис.2) - добавил флоу автоматического тестирования…
GitHub
GitHub - coddy-project/coddy-bot: COmmunity Driven Development, Yep - is an autonomous development assistant that integrates with…
COmmunity Driven Development, Yep - is an autonomous development assistant that integrates with Git hosting platforms. - coddy-project/coddy-bot
За вчера порядочно прокачал проект Coddy, переделал подсистему которая пишет код на ACP, так что теперь её можно использовать с любым кодовым агентом.
В планах реализовать хук автоматического переключения на новую версию Docker-контейнера после мерджа PR и автоматического бампа версии.
В планах реализовать хук автоматического переключения на новую версию Docker-контейнера после мерджа PR и автоматического бампа версии.
🔥11❤1👍1