У GPT 6 Astra при итеративном исправлении с AI разными путями можно прийти к одной и той же функциональности, но объем кода в итоге может отличаться в 30 раз. Я зимечал в 2-5 раз, но вот 30 меня прям поразило, при чем на уровне классов и функций код одинаково чистенький и даже в моем стиле, и то и то смотрю, как я писал
👍8🤷♂3❤2🔥1👀1
Reslop 0.2.0 вышел
С версии 0.1.3, он вырос из интерактивного инструмента для ревью diff'ов в терминальный UI для контроля над изменениями, сгенерированными AI, и постепенно движется к поддержке полного цикла разработки: архитектура, планирование, ревью, исправление и валидация.
Теперь можно:
- импортировать GitHub PR и GitLab MR
- редактировать код и diff'ы прямо in-place
- работать с коммитами и ветками
- делать commit, amend, fixup, rebase, pull и push
- автоматически подгружает изменения файлов на диске
- улучшенна навигация, списки файлов, прогресс и фоновые операции
- теперь работает на Linux, macOS и Windows
Идея остается прежней:
Цикл:
https://github.com/tshemsedinov/reslop
С версии 0.1.3, он вырос из интерактивного инструмента для ревью diff'ов в терминальный UI для контроля над изменениями, сгенерированными AI, и постепенно движется к поддержке полного цикла разработки: архитектура, планирование, ревью, исправление и валидация.
Теперь можно:
- импортировать GitHub PR и GitLab MR
- редактировать код и diff'ы прямо in-place
- работать с коммитами и ветками
- делать commit, amend, fixup, rebase, pull и push
- автоматически подгружает изменения файлов на диске
- улучшенна навигация, списки файлов, прогресс и фоновые операции
- теперь работает на Linux, macOS и Windows
Идея остается прежней:
разработчик должен понимать, проверять и контролировать каждое изменение.
Цикл:
Review → Plan → Repair → Verify
https://github.com/tshemsedinov/reslop
🔥15👍8❤3
Возможно, не все уловили, для чего reslop:
- как в гитхабе и гитлабе есть интерфейс для ревью: коммент на блок diff с указанием строк, добавление общего ревью на PR/MR, в reslop это todo, можно предложить свой код, вот эти функции сделаны для терминала
- забирает результаты такого ревью из GitHub/GitLab, собирает все в план для ии
- TUI над всеми функциями git
- специальный интерфейс для аудита, ревью и обновления зависимостей npm.
Скоро будет забирать еще issue и добавлять в план, запускать тесты и вынимать из логов нужную часть ошибок для добавления в план, линтеры и тоже в план, потом анализ кода и добавление инструкций на рефакторинг, который нельзя сделать алгоритмически.
А агент проходится по плану и все правит.
Присылайте, какие ещё вещи можно автоматизировать, которые забирают время у вас.
Тут демо https://youtu.be/YhmhmVThjNc
- как в гитхабе и гитлабе есть интерфейс для ревью: коммент на блок diff с указанием строк, добавление общего ревью на PR/MR, в reslop это todo, можно предложить свой код, вот эти функции сделаны для терминала
- забирает результаты такого ревью из GitHub/GitLab, собирает все в план для ии
- TUI над всеми функциями git
- специальный интерфейс для аудита, ревью и обновления зависимостей npm.
Скоро будет забирать еще issue и добавлять в план, запускать тесты и вынимать из логов нужную часть ошибок для добавления в план, линтеры и тоже в план, потом анализ кода и добавление инструкций на рефакторинг, который нельзя сделать алгоритмически.
А агент проходится по плану и все правит.
Присылайте, какие ещё вещи можно автоматизировать, которые забирают время у вас.
Тут демо https://youtu.be/YhmhmVThjNc
🔥10👍4❤3🤝1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1😁1💯1
В эту субботу будет стрим по применению AI в создании архитектуры.
- архитектурный дрейф и деградация архитектуры
- размытая архитектура, которая не видна по коду
- случайные и неявные, скрытые зависимости
- неясная и запутанная структура проекта
- Архитектура в спеках расходится с кодом
- потеря архитектурного контекста, решений и контроля
- смешивание уровней (слоев), протекание абстракций
- другие проблемы и ваши вопросы
Поговорим о создании DSL языка для описания архитектуры на базе JS/TS/LISP, описывающего композицию модулей, информационные потоки, бизнес-процессы, коммутацию контрактов и ограничений, инфраструктуру и зависимости.
Регистрация на стрим https://gm.nexttick.it/go/ai-architecture-course
- архитектурный дрейф и деградация архитектуры
- размытая архитектура, которая не видна по коду
- случайные и неявные, скрытые зависимости
- неясная и запутанная структура проекта
- Архитектура в спеках расходится с кодом
- потеря архитектурного контекста, решений и контроля
- смешивание уровней (слоев), протекание абстракций
- другие проблемы и ваши вопросы
Поговорим о создании DSL языка для описания архитектуры на базе JS/TS/LISP, описывающего композицию модулей, информационные потоки, бизнес-процессы, коммутацию контрактов и ограничений, инфраструктуру и зависимости.
Регистрация на стрим https://gm.nexttick.it/go/ai-architecture-course
👍10❤5🔥2😁2
В версии reslop v0.2.4 появилась возможность запускать тесты и инструменты с компактным выводом: это упрощает чтение для разработчиков и экономит токены при работе с AI
- Stack traces сокращены для удобства ИИ-агентов и людей
- Похожие ошибки группируются (убираем дубли)
- Остается только самое важное: ошибки, диагностическая информация и краткая сводка
- Меньше текста для чтения и меньше токенов расходуется при отправке логов агенту
- Реализована очистка старых логов
В терминальном интерфейсе можно запускать, останавливать и перезапускать npm-скрипты прямо в процессе ревью. Логи сохраняются в директорию
Установка:
Запуск тестов:
или просто добавьте reslop в команду:
https://github.com/tshemsedinov/reslop
- Stack traces сокращены для удобства ИИ-агентов и людей
- Похожие ошибки группируются (убираем дубли)
- Остается только самое важное: ошибки, диагностическая информация и краткая сводка
- Меньше текста для чтения и меньше токенов расходуется при отправке логов агенту
- Реализована очистка старых логов
В терминальном интерфейсе можно запускать, останавливать и перезапускать npm-скрипты прямо в процессе ревью. Логи сохраняются в директорию
.log/.Установка:
npm i -g reslopЗапуск тестов:
reslop t -- node --test <files>или просто добавьте reslop в команду:
npm thttps://github.com/tshemsedinov/reslop
❤9👍4🔥3
Каждое ваше ревью слопа должно превращаться в скилл и в следующий раз уже вас не спрашивать. Скилы уплотняются, так и происходит трансфер знаний.
Вместо того, чтобы не смотреть код, нужно автоматизировать ревью, частично алгоритмами, кстати.
Вместо того, чтобы не смотреть код, нужно автоматизировать ревью, частично алгоритмами, кстати.
👀8👍3🔥3💯1
Тут пример, как я сделал рефакторинг reslop при помощи
- Opus 5.5 как старшая модель
- Grok 4.7 как младшая
- reslop составлял планы, делал коммиты
- модели запускали тесты через reslop t на этом экономили
- я делал ревю в GitHub + reslop
- Backlog и спеки я вел в reslop (но это покажу только тем, кто на курсе)
- скилы: metaskills - data-structures, js-data-structures, error-handling, js-conventions, js-gof
Объем кодоваой базы:
js код - 23 k строк - 636 kb
тесты - 18 k строк - 601 kb
Lines changed: +1422 additions / -2273 deletions
https://github.com/tshemsedinov/reslop/pull/109
- Opus 5.5 как старшая модель
- Grok 4.7 как младшая
- reslop составлял планы, делал коммиты
- модели запускали тесты через reslop t на этом экономили
- я делал ревю в GitHub + reslop
- Backlog и спеки я вел в reslop (но это покажу только тем, кто на курсе)
- скилы: metaskills - data-structures, js-data-structures, error-handling, js-conventions, js-gof
Объем кодоваой базы:
js код - 23 k строк - 636 kb
тесты - 18 k строк - 601 kb
Lines changed: +1422 additions / -2273 deletions
https://github.com/tshemsedinov/reslop/pull/109
👍12❤3🔥1
Что AI научился делать действительно хорошо, так это максимально отсрочить катастрофу в проекте
🔥11🤣10❤2👍2
Объем текста и объем кода должны заставлять нас не махнуть рукой, а заставлять ии делать меньше бюрократии
💯8👍3❤2
На кого учиться, если все профессии отберут роботы? Где пределы экспансии искусственного интеллекта? Что останется кожаным?
https://youtu.be/BQRDr71Yaaw
https://youtu.be/BQRDr71Yaaw
YouTube
Встречайте революцию! | Олег Хомяк, Тимур Шемсединов | @TimurShemsedinov
Карты для благодарностей
Монобанка: https://send.monobank.ua/jar/ASQws2PAJw
4441111017027206 👉 (налаштовуйте регулярний платіж)
Конверт Привата: https://www.privat24.ua/send/49zm0
5168752167933251
USDT (TRC-20): TUxYbEtvmN4Esa3hKPwHZALUs3BQikMgKR
На студію…
Монобанка: https://send.monobank.ua/jar/ASQws2PAJw
4441111017027206 👉 (налаштовуйте регулярний платіж)
Конверт Привата: https://www.privat24.ua/send/49zm0
5168752167933251
USDT (TRC-20): TUxYbEtvmN4Esa3hKPwHZALUs3BQikMgKR
На студію…
❤9👍4👀2
Какой сейчас размер вашей команды? Не компании и не IT отдела, а именно продуктовой команды.
Anonymous Poll
6%
Я работаю один на себя
3%
Я работаю один на компанию
17%
Команда 2-3 человек
32%
Команда 4-7 человек
17%
Команда 8-15 человек
12%
Команда >15 человек
12%
Я не работаю
Тип компании, где я работаю
Anonymous Poll
11%
Стартап
39%
Продукт
19%
Аутсорс
7%
Enterprise
7%
Банк/FinTech
2%
Консалтинг
5%
Работаю сам
3%
Государственная
2%
Фриланс
6%
Другое
Если взять одно, что я хочу в JavaScript, то это будет Block Expression. При чем в V8 все готово, чтобы это сделать, в каждом блоке последнее выражение отдельно сохраняется в структуре V8, я даже согласен на do-expression, но зачем этот do?
Сейчас приходится либо выносить функцию или использовать IIFE или let снаружи - это отвратительно:
Промежуточные переменные не загрязняют scope, а можно было бы:
Вместо IIFE только представьте как можно было бы переписать:
Но лучше всего в try/catch, представьте это как перепишем:
А теперь представьте литерал объекта:
Или вызов функции:
Сейчас приходится либо выносить функцию или использовать IIFE или let снаружи - это отвратительно:
let price;
if (user.isAdmin) {
price = 0;
} else if (user.hasDiscount) {
const discount = calculateDiscount(user);
price = basePrice * (1 - discount);
} else {
price = basePrice;
}
Промежуточные переменные не загрязняют scope, а можно было бы:
const id = {
const normalized = name.trim().toLowerCase();
const separator = normalized.includes("-") ? "-" : "_";
const parts = normalized.split(separator);
parts.join(":");
};Вместо IIFE только представьте как можно было бы переписать:
const config = (() => {
const env = process.env.NODE_ENV ?? 'development';
const production = env === 'production';
// do something...
return { env, host, port, secure: production };
})();Но лучше всего в try/catch, представьте это как перепишем:
let data;
try {
const text = await readFile(path, 'utf8');
data = JSON.parse(text);
} catch {
data = 'default value';
}
А теперь представьте литерал объекта:
const response = {
user,
permissions: {
const roles = await getRoles(user);
if (roles.includes('admin')) ['read', 'write", 'delete'];
else if (roles.includes('editor')) ['read', 'write'];
else ['read'];
},
displayName: { ... some calculations },
};Или вызов функции:
render({
const width = container.clientWidth;
const columns = Math.max(1, Math.floor(width / 300));
const gap = columns > 3 ? 24 : 16;
{ width, columns, gap };
});🔥12❤3👍2🤯2🤩1