мои способы работы с AI контекстом (субъективное мнение):
пользоваться общеизвестными терминами которые точно есть в словарях
пользоваться только английским для кода, prd и дизайна
сокращать код - как показывает практика файлы больше 500-600 строк агенту труднее прочитать. Тут есть несколько стратегий:
пользоваться препроцессорами, например можно сильно срезать времени если вместо JSX/TSX/html использовать pug
пользоваться и писать библиотеки. есть проблема - оформляем в абстрактную библиотеку, пишем доку и readme
предвидеть контекст - часть текста просто можно не писать, а просить догенерить, потому что получится эффект снежного кома, начинаем катить, смотрим куда катится - сокращаем
меняем JSON на YAML или что-то близкое - это срежет кууучу лишнего хлама в виде ; }{ "" и прочих символов
генерим code maps - mermaid и другие виды диаграм
ANSII - визуализация простых идей, но не все модели хорошо работают с этим форматом, есть проблемы с layout. например я пользуюсь gemini
подстраивать архитектуру и код под задачи и бизнес, не наоборот. Developer | Designer | AI as User.
разбивать на мелкие подприложения если нужно
Надеюсь, что пост окажется полезным :-)
Пожалуйста делитесь своими мыслями в комментариях :-) это поможет сделать эту статью видимой для других и будет здоровской поддержкой и мотивацией :-)
мои способы работы с AI контекстом (субъективное мнение):
пользоваться общеизвестными терминами которые точно есть в словарях
пользоваться только английским для кода, prd и дизайна
сокращать код - как показывает практика файлы больше 500-600 строк агенту труднее прочитать. Тут есть несколько стратегий:
пользоваться препроцессорами, например можно сильно срезать времени если вместо JSX/TSX/html использовать pug
пользоваться и писать библиотеки. есть проблема - оформляем в абстрактную библиотеку, пишем доку и readme
предвидеть контекст - часть текста просто можно не писать, а просить догенерить, потому что получится эффект снежного кома, начинаем катить, смотрим куда катится - сокращаем
меняем JSON на YAML или что-то близкое - это срежет кууучу лишнего хлама в виде ; }{ "" и прочих символов
генерим code maps - mermaid и другие виды диаграм
ANSII - визуализация простых идей, но не модели хорошо работают с этим форматом, есть проблемы с layout
подстраивать архитектуру и код под задачи и бизнес, не наоборот. Developer | Designer | AI as User.
разбивать на мелкие подприложения если нужно
Надеюсь, что пост окажется полезным :-)
Пожалуйста делитесь своими мыслями в комментариях :-) это поможет сделать эту статью видимой для других и будет здоровской поддержкой и мотивацией :-)
Возможно, покажется странным, зачем публиковать, но пока я готовился к поиску новых возможностей и приключений, это начало звучать как кредо. Поэтому подумал почему бы не поделиться?:)
Дисклеймер: На этот раз я не использовал никаких AI тулов для помощи:)
Мои принципы работы:
Этические принципы.
Почему: когда у бизнеса есть определенные принципы разработки программного обеспечения, он обычно отдает приоритет созданию уникальной ценности для конечного пользователя. Это очень помогает в определении того, как команда общается друг с другом, как выглядит и функционирует приложение, как пишется код (задавая ограничения и свободы внутри). Также, имея этические принципы, становится более понятно, когда можно использовать AI (в конечном продукте или в IDE), а когда нет.
Пользовательский и командный опыт.
В своей работе отдаю приоритет влиянию на конечного пользователя и чувству работы в команде при работе с другими людьми.
Значение: ценю опыт других людей и считаю, что культура обмена опытом стоит потраченного времени.
Ценность через заботу и инновации.
Верю, что приложение должно быть простым, сфокусированным и стоить времени людей, которые им пользуются. В сочетании с развивающимися технологиями, особенно с AI (облачными или локальными LLM's), думаю, что очень многое можно переосмыслить и фундаментально пересмотреть, сделав пользовательский опыт приоритетом.
AI:
Использую Cursor (в основном) для написания кода. Но в то же время думаю о AI как о коллеге, который может научить меня новому, переосмыслить старое. В то же время каждое мое решение, где и почему я его использую, основано на этических принципах — это позволяет мне создавать быстрее, но с более высоким качеством для конечного пользователя и разработчика.
Разработчик, дизайнер и QA как пользователь.
На мой взгляд, каждый, кто может получить доступ к коду, тоже является пользователем.
Значение: написание полезной документации, создание полезного API, обеспечение доступности дизайн-системы для дизайнера, получение любой обратной связи (через ревью кода или предварительный просмотр приложения) чрезвычайно важно. На мой взгляд, этот процесс делает лучше не только продукт, но и каждого человека, участвующего в его создании.
Прототипирование.
По моему опыту, многие отличные идеи и практики возникают в результате итераций и быстрого прототипирования — потому что это позволяет не только почувствовать идею, но и поделиться ею, самому испытать ее и поделиться с другими. И получение обратной связи также является важнейшей частью прототипирования 🙂
Тайминг.
Обычно я использую простую формулу, чтобы получить наиболее точное время: Команда + Известные знания + Мой опыт + Мой опыт в кодовой базе | домене.
Значение: при оценке того, как долго может разрабатываться фича/баг/приложение, мне обычно нужно знать людей, которые работают со мной, затем кодовую базу и затем объединить это со всем, что я знаю.
Надеюсь, этот пост вдохновит и окажется полезным в какой-то степени :-)
Пожалуйста, поделитесь своими мыслями в комментариях :-) это поможет сделать эту ветку видимой для других и станет отличной поддержкой и мотивацией :-)
1️⃣ Текущий прогресс по xsoulspace.dev привел к тому, что обнаружил что есть закономерность какие именно модели хороши для использования в проектировании layout страницы (спойлер - не записал какие 🤦♂️ кажется использовал Claude 4.0 thinking + Gemini 2.5 Pro).
Что попробовал сделать : нарисовал простой wireframe image -> сконвертировал в ACSII art, и затем скормил LLM для более корректного восприятия layout.
Оказалось что так проще, но относительно (за счет убирания лишних элементов проще понять что где расположено), но с другой стороны LLM все так же тяжело воспринимать layout (если он чересчур кастомный).
2️⃣обновил все flutter библиотеки, last answer, word by word, budget app до flutter 3.8 - пользовался агентами в окошках. В некоторых случаях правил руками, но в большей части работал по принципу PDSA (Plan Do Study Act), где я разрабатывал план, а агент по нему шел, потому изучал результаты и т.д. Вывод - нужно сильнее нарабатывать промпты.
3️⃣внезапно получил спам-рассылку-письмо с возможностью потестить on device API для того чтобы запускать модели. Чтобы потетстить решил запилить новое приложение для работы с промптами - действовал по принципу:
Идея и этические принципы
Палитра и дизайн система на основе идеи и принципов
План работы
Имплементация через агентов + доп ресерчи чтобы агенты понимали какую информацию брать.
Удалось собрать прототип за 12 часов (рабочую, включая все экраны и дизайн систему). Следующий этап - буду модифицировать чтобы можно было тестировать на реальных промптах в проектах.
Опыт: понял как создавать и работать с ролями (опишу в следующем посте про MVP), разобрался как запускать LLM на устройстве. Недостатки: нужно более точно прописывать тех стак, особенно ключевые места, такие как - синхронизация данных, тип хранилища и т.д. И хорошо если изначально можно давать wireframes, или подгенеривать на основании дизайн системы.
Хотелось сделать нечто среднее между игрой и обычным интерфейсом, но пока не получилось.
4️⃣Создал детальный план и начал прорабатывать новую систему сохранения данных. Для меня это оказалось большой проблемой - потому что Hive, Isar на flutter перестали поддерживаться, а другие библиотеки неудобно использовать (где-то перешел на Sembast).
В результате на мой взгляд завязка на том, что данные хранятся непонятно где для конечного пользователя опасна тем, что в случае прекращения работы с приложением теряются все данные. Это оч больно.
Поэтому решил объединить все идеи и написать одну библиотеку которая будет из коробки давать синхронизацию с гитом, github и папками. Так надеюсь удастся побороть проблему долговечности и надежности хранения данных. Пока агенты имплементировали 4 этапа из 5 (основную логику провайдеров данных), и как итог - собрал отдельное тестовое приложение (todo), чтобы протестировать работу (отдельный скриншот), понять недостатки и как можно быстрее завершить библиотеку чтобы начать интеграцию во все проекты. Это важно, потому что при одновременной интеграции сразу будет понятно что работает, а что нет, и таким образом будет проще получать feedback и развивать библиотеку качественно.
Спасибо за ваше время и хорошего дня!
p.s.:
Бумаги которые claude нашел по теме и одновременно не по теме)
Попробую публиковать серию постов про мои новые эксперименты с вайбкодингом.
Не использую v0, bolt - так как они совсем почти no-code + генерят react приложения, а мне интересно сейчас проработать поработать с Dart проектами.
Начал с крафта нового сайта для xsoulspace.dev (мой основной сайт по проектам, давным давно писал на flutter и очень давно не обновлял).
Основная идея в том, чтобы:
Как можно больше проработать паттернов вайбкодинга
Как можно качественнее научиться работать с дизайнерской точки зрения
Научиться учить агента новой информации (новый пишу на jaspr - а на нем крайне мало информации - и скорее всего не обучалась ни одна модель, поэтому вайбкодить на нем тяжело - если агенту дать задачу без правил и промптов - он не сможет завершить задачу и закопается в ошибках).
Пока что удалось сделать немного - восстановил навыки промптинга (которые прокачивал в прошлом году)
Восстановил часть промптов которые были раскиданы по проектам.
Частично удалось распараллелить работу (используя окна и табы агентов в cursor) и научиться давать относительно автономные задачи (по принципу PDSA (Plan Do Study Act))..
Исходный код открытый, поэтому буду делиться результатами когда завершу делать :) (надеюсь что скоро)
Пока что было две идеи:
Сделать в виде интерактивной игры (получились вырвиглазные кнопки
Каким-то образом придумать бенто..
Сложность с бенто и с игрой в том, что если всем моделям тяжело делать даже по картинке ассимитричные вещи и то, на чем они не обучались.
Некоторый текст и данные на картинке ниже абстрактные.
Спасибо за ваше время и хорошего дня!
P.s.: почему-то на хабре нельзя загрузить больше одной картинки в пост:(
P.p.s.: почему-то нельзя опубликовать публикацию если хоть раз проставил галочку запланировать..
Нужно было объяснить зачем нужна роль для LLM и как ей пользоваться)
Можно представить что роль - это персонаж, у которого есть свои особые характеристики и свойства. То как мы пропишем персонажа влияет на то, как агент или llm будет себя вести (стиль ответа, его поведение, "характер"). В чатах обычно можно использовать с "act as [ROLE]"
внезапно пришла идея - кажется витает в воздухе новый путь установки пакетов и вообще библиотек в приложения.
Начну как всегда из далека: В последнее время, так как вместо человека теперь LLM чаще всего обращается к сайтам и приложениям, становится популярно добавлять специально написанные для llm страницы (как раньше sitemap, только теперь md файлы)
Это даже стало правилом для MCP серверов - например Cline добавляет только те MCP сервера, которые LLM может поставить в one shot или имеют llm-install.md файл.
По сути, кажется это становится файлом установки для llm - то есть, llm, следуя инструкциям этого файла ставит и конфигурирует MCP сервер на компьютере (прям как раньше, люди скачивали и устанавливали на windows).
Уязвимостей тут может быть много (потому что промпт может быть corrupt), но если следить за процессом и обязательно проверять команды исполнения - why not?
А теперь - представляете что можно сделать это для любого пакета и любого языка?
То есть, есть библиотека например для интеграции авторизации. Вместо того, чтобы разворачивать её вручную, автор библиотеки может написать llm-install и агент, имея контекст проекта в котором он работает, может целиком его развернуть!🙌 Креды например строго хранить в отдельном фале, не давать доступ (например использовать cursorignore etc..) и такие пакеты можно интегрировать как клиенту и бекенду!
И тоже самое можно применить и для удаления! И таким образом весь процесс интгерации станет больше как лего plug & play 🤩
В прошлом году усиленно начал пользоваться AI (LLM) тулами и словил жуткую волну грусти-печали после 5-6 месяцев использования. Для меня самым сложным стало не то, что код в целом может писать LLM, а осознание того, то в общем-то это и не так важно. Гораздо важнее появился абстрактный вопрос зачем его вообще писать если завтра всё может поменяться настолько быстро что глазом не моргнешь.
Погрустив и поболев буквально и походив по книжным магазинам наткнулся на интересную книгу - The Art of Excellent Products: Enchanting Customers with Premium Brand Experiences by Riccardo Illy. И эта книга попала настолько, что понял как разрешить (на текущий момент), моральную дилемму с AI кодом, когда ты сам не пишешь код, а его пишет AI - через этические принципы.
На мой взгляд этические принципы дают три возможности:
Ограничения или фокус - зафиксировав принципы, можно фокусироваться только на том, что действительно важно и отбрасывать / deprioritize то, что не согласуется с этими принципами.
Гибкость при принятии решений - зная ограничения и имея этический фокус, можно при необходимости быстрее принимать ответственные решения, но при этом не жертвовать тем, что этически важно для компании / продукта.
Доверие - имея ограничения в виде выбранных этических принципов, ценности продукта / компании могут стать более устойчивыми к кризисам - что в итоге может дать больше доверия продукту для конечного пользователя. В теории:)
Поэтому с начала года я начал думать над принципами / ценностями / values и пытаться понять, какие подходят - и почему.
вышел из digital чтобы написать ручками в блокнотике:)
Для себя выделил три группы (пока что): - Приложения, игры и персональные принципы.
Например для приложений пока пришел к такому списку:
Удобство
Простота
Безопасность
Долговечность
Полезность
Для игр (так как это хобби, немного другие принципы):
Полезность
Творчество
Развлечение
Вызов
На текущий момент (май), 5 месяц тестирования - и могу честно сказать что стало гораздо проще фокусироваться на проблеме и решении чем раньше. Уверен что с развитием AI многое ещё изменится - но как будто это может стать мостиком для работы с ним с морально - этической стороны (особенно когда нужно торговаться / выбирать между быстрее - качественнее).
Ещё завел телеграм канал - https://t.me/devethics, в который стал собирать ценности / принципы которые внезапно стал открывать у других людей и компаний (продуктовых, электронных) и т.д.. Пока назвал этика разработчика:)
Надеюсь что пост чем нибудь вдохновит и окажется полезным :-)
Пожалуйста делитесь своими мыслями в комментариях:-) это поможет сделать эту статью видимой для других и будет здоровской поддержкой и мотивацией:-)
Попробую запостить тут пост - размышления :) Наконец-то написал небольшой mcp сервер для flutter до относительно стабильного состояния.
Самым интересным было понять как работать с dart vm и devtools extensions - можно ли вообще обращаться к ним со стороннего сервера и что можно использовать для агента (например в cursor).
Так как на момент начала dart mcp сервера стабильного не было в pub.dev, решил mcp server писать на typescript.
Что получилось (на данный момент)
Архитектура сообщений (использовал везде JSON RPC 2, так как это по умолчанию протокол общения с Dart VM):
MCP server <-> Dart VM Из плюсов - прямой доступ, проще работать Из минусов - не все методы работали (в основном связанные с другими extensions), все структуры нужно писать с нуля
MCP server (TS) <-> Forwarding Server (TS) <-> Devtools Extension (Dart) <-> Dart VM Из плюсов: в devtools можно использовать готовые библиотеки для работы с dart vm. Все методы работают как должны. Можно очень просто дебажить все методы, так как есть прямой доступ к dart vm, и не нужно работать через MCP inspector. Все ошибки мониторятся (слушаются через Dart VM) в Devtools Extension.
Из минусов: сложность запуска: нужно обязательно запускать Forwarding Server, Devtools Extension и проверять что всё работает.
Почему так: напрямую MCP server связать с Devtools Extension пока не удалось, идея через регистрацию методов в Dart VM, чтобы Dart VM выступала как forwarding server пока тоже не сработала.
Изначально, чтобы разобраться как работает, подключил все методы, доступные в dart vm, но со временем пришел только к двум-трем основным: - get_app_errors - чтобы мониторить ошибки, появляющиеся в Dart VM. Использовал только краткое описание, чтобы было сложно переполнить context. - hot_reload - чтобы агент мог сделать hot reload и ошибки записались в Devtools Extension.