DEKSDEN notes
973 subscribers
155 photos
2 videos
1 file
269 links
Канал с моими заметками на разные темы
Vibe Coding -> AI SWE, AI Coding Tools, Agents: Claude Code, Codex, news, links
Чат (!!!): https://t.me/+B1fB3sZbaVthMDhi
Download Telegram
Knip :: полезен для AI-dev


Вы же пользуетесь статическим анализом? Для TypeScript есть весьма стандартный инструмент, который подсвечивает неиспользуемый в проекте код - knip.

https://knip.dev/
https://github.com/webpro-nl/knip


Такого рода инструменты очень полезны именно при ai разработке, когда агенты могут не убирать какой то код для "сохранения совместимости" или ещё по каким то своим туманным соображениям гуманизма, и постепенно в проекте могут копиться некоторые артефакты. Артефакты вредны, засоряют контекст, путают тех же агентов. В крайних случаях вы можете обнаружить себя в многочасовой отладке кода, который устарел и не используется вообще (поэтому и падают тесты с ним - он не актуален).

Штуками такого рода надо пользоваться аккуратно: ложные срабатывания у неё вполне вероятны и ожидаемы: инструмент без ai, анализирует проект механистически, зато полностью.

🟢 Что хорошо работает - это ИИ агент в связке с knip. Инструмент удобно запускать "из-под агента": тогда вы можете просить агента проанализировать вывод knip и дать заключение об адекватности отчёта. Агент с умной моделью типа кодекса вполне в состоянии понять, что публичное api сервисов - это не "лишний экспорт" и может добавить полезные исключения. И в целом проверить выдачу knip на адекватность. Например, подтвердить что часть файлов действительно устарела и не используется. Заодно по итогам он вам эти файлы и уберёт!

‼️ Ещё раз: commit перед сеансом работы с knip обязателен. Пропишите это правило для ИИ агента тоже: чистый git. Эта штука советует УДАЛЕНИЕ кода - операция по определению деструктивная, пользоваться надо аккуратно и желательно понимать что ты делаешь. Лучший рецепт: сохраняйте копии ДО процедуры. Обязательно все проверяйте ПОСЛЕ.

👉 Из полезного: позволяет вычистить накопленные артефакты после многих итераций разработки. Не знаю насколько для человеческой разработки актуально (от команды, наверное, зависит) - но как без подобных инструментов в ai swe я даже не знаю!

В общем, полезная штука, кмк.

А вы чем ещё пользуетесь?

#post
@deksden_notes
👍8🔥52
ReasoningBank от Гугла


Я не мог пройти мимо упоминания "... -банк" Гуглом! ))

🔗 https://t.me/data_secrets/8016

Ну и я бы не сказал, что такого нкто не делал. В том же qoder есть извлечение lessons learned из чатов с ИИ.

Наверное, фишка в системности этого подхода! Надо подумать над этим.


#post
@deksden_notes
🔥5👍2😁1
Схема "критик"


▶️ Пользуетесь ли вы схемой "критик"? Крайне полезная и результативная схема. Суть простая: сделанная работа ревьюится агентом. Работа может быть как планом, так и выполненной работой (рефакторингом, реализацией новой фичи).

Вроде бы элементарно! Но это реально рабоатет и приносит свои результаты. Особенно эффективно если критик - это отдельная задача с отдельным контекстом: так минимизируется bias к сделанной работе. Можно, конечно (и нужно) добавлять шаг "верификация" к сделанной работе, но в кодексе он будет исполняться в том же контексте, что снижает качество.

🟢 Попробуйте!

У меня система регулярно что то или доучитывает в плане, или допланирует. Промпты - стандартные, типовые. Планы сохраняем в md файлы, ими и обмениваемся между агентами.

Интересна вариация схемы: когда один агент производит ревью архитектуры и "косяков" в системе, находит недостатки. Потом другим агентом планируем и устраняем недостатки - а потом "автор" оригинального ревью системы смотрит и даёт заключение про качество исправления выявленных недостатков! Весьма много доработок случается.

🔥 общем, всячески рекомендую. Современные модели дают наибольшее качество в мультиагентных системах, где рефлексия и мультисемплинг пока дают реальный рост результатов. Видимо, до agi так и будм на этих паттернах выезжать


#post
@deksden_notes
1👍9🔥3💯3
Мультисемплинг


▶️ А мультисемплингом пользуетесь? Полезная штука. Этот англицизм (куда же мы без них в отрасли то!) - он про множественные генерации при одинаковом контексте/задаче. Мы генерируем несколько вариантов.

🟢 Рассказываю свой эксперимент: пока у меня есть время - прогоняются тестовые воркфлоу под наблюдением агентов по сценариям (тестирование "под надзором" - agent suprevised testing - что весьма долго, по 20 минут на прогон тестового воркфлоу. В общем, решил причесать архитектуру системы в поисках косячков. Развлекаюсь так периодически! В библиотеке промптов обсидиана лежит заготовленный промпт для анализа, и как раз тут Гемини cli с подпиской тусит во вкладке - неприкаянный!

В общем, решил прогнать "архитектурка-чек". Запраймил гемини индексом меморибанка, и кинул промпт анализа. Потом подумалось что самое время провести эксперимент. Сделал ещё 2 вкладки с гемини, запустил ИДЕНТИЧНЫЕ промпты прайминга и потом - анализа.

➡️ Результаты, конечно, убивают ))

Первый агент написал как все прекрасно, в стиле гемини - "самая надёжная архитектура и тп". Пучок лещей для поглаживания ими ЧСВ мне не нужен, пропускаем.

Второй агент упёрся в основном в типобезопасность и докопался к проверкам типов в обработчиках. Ну ок - имеет место быть, можно обсудить.

Третий агент прошёлся по совершенно другим аспектам: взаимодействию с redis и "болтливостью с БД (когда несколько вызовов делаем), сложности некоторых обработчиков.

🟢 Итог: годный отчёт - компиляция трёх (вернее двух отчётов - первый бестолковый). Поэтому я очень хорошо понимаю, как топовыми режимами работы чата являются системы типа gpt PRO , которые "под капотом", по слухам, делают @5 мультисемплинг!

🤔 Что убивает то? Конечно то, что при ИДЕНТИЧНОМ контексте и запросе, просто за счёт температуры, можно абсолютно случайным образом получить либо хороший годный ответ, либо бестолковый.

Но получить ПОЛНОЦЕННЫЙ ответ за один ответ, видимо, - никак. При современных моделях, полноценный ответ - это или разбивка промпта на пучок задач для "роя" агентов, либо мультисемплинг генерация с оценкой полученного и синтезом итогового объединённого ответа.

Агенты могут работать СИЛЬНО лучше, просто это очень хлопотно их правильно на работу сорганизовать.

Так и живём ...

#post
@deksden_notes
🔥13👍5
Codex workflow для рефакторинга


Сейчас я делаю кодексом довольно много работы, в том числе рефакторинги кодовой базы. Отработался некий пайплайн, которым делюсь.

1️⃣ Конечно, сначала мы обсуждаем план. Читаем меморибанк, праймим контекст. После этого обсуждаем некий момент/идею/доработку, обсждение - в свободной форме. В завершение я прошу кодекс проработать интеграцию этой идеи в текущую кодовую базу, снять все неопределённости. Итогом обсуждения будет проработанная сформулированная идея.

2️⃣ Из обсуждавшегося плана мы делаем штуку, которую я назвал "протокол" - это схема реализации рефакторинга/фичи/и тд.

Структура такая:
- протокол разбит на шаги, шаги - на задачи.
- для шага определён чек-лист приёмки, когда мы считаем его успешно реализованным;
- отдельно прописана необходимость обновления меморибанка (кратко - основные принципы + ссылки на индексный файл правил ведения меморибанка)
- требуем работать:
* без оверининиринга/усложнений
* без легаси, фоллбэков, совместимости со старыми версиями - только новый код, все старое мигрируем;
* делаем все максимально простым способом, но с сохранением функциональности;
* определяем контроль качества: typecheck, lint, build ключевых пакетов, unit test
* определяем политику тестирования: общие хелперы, прописывать - что тестируем, для каких целей, что проверяем, зачем;
* прописываем что после каждого шага сохраняем контекст и прогресс в файл протокола
- технические решения оформляем как мини-ADR
- прописываем схему сохранения прогресса и контекста
- прописываем контекст первого шага

Итог: получаем в папке .protocols/ очередной файл вида "0XXX-some-planned-refactor.md".

