惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
J
Java Code Geeks
爱范儿
爱范儿
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
B
Blog RSS Feed
Google DeepMind News
Google DeepMind News
Jina AI
Jina AI
The GitHub Blog
The GitHub Blog
I
InfoQ
月光博客
月光博客
博客园 - 聂微东
博客园 - Franky
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Я опубликовал рабочий npm-пакет, не написав ни строчки ко...
shatzibitten · 2026-05-10 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение5 мин

Охват и читатели0

Кейс

В нашем корпоративном инбоксе на Gmail в какой-то момент перестали появляться письма от одного конкретного клиента. Не падали в спам, не отбивались с понятной ошибкой — просто исчезали где-то между MX-серверами Google и нашим инбоксом. SPF/DKIM у клиента валидные, домен в whitelist, тикет в Google Workspace Support открыт.

При этом отправить нам архив каким-то другим способом клиент не мог: их compliance разрешал передачу материалов только через корпоративную почту. Никаких облаков, никаких мессенджеров, а то увольнение и объяснительная.

Эта статья про то, как из этого тупика за один вечер вырос npm-пакет mail2tg.

Без серверов, без подписок, и без единой строчки кода, написанной мной руками.


Часть 2: Cursor как личная операционная система

Я давно использую Cursor не просто как IDE, а как пространство для мышления. Когда у меня появляется задача техническая, стратегическая, бытовая — я открываю Cursor и начинаю с ним разговаривать. Не «напиши мне функцию», а «слушай, у меня такая ситуация, что вообще можно сделать?».

Метод резинового утенка. Только утка отвечает.

Я честно описал Cursor ситуацию: Gmail блокирует, поддержка молчит, клиент ничего изменить не может, проект стоит. Дальше был нормальный разговор минут на двадцать, в котором я отметал плохие идеи, а Cursor подкидывал новые: завести email на собственном домене (теплее, но кто потом будет читать?), поднять свой почтовый сервер (спасибо, я не настолько ненавижу себя, чтобы держать SMTP в 2026), использовать Cloudflare Email Routing (стоп, это что?).

Cloudflare Email Routing оказался бесплатным сервисом, который на любом вашем домене в Cloudflare позволяет принимать почту и роутить её куда угодно например, в Cloudflare Worker.

А Worker это маленький JavaScript на edge-сети, который может разобрать MIME, вытащить аттачи и отправить их в Telegram через Bot API.

Архитектура, которая родилась за десять минут:

Корп-почта клиента
   → MX-записи Cloudflare
   → Email Routing
   → Cloudflare Worker (парсит письмо и аттачи)
   → Telegram Bot API
   → ваш чат

Я регистрирую отдельный адрес archive@my-domain.com на своём домене. Клиент шлёт архив туда. Gmail вообще не участвует в цепочке. ML-классификаторы Google остаются с пустыми руками. Никаких серверов держать не надо: всё в пределах free tier Email Routing бесплатен, Workers дают 100 000 запросов в день (а это, на минуточку, 100 000 писем в день больше, чем получает любой нормальный человек за всю жизнь).

В этот момент у меня случился маленький момент эйфории.

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


Часть 3: Как я сделал npm-пакет, не написав ни строчки кода

После того, как мы проговорили архитектуру, у меня было два варианта: накидать одноразовое решение «для себя» или сделать CLI-утилиту, которой можно пользоваться повторно. Логика подсказывала первый. Но я знаю свой паттерн: «одноразовое решение» через два месяца обязательно понадобится опять, я забуду, как делал, и буду переоткрывать всё заново.

Поэтому я выбрал второй и поставил себе три условия:

  • сделать за один вечер (иначе брошу),

  • не писать код руками — только описывать задачу,

  • на выходе должен быть нормальный npm-пакет, не помойка.

Сразу честно: это не «магия одного промпта». Это нормальная инженерная работа, в которой у меня поменялась роль. Я сидел в Cursor, описывал систему словами, ловил баги по поведению, говорил «нет, тут переделай вот так». Сам не открывал файл и не правил строчку руками. Всё через диалог.

И вот это и есть, как мне кажется, реальная сторона того, что зовут «vibe coding»: ты не сидишь обезьянкой над клавиатурой, ты сидишь архитектором.

Ты решаешь, что должно быть. Cursor — как именно это написать. Ты проверяешь, если хватает знаний (чаще всего нет), а когда не хватает просишь другую модель сделать review.

