پوشهی کار چیست
در فصل ۰.۸ دیدی که terminal همیشه داخل یک پوشه ایستاده. برای ایجنت همان پوشه، پوشهی کار است — و مرزِ دیدش.
سه نتیجهی مستقیم که خیلی چیزها را روشن میکند:
- فایلهای بیرون آن پوشه را نمیبیند. اگر فایلت روی دسکتاپ است و تو در پوشهی دیگری ایستادهای، برایش وجود ندارد.
- زیرپوشهها را میبیند. پوشهی کار و هر چیزی که داخلش است.
- و همین مرز، یک لایهی محافظت است. اگر در زمین بازی ایستادهای (فصل ۰.۹)، حتی اگر کاری اشتباه کند، بیرون آن نمیرود.
پس «کجا ایستادهام؟» اولین سؤال هر session است — و با
pwd جوابش را میگیری.
چه فایلهایی را میخواند و کِی
یک تصور غلط رایج: «پوشه را باز کرده، پس همهی فایلها را خوانده.» نه.
ایجنت معمولاً اسم فایلها را میبیند ولی محتوایشان را فقط وقتی میخواند که لازم شود. و این عمدی و درست است — به دلیلی که در فصل ۱.۳ فهمیدی: خواندن هر فایل، context را بزرگتر و شلوغتر میکند.
پس رفتار عادی این است: فهرست پوشه را میگیرد ← از اسمها حدس میزند کدامها مربوطاند ← همانها را باز میکند.
و این یک نتیجهی عملیِ مهم دارد: اسم فایلهایت مهم است. فایلی
که اسمش سند نهایی(۲).txt است، شانس کمتری دارد که درست انتخاب شود
تا فایلی که اسمش قرارداد-شرکت-الف.txt است. این همان چیزی است که
در درس ۶.۲ بهعنوان «نامگذاری، تصمیم طراحی است» برمیگردد.
و یک استثنا: فایل قانون — آن را در شروع هر session خودش میخواند، بدون اینکه بگویی (فصل ۱.۴).
مسیر فایل: چطور دقیق آدرس بدهی
وقتی میخواهی فایل مشخصی را ببیند، دقیق آدرس بده. دو شکل آدرس:
- نسبی — از پوشهی کار. مثل
داده/فروش.csv. کوتاهتر است و معمولاً همین را میخواهی. - کامل — از ریشه. مثل
/Users/ali/playground/داده/فروش.csv. وقتی لازم است که هیچ ابهامی نباشد.
سه تلهی رایج در کار فارسی:
- فاصله در نام فایل.
گزارش فروش.txtدر terminal باید داخل گیومه بیاید. در گفتوگو با ایجنت مشکلی نیست، ولی اگر خودت دستور میزنی حواست باشد. - نام فارسی با ی و ک عربی. دو فایل که به چشم یکیاند ولی برای کامپیوتر دو تا هستند — همان تلهای که در فصل ۰.۲ در ستون مشتری دیدی.
- «آن فایل» یا «فایل دومی». اگر چند فایل هست، اسمش را بگو. اشارهی مبهم یعنی حدس، و حدس یعنی خطای بیصدا.
چه چیزی را نمیبیند (و چرا مهم است)
این مهمترین بخش این فصل است، چون بیشتر سوءتفاهمها از اینجا میآید.
نمیبیند:
- هر چیزی بیرون پوشهی کار — دسکتاپ، پوشهی دانلود، درایو دیگر.
- ایمیل، مرورگر، پیامرسان تو. مگر اینکه صریح وصلشان کنی — که موضوع فصل ۳.۶ است.
- چیزی که در session قبلی گفتی. فصل ۱.۴: حافظه پیشفرض وجود ندارد.
- صفحهی تو. نمیداند در اکسل چه بازی است یا چه خطایی دیدی — تا وقتی متنش را نگویی.
- و context سازمانی تو. اینکه چرا کارها اینجا اینطورند. این را هیچ فایلی هم نمیگوید (فصل ۰.۶).
بهخاطر بسپار وقتی جوابی گرفتی که بیربط بود، اولین سؤال این نباشد که «چرا نفهمید؟» — این باشد که «چه چیزی را نمیدید که من فرض کرده بودم میبیند؟» تقریباً همیشه جواب همین است.
و یک حالت خاصِ ظریف: فایلی که تو باز کردهای و ذخیره نکردهای. ایجنت نسخهی روی دیسک را میخواند، نه آنچه روی صفحهی تو باز است. اگر تغییری دادهای و ذخیره نکردهای، او نسخهی قدیمی را میبیند.
تمرین (فکری)
برای یک کار، فهرست کن ایجنت به چه فایلهایی نیاز دارد. همان کاری که در فصل ۲.۴ برایش spec نوشتی.
سه ستون بنویس: لازم دارد · لازم ندارد ولی در پوشه است · لازم دارد ولی جایی است که نمیبیند.
ستون سوم مهمترین است — آنها همان چیزهایی هستند که اگر حواست نباشد، کار نیمهکاره میماند و علتش را نمیفهمی.
پاسخنامه — یک نمونهی خوب را ببین
لازم دارد: فایل سفارشهای این هفته · فایل نمونهی گزارش هفتهی قبل (برای قالب).
لازم ندارد ولی در پوشه است: فایلهای یازده هفتهی قبل · چند تصویر که اشتباهی آنجا کپی شدهاند. «اینها فقط انتخاب را سختتر میکنند — بردمشان به یک زیرپوشهی آرشیو.»
لازم دارد ولی نمیبیند: «فهرست کدهای محصول که در یک شیت آنلاین است، بیرون پوشه. و یک قاعدهی داخلی که فقط در ذهن خودم است — سفارشهای زیر ۱۰ عدد در گزارش نمیآیند.»
تصمیم: «شیت را به CSV گرفتم و داخل پوشه کپی کردم. قاعدهی ذهنی را در فایل قانون نوشتم، چون در هر هفته لازمش دارم.»
چرا این جواب خوب است: ستون سوم هم یک فایل دارد هم یک دانستهی نانوشته. دومی همان چیزی است که آدمها فراموش میکنند که ایجنت نمیداندش.