# Ссылки #405


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

## 🤖 Агенты

**[Six Months of Writing Code Exclusively With Agents](https://blog.exe.dev/engineering-with-ai)**
Инженер полгода пишет код только через ИИ-агентов: с февраля он запретил себе набирать код вручную. Сначала он читал каждое изменение, которое генерировали модели, и правил их руками, но с выходом 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](https://github.com/tailscale/tailcat)**
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](https://rvier.fr/posts/why-i-wrote-my-own-monitoring-tool-EN)**
Чтобы наблюдать за разнородными сервисами — 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](https://github.com/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)](https://adamj.eu/tech/2026/08/24/zsh-filename-modifiers/)**
Адам Джонсон разбирает 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](https://pckt.blog/b/tropopause/atproto-is-the-context-window-you-own-e3bg48c)**
Инженер Bluesky рассказывает, что atproto (протокол для личных данных) совпал по времени с расцветом ИИ: ИИ нуждается в контексте, а atproto даёт его — посты, лайки, интересы, связи хранятся в личном PDS как структурированные данные. В отличие от Facebook, который использует контекст для рекламы, atproto позволяет любому создавать инструменты. Автор построил Attie — ИИ-помощника, который собирает дайджесты по интересам (например, новости сообщества или подборки по вязанию) из открытых данных. Проблема приватности: публичные данные доступны всем, но atproto поддерживает и приватные пространства. В будущем пользователи получат больше контроля, а ИИ упростит создание собственных приложений — достаточно описать желаемое, и кодинг-агент соберёт его за день.

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

