С чего я начал spendme: подготовка к реализации
Не с «Claude, сделай мне учёт».
Соблазн Но хотелось. Скачать пару выписок из банка, закинуть в агента, увидеть табличку, порадоваться.
Обычно так в пет-проектах и выходит: быстрая первая версия, а потом долго и мучительно что-то править. И орать в монитор. Потому что на втором банке другой формат выписки, другие поля, свои переводы выглядят как расходы, мерчанты плывут. Первый подход уже не работает, а тянет всё на дно.
И то, что затевалось как решение конкретной задачи, из приятного времени превращается в борьбу с агентом.
Сырьё
Я пошёл иначе. Сначала долго разгонял идею с нейронкой. Восемь тем. Как выгрузить историю из Яндекс Пэй, Совкомбанка, Озона, Т-Банка. Какой пайплайн. Где справочники и переводы между своими счетами. Что вообще за продукт: не трекер, а локальный помощник. Без серверов, живёт в агенте внутри IDE.
Около тысячи строк в чате.
Это не статья и не ТЗ. Это сырьё: ограничения, страхи, хотелки, куски чужих и своих схем, формулировки, которые ещё не сложились в пазл.
Когда работаешь один, вот это сырьё и есть мякоть. Если в чате только «хочу систему», агенту не из чего сделать результат: придётся додумывать без контекста и он выдаст типовое.
Не то, что ты хотел.
Но и в чистом виде сырьё отдавать нельзя. Полезного много, готового продукта ноль, а внутри противоречия. В одном месте у Яндекс Пэй нет массовой выгрузки, в другом: выписка за период. Тут пайплайн из трёх слоёв, там из пяти. Агент не «разрешит противоречие». Он закрепит случайную ветку.
Заготовка
Заготовка это не «ещё один документ». Это операция: вытащить из сырья то, без чего агенту нельзя кодить. Раскладываешь тысячу строк по кучкам, не сам, просишь агента. Но надо понимать, что и куда.
Концепция. Локальный помощник: собирает выписки, приводит к одному виду, отвечает про траты, долги и накопления. Без облака.
Функции первой версии. Не wishlist на год, а список «без этого это не то, что мне надо»: загрузка выписок из нескольких банков, единый реестр операций, отделение переводов между своими счетами от расходов, категории, месячный обзор, ответы на вопросы по данным.
Техника, которая из болтовни сама не встанет ровно. Откуда данные и в каком виде. Где сырой мерчант, а где справочник. В каком порядке: сначала «перевод или расход», потом категория. Иначе агент начнёт нормализовать в трёх местах и назовёт тратой перевод самому себе.
Открытые вопросы, не «подумаем потом», а то, без чего писать код рано: лежат ли реальные образцы выписок по каждому банку (без файлов будет фантазия, а не адаптер); есть ли полный список своих счетов и карт; куда можно отдавать текст операций (у меня жёстко: только локально).
И отдельно: противоречия закрыть решением. Яндекс Пэй: выписка за период, а не справка по одной операции. Форматы: один счёт нормально отдаёт CSV, остальные PDF. Счетов семь.
Первый коммит spendme был про это.
Не про табличку расходов, а про контракт между мной и агентом: концепция, функции, схемы, вопросы, разрешённые противоречия, чеклист до старта. Дальше можно ковать.
Три вечера по 2-3 часа, ни разу не ругался с агентом :) Первый: заготовка. Второй: ядро, разобрать выписки, собрать единый список операций, посчитать срезы. Третий: отладка, когда цифра начинает спорить с жизнью. Этот пост про первый.
Бюрократия или нет?
Со стороны выглядит как возня с бумажками. Если мерять прогресс кодом, вечер пустой. Но пока знание в голове, агент им воспользоваться не может. Артефакты в репозитории это способ переложить его в доступную ему форму.
Ты не пишешь бумажки, ты делишься контекстом.
Особенно это важно, если ты сам с кодом не работаешь.
Заодно проверяешь сам себя: это тот продукт, который я хочу получить?
Вердикт
Сначала вытащить из головы сырьё, потом превратить его в контракт, и только потом отдавать агенту на реализацию.
Иначе получишь быстрый старт и долгую войну за поведение, которое так и не зафиксировал.
И два разных продукта: один в голове, второй в чате с агентом.