مسیریابی در جهان مدلهای هوش مصنوعی مرزی
راهنمای عملی Claude Fable 5
«طارق شیحیپار» (Thariq Shihipar)، یکی از اعضای تیم فنی آنتروپیک در بلاگ Claude مینویسد: «وقتی با Claude Code کار میکنم، اغلب به یاد تفاوت میان نقشه و سرزمین میافتم.»
نقشه، بازنمایی کاری است که باید انجام شود؛ یعنی پرامپتها، مهارتها و زمینهای که در اختیار Claude قرار میدهیم. سرزمین، جایی است که کار واقعاً باید در آن اتفاق بیفتد؛ پایگاه کد، دنیای واقعی و محدودیتهای واقعی آن.
تفاوت Fable
تفاوت میان نقشه و سرزمین همان چیزی است که شیحیپار آن را «مجهولات» (unknowns) مینامد. وقتی Claude با یک مجهول مواجه میشود، باید بر اساس بهترین حدس خود از آنچه کاربر میخواهم، تصمیم بگیرد. هرچه کار بیشتری در حال انجام باشد، احتمال برخورد Claude با مجهولات بیشتر میشود.

Fable نخستین مدلی است که شیحیپار متوجه شده کیفیت کار، توسط توانایی کاربر در روشنساختن مجهولاتش محدود میشود. نکته مهم این است که همیشه صرفاً برنامهریزی پیش از اجرا، کافی نیست. ممکن است مجهولات را در اعماق پیادهسازی پیدا کنید، یا ممکن است مجهولات شما را متوجه این نکته کنند که در واقع باید مسئله را به شکلی کاملاً متفاوت حل کنید. کارکردن با Fable فرایندی تکرارشونده از کشف مجهولات، پیش، هنگام و پس از پیادهسازی است.
شناخت مجهولات
مجهولات چه چیزهایی هستند؟ شیحیپار عنوان میکند که وقتی با یک مسئله به سراغ Claude میرود، معمولاً آن را به ۴ شکل تجزیه میکند:
- معلومهای معلوم (Known Knowns): اساساً همان چیزی است که در پرامپت وجود دارد. چه چیزهایی که میخواهیم را به عامل هوش مصنوعی میگوییم؟
- مجهولهای معلوم (Known Unknowns): چه چیزی هنوز مشخص نشده، اما میدانیم که مشخص نشده؟
- معلومهای مجهول (Unknown Knowns): چه چیزی آنقدر بدیهی است که هرگز آن را عنوان نمیکنیم، اما اگر آن را ببینیم، تشخیصش میدهیم؟
- مجهولهای مجهول (Unknown Unknowns): به چه چیزی اصلاً فکر نکردهایم؟ از چه دانشی آگاه نیستیم؟ آیا میدانیم چیزی تا چه حد میتواند خوب باشد؟
بهترین کدنویسان عاملمحور، مجهولات نسبتاً کمی دارند. وقتی کسی این افراد را در حال پرامپتنویسی ببینیم، واضح است که میدانند دقیقاً چه میخواهند. آنها هم با پایگاه کد و هم با رفتارهای مدل، هماهنگی عمیقی دارند. اما آنها نیز مجهولات را فرض میکنند. از بسیاری جهات، کاهش و برنامهریزی برای مجهولات، همان مهارت کدنویسی عاملمحور است. اما خوشبختانه، این امر یک مهارت است که میتوانید با کارکردن با Claude در آن پیشرفت کنید.

به Claude کمک کنید تا به شما کمک کند
هدایت Claude یک تعادل ظریف است. اگر بیش از حد دقیق باشید، Claude دستورات شما را دنبال میکند حتی زمانی که تغییر مسیر مناسبتر باشد. اگر بیش از حد مبهم باشید، Claude اغلب انتخابها و فرضیاتی را بر اساس بهترین شیوههای رایج صنعت انجام میدهد که ممکن است برای کار شما مناسب نباشند. وقتی مجهولات خود را در نظر نمیگیرید، در هر دو حالت شکست میخورید. نه میدانید مسیر چه زمانی پر از موانع خواهد بود و نه میدانید چه زمانی مسیر روشن است؛ اما همچنان میخواهید Claude تغییر مسیر دهد.
Claude میتواند به شما کمک کند تا مجهولاتتان را سریعتر کشف کنید، میتواند پایگاه کد و اینترنت را با سرعتی فوقالعاده جستوجو کند، درباره اغلب موضوعات دانش بسیار بیشتری نسبت به شما دارد و همچنین میتواند سریعتر از شکست، تکرار (iterate) کند.

مهمترین بخش این فرایند، ارائه زمینه درباره نقطه شروع به Claude است. برای مثال، به Claude بگویید در کجای فرایند فکری خود قرار دارید، تجربه خود را با مسئله و پایگاه کد بیان کنید و اجازه دهید مانند یک همفکر با شما کار کند.
شیحیپار برخی از الگوهایی که برای کشف این مجهولات استفاده میکنم را شرح داده است، از جمله:
- پیش از پیادهسازی:
- بررسی نقاط کور (Blind Spot Pass)
- طوفان فکری و نمونهسازی اولیه (Brainstorms and prototype)
- مصاحبهها (Interviews)
- مراجع (References)
- طرح پیادهسازی (Implementation plan)
- حین پیادهسازی:
- یادداشتهای پیادهسازی (Implementation notes)
- پس از پیادهسازی:
- ارائهها و توضیحدهندهها (Pitches and explainers)
- کوئیزها (Quizzes)
پیش از پیادهسازی
بررسی نقاط کور
یکی از مفیدترین کارهایی که هنگام شروع میتوانید انجام دهید، شناخت نقاط کور خودتان است. برای مثال، اگر در حال نوشتن ویژگیای در بخش تازهای از پایگاه کد هستید یا از Claude برای کاری ناآشنا مانند بازبینی یک طراحی کمک میگیرید، احتمالاً مجهولهای مجهول زیادی خواهید داشت. ممکن است ندانید چه سؤالاتی باید بپرسید، خوببودن به چه شکلی است، چه کارهای قبلاً انجام شده یا از چه دامهایی باید اجتناب کنید.
در این موقعیتها، میتوانید از Claude بخواهید تا در یافتن مجهولهای مجهول شما کمک کند و آنها را برایتان توضیح دهد. توصیه میشود بهتر است به طور مستقیم از عبارات «بررسی نقاط کور» و «مجهولهای مجهول» استفاده کنید. ارائه زمینه درباره اینکه شما چه کسی هستید و چه میدانید، معمولاً برای Claude اهمیت دارد تا بهترین شیوه شروع همکاری با شما را درک کند.
نمونه پرامپتها:
- “I’m working on adding a new auth provider but I know nothing about the auth modules in this codebase. Can you do a blind spot pass to help me figure out my relevant unknown unknowns and help me prompt you better.”
- “I don’t know what color grading is but I need to grade this video. Can you teach me to understand my unknown unknowns about color grading, so that I can prompt better?”
طوفان فکری و نمونهسازی اولیه
وقتی در حوزهای کار میکنیم که معلومهای مجهول زیادی در آن وجود دارد، در مواقعی که برخی معیارها را فقط زمانی که با آنها روبهرو شویم قادر به شناساییشان هستیم؛ بهتر است از Claude بخواهیم بهعنوان یک دستیار طوفان فکری عمل کند و نمونه اولیه بسازد.
این نکته بسیار ارزشمند است که معلومهای مجهول را زود در مرحله نمونهسازی اولیه شناسایی و بیان کنید، زیرا کشف آنها حین پیادهسازی میتواند نسبتاً پرهزینه باشد. تغییرات کوچک در یک ویژگی یا مشخصات میتواند پیادهسازیهای کاملاً متفاوتی در کد ایجاد کند و بازگرداندن تغییرات پیشین میتواند برای عامل دشوارتر باشد. برای مثال، شاید فقط بخواهید ببینید یک دکمه که به یک فریم اضافه شده چگونه به نظر میرسد، بدون آنکه لازم باشد یک مسیر بکاند را متصل کنید یا وضعیت اضافی را در فرانتاند نگه دارید.
مثالی دیگر، طراحی بصری است که ممکن است برای برخی بیانش دشوار باشد؛ اما وقتی آن را ببینند، میدانند که چه میخواهند. در این موارد، توصیه میشود چندین رویکرد طراحی برای یک ساخته با همان Artifact درخواست میکنید. همچنین تقریباً هر جلسه کدنویسی را با مرحلهای از کاوش یا طوفان فکری آغاز کنید. این کار کمک میکند با یک هدف مشخص، دامنه پروژه را تعریف کنید. Claude اغلب رویکردهای ارزشمندی پیدا میکند که از چشم کاربر پنهان مانده و گاهی هم یک کل را بهخاطر چند جزء از دست میدهد. طوفان فکری مانع از آن میشود که دامنهای بسیار محدود یا بسیار گسترده تعیین کنید.
نمونه پرامپتها:
- “I want a dashboard for this data but I have no visual taste and don’t know what’s possible. Make me an HTML page with 4 wildly different design directions so I can react to them.”
- “Before wiring anything up, make a single HTML file mocking the new editor toolbar with fake data. I want to react to the layout before you touch the real app.”
- “Here’s my rough problem: users churn after onboarding. Search the codebase and brainstorm 10 places we could intervene, from cheapest to most ambitious. I’ll tell you which ones resonate.”
مصاحبهها
پس از انجام طوفان فکری، احتمالاً همچنان مجهولاتی باقی میماند. در این حالت، از Claude بخواهید درباره هرگونه مجهول یا ابهام سؤال بپرسد. وقتی از Claude میخواهید از شما مصاحبه بگیرد و سؤال بپرسد، سعی کنید زمینهای درباره مسئله خود ارائه دهید تا سؤالاتش را هدایت کند.
نمونه پرامپت:
- “Interview me one question at a time about anything ambiguous, prioritize questions where my answer would change the architecture.”
مراجع
گاهی نمیتوانید آنچه میخواهید را با جزئیات توصیف کنید. برای مثال، ممکن است توصیف کافی برای آن نداشته باشید یا آنقدر پیچیده باشد که توصیف آن زمان زیادی ببرد. بهترین رویکرد در این حالت، استفاده از یک مرجع است. اگرچه میتوانید از نمودارها، مستندات یا تصاویر نیز استفاده کنید، اما بهترین مرجع ممکن، کد منبع (source code) است.
اگر کتابخانهای دارید که چیزی را به شکلی خاص پیادهسازی کرده یا مؤلفه طراحیای که واقعاً دوستش دارید، کافی است Fable را به آن پوشه هدایت کنید و به او بگویید دنبال چه چیزی باشد، حتی اگر به زبانی متفاوت نوشته شده باشد. این کار در مقایسه با مثلاً یک اسکرینشات، جزئیات بسیار غنیتری درباره نشانهگذاری (markup) و ساختار در اختیار Claude میگذارد.
نمونه پرامپت:
- “This Rust crate in vendor/rate-limiter implements the exact backoff behavior I want. Read it and reimplement the same semantics in our TypeScript API client.”
طرحهای پیادهسازی
شیحیپار وقتی احساس میکند آماده پیادهسازی است، معمولاً از Claude میخواهد یک طرح پیادهسازی برای بازبینی تهیه کند. این طرح روی بخشهایی تمرکز میکند که احتمال تغییرشان بیشتر است؛ مانند مدلهای داده، رابطهای نوعی (type interfaces) یا جریانهای تجربه کاربری (UX flows). این کار به Claude اجازه میدهد نکاتی که ممکن است واقعاً نیاز به تغییر داشته باشد را آشکار کند.
نمونه پرامپت:
- “Write an implementation plan in HTML, but lead with the decisions I’m most likely to tweak with: data model changes, new type interfaces, and anything user-facing. Bury the mechanical refactoring at the bottom, I trust you on that part.”
حین پیادهسازی
یادداشتهای پیادهسازی
شیحیپار پس از آن که از طرح راضی شد، یک جلسه جدید میسازد و همه ساختهها را به پرامپت منتقل میکند. این کار به Claude پنجره زمینه جدید میدهد، اما همراه با تمامی اطلاعاتی که او در مرحله برنامهریزی گردآوری کرده است. برای مثال، ممکن است یک فایل مشخصات (spec file) و یک نمونه اولیه را ارسال کند و از عامل بخواهد آن را پیادهسازی کند.
اما حقیقت این است که صرفنظر از میزان برنامهریزی که انجام میدهید، همیشه مجهولهای مجهولی در کمین هستند. عامل ممکن است حین کار متوجه شود که به دلیل یک مورد خاص که در کد یافته، نیاز دارد رویکرد متفاوتی در پیش بگیرد. شیحیپار در این موقعیت از Claude Code میخواهد یک فایل موقت به نام implementation-notes.md (با.html) را نگه دارد که در آن تصمیماتی که میگیرد را ثبت کند تا برای تلاش بعدی خود از آن استفاده کند.
نمونه پرامپت:
- “Keep an implementation-notes.md file. If you hit an edge case that forces you to deviate from the plan, pick the conservative option, log it under ‘Deviations’, and keep going.”
پس از پیادهسازی
ارائهها و توضیحدهندهها
یکی از مهمترین بخشهای عرضه هر چیزی، کسب پذیرش و تأییدیه است. ساختن فایلهای ارائه و توضیحدهنده سند نهایی به موارد زیر کمک میکند:
- تسریع درک مطلب هنگامی که بازبینان با همان مجهولاتی شروع میکنند که شما با آنها شروع کردید.
- تسریع تأییدیهها هنگامی که کارشناسان میخواهند ببینند که شما مجهولات و نقاط شکست رایجی را که خودشان پیشبینی میکردند را در نظر گرفتهاید یا نه.
نمونه پرامپت:
- “Package the prototype, the spec, and the implementation notes into a single doc I can drop in Slack to get buy-in. Lead with the demo GIF.”
کوئیزها
پس از یک جلسه کاری طولانی، ممکن است Claude بسیار بیشتر از آنچه تصور میکردید، کار انجام داده باشد. خواندن تغییرات کد (diffs) بهتنهایی میتواند درک سطحی از آنچه اتفاق افتاده است را بدهد، زیرا بخش زیادی از رفتار به مسیرهای کد موجود بستگی دارد. این که از Claude بخواهید پس از دادن زمینه کافی، راجع به تغییرات کد از شما بهنوعی کوییز بگیرد؛ کمک میکند متوجه شوید دقیقاً چه اتفاقی افتاده است.
نمونه پرامپت:
- “I want to make sure I understand everything that’s happened in this change. Give me a HTML report on the changes for me to read and understand with context, intuition, what was done, etc. and a quiz at the bottom on the changes that I must pass.”
چگونگی بههمپیوستن این موارد
ویدئوی عرضه Fable به طور کامل با استفاده از Claude Code ویرایش شده است که این حوزهای تازه برای شیحیپار بود و بههیچوجه در آن متخصص نیست. پس با آنچه میدانست شروع کرد. میدانست که Claude میتواند از کد برای ویرایش و رونویسی ویدئوها استفاده کند، اما مطمئن نبود که آیا از دقت کافی برخوردار است یا نه. سپس از Claude خواست توضیح دهد ابزارهای رونویسی مانند Whisper چگونه کار میکنند و آیا میتوانم با استفاده از ffmpeg چیزهایی مانند «اِاِم»ها یا مکثهای طولانی را با دقت کافی حذف کند یا نه.
شیحیپار میخواست Claude رابط کاربریای بسازد که با کلماتی که میگفتم هماهنگ باشد، اما مطمئن نبود که این کار امکانپذیر است؛ بنابراین از Claude خواست با استفاده از Remotion و یک رونویسی، یک ویدئوی پروتوتایپ بسازد تا ببینم که آیا کار میکند یا نه.
در نهایت، خودِ ویدئو کمی کدر به نظر میرسید که میدانست نتیجه گریدینگ رنگ است، اما واقعاً نمیدانست گریدینگ رنگ چیست. اولین اقدام او این بود که سعی کند Claude چند نسخه مختلف تولید کند تا انتخاب کند؛ اما متوجه شد که وقتی صحبت از گریدینگ رنگ میشود، نمیداند «خوب» به چه شکلی است. بنابراین در عوض، از Claude خواست درباره گریدینگ رنگ به او آموزش دهد تا مجهولاتش را کشف کند.
تطبیق نقشه و سرزمین
هرچه مدلها بهتر میشوند، با رویکرد درست میتوانید به دستاوردهای بیشتری برسید. وقتی یک کار طولانیمدت نتیجه اشتباهی به همراه میآورد، احتمالاً باید زمان بیشتری صرف تعریف مجهولات خود کنید یا طرح پیادهسازیای بسازید که به شما و Claude اجازه دهد در طول آن سازگار شوید.
هر توضیحدهنده، طوفان فکری، مصاحبه، نمونه اولیه، و مرجع، راهی ارزان برای کشف آنچه که نمیدانید است؛ پیش از آنکه هزینه اصلاحش بالا برود. پس پروژه بعدی خود را با درخواست از Claude برای کمک به یافتن مجهولاتتان آغاز کنید.