English

Oleg: AI

Я строю системы, в которых ИИ-агенты предлагают варианты, выполняют работу и независимо её оценивают.

Олег Кондратьев  Telegram  GitHub  Почта

предложить → выполнить → оценить → выбрать → развить

Избранные работы

  1. Фабрика агентов эксперимент: агенты планируют, строят и проверяют проект прототип

    2026 · прототип — 1 312 коммитов с мая по август 2026 года; после 11 августа — ни одного; собственные отчёты называют тест автономности частичным результатом

    Задача
    Один агент, работающий в одиночку, сбивается с курса и рано объявляет победу. Мне был нужен цикл, который берёт видение на одну страницу и возвращает готовый проект, а судит его кто-то другой, не сам строитель.
    Подход
    Оркестратор в командной строке запускает двух разных ИИ-агентов для программирования как независимых планировщиков, рецензентов, исполнителя и аудитора. У согласия точный смысл: оба должны подписать один и тот же неизменённый план. Каждый вызов агента трассируется, а прерванный запуск возобновляется с диска.
    Результат
    Она собрала и развернула реальный сервис напоминаний о счетах (закрытая бета, пользователей пока нет). В ограниченном тесте она сама выбрала два публичных веб-сервиса, зарегистрировалась, подтвердила почту, вышла и снова вошла из нового процесса. Потом цикл отяжелел и начал проверять собственные планы вместо результата для пользователя; в августе 2026 года я его приостановил и переключился на третий подход.
    Свидетельства
    • 1 312 коммитов со 2 мая по 11 августа 2026 года; 125 файлов тестов
    • Сборка вслепую от проверяющего: все тестовые артефакты скрыты, агент придумал собственные проверки, а скрытый проверяющий затем засчитал 18 из 18
    • Аудит слепых зон самих аудиторов: 19 подложенных искажений, поймано 5 — «главный канал потерь — слой отбора, а не слой чтения»
    • Тест в реальном вебе: один из шести запусков прошёл полный цикл «регистрация — выход — повторный вход»; отчёты называют это частичной способностью, а не пройденной проверкой
    Стек
    Node.js · Codex CLI · Claude Code CLI · tmux over SSH

    Хуже всего было не то, что проверяющий ошибался. Я не мог показать, что он вообще отличает хорошую работу от плохой.

  2. Oracle несколько моделей отвечают, критикуют друг друга, один результат для себя

    2025–2026 · для себя — в использовании с сентября 2025 года, всплесками, а не каждый день; код на GitHub с августа 2026 года

    Задача
    Ответ одной модели — одно мнение. Мне был нужен взвешенный ответ от панели, на компьютере и на телефоне, без обязательного бэкенда и без аккаунта Oracle. Для запуска нужны ваш API-ключ OpenRouter и доступ к моделям.
    Подход
    Один HTML-файл, который запускается с локального диска в любом браузере. Вопрос уходит нескольким передовым моделям; их ответы критикуются, а агрегатор сводит их в один ответ, где реальные разногласия остаются видимыми, а не усредняются. Чаты живут в локальной базе браузера. Необязательная сквозная шифрованная синхронизация идёт через небольшое собственное хранилище.
    Результат
    В использовании с сентября 2025 года на компьютере и на Android, всплесками, а не каждый день: неделю тишина, потом много раз за один день. Код открыт на GitHub: один HTML-файл, необязательный сервер синхронизации и проверки в реальном браузере.
    Свидетельства
    • Код открыт: запустите oracle.htm локально со своим API-ключом OpenRouter.
    • Снимок августа 2026 года: 28 529 строк в одном файле; журнал требований на 959 строк, где каждое исправление записывается до изменения кода
    • Снимок августа 2026 года: 7 регрессионных сценариев в реальном браузере с 696 вызовами проверок; статическая проверка, которая должна покраснеть на подложенных ошибках, прежде чем её зелёный засчитается
    • Надгробия удалений, чтобы удаление побеждало устаревшую реплику; проверка синхронизации на трёх клиентах
    Стек
    Vanilla JavaScript · IndexedDB · Web Crypto · OpenRouter · Node.js sync server · Playwright
    Ссылки
    GitHub

    Каждое требование, исправление и баг навсегда становится строкой в спецификации — раньше, чем пишется код, — а исправление как сигнал весит больше требования.

  3. Приложение для Android миллионы установок в Google Play работает

    2017–2026 · работает — в Google Play: миллионы установок; собственный аналитический бэкенд, поддерживался пять лет

    Задача
    Приложение для Android — и способ узнать, как люди на самом деле им пользуются.
    Подход
    Написанный вручную бэкенд: каждая сессия отправляет от 46 до 119 полей в зависимости от сборки приложения — использование функций, настройки внешнего вида и блокировки, нажатия по каждому элементу, интервалы времени пребывания, сбои — в ту из пяти версий формата данных, под которую эта сборка написана, так что старые сборки продолжают отчитываться без принудительного обновления. Та же точка входа возвращает конфигурацию каждого пользователя, что сделало её живым стендом для экспериментов; распределение задаётся по идентификатору пользователя, так что опыт одного пользователя остаётся стабильным между сессиями.
    Результат
    Оно выходит более чем на шестидесяти языках; локализацию делает конвейер, который я сначала написал поверх машинного перевода, а позже переписал поверх языковой модели.
    Свидетельства
    • Отзывы в магазине и в самом приложении — с оценками в звёздах на родных языках пользователей
    • Больше шестидесяти локалей в магазине; генератор локализованных скриншотов для магазина
    • Пять версий формата данных об использовании жили бок о бок пять лет
    Стек
    Android · PHP · Node.js tooling

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

Сейчас

Работаю над третьей попыткой построить фабрику, которая собирает небольшие организации из агентов. Я фиксирую рамку и судей; всё остальное отбирается и эволюционирует. Две части уже есть — механизм отбора и среда исполнения, — но они пока не соединены.

Чего именно агентам всё ещё не хватает, чтобы доводить большие задачи до конца, — каких механизмов, если сравнивать с человеком или организацией? Если у вас есть версия ответа, я хочу её проверить — напишите мне.

Исследования или совместная работа: hi@olegk.ai

Другие проекты

описано 28

Выборка — те проекты, по которым есть что показать.

2024–2026 · Агенты, судьи и фабрика

  • Фабрика агентов эксперимент: агенты планируют, строят и проверяют проектпрототип

    Она собрала и развернула реальный сервис напоминаний о счетах (закрытая бета, пользователей пока нет). полное описание ↑

  • Исследование каркасов проверена 31 схема из нескольких вызовов модели; сработала одна эксперимент

    2026 · эксперимент — завершено и проверено 21 мая 2026 года; 542 прогона на 13 подмножествах бенчмарков

    Задача
    Делает ли ответ надёжнее сборка нескольких дешёвых вызовов языковой модели в структуру — взаимное рецензирование, ансамбли, верификаторы, иерархии, красные и синие команды, поэтапные ворота? Большинство таких схем обосновывают словами, а не измеряют.
    Подход
    Каждая схема прогонялась на 13 подмножествах бенчмарков (MMLU-Pro, AIME, GPQA-Diamond, TheoremQA, HumanEval+ и других) и оценивалась тестами Макнемара и интервалами Уилсона — примерно за 34 доллара в сумме и без дополнительной стоимости на вопрос. Схемы-кандидаты родились из разбора 26 из 26 записанных ошибок, а не из перебора архитектур наугад.
    Результат
    Двадцать девять из 31 схемы статистически ничего не дали, одна дала лишь намёк, одна сработала. Та, что сработала, ничего не изменила в структуре: там, где старая схема угадывала, если ни одна внутренняя проверка не прошла, новая делает два строгих прохода исправления, а если и они не проходят — воздерживается. На самых трудных подмножествах это сдвинуло 1 из 15 к 13 из 15 (p = 0,0005) и 0 из 6 к 6 из 6.
    Свидетельства
    • 542 прогона на 13 подмножествах бенчмарков
    • Собственная сводка проекта: 1 победитель, 1 намёк на композируемость, 29 нулевых — доля нулевых 94 %
    • Общие расходы — около 34 долларов
    Стек
    TypeScript

    Почти ни одна хитрая многоагентная структура не дала ничего, что я мог бы измерить. Победитель структуры не добавил: два строгих повтора, а потом молчание вместо догадки.

  • Org Kernel маленькая операционная система для команд агентов прототип

    2026 · прототип — строилась с февраля по июль 2026 года; работает локально как система уровня разработчика; собственный экзамен на готовность не сдан

    Задача
    Общая операционная система для организаций: ядро и API, которые могут запустить и вести многоагентные команды из одной только цели, — не одна фиксированная организация, а набор инструментов, способный создать множество разных.
    Подход
    Восемь примитивов данных и несколько правил, которые сервер принуждает соблюдать, а не просит: работа выдаётся в аренду и истекает без сигнала жизни; ничто не принимается без артефактов-свидетельств; рискованные действия требуют подписанного одобрения с одноразовым nonce; каждый смоделированный побочный эффект инструмента идёт через один шлюз. Запуски воспроизводятся из эталонных трасс и экспортируются как пакет доказательств, который может проверить третья сторона.
    Результат
    Запускаемая система, но не размещённый продукт. Её определение готовности — письменный экзамен, который оценивают независимые судьи из двух семейств моделей: реальный сквозной успех, а не зелёные внутренние тесты, — и она его не сдала.
    Свидетельства
    • 367 исходных файлов TypeScript; 139 файлов тестов
    • Верификация как код: проверки на утечку секретов, утечку литералов и дрейф эталонных трасс
    • Сопутствующий эмулятор рынка намеренно не подключён к ядру, чтобы ядро не могло оценивать себя по собственному оракулу
    Стек
    TypeScript · Node.js · Fastify · PostgreSQL · ed25519 signatures

    Структурная защита важнее защиты промптами: считай, что любой агент может галлюцинировать.

  • Движок изменений, собранный дважды модели предлагают патчи; детерминированные ворота решают прототип

    2026 · прототип — автономный цикл выключен в июне 2026 года; по собственному табло продемонстрировано 0 из 3 миссий

    Задача
    Движок для изменения существующей кодовой базы, где языковая модель может только предложить патч, а детерминированные проверки решают, что попадёт в код. И второй вопрос: что происходит, когда два разных агента для программирования собирают одну и ту же спецификацию и каждый проверяет другого?
    Подход
    Обе сборки вышли из одной спецификации — одну писал Codex с Claude как обязательным внешним проверяющим, другую наоборот. Каждая принимает цель и запрос на изменение, строит граф зависимостей, собирает пакеты задач с бюджетом токенов, применяет правки в пределах ограничений по области, хешу и числу строк и прогоняет ворота: CI, приёмка, секреты, SBOM, производительность, мутации. Состояние живёт в SQLite и на диске, никогда — в контексте агента.
    Результат
    Обе дошли до рабочего детерминированного конвейера с тысячами тестов; ни одна не дошла до автономной версии, описанной в спецификации. 2 187 контейнерных циклов были брошены на три эталонные миссии — выпустить приложение, доказать теоремы в Lean, проверить торговую стратегию в эмуляторе без реальных сделок, — и ни одна не продемонстрирована по собственному табло проекта.
    Свидетельства
    • 2 385 коммитов в двух репозиториях, февраль–июль 2026 года; 787 и 346 файлов тестов с 7 162 и 1 848 тестовыми функциями
    • Взаимный аудит поймал откат, который удалял исходные файлы вместо их восстановления, и обход защиты от выхода за пределы пути в Windows
    • Последовательные самооценки одной сборки давали 52 %, 82 % и 96 % — по разным рубрикам и на разных стадиях, так что это не три оценки одного неизменного снимка
    Стек
    Python · SQLite · Docker · Lean 4

    Блокирующий аудит обязан назвать самую дешёвую проверку, которая опровергла бы его же блокер.

  • Benchmarker какой провайдер лучше отдаёт модель, в пределах бюджета на паузе

    2026 · на паузе — 258 коммитов, февраль–март 2026 года; последние живые запуски датированы 15 апреля 2026 года; собственная оценка: силён как стенд, но объявлять по нему победителя ещё нельзя

    Задача
    Одну и ту же модель отдают многие провайдеры, и они различаются качеством. Никто не говорит, к какому направлять запросы.
    Подход
    Проверяет конфигурацию, параллельно отправляет одни и те же выборочные вопросы из публичных бенчмарков каждой паре «модель — провайдер», оценивает детерминированно и сохраняет сырые запросы, ответы и оценки по каждому запуску. Планировщик бюджета проверяет всех провайдеров на нескольких моделях и отсекает слабых для остальных, удерживая полный обход в пределах лимита затрат. Бенчмарк оценивает текст модели; он никогда не выполняет код, созданный моделью.
    Результат
    Рабочий стенд с реальными живыми запусками в апреле 2026 года. Слой ранжирования работает, но ещё не на той глубине, чтобы публично заявлять о лучшем провайдере, — о чём репозиторий говорит прямо, в таблице того, что запуск может и не может доказать.
    Свидетельства
    • 597 тестовых функций в 81 файле; 28 368 строк Python в src
    • 375 каталогов запусков, включая реальные живые запуски 15 апреля 2026 года
    • Явная политика выборки: 40–99 заданий — только дымовой тест; 1 000 и больше — дорожка для публичного сравнения
    Стек
    Python · pydantic · SQLite · OpenRouter · Docker · GitHub Actions

    Каждый отчёт говорит, что запуск может доказать, а что — нет.

  • MyAssistant самодельный терминальный агент: код, браузер, дочерние агенты на паузе

    2024–2026 · на паузе — исходники заморожены 4 февраля 2026 года после двух лет; несколько правил, которые он породил, до сих пор есть в моих текущих инструкциях для агентов

    Задача
    Ещё до того, как агентные инструменты для программирования стали обычными: один очень способный терминальный агент, который запускает код, ходит в браузер, делегирует и помнит.
    Подход
    Корневой агент выводит в терминал текст, вызовы инструментов и результаты, запускает код и шелл, управляет браузером через моторный субагент и порождает молчаливых дочерних агентов с входящими и исходящими сообщениями, бюджетами и оргструктурой. Субагент памяти ведёт автобиографию и сжимает историю для кеширования промптов.
    Результат
    Он дорос до 17 230 строк библиотечного кода и 43 952 строк тестов в 298 файлах тестов, потом я его приостановил. Это было нулевое поколение фабрики, и оно не могло закрыть большую задачу.
    Свидетельства
    • 298 файлов тестов под двумя правилами: живые тесты ничего не подменяют; слова агента об использовании инструмента не доказывают, что он его использовал
    • Аудит тестового мусора в декабре 2025 года заменил пустые проверки более чем в десяти наборах
    • Первый файл тестов — февраль 2024 года
    Стек
    Node.js · OpenAI SDK · Puppeteer · Jest

    Слова — не свидетельство: что инструмент был использован, доказывают артефакты.

  • ИИ против открытых проблем запуск июля–августа 2026: модели решают математику; проверяет точная арифметика на паузе

    2026 · на паузе — Исторический запуск с 25 июля по 12 августа 2026 года; на том срезе приостановлен; 57 письменных разборов; ни один результат не подтверждён кем-то ещё

    Задача
    Производит ли передовая модель, получив реальные шансы и дисциплинированную проверку, математику одновременно верную и новую? Намеренно ограничено задачами, ответ на которые — конечный объект, который точная арифметика может проверить на одной машине.
    Подход
    Корневой агент выбирает замороженные цели и записывает, почему каждый маршрут ещё не исчерпан. Чаты-решатели идут параллельно; отдельные агенты восстанавливают каждое утверждение с нуля, проверяют точные сертификаты (рациональная арифметика, SAT с выводом доказательства, символьная алгебра) и ищут в литературе, не было ли этого раньше. Верность, новизна и ценность оцениваются раздельно в журнале, куда можно только дописывать.
    Результат
    Горстка небольших локально проверенных объектов и точных сертификатов — ни один не прошёл рецензирование, ни один не подтверждён извне — и ни одного решения громкой проблемы. Одно чёткое разделение: цели с заданной формой ответа вернули верную математику в заданных рамках 5 раз из 5; цели на открытый поиск или изобретение — 0 из 4.
    Свидетельства
    • Записан 261 чат-решатель; принятые результаты заново выведены локально в точной арифметике, остальные утверждения помечены как невоспроизведённые или ожидающие
    • Собственный журнал проекта: ни одного проверенного решения известной открытой проблемы и ни одной новой теоремы с внешним рецензированием; одна отборочная партия прошла проверку новизны 0 из 5
    • 57 датированных разборов, каждый называет один способ, которым автоматическое рассуждение обмануло само себя
    Стек
    Python · sympy · z3 · python-flint · SAT with LRAT proofs · C++

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

  • Реестр обязательств на входе разнородный текст из входящих; на выходе один список без дублей прототип

    2026 · прототип — собран на четырёхчасовом хакатоне сообщества 29 августа 2026 года; 11 пул-реквестов принято в публичный репозиторий комнаты

    Задача
    Сроки и обещания приходят вразброс — по почте, в чатах, в расшифровках звонков и на скриншотах. Люди переносят их в трекеры вручную, и часть всплывает за день до срока.
    Подход
    Читает папку разнородного текста, извлекает обязательства по структурированной схеме и проверяет, что каждое извлечённое утверждение несёт точную цитату из источника. Результаты сливаются в реестр со стабильными идентификаторами: второй прогон обновляет статусы вместо дублирования, а повторный прогон на тех же данных делает ноль вызовов модели, потому что источники хешируются. Адаптер комнаты берёт фиксированную опорную дату, так что его приёмочный корпус не протухает за ночь; собственный же резолвер опорной даты в движке, если дата не задана, по-прежнему берёт системные часы.
    Результат
    Движок извлечения, приёмочный стенд, не зависящий от движка, небольшая веб-консоль, два выходных корпуса по 24 сценария и 93 юнит-теста — всё принято в тот же день. Тем же днём я провёл аудит и записал, где он всё ещё ошибается, — в том числе что общая проверка комнаты дала ложный зелёный, 16 из 16, на выводе с неверным владельцем, неверной датой и дублем.
    Свидетельства
    • 11 пул-реквестов принято в основной репозиторий 29 августа 2026 года
    • 93 юнит-теста в трёх модулях; 24 сценария продублированы в два выходных корпуса (48 папок)
    • Разбор после хакатона перечисляет реальные оставшиеся дефекты: нет отката при свежем прогоне; смысловое качество на реальном провайдере не измерено
    Стек
    Python · FastAPI · pytest · Playwright · Codex and Claude CLIs as interchangeable backends

    На первом экране моей консоли было 38 элементов управления против 12 у демо комнаты — перегруженная вместо минимальной, — и в тот же день я записал первопричину.

  • Разбор сессий мои собственные агентные сессии переработаны в рабочие правила эксперимент

    2026 · эксперимент — один завершённый прогон 31 марта 2026 года; собранный им навык не установлен в моих текущих глобальных каталогах навыков

    Задача
    Как заставить ИИ работать так, как работаешь ты? Не шлифовкой промптов, а наблюдением за собой.
    Подход
    Просканировать все локальные сессии Codex и Claude, сгруппировать их по проектам с точными числами и происхождением, синтезировать независимый анализ по каждому проекту, затем свести их в один набор рабочих правил — где стоит планка доказательства, когда расширять область, что считается свидетельством. Каждое утверждение помечено как прямое наблюдение, вывод или заявление агента.
    Результат
    2 874 файла сессий разложены по 21 проектной группе на одной машине, 3 074 сессии — на другой. Прогон породил сводный навык; он не установлен в моих текущих глобальных каталогах навыков.
    Свидетельства
    • Завершённый прогон записал validation_passed: true
    • Группы с низкой уверенностью помечены с указанием причин
    Стек
    Python

    Отвечай за реальный результат; не останавливайся на дешёвых зелёных галочках.

  • Аудит аудитов окупается ли проверка ИИ другим ИИ? Я построил измерение и выяснил, что пока мешает ответить эксперимент

    2026 · эксперимент — июль 2026 года; отчёт предпочитает не называть число, чем позволить ИИ его оценить

    Задача
    Я регулярно даю одному ИИ проверять план или результат другого. Ловит ли это реальные проблемы или это театр процесса? Построено, чтобы измерить, а не предположить.
    Подход
    Инвентаризировать 20 163 записи моих собственных агентных сессий на двух машинах, свернуть их в 976 канонических событий аудита и связать 964 с сессией, которую они проверяли. Заранее зарегистрированные метрики с явными знаменателями и спроектированные отрицательные контроли — все 976 контрольных сравнений в итоговом отчёте всё ещё помечены как ожидающие; ворота между фазами; проход вычистки секретов, доказанный подложенным секретом и проверкой, что он пойман. Прежде чем что-либо измерять, каждый измерительный инструмент сам прошёл аудит.
    Результат
    Тринадцать из четырнадцати инструментов не прошли собственный аудит. Первый пилот описан как провал, единица анализа переделана, а отчёт оставляет главный вопрос без ответа и говорит об этом в первом же абзаце. Уцелели три ограниченных наблюдения: рецензенты нашли конкретные дефекты в инструментах; рой аудиторов стоил вдвое больше оценки (26 пунктов недельной квоты против 13); более дешёвая переработка плана потеряла или перевернула семь принятых исправлений. Ни одно из них не отвечает на вопрос об окупаемости.
    Свидетельства
    • 20 163 нормализованные записи сессий; 976 событий аудита, 964 связаны с проверяемой сессией
    • Прогон превысил собственный бюджет на использование моделей и остановил себя по собственному правилу
    • Его итоговый аудит нашёл пять собственных прогонов после даты отсечки внутри измеряемой выборки и устаревший журнал затрат; и то и другое исключено или обновлено до итогового отчёта
    Стек
    Python

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

  • autoprog прототип агента для программирования из ноября 2024 года прототип

    2024 · прототип — публичный репозиторий; 15 коммитов с 9 по 17 ноября 2024 года, потом ничего; README называет его довольно ранней стадией разработки

    Задача
    Дать инструменту командной строки запрос на обычном языке и позволить ему писать файлы, применять диффы, запускать команды шелла и управлять браузером, пока он не скажет, что закончил.
    Подход
    Протокол команд в скобках между моделью и инструментом, в цикле до тех пор, пока модель не выдаст токен завершения; он мог чередовать два семейства моделей через один API.
    Результат
    Честный ранний прототип, заброшенный через восемь дней. Теперь я запускаю супервизор для двух коммерческих.
    Свидетельства
    • Публичный репозиторий, не форк
    Стек
    Node.js · Puppeteer · OpenRouter
    Ссылки
    GitHub

    Ранний эксперимент с агентом для программирования, сделанный ещё до фабрики.

  • Одна спецификация, три агентных инструмента одно продуктовое задание отдано трём агентным инструментам, результаты сравнены эксперимент

    2025 · эксперимент — ноябрь–декабрь 2025 года; три рабочих прототипа, ни один не выпущен

    Задача
    Как агентные инструменты для программирования планируют, тестируют и проваливаются? Вопрос был об инструментах, а не о том, какое приложение выпускать.
    Подход
    Одно продуктовое задание — веб-приложение, показывающее, как мебель будет смотреться на фото комнаты, — отдано Kiro, затем Claude Code, затем Codex, каждому со своим файлом требований и тестовой дисциплиной.
    Результат
    Три рабочих прототипа. Один шёл от спецификации с тестами на свойствах; у второго были браузерные тесты, которые нашли перекрывающий клики слой и баг с блокировкой файла; третий работал под строгим правилом живых сквозных тестов без подмен, с прогонами скриншотов.
    Свидетельства
    • Три кодовые базы от 6 700 до 22 000 строк исходников, без зависимостей и сгенерированных данных, каждая со своими тестами
    Стек
    Node.js · Express · SQLite · Playwright

    Упражнение в оценке инструментов, а не в выпуске продукта.

2025–2026 · Инструменты, приложения и сервисы в работе

  • pcal фраза с телефона становится проверенным событием в календаре для себя

    2026 · для себя — в ежедневном использовании с 19 августа 2026 года; восемь чистых циклов развёртывания

    Задача
    У Proton Calendar нет API. Я хотел добавлять события с телефона одной обычной фразой, по-русски или по-английски, не отдавая ни одному сервису пароль от календаря.
    Подход
    Закрытая страница на небольшом сервере превращает текст в карточки предпросмотра; неоднозначные пункты становятся вопросами, а не догадками. Подтверждённые карточки ждут в очереди, переживающей сбои. Рабочий процесс на моём ПК забирает их — он всегда подключается только наружу, — создаёт каждое событие через мой собственный уже залогиненный браузер, затем перезагружает вид дня и снова находит событие, и только потом сообщает об успехе. Телефон продолжает работать, пока ПК спит.
    Результат
    Работает и используется каждый день. У той же оболочки с тех пор появилась вкладка продуктов, где агент, управляющий браузером, наполняет корзину в пределах лимита на заказ, и вкладка расписаний для Telegram.
    Свидетельства
    • Рабочий процесс действует через мой уже залогиненный браузер: у сервиса нет пути ввода учётных данных, и он никогда не вводит пароль или код второго фактора
    • Дифференциальный тестовый режим заново подкладывает каждый баг, от которого стоит защита, и требует, чтобы тест его поймал, — 15 режимов
    • Релизы — неизменяемые датированные каталоги, переключаемые одним переименованием симлинка, с автоматическим откатом
    • В логах никогда нет текста событий, заголовков или токенов; модель никогда не видит содержимое календаря
    • 10 311 строк кода и 10 368 строк тестов в 78 собственных файлах
    Стек
    Node.js · puppeteer-core · Claude CLI with a JSON schema · Caddy · systemd · Windows Task Scheduler

    Дубль события или заказа хуже видимого сбоя: задание, на которое ПК так и не ответил, помечается как «возможно, существует» и никогда не повторяется автоматически.

  • Oracle несколько моделей отвечают, критикуют друг друга, один результатдля себя

    В использовании с сентября 2025 года на компьютере и на Android, всплесками, а не каждый день: неделю тишина, потом много раз за один день. полное описание ↑

  • REPLpaint рисовалка с изолированной консолью JavaScript в архиве

    2026 · в архиве — сделана по просьбе другого человека и не развивается с июля 2026 года; публичное дерево релиза по-прежнему работает здесь, с 25 файлами тестов и сквозным набором на нескольких браузерных движках

    Задача
    Инструменты рисования хорошо создают одну фигуру и плохо меняют двести.
    Подход
    Перо, фигуры, выделение, выравнивание и распределение, отмена и повтор на фиксированном холсте — плюс живая консоль JavaScript поверх небольшого API рисования. Каждый запуск выполняется в свежем realm QuickJS внутри воркера без DOM, хранилища, сети, таймеров и eval. Realm не может тронуть документ; он возвращает предлагаемый пакет операций, который приложение проверяет и применяет как один шаг отмены или отклоняет целиком.
    Результат
    Разовая вещь: кто-то попросил, она вышла и с тех пор не развивается. Она по-прежнему работает на этом сервере, без аккаунта и без серверной копии рисунка; встроенный сервер слушает только loopback и никогда не читает тело запроса.
    Свидетельства
    • Публичный репозиторий (исходники видны; лицензия не выдана, так что повторное использование не разрешено)
    • 25 файлов тестов, сквозной набор на нескольких браузерных движках, сборки рантайма с адресацией по содержимому, заголовки CSP
    • Три коммита за один день: публичное дерево — чистый релиз по белому списку, а не история разработки
    Стек
    JavaScript · QuickJS in WebAssembly · Playwright · Node.js
    Ссылки
    Открыть · GitHub

    Консоль изолирована не удалением опасных функций: она работает в среде, где их никогда не было, а её вывод — лишь предложение, которое проверяет доверенная сторона.

  • ai-watch запускает ИИ-агентов для программирования как пакетные задания под присмотром для себя

    2026 · для себя — в ежедневном использовании; он запускает параллельные прогоны агентов, стоящие за большей частью работы 2026 года

    Задача
    Запускать ИИ-агента для программирования в неинтерактивном режиме — значит смотреть на сырой поток JSON и гадать, работает процесс или завис, — а агент, решивший спросить человека, может заблокироваться навсегда без единой ошибки.
    Подход
    Две обёртки по 18 строк, по одной на семейство агентов, поверх одного ядра-супервизора: запустить отсоединённый прогон, сливать его поток на диск, вести живой файл статуса, слать приватные сигналы жизни, чтобы тихий прогон никогда не выглядел зависшим, и вернуть один чистый итоговый ответ с осмысленным кодом выхода. Блокировка прогона — рекомендательная блокировка ОС, а не lock-файл. Путь «спросить человека» закрыт на уровне супервизора, потому что супервизор — это и есть маршрут без присмотра.
    Результат
    В ежедневном использовании на Windows и Linux. Сопутствующий набор читает собственные журналы сессий агентов и сообщает, сколько стоил каждый прогон по проекту, модели и дню; цену незнакомой модели он не угадывает, а отказывается считать.
    Свидетельства
    • Python без зависимостей; в наборе учёта использования 130 тестовых функций
    • Один прогон просидел 11 минут почти без нагрузки на процессор и без единого вызова инструмента, прежде чем путь блокирующего вопроса закрыли
    • Секреты вычищаются из показываемого stderr; ответ агента никогда не меняется
    Стек
    Python, standard library only · Windows Job Objects · SQLite

    Ни одна операция очистки не ищет по имени исполняемого файла или процесса.

  • Личный стек автоматизации менеджер автозапуска и шесть фоновых утилит для одной машины для себя

    2026 · для себя — работает с июня 2026 года; общий журнал по-прежнему пополняется

    Задача
    Горстка фоновых утилит для одной машины — горячие клавиши виртуальных рабочих столов, которых нет в Windows, горячая клавиша выключения экрана, менеджер частоты процессора и батареи, настройщик приоритетов, запрос целей, стикеры, — каждая должна стартовать при входе, возвращаться после падения и никогда не доставать, пока всё в порядке.
    Подход
    Один менеджер автозапуска владеет таблицей утилит: при старте он проверяет каждую запись, скрыто запускает отсутствующие и показывает уведомление только при настоящем сбое. Автоматический перезапуск после падения настроен для одной из них (стикеров); у запроса целей автозапуск выключен. Утилиты, которым нужны повышенные права, запрашиваются через свою запланированную задачу и никогда не стартуют как копия с пониженным уровнем целостности. У связующего кода есть собственный файл тестов.
    Результат
    Работает месяцами: общий журнал по-прежнему пополняется. В набор входит демон клавиатурного хука, который сам себя перевзводит, потому что Windows молча снимает медленные хуки без ошибки, и задача очистки, которая убрала утёкшие процессы браузерной автоматизации за 2 171 записанный прогон с февраля 2026 года.
    Свидетельства
    • Общий журнал автоматизации на 10 МБ, по-прежнему пополняется
    • Сигнал жизни клавиатурного хука каждые пятнадцать минут, чтобы мёртвый хук был обнаружим, а не загадочен
    • 2 171 записанный прогон очистки с февраля 2026 года
    Стек
    PowerShell · Python · Node.js · Win32 via ctypes

    Молчит, пока не сломается: фоновый инструмент не должен прерывать работу, пока всё исправно.

  • GhostSticky стикеры, интерфейс которых исчезает, когда не нужен для себя

    2026 · для себя — в ежедневном использовании; строится с февраля 2026 года

    Задача
    Обычные приложения-стикеры занимают место на панели задач, показывают элементы интерфейса, которыми вы не пользуетесь, и теряют заметки при падении машины.
    Подход
    Окна без рамки и без места на панели задач. Заметка показывает только текст, пока не в фокусе, а затем открывает заголовок, увеличивая окно, а не сжимая поле для письма. Неактивные заметки отрисовывают Markdown, активные становятся сырым текстом; вставленный HTML, перетащенные файлы и картинки из буфера превращаются в Markdown с локальными вложениями. Закрытие переносит заметку в восстановимую корзину. Автосохранение атомарно, с резервной копией, плюс ежедневный снимок.
    Результат
    В ежедневном использовании. 10 737 строк Python с набором тестов на 9 979 строк.
    Свидетельства
    • 455 тестовых функций плюс 7 тестов на свойствах против 10 737 строк приложения
    • Спецификация, записанная как требования R1–R29 с условием приёмки
    • Каждый положительный тест поведения на оконное событие имеет пару — тест на ложное срабатывание, где то же событие происходит без смены состояния
    Стек
    Python · Tkinter · Win32 via ctypes · hypothesis
    Ссылки
    GitHub

    R7: детали интерфейса должны прятаться, когда не нужны.

  • Цели на час ежечасный диалог «спланируй и оцени» с аутлайнером для себя

    2026 · для себя — активно правится по август 2026 года; зарегистрирован у менеджера автозапуска, автозапуск сейчас выключен

    Задача
    Раз в период небольшой диалог спрашивает цели на этот период и оценку прошлого.
    Подход
    Резидентное приложение спрашивает по скользящему периоду, привязанному к последнему ответу. Оно отслеживает рабочие сессии по горячей клавише, завершает их после бездействия, исключая простой, и переживает сон и гибернацию. Необязательный вложенный план позволяет задачам нести баллы прямо в своём тексте.
    Результат
    Зарегистрирован у супервизора. Его поведение закреплено документом требований из 43 пунктов, который должен обновляться в том же изменении, что и код, с таблицей устаревших пунктов и двумя жёсткими инвариантами.
    Свидетельства
    • 5 878 строк; 88 тестовых функций
    • Требования A1–A43, таблица устаревшего, таблица выведенного поведения, жёсткие инварианты D1–D2
    • Явно пустое отличается от отсутствующего: период, где вы сказали «планов нет», считается заполненным
    Стек
    Python · Tkinter · Windows idle and hotkey APIs

    Меняешь поведение — обновляешь файл требований в том же наборе изменений; иначе работа не завершена.

  • LockController одна программа для всех способов блокировки этого компьютера для себя

    2026 · для себя — работает, со сторожем на сигнале жизни резидента

    Задача
    Вокруг одного вопроса разрослись несколько скриптов — блокировка после активного использования, блокировка в полночь, блокировка по кнопке питания, — у каждого свой таймер, файл состояния и способ ломаться.
    Подход
    Один процесс с одним конечным автоматом и четырьмя режимами: резидент, который отслеживает активное использование и показывает перетаскиваемый обратный отсчёт; дневной запасной вариант, который отказывается действовать по устаревшему сроку; режим кнопки питания, который блокирует экран, если не может прочитать свидетельство свежести; сторож, который проверяет сигнал жизни резидента. Установщик экспортирует каждую запланированную задачу, которую трогает, прежде чем что-то менять, и умеет откатываться.
    Результат
    Работает. Он сводит блокировку по активному использованию, по расписанию и по кнопке питания в одну программу.
    Свидетельства
    • 43 проверки самотестирования, включая отрицательный самотест
    • Пробный режим сообщает «действовать», «отложить» или «подавить как устаревшее», не блокируя экран
    • Его предок — скрипт 2023 года на 12 строк, гасивший монитор одним сообщением Win32
    Стек
    Python · Win32 via ctypes · Windows Scheduled Tasks

    Проверка, которая всегда возвращала «чисто», — не проверка.

  • Панель квот рисует графики квот ИИ-инструментов для программирования по реальным заголовкам лимитов для себя

    2026 · для себя — больше 400 000 замеров с мая 2026 года; адрес закрытый

    Задача
    Два ИИ-инструмента для программирования выдают работу пятичасовыми и недельными квотами, которые видно только изнутри инструмента.
    Подход
    Каждую минуту опросчик шлёт запрос на один токен и читает настоящие заголовки лимитов в ответах провайдеров — три аккаунта, шесть датчиков, — фиксирует цикл одной транзакцией и рисует график с разбивкой, какой проект и какая модель сколько потратили. Он измеряет, а не оценивает: имена заголовков найдены дампом строк из бинарника инструмента и подтверждены одним реальным запросом.
    Результат
    Работает с мая 2026 года. Честно задокументированная цена: сам опрос списывается с тех самых квот, которые измеряет, — около 14 400 токенов в день при одном опросе в минуту.
    Свидетельства
    • 48 тестовых функций
    • Исправление в бою 12 августа 2026 года: один воркер держал 332 полузакрытых сокета; TLS вынесен на обратный прокси и проверен при 40 одновременных соединениях из пяти регионов
    Стек
    Python · Flask · gunicorn · SQLite · Caddy

    Она измеряет, а не оценивает, и говорит, сколько стоит измерение: около 14 400 токенов в день из той самой квоты, которую рисует.

  • Монитор флота агентов много агентных сессий в tmux, их реальное состояние читается с телефона для себя

    2026 · для себя — в активном использовании; 122 журнала сессий с марта 2026 года; одна починка сохранила все 22 живые панели

    Задача
    Моя цель — легко видеть, работает агент или по какой-то причине остановился.
    Подход
    Запускает и присматривает за многими одновременными агентными сессиями в tmux на нескольких машинах. Истинное состояние каждой панели — готова, работает, ждёт разрешения, упала, простаивает, завершена — берётся из детерминированных хуков жизненного цикла, а не из разбора текста агента, и выводится как редко меняющийся заголовок панели, читаемый с телефона на Android. Ежечасный сторож архивирует приватный экран каждой панели, исключает любой экран, в котором может быть секрет, одним вызовом модели спрашивает, действительно ли агент застрял, перепроверяет в изоляции и только потом отправляет одно фиксированное нажатие.
    Результат
    Работает. Сопутствующий инструмент показывает много панелей сразу и отправляет ввод только тем, которые небольшая проверка из конфигурации считает готовыми, после пробного прогона и подтверждения.
    Свидетельства
    • Сторож: 1 369 строк плюс 721 строка тестов
    • Правило: не убивать, не пересоздавать и не заменять существующую живую панель агента — починки ложатся на работающий флот
    Стек
    tmux · shell · Python · Termux

    Индикатор состояния, который спамит телефон, — это баг.

  • Ранжировщик истории заказов узнаёт, что я на самом деле покупаю, и ранжирует товары и магазины для себя

    2026 · для себя — питает вкладку продуктов в pcal; сам никогда не заказывает и не открывает корзину

    Задача
    Покупательской половине моего телефонного ассистента нужно было знать, что я на самом деле покупаю.
    Подход
    Читает мою собственную историю заказов из сервиса доставки через мой залогиненный браузер — ни один запрос никогда не собирается вне страницы, это закреплено в коде — и ранжирует магазины и товары с периодом полураспада 45 дней.
    Результат
    Работает. Он также опроверг задокументированное допущение на реальных данных: поле, которое все считают идентификатором товара, покрывало до 17 разных товаров в 7 магазинах. Это категория. README хранит неверное утверждение и измерение бок о бок.
    Свидетельства
    • Самотест из 179 проверок, 19 из которых запускают намеренно неверную конструкцию и утверждают, что она даёт неверный ответ, — 13 неверных конструкций, 4 из них были живыми дефектами на тот момент
    • 2 684 строки JavaScript в 14 файлах
    Стек
    Node.js · puppeteer-core

    Тринадцать заведомо неверных конструкций — и для каждой доказано, что она даёт неверный ответ.

  • Двуязычный интернет-магазин витрина на WooCommerce, сданная дистрибьютору сдан

    2026 · сдан — передан клиенту в июле 2026 года с руководством владельца; с тех пор не запущен — домен, данные эквайринга и юридические реквизиты должен предоставить клиент, а временный предзапусковый хостинг выключен

    Задача
    Дистрибьютору косметики нужен был готовый к работе магазин на русском и узбекском с курьерской доставкой и пунктами выдачи, а также передача, с которой справится владелец без технической подготовки.
    Подход
    WordPress и WooCommerce на собственной дочерней теме с тремя специально написанными плагинами: переключатель языка, плагин способов доставки и анимированный фон. Оплата картой подключена, но оставлена выключенной до появления собственных данных эквайринга клиента.
    Результат
    Сдан с руководством владельца на простом языке, которое говорит, что не сделано, — постоянный домен, данные эквайринга, юридические реквизиты, — вместо объявления победы. Клиент эти последние шаги не сделал, так что магазин так и не открылся для публики.
    Свидетельства
    • 287 из 287 цен каталога сверены с исходным каталогом; 4 устаревшие исправлены
    • Оформление заказа проверено в реальном браузере вплоть до размещения заказа — и намеренно без него
    Стек
    WordPress · WooCommerce · PHP

    Остановился на последнем обратимом шаге: ни один заказ не отправлен.

2024–2026 · Рынки, данные и поисковик

  • Исследовательский стенд для рынков предсказаний торговые идеи поднимаются по лестнице из шести ступеней; большинство гибнет эксперимент

    2025–2026 · эксперимент — сборщики стаканов проверены вживую 30 августа 2026 года — ни одного пропущенного дня с апреля; исследовательский код не менялся с мая 2026 года

    Задача
    Найти реальное измеримое преимущество на рынке предсказаний с системой, которая воспроизводима и защищена от утечки данных из будущего, — или прийти к чёткому выводу, что преимущества нет. Системы-чёрные ящики, которые нельзя проверить на утечку, исключены в документе о рамках.
    Подход
    Оценивать трейдеров по их истории, сводить поток лучших в оценки вероятностей и прогонять каждую идею по лестнице продвижения из шести ступеней с числовыми порогами, прежде чем она сможет коснуться денег: доходность вне выборки выше издержек с бутстреп-интервалом, не включающим ноль, два независимых окна с одинаковым знаком, тридцать дней проспективных результатов в пределах половины бэктеста, проверенный аварийный выключатель. Собственный API биржи нужную историю не отдавал, поэтому данные о сделках читаются прямо из блокчейна через пул RPC-эндпоинтов, который учится, какие узлы быстрые, у каких обрезана история и какого размера запрос каждый принимает.
    Результат
    Вошло примерно двадцать идей; большинство погибло на тестах вне выборки, с записанными числами. В симуляции маркетмейкинг проиграл неблагоприятному отбору на 7 830 токенах. Единственный сигнал, дошедший до проспективного отслеживания, не воспроизвёл свой бэктест на 808 000 бумажных сигналов. Уцелели стенд и данные: стаканы примерно по 10 000 рынков, снимаемые каждые две минуты с февраля 2026 года, — с пропусками в первые месяцы и без единого с конца апреля.
    Свидетельства
    • 286 283 строки Python в 721 файле; 265 файлов тестов, 1 430 тестовых функций
    • 633 174 файла с лучшими ценами стакана в 177 дневных архивах, последние 128 дней без пропусков; высокочастотный сборщик на 5,9 запроса в секунду без единого срабатывания лимита
    • Журнал из 707 датированных записей; 7 датированных расследований, одно — матрица гипотез на 863 строки с «ожидаемым, если верно» и «ожидаемым, если неверно» для каждой проверки
    • Операционное руководство для агента с числовыми триггерами: заявка, не подтверждённая тридцать минут, обязана открыть расследование с двумя независимыми датчиками
    Стек
    Python · SQLite · Polygon JSON-RPC · systemd

    Стратегия не мертва, пока не проверена в полном масштабе с верными допущениями, — и никогда не проверяй на 20 рынках, когда доступны 3 000.

  • Поисковик с нуля краулер, DNS-кеш, бенчмарки списков вхождений эксперимент

    2024 · эксперимент — январь–октябрь 2024 года; так и не ответил ни на один запрос

    Задача
    Что на самом деле нужно, чтобы построить поисковик по вебу? Начать с самого низа.
    Подход
    Десять параллельных потоков обхода по списку из десяти миллионов доменов, с ручной обработкой Brotli, gzip и deflate; собственный DNS-кеш, потому что настоящим узким местом было разрешение имён; бенчмарки двух способов побитового пересечения списков вхождений; эксперименты с раскладкой индекса.
    Результат
    До индекса, отвечающего на запросы, дело так и не дошло.
    Свидетельства
    • Сохранились 17 файлов экспериментов; краулер ожидает список из десяти миллионов доменов, которого в дереве больше нет
    Стек
    Node.js · cheerio

2017–2026 · Приложения для Android

  • Приложение для Android миллионы установок в Google Playработает

    Оно выходит более чем на шестидесяти языках; локализацию делает конвейер, который я сначала написал поверх машинного перевода, а позже переписал поверх языковой модели. полное описание ↑

  • Фабрика приложений десяток вариантов приложения из одного шаблона в архиве

    2018 · в архиве — сделана примерно за два месяца

    Задача
    Десяток вариантов одного приложения, каждому нужны свои строки, иконка, скриншоты и описание в магазине.
    Подход
    Скрипт клонирует проект-шаблон по разу на вариант, накладывает данные этого варианта, переписывает имена и содержимое, переводит строки, компилирует и публикует. Иконки и скриншоты для магазина генерируются случайной функцией с зерном из хеша имени приложения, с проверкой цветового расстояния, чтобы схемы оставались различимыми.
    Результат
    Десяток именованных вариантов, каждый сгенерирован из своих данных и имени.
    Свидетельства
    • 18 КБ оркестрирующего JavaScript в шести файлах плюс данные для каждого варианта
    • Автоматический шаг публикации в магазине
    Стек
    Node.js · Android

    Из одного и того же имени всегда собирается одно и то же приложение.

О себе

Моё направление выросло из идеи фабрики программ в фабрику небольших организаций из агентов. Я хочу понять, как задать видение и цель, а затем дать разным ролям создать и проверить результат. Сейчас идёт третья версия; готового продукта пока нет.

Я пришёл к этому не одной дорогой. Сначала собрал несколько независимых архитектур и проверил их на одной реальной трудной задаче. Потом долго вручную строил слой поверх агентов: он работал, но двигался слишком медленно, а его внутренние проверки начали изображать качество, а не создавать его. Я остановил этот цикл, вместо того чтобы защищать вложенное время.

Я построил воспроизводимые инструменты для сравнения моделей и анализа их использования, а в больших историях агентных сессий отделил прямые свидетельства от реконструкции, спорного и неизвестного. Большая часть этого закрыта: продолжающееся исследование автономной многоагентной разработки ПО, 4 234 коммита в пяти приватных репозиториях с февраля по июль 2026 года. У меня мало публичных доказательств и много ранней работы; я не хочу выдавать идею за готовый продукт.

Интересы вне работы: эволюционная биология, дизайн организаций, рынки предсказаний как организационный механизм, боулдеринг.

Как я работаю

  • Разделять исполнение и оценку: работу судит другой агент, другая сессия или другое семейство моделей. Я намеренно использую два семейства моделей — одному больше доверяю факты и проверку на реальном прогоне, другому — намерение и вкус — и считаю их разногласие сигналом.
  • Привязывать суждения к внешним свидетельствам — тестам, логам, артефактам, проверкам на реальном пути, — а не к объяснениям. Слова агента о том, что он использовал инструмент, не доказывают, что он его использовал.
  • Проверка, которая всегда проходила, — не проверка. Прежде чем зелёный результат засчитается, намеренно подложенный дефект должен сделать его красным.
  • Проверка, которая не говорит «нет», и проверка, которая не может сказать «нет», снаружи выглядят одинаково. Останавливать систему, когда она начинает оптимизировать видимость собственного качества.
  • Записывать требование до кода и обновлять его в том же изменении. Прототип называется прототипом; провалившийся пилот описывается как провал.
  • Фоновые инструменты молчат, пока всё в порядке, и прерывают только при реальном сбое. Ошибка никогда не приходит через то, что блокирует.

Хронология

  1. 2015–2016До приложений: PHP на шаред-хостинге. Задания по расписанию на наборе доменов, поиск почтовых и DNS-записей и первый обход лимита времени выполнения — одна задача, разложенная на параллельные процессы.
  2. 2017Первая работа над приложениями для Android; конвейер локализации описаний в магазине; бот для кросспостинга между двумя соцсетями.
  3. 2018Выходят приложения для Android; скрипт собирает десяток вариантов приложения из одного шаблона.
  4. 2019Запускается аналитический бэкенд одного из приложений; каждая сессия отправляет от 46 до 119 полей, а в последующие годы — уже в пяти версиях формата данных.
  5. 2020Эксперименты с генеративными моделями — учебное упражнение на адаптированном коде; майнер каталога Play Store; небольшой веб-сервис с системой членства.
  6. 2022–2023Анализ всех стратегий на платформе копитрейдинга с поправкой на риск. Первые эксперименты с ChatGPT: промпты, в которых модель играет продуктовую команду, и чат с параллельными колонками для каждой модели — предок Oracle.
  7. 2024Поисковик с нуля, который так и не ответил ни на один запрос. Начинаю собственный терминальный агент (февраль). autoprog — публичный прототип агента для программирования (ноябрь).
  8. 2025Oracle в работе с сентября. Одна спецификация приложения реализована тремя агентными инструментами, результаты сравнены. Начинаю исследование рынков предсказаний (декабрь).
  9. 2026Фабрика в трёх строках: много кандидатов и один экзамен (февраль), собранный вручную цикл из двух агентов (май–август, приостановлен), рамка, судьи и отбор (с июня, текущий подход). Исследование каркасов (май), REPLpaint (июль), математическая программа (июль–август), pcal в работе и хакатон с одиннадцатью принятыми пул-реквестами (август).

Контакты