# Часть 5. Первичная настройка проекта Первичная настройка — это не генерация всего приложения. Это создание минимальной, понятной базы, на которой можно безопасно писать конституцию и первую спецификацию фичи. В учебном проекте база будет TypeScript-проектом с Git, но без продуктовой логики. ## Цель этапа После первичной настройки у вас должно быть: - Git-репозиторий; - `README.md` с кратким видением продукта; - `QWEN.md`; - `.qwen/settings.json`; - минимальная TypeScript-заготовка; - пустая или почти пустая `src/index.ts`; - `package.json`; - `tsconfig.json` со строгим режимом. Пока не добавляйте Hono, SQLite, Vitest или страницы. Эти решения должны попасть в `specs/tech-stack.md` и дорожную карту, а затем реализовываться через спецификации фич. ## Команды ```bash mkdir agentclinic cd agentclinic git init npm init -y npm install -D typescript @types/node npx tsc --init mkdir -p src specs .qwen touch src/index.ts ``` Откройте `tsconfig.json` и убедитесь, что строгий режим включён: ```json { "compilerOptions": { "strict": true } } ``` В `package.json` добавьте: ```json { "scripts": { "typecheck": "tsc --noEmit" } } ``` Создайте `.gitignore`, чтобы случайно не закоммитить артефакты сборки и локальные секреты: ```text node_modules/ dist/ build/ .env .env.* # локальная SQLite-память (см. часть 19) .qwen/memory/agent-memory.db .qwen/memory/agent-memory.db-shm .qwen/memory/agent-memory.db-wal # IDE .idea/ .vscode/ ``` Конфигурацию `.qwen/settings.json` в `.gitignore` не кладите — она нужна команде. Но проверьте, что в ней нет секретов; для секретов есть переменные окружения и `.env`. Проверьте: ```bash npm run typecheck git status ``` ## Что подсовывать агенту в начале сессии Каждый запуск Qwen Code — это новое окно. Если каждый раз агент сам угадывает, что читать, вы будете тратить часть запроса на ввод его в курс дела. Надёжнее зафиксировать заранее, какие файлы он должен прочитать в начале: - `QWEN.md` — правила поведения агента в репозитории. - `specs/mission.md`, `specs/tech-stack.md`, `specs/roadmap.md` — конституция проекта. - Папка текущей спецификации, если работа идёт над фичей: `specs//`. Это та же идея, что и `@file` в запросах, но вы выносите её на уровень привычки и `QWEN.md`. Один из вариантов — добавить в `QWEN.md` блок: ```text Перед началом любой работы прочитай: - README.md - specs/mission.md, specs/tech-stack.md, specs/roadmap.md - активную спецификацию фичи, если она указана в запросе. Не угадывай содержание этих файлов: если их нет, скажи об этом. ``` В корпоративных текстах такую практику называют `Knowledge Priming` — «загрузка знаний» в начало сессии. Имя не важно; важно, что агент перед первым действием уже знает три основные вещи: зачем существует проект, какой стек и какая текущая фаза. ## Минимальный README ```markdown # AgentClinic AgentClinic — вымышленная клиника психического здоровья, где ИИ-агенты восстанавливаются после стресса от работы с людьми. Пожелания участников проекта: - инженерная команда хочет надёжное учебное приложение на TypeScript; - продуктовая команда хочет агентов, недуги, терапии, записи на приём, обратную связь и отзывы; - маркетингу нужен современный браузерный опыт с запоминающимся сатирическим тоном. ``` Этот README нужен не как финальная документация, а как исходные пожелания участников проекта для агента. В следующей части Qwen Code будет читать его и задавать вопросы перед созданием конституции. ## Первый коммит ```bash git add README.md QWEN.md package.json package-lock.json tsconfig.json src .qwen git commit -m "Initialize AgentClinic scaffold" ``` Если вы ещё не хотите коммитить `.qwen/settings.json`, проверьте, нет ли там секретов. Конфигурация с именем модели обычно допустима, ключи — нет. ## Проверка первичной настройки через Qwen Code Запустите: ```bash qwen ``` Введите: ```text Проверь этот репозиторий. Файлы не записывай. Сообщи: 1. инициализирован ли Git; 2. включён ли строгий режим TypeScript; 3. достаточно ли `QWEN.md` задаёт правила SDD; 4. чего не хватает перед созданием specs/mission.md, tech-stack.md и roadmap.md. ``` Если Qwen предлагает сразу поставить фреймворк или писать приложение, остановите его. До конституции это преждевременно. ## Почему не надо сразу писать код В обычной разработке с агентами первичная настройка часто превращается в «построй приложение». В SDD она должна быть скучной. Её задача — дать агенту рабочее пространство и Git-границу, а не принимать продуктовые решения. Сравните: ```text Построй приложение AgentClinic. ``` и: ```text Подготовь репозиторий к SDD. Пока не выбирай веб-фреймворк. Не реализуй продуктовые маршруты. Убедись, что TypeScript и Git готовы. ``` Второй запрос сохраняет решения для правильного этапа. ## Практика 1. Выполните первичную настройку. 2. Запустите `npm run typecheck`. 3. Спросите Qwen Code о готовности репозитория. 4. Исправьте только блокирующие проблемы первичной настройки. 5. Сделайте коммит. ## Контрольные вопросы 1. Почему первичная настройка не должна включать продуктовые фичи? 2. Какие файлы нужны агенту перед созданием конституции? 3. Что должно быть закоммичено до первой ветки фичи?