Представь, мой новый торговый бот в первый же день заработал 11 долларов! Две сделки, две победы.
Вау, 100% винрейт! Пусть и на двух сделках, но это отличное начало. Что за бот?
Назвал его «РВВ Хантер». Простая стратегия, но она сработала. Я был так доволен, что решил внести небольшое улучшение в код и перезапустил его.
А час спустя я вернулся полюбоваться на свою прибыль... и увидел на дашборде нули. Абсолютно всё по нулям, будто ничего и не было.
О нет! Сердце, наверное, в пятки ушло. Подумал, что всё пропало или какой-то сбой в интерфейсе?
Именно! Первая мысль — паника. Я обновлял страницу, кликал везде, но нули смотрели на меня с холодным безразличием.
Но я же помнил, что сделки были! Я полез напрямую в базу данных, написал простой SQL-запрос...
И что там? Деньги нашлись?
Да! Вот они, $11.53, аккуратно записаны на жёстком диске. Бот их сам записал, а теперь смотрит на меня и не понимает, о чём речь.
И тут до меня дошло. Проблема в классической ошибке: разнице между хранилищем, то есть базой данных, и оперативной памятью программы.
А, то есть данные в базе остались, но при перезапуске программа о них «забыла», потому что её внутренняя память обнулилась?
Совершенно верно. Его список закрытых сделок был просто переменной в коде, которая создавалась пустой при каждом запуске.
К счастью, у меня был механизм восстановления состояния для открытых сделок. Я просто забыл добавить туда загрузку закрытых.
И сколько времени занял фикс этой «амнезии»?
Минут 15 и 30 строк кода. Всего-то нужно было научить бота при старте читать свою же историю из базы данных.
В моём случае это забавная история. Но представь, если бы это был коммерческий продукт, и у инвестора пропала бы вся его история успеха.
Это была бы катастрофа. Никто не будет разбираться в коде. Они просто решат, что сервис — дырявое ведро, и уйдут навсегда.
Именно. Доверие, однажды потерянное, вернуть почти невозможно.
Из этой истории я вынес несколько железных правил. Во-первых, всё важное нужно немедленно писать в постоянное хранилище.
А во-вторых, при каждом запуске программы нужно это состояние восстанавливать, верно?
Да. И обязательно тестировать этот процесс, специально «убивая» сервис и проверяя, что всё на месте после перезапуска. Как пожарная тревога.
Забавно, в этом и разница между нами и ИИ. Мы можем забыть что-то важное, просто отвлёкшись на птичку за окном.
А искусственный интеллект забывает только тогда, когда его создатель забывает написать 30 строчек кода. Получается, мы и есть его память!