
یک کاربر با اجرای مدلهای زبانی بزرگ (LLM) روی سختافزار خانگی، از هوش مصنوعی محلی خواست تا یک سیستم کنترل نسخه (Version Control System) شبیه Git بسازد. او این کار را نه برای رقابت با Git، بلکه برای سنجش توان مدلهای محلی انجام داد. لینوس توروالدز Git را در حدود ۱۰ روز ساخت؛ این مدل محلی توانست نمونهای مشابه را در چند ساعت با یک پرامپت اولیه بسازد.
هدف: نه جایگزین Git، بلکه یک اثبات مفهوم
به نوشته XDA، Git همچنان استاندارد طلایی کنترل نسخه است و قرار نبود چیزی برای فروش یا استفاده عمومی ساخته شود. مدل محلی نمیتواند بدون زمان توسعه زیاد و صدها پرامپت دقیق، همه موارد حاشیهای و سازگاریهای Git را پوشش دهد. هدف، ساخت نمونهای با مفاهیم اصلی Git بود: راهاندازی مخزن (Repository)، ذخیره محتوای فایلها بهصورت اشیای تغییرناپذیر (Immutable Objects)، شناسایی اشیا با هش (Hash)، پشتیبانی از عکسبرداری (Snapshot) و کامیت (Commit)، نگهداشتن اشارهگر به آخرین کامیت و بررسی تاریخچه کامل کامیتها همراه با امکان بازیابی فایلها از کامیت قبلی.
چالشها و محدودیتهای مدل
مدل به اینترنت دسترسی نداشت، API برای فراخوانی در اختیارش نبود و نمیتوانست از Git نصبشده روی سیستم استفاده کند. کاربر نیز قرار نبود کد را اصلاح یا دخالت کند؛ مدل باید خودش کد را مینوشت، بررسی میکرد و خطاها را برطرف میساخت. مدل مورد استفاده Qwen3.6:27b_Q4_K_M بود که روی Ollama و Open WebUI و روی سروری با پردازنده AMD Threadripper و کارت گرافیک RX 7900 XT با ۲۰ گیگابایت حافظه VRAM اجرا میشد.
پرامپت اولیه چه میخواست؟
پرامپت از مدل میخواست یک سیستم کنترل نسخه کوچک شبیه Git در مسیر /opt/qwen-workspace/tinyvcs بسازد، فقط از کتابخانه استاندارد پایتون استفاده کند، Git را فراخوانی نکند و متادیتا را در .tinyvcs ذخیره کند. فرمانهای موردنیاز شامل init، commit -m MESSAGE، log، status و checkout COMMIT بود. الزامات نیز شامل عکسبرداری بازگشتی (Recursive Snapshot)، پشتیبانی امن از فایلهای باینری (Binary-Safe)، شناسههای قطعی کامیت بر پایه SHA-256، پیوندهای والد (Parent Links)، وضعیت افزوده/تغییریافته/حذفشده، بازیابی دقیق وضعیت ردیابیشده در checkout، امتناع از checkout در صورت بازنویسی کارهای کامیتنشده و خطای تمیز در برابر متادیتای خراب میشد. ساخت فایلهای tinyvcs.py، README.md و DEVLOG.md و اجرای آزمونهای متعدد نیز خواسته شده بود.
مدل خودش باگ پیدا کرد
پس از نخستین دور تولید کد، مدل بلافاصله چند مشکل را شناسایی کرد؛ از جمله باگ تابع _collect_files در هرس کردن .tinyvcs و منطق مقایسه کامیتها. در ادامه نیز به مشکل آزمون باینری برخورد و آن را اصلاح کرد. در نهایت ۳۶ ادعا (Assertion) در ۱۴ مورد آزمون با موفقیت پاس شد. اما در یک دموی واقعی، باگ مهمی پیدا شد: فایل victim.txt تغییر کرده و کامیت نشده بود، ولی checkout با موفقیت انجام شد و تغییرات کامیتنشده بیصدا از بین رفت. مدل سپس موظف شد آزمون رگرسیون (Regression Test) برای این حالت اضافه کند، مجموعه آزمونها را دوباره اجرا کند و DEVLOG.md را با شرح خطا و اصلاح بهروزرسانی کند.
tinyvcs در عمل چگونه بود؟
پس از اصلاح مواردی مانند تابع _read_object()، اعتبارسنجی طرحواره (Schema Validation) محتوای درخت، مدیریت صریح پیوندهای نمادین (Symlinks) و تبدیل DEVLOG به ژورنال واقعی، نمونه ساختهشده در آزمونها نسبتاً خوب کار کرد. کاربر فایل tinyvcs.py را دانلود کرد و در پوشهای به نام git قرار داد. ساخت فایل و کامیت اولیه روان انجام شد؛ ساخت فایل جدید پس از یک اشتباه تایپی در نام فایل نیز کار کرد و بهروزرسانی و کامیت فایلهای موجود هم بدون خطا بود.
با این حال، tinyvcs نسخهای بسیار ابتدایی از Git است. این پروژه اشیای محتوا-محور (Content-Addressed Objects)، شناسههای مبتنی بر SHA، حبابها (Blobs) برای محتوای فایل و اشیای درخت (Tree Objects) برای عکسبرداری دارد؛ اما هنوز برچسب (Tag)، مخزن راه دور (Remote)، شاخه (Branch)، تفاوتسنجی (Diff)، ادغام (Merge) و قواعد نادیدهگرفتن (Ignore Rules) در آن وجود ندارد. به گفته نویسنده، میشد این قابلیتها را با چند پرامپت و آزمون بیشتر به مدل محلی اضافه کرد. با این وجود، tinyvcs بهعنوان یک اثبات مفهوم کوچک، شگفتآور خوب کار میکند و نمونهای از توان مدلهای امروزی در ساخت سریع یک ایده نرمافزاری است.
Open WebUI نیز یکی از بهترین راهها برای تعامل با مدلهای هوش مصنوعی میزبانیشده محلی در شبکه خانگی معرفی شده است.