عمق ۱ · ۱۷۸ ثانیه
راهبندی که پایین میآید
در فایل دستورها نوشته «همیشه بررسی را اجرا کن» و عامل دو بار اجرا نکرد. چرا دستور فشاری قوی است و نه تضمین، و هوک چطور هارنس را وادار میکند هر بار انجامش دهد.
دربارهی این ویدیو
در فایل دستورهایتان با حروفِ درشت نوشتهاید: بعد از ویرایشِ گزارش، همیشه python check_report.py را اجرا کن. بیشترِ روزها عامل همین کار را میکند. اما این هفته دو بار گزارشی را ویرایش کرد و رد شد، و هر دو بار گزارش خطایی داشت که بررسی پیدایش میکرد.
برای مدل، دستور متنی در زمینهی آن است. مدل گامِ بعد را از همهی چیزهایی که آنجاست پیشبینی میکند، و دستور اجرای بررسی را خیلی محتمل میکند، اما نه حتمی؛ بهخصوص در نشستی طولانی که متنهای بیشتر و بیشتری با هم رقابت میکنند. دستور فشاری قوی است، نه تضمین.
اما هارنس در هر فراخوانیِ ابزار حاضر است. هوک فرمانی است که هارنس در لحظهای معین از کارِ عامل خودکار اجرا میکند، هر بار که آن لحظه برسد، مدل هر چه در سر داشته باشد. در Claude Code رویدادهای اصلیِ هوک اینها هستند: UserPromptSubmit (پیامی فرستادهاید)، PreToolUse (پیش از اجرای ابزار، که هوکِ اینجا میتواند جلویش را بگیرد)، PostToolUse (پس از اجرا، برای بررسی یا مرتب کردن) و Stop (وقتی عامل میخواهد کار را تمام کند)، و روی هم بیش از سی رویداد.
هوکِ PreToolUse میتواند پیش از هر فرمانِ شل اسکریپتی کوچک اجرا کند؛ اگر فرمان rm -rf داشته باشد، اسکریپت با کدِ خروجِ ۲ تمام میشود، فرمان هرگز اجرا نمیشود و دلیلش به شکلِ نتیجهی ابزار به مدل برمیگردد تا راهِ دیگری امتحان کند. کدِ خروجِ ۰ یعنی مشکلی نیست، ادامه بده. هوکِ PostToolUse میتواند بعد از هر ویرایش یک قالببند یا همان بررسیِ گزارش را اجرا کند. هوکِ Stop میتواند تستها را اجرا کند و اگر رد شدند عامل را سرِ کار برگرداند، تا «تمام شد» همیشه یعنی تستها قبول شدهاند.
قضاوت فقط میتواند در کلمهها بیاید؛ قاعدهای که باید هر بار برقرار باشد و اسکریپتی میتواند بررسیاش کند جایش در هوک است. و چون هوک روی کامپیوترِ شما و با اجازههای شما اجرا میشود، فقط هوکهایی را به کار ببرید که خواندهاید و فهمیدهاید. این ویدیو هوک را در Knaph توضیح میدهد.
این ویدیو عمق ۱ از «هوک» را نشان میدهد.
یادگیری هوکمتن گفتار
- ۰:۰۰در فایل دستورها با حروفِ درشت نوشتهاید، بعد از ویرایشِ گزارش همیشه بررسی را اجرا کن.
- ۰:۰۶بیشترِ روزها عامل همین کار را میکند.
- ۰:۰۹اما این هفته دو بار گزارشی را ویرایش کرد و رد شد.
- ۰:۱۳هر دو بار گزارش خطایی داشت که بررسی پیدایش میکرد.
- ۰:۲۰چرا؟ برای مدل، دستور متنی در زمینه است.
- ۰:۲۵گامِ بعد را از همهی چیزهای آنجا پیشبینی میکند. اجرای بررسی خیلی محتمل است.
- ۰:۳۱اما در نشستی طولانی، با متنهای بیشتر و بیشتر، خیلی محتمل یعنی حتمی نیست.
- ۰:۳۷دستور فشاری قوی است. نه تضمین.
- ۰:۴۲پس چه کسی در تکتکِ ویرایشها حاضر است؟ هارنس.
- ۰:۴۶هوک فرمانی است که هارنس در لحظهای معین، هر بار، اجرا میکند.
- ۰:۵۲وقتی پیامی میفرستید. پیش از اجرای ابزار. بعد از اجرا. وقتی عامل میخواهد تمام کند.
- ۰:۵۹Claude Code بیش از سی لحظهی اینطوری دارد.
- ۱:۰۴این هوکی است که جلو را میگیرد.
- ۱:۰۷پیش از هر فرمانِ شل، هارنس اسکریپتی کوچک اجرا میکند.
- ۱:۱۱مدل فرمانی میخواهد که یک پوشه را کامل پاک میکند.
- ۱:۱۵اسکریپت با کدِ خروجِ دو تمام میشود. راهبند پایین میآید. فرمان اجرا نمیشود.
- ۱:۲۱دلیلش به مدل برمیگردد، تا راهِ دیگری امتحان کند.
- ۱:۲۵کدِ خروجِ صفر یعنی مشکلی نیست، ادامه بده.
- ۱:۳۰هوکِ بعد از اجرای ابزار میتواند مرتب کند.
- ۱:۳۴بعد از هر ویرایش، هارنس قالببند را اجرا میکند. یا بررسیِ گزارش را.
- ۱:۳۹هر ویرایش. نه بیشترشان.
- ۱:۴۲مدل لازم نیست یادش بماند. هارنس پیشبینی نمیکند. فقط اجرا میکند.
- ۱:۴۸همان چیزی که دستور نمیتوانست قول بدهد.
- ۱:۵۲پس کدام کجا؟
- ۱:۵۴قضاوت فقط در کلمهها میآید. تابعهای کوتاه، توضیحِ تغییرها.
- ۱:۵۹قاعدهای که باید هر بار برقرار باشد و اسکریپتی میتواند بررسیاش کند، جایش در هوک است.
- ۲:۰۵معمولاً جایش در فایل دستورهاست. همیشه جایش در هوک است.
- ۲:۱۴یکی دیگر. هوکی برای وقتی که عامل میخواهد تمام کند.
- ۲:۱۸تستها را اجرا میکند. اگر رد شدند، عامل را سرِ کار برمیگرداند.
- ۲:۲۴پس تمام شد همیشه یعنی تستها قبول شدند.
- ۲:۲۸هوکها را سریع نگه دارید. هر بار اجرا میشوند.
- ۲:۳۴یک نکتهی احتیاطی. هوک روی کامپیوترتان، با اجازههای شما، هر بار اجرا میشود.
- ۲:۴۰فقط هوکهایی را که خواندهاید به کار ببرید.
- ۲:۴۳و مراقبِ پروژههایی باشید که هوکِ خودشان را میآورند. فرمانِ hooks نشانشان میدهد.
- ۲:۵۰دستور خواهش میکند. هوک مطمئن میشود.