3️⃣ Дальше зависит от обстановки: если рефакторинг маленький, и контекста осталось больше 50%, я стартую в этом же экземпляре кодекса командой /protocol-go "работай по плану из протокола, фиксируй прогресс и контекст в файле протокола"

Если рефакторинг большой, то я начинаю новую сессию кодекса (на самом деле у меня есть уже готовые 2-3 сессии с праймингом меморибанком, то у меня 1-2 минуты занимает, поэтому они "в запасе"). Для прайминга задачей у меня есть промпт:
- прочитай протокол из .protocols/ под номером 0-XXX.
- восстановки контекст, подготовься к обсуждению указанных в протоколе задач;
- возвращайся как будешь готов

Как агент закончит подготовку контекста - приступаем обычной командой /protocol-go

4️⃣ Когда кончается контекст - я останавливаю после шага агента (оцениваю - если есть риск исчерпания контекста посередине шага). Стартуем/берем очередной экземпляр кодекса с праймингом меморибанком. Праймим его дополнительно промптом "возобнови задачу" (из пункта 3) чтобы он прочитал контекст из протокола. И - /protocol-go!

Примерно такой пайплайн.

Для СС был примерно такой же с нюансами (там планмод использовал в обсуждении, и явно указывал прописывать todo на базе протокола). Думаю, для любого агента пойдёт.

А вы как тащите большие рефакторинги?

#post
@deksden_notes
🔥8👍5🥱1
Claude Skills


🎁 Интересная тема вышла у Клода - Claude Skills: это коллекция инструкций, скриптов и ресурсов, котоыре кастоимируют поведение Claude для решения разных задач - в Api, Claude Code и Claude!

https://www.anthropic.com/news/skills

▶️ Вы можете описать некие инстуркции для определённой темы - например, работы с Excel. Подхватывает их клод при выполнении релевантной работы. я так понимаю, механизм похож на выбор суб-агента для той или иной работы (сейчас делается по его description/name).

Интересно что скилы могут включать код. Он будет выполняться через тул Code Execution

https://docs.claude.com/en/docs/agents-and-tools/tool-use/code-execution-tool

🟢 В общем, анонс есть, осталось разобраться что это и с чем его едят.

🔗 Линки:

- Teach Claude your way of working using skills
https://support.claude.com/en/articles/12580051-teach-claude-your-way-of-working-using-skills

- What are Skills?
https://support.claude.com/en/articles/12512176-what-are-skills

- Using Agent Skills with the API
https://docs.claude.com/en/api/skills-guide

- Get started with Agent Skills in the API
https://docs.claude.com/en/docs/agents-and-tools/agent-skills/quickstart

- Skill authoring best practices
https://docs.claude.com/en/docs/agents-and-tools/agent-skills/best-practices

- Claude Code : Agent Skills
https://docs.claude.com/en/docs/claude-code/skills

- Public repository for Skills (Github)
https://github.com/anthropics/skills

🔥 Интересно ,будем посмотреть!

#post
@deksden_notes
6👍3🔥2
Local multiagent flow


Работаете ли вы в нескольких сеансах с агентами локально? Кодекс довольно неспешен, и получается запустить довольно много локальных сеансов.

Как работаю (напомню - я уже писал про пайплайн):

1️⃣ из рабочей папки проекта запускаем несколько табов в iterm (варп глючит с shify-enter, это для меня критично - не могу привыкнуть к Ctrl+J для новой строки). В каждом табе запускаем кодекс, праймим контекстом меморибанка (прочитай главный индексный файл ....). Работает по разному - от 2-3 минут до 7-9. Не понял, влияет ли сильно codex-high или codex-medium стоит на это время, - возможно, пока не разбирался.

👉 Таких табов с "готовым" контекстом держу "про запас" несколько. Именуем свободные табы (cdx-XX, где XX порядковый номер, увеличиваем по мере необходимости).

🟢 Да, вы правильно догадались: ещё есть cc-12, ...


2️⃣ Когда возникает тема к агенту: вопрос "а как у нас рабоатет ?..", всплывает ошибка в воркфлоу "вот тебе протокол запуска ... Разберись!..", или просто фичу формулируем - берём "из запаса" свободный таб, пишем в него вопрос, ведём диалог с агентом.

👉 Когда беру таб из запаса и начинаю обсуждение, то переименовываю его в просто порядковый номер, чтобы визуально отличать от "запасника". Да, иногда текущих табов несколько.

3️⃣ Если из диалога с агентом родилась задача, то приступаем к планирвоанию. Просим проработать её поподробнее, а потом делаем "протокол": это подробный документ для реализации фичи, в котором расписан воркфлоу рабоы:

- как сохранять прогресс и контекст после каждого шага: чтобы надёжно восстановить его если не уложились в один конеткст при работе),

- расписан мой git flow: как создать рабочую ветку под протокол, как сделать PR, как коммитить шаги и прочее.

4️⃣ Дальше кодекс ДОЛГО (максимум - 2 дня) делает этот протокол, чего то там коммитит. Останавливается в среднем после каждого шага (это 15-50 минут) и я оцениваю контекст - если мало, то берём новый таб и там восстанавливаем контекст по протоколу. Если ок - просто продолжаем.

👉 За счёт worktree дерева под каждый протокол - одновременно могут трудится 3-4 агента в разных табах. Думаю вынести все это хозяйство в облако, как придумаю как запустить проекты в облаке для прогона тестов (не все пускается норм, надо придумать чего то).

👉 На этом этапе таб переименовывается номером протокола, типа "0047". Тоже визуально отличается от остальных, разобраться просто.


5️⃣ Когда работа по протоколу закончена - PR переводится в состояние "готово", и можно мержить. Это ещё один стандартный промпт агенту - он все смотрит, проверяет, тестит, собирает, - и зовёт посмотреть на мерж.


Короче, работа как будто в коллективе, но - все сам.

А вы как все организуете для взаимодействия нескольких агентов?


#post
@deksden_notes
53👍3🔥3🤯2🤔1
Небольшой релиз СС


🆕 Version 2.0.24:
• Fixed a bug where project-level skills were not loading when --setting-sources 'project' was specified
• Claude Code Web: Support for Web -> CLI teleport
• Sandbox: Releasing a sandbox mode for the BashTool on Linux & Mac

👉 Из интересного, обратите внимание: Web -> CLI teleport

Может быть мы таки дождёмся Claude Code Desktop, в котором будет вместо TUI обычный web GUI? )

Sandbox потенциально тоже полезная штука, но тут разбираться надо.

#post
@deksden_notes
👍4🔥2
☎️ Звонок - 18:30 Мск, Иишница у Алмаза - @aiclubsweggs

Рассказываю про flow работы с агентами в несколько потоков

Приходите!
👍9🙏1
Qoder CLI

Кто не видел - но полку cli агентов прибыло! Кводер выпустил CLI агент.

https://qoder.com/blog/qoder-cli

https://qoder.com/cli


🤟 Это оч интересно. Фичи на старте (курсору должн быть стыдно, как и кодексу), чек-лист:

☑️ Кастомные команды есть,
☑️ субагенты есть, /agents команда чата есть;
☑️ quest mode есть: это plan mode + todo контроль выполнения - их версия моих protocols.
☑️ agents.md поддерживаем, # команда чата есть (быстрая запись в память),
☑️ сессии есть, восстановление сессий командой чата есть (/resume) - привет кодексу
☑️ компакт есть (ладно, в кодексе тоже "довольно давно есть")
☑️ даже /usage есть - "как в лучших домах парижу!"
☑️ даже /release-notes есть (интересно - чем вдохновлялись при дизайне cli, даже не знаю!)
☑️ /bashes даже есть - для управления бэкграундными процессами! большой привет кодексу
☑️ yolo режим (--yolo, так и назвали, удивительно что не --dangerously-... , но печатать сильно быстрее)
☑️ неинтерактивный print mode/exec (--print), режимы выдачи text, json, stream-json (удивительно сопало с кем то)
☑️ MCP поддерживаем, добавляем знакомой командой mcp add <...> (опять удивительно совпало!)

Параллельные задачи агент сам делает в worktree. Смотрим опции --worktree и job. Умеет управлять окружениями сам.

Формат субагентов идентичен оригиналу (спасибо, не переписываем их для qoder), включая frontmatter. Агенты уровня проекта поддерживаются, как и уровня пользователя.

