پرش به محتوای اصلی
پرش به محتوای مقاله

درون سازوکار DuckWalk؛ از تشخیص استرس تا گفتگوهای سقراطی در حین حرکت

·۲۰ مهر ۱۴۰۵۸ دقیقه مطالعه
اردک پلاستیکی که تا بیرون نروی با حرف نمی‌زند
اردک پلاستیکی که تا بیرون نروی با حرف نمی‌زند
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

نخستین پیاده‌سازی یک سیستم «قطع اجباری» (Forced Disconnect) که با تحلیل سیگنال‌های محلی کدنویسی، کاربر را به محیط فیزیکی می‌برد و بستر ذهنی را از طریق مدل‌های محلی حفظ می‌کند.

تصور کنید در میانهٔ یک باگ پیچیده گیر کرده‌اید و ترس از دست دادن رشتهٔ افکار، شما را ساعت‌ها به صندلی زنجیر کرده است. این اصطکاک ذهنی برای توسعه‌دهنده‌ای که می‌خواهد استراحتی کوتاه داشته باشد، ناشی از این ترس است که فاصله گرفتن از میز کار به معنای از دست دادن یک وضعیت ذهنی پیچیده است. DuckWalk این هزینهٔ ذهنی را حذف می‌کند تا ترک کردن میز کار دیگر به معنای از دست دادن بستر ذهنی نباشد. این ابزار با خودکارسازی فرآیند ایجاد «ردپای ذهنی» (Breadcrumb)، تضمین می‌کند که خروج از محیط کار دیگر احساس فقدان زمینه منجر به استرس نشود.

این سیستم که در جریان چالش هوش مصنوعی متن‌باز Hacktoberfest معرفی شد، سیگنال‌های کدنویسی را رصد می‌کند تا دقیقاً بفهمد چه زمانی برنامه‌نویس باید از صفحه نمایش فاصله بگیرد. برخلاف ابزارهای بهره‌وری که سعی دارند شما را در حالت «جریان» (Flow) نگه دارند، DuckWalk بر این فرض است که بهترین راه برای شکستن یک بن‌بست فنی، حرکت فیزیکی است. در واقع، این ابزار صفحه نمایش را کوتاه‌ترین بخش تجربه می‌بیند و حل مسئله را به یک گفتگوی صوتی در حین پیاده‌روی منتقل می‌کند. این رویکرد یادآور تلاش‌های مشابه برای کاهش وابستگی به نمایشگر است، مشابه آنچه در پروژه Haikamera برای مبارزه با اعتیاد به نمایشگر مشاهده کردیم. فلسفه طراحی این سیستم ساده است: اگر قابلیتی باعث نمی‌شد فشار کاری از دوش انسان به دوش هوش مصنوعی منتقل شود، از نسخه نهایی حذف شده است.

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

تشخیص وضعیت درماندگی (The Stuck Detector)

طبق مستندات پروژه، این سیستم از TabPFN برای طبقه‌بندی پنج‌دقیقه‌ایِ بازه‌های کاری به دو حالت «جریان» یا «درماندگی» استفاده می‌کند. این مدل ۶ سیگنال محلی را تحلیل می‌کند تا وضعیت کاربر را بسنجد:

  • زمان سپری‌شده از آخرین استراحت
  • تعداد دفعات شکست در اجرای تست‌ها
  • تعداد دفعات تغییر در یک فایل مشابه
  • نسبت عملیات Undo به کل ویرایش‌ها

برای جلوگیری از مزاحمت و آزار کاربر، سیستم دارای مکانیسم «حفاظت از جریان» است. این بدان معناست که اگر کاربر در حال تجربه یک رشته ویرایش‌های سریع و موفق باشد (جایی که چیزی خراب نشده است)، سیستم او را تحریک به ترک میز نمی‌کند. در عوض، ابزار پیشنهاد خود را تا رسیدن به یک وقفه طبیعی، مانند یک Commit موفق یا سبز شدن تست‌ها، نگه می‌دارد. این امر تضمین می‌کند که هوش مصنوعی در میانهٔ یک فکر متصل، مزاحم برنامه‌نویس نشود.

حفظ بستر ذهنی با Gemma

به محض عبور از آستانه درماندگی، مدل Gemma 4 (به‌طور خاص نسخه محلی e4b) وارد عمل می‌شود. این مدل یک «ردپای ذهنی» (Breadcrumb) استخراج می‌کند که شامل موارد زیر است: شاخه (Branch) فعلی، تغییرات کد (Diff) و آخرین خطای ترمینال. سپس این اطلاعات را در یک یادداشت فشرده ۶۰ کلمه‌ای تبدیل می‌کند. این یادداشت از طریق یک سرور Push خود-میزبان (Self-hosted) به گوشی کاربر ارسال می‌شود تا تضمین شود هیچ کد یا پرومپتی هرگز با سرورهای شخص ثالث تماس پیدا نمی‌کند.

