Перейти к основному содержанию

Ссылки #405

29 August 2026 | 721 words | tags: #links

За прошедшую неделю собрал 46 ссылок.

🤖 Агенты

Six Months of Writing Code Exclusively With Agents Инженер полгода пишет код только через ИИ-агентов: с февраля он запретил себе набирать код вручную. Сначала он читал каждое изменение, которое генерировали модели, и правил их руками, но с выходом GPT-5.3 и Opus 4.6 агенты стали справляться с крупными задачами без постоянного контроля. Чтобы не ждать завершения одного агента, он запускал параллельно другие — и столкнулся с конфликтами за порты, базы и Git-состояние. Решение — изолированные Linux-VM от exe.dev: каждый агент получает отдельную машину, а управление вынесено в написанный им инструмент botd, который работает с телефона и сохраняет все диалоги. Агенты работают в YOLO-режиме, внешний доступ только чтение, а секреты подставляются через прокси. В итоге он запускал до двадцати VM одновременно, но понял: агенты не могут решить, стоит ли вообще шипить фичу, — это остаётся на человеке.

🔗 Сеть

tailscale/tailcat: like netcat, but over Tailscale’s data plane, without Tailscale’s control plane Tailcat — ремикс открытых компонентов Tailscale, который работает как netcat, но поверх data plane Tailscale (magicsock) без control plane. Соединение устанавливается по короткому токену: одна сторона запускает сервер и получает адрес, другая передаёт его клиенту. Весь трафик шифруется WireGuard, начальный контакт идёт через DERP-релей, затем magicsock пытается перейти на прямой UDP. Не нужны аккаунт Tailscale, root и изменения маршрутизации — это пользовательская библиотека и CLI. Можно использовать бесплатные rate-limited DERP Tailscale или свои. Есть команды –serve (проброс портов, exit-node, no-auth-ssh), ping, socks, parse/resolve токенов. Ключи эфемерные или сохранённые; токены можно публиковать в DNS TXT. Также есть Go-библиотека и экспериментальное web-демо на WebAssembly.

📊 Мониторинг

One Go binary, one YAML file, one SQLite database: why I wrote my own monitoring tool Чтобы наблюдать за разнородными сервисами — HTTP, PostgreSQL, Oracle, Redis, Elasticsearch, ping, Prometheus — и получать алерты в Telegram, SMS и Signal, написан инструмент Gjallar: один статический бинарник Go, один YAML-конфиг и один SQLite-файл. Отказ от платформы Prometheus + Alertmanager + Grafana объясняется нежеланием обслуживать вторую распределённую систему ради нескольких десятков проверок, а лёгкие альтернативы требовали Oracle Client. Gjallar собирается с CGO_ENABLED=0: PostgreSQL через pgx, Oracle через go-ora, ping через pro-bing, SQLite через modernc.org/sqlite, Redis — напрямую по протоколу. Конвейер без блокировок: горутина на каждый монитор, общий канал, один потребитель. Состояние переживает рестарт, алерты срабатывают после N подряд неудач, есть hot reload по SIGHUP и -check для CI. Намеренно нет кластеризации, агентов и дашбордов.

📦 Хостинг

tobi/walgit walgit — git-хостинг без базы данных, лидера и значимого локального состояния: один бинарник, S3/GCS бакет, и получаешь smart HTTP v0/v2 fetch/push, bundle-uri, LFS, веб-UI, JSON API с SDK, политики пуша и webhooks. Репозиторий — это write-ahead log в бакете, а каждая машина — одноразовый кэш; манифест переписывается compare-and-swap, поэтому консистентность достигается без координации. Это Rust-реализация архитектуры Continuity из поста Cursor «Git at any scale», адаптированная для машин меньше репозитория: компактификацию делает один держатель лиза, свежие клоны и догоняющие fetch’и раздаются статическими bundle-файлами, а для слишком больших packfile работает remote reader по HTTP range-запросам. Всё масштабируется горизонтально: убил все машины — потеряешь только прогрев, ничего больше.

🐚 Оболочка

Zsh: manipulate filenames with modifiers like :r (root) and :e (extension) Адам Джонсон разбирает filename-модификаторы zsh — суффиксы, которые превращают слово при подстановке. Четыре модификатора покрывают основные операции с путями: :h возвращает директорию как dirname, :t — имя файла как basename, :r убирает расширение, :e оставляет только расширение. Модификаторы можно объединять слева направо: ${f:t:r} сводит talks/robot.png к robot. В качестве реального примера автор конвертирует PNG в WebP через ImageMagick: цикл for i in *.png; do magick $i ${i:r}.webp; done — :r превращает robot.png в robot, затем добавляется .webp. Кавычки вокруг $i не нужны: в zsh переменные не разбиваются на слова, поэтому имена с пробелами безопасны.

🌐 Протоколы

Atproto Is the Context Window You Own Инженер Bluesky рассказывает, что atproto (протокол для личных данных) совпал по времени с расцветом ИИ: ИИ нуждается в контексте, а atproto даёт его — посты, лайки, интересы, связи хранятся в личном PDS как структурированные данные. В отличие от Facebook, который использует контекст для рекламы, atproto позволяет любому создавать инструменты. Автор построил Attie — ИИ-помощника, который собирает дайджесты по интересам (например, новости сообщества или подборки по вязанию) из открытых данных. Проблема приватности: публичные данные доступны всем, но atproto поддерживает и приватные пространства. В будущем пользователи получат больше контроля, а ИИ упростит создание собственных приложений — достаточно описать желаемое, и кодинг-агент соберёт его за день.

Хорошей вам недели!