Кастомные команды есть, папка commands, уровень проекта/пользователя. Нет аргументов (ни общих, ни индивидуальных - странно что не сделали).

Сделали даже hooks, только notification пока - как в первых версиях сами знаете чего.

В общем, крайне достойный релиз! Не feature complete, но почти. Для первого релиза - 🔥



▶️ Кстати, Qoder Cloud тоже завезли: https://qoder.com/blog/quest-remote

Можно отправлять задачи на выполнение в контейнера в облако: настраивать ничего вроде бы не надо, там они сами разберутся как лучше сделать.

Насчёт цены ничего не говорят, контейнера входят в подписку.

#post
@deksden_notes
🔥11👍32
Kimi CLI


🆕 Обнаружен очередной кодовый агент! (@xpos587) Ничего про него сказать не могу - доки почти никакой, но пилят активно. Почитал changelog: сессии, субагенты упоминаются. MCP, ACP есть. На скрине - авторизация, но хз чего там за планы и прочее. За апи прайс интереса щупать особо нету.

Но Kimi все таки довольно сильная модель, если появится какой то план подписки - можно будет потестить. Пока 380 ⭐️ на гитхабе - это о популярности.

🤔 Единственный необычный нюанс - это питон: получается, оригинальная разработка!

🔗 https://github.com/MoonshotAI/kimi-cli


Агентов прибывает
"... Выключите свет! Они ползут на свет!.."

#post
@deksden_notes
🔥3
CodeMachine


🟢 Довольно любопытная штука прорисовалась:

https://github.com/moazbuilds/CodeMachine-CLI

У нас сегодня день "популярных" решений - 442 ⭐️

Но система любопытная: это оркестратор, который, понукая codex / claude code / cursor cli собирает из спецификации готовую систему.

🦖 Любопытен кейс в документации - он очень энтерпрайзный, видимо, хотят туда продавать:

- микросервисы,
- python на бэк (fastapi, openapi spec) + node/nest на crud
- react на фронт (без next и shadcn, что характерно)
- aws очереди SQS, SNS, SQS DLQ,
- облачные сервисы: s3, k8s, helms/terraform, kong,
- pg + mongo + redis, elastic,
- Istio, ci cd на github с ArgoCD,
- prometheus + graphana метрики, логгер ELK + CloudWatch + Jaeger, и отдельно PagerDuty + Slack для сообщений
- Auth0
- анализаторы OWSAP ZAP + snyk + sonarqube


⏱️ Такого монстра оно пилит 8 часов:


- Architecture Planning: 30 minutes - System architecture, C4 diagrams, ERDs, technical design decisions

- Service Implementation: 5 hours - 7 microservices with 42 API endpoints, 60,008 lines of code across 482 files

- Integration & Testing: 2 hours - Automated validation, unit tests, integration tests, E2E workflows

- Deployment Setup: 30 minutes - Terraform modules, Helm charts, CI/CD pipelines, runtime automation scripts


Total Active Development ~8 hours

👉 НО! Написано что исходная спецификация на 187 страниц. Они там им код расписали в спецификации?))

Всегда не мешает почитать промпты

▶️ В общем, такое мы смотрим!


#post
@deksden_notes
👍12🤯5
Please open Telegram to view this post
VIEW IN TELEGRAM
Codex v0.50.0


⭐️ Релиз кодекса! Ничего примечательного, скорее bugfix релиз, НО - зацените время: суббота, день.


Готов верить в переработки во фронтирных лабах

#post
@deksden_notes
👍5👏3🤔21
CodeBuddy 🆕

Вы удивитесь, но у нас новый консольный агент: Tencent Code Buddy Code. Да, нейминг топовый)) code-code.

Есть и ide, впрочем - ее не смотрел, хотя несколько фич заявлено интересных: конечно -sdd, интеграция бэкэндов Supabase и CloudBase (аналог от тенцента), импорт figma дизайнов для генерации ui, поддержка библиотек компонентов (tdesign, mui, shadcn), mac/win.

▶️ Для CLI заявлены фичи:
- подержка картинок: dnd, copy/paste, links
- сессии: --resotre
- print mode -p + поддержка pipe ; json/stream-json/text;
- mcp: stdio/sse/http; но про oauth ничего не сказано; mpc.json;
- custom slash commands: похоже на СС, project/user уровень, но без $ARGUMENTS и с индивидуальными $1, $2, ...
- memory: через CODEBUDDY.md/AGENTS.md; /memory;
- субагенты: ровно как в СС - md, frontmatter, model, tools теги; /agents команда;
- yolo: --dangerously-skip-permissions;
- интеграция с ide для cli ожидается

