Коротко
Что такое localhost простыми словами?
Localhost - зарезервированное имя, по смыслу «этот компьютер». Когда браузер идёт по такому адресу, запрос не уходит в интернет: он разворачивается внутри твоей же машины и попадает в программу, которая на ней запущена.
Аналогия из офиса - внутренний номер телефона. Добавочный 214 соединяет с бухгалтерией в твоём здании. Если продиктовать «214» партнёру из другой компании, он дозвонится в свою бухгалтерию или никуда.
Со ссылкой так же. Пришлёшь коллеге localhost:3000 - его браузер постучится в его собственный компьютер. Там твоего сайта нет, и он увидит ошибку «не удаётся подключиться».
Именно для этого localhost и придуман: чтобы собирать и смотреть сайт у себя, не выкладывая его в сеть. Поэтому, когда агент собрал тебе прототип и дал такую ссылку, всё идёт по плану: это репетиция на твоём столе.
Почему сайт гаснет вместе с окном агента?
Ссылка гаснет, потому что вместе с окном останавливается программа, которая её обслуживала. Сам сайт - это набор файлов. Чтобы браузер их увидел, нужен посредник, который принимает запрос и отдаёт страницу. Такой посредник называется веб-сервер.
Когда ты просишь агента «запусти, я посмотрю», он выполняет команду вроде npm run dev. Она поднимает сервер разработки, и в окне появляется строка с адресом. Этот сервер - дочерний процесс окна: он запущен изнутри и зависит от него.
Механизм старый, ещё со времён терминалов, подключённых к большим машинам по линии. Когда линия обрывалась, система посылала запущенным с неё программам сигнал «отбой», и они завершались. Закрытое окно терминала сегодня работает так же.
На обучениях этот вопрос звучит почти дословно одинаково: закрыл агента, и ссылка перестала работать. Это ровно то поведение, которое заложено в устройство. Ничего не сломалось, проект лежит в папке целиком.
| Что ты сделал | Что с сервером | Что с проектом |
|---|---|---|
| Закрыл окно или приложение агента | остановился | файлы на месте |
| Закрыл вкладку браузера | работает дальше | файлы на месте |
| Перезагрузил компьютер | остановился | файлы на месте |
| Закрыл крышку ноутбука | засыпает вместе с системой | файлы на месте |
Порт: номер двери в адресе
Порт - это номер, по которому система понимает, какой из запущенных программ отдать запрос. Один компьютер - одно здание, порты - двери в нём. За дверью 3000 может ждать твой сайт, за дверью 5173 - другой проект.
У привычных сайтов номера в адресе нет, потому что он подразумевается. Для обычного веба это 80, для защищённого 443, браузер подставляет их сам. У сервера разработки номер нестандартный, поэтому пишется явно.
Разные инструменты берут разные двери. Next.js по умолчанию открывает сайт на localhost:3000, Vite - на localhost:5173. Какой инструмент под капотом у твоего проекта, агент скажет одной фразой.
Главное правило про порты: одну дверь может занимать только одна программа. Если номер уже отдан другому процессу, система откажет новому. Дальше зависит от инструмента. Vite, например, сам пробует следующий свободный номер и пишет новый адрес в окне. Отсюда частая ловушка: вчера сайт жил на 5173, сегодня на 5174, а в закладке браузера старый адрес.
Почему первый запуск идёт минуты, а следующие - секунды?
Долгий первый запуск - это установка, а не сам запуск. Проект, который собрал агент, стоит на десятках чужих готовых библиотек: для интерфейса, для базы, для работы с датами. При первом запуске они скачиваются из интернета в папку проекта, потом код собирается в то, что понимает браузер.
Дальше библиотеки уже лежат на диске, и запуск сводится к подъёму сервера. Это похоже на переезд в новый офис: в первый день завозишь мебель, а потом просто открываешь дверь утром.
На обучениях был показательный случай: запуск рабочего прототипа по одной команде каждый раз занимал около пяти минут. Сам проект при этом был в порядке и уже приносил пользу в работе. В такой ситуации первым делом стоит проверить, не ставит ли команда запуска всё заново каждый раз. Если ставит, хватает одной просьбы к агенту: вынеси установку в отдельную команду, которую я запускаю только после обновлений, а обычный запуск пусть просто поднимает сервер.
«Разведи установку и запуск. Установку я буду делать только после твоих изменений в зависимостях. Обычный запуск должен только поднимать сервер и печатать адрес. Объясни, какая команда за что отвечает».
Окно открыто, а страница не открывается: четыре причины
Открытое окно ещё не значит, что сервер жив. Программа могла упасть через секунду после старта, а окно осталось висеть с её последними словами. Поэтому первым делом читаем, что написано внизу окна, а не перезапускаем всё подряд.
| Что видишь в окне | Что это значит | Что делать |
|---|---|---|
| Красный текст, слово error, строка вида «at ...» | сервер упал с ошибкой | скопировать текст целиком и отдать агенту |
| Адрес с другим номером, например 5174 вместо 5173 | прежний порт занят, сервер ушёл на соседний | открыть новый адрес из окна |
| Адрес тот, но в браузере открыт другой | опечатка или старая закладка | скопировать адрес из окна, не набирать руками |
| Сайт открылся, но чужой или старый | запущен другой проект из соседней папки | спросить агента, из какой папки идёт запуск |
Четвёртая причина путает сильнее всего. Если на компьютере несколько проектов, старый сервер мог остаться жить на 5173, а новый сел на 5174. В браузере ты видишь вчерашнюю версию и думаешь, что правки агента не сработали.
Про само умение читать окно я подробно писал в материале про терминал для непрограммиста. Хватает двух-трёх последних строк.
Сообщение агенту: три факта вместо «не работает»
Хорошее сообщение про упавший запуск собирается за минуту.
Скопируй адрес из браузера
Целиком, с номером порта. Так агент сразу увидит, совпадает ли он с тем, на котором поднят сервер.
Перепиши, что показывает браузер
«Не удаётся подключиться», белая страница, страница с ошибкой - это три разных диагноза.
Скопируй последние строки окна
Текстом, а не пересказом. Если там ошибка, она почти всегда называет причину.
Попроси проверить, что запущено
«Проверь, какие серверы сейчас работают на этом компьютере и из каких папок». Агент это видит за пару секунд.
Почему пересказ ошибки ломает починку и какие строки копировать, я разбирал в материале про то, как принести агенту ошибку. Там же про секреты, которые иногда уезжают в чат вместе с логом.
Как запускать проект без окна агента?
Держать открытым окно агента ради того, чтобы смотреть на свой сайт, неудобно. Выход простой: попросить агента один раз сделать тебе кнопку.
На Mac это может быть файл, который открывается двойным щелчком и сам поднимает сервер. На Windows - такой же ярлык. Внутри та же команда, что запускал агент, только запускаешь её ты, в отдельном окне. Правило прежнее: сервер живёт, пока открыто это окно.
Я видел на разборах проектов типичную сцену: человек открывает свой прототип, чтобы показать его, а страница не грузится. Проект цел, просто сервер закрылся вместе с прошлой сессией агента. Одна просьба «подними снова» возвращает всё на место, а ярлык снимает этот вопрос насовсем.
Попроси агента заодно дописать, куда смотреть, если запуск не удался. Пусть ярлык после старта печатает адрес крупно, а при ошибке не закрывает окно сразу. Иначе причина исчезнет вместе с окном.
Чем локальный запуск отличается от выкладки в интернет?
Ярлык решает проблему «чтобы посмотреть самому». Показать сайт коллеге или клиенту он не поможет: адрес по-прежнему ведёт в твой компьютер. Постоянную ссылку даёт только выкладка на сервер, её называют деплоем.
Что меняется при переезде, где жить продукту и что делать с персональными данными, я разбирал в материале о том, что делать, когда прототип готов и пора выкладывать.
Если твой проект - бот или сервис, который должен работать и ночью, пригодится разбор про то, как отвязать бота от включённого ноутбука. А ответ на частый соседний вопрос «нужен ли агент готовому приложению» - в статье про то, работает ли приложение без Claude.
Частые вопросы
Частые вопросы
Главный вывод
Локальная ссылка работает, пока работают три вещи: компьютер, окно с сервером и нужная дверь. Погасла одна - погасла ссылка, а проект остался на месте.
Практический минимум на сегодня: попроси агента развести установку и запуск и сделать тебе ярлык. Тогда смотреть на свой сайт можно будет в любой момент, не открывая агента.
А твой проект сейчас живёт только на localhost или уже выложен в интернет?
Источники
- Localhost - зарезервированное имя «этот компьютер» и адрес 127.0.0.1, Википедия
- Порт (компьютерные сети) - номер, по которому система отдаёт запрос нужной программе, Википедия
- Port - порты по умолчанию для HTTP (80) и HTTPS (443), MDN
- What is a web server - что такое веб-сервер и как он отдаёт страницы, MDN
- SIGHUP - сигнал процессу при закрытии управляющего терминала, Википедия
- Getting Started: Installation - сервер разработки Next.js на localhost:3000, Next.js
- Server Options - порт 5173 по умолчанию и переход на следующий свободный, Vite
