
امنح وكلاء البرمجة جهازًا افتراضيًا لينكس قابلًا للتصرف، وليس حاسوبك المحمول.
امنح وكيل البرمجة آلة Linux خاصة به قابلة للتخلص منها، لا آلتك.
التثبيت · البدء السريع · لماذا آلة افتراضية؟ · كيف يعمل · مقارنة بـ · الأسئلة الشائعة · التوثيق
لا يكون وكيل البرمجة مفيدًا إلا عندما تتيح له أن يفعل الأشياء فعليًا: تثبيت
الحزم، وتشغيل الكود الذي يكتبه، وتشغيل الخوادم، واستخدام الشبكة. على آلتك
الخاصة، يتركك ذلك أمام خيارين سيئين. إما أن توافق على كل أمر (وتظل تراقب
نافذة موافقة كل بضع ثوانٍ)، أو تشغّل --dangerously-skip-permissions وتأمل
ألا يكون أي شيء مهم على بُعد أمر rm -rf واحد أو رمز مميز مسرّب واحد.
clawk هو الخيار الثالث. انتقل بـ cd إلى مستودع، واكتب clawk، وسيعمل Claude Code (أو
Codex، أو pi، أو صدفة) داخل آلة Linux افتراضية قابلة للتخلص منها (كودك مُثبَّت
بالداخل، وصلاحيات الجذر في الضيف، دون مطالبات أذونات) بينما تبقى ملفاتك وسلسلة مفاتيحك
وبقية آلتك بعيدة عن المتناول. يحصل الوكيل على آلة
خاصة به بدلًا من آلتك.
أمر واحد للوصول إلى وكيل عامل؛ محاولة لإرسال بيانات إلى
خادم غير معروف، حظرتها قائمة السماح الشبكية؛ ويستأنف clawk attach
الجلسة لاحقًا.
الحد الفاصل ليس قاعدة في توجيه يمكن إقناع الوكيل بتجاوزها. إنه آلة منفصلة، والمنافذ الوحيدة هي تلك التي ثبّتّها أنت. من صدفة داخل بيئة معزولة:
$ curl https://tracker.evil.example # not on the allow-list: blocked
curl: (7) Failed to connect to tracker.evil.example port 443 after 2 ms: Connection refused
$ cat ~/.ssh/id_rsa # your keys never entered the VM
cat: /home/agent/.ssh/id_rsa: No such file or directory
$ git push # ...yet this works: ssh-agent is forwarded
Enumerating objects: 5, done.
للإنصاف بشأن القيود، تمنع قائمة السماح الاتصالات بخوادم غير معروفة، وليس تلك التي سمحت بها: github.com مسموح به مسبقًا ويمكن لـ ssh-agent المُمرَّر أن يدفع، لذا تعامل مع أي شيء يستطيع الوكيل قراءته على أنه شيء يمكنه نشره. يوضح نموذج الأمان هذا بالتفصيل.
وإذا أفسد الوكيل الآلة الافتراضية، فشغّل clawk destroy && clawk: آلة افتراضية
جديدة، نفس المستودع، و--resume يستعيد المحادثة.
[!IMPORTANT] قبل الإصدار 1.0 وبوتيرة سريعة. توقّع تغييرات كاسرة بين الإصدارات وحوافّ خشنة أحيانًا؛ يمكن أن تنكسر الأمور وستنكسر. يُرجى فتح issues؛ تلك الملاحظات تُشكّل الإصدار 1.0.
rm -rf أو تثبيت الحزم أو الشيفرة غير الموثوقة الوصول
إلى مضيفك أو ملفاتك أو أي شيء لم تشاركه صراحةً.cd إلى مستودع وشغّل clawk. لا حاجة إلى
Dockerfile أو devcontainer أو ملف إعداد. أول إقلاع يبني rootfs من
صورتك؛ وكل إقلاع بعده يستغرق ثوانٍ.git push دون دخول المفاتيح إلى الآلة الافتراضية.clawk بيئة محلية عامة الغرض لوكلاء البرمجة المستقلين. الآلة الافتراضية هي المقصد: إنها آلة كاملة يمكن للوكيل امتلاكها، وليست عملية مغلّفة بسياسة على الآلة التي تستخدمها.
/dev/kvm، لذا تتصرف الأدوات كما تقول وثائقها، دون مفاجأة من
مرشّح syscall./etc، حمّل وحدة،
اربط منفذًا ذا امتياز. إنه صندوق الوكيل لإعادة تهيئته.clawk destroy && clawk، مع بقاء مستودعك
ومحادثاتك دون مساس على المضيف.هذا المزيج يشغّل أحمال عمل تميل صناديق رمل العمليات المقيّدة إلى معارضتك فيها:
لا شيء من هذا هو المنتج؛ clawk مخصص لعمل الوكلاء المحلي عمومًا. Docker وKubernetes مجرد أوضح مثال على "يحتاج آلة حقيقية، لا عملية داخل صندوق رمل."
يتطلب macOS 14+ على Apple silicon. (Linux مدعوم عبر firecracker وهو تجريبي حاليًا — ابدأ بـ docs/linux-quickstart.md، الذي يغطي الإعداد وسير العمل والثغرات. هذا README يركّز على macOS أولًا.)
brew install clawkwork/tap/clawk
من المصدر (المساهمون، أو إذا كنت لا تستخدم Homebrew)، يتطلب Go 1.26+:
git clone https://github.com/clawkwork/clawk && cd clawk
make install
في كلتا الحالتين لا توجد أدوات إضافية مطلوبة على المضيف: لا Docker، ولا qemu، ولا sudo. الـ hypervisor هو Virtualization.framework من Apple، مرتبط داخل الملف التنفيذي، والملفات التنفيذية للإصدارات تحمل الوكيل داخل الضيف (in-guest agent) مبنيًا مسبقًا — لذا لا تحتاج إلى سلسلة أدوات Go إلا إذا بنيت من المصدر، وفي هذه الحالة ستكون لديك بالفعل. عند التشغيل الأول يتم فحص أي شيء مفقود وعرض إصلاحه.
إلغاء التثبيت: نفّذ clawk destroy على صناديقك الرملية (sandboxes)، ثم rm -rf ~/.clawk، ثم أزل الملف التنفيذي باستخدام brew uninstall clawk (أو احذفه من $GOBIN إذا كان التثبيت من المصدر). لم يتم تثبيت أي شيء آخر: لا توجد مهام launchd؛ فخدمات daemon الخاصة بكل صندوق رملي هي عمليات عادية تنتهي مع أجهزتها الافتراضية.
الحالة اليومية، صندوق رملي للدليل الذي أنت فيه:
cd ~/code/my-project
clawk # boot a sandbox for this dir + attach claude
clawk run shell # drop into a shell in the same sandbox
clawk run codex # or another agent: codex, pi, opencode, shell
clawk down # stop the VM (repo + agent state persist)
clawk attach # come back later — boots if stopped, reattaches claude
clawk destroy # remove the VM (conversation history is kept)
خيارات شائعة: