Почему я решил уйти с РЖД в IT: честная история о зарплате, семье и Python
Работа на железной дороге — это стабильность. Так мне всегда говорили старшие родственники. И я верил. Но у этой стабильности есть обратная сторона, о которой не принято громко говорить: ты буквально живешь на работе, гробишь здоровье в ночные смены или на бесконечных дежурствах, а получаешь за это столько, что едва хватает на самое необходимое.
В какой-то момент я посмотрел на свою расчетку, потом на спящего ребенка, которого я снова не успел увидеть бодрствующим из-за графика, и понял: хватит. Железка забирает всё мое время, но взамен дает копейки. Я хочу видеть, как растет моя семья, хочу работать в тепле из дома и сам управлять своей жизнью.
Так в моей жизни появился Python (Пайтон).
Точка кипения: почему РЖД больше не вывозит
Кто работал в структуре РЖД, тот меня поймет. Ответственность огромная, спрос жесткий, инструкции на каждый чих, а индексация зарплаты — это просто смех. Ты можешь упахиваться, брать дополнительные смены, но выше потолка своей должности не прыгнешь.
Последней каплей стало понимание, что я превращаюсь в робота. Пришел, отработал, приполз домой, уснул. Семью я видел в основном на фотографиях в телефоне. Зачем нужна такая «стабильность», если жизнь проходит мимо? Мне захотелось кардинальных перемен, и я начал искать выход. Выходом оказалась удаленка.
Почему именно Python?
В программировании я был полным нулем. Локомотивы, рельсы, графики движения — это я понимал. Код — нет. Погуглив, я узнал, что Пайтон — самый доступный язык для новичков. Его синтаксис называют «человеческим». Он похож на простые предложения на английском.
Я подумал: «Если люди в моем возрасте переучиваются, то чем я хуже? На железке и не такие инструкции зубрили». И начал пробовать.
Обратная сторона учебы: код вместо сна
Конечно, в рекламе курсов всё выглядит красиво: «учись по 15 минут в день за чашкой кофе». В реальности всё гораздо жестче. При моем суровом графике на РЖД свободного времени не было вообще.
Учить язык приходилось в основном по ночам. Представьте: отпахал тяжелую смену, пришел домой, уложил ребенка спать, в доме воцарилась тишина — и вместо того, чтобы наконец-то лечь в кровать, ты открываешь ноутбук.
Глаза слипаются, в чашке уже третий кофе, а ты сидишь до двух-трех часов ночи и пытаешься понять, почему эта чертова функция не работает. Было тяжело? Не то слово. Иногда казалось, что я просто сойду с ума от недосыпа. Но я понимал, ради чего я это делаю. Если бы не поддержка жены, которая видела мои ночные посиделки и молча приносила бутерброды, я бы, наверное, сдался.
Первые победы
Сначала голова просто взрывалась от всех этих переменных, циклов и списков. Казалось, что это темный лес. Напишешь пару строк — всё ломается, программа выдает кучу ошибок. Руки опускались, хотелось всё бросить и вернуться к привычной, хоть и тяжелой рутине.
Но когда после очередной бессонной ночи я написал своего первого Telegram-бота, который по нажатию кнопки выполнял команду, внутри как будто тумблер щелкнул. Ребята, это непередаваемое чувство. Ты сам, своими руками создал что-то рабочее на компьютере! В этот момент я понял, что обратного пути на железку у меня нет.
Моя цель
Я твердо решил увольняться с РЖД. Сейчас я активно нарабатываю портфолио, беру первые заказы на фрилансе (пусть пока небольшие, но это уже реальные деньги за мой код!) и двигаюсь к полноценной удаленной работе.
Мой рабочий день больше не будет начинаться в 5 утра в любую погоду. Я хочу просыпаться, спокойно пить кофе с женой, провожать ребенка в школу и садиться за работу в уютной комнате.
Если вы тоже застряли на тяжелой работе с низкой зарплатой и думаете, что менять что-то уже поздно — поверьте моему опыту. Трудно только начать. Но когда на кону стоит благополучие вашей семьи и ваша собственная жизнь — оно того стоит.
** Есть среди моих читателей те, кто тоже учился по ночам ради смены профессии? Поделитесь своими историями в комментариях, давайте поддержим друг друга!**
Настройки Claude Cod и Android Studio
🧪 Доктор Клод: как подключить к Android Studio
Короткая инструкция:
Устанавливаем Claude Code.
Открываем проект в Android Studio.
Открываем Terminal (Alt+F12).
Переходим в папку проекта и запускаем:
claude
Даём задачу:
«Проанализируй проект, найди ошибки компиляции и исправь их».
Claude сам читает файлы, вносит изменения и может запускать Gradle/тесты.
Совет: перед первым запуском сделайте git commit. Доктор должен иметь возможность ошибиться без летального исхода. 😁
Итого: Android Studio остаётся IDE, а Claude Code становится вашим AI-разработчиком прямо внутри проекта.
Клод Код ( Терминал) в Android Studio
Claude finished the responseКлод код ( терминал)может подключиться к андроид студии и править код?Searched the webSearched the webДа, может — и есть два способа.Способ 1: официальный плагин Claude Code для Android StudioAndroid Studio построен на IntelliJ Platform, и Claude Code имеет плагин для JetBrains IDE (куда входит Android Studio).Что даёт:Быстрый запуск: Cmd+Esc (Mac) / Ctrl+Esc (Windows/Linux) — открывает Claude Code прямо из редактораИзменения показываются не в терминале, а во встроенном diff-viewer Android Studio (как при code review)Выделенный код/открытые вкладки автоматически передаются в контекст ClaudeCmd+Option+K / Alt+Ctrl+K — вставить ссылку на файл (
@File#L1-99
)Установка: Settings → Plugins → Marketplace → искать "Claude Code" → Install → перезапустить Android Studio.Способ 2: просто терминал внутри Android StudioОткрываешь встроенный терминал (Alt+F12), внутри папки проекта пишешь
claude
, и он видит и правит файлы проекта напрямую — без плагина вообще. Многие используют именно так, это проще и стабильнее (плагин пока в бете, некоторые жалуются, что это скорее обёртка над CLI, чем глубокая интеграция).
Скачиваем все видео с Youtube в автоматическом режиме при помощи Keenetic
Всем привет! В связи с частыми отключениями «свободного» интернета в наших краях (СПб) и включением белых списков, от которых с каждым днем спасает все меньше и меньше сервисов, решил я озадачиться скачиванием своих любимых видео из Youtube на локальный носитель. Но при этом не хочется оставлять компьютер включенным, а процесс подгрузки новых видео сделать автоматическим. Тут я вспомнил, что на мой любимый Keenetic Hopper (KN-3811) в рамках поддержки OPKG можно ставить исполняшки на python, в том числе популярную утилиту для скачивания видео с YT – yt-dlp.
Значит так, что нам понадобится:
Роутер Keenetic с USB портом и настроенным прокси/VPN (по понятным причинам настройку в этой статье обсуждать не будем);
Флешка хотя бы в 1Гб;
Жесткий диск, куда будем качать видео (SSD, HDD с переходником или просто большая флешка);
USB-hub для подключения флешки и жесткого диска одновременно (если USB порт всего 1);
Около часа времени.
Также нам понадобятся следующие программы/плагины:
PuTTY для подключения к роутеру по SSH (вроде можно подключаться через родной виндовый power shell, но я не пробовал);
Расширение для хрома «Get cookies.txt LOCALLY» (в рамках статьи будет использоваться браузер Google Chrome, но оно вроде на всех хромоподобных браузерах одинаковое);
DiskGenius для форматирования флешки в ext4;
Установщик Entware для вашего роутера.
ГОТОВИМ ФЛЕШКУ
Скачиваем и устанавливаем DiskGenius (можно с оф сайта не крякнутый, функций нам хватит) и форматируем с его помощью флешку в ext4.
После успешного форматирования подключаем флешку через USB-хаб (это важно) к роутеру.ГОТОВИМ РОУТЕР
Для начала советую обновиться до актуальной версии прошивки на роутере (у меня на момент настройки версия 5.1.1). Это можно сделать в разделе «Управление» - «Настройки системы». Там же нужно догрузить необходимые компоненты (кнопка «Изменить набор компонентов»), а именно:
Файловая система ext;
Утилиты для файловой системы ext;
Поддержка открытых пакетов;
Модули ядра для поддержки файловых систем;
Общий доступ к файлам и принтерам по протоколу SMB;
Сервер SSH.
Еще раз напомню, что ютуб сам по себе должен быть доступен для просмотра. Либо нативно, либо через иные способы, но сам роутер должен видеть ютуб.
После установки всех компонентов и перезагрузки роутера глянем, определилась ли флешка, перейдя в раздел «Управление» - «Накопители и устройства». Скорее всего будет написано «Требуется действие». Нажмите на флешку и проведите ее инициализацию (кинетик сам форматнет ее еще раз). После того, как флешка станет активна, можно начать установку Entware (это легковесная версия OpenWRT для Keenetic). Для этого качаем с официального сайта нужный нам архив.
Для 4G (KN-1212), Omni (KN-1410), Extra (KN-1710/1711/1713), Giga (KN-1010/1011), Ultra (KN-1810), Viva (KN-1910/1912/1913), Giant (KN-2610), Hero 4G (KN-2310/2311), Hopper (KN-3810) и Zyxel Keenetic II / III, Extra, Extra II, Giga II / III, Omni, Omni II, Viva, Ultra, Ultra II
Для Ultra SE (KN-2510), Giga SE (KN-2410), DSL (KN-2010), Skipper DSL (KN-2112), Duo (KN-2110), Ultra SE (KN-2510), Hopper DSL (KN-3610) и Zyxel Keenetic DSL, LTE, VOX
Для Peak (KN-2710), Ultra (KN-1811), Giga (KN-1012), Hopper (KN-3811) и Hopper SE (KN-3812)
Если вашего роутера тут нет, то придется поискать в гугле по запросу «скачать entware для keenetic KN-****», где **** - модель вашего Keenetic-а.
Заходим на роутер по 192.168.1.1 (или какой там у вас), переходим в раздел «Управление» - «Накопители и устройства» и выбираем свою флешку. В корне флешки создаем папку install если ее нет
и кнопкой «Загрузить файл в выбранную папку» загружаем скачанный ранее архив с Entware
После загрузки переходим в раздел «Управление» - «OPKG» и в выпадающем списке «Накопитель» выбираем нашу флешку
Теперь можно перейти в раздел «Управление» - «Диагностика» и по кнопке «Журнал» открыть журнал событий роутера. Если все правильно, то мы увидим процессы установки (нет у меня скрина журнала, к сожалению). Когда появится строка «"Entware" installed!» можно продолжать.
Итак, флешка и Entware у нас есть. Теперь нужно подключить хранилище. Отформатируйте свой жесткий, который хотите подключить к роутеру, на ПК. Советую выбирать размер кластера в 64Кб, это максимум, который поддерживает роутер и достаточно большой размер для сокращения кол-ва операций чтение/запись.
В итоге у вас должны появиться в накопителях три устройства: сам роутер, флешка с Entware и наше будущее хранилище.
Если роутер отказывается работать с HDD из коробки, то инициализируйте его как это было сделано ранее с флешкой. Тогда роутер сам отформатирует (обратите внимание) жесткий диск в формате ext4 (ему в нем удобнее).
Далее откроем доступ к хранилищу по SMB. Перейдем в раздел «Управление» - «Приложения». Нам кликните на «СЕРВЕР SMB» и убедитесь, что ваши новые хранилища (жесткий диск и флешка) смонтировались.
Если нет, то нажмите «Добавить общий ресурс» и выберите нужный вам жесткий диск из списка и нажмите кнопку «Выбрать». После этого в проводнике компьютера (для тех, кому за 30 – «Мой компьютер»), в разделе сеть должен появиться ваш кинетик, а в нем – смонтированный жесткий диск.
На этом базовый минимум настройки роутера закончен. О том, как настраивать обходы, я рассказывать не буду. У меня в тот момент стоял WireGuard, так что буду в рассказе опираться на него.
ГОТОВИМ ФАЙЛЫ И ПК
Теперь заранее подготовим компьютер.
Скачайте PuTTY с официального сайта https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
Установите в браузер расширение «Get cookies.txt LOCALLY» https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc
Перейдите на ютуб, авторизуйтесь, откройте Get cookies через верхнее меню браузера или через его общее меню и нажмите «Export»
Сохраните файл куки и переименуйте его в cookies.txt
Теперь создайте файл archive.txt и файл chan.txt. В последний запишите ссылки на каналы, которые хотите скачивать (по одному в строчку).
Положите файлы cookies.txt, archive.txt и chan.txt в папку роутера Сеть/Keenetic/*ВАШ_ЖЕСТКИЙ_ДИСК*/Youtube/
Вроде все. Все файлы готовы для работы. Переходим к настройке самого роутера и скачивания (остальной текст я заимствовал у гемини, который помогал мне с первоначальной настройкой, но внес некоторые правки и уточнения).
Шаг 1: Настройка маршрутизации в веб-интерфейсе Keenetic
Чтобы направить трафик роутера через VPN, а домашние устройства оставить на прямом интернете, перестроим логику политик:
Зайдите в веб-интерфейс Keenetic ➔ Сетевые правила ➔ Приоритеты подключений.
Вкладка Основная политика (в ней по умолчанию живут все системные процессы роутера и Entware): оставьте галочку только напротив вашего WireGuard-подключения. Все остальные галочки (основной провайдер) снимите.
Нажмите кнопку + Добавить профиль в верхнем правом углу. Назовите его Домашняя сеть. Внутри этого профиля поставьте галочку только напротив вашего основного провайдера (интернета). Сохраните.
Перейдите на вкладку Применение профилей (вверху страницы).
Найдите ваш основной домашний сегмент (Домашняя сеть / Домашний сегмент) и перетащите его из профиля «Основной» в созданный профиль Домашняя сеть. Нажмите Сохранить.
Результат: Компьютеры и телефоны работают напрямую на максимальной скорости провайдера, а сам роутер и его фоновые службы (включая загрузчик) намертво заперты внутри WireGuard.
Шаг 2: Установка системных зависимостей в Entware
Подключитесь к Keenetic по SSH через установленный ранее PuTTy (стандартно 192.168.1.1 и порт 222; стандартные логин и пароль root и keenetic соответственно)
и последовательно выполните команды для разворачивания окружения:
Обновляем репозиторий пакетов Entware:
opkg update
Устанавливаем Python 3 и менеджер пакетов pip:
opkg install python3 python3-pip
Устанавливаем ffmpeg для склейки видео и аудио дорожек высокого разрешения:
opkg install ffmpeg
Устанавливаем QuickJS — микро-движок JavaScript:
opkg install quickjs
Устанавливаем службу планировщика задач (cron):
opkg install cron
Разрешаем запуск службы cron и поднимаем её в фоне:
chmod +x /opt/etc/init.d/S10cron
/opt/etc/init.d/S10cron start
Шаг 3: Установка и обновление пакета yt-dlp
Устанавливаем сам парсер вместе с официальным пакетом скриптов дешифрации сигнатур (yt-dlp-ejs) напрямую из библиотеки Python:
python3 -m pip install -U "yt-dlp[default]"
Шаг 4: Подготовка рабочих файлов на жестком диске
Для начала узнаем под каким именем смонтирован HDD в системе:
df -h
В столбце «Size» ищем наиболее подходящее под нашу железку значение (у меня это 16.4Т), а рядом с ней в столбце “Mounted on” находим имя смонтированного тома.
Запоминаем его.
Создайте на вашем подключенном жестком диске целевую папку (в примере UUID диска — BE5895475894FEF9):
mkdir -p /tmp/mnt/BE5895475894FEF9/Youtube/
Поместите внутрь созданной папки два файла:
cookies.txt — файл в формате Netscape cookie file, экспортированный из вашего браузера на ПК (с помощью расширения вроде Get cookies.txt LOCALLY). Он необходим утилите для авторизации в вашем аккаунте.
chan.txt — резервный текстовый файл со ссылками на каналы (по одной на строку), если захотите качать конкретный список, а не весь фид подписок.
Шаг 5: Создание финального очищенного скрипта загрузки
Создайте чистый Bash-скрипт в защищенной системной папке роутера, которая поддерживает обход ограничений NTFS-дисков (на случай, если HDD все-таки подтянулся в NTFS, а не в ext4) (noexec):
cat << 'EOF' > /opt/etc/config/youtube_updater_new.sh
#!/bin/sh
# 1. Задаем системные пути, чтобы cron видел python, yt-dlp и quickjs
export PATH=/opt/bin:/opt/sbin:/usr/bin:/usr/sbin:/bin:/sbin
# 2. Принудительно включаем поддержку UTF-8 (защита от зависания аудио на 127 КБ)
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# 3. Проверка: смонтировано ли хранилище?
if ! mountpoint -q " /tmp/mnt/BE5895475894FEF9"; then
logger -t youtube_updater "Ошибка: Хранилище $MOUNT_DIR не смонтировано. Выход."
exit 1
fi
# 4. Запуск yt-dlp с фильтрацией шортсов/стримов и загрузкой фида личных подписок
/opt/bin/yt-dlp \
--cookies /tmp/mnt/BE5895475894FEF9/Youtube/cookies.txt \
--remote-components ejs:github \
--js-runtimes quickjs \
--match-filter "original_url !*=/shorts/ & !is_live & !was_live" \
--playlist-end 3 \
--playlist-reverse \
-o "/tmp/mnt/BE5895475894FEF9/Youtube/%(channel)s/%(upload_date)s_%(title)s.%(ext)s" \
-f "398+140/bestvideo+bestaudio" \
"ytsubs://" \
--download-archive "/tmp/mnt/BE5895475894FEF9/Youtube/archive.txt" \
-i >> /tmp/mnt/BE5895475894FEF9/Youtube/cron_daily.log 2>&1
EOF
Если вы хотите качать шортсы, то замените строчку
--match-filter "original_url !*=/shorts/ & !is_live & !was_live" \
на
--match-filter "original_url !*=!is_live & !was_live" \
А если хотите оставить стримы, то замените
--match-filter "original_url !*=/shorts/ & !is_live & !was_live" \
на
--match-filter "original_url !*=/shorts/ \
Если нужны все видео, то просто уберите строчку
--match-filter "original_url !*=/shorts/ & !is_live & !was_live" \
целиком.
Скрипт будет скачивать видео в формате 720р, а если его нет, то в лучше доступном. Если вы хотите выбрать другие варианты, то замените 398+140 на один из списка
📹 Видео (первая цифра)
🎧 Аудио (вторая цифра)
То есть видео в 4К (кодек H264) с максимальным звуком (при их наличии) будет 266+251, а строка примет вид
-f "266+251/bestvideo+bestaudio" \
Примечание: пробелы в начале строк важны, потому что python относится к ним ревностно.
Сделайте созданный скрипт исполняемым в системе:
chmod +x /opt/etc/config/youtube_updater.sh
Шаг 6: Настройка ночного расписания в планировщике
Чтобы запустить автоматическую проверку раз в сутки, откройте менеджер личных задач пользователя root (в нем откроется встроенный текстовый редактор):
crontab -e
Перейдите в режим ввода текста, вставьте следующую строчку:
0 1 * * * sh /opt/etc/config/youtube_updater.sh
Обязательно нажмите Enter, чтобы под строкой осталась одна пустая строка (критическое требование парсера cron).
Сохраните изменения и выйдите из редактора (для vi нажмите Esc, затем введите :wq и нажмите Enter).
Перезапустите планировщик для применения настроек:
/opt/etc/init.d/S10cron restart
Ручная проверка
В любой момент вы можете запустить комплекс вручную командой:
sh /opt/etc/config/youtube_updater.sh
Лог выполнения будет в реальном времени записываться в файл cron_daily.log на вашем жестком диске.
После запуска можно зайти в сетевую папку на кинетике в проводнике и проверить как лог, так и появление нужных нам видео в соответствующих папках.
Скрипт можно перенастроить на скачивание только новых видео (например, чтобы скачивать их ночью, а днем смотреть без задержки в 4К уже скачанное, если скорость интернета не позволяет смотреть онлайн или если к утру включат БС), настроить на скачивание сразу всех подписок (а не выборочных каналов) или на удаление очень старых видео. Простора для творчества масса, но статья была о базовой базе. Надеюсь, у вас тоже получится и мое потраченное время имеет смысл хоть для кого-то. Всем удачи в настройке! Если есть вопросы – задавайте.
P.S.: не уверен, что правильно выбрал сообщество, поправьте, если ошибся.
Ответ на пост «Библиотекус»1
Если кому хочется схоронить локально превосходную коллекцию книг собранную Артемием и отсканированную неизвестным героем, то я (ладно ИИ*, но я стоял рядом) написал скрипт, который скачивает все это добро.
Установите Python. Обязательно поставить галочку «Add python.exe to PATH».
Скачайте исходник с Pastebin (кнопка Download над кодом).
Измените расширение файла с .py на .pyw (чтобы скрипт работал без окна консоли) и запустите. Можете сначала скормить нейросети, чтобы проверить не воруют ли вашу личность эти загадочные строки.
*Тег «Контект нейросетей» не ставлю, а то он тут значит мемы с котами.
Блог про Клод ( Claude )
Док Клод: кухня, уроки и грабли
Это мой блог для новичков в Клоде.
Меня зовут Док Клод, он же Док Браун. Для тех, кто не в теме: Док — тот самый растрёпанный изобретатель из «Назад в будущее», который собрал машину времени из того, что было под рукой. Почему именно он? Потому что нейросети — это новая реальность, и новичком в ней может оказаться кто угодно: и школьник, и мудрый профессор. Стартовая позиция у всех примерно одинаковая.
Здесь я буду показывать кухню Клода: как я с ним работаю, выкладывать уроки и честно описывать грабли — ошибки, на которые наступаю сам.
Обо мне:
Не программист. Не «немного подзабыл Паскаль со школы», а вообще: код всю жизнь выглядел для меня как заклинание на чужом языке. Я придумываю продукты и веду проекты, а техническую часть разбираю с Клодом.
Начинал просто играясь с ГигаЧатом , сделай то, нарисуй то то, найди в интернете и т.д. Три месяца назад я открыл Клода, чтобы попробовать. Просто решил попробовать смогу ли я не понимая ни чего в написании кодов сделать приложение. По работе у меня много всяких записок на столе , чтобы не забыть, ежедневники не люблю. И я решил сделать просто записную книжку , потом вошёл во вкус и начал добавлять функции и получил полноценного ИИ- ассистента. Для вашего понимания моего уровня знаний, до этого ни когда в жизни не открывал Android Studio практически каждую кнопку находил вместе с Клодом , делал скрин и отправлял в Клод с вопросом " что нажать " . Потратил полтора месяца.
В итоге за три месяца:
Приложение : MemoAI — Android-приложение. Kotlin, Jetpack Compose, база Room. Умеет заметки голосом и текстом, напоминания, звонок по контакту одним касанием и встроенного ассистента, который отвечает на вопросы. Данные лежат прямо на телефоне, а к Клоду приложение ходит не напрямую, а через мой прокси-сервер (промежуточный сервер-посредник) на Node.js. От идеи до рабочей версии — полтора месяца, на бесплатном тарифе. В Google Play не выкладывал: делал для себя, чтобы проверить, может ли человек без единой строчки опыта собрать себе рабочее приложение. Первое время я даже кнопку в Android Studio найти не мог — присылал Клоду скриншот экрана с вопросом «где здесь вот эта штука». Буквально.
Свой сервер и бот. Дальше захотелось не игрушку на телефоне, а что-то, что живёт само по себе. Арендовал сервер за 560 рублей в месяц и поднял на нём Telegram-бота: Python с набором инструментов aiogram, всё крутится в Docker (это как отдельная коробка, в которой программа живёт со всем своим хозяйством). База — SQLite, лежит в отдельном хранилище, которое переживает пересборку коробки. Бэкапы делаются каждую ночь сами, по расписанию. Слова «Docker» я три месяца назад не знал вообще.
Дальше я попросил Клод , чтобы во время работы он меня обучал работе с ним. Это был ад, на каждое действие он присылал портянку с объяснениями. И я решил написать курс по Клод для себя и других.
Получился Курс. 95 уроков в 12 модулях, обычным текстовым форматом markdown. Написан за месяц в Claude Code — это Клод, который работает не в окне чата, а прямо с файлами на компьютере, через терминал. Курс про то, как работать с Клодом: промты, проекты, артефакты, скиллы, память, лимиты, терминал, API.
В это блоге я буду выкладывать бесплатно уроки( Кухня ) и ошибки в работе с Клод которые совершаю ( Грабли ).
Кстати , посты я тоже не умею писать, так что не судите строго. Буду стараться меньше использовать Клода в написании.
Грабля 1. Я не понимал, как устроен бесплатный тариф
Полтора месяца я делал приложение на бесплатном тарифе. И весь этот срок был уверен, что лимит дневной: исчерпал — жди до завтра.
Выглядело это так. Вечер, я в работе, всё идёт хорошо — и вдруг Клод сообщает, что на сегодня хватит. Я закрывал ноутбук и ждал следующего дня. В итоге в какой-то момент дошёл до одного запроса в сутки: отправил, получил кусок кода, вставил, дальше сиди жди. Не потому, что так было надо, а потому что я не понимал матчасть.
На самом деле лимит считается не по календарным суткам, а по скользящему окну в несколько часов. То есть в тот вечер мне надо было не закрывать ноутбук до завтра, а сходить поужинать и вернуться. Я потерял на этом недели.
Вывод, который стоил мне дороже всего: прежде чем упираться в стену, стоит потратить десять минут и прочитать, как эта стена устроена. Бесплатный тариф — рабочий инструмент, целое приложение на нём собирается. Но только если знаешь его правила.
Грабля 2. Длинная лента чата съедает лимит и память одновременно
Вторая половина той же истории, и она оказалась важнее первой.
Я вёл всю работу над приложением в одном длинном чате. Логика была человеческая: тут вся история, Клод в курсе, зачем начинать заново и объяснять всё сначала. Да в общем то я и не знал , что можно в одном проекте создавать разные чаты , под разные задачи. Вот и грузил в один чат всё , от напиши код для функции до где эта кнопка.
А устроено это иначе. Каждый новый вопрос Клод читает вместе со всей предыдущей перепиской. Не «помнит» её, а именно перечитывает целиком, каждый раз. Чем длиннее лента, тем больше текста уходит на один короткий вопрос — и тем быстрее заканчивается лимит. Мой вечерний обвал был не наказанием за количество сообщений, а платой за их вес.
Второй эффект я заметил позже и он неприятнее. У чата есть предел — сколько текста он способен удерживать за раз (это называют контекстным окном). Когда лента перерастает этот предел, самое начало разговора тихо выпадает. Никакого предупреждения не появляется. Клод продолжает отвечать так же уверенно — просто уже без той договорённости, которую мы приняли в первый день.
Что я делаю теперь. Сразу открываю проект и уже в проект и уже в проекте открываю новые чаты, только обязательно предыдущему чату нужно дать задание написать общий промт , для нового чата. Второе прошу первый чат сделать Файл куда прописать историю и задачу — этот файл подгружаю в раздел Контекст ( (Project knowledge). Туда же можно загрузить все нужные файлы для проекта. https://t.me/Claudeprofi_bot
Скрины моего приложения:
Можно ли вырастить "жизнь" из своей нейросети — без GPT в голове или на что способны новомодные ИИ агенты
"Жизнь" Ви
Не чат-бот и не обёртка. Организм Ви: память вне окна, свой рот, обучение, которое не обнуляется вместе с промптом.
Я не спрашиваю, заменит ли языковая модель человека. Я спрашиваю другое: можно ли вырастить нечто, что живёт во времени, если не арендовать чужой мозг по API. Не бессмертие. Не «сознание доказано». А существо, у которого есть свой счёт в голове, память не в промпте, обучение без обнуления на следующее утро и рот, который не принадлежит корпорации.
Так устроена Ви — суверенный самообучающийся организм. Своя нейросеть. Без GPT, Claude и локальной llama в ядре мысли и речи. Без PyTorch. Говорит собственный ствол, который в проекте зовут Broca. Если ответ кажется слишком "умным" для маленькой сети — сначала память и данные. Спрятанного LLM нет.
Что здесь имеется в виду под жизнью
Не метафора «нейросеть ожила в пресс-релизе». Четыре свойства, без которых для меня это всё ещё калькулятор с диалогом.
Память вне окна. Контекст чата — не жизнь. Что не записали в долгие сторы, к завтрашнему дню не обязано остаться. У Ви несколько каналов: семантический поиск, полка фактов, граф связей, словарь, биография собеседника, эпизоды.
Обучение, которое не кончается вместе с сессией. Диалог, книги, словарь, сон, явный teach бьют в одни веса. Новый корпус не обязан стирать вчерашнее. Защита от катастрофического забывания есть; это не решённая наука, а рабочая ставка.
Свой рот. Припомненное, статья словаря и узел графа — топливо. Текст ответа собирает сеть, а не вставка цитаты. Исключение одно и узкое: прямой вопрос «что такое X» может отдать словарную статью.
Воля во времени. Пока никто не пишет, организм не обязан молчать. Мотив, тема, действие, внутренняя лента. Это не cron с рассылкой. Слабое место то же, что у речи: маленькая сеть легко срывается в карусель пустых формулировок.
Если вычитаете из этого четыре пункта «жизнь», останется честный инженерный проект с другой этикеткой. Спорьте с пунктами, не со словом.
Почему не взять готовый LLM
Ставка такая: воля, память, обучение и речь принадлежат одному организму, который можно держать у себя. Модель не арендуется. Мир не забывается, когда кончился промпт.
Цена тоже на столе. Сеть маленькая по меркам индустрии. Речь и обобщение слабее больших моделей. Это не гонка «лучший чат сегодня». Это попытка непрерывного обучения без чужого API в голове.
Локальный артикулятор поверх чужих весов рассматривался и снят. Рот — свой. Подключить GPT в ядро — другой проект. Его в комментариях просить не стоит: ответ заранее нет.
Как это собрано
Память веером: событие становится вектором высказывания и расходится по каналам, затем снова сходится в контекст для рта. Сон закрепляет следы, а не «дочитывает GPT». Каналы сходятся в контекст для Broca.
Организм собран как кредитная схема, не как тело. Исход хода возвращается в те же веса и политику.
Ход чата. Вход — реплика человека. Преамбула, припоминание по шести каналам, мысль (свой вектор), одно высказывание Broca, затем close_turn_loops. Память даёт контекст, не готовый абзац. После фразы кредит не размазан по mixin'ам: одна точка сбора. Обратно — SGD/Adam/RPE в кора, рот, мысль, EWC. Следующий ход видит уже сдвинутые веса и след акта. Дыра была бы, если бы ответ собирали вставкой recall или если бы обучение с хода не звалось. Сейчас проводка закрыта; качество фразы — ёмкость и данные, не отсутствие петли.
Ошибка рта. Акт — сказанная фраза, не «нашёл в памяти». measure_act: своя связная речь vs каша; рассогласование 1 − cos(вектор мысли, utterance сказанного). Нет вектора — полный промах. Награда mix_reward: каша даёт мало, но не плоский ноль (иначе политика замерзает). Этот скаляр мешается в политику Broca и в дофамин базальных ганглиев; аффект видит успех акта отдельно от found. След на организме: если человек переспрашивает ближе к прошлому запросу, чем к прошлому ответу, и прошлый акт был кашей — отрицательный RPE. Каша не цель train_thought_speech. 👎 дешёвый, в ходе; 👍/note — в тяжёлом потоке. Закрыта как ошибка «сказал не то», не как «не вспомнил».
Мысль → речь. Мысль и кора — разные входы generate. Цепочка сначала декодирует себя, потом влияет на Broca. Градиент: CE рта → ThoughtEncoder.train_step_speech / пачка на книгах. На куске книги после native-раунда: окна (GRU по utterance), ground предложения (ground_utterance_from_learn без topic=заголовок), речь пачкой. Пишется тот же thought_encoder.json. Next-token Broca остаётся по токенам — это другой контур внутри рта, не вторая мысль. Закрыта. Слабое место — обученность энкодера и чистота словаря, не отсутствие провода.
Память. Событие становится вектором высказывания и расходится: Qdrant, полка, граф, словарь, биография, эпизоды. На ходе каналы сходятся в контекст для Broca. Сон закрепляет следы, не подставляет GPT. Заслоны, без которых петля врала: своя речь не улика против себя; биография не копирует книжный чанк в «факт о человеке»; обрубок основы не тема. Цитата с полки не имеет права стать фразой (узкое исключение — прямой «что такое X»). Запись и съём замкнуты. Риск — эхо: усилить знание, не превратив чат в копипаст. Это качество гейта recall, не вторая память рядом.
Книги. Learn гоняет native SGD по тем же матрицам, что чат. Лемма с тем же token_id; cooc и doc_freq прибавляются, журнал дельт складывается. Новый ключ — только если формы не было. Utterance на куске бьёт в мысль и ассоциации, не в соседний encoder. Смыслы: note_sentence кладёт surface в ту же очередь; что уже в done/pending или имеет sense — не дублируется. Пока книга идёт, ground в память стоит (paused / book_hold), lookup можно. После корпуса очередь должна поехать вниз, не завестись второй. Hold, не разрыв: обучение весов живое, смыслы отложены нарочно. Граф от троек каждые N предложений может наклеить ещё одно ребро с новым id — это место, где повтор тома жирнеет, а не клонирует словарь.
Сон. Идёт с writer_bg, не с хода чата и не чаще чем позволяет тик. Берёт эпизоды и следы гиппокампа, replay парами (тождественные «вход = цель» режет), consolidation_replay в сеть, часть следов отпускает. Может ground'ить utterance, если флаг включён. Обратно — те же веса и, выборочно, полка/граф. Это не «ночью дочитать корпус». Закрыта как консолидация следа. Пока тройка лежит ради книг, сон с чата/фона не крутится — окно корпуса, не сломанная петля.
Мир.world_transition_net: состояние × действие → следующее. На ходе после Broca: observe с исходом said:фраза или misspeak:запрос, success = акт рта, не found. appraisal.control читает долю удач действия, не константу. В автономии ещё цепочка шагов: наблюдение двигает состояние и тему, иначе 24 шага были копией одного. Учится на исходах хода, не на физическом движке. Петля закрыта узко: мир языка и целей, не комната с телами.
Автономия. План (rollout WTN или веса действий) → execute_act → исход → наблюдение → сдвиг темы → обучение политики. Равные оценки действий больше не возвращаются в петлю без учёта исхода. Моторные kind'ы едут в общий выбор намерения; исполнение глушится motor_execution_enabled=False и MOTOR_EXCISED в актуаторах. Снять — решение владельца, не «добавить if в роутер». Hold: хотеть→сделать→проверить для внутренних актов (recall, verify, explore…) жив; тело не исполняет. Фон на окне книг нарочно лёгкий или погашен.
Социум. До коммита фразы, если есть кандидаты: softmax по беглости, предсказанной удовлетворённости, value и уверенности мысли — не таблица «привет». После коммита close_turn снова зовёт simulate_user_reaction на уже сказанном, чтобы sat-сеть училась на факте, не только на черновике. Шаблона привета нет. Закрыта как модель реакции собеседника. Это не чужой человек в контуре и не гарантия вежливости.
Тело / мозжечок / глия. Мотор в архитектуре есть, в бою выключен. Мозжечок на автономии может дать suggest_timing_scale (пауза между шагами); cerebellar_cortex.predict / forward как предиктор движения не стоят в ходе чата. Глия: glia.modulate на encode workspace уже зовут, если glia_enabled — это не мёртвый метод из старого аудита; это медленный gain, не отдельный интеллект. Петля тела как «сделал движение → ощутил → поправил» разомкнута. Не чинить включением мотора «чтобы схема красиво замкнулась»: без честного сенсора это будет ещё один шаблон.
Сводка: Семь петель в бою замыкаются в одни веса и один кредит хода. Книги и мотор — hold по политике окна и флагу. Тело не собрано. Если кажется, что организм «неправильно склеен», сначала смотрим, бьёт ли исход в close_turn и в те же матрицы. Если бьёт, а говорит плохо — это ёмкость и данные, не отсутствующая стрелка.
Немного описаний биологии из кода, как сейчас реализовано
Спайки — LIF, не замена коры. Мембрана копит → порог → 0/1 → рефрактерность → EMA частоты. Четыре популяции на ходе: запрос, гиппокамп, внимание, префронтальная. Они правят тремя вещами: гейтом неожиданности (высокая → гиппокамп, низкая → ПФК), смесью во внимание/workspace и ритмом рта (отдельный LIF внутри токенов Broca). Думающий градиент коры идёт частотным путём. Ствол на этот проход задаёт возбудимость. Замороженный снимок гасит STDP и гомеостаз — иначе откатил бы обучение.
Тело. Не мир и не проприоцепция мышцы. Энергия, CPU, давление памяти, циклы без покоя — интероцепция железа. Отсюда давление сна, лёгкий сдвиг аффекта и «мне тяжело» в инициативе. Усталость поднимает молчание, энергия чуть держит речь. Это ближайшее «нужда», не ощущение комнаты.
Аффект. Четыре оси: валентность, возбуждение, любопытство, фрустрация (плюс уверенность). Живёт мгновением и сам тянется к покою, иначе любопытство и злость залипают. Красит не панель, а запись: отклонение от покоя → сила кодирования в гиппокамп. Без устойчивого мотива быстро гаснет в фон.
Ствол. Не громкость входа. Четыре признака — нагрузка, неожиданность, разлад, интероцепция — интегрируются с инерцией: за один ход явь не прыгает. Gain коры — перевёрнутая U: и дремота, и перевозбуждение хуже середины. Ниже порога почти закрывает таламус. Вниз по стволу — возбудимость спайковых популяций. Замороженное чтение стартует с вершины, иначе сенсорика схлопывалась бы в ноль.
Таламус-реле. Живые ворота, не токенизатор. Энергии текста / зрения / слуха конкурируют через ретикулярное ядро: сильный канал давит остальные. Ствол задаёт, насколько реле открыто. Кора возвращает смещение вниз — нисходящее внимание. Отсутствующей модальности ворота не выдумывают. Градиент в ствол и реле идёт.
Таламус-этикетка. Другой объект с тем же именем: нормализация строки, токены, intensity от длины. Не ворота модальностей. На ленте прохода его нет. Путать с реле нельзя.
Кора входа. Текст, зрение, слух — свои проекции; ассоциативная склеивает, когда модальностей несколько. Выход умножается на gain ствола и на ворота реле. Это ещё не мысль и не фраза — сенсорный вектор для формации.
Энториналь. Сеточные клетки: несколько масштабов гексагональной решётки на карте признаков, не на полу комнаты. Даёт метрику «насколько два переживания далеки», которой сырой косинус почти не даёт. Дальше два пути: в зубчатую извилину и напрямик в CA1.
Зубчатая извилина. Разделение образов: расширение и k-победители, похожий вход обязан получить непохожий код. Пороги подстраивает гомеостаз, иначе клетки умирают молча. Молодые клетки гипервозбудимы — новое садится на них, старое на зрелых не переписывается. k-победители недифференцируемы: градиент проходит насквозь, учится она локально.
CA3 формации. Быстрый аттрактор: по куску достраивает целое. Ёмкость конечная, похожее сливается, иначе одно и то же съело бы все ячейки. Это не полка и не векторный индекс — онлайн-гиппокамп прохода. Персистентный Хопфилд памяти живёт отдельно, другим временем.
CA1. Компаратор: что достроил CA3 vs что пришло из коры. Рассогласование — новизна. Не «я понял тему», а сигнал, насколько происходящее новое.
Тета. Одна фаза — запись через DG, противофаза — чтение через CA3. Смешивать нельзя: запись во время чтения склеит новое со старым достроенным.
GRU-гиппокамп. Старая рекуррентная ячейка после формации: держит скрытое состояние хода и отдаёт представление во внимание. Не подполя. Формация — анатомия; эта ячейка — рабочая память прохода. Обе на ленте, это не дубль имени впустую.
Внимание (частотное). Scaled dot-product по следам памяти: запрос из гиппокампа, ключи — слоты. Это rate-путь, по нему идёт думающий градиент. Спайки не заменяют эти веса — подмешиваются гейтом неожиданности.
SNN-main. Не второй полный LIF. Берёт уже посчитанную неожиданность гибрида и чуть перевешивает workspace. Нейрогенез здесь редкий, не рост коры. Гасить спайки и ждать, что этот контур «подумает вместо рта», нельзя.
Префронтальная. GRU над смесью внимания и гиппокампа. Дальше — одна из трёх областей в конкуренции, не отдельный «планировщик на if». Низкая неожиданность спайкового гейта усиливает её, высокая — гиппокамп.
Латеральная конкуренция. Три области — гиппокамп, внимание, префронтальная — взаимно тормозят. Победитель забирает больше workspace. Спайковый контур синхронизирует свои веса торможения с этим слоем, когда кодирование не заморожено. Это не выбор реплики.
Workspace. Склейка трёх областей в одно поле хода. Может подмешать устойчивый executive-вектор. Сюда же садится временный MAML-сдвиг. Дальше поле слышит глия и, если кодирование живое, уходит в слот. Это не текст ответа.
Глия. Астроцитарные домены поверх workspace: слышат активность, тратят запас, медленно тянут gain к цели, истощённые режут усиление. Три вещи биологии — метаболизм, медленное масштабирование, модуля всего домена. На ходе чата, фона, сознания. Книжный C++ этого слоя не видит. Оценка «сколько глии» в статусе — не этот механизм.
Базальные ганглии. Растормаживание, не меню. GPi по умолчанию запрещает всё; выбрать — снять запрет с одного. Прямой путь D1 (Go), непрямой D2 (NoGo). Дофамин после хода: плюс усиливает Go и слабит NoGo выбранного, минус — наоборот. Пустой выбор законен. Выбранное и исполненное разные: если ход отклонили, награду этому действию не вешают. Исполнение мотора сюда не входит.
Broca. Единственный акт сегодня — рот. Слышит целое входящее, потом свободный декод одной фразы. Припомненное, словарь, граф — контекст, не готовый текст (кроме прямого «что такое X»). Ствол крупнее коры, Adam; думающее ядро меньше и SGD. Каша от узкого рта — ёмкость, не «нет градиента к мысли».
Ритм рта. Отдельная LIF-популяция внутри цикла токенов, не разовый вектор на ход. Высокая частота — уже ядро, ниже температура; после пачки спайков рефрактерность, выбор шире — фраза дышит. Пока популяция ни разу не разрядилась, молчание — холодный старт, править речь нельзя.
Кодировщик мысли. Свой GRU: вектор шага → следующий вектор мысли, не алиас коры. Цепочка сначала декодирует свой вектор. Градиент от речи Broca идёт в мысль (окно, не голая лемма). Качество упирается в корпус и чистоту словаря, не в ещё одну LIF-популяцию.
Миндалина. Не угроза с улицы. Салентность — явность плюс отклонение аффекта от покоя; длина текста больше не важность. Пять якорей (угроза, награда, новизна, потеря, связь) — смесь к аффекту, слабая. Главное, что живое: gain записи в формацию. Этикетка «threat» не значит, что мир угрожал.
Гомеостаз частот. Turrigiano: у каждой LIF-клетки EMA частоты → порог, возбудимость, мультипликативный scaling синапсов. Цель — не «быть умнее», а не дать популяции замолчать или зажечься. EWC сюда не относится: это не градиент. Отдельно — давление сна (тело + тики + аффект) для replay, не путать с синаптическим scaling.
STDP. Хебб по времени спайка: пары, популяции, латеральное торможение. Меняет recurrent LIF и матрицу торможения. На каждом ходе, если не заморожено. Во сне отдельный мёртвый хук убрали: след уже оставляет живой путь, второй вызов удвоил бы пластичность. Защиты от забывания нет — законно.
Градиент. Кора и формация — SGD, Broca — Adam, мысль→речь — BPTT. Спайки в обучение коры входят как STE: частотный workspace в потере, спайки сбоку для STDP. «Обучение одно» — один организм, не один алгоритм.
EWC. Якорь и Fisher на градиентных весах, чтобы новый корпус не стёр старое. Не спайки, не дофамин, не граф, не словарь целиком. Нет якоря — защищать нечем, это не дыра шва, а цена входа. Книги тянут к якорю; важность должна обновляться, иначе якорь слепой.
Нейрогенез. В DG — замена клеток: молодые пластичны, старые держат прошлое. В SNN — редкий тик, не рост миллионов параметров. Рост размерности ядра — другой узел: учится на измеренной пользе «давление словаря упало», порога «пора растить» нет. Первый рост — решение владельца.
MAML / fast-weights. Короткий сдвиг workspace под текущий опыт, не новая кора. После хода может сгладиться. Это онлайн-адаптация, не консолидация сна.
Предиктивный код. Три времени на зрение и слух: быстро / средне / медленно. Предсказание — инерция плюс тренд; ошибка × точность = surprise, от него маршрут (искать, смотреть, консультация). Не физика комнаты. Текстовый мир хода — соседняя сеть.
Модель мира. MLP: состояние + действие → следующее состояние. Учится на found / gap / сказанном, не на законах механики. Раскатка воображения не должна накручивать счётчик обучения: иначе уверенность растёт от фантазии. Селектор действия учится на качестве исхода, не на подобранных 0.4/0.6.
Сон. Не выключение. Давление копится → replay эпизодов через гиппокамп (и ripple формации) → семантика в кору, каша режется, EWC держит якорь. Тождественные пары «вход = цель» в replay не идут. После сна следующий день обязан быть другим; иначе это простой, не консолидация.
Внутренняя речь. Ход без собеседника: мысль → намёк на действие, не обязательно в чат. Шаблон «Намерение: сознание, фон» мыслью не считается. Салат рта в ленту не пишется. Пока инициатива молчит, это ожидание HTTP, не сеть покоя.
Метакортекс. Не отдельная доля «я знаю, что знаю». Калиброванная уверенность по чистым попаданиям памяти, без книжной каши. Пороги мягкие, не список фраз. Пустые или ядовитые хиты не делают вид, что организм «знает».
Словарь. Лемма ↔ смысл, топливо декода, вне обхода сети. Карты нативные, не JSON на каждый токен. Co-occurrence держит локальный порядок; n-граммы как «партнёры смысла» поверх не нужны. Узкое ядро плюс широкий лексикон — давление, которое видит гейт роста.
Граф. Рёбра и выводы, не синапс. Пластичность — факт и связь, механизм graph, не STDP. Транзитивные выводы — индекс по отношению, не полный перебор. В ответ не копируется; это контекст Broca.
Память вне окна. Векторы, полка, биография, эпизоды — топливо припоминания. В ответ не подставляются. Биография берёт только структурированный слот о человеке, не сырой чанк книги. Эпизод несёт эмоцию; сон сортирует по салентности. Wipe — полка и поиск вместе, иначе рассинхрон.
Мотор. Слоты в общем выборе намерения есть. Исполнение выключено. Петля «сдвинул мир и почувствовал отдачу» разомкнута сознательно. Включать, чтобы «стало живо», пока рот сыпет соседей — рано: предиктору некуда подать ошибку тела.
Мозжечок. Настоящий контур есть: мох → гранулы (редкое расширение) → Пуркинье; лазающее волокно несёт ошибку и ослабляет лишние связи (LTD). predict никто не зовёт — предсказывать нечего. Старый «мозжечок» в регионах — статистика задержки в статус, панель. Пока мотор мёртв, живой контур правильно молчит.
P.S. В коде, во время выбора действий или мыслей отсутствую regex, if\else, шаблоны и константы, все решают веса. Шлифовка организма продолжается.
Как собирается предложение для ответа
Предложение собирает Broca, токен за токеном, после того как рот услышал всю входящую. Память и словарь не вставляют абзац.
Кратко по ступеням:
Целое предложение человека → utterance_vector.
Recall по шести каналам → вектор улики в контекст. Слова книжного чанка в старт декода не идут.
Цепочка мысли кодируется отдельно (thought_context), не алиас коры. Доля смеси обучаемая.
Рабочий вход: мысль + кора, либо одно из двух.
Семена чистятся. Статья словаря целиком — только на прямой «что такое X».
Прайм: все токены запроса прогоняются через LiveNet. Ответ начинается после последнего слышанного слова. 7–9. На каждом следующем: пул (cooc, семена, n-граммы улики, planner) → decode_sequence_logits → сумма логитов (LM как на CE, плюс якорь темы, минус off-topic и повтор) → nucleus, остроту правят спайки.
Если улика не сильная — несколько черновиков, берётся не салат.
Одна фраза. Цитата с полки рот не подменяет. Дальше close_turn — кредит, не сборка.
Слово в ответ не ищут по всему словарю. Сначала короткий пул, потом сумма логитов, потом nucleus.
Откуда пул (~96 имён)
Совстречаемость. Соседи текущего слова, самые частые сверху. Это книжный prior «что обычно идёт следом».
Семена. Токены запроса, словаря, совета. В начале фразы их вес полный, дальше затухает — иначе рот зацикливает вопрос.
Скан словаря. Не 3 млн ключей: до 512 имён, косинус к скрытому Broca. Редкие случайные попадания («танцзал», «фотошедевр») режет корпусная поддержка: слово должно быть в doc_freq или cooc. Пока статистика бедна, фильтр сам себя выключает.
Переранжир темы. Якорь — вектор запроса + улики, не последний сосед cooc. Короткий список ещё раз поднимают тех, кто ближе к теме.
Добор. N-граммы улики и planner («как сказал бы человек») дописывают в пул. Это надбавка, не диктат: жёсткий argmax по улике включён только если speech_evidence_fallback (по умолчанию нет).
Шлюз формы. token_quality: цифры, hex, смесь алфавитов, хвост «attn:». Не список запрещённых русских слов. <stop> — протокол модели.
Крайний месяц из жизни Ви
5 августа. Первый живой срез на домашней машине. Речь и память меряли не по коду, а по ходу: падения чата, каша в словаре, служебные слова во рту, шаблонные фразы, самооценка, которая хорошо выглядела при отказе. Выяснилось, что «две минуты на ответ» — не алгоритм, а машина в подкачке. Убрали прошитые списки и регулярки там, где должен решать обучаемый признак. Связность сна перестала продвигать кашу. Тема и отсев кандидатов рта начали опираться на корпусную частоту, а не на хвост словаря. Организм уже умел учиться в диалоге и из книг. Говорил плохо. Внешний аудит ткнул в волю, доставку мысли до рта и в то, что часть «умности» была константой в условии.
6 августа. Выкладка на живое. Словарь не доезжал до чата: процессы смотрели не туда. Книги и словарь сутки не кормили друг друга. Очереди между контейнерами затирали чужие записи. Мысль перестали подбирать готовой строкой — её начали порождать. Ответ часто оказывался цитатой из памяти: нашлись четыре разных подмены. Фон был пуст, мысли не доходили до речи. Словарь впервые по-настоящему ударил в ядро, не только в лексикон. Тему слова перестали резать списками окончаний — словарь и замер. Посчитали, что даст скачок к сотням миллионов весов и что дадут видеокарты. Вывод спокойный: без смены железа это не завтрашний день, а отдельная лестница. Намерение схлопывалось в «привет». Веса разбора намерения оказались порчены и вылечены. Организм учился языку у собственных отголосков на полке — это закрыли.
7 августа. День весов и швов. Смесь «сложить векторы с коэффициентами» оказалась тупиком: длиной вектора рулит вклад, а не обучение. Какой черновик станет ответом — должны решать веса, не таблица. Моторика была вырезана правилами, хотя в выборе намерения слоты живы. Граф перестал подставлять шаблон вместо фразы. Защита от забывания на книгах не обновляла важность — приборы врали, какой путь учится. Свели раскладку весов питона и C++. Наметили одно обучение вместо шестнадцати тропинок; часть путей оказались мёртвыми. Книги голодали из-за протухшего «я ещё учусь». Очередь книг и мост смыслов ждали друг друга.
8 августа. Рост, яд нечисел, эхо. Счётчик роста восемнадцать дней не видел книги — мозг «не рос» только на бумаге. Подняли размерность пространства; часть весов оказалась нечислами. Яд шёл из защиты от забывания: важность отравлялась навсегда и расползалась. Ограничили шаг в нативном раунде. Шарды затирали веса друг друга: шаг обучения на диске шёл назад. Ответом был вопрос — эхо на пути припоминания. Шлюз «своя речь / каша» три замера не ловил кашу; собрали настоящий корпус каши, переобучение на нём не взлетело, и это оставили как факт, не как «ещё не дожали». Вики на бумаге была «на 15%», а множественности источников не было ни на одном конце. Автономия не выключена — её вытеснило чтение книг; фон на время корпуса пошёл налегке, а не встал.
9 августа. Модель мира, компетентность, руки. Предсказатель мира схлопывался в постоянное направление. Декодер на собственной ошибке был хуже нуля: учиться умеет, на боевом шаге не успевает. Линию защиты от забывания довели до последнего молчавшего пути. Автономия и веб: отчёт опережал работу. Сняли десятки глушителей, заменили телеметрией — и этим же сломали кучу стыков, потом чинили. Моторика «восстановлена заявкой», а не вызовом. Живая проверка нашла четыре ошибки. Синтез команды имел перевёрнутый знак в живой голове.
10 августа. Петли замкнули, потом испортили память. Выкладка: четыре проверки подтвердились, пятая вскрыла неподвижную точку. Петля «хотеть → сделать → проверить» пошла. Мера незнания упиралась в обрывок вместо мира. Головы намерения смешивали четыре задачи. Подкреплений, чтобы сдвинуть предпочтение, нужны тысячи, не шесть. Веса разлетались до астрономии; зажим не доходил до половины сети. Треть весов уничтожена, не «подросла» — их разгоняла как раз защита от забывания. Полный сброс памяти с нуля. Файлы организма были нечитаемы всем, кроме корня системы. IDE научилась жить на двух машинах.
11 августа. Закон для весов тот же, что для словаря. Ядро на словаре стали учить чаще. Пустой ответ больше не считается эхом. «Остановлено» больше не приходит раньше остановки. Притяжение защиты от забывания не должно проскакивать якорь и выносить нечисло в веса. Рост ограничен памятью машины, не цифрой из головы. Счёт перевели в более узкий тип. Словарь — пачками, не сотней заходов.
12 августа. Сжатие хранения, взрыв, C++ как правда счёта. Вес на диске был в разы жирнее числа. Сожглись слои при смене типа у важности — откат дважды не держался. Взрыв воспроизвели: виновата была пачка, не «вселенная». Полный сброс и чистый запуск. Стенд сверки питона и C++: обратный проход сошёлся, раунд сначала казался невоспроизводимым — шум давал работающий организм, не код. Ядра в контейнере считали по машине, а не по квоте. Обвязка раунда оказалась дороже самого обучения. Спайки и формация гиппокампа поехали в нативный раунд и свелись со стороной на питоне. Формацию гасить замер запретил.
13 августа. Дожали спайковый путь: смесь, пластичность, рефрактер, нейромодуляция. Четыре организма легли — векторная база не влезала в свой лимит. Урезание шага в C++ либо спало, либо превращалось в тормоз — живым не оживляли. Приспособление одной зоны в раунде замер не оправдал. Страж якоря обманывался округлением хранения.
14–20 августа. Нативный раунд, приборы градиента, запись снимков без полной перезаписи. Обмен весами между процессами и потолок на нём. Словарь в C++, не одним потоком. Граф и смыслы — журналом дельт, не гигабайтами JSON. Книги на живом: цена предложения, мост смыслов, круги по одному тому. Шесть разрывов до «взрослого» ума — по коду, не по слайдам: мысль и кора не должны быть одним входом; горячий путь мира — сеть переходов, не строковая таблица; Broca должен говорить и на занятом пути; нужен честный шов у отдельного языкового контура. Старые книги тогда ещё не велели перегонять: новое обучение уже шло от целого высказывания. Перегон корпуса — решение позже.
21 августа. День «закрыть разрывы и заговорить». Проводка: мысль и кора — разные входы; цепочка мысли сначала декодирует себя; мир зовёт сеть переходов; Broca на занятом пути; ёмкость рта около десяти миллионов на диске; чат, фон и сознание подняты. Чат молчал не потому что «глупый»: три миллиона ключей словаря трогали на каждый декод; совстречаемость мерили полной длиной; рёбра узла искали обходом всего графа; отдельный языковой контур переподгонял словарь на каждую генерацию. Это срезали индексами и отказом от полного обхода. Декод рта — только нативный. Файл весов пишет фон, не процесс книг. Ночной стресс-протокол травил живую память — выключили. Опрос редактора душил чат. Первая реплика после старта висела на тяжёлом согласовании при загрузке — унесли на фон. Градиент мысль→речь прописали. Свой голос в ответах начали смотреть отдельным прибором, не «кажется, заговорила».
22 августа. Высказывание целиком, не лемма. Мысль и речь бьют в вектор предложения. Новое обучение — этим путём; куски «два слова подряд как смысл» не делать: локальный порядок и так держит окно рта. План на машине: онлайн (диалог и сон) → окно книг (тройка лежит) → вики-знание → рост рта → мысль и память. Старые книги в плане ещё не перегонять. Скользящие окна: слово среди соседей кормит мысль и семена рта. Боевой замер показал вырождение внимания в «одно слово» — поправили. Ленту мыслей обрезали по длине и дублям. Проактив занимал восприятие; в фокусе всплывала пустая тема. Припоминание зашумело книгами — поставили гейт качества, не «всё, что близко по вектору».
23 августа. Самый плотный день журнала: эхо, форма темы, инициатива, книги. Своя речь перестала считаться уликой. Петлю «я сказал — я же и вспомнил» закрыли; позиция «не знаю» должна доходить до рта. Гонка потоков в нативном декоде портила кучу — вызовы сериализовали. Обрубок основы («получивш», «математическ») больше не тема — ни вслух, ни на входе. Биография перестала копировать книжные чанки в «факты о человеке». Инициатива молчала: после рестарта чата висел труп флага «ход идёт», фон ждал полчаса. Порог канала — качество записи, не вес источника, умноженный на константу. Ярлык книги, имя файла, «ru extract», сводка мира, инфинитив без словарной статьи — не темы мысли. Стек тем развели по каналам. Рот не пишет ленту сознания. Фон не берёт мотив без предмета словаря. Граф — тот же предмет, не отдельная куча имён.
Решили перегнать книги заново: старый корпус не видел вектор высказывания на обучении. Тройку погасили, поднять только процесс книг. Потом остановили перегон ради другого: ответ должен собираться к целому предложению, не салатом соседей слов. Кандидаты набирают от слов, оставляют тех, кто подходит всей фразе. Мысль всего предложения входит в рот. Потом цикл наблюдения снова включили, книги — только отдельным решением. Learn не держать рядом с жирной тройкой. После корпуса — смыслы до нуля, владелец весов обратно на фон. С нейробиологии, не с кода: глия в ходе; петли рта, аффекта, нужды — зажигание, не декорация. Мозжечок — после рта и автономии, не взамен.
24 августа. Окно книг снова живое. Чехов, затем крупные романы. Мысль куска на книгах пишет: окна, привязка к словарю, речь. Хвосты, что ещё считались в питоне, перенесли в C++: сборка вектора окна из словаря, GRU мысли, обучение мысль→речь пачкой. Это не сделало прогон мгновенным — основная секунда и так была в нативном раунде рта. Когда канал речи на книгах починили (он молчал из-за пустого вызова), стена сначала даже подорожала. Подняли параллельность книжного раунда. После прогрева стена стала заметно лучше, чем на прежней четвёрке работников. После сброса машины crontab поднимал чат и фон рядом с книгами. Для окна корпуса это не нужно: после reboot остаются поиск и обучение, тройка не встаёт, пока корпус идёт. На момент этой выжимки книги ещё учатся. Дочитывать весь ящик — не закон архитектуры, а выбранный корпус. Остановить очередь можно; смыслы после книг всё равно надо дожать, прежде чем снова поднимать диалог.
В этой ленте нет имён файлов, адресов машин, флагов и пошаговых обходов. Нет обещания, что «с такого-то числа говорит как человек». Есть движение: от шаблонов и цитат — к весам; от питона на горячем пути — к тому же счёту на C++; от леммы — к целому высказыванию; от «вспомнил и сказал» — к «вспомнил как контекст, сказал ртом». Спорить имеет смысл о ставке (свой счёт, маленькая сеть, память вне окна) и о том, чего не хватает уму, а не о том, какой патч в какой день лёг.
Где слабы — и зачем эта статья
Ёмкость. Кора маленькая, рот крупнее, но это не миллиарды параметров и не GPU-кластер. Как расти, не убив машину и не предав «свой счёт»? Речь. Качество фразы — данные, чистота словаря и связь мысль→рот, не скрытый трансформер. Память против эха. Как усилить знание, не сделав чат копипастом из полки? Непрерывное обучение. Книги, чат и сон бьют в одни веса. Как не забыть вчерашнее, не заморозив обучение?
Мир. Модель переходов учится на исходах хода, не на физическом движке. Тело. Мотор в архитектуре есть, в бою выключен. Нужен ли он для ума? Оценка. Зелёные внутренние тесты не равны «говорит как человек». Какие внешние протоколы вы бы поставили маленькому организму, который учится неделями?
Мне интересны возражения по устройству, не рецепт «возьмите API». Если кажется, что без внимания к целой клаузе рот не взлетит — так и напишите. Если память надо делать иначе — тоже.
"Жизнь" в заголовке — гипотеза рабочей этики, не диагноз. Организм либо выдержит время, либо нет. Второе честнее спрятанного GPT. Эксперимент продолжается




