کاربران می‌توانند بین مدل‌های مختلف برای پردازش انتخاب کنند. در حالی که gemma4:e4b به صورت پیش‌فرض به صورت محلی اجرا می‌شود، سیستم برای ماشین‌هایی که توان استنتاج محلی ندارند، از gemma4:31b-cloud پشتیبانی می‌کند. این ردپای ذهنی همان ترفند اساسی است که ترک میز کار را امن می‌کند؛ مدل می‌نویسد شما کجا بودید تا مجبور نباشید خودتان آن را به خاطر بسپارید.

پیاده‌روی سقراطی

پس از فعال کردن حالت Walk در اپلیکیشن Flutter، صفحه نمایش سیاه می‌شود و تنها یک دکمه توقف باقی می‌ماند. در این مرحله، هوش مصنوعی در نقش یک راهنمای سقراطی ظاهر می‌شود. به جای دادن پاسخ مستقیم یا ارائه کد اصلاح‌شده، مدل با پرسیدن سؤالات هدایت‌شده، برنامه‌نویس را به سمت راه حل می‌برد. تعامل در این مرحله کاملاً صوتی است و صفحه نمایش در تمام مدت خاموش می‌ماند.

برای دستیابی به این پروفایل رفتاری خاص، سازنده مدل Qwen3.5-4B را با استفاده از ابزار Tinker روی گفتگوهای فیلترشده‌ای از مدل‌های معلم (Teacher Dialogues) تنظیم دقیق (Fine-tuning) کرده است. هدف از این کار ایجاد یک تمرکز محدود بود: مدل باید همیشه دقیقاً یک سؤال بپرسد، هرگز راه حل را مستقیماً نگوید و پاسخ‌هایی ساده و کوتاه ارائه دهد.

ارزیابی و بهینه‌سازی مدل

فرآیند تنظیم دقیق مدل با استفاده از یک رابریک (Rubric) ثابت شامل ۸ معیار اندازه‌گیری شد. نتایج نشان‌دهنده جهشی قابل توجه در عملکرد بود:

  • مدل بدون تنظیم: ۶۸٪ پایبندی به دستورالعمل‌ها
  • مدل تنظیم‌شده: ۹۸٪ پایبندی به دستورالعمل‌ها

زمانی که این مدل با نسخه ابری Gemma (که امتیاز ۸۰٪ داشت) مقایسه شد، مدل 4B به کیفیتی برابر دست یافت. یک داور مستقل دوم نیز تأیید کرد که این نتایج در محدوده نویز آماری هستند و تفاوت معناداری ندارند. جزئیات این یافته‌ها و متدولوژی کامل در فایل eval/results.md مستند شده است.

مهندسی برای قابلیت اطمینان (Reliability)

کل این فرآیند به عنوان یک گردش‌کار Temporal مدیریت می‌شود. این معماری به سیستم اجازه می‌دهد تا شکست‌های دنیای واقعی را مدیریت کند؛ برای مثال، اگر گوشی برای ۹۰ دقیقه Wi-Fi را از دست بدهد یا یک فرآیند Worker در میانه جمله کرش کند، سیستم متلاشی نمی‌شود. گردش‌کار Temporal مدیریت ردپا، ارسال هشدار، انتظار برای حرکت، حلقه صوتی و خلاصه نهایی را بر عهده دارد و برای هر فراخوانی LLM، مکانیسم تلاش مجدد (Retry) را اجرا می‌کند.

طبق مستندات پروژه، سازنده سیستم را با چهار تمرین شکست (Failure Drills) که در docs/traces/phase8-drills.md آمده است، آزمایش کرده است:

  1. از کار افتادن Ollama: در این حالت، هشدارها و خلاصه‌ها به جای متوقف کردن پیاده‌روی، به متن‌های پیش‌فرض (Canned text) تغییر می‌یابند.
  2. راه‌اندازی مجدد Worker: در یک ترنسکریپت واقعی مشاهده شد که یک Worker در میانه گفتگو کشته شد و ۵ ثانیه بعد دوباره فعال شد، بدون اینکه کلمه‌ای از دست برود. در دمو، وقتی Duck درباره شکست‌های متناوب می‌پرسد و فرآیند کشته می‌شود، پس از بازگشت می‌گوید: «ببخشید، برای لحظه‌ای ارتباطم را از دست دادم. کجا بودیم؟»
  3. آفلاین شدن گوشی: اپلیکیشن قطع اتصال را مدیریت کرده و پس از اتصال مجدد، ترنسکریپت را با لپ‌تاپ همگام می‌کند.
  4. ورودی نامعتبر در تشخیص‌دهنده: سیستم به جای هنگ کردن، با یک خطای واضح متوقف می‌شود.

بهینه‌سازی عملکرد

با استفاده از ردیابی ایجنت‌های Sentry، توسعه‌دهنده یک گلوگاه در تبدیل گفتار به متن (STT) شناسایی کرد. Sentry هر مرحله را با برچسب‌های مدل و تعداد توکن‌ها ردیابی می‌کند. زمان‌بندی هر نوبت نشان داد که whisper.cpp حدود ۴ ثانیه زمان می‌برد، که به طور قابل توجهی کندتر از فراخوانی LLM (۰.۷۶ ثانیه) یا TTS (۰.۶۳ ثانیه) بود.

بررسی‌ها نشان داد که whisper.cpp به طور پیش‌فرض از جستجوی 5-beam استفاده می‌کند. تغییر این تنظیم به رمزگشایی گمانه‌زنانه (Greedy decoding) زمان را به ۲.۶ ثانیه کاهش داد که افزایشی ۳۶ درصدی در سرعت بود، در حالی که متن ترنسکریپت دقیقاً یکسان باقی ماند. این اعداد قبل و بعد در docs/traces/phase8-bottleneck.md ثبت شده‌اند.

معماری محلی-محور (Local-First)

این پروژه بر حاکمیت محاسباتی تأکید دارد. با استفاده از Ollama، whisper.cpp (مدل base.en)، Piper (مدل en_US-lessac-medium) برای تبدیل متن به گفتار و استنتاج محلی برای TabPFN، سیستم تضمین می‌کند که هیچ Diff یا ترنسکریپتی از لپ‌تاپ خارج نشود. تنها داده‌های خارجی، متادیتای Sentry است که زمان‌بندی را ردیابی می‌کند و نه محتوا را. این تمرکز بر پردازش محلی برای حفظ حریم خصوصی و استقلال کاربر، مشابه رویکردی است که در سیستم شناسایی آفلاین BioCLIP برای شناسایی گونه‌های زیستی به کار گرفته شد.

این رویکرد اصطکاک مالی استفاده از هوش مصنوعی را حذف می‌کند. چون هزینه اجرای روزانه ابزار صفر است، کاربر در این تردید نمی‌کند که اجازه دهد هوش مصنوعی چندین بار در روز در شیفت کاری‌اش مداخله کند. سازنده اشاره کرد ابزاری که کاربر به دلیل صورت‌حساب مالی در استفاده از آن تردید کند، ابزاری است که در نهایت خاموش می‌شود. این استراتژی «هوش مصنوعی روی دستگاه» (On-device AI) برای کاربردهای حیاتی در محیط‌های محدود، پیش‌تر در پروژه MusPatrol برای مبارزه با تب دنگی نیز به اثبات رسیده بود.

الزامات فنی و استقرار

برای کسانی که به دنبال پیاده‌سازی این گردش‌کار محلی هستند، پروژه در گیت‌هاب در مخزن chestlyace/DuckWalk در دسترس است. این سیستم به محیط لینوکس x86_64 و وابستگی‌های زیر نیاز دارد:

  • uv, Ollama, git, cmake, curl و یک کامپایلر C++
  • پایتون ۳.۱۲
  • Temporal CLI

نصب از طریق bash scripts/setup.sh انجام می‌شود که وابستگی‌ها را نصب کرده و مدل پیش‌فرض gemma4:e4b را دریافت می‌کند. همچنین فایل .env از روی .env.example ساخته می‌شود که کاربران باید SENTRY_DSN خود را در آن وارد کنند. کاربران می‌توانند با اجرای uv run python scripts/doctor.py یک جدول Pass/Fail برای هر سرویس مشاهده کنند یا از فلگ --sentry-test برای تأیید گزارش خطا استفاده کنند. برای استفاده از مدل ابری، کاربران باید OLLAMA_MODEL=gemma4:31b-cloud را تنظیم کنند.

نتایج نهایی و محدودیت‌ها

تست‌های قابلیت اطمینان شامل یک اجرای ۲ ساعته با ۲۳ جلسه پیاده‌روی متوالی در ۵ سناریوی باگ و ۳ گفتگوی از پیش تعیین شده بود که منجر به صفر شکست شد. این موضوع از طریق تاریخچه گردش‌کار Temporal پس از یک ریبوت کامل ماشین در طول شب تأیید شد که دوام سیستم را فراتر از فایل‌های لاگ ساده ثابت کرد.

تنها شکاف باقی‌مانده، دقت (Precision) و فراخوانی (Recall) تشخیص‌دهنده وضعیت درماندگی است. به دلیل اینکه برچسب‌گذاری دستی بازه‌های کاری واقعی قبل از ضرب‌الاجل تکمیل نشد، اعداد مصنوعی ارائه نشده است. با این حال، فایل ml/train_detector.py آماده است تا به محض در دسترس قرار گرفتن داده‌های برچسب‌گذاری شده، منحنی یادگیری واقعی را تولید کند.

مشارکت در دسته‌های جایزه

DuckWalk از طریق پیاده‌سازی‌های خاص خود، چندین دسته از هوش مصنوعی متن‌باز را هدف قرار داده است:

  • بهترین استفاده از Gemma: مدل Gemma مدیریت ردپا، هشدارها، انتخاب حالت پیاده‌روی و خلاصه بازگشت را بر عهده دارد. همچنین به عنوان مدل معلم برای داده‌های تنظیم دقیق و داور ارزیابی عمل کرده است.
  • بهترین استفاده از TabPFN: طبقه‌بندی بازه‌های ۵ دقیقه‌ای به «درماندگی» یا «جریان» را با ۶ سیگنال محلی، بدون نیاز به مهندسی ویژگی یا تنظیم هایپرپارامترها انجام می‌دهد.
  • بهترین استفاده از Tinker: برای ارتقای یک مدل 4B از ۶۸٪ به ۹۸٪ در رابریک رفتاری ۸ معیاره استفاده شد و راهی مقرون‌به‌صرفه برای رسیدن به کیفیت مدل‌های ابری فراهم کرد.
  • بهترین استفاده از Temporal: تضمین می‌کند که قطع سیگنال گوشی برای یک ساعت اتفاقی بی‌اهمیت باشد و گفتگو دقیقاً از همان جایی که قطع شده بود ادامه یابد.
  • بهترین استفاده از Sentry Agent Tracing: ردیابی مرحله‌به‌مرحله‌ای را فراهم کرد که بهینه‌سازی ۳۶ درصدی سرعت در خط لوله تبدیل گفتار به متن را ممکن ساخت.

این تغییر در تجربه توسعه‌دهنده نشان می‌دهد که مرز بعدی دستیارهای هوش مصنوعی تنها نوشتن سریع‌تر کد نیست، بلکه مدیریت وضعیت شناختی انسان است. DuckWalk با اجبار به قطع ارتباط فیزیکی، از دوره «جوشش» (Incubation) در حل مسئله بهره می‌برد که اغلب دور از کیبورد اتفاق می‌افتد.

گام بعدی شما

  • اگر در پروژه‌های بزرگ با بن‌بست‌های ذهنی مواجه می‌شوید، مخزن DuckWalk را برای پیاده‌سازی یک سیستم «ردپای ذهنی» محلی بررسی کنید.
  • برای کاهش تأخیر در سیستم‌های صوتی محلی، تنظیمات Beam Search را در whisper.cpp به Greedy Decoding تغییر دهید.
  • مدل‌های کوچک ۴ میلیاردی را برای وظایف خاص (مثل پرسشگری سقراطی) تنظیم دقیق کنید تا جایگزین مدل‌های ابری گران‌قیمت شوند.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این رویکرد با ترکیب حرکت فیزیکی و استنتاج محلی، استانداردهای جدیدی برای سلامت روان برنامه‌نویسان و حریم خصوصی کد تعریف می‌کند. تکیه بر مدل‌های لبه (Edge) نشان می‌دهد که آینده دستیارهای کدنویسی، خروج از محیط IDE است.

تأثیر برای ایران

به دلیل معماری Local-first و استفاده از Ollama، این ابزار کاملاً بدون نیاز به VPN یا پرداخت ارزی قابل اجراست و برای برنامه‌نویسان ایرانی که با محدودیت APIهای ابری مواجه‌اند، یک الگوی ایده‌آل است.

·نگاه ما
تحریریه دات‌هوش

DuckWalk فرضیه رایج درباره «افزایش سرعت کدنویسی» را به چالش می‌کشد و روی «مدیریت وضعیت شناختی» تمرکز می‌کند. جالب‌ترین بخش این ابزار، استفاده از مدل‌های بسیار کوچک (4B) برای جایگزینی مدل‌های عظیم است؛ این نشان می‌دهد که برای رفتارهای خاص (مثل متد سقراطی)، تنظیم دقیق یک مدل کوچک بسیار کارآمدتر از پرامپت‌نویسی برای یک مدل بزرگ است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.