Posts with tag "project"

Каково это, быть многоруким Шивой?

posted on 2025-11-09

Иногда меня спрашивают, Саша, как ты все успеваешь? Но обычно эти люди не подозревают, что успеваю я очень малую часть того, что задумано. У меня постоянно, есть куча каких-то проектов и идей, над которыми хочется поработать. Снаружи может казаться, что я успеваю многое, но на самом деле я делаю лишь небольшую часть из того, что запланировал. А все остальные планы копятся и копятся.

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

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

Далее я увлекся следующей идеей - переключился на хакатон, который устраивал МТС. Этот хакатон был ориентирован на создание ПО для автономного управления роботами.

МТС второй год уже проводит такой хакатон. Называется он "МТС True Tech". Наверное, в серии следующих нескольких постов я расскажу, как и что делал в рамках этого хакатона. С начала октября по начало ноября я учился программировать роботов. В том году я не стал ввязываться в этот хакатон, потому что казалось, что у меня вообще же нет опыта, как я буду делать что-то, связанное с робототехникой? А в этом году я просто загорелся этой идеей, махнул рукой на то, что опыта ровно ноль и решил как-нибудь поучаствовать.

Удивительно, что даже при отсутствии опыта мне удалось пройти в полуфинал. Но детали подробности расскажу в следующих постах.

Но какой же ответ на заголовок этого поста? Каково быть многоруким Шивой и браться за всё, что хочется?

Как по мне, это очень прикольно, потому что разнообразит кругозор, позволяет попробовать много разного и не закиснуть в рутине. Так что, ребята, не бойтесь и пробуйте себя во всём!

Свой Code Assistant

posted on 2025-07-20

Все выходные я провозился с созданием своего собственного Code Assistant. Очень интересно было разобраться в том, как вообще все это работает. К сожалению, статей именно про устройство кодовых ассистантов не так уж много.

В основном попадаются восторженные статьи про то, как круто работает вайб-кодинг, как с его помощью написали первый Hello World и тому подобное говно. Но мне повезло найти одну очень интересную статью, где автор анализирует работу IDE Cursor и устройство его промпта.

Я начал писать своего кода-ассистента, ориентируясь на исходники проекта Aider, но посматриваю и на другие проекты с открытым кодом, типа RooCode, Cline и прочих.

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

Я изучил, как устроено редактирование файлов в Aider и Cursor. Там правки происходят через вызовы к LLM — формируется небольшой патч в кастомном формате, где указаны старые и новые исходники, затем эти инструкции скармливаются более быстрой LLM, которая уже и меняет исходник.

Я пошел другим путем — для редактирования использую CLI команду patch, научив LLM формировать правильный diff. Пока работает неидеально: иногда дифф получается некорректным, и команда патч ломается. Но если показать LLM ошибку, она делает следующую попытку с исправленным патчем. Обычно ко второй-третьей попытке всё получается.

Я планирую дальше развивать код-ассистент. Теперь нужно добавить цикл проверки изменений через тестирование.

Особенно интересно работать с таким проектом в Common Lisp — можно быстро экспериментировать: смотреть внутренний стейт, править функции, добавлять новые инструменты и сразу тестировать изменения. Такой режим работы очень удобен. Даже для интерфейса я пока использую CL REPL, но планирую добавить веб-интерфейс и может быть консольный, как у Aider. Пока, это площадка для экспериментов!

Обсудить пост в Telegram канале.

Created with passion by 40Ants