Comments 67
Уже как пару месяцев Claude Code даёт возможность пользоваться своим фреймворком и соединять его с локально развёрнутой ollama
Но региональные ограничения на использование никуда не деваются, не смог заставить работать.
У Клода принципе очень строгая политика региональных ограничений. Помню как-то раз устанавливал Claude Code несколько дней на свой домашний ПК, потому что ему не нравился мой VPN. К слову, этим VPN я как раз активно пользуюсь на другом устройстве, где есть Claude Code :)
Поэтому, буду рад, если протестируете нашу первую версию PocketCoder!
Не очень понятно, как $120 вы поменяли на аренду сервера с GPU за $1500
Постарался в начале раскрыть это.
Искали альтернативу, GLM, но там не нашлось CLI, как в Claude Code. К такой механике привыкли, менять не хотели привычки.
Ну, а дальше, решили попробовать сделать кодового агента с возможностью работы с любыми моделями, и не обязательно сверх мощными
Как таковой проблемы не было, но платить $120 в моменте неприятно :)
Классическая ситуация - прилетел счет на подписку не важно чего и начинаешь рефлексировать, а нужна ил она мне вообще?
спасибо. не увидел ответа на свой вопрос: вы не платите за подписку $120, но ведь запросы на чем-то крутятся, и это что-то имеет какую-то стоимость. Я утверждаю, что в моменте эта стоимость сильно выше $120 в месяц (сейчас просто свой выделенный сервер разместить в ДЦ - это уже $60-100)
Хочу повториться, что Claude Code подписка никуда не ушла у нашей команды.
Высокая стоимость продукта заставила нас задуматься об альтернативах, и в нужный момент пришла мысль, что, не сделать ли нам своего кодового агента, который универсально будет работать с любой моделью?
А уже пользователь сам развернет железо, которое ему по карману. Будь то GLM / Deepseek, или же облачный ChatGPT / Claude.
Важно то, что мы подошли к созданию агента со своим подходом и хотим его максимально протестировать, чтобы он был, как минимум, на уровне Claude Code. точки зрения эффективности реализации.
Важно, что Claude Code эффективен не только Потому что под капотом у него все логично. А сама по себе модель Claude Opus / Sonnet умная и понимает, когда вызвать ту или иную функцию / инструмент / проч.
Все упираетсявсе равно в то, с какой моделью вы работаете, но все же улучшить качество конечного кода можно, благодаря грамотному Agent Loop, что мы и сделали и нам кажется мы провели хорошую работу
За $1500 можно собрать свой сервер для комфортного инферинга glm-4.7-flash.
не могли бы поделиться такой конфигурацией "сервера" ? Настольный ПК из б/у комплектующих совсем не то же самое, что сервер для 24x7 работы в ДЦ
Настольный ПК из б/у комплектующих совсем не то же самое, что сервер для 24x7 работы в ДЦ
Так про "сервер для 24x7 работы в ДЦ" никто кроме вас не говорил. Локального кодового агента вполне можно запускать на компьютере с двумя БУ видеокартами с Авито, работающего в серверной через дверь (у меня вообще в сарае стоит). И работать, кстати, он будет без проблем 24х7.
Вариантов на самом деле масса. Есть V100 поддержанные, на 32гб которые на Али эксперс стоят порядка 50-60к рублей. Тут в РФ наверное 100к. Хватает просто за глаза ее, хоть и инфраструктура старая, но все равно ведь запускает неплохие модели, как qwen 30B-A3B (у нее встроенный reasoning и концепт MOE). Получите на ollama+v100 где-то 80 t/s.
В общем, вариантов просто тьма :)
На Авито 3090/v100/P4 стоят относительно копейки, относительно их первоначальной стоимости но КПД будет достойным и еще долго прослужат вам.
Вариантов на самом деле масса. Есть V100 поддержанные, на 32гб которые на Али эксперс стоят порядка 50-60к рублей. Тут в РФ наверное 100к. Хватает просто за глаза ее, хоть и инфраструктура старая, но все равно ведь запускает неплохие модели, как qwen 30B-A3B (у нее встроенный reasoning и концепт MOE). Получите на ollama+v100 где-то 80 t/s.
В общем, вариантов просто тьма :)
На Авито 3090/v100/P4 стоят относительно копейки, относительно их первоначальной стоимости но КПД будет достойным и еще долго прослужат вам.
не знаю, что там по серверам для ДЦ, у меня данная модель(glm-4.7-flash 30b 6bit) отлично себя чувствует на Macbook Pro M3 36Gb. Но признаться честно мне пока больше нравится другая - Qwen3-Coder-30B-A3B-Instruct. Можно купить скромный MacMini позапрошлого поколения и сделать из него отличный сервер дома
Как плагин в VSCode будет? Протестировал бы у себя. Как раз прогу делаю.
Claude code с glm работает как родной, и это появилось сильно раньше новости про ollama
стоит ли скрывать эту XML-схему от пользователей или нет.
А зачем что-то скрывать? Например, Kiro на каждое задание генерит файлы спеки, среди которых есть tasks.md, который немного напоминает вашу схему: там у него список шагов, с описанием для каждого шага что надо сделать, и отметкой - сделан шаг, или нет. Можно запустить каждый шаг по отдельности, с пустым контентом, или сказать, чтоб все сделал, подозреваю, что во втором случае для каждого шага создается новый контекст (к сожалению, Kiro не показывает размер текущего контекста, поэтому точно проверить не получится).
В Python есть аналог - pipx:
pipx run pocketcoderСкачает и запустит без установки в систему. Работает уже сейчас.
Или если хочется прям one-liner без pipx:
python -m pip install --user pocketcoder && pocketcoderНо pipx удобнее, так как он изолирует зависимости.
Жаль конечно.
на python -m pip install --user pocketcoder && pocketcoder
выдает
"pocketcoder" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Лучше uv . Он не только создаёт изолированные окружения, но и ставит автоматически нужную версию питона, если её нет. Плюс все это делает в десятки раз быстрее и технически представляет собой буквально пару экзешников (uv и uvx) без зависимостей. По-моему идеальный вариант, не требующий погружения в мир питона.
Запуск пакета из pypi:
uvx pocketcoder
Запуск из репозитория:
uvx --from git+https://github.com/Chashchin-Dmitry/pocketcoder.git pocketcoder
Но если планируется использовать часто, то лучше установить как тул:
uv tool install pocketcoder
Спасибо, учтем! Думали сделать по-максимуму просто, но, видимо, нет предела совершенству!
Поддержка кириллицы очень плоха. По сути ее просто нет.
Интересный проект. Отдельное спасибо за разбор архитектуры разных агентов.
На pypi отсутствуют ссылки на домашнюю страницу проекта и репозиторий. Пожалуйста, добавьте их в метаданные пакета.
Claude code вполне хорошо работает с GLM-4.7 через openrouter
Есть ещё crush, тоже норм агент
Скажите, как происходит выбор, что пересылать в модель? Я про то, что это и токены, и скорость - да и безопасность.
LLM сам выбирает что читать через tools — вызывает list_files, видит структуру, потом read_file для нужных файлов. Мы не ограничиваем какие файлы можно читать.
Как экономим токены: RepoMap — сжатая карта проекта (классы/функции без содержимого), большие файлы truncate с "... N lines total", история — последние 10 сообщений, старое отбрасывается.
Что насчет безопасности : с Ollama - 100% локально, никуда не уходит. С OpenAI/Claude - то что LLM прочитал, уходит к ним. LLM обычно не лезет в .env без причины, но технически может.
Если работаете с чувствительными данными — используйте Ollama + локальную модель.
А OpenCode разве не подойдёт?
А вот вообще какая мощность нужна сервера? Ну судя по qwen 2.5 7B, то где то 8гб ОЗУ, ну и проц ядра 4 хватит(2+ ГГц). Ну идея классная конечно.
Отлично, тема хорошая актуальная особенно с такими ценами как сейчас, вот что не хватает, нужен какой то встроенный интрумент для индексации всего прое4та, или внешний на худой конец, для более точного и быстрого поиска по коду, например rag
Так почему не OpenCode? Glm в нем вроде как родной.
Суть статьи - сделать своего кодового агента, сравнивая инфраструктуру конкурентов, в тч OpenCode.
Вы из яндекса?
слышал там там все страдают с NIH синдромом (not invented here).
Ответа я так понимаю не будет. статья неплохая, но использовать - нет, тоже изза NIH.
Размер контекста интересует. На компе 1.5тб ОЗУ. Сколько моделей перепробывал - почти везде та же беда. Но вот тот же Codex стал неплох, но до идеала далеко пока что
Я, конечно, не совсем по адресу, но может кто просветит: на Oracle free tier который 4 ядра ARM Ampere и 24Гб ОЗУ (и, разумеется, никакого GPU) можно что-то приличное запускать из моделей с практической пользой? Практическая польза для меня это или не надо уходить курить для ожидания ответа или если ушел, то результат того стоит, тогда можно и на другую задачу переключиться если тут реально агент что-то итеративно может сам приличного наколбасить.
Пробовал и qwen2.5-coder-1.5b-instruct-q5_k_m.gguf и 7B и даже жирнее. Пока curl'ом только щупал, скорость, конечно, не фонтан что-то. Вот пошел искать куда это запрячь что бы в деле посмотреть. Но может такие ресурсы это только мучение, а не агент будет? Ну или максимум какой-то автокомплит в IDE, которых в бесплатных лимитах итак валом?
вот такой тест скорости на 1,5В, на 7В и выше почему-то падают:
./llama-bench -m /home/ubuntu/llm-server/models/qwen2.5-coder-1.5b-instruct-q5_k_m.gguf
| model | size | params | backend | threads | test | t/s || ------------------------------ | ---------: | ---------: | ---------- | ------: | --------------: | -------------------: |
| qwen2 1.5B Q5_K - Medium | 1.19 GiB | 1.78 B | CPU | 4 | pp512 | 26.37 ± 0.55 |
| qwen2 1.5B Q5_K - Medium | 1.19 GiB | 1.78 B | CPU | 4 | tg128 | 15.15 ± 1.33 |
15 t/s на 1.5B - это норм для агента, только 1.5B тупенькая для coding, tool calling слабый.
7B падает скорее всего из-за context length. Ollama по дефолту жрёт память на контекст, попробуй явно ограничить:
ollama run qwen2.5-coder:7b --num-ctx 4096Или через Modelfile создай версию с фиксированным контекстом. 7B на 24GB нормально крутится когда контекст обрезан.
По скорости - для агента ок. Ты же не в чате сидишь и ждёшь, а дал задачу и пошёл. Он там сам думает, файлы читает, пишет, через минуту-две готово. 6-8 t/s на 7B вполне терпимо.
Для автокомплита в IDE -тут да, мучение, там миллисекунды нужны. А для агента который сам итеративно колбасит - это рабочая история.
Я там может неточно выразился: на 7B сами модели не падают, падают тесты скорости. А так даже на 30В (или 32В?) взлетела, но ответы я ждал от нее минут по 5-6. Правда вот она довольно быстро падала, я уж не копал что там, но похоже да контекст подъедал ОЗУ и всем пока.
Ну вот я как-то так и прикидывал и на такое примерно и прицеливался что в агентах их запрячь на некоторую автономию. Спасибо, что подтвердили мою гипотезу. Единственное я через llama.cpp всё гонял и, возможно, есть еще небольшой простор для оптимальной компиляции. Так же хочется попробовать переключить на huge страницы 2Мб, но пока что-то ядро не удается заставить перейти на них. ollama не трогал еще.
Кстати, я верно понимаю, что LLM не кластеризуются в смысле не параллелятся в рамках одного запроса? Т.е. если у меня два таких сервера, то это никак не ускорит общую работу? Дольше данные между собой будут гонять. А то было бы неплохо если бы даже прирост был 1,5 раза при еще одном доп сервере.
Не кластеризуются для одного запроса, верно. Каждый токен зависит от предыдущего, это последовательная операция. Tensor parallelism между нодами работает только когда interconnect быстрый (NVLink, InfiniBand), через обычную сеть latency убьёт выигрыш, будет медленнее чем на одном сервере.
Два сервера полезны по-другому: параллельные задачи. Один агент код пишет, второй тесты гоняет. Или просто два разных проекта одновременно.
По ускорению на ARM: да, должно дать прирост, особенно на 7B+. При компиляции llama.cpp проверь что NEON включен (на ARM это аналог SIMD). Q4_K_M чуть быстрее Q5_K_M, разница в качестве минимальная. -t 4 явно, по числу физических ядер.
30B падает - значит это точно контекст. На 24GB с 30B моделью контекст надо резать жёстко, типа 2048. Иначе OOM.
Два сервера полезны по-другому: параллельные задачи. Один агент код пишет, второй тесты гоняет. Или просто два разных проекта одновременно.
Да, я тоже уже это так понял. Но не до конца понятно кто их оркестрирует? Клиент на примере вашего или все же ollama/llama.cpp внутри себя связи пробрасывают через ключи/конфиги и у нас единый endpoint для клиента?
По ускорению на ARM: да, должно дать прирост, особенно на 7B+. При компиляции llama.cpp проверь что NEON включен (на ARM это аналог SIMD). Q4_K_M чуть быстрее Q5_K_M, разница в качестве минимальная.
-t 4явно, по числу физических ядер.
Да, это конечно. Единственное заметил что на моделях начиная с 7В падает на
load_tensors: CPU model buffer size = 4460.45 MiB
................................ (тут сообщение об ошибке, точно не помню переполнение буфера или тип того)
Нашел где отключать, но не понятно сильно ли от этого деградирует или нет.
30B падает - значит это точно контекст. На 24GB с 30B моделью контекст надо резать жёстко, типа 2048. Иначе OOM.
Спасибо.
Надеюсь хоть этот агент заработает на моем тостере :D
Запустится то да! А вот какую вы модель поставите, такая скорость и будет... Буду ждать обратную связь :)
Честно говоря у меня 2 карты p102-100 10gb вроде бы ministral относительно бегло печатает, по крайней мере быстрее человека) но вот с opencode, qween-coder у меня че то как то не особо заработал, как я понял там еще локально инструменты подтягивать надо, может у вас заработает )
Так то все попробовать надо)
Так то чуть позже mi50 возьму и вроде даже повеселее будет))
Велосипедисты.... claude-code-router / opencode/kilo. Вы не смотрите в корень проблемы, у людей нет проблем с агентами - у них проблемы с моделями, которые работали бы быстро на вменяемом железе. Уже все тесты показали что, используя модели с маленьким количеством параметров , на выходе получается посредственный код. Навскидку я в свое время не нашел сколько у клода, но по альтернативным моделям можно было предположить что больше 500 млрд параметров.
Никто не спорит, что размер модели прямо пропорционален качеству кода. Но у всех отличается методология и "что под капотом".
Мы лишь предлагаем свое решение и цикл работы ИИшки.
так в этом вся и боль... тут основное - это ллм. как-то давно тестировал гигакод. ощущения посредственные остались. те даже если вы допилите механику до идеала, мозги все равно решают. многие агенты там мультиллм пытались делать, типа разные ллм под разные задачи, чтобы стоимость перекрывать и снизить расходы, но это тоже костыли нежели нормальное решение.
если будете экзешники делать, то сделайте компиляцию в с++ через транслятор, чтобы побыстрей запускались - если получиться.
у клода кстати поддержка прокси есть, так что региональный ограничения - как супер плюс это такое.
а так успехов вам !
Ну, а автор-то тут чем виноват? Он предлагает еще один доступ к модели и её утилизации. Это уж к тем кто модели выпускает, ну максимум запускает (llama.cpp, ollama). А так все равно что авторам VLC предъявлять, что смотреть-то нечего, контент отстой и киноиндустрия в упадке. При том что своих проблем у того же VLC реально может хватать и есть там за что покритиковать. Так и тут может в своей нише их продукт имеет свои проблемы, но уж точно модели не их зона ответственности.
Ну если дальше по ваще логике разрабы vlc, скажут мы - не виноваты , виноваты - ffmpeg, а те скажут мы - не виноваты, виноваты - Интел. они кривой патч отправили , а те скажут мы тоже не виноваты , виноват - дядя Петя, а дядя Петя скажет я тоже не виноват писал на pocketcoder, а он какую то хрень сделал, pocketcoder дальше скажет - все было чётко это ллм какую то чушь выдало....
Какой в этом смысл ? Просто написал что без вменяемой модели , ничего хорошего на выходе не получиться . А все почему то в первую очередь рассматривают реализации агентов для кода, а не адаптацию ллм. Вот и все :)
Не так, по вашей логике (аналогию которой я привел ) вы жалуетесь авторам VLC на то что что фильмы отстой и нечего смотреть на их плеере и зачем он нужен тогда, тем более других как грязи, есть MPlayer же, а вы тут велосипед еще городите.
Боль ваша в целом понятна и более того мною возможно разделяема, но скидывать ее на автора сабжа... Реально какой смысл? Как он повлияет на наличие "вменяемых" моделей? Человек выбрал нишу, пилит open source обертку над оберткой некоего ядра, денег не просит, круто чё. Вопросы по ядру, ну явно же не к нему.
Про адаптацию моделей (не знаю что вы конкретно имеете ввиду) кмк лучше авторам движков LLM.
Если бы вы критиковали за сам продукт, что-то в духе: да у вас просто калька OpenCode только еще хуже, ничего вы не поняли в написании такого ПО, подходов не осмыслили, ничего нового не привнесли, а на все ваши заявленные преимущества у меня контраргументы почему тот же OpenCode бьет ваши. Тогда другое дело. Но вы же не про это.
Как мы создали open-source кодового агента, работающего с любыми локальными моделями