Whirl nima?
Whirl — Next.js va Convex asosida yaratilgan, ochiq kodli, to‘liq stekli AI chat ilovasi. U whirl.chat saytining kodi bo‘lib, MIT litsenziyasi ostida taqdim etiladi. Shu sababli siz uni tekshirishingiz, o‘z nusxangizni ishga tushirishingiz yoki yaxshilanishlarga hissa qo‘shishingiz mumkin.
Loyiha bir nechta AI modellarini, doimiy xotirani, tahrirlanadigan artefaktlarni, veb-tadqiqotni, maxsus vositalarni va maxfiylikka yo‘naltirilgan suhbatlarni yagona interfeysga birlashtiradi. Modellarga yo‘naltirish OpenRouter orqali amalga oshiriladi, Convex esa ma’lumotlar bazasi, backend funksiyalari, oqimli uzatish va rejalashtirilgan vazifalarni ta’minlaydi.
Asosiy imkoniyatlar
- Yetakchi modellar: Bir suhbatda eng yaxshi AI modellaridan foydalaning va ularning fikrlash darajasini sozlang.
- Jonli artefaktlar: Yon panelda tahrirlash mumkin bo‘lgan va havola orqali ulashiladigan hujjatlar, diagrammalar hamda interaktiv sahifalar yarating.
- Vositalar va ko‘nikmalar: MCP orqali tashqi vositalarni, jumladan OAuth asosidagi integratsiyalarni ulang va Whirl imkoniyatlarini kengaytiradigan ko‘nikmalarni o‘rnating.
- Uzoq muddatli xotira: Afzalliklar va loyiha kontekstini suhbatlar davomida saqlang.
- Dolzarb veb-ma’lumotlar: So‘nggi manbalarga asoslangan javoblar olish uchun internetni qidiring va sahifalarni o‘qing.
- Maxfiy suhbatlar: Qulflangan chatlar server hech qachon olmaydigan parol yordamida foydalanuvchi qurilmasida shifrlanadi. Ular faqat ma’lumot saqlanmaydigan modellardan foydalanadi.
- Samaradorlik imkoniyatlari: Whirl inkognito rejimi, xabarlarni navbatga qo‘yish, ovozli kiritish, rasm yaratish, fayl biriktirish, papkalar va ulashish imkoniyatlarini o‘z ichiga oladi.
- Sozlanadigan interfeys: Yorug‘ yoki qorong‘i rejimni tanlang, aksent ranglarini belgilang va Whirl’ni mobil veb-ilova sifatida o‘rnating.
Texnologiyalar steki
Ishlab chiqarishdagi veb-ilova Next.js 16, React 19, Tailwind CSS v4 va Motion’dan foydalanadi. Convex backend’ni ta’minlaydi, Clerk autentifikatsiyani boshqaradi, OpenRouter esa AI SDK orqali modellarga kirishni taqdim etadi. Repozitoriy Bun workspaces sifatida tashkil etilgan va TypeScript’da yozilgan.
Asosiy sozlash uchun faqat Convex, Clerk va OpenRouter talab qilinadi. Boshqa xizmatlar ixtiyoriy:
- Billing uchun Autumn
- Veb-qidiruv uchun Exa
- Xotira uchun Supermemory
- Analitika uchun PostHog va Axiom
- Trassirovka uchun Braintrust
- Elektron pochta uchun Resend
- Qo‘llab-quvvatlash agenti uchun Median
Ixtiyoriy xizmat sozlanmagan bo‘lsa, Whirl ilovani ishga tushirish uchun uni talab qilmaydi, balki ushbu xizmatga bog‘liq imkoniyatni yashiradi.
Talablar
Whirl’ni o‘rnatishdan oldin quyidagilarni tayyorlang:
- Kompyuteringizda o‘rnatilgan Bun
- Bepul Convex hisobi
- Clerk ilovasi
- OpenRouter API kaliti
- Repozitoriyni klonlash uchun Git
1-qadam: Whirl’ni klonlash va o‘rnatish
Repozitoriyni klonlang, uning katalogiga kiring va barcha workspace bog‘liqliklarini Bun yordamida o‘rnating:
git clone https://github.com/whirlchat/whirl.git
cd whirl
bun install
2-qadam: Convex backend’ini yaratish
Backend paketiga o‘ting va Convex ishlab chiqish jarayonini boshlang:
cd packages/backend
bunx convex dev
Birinchi ishga tushirishda Convex loyiha va ishlab chiqish deployment’ini yaratish bo‘yicha yo‘l-yo‘riq beradi. Ishlab chiqish vaqtida backend o‘zgarishlari sinxronlanishi uchun ushbu jarayonni ishlayotgan holda qoldiring.
3-qadam: Backend maxfiy ma’lumotlarini sozlash
packages/backend katalogida boshqa terminal oynasini oching. Clerk JWT issuer domeni va OpenRouter API kalitini Convex muhitiga qo‘shing:
bunx convex env set CLERK_JWT_ISSUER_DOMAIN https://your-instance.clerk.accounts.dev
bunx convex env set OPENROUTER_API_KEY sk-or-v1-...
Namunaviy qiymatlarni o‘zingizning Clerk va OpenRouter hisoblaringizdan olingan ma’lumotlar bilan almashtiring. Batafsil self-hosting hujjatlarida Convex talab qiladigan Clerk JWT shabloni tushuntirilgan.
API kalitlari yoki autentifikatsiya maxfiy ma’lumotlarini repozitoriyga commit qilmang. Backend maxfiy ma’lumotlarini Convex muhit buyruqlari orqali, mahalliy veb sozlamalarini esa tegishli muhit faylida saqlang.
4-qadam: Veb-ilovani sozlash
Ishlab chiqarishdagi veb-ilovaga o‘ting va berilgan namunadan mahalliy muhit faylini yarating:
cd ../../apps/v2
cp .env.example .env.local
.env.local faylini oching va Convex hamda Clerk uchun talab qilinadigan to‘rtta qiymatni kiriting. Yangi nomlar yaratish o‘rniga o‘zgaruvchilarning aniq nomlari uchun namunaviy fayldan foydalaning.
5-qadam: Ishlab chiqish muhitini ishga tushirish
Repozitoriy ildiziga qayting va ishlab chiqish buyrug‘ini ishga tushiring:
cd ../..
bun run dev
Xizmatlar ishga tushgach, localhost:3000 manzilini oching. Sozlangan Clerk ilovasi orqali tizimga kiring va suhbatni boshlang.
Asosiy foydalanish
Suhbatni boshlash
Chat kompozitoriga so‘rov kiriting va uni sozlangan modelga yuboring. Oddiy dastlabki prompt veb-ilova, autentifikatsiya, Convex backend’i va OpenRouter ulanishi birgalikda ishlayotganini tekshirishi mumkin:
Ushbu ilovaning asosiy komponentlarini beshta qisqa bandda tushuntiring.
Modellar bilan ishlash
Whirl suhbat davomida OpenRouter orqali bir nechta yetakchi modellardan foydalanish imkonini beradi. Ilova va tanlangan model qo‘llab-quvvatlagan hollarda sozlanadigan fikrlash darajalaridan ham foydalanishingiz mumkin.
Artefaktlarni yaratish va takomillashtirish
Whirl’dan hujjat, diagramma yoki interaktiv sahifa yaratishni so‘rang. Bu doimiy ravishda tahrirlash mumkin bo‘lgan artefaktlar yon panelda saqlanadi va havola orqali ulashilishi mumkin. Shu sababli ular bitta chat javobidan ko‘ra, keyinchalik takomillashtirishni talab qiladigan natijalar uchun foydalidir.
Fayllar, ovoz va tashkil etishdan foydalanish
Whirl yozilgan xabarlardan tashqari fayl biriktirish va ovozli kiritishni ham qo‘llab-quvvatlaydi. Suhbatlarni papkalarga ajratish, ulashish funksiyalari esa tanlangan ishlarni boshqalarga taqdim etish imkonini beradi.
Repozitoriyni tushunish
Monorepoda bir nechta ilova va umumiy backend mavjud:
apps/v2: Whirl foydalanadigan ishlab chiqarishdagi Next.js veb-ilovasi.apps/console: Modellar, integratsiyalar va ko‘nikmalarni boshqarish uchun Vite asosidagi ma’muriy konsol.apps/mobile: Expo yordamida yaratilgan native ilova.apps/waitlist: Mustaqil kutish ro‘yxati sahifasi.apps/remotion: Reklama videolari kompozitsiyalari.apps/legacy: Ma’lumot uchun saqlab qo‘yilgan, ammo endi qo‘llab-quvvatlanmaydigan avvalgi veb-ilova.packages/backend: Convex sxemasi, funksiyalari va AI pipeline’i.docs: O‘z serveringizda joylashtirish, sozlash va arxitektura bo‘yicha qo‘llanmalar.brand: Logotiplar, ranglar, bannerlar va ilova ikonkalari.
Joriy veb-ishlab chiqish uchun apps/v2 va packages/backendga e’tibor qarating. apps/legacyda yangi ish boshlamang, chunki u qo‘llab-quvvatlanmaydi.
Ilg‘or maslahatlar
Ixtiyoriy xizmatlarni bosqichma-bosqich qo‘shing
Avval kerakli Convex, Clerk va OpenRouter sozlamalaridan boshlang. Asosiy chat oqimi ishlagach, ixtiyoriy provayderlarni birma-bir qo‘shing. Kerakli kalitlar mavjud bo‘lmasa, Whirl tegishli funksiyalarni avtomatik yashiradi. Bu kichikroq o‘rnatmani boshqarishni osonlashtiradi.
Billing, qidiruv, xotira, analitika, tracing, elektron pochta va qo‘llab-quvvatlash bilan bog‘liq muhit o‘zgaruvchilari uchun repozitoriyning sozlash qo‘llanmasiga murojaat qiling.
Tegishli maxfiylik rejimini tanlang
Oddiy doimiy suhbat jarayonidan foydalanishni istamasangiz, inkognito rejimidan foydalaning. Kuchliroq himoya uchun qulflangan chatlar qurilmada server hech qachon ko‘rmaydigan parol bilan shifrlanadi va ularga faqat ma’lumotni saqlamaydigan modellar javob beradi. Mijoz tomonda saqlanadigan parol yo‘qolsa, shifrlangan kontentga kirish imkoniyatingiz cheklanishi mumkinligini unutmang.
Xabarlar pipeline’ini tekshiring
Oqimli uzatish, vosita chaqiruvlari yoki model xatti-harakatlarini tuzatishda loyihaning arxitektura qo‘llanmasini o‘qing. Unda xabar kompozitordan modelga va orqaga qanday borishi tushuntiriladi. Tegishli dasturiy ta’minot asosan ishlab chiqarishdagi veb-ilova va Convex backend’i o‘rtasida bo‘lingan.
Ishlab chiqarish uchun ehtiyotkorlik bilan tayyorlaning
Tezkor boshlash ishlab chiqish muhitini yaratadi. Ommaviy joylashtirishdan oldin Clerk JWT shabloni va ishlab chiqarishga joylashtirish bo‘yicha ko‘rsatmalarni ham o‘z ichiga olgan to‘liq o‘z serveringizda joylashtirish qo‘llanmasiga amal qiling.
Xavfsiz hissa qo‘shing
Pull request ochishdan oldin konvensiyalar va tekshiruvlar uchun loyihaning hissa qo‘shish qo‘llanmasini ko‘rib chiqing. Xulq-atvor kodeksiga amal qiling va xavfsizlik muammolari haqida ommaviy issue orqali emas, balki SECURITY.mdda ko‘rsatilgan jarayon orqali xabar bering.
Xulosa
Whirl o‘z serveringizda joylashtiriladigan, imkoniyatlarga boy AI chat ish maydoni uchun boshlang‘ich yechimni taqdim etadi. U Next.js interfeysini Convex backend’i, Clerk autentifikatsiyasi va OpenRouter modellari bilan birlashtiradi. Uchta kerakli xizmatdan boshlang, localhost:3000 manzilida mahalliy chatni tekshiring, so‘ngra joylashtirishingiz ehtiyojlariga ko‘ra ixtiyoriy qidiruv, xotira, analitika, billing va boshqa integratsiyalarni yoqing.