🔗 https://www.codebuddy.ai/cli

💰 Цены:
- 2w free trial с 250 кредитами;
- $10/mo за 1000 кредитов в мес; доп 1000 кредитов - тоже $10;
- бонусные кредиты отменили, а давали ранее 100 в день; жаль!

#post
@deksden_notes
1👍42🔥1
MiniMax M2 в ClaudeCode 🆕


▶️ Это не единственная обновка из Китая: minimax m2 доступна до 7 ноября бесплатно в api! можно подключить ClaudeCode через endpoint api в стиле anthropic (хорошая китайская мода пошла! я больше одобряю чем выпуско очередного не совсем доделанного cli).


🔗 https://platform.minimax.io/docs/guides/text-ai-coding-tools

Надо тестить!
🔥

#post
@deksden_notes
👍54🔥3
Minimax в CC


👉 Интересная деталь. Модель Minimax M2 думает как Клод - interleaved thinking, то есть подумает - поделает, потом опять подумает.

Поэтому лучше всего работает внутри СС, которая изначально поддерживает такой режим работы.

👉 Конечно, надо включить thinking: заметное отличие!


#post
@deksden_notes
👍42🔥2
Gemini CLI 0.11 🆕


Продолжаем мониторить ландшафт инструментов. У гемини немаленький релиз 0.11!


🔗 https://x.com/ntaylormullen/status/1983579911202992179

- делегация задач удалённому агеноту jules (через Jules Gemini CLI extension)
- поддержка stream json для non-interactive
- режим просмотра маркдаун файлов можно переключать - между Raw и рендером
- очередь отправленных сообщений с редакированием (да, как в СС)
- улучшения web fetch


🔗https://github.com/google-gemini/gemini-cli/discussions/12229

(0.10 тут: https://github.com/google-gemini/gemini-cli/discussions/11683)

Развивается. хорошо. Будет удачным пристанищем для 3.0!

#post
@deksden_notes
5👍3
Cursor 2.0 Agent Mode


▶️ Курсор обновился - это уже все знают, но я немного о другом: это вторая ИДЕ, которая представила специальный режим для работы с агентами.

Первая на моей памяти - это была TRAE с режимом SOLO.

https://www.trae.ai/solo

Интересен тейк продуктов на агентный флоу.

👉 Оба продукта вынесли чат как одно из главных панелей в среде - это логично. Артефакты работы агентов позволяют рассмтривать оба - я про диффы в кодобазе.

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

👉 Планмод у курсора тоже немного более развитый - но в базе - это все ещё простая тудушка. Рисеч перед планированием - это большой и правильный шаг в нужном направлении, надо продолжать.



🟢 Личное имхо: направление правильное, но реализовано пока самое-самое базовое. Нужно давать возможность базовые кусочки правильных методик реализовывать инстурментами, и прививать правильные практики. Интеграция spec based development в kiro - это шаги тоже правильные, quest mode у qoder.

Для себя я особого интереса и смысла для ai swe на агентах использовать IDE вместо консольных агентов пока не замечаю: код просмотреть если надо я и в чарме могу, а каждый дифф рассматривать - не практикую.

Мне кажется момент оркестрации агента в части связки исследования, плана и реализации его в ветках и мержа мог бы быть поддержан в инструментах.


Что думаете?
3🔥3👍2
Гугл запускает сайт для CLI

Сабж:

🔗 https://geminicli.com/

Помимо описания, есть:
- дока 🔥 - её много не бывает
- галерея extensions: MCP и для контекста

https://blog.google/technology/developers/gemini-cli-extensions/

Большой хороший шаг! Респект гуглам

#post
@deksden_notes
🔥6
Gemini CLI todos


Ещё одна фича успешно "заимствована" у СС: todos

https://x.com/JackWoth98/status/1985430754319364275

Даже включается / выключается тоже Ctrl+t

Респект на самом деле - не стесняйтесь, уже соприте тотально все! Это прям надо

#post
@deksden_notes
1👍3😁3