В итоговом пакете 20 файлов и 51 KB:

  • TypeScript-исходник Worker (парсит MIME через postal-mime, шлёт аттачи в Telegram).

  • CLI с командами init / plan / apply / doctor (повторение Terraform-стиля).

  • Провайдеры Cloudflare и Telegram, конфиг через YAML с zod-валидацией.

  • Кросс-платформенность macOS / Linux / Windows — проверено реально, не «по фотографии».

  • --json и --non-interactive флаги — чтобы инструмент можно было гонять из CI и из других AI-агентов.

Заняло не больше часа. Ранее, я бы вообще не стал решать эту задачу, и, что важнее, она бы не превратилась в публичный пакет, потому что на «оформление» меня бы не хватило.


Часть 4: Что в итоге получилось (и чего оно не умеет)

Самое приятное в финальной архитектуре: после mail2tg apply на вашем компьютере не остаётся ничего. Worker живёт на edge-сети Cloudflare, MX-записи в DNS, секреты внутри Cloudflare. CLI можно удалить, терминал закрыть. Письма продолжат приходить в Telegram.

Что умеет:

  • Принимать письма на любой адрес *@your-domain.com.

  • Парсить MIME, включая сложные multipart-структуры.

  • Пересылать аттачи до 50 МБ в Telegram как документы (это потолок Telegram Bot API). В том числе запароленные архивы — Worker не пытается их открывать, просто пересылает байты.

  • Делать всё это бесплатно: Email Routing — бесплатно, Workers — 100K запросов/день бесплатно, Telegram Bot — бесплатно.

Что не умеет (честно):

  • Не отдаёт обратно ответы. Это односторонний канал. Если надо отвечать клиенту — отвечайте через основную почту, mail2tg не для этого.

  • Не делает антиспам. Если кто-то узнает ваш адрес и польёт спам — он будет долетать до Telegram. Решение: использовать неочевидное имя адреса.

  • Не шифрует содержимое end-to-end. Письмо проходит через Cloudflare как текст. (Хотя справедливости ради, обычная корпоративная почта — тоже не E2E.)

Зачем я это потом опубликовал на npm?

Решающий аргумент простой: если эта проблема возникла у меня — она есть у кого-то ещё.


Заключение: Cursor — это не про код, это про мышление

Когда говорят «AI-помощник для разработчиков», большинство представляют автокомплит на стероидах. Это, конечно, тоже полезно, но это очень маленькая часть реальной ценности.

Реальная ценность Cursor для меня в том, что он перевёл рабочее мышление из формата «один человек думает в голове» в формат «два собеседника думают в чате». Когда у меня была проблема с Gmail, я ходил с ней в голове в формате «надо что-то с этим делать». Один. Когда я сел и начал её проговаривать с Cursor за полчаса родилась архитектура, которой я бы сам не придумал.

И ещё одно. Я не написал ни строчки кода в этом проекте и не буду делать вид, что я перечитал каждый сгенерированный файл, как старательный код-ревьюер. Я этого не делал.

Что я делал держал в голове архитектуру (что куда идёт и зачем) и проверял систему по результату: запускал plan, смотрел, какие изменения в DNS/Worker инструмент собирается сделать; запускал apply и смотрел, что Cloudflare-консоль показывает то, что я ожидал; запускал doctor и ждал реальное письмо в Telegram. Это, в общем, то же самое, что я делал бы с библиотекой, которую написал не я.

И вот тут, мне кажется, проходит граница между «vibe coding» и карго-культом из vibe coding. Не в том, прочитал ли ты каждую строчку, а в том, знаешь ли ты, как проверить, что система работает не случайно.

Если у вас нет таких чекпоинтов у вас не проект, а тыква, которая выглядит как карета до полуночи.

Если вам нужно именно это

Если у вас прямо сейчас Gmail режет важную почту, и compliance клиента не даёт обходных каналов — попробуйте mail2tg:

npm install -g mail2tg
mail2tg init
mail2tg plan
mail2tg apply
mail2tg doctor

Нужно: домен на Cloudflare, Cloudflare API token, Telegram-бот через @BotFather. Подробнее в README на npm и в репозитории на GitHub.

Если у вас есть «тупиковая» рабочая задача, в которой вы застряли — попробуйте сесть и проговорить её с AI. Не «реши за меня», а «помоги мне подумать». Иногда из этого получается решение. Иногда — npm-пакет. Иногда обе сразу за один вечер.


P. S. Понимаю, что мой опыт подойдёт не всем, и не претендую на истину в последней инстанции. Возможно, у вас с Gmail всё работает, и у клиента нормальный compliance. В таком случае искренне за вас рад.