TGViewer
do...while...ai do...while...ai @doowhile · 1.16K subscribers
Post #276 764
Как поменять жизнь к лучшему: автоматизация работы с почтой

Один из революционных моментов в автоматизации своей рутины у меня случился пару недель назад, когда я решился дать агентам доступ к локальному хранилищу Apple Mail. Написал скрипт, который в read-only режиме может читать, искать, открывать нужные письма из почты приложения Mac Mail. У меня там ящиков 7, поэтому это проще, чем давать к каждому доступ по API. Не рискнул пока выдавать ему возможность писать письма (я в этом плане старовер, пишу все сам). А вот найти пачку писем или документов, выгрузить на диск аттачи, или открыть нужное письмо, которое я вообще не могу найти — это прямо топ-сценарии теперь. В результате начал наводить порядок в документах (медицинских, документах компании, всяких доступах), трекать важные письма, получать напоминалки о пропущенных оплатах за сервисы и многое другое.

Aha-момент у меня случился на следующий день после разработки скилла, когда я пытался собрать все IRS декларации за несколько лет, и за 2024 не смог найти на диске. Говорю Claude'у — поищи декларацию в почте, и положи вот сюда, если найдешь. И уже через 3 минуты у меня в папке нашлось письмо от бухгалтера, он взял оттуда аттач и закинул в нужный каталог.

Второй aha-момент случился, когда он мне написал (делая совершенно другую задачу): вот у тебя есть письмо, которое лежит в Trash, а оно вообще-то важное, его нельзя удалять. И, короче, его действительно нельзя было удалять, я восстановил. А так бы оно почистилось и исчезло.

Реализация простая. Всё идёт через единственный Python-скрипт на stdlib без зависимостей — scripts/mail_ro.py (~1400 строк), плюс SKILL.md с правилами для агента. Он читает SQLite-индекс ~/Library/Mail/V*/MailData/Envelope Index (версия каталога определяется из PersistenceInfo.plist) и сами письма в виде .emlx-файлов; парсинг тела — через email.policy + собственный HTML→text парсер. По умолчанию база открывается как mode=ro&immutable=1: ни блокировок, ни журналов, ни единой записи — ценой того, что письма, ещё лежащие в WAL (последние секунды-минуты), не видны, но и фиг с ними, это редкий кейс. Полнотекстовый поиск сначала пробует Spotlight (mdfind), поскольку живое хранилище Mail обычно не индексируется — падает в прямое сканирование писем с лимитом (--scan-limit, ~2 с на 1000 писем).

Всё, что пришло из письма, считается недоверенными данными: контрольные символы терминала вырезаются, тело в show обрамляется маркерами контента, сохраняется контет только в указанные каталоги, а SKILL.md запрещает агенту следовать инструкциям из писем и отправлять содержимое почты куда-либо за пределы машины. Единственные подпроцессы — mdfind, mdutil и (только для open) open с message:-URL и read-only osascript, чтобы можно было открыть найденное письмо в новом окне (если я попрошу).

—-

Все мамы рекомендуют, все стоматологи советуют.
  • 👍 8
More from @doowhile
  1. Sep 18, 2026AppStore вуайерист Когда я купил себе Apple Dev Certificate, то начал посматривать в топ A…
  2. Sep 17, 2026Новый тип моделей: Jev Тут 15 сентября какие-то ребята с ужасным вкусом (судя по типографи…
  3. Sep 16, 2026"Не зеленое, а круглое" В современных моделях бесит риторический паттерн ответа "не X, а Y…
  4. Sep 16, 2026Переброс сессий между агентами У меня закончились лимиты подписки на Codex (и тыква снова…
  5. Sep 3, 2026Работа на сегодня завершена. Пошёл трогать траву.
  6. Sep 2, 2026Длинные сессии и рекурсия бэклога сессии У меня сейчас есть сессия, которая работает трети…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →