iAct

Act on Ai

کارگاه صفر تا صد وایب کدینگ با هوش مصنوعی – قسمت ۱


کارگاه صفر تا صد وایب کدینگ با هوش مصنوعی - قسمت ۱

این کارگاه برای کیه

اگه هر بار می‌خوای شروع کنی و گیج می‌شی بین این‌همه ابزار (Claude، Codex، Cursor، Antigravity، OpenCode، Lovable، Replit…) و نمی‌دونی فرانت‌اند و بک‌اند و دیتابیس یعنی چی، این ویدیو برای همینه — یه مسیر کامل و قدم‌به‌قدم، بدون هیچ پیش‌نیازی. کل مسیر رو جلوی دوربین طی می‌کنم و قدم‌به‌قدم توضیح می‌دم — نه فقط دستورهای کپی-پیست، بلکه چرایی هر تصمیم. برای اینکه درس‌ها انتزاعی نمونن، همه‌ی این مفاهیم رو روی یه پروژه‌ی واقعی پیاده می‌کنم و همون پروژه رو موازی تو OpenCode، Lovable و Replit می‌سازم تا نتیجه‌ها رو کنار هم مقایسه کنیم.

ابزارهای پولی در برابر ابزارهای رایگان

اولین تصمیمی که باید بگیری اینه که با کدوم ابزار می‌خوای کد بزنی. سمت پولی چهار تا گزینه‌ی اصلی وجود داره: کلود کود که قیمتش از حدود بیست دلار در ماه شروع می‌شه؛ چت جی‌پی‌تی که کدکس رو بهت می‌ده تا با هوش مصنوعی کد بزنی؛ کرسر با پلن حدوداً بیست دلاری؛ و آنتیگراویتیِ گوگل. نکته‌ی مهم اینه که همه‌ی این‌ها نیاز به کارت بانکی با قابلیت خرید دلاری دارن.

اگه امکانش رو داری، پول بده. فرق خروجی مدل پولی با مدل رایگان واقعاً زیاده. با مدل رایگان همون کاری که ممکنه یک ساعت طول بکشه، با مدل پولی ده دقیقه انجام می‌شه. این دقیقاً مثل فرق یک دولوپر سینیور با جونیوره؛ جونیور شاید بتونه همون کار رو انجام بده، ولی بعدش باگ‌های بیشتری تولید می‌کنه و در نهایت زمان بیشتری ازت می‌گیره.

اما اگه امکان خرید دلاری نداری یا فعلاً نمی‌خوای هزینه کنی، گزینه‌های رایگان هم زیادن: OpenCode یکی از بهترین‌هاست، Kilo Code و Cline هم دو تا افزونه‌ی رایگان برای ویژوال استودیو کد هستن، و بعد ابزارهایی که خودشون کل پروژه رو می‌سازن و روی یه سرور آپلود می‌کنن: Lovable، Replit و Emergent. یه نکته‌ی مهم: بیشتر این ابزارها برای صرفه‌جویی، خیلی وقت‌ها از مدل‌های ارزون‌تر استفاده می‌کنن، حتی اگه پلن‌ریزی اولیه رو با یه مدل قوی انجام داده باشن. این یعنی گاهی همون ابزار که یه بار خروجی خوب می‌ده، بار بعد به مشکل می‌خوره چون مدل ضعیف‌تری پشتش سوار شده.

نصب OpenCode

OpenCode یک عامل هوش مصنوعی است که توی ترمینال کامپیوترت باز می‌شه. دلیل اینکه پیشنهادش می‌کنم اینه که اوپن‌سورسه، و هر شرکتی که مدل جدیدی منتشر می‌کنه، معمولاً اول میاد اون رو روی OpenCode در دسترس قرار می‌ده تا مردم تستش کنن.

روی مک می‌تونی با Homebrew نصبش کنی:

brew install sst/tap/opencode

اگه ویندوز داری یا ترجیح می‌دی از npm استفاده کنی، اول باید Node.js رو نصب کنی (نسخه‌ی LTS رو بگیر، نه latest). بعد از نصب Node، این دستور رو بزن:

npm install -g opencode-ai

بعد از نصب، کافیه توی ترمینال بنویسی opencode تا باز بشه. با نوشتن /models می‌تونی لیست مدل‌های موجود رو ببینی؛ چند تاشون رایگان‌اند. به این قابلیت که یه هوش مصنوعی بتونه کاری واقعی روی سیستم انجام بده (نه فقط جواب بده) می‌گن function calling، و همین چیزیه که یه چت‌بات ساده رو تبدیل به یک «عامل» یا Agent می‌کنه.

فرانت‌اند، بک‌اند و دیتابیس یعنی چی

فرانت‌اند اون چیزیه که کاربر می‌بینه: صفحه‌ی اپ روی گوشی، یا صفحه‌ای که روی مرورگرت باز می‌کنی. اما اطلاعات این کجا نگه‌داری می‌شه؟ روی یه کامپیوتر که ۲۴ ساعته روشنه و به اینترنت وصله؛ به این کامپیوتر می‌گیم سرور. یه نرم‌افزار روی این سرور نصب و اجرا می‌شه که می‌دونه چطور درخواست‌های فرانت‌اند رو جواب بده، اطلاعات رو ذخیره کنه یا برگردونه. به این نرم‌افزار می‌گیم بک‌اند. علتی که این وسط یه سرور جداگانه لازم داریم امنیته: اگه رمز اتصال به منبع اطلاعات مستقیم روی گوشی هر کاربر ذخیره بشه، هرکسی که به اون رمز دسترسی پیدا کنه می‌تونه به اطلاعات همه‌ی کاربرها دسترسی داشته باشه.

جایی که خود اطلاعات ذخیره می‌شه رو دیتابیس می‌نامیم. ساده‌ترین تصویر برای دیتابیس، یه اکسل بزرگه: یه سری ردیف و ستون که هر ردیف یه رکورد اطلاعاتیه. نکته‌ی مهم اینه که فرانت‌اند هیچ‌وقت مستقیم به دیتابیس وصل نمی‌شه؛ همیشه از طریق بک‌اند اطلاعات رو می‌خونه یا می‌نویسه. اگه فقط یه اپلیکیشن شخصیِ کاملاً آفلاین می‌سازی، اصلاً به بک‌اند و سرور نیازی نداری. اما به‌محض اینکه بخوای چند نفر با هم به یه اطلاعات مشترک دسترسی داشته باشن، هر سه بخش لازمن.

API Key و هزینه‌ی هر تماس با هوش مصنوعی

اگه اپلیکیشنت خودش داخلی از هوش مصنوعی استفاده می‌کنه (مثلاً یه صدا رو تبدیل به متن می‌کنه)، باید بری یه ارائه‌دهنده‌ی مدل هوش مصنوعی انتخاب کنی، یه حساب بسازی و یک API Key بگیری. این کلید مثل رمز کارت بانکی توئه؛ هر بار که اپلیکیشنت از هوش مصنوعی چیزی بخواد یه هزینه‌ی کوچیک از اعتبارت کم می‌شه. اگه این کلید لو بره، یه نفر دیگه می‌تونه ازش استفاده کنه و قبضش میاد پای تو.

یه راه صرفه‌جویی خوب اینه که به‌جای اینکه اول با یه مدل جدا صدا رو تبدیل به متن کنی و بعد متن رو به یه مدل دیگه بدی، مستقیم صدا رو به یه مدل چندوجهی (multimodal) بدی که ورودی صوتی رو مستقیم می‌گیره. هم سرعتش بیشتره هم هزینه‌اش کمتر، چون یه تماس API به‌جای دو تا.

نوشتن PRD قبل از هر خط کد

قبل از اینکه به هوش مصنوعی بگی «برام اپ بساز»، باید یه PRD بسازی؛ مخفف Product Requirement Document، یعنی سند نیازمندی‌های محصول. خبر خوب اینه که خود عامل هوش مصنوعی می‌تونه این سند رو برات بسازه:

I want to make a PRD for this project

بعد از اینکه یه پیش‌نویس ساخت، ازش بخواه قبل از شروع پیاده‌سازی چند تا سؤال ازت بپرسه:

Can you plan it and ask me five questions before we start?

اگه خیلی فنی نیستی، مشکلی نیست، همیشه می‌تونی بنویسی «خودت بهترین انتخاب رو بکن، من زیاد فنی نیستم» و بذاری خودش تصمیم بگیره.

MVP، اجایل و واترفال

بعد از نوشتن PRD، وسوسه می‌شی همه‌چیز رو یک‌جا بسازی. این کار غلطه. اینجاست که مفهوم MVP وارد می‌شه؛ مخفف Minimum Viable Product، یعنی کوچک‌ترین نسخه‌ای از محصول که ارزش عرضه داره.

دلیل اینکه از MVP شروع می‌کنیم به دو تا متدولوژی قدیمی برمی‌گرده: واترفال و اجایل. در روش واترفال، از روز اول به تمام جزئیات فکر می‌کنی، همه‌چیز رو طراحی می‌کنی، ماه‌ها زمان و هزینه می‌ذاری، و بعد یه‌جا محصول کامل رو عرضه می‌کنی. مشکلش اینه که اگه کاربر خوشش نیاد، باید از اول برگردی، در حالی که همه‌ی وقت و پول رو خرج کردی. روش اجایل برعکسه: یه نسخه‌ی ساده و کوچیک می‌سازی، به دست کاربر واقعی می‌دی، فیدبک می‌گیری، و بر اساس همون فیدبک ارتقا می‌دی. برای پروژه‌ای که تازه شروعش می‌کنی، بهترین استراتژی همون اجایله: اول یه نسخه‌ی حداقلی بساز که فقط کاربردی‌ترین بخش کار رو انجام بده.

ساخت با OpenCode: از پلن تا نسخه‌ی دیباگ

بعد از تأیید PRD، وقتشه از عامل بخوای پیاده‌سازی کنه. اول بگو پلن بریزه، بعد به‌صورت لوکال بسازه:

Can you plan it first and then implement it locally as a PWA application?

PWA یعنی Progressive Web App؛ یه ویب‌سایت که طوری ساخته شده که می‌تونی به‌عنوان شورتکات به صفحه‌ی اصلی گوشیت اضافه کنی و شبیه یه اپلیکیشن واقعی کار می‌کنه.

وقتی «لوکال» می‌سازی، آدرسی مثل localhost:3000 می‌گیری؛ یعنی این نسخه فقط روی کامپیوتر خودت قابل دیدنه. این دقیقاً همون چیزیه که به آن نسخه‌ی دیباگ می‌گیم، در برابر نسخه‌ی پروداکشن که آماده و روی سرور واقعی قرار می‌گیره و کاربر واقعی می‌بینتش. توی نسخه‌ی دیباگ می‌تونی راحت لاگ بذاری، خطا رو ردیابی کنی، و با چهار خط تغییر و ری‌استارت، بلافاصله نتیجه رو ببینی. توی پروداکشن هر تغییری باید منتقل بشه، تست بشه، و اگه نسخه‌ی باگ‌دار رو مستقیم عرضه کنی، کاربرهای واقعی آسیب می‌بینن.

Worktree: اجرای موازی چند عامل روی یک پروژه

یه ترفند پیشرفته‌تر: فرض کن می‌خوای همزمان دو تا نسخه‌ی متفاوت از یه پروژه رو با دو تا عامل هوش مصنوعی مختلف بسازی و بعد خروجی‌هاشون رو مقایسه کنی. راه حرفه‌ای استفاده از worktree است. Worktree یه قابلیتیه که به تو اجازه می‌ده چند شاخه از یک پروژه‌ی کد رو هم‌زمان و بدون تداخل با هم داشته باشی، بدون اینکه لازم باشه کل پروژه رو کپی کنی. کافیه مستقیم توی پرامپت بهش بگی:

Please use a worktree so your changes don't conflict with the other agent working on this codebase

مقایسه‌ی موازی: همون پروژه با Lovable و Replit

برای اینکه ببینی هر ابزار چه خروجی‌ای می‌ده، بهترین کار اینه که همون PRD رو هم‌زمان به چند تا ابزار مختلف بدی و نتیجه‌ها رو کنار هم بذاری.

با Lovable، فقط PRD رو پیست می‌کنی، سؤال‌هایی که می‌پرسه رو جواب می‌دی و منتظر می‌مونی. Lovable خودش هم بک‌اند می‌سازه، هم فرانت‌اند، هم دیتابیس، و در آخر همه‌چیز رو روی سرور خودش آپلود می‌کنه؛ یعنی به‌جای localhost یه لینک واقعی با دامنه‌ی .lovable.app بهت می‌ده. نتیجه‌ای که گرفتم واقعاً کارآمد بود: لاگین، ثبت‌نام، ثبت صدا، پنل مدیریت تأیید رکوردها، همه کار می‌کرد.

با Replit هم دقیقاً همون PRD رو دادم. این‌جا یه صفحه‌ی فرود خوشگل هم ساخت، ولی موقع ثبت‌نام یه خطا داد. Replit یه دکمه‌ی «Try to fix» داره که خودش خطا رو می‌فرسته برای هوش مصنوعی تا رفعش کنه؛ ولی هر بار که این دکمه رو می‌زنی، از اعتبار ماهانه‌ات کم می‌شه. Replit علاوه بر نسخه‌ی وب، یه اپ موبایل واقعی هم ساخت که با ابزاری به اسم Expo می‌شه رویش تست کرد. من خودم تستش کردم و ضبط صدا کار می‌کرد ولی موقع ورود، باگ داشت.

نکته‌ی مهمی که موقع مقایسه یاد گرفتم اینه که مدل رو ثابت انتخاب نکن، وقت بذار و چند مدل مختلف رو تست کن تا ببینی کدوم برای پروژه‌ات بهترین خروجی رو می‌ده. در نهایت، بین سه نسخه‌ای که هم‌زمان با OpenCode، Lovable و Replit ساختم، هرکدوم یه مزیت داشتن: یکی نسخه‌ی موبایل واقعی می‌ساخت، یکی نسخه‌ی وب کامل با لینک عمومی می‌داد، و یکی (OpenCode) کنترل کامل رو دستم می‌ذاشت اما دانش بیشتری هم می‌خواست. انتخاب نهایی به این بستگی داره که چقدر می‌خوای روی جزئیات کنترل داشته باشی و چقدر حاضری برای سرعت و راحتی، هزینه بدی.

اگه دوست داری ویدئوش رو هم ببینی، لینکش پایین صفحه‌ست.


دیدگاهتان را بنویسید