كيف ترى ما ينفّذه وكيل البرمجة بالذكاء الاصطناعي على خوادمك
وكيلك يعمل على خادم إنتاج، والطرفية لا تقول إلا إنه يستدعي أداة. أي أمر نفّذ، وبماذا أجابت الآلة؟ نص الجلسة يخبرك بذلك بعد فوات الأوان. إليك كيف جعلنا ذلك مرئياً لحظة حدوثه، وما جرّبناه أولاً، وكيف تحصل على الشيء نفسه من دون تطبيقنا.
تسأل وكيل DevOps لماذا صارت واجهة API في الإنتاج بطيئة. يبدأ العمل. في طرفيته ترى سطراً يقول إنه يستدعي أداة، ثم آخر، ثم آخر. بعد ستة استدعاءات يخبرك أن القرص ممتلئ بنسبة 97 % ويعرض تنظيف مجلد السجلات.
ما الذي نفّذه فعلاً على تلك الآلة؟ أي du، وأي find، وهل حذف شيئاً بالفعل؟ الجواب موجود، لكنه في نص الجلسة، مكتوب بصيغة JSON، وتقرؤه بعد وقوع الأمر. على حاسوب محمول لا بأس بذلك. على خادم إنتاج، "بعد وقوع الأمر" متأخر جداً لتقول "انتظر، ليس هذا المجلد".
نحن نبني AgentsRoom، تطبيق سطح مكتب يشغّل وكلاء البرمجة ويمنحهم أدوات للوصول إلى خوادمك وقواعد بياناتك وعناقيدك. هذه قصة كيف جعلنا تلك الاستدعاءات مرئية لحظة حدوثها: النسخة التي لم تنجح، والأرقام وراء النسخة التي تنجح، وكيف تحصل على الشيء نفسه إن كنت لا تستعمل تطبيقنا.
الجواب المختصر
- الـCLI يريك أن أداة نُفّذت، لا الجلسة على الطرف الآخر. الأمر الكامل ومخرجاته يذهبان إلى نص الجلسة على قرصك.
- لتتابع مباشرةً، يجب أن يسجّل شيء ما كل استدعاء عند بدايته، لا عند انتهاء الجلسة.
- سجل واحد لكل اتصال ينجح. تبويب طرفية لكل أمر لا ينجح. قسنا 166 أمراً بعيداً في جلسة واحدة.
- أبقِ هذا السجل على جهازك. سطر أوامر على خادم إنتاج يحمل أسراراً وبيانات عملاء.
- من دون تطبيقنا: hook في Claude Code يضيف كل أمر صدفة إلى ملف يوصلك إلى معظم الطريق، ونص الجلسة يعطيك الباقي.
لماذا لا يكفي نص الجلسة على خادم
Claude Code وCodex وبقية واجهات CLI تسجّل كل شيء فعلاً. يكتب Claude Code ملف JSONL واحداً لكل جلسة تحت ~/.claude/projects/، وCodex ملفاً تحت ~/.codex/sessions/. كل استدعاء أداة موجود هناك بمدخلاته ونتيجته.
المشكلة ليست في الاكتمال، بل في التوقيت والشكل. نص الجلسة مكتوب للـCLI كي يستأنف الجلسة. تقرؤه بعد أن يتوقف الوكيل، وأنت تنقّب في أسطر JSON. وحين يعمل ثلاثة وكلاء في الوقت نفسه، تقرأ ثلاثة ملفات. أما طرفية الوكيل، المكان الذي تنظر إليه فعلاً، فلا تعرض إلا ملخصاً مطوياً لكل استدعاء.
بالنسبة إلى الشيفرة على حاسوبك، القراءة اللاحقة هي حلقة المراجعة العادية: تنظر إلى الفروقات قبل أن تُجري commit. الخادم لا فروقات فيه. systemctl restart أو DELETE يسري مفعوله لحظة تنفيذه.
ما جرّبناه أولاً، والأوامر الـ166
أداتنا البعيدة الأولى للوكلاء كانت تفتح اتصالاً في تبويب طرفية. بدا ذلك صحيحاً: المستخدم يرى الجلسة. لكنها فشلت بطريقة لم نتوقعها.
لم تمنح الأداة الوكيل أي وسيلة لقراءة ما حدث في التبويب الذي فتحه للتو. فتوقف الوكيل عن استعمالها في مشروع أحد المستخدمين. الحصيلة في تلك الجلسة: 16 استدعاءً لأداة الاتصال الخاصة بنا، و166 أمر sshpass نُفّذت عبر أداة الصدفة الخاصة بالوكيل، والوكيل يطلب كلمة المرور من المستخدم، والمستخدم يلصقها في المحادثة. انتهت بيانات اعتماد الإنتاج نصاً واضحاً في نصوص الجلسات، وفي ps aux أثناء تنفيذ كل أمر، وفي ملف تحت /tmp.
الدرس لم يكن "الوكلاء متهوّرون". الوكيل فعل الشيء الوحيد الذي كان ينجح. الأداة الآمنة التي لا تدع الوكيل يؤدي عمله يُلتفّ عليها، والالتفاف أسوأ من غياب الأداة.
فكتبنا ssh_exec: يرسل الوكيل أمراً واحداً، فينفّذه AgentsRoom على الاتصال المحفوظ وكلمة المرور تبقى في التطبيق، ثم يعيد المخرجات ورمز الخروج. لا يرى الوكيل بيانات الاعتماد أبداً، ولا سبب لديه ليبني سطر sshpass.
هذا حلّ مشكلة الأمان وخلق مشكلة رؤية. لو فتح كل ssh_exec تبويباً، لأنتجت تلك الجلسة 166 تبويباً. لذلك لم يفتح ssh_exec أي تبويب، وطوال شهرين كان المكان الوحيد لرؤية تلك الأوامر هو، مرة أخرى، محادثة الوكيل.
سجل واحد لكل اتصال
النسخة التي أطلقناها في 29 أكتوبر 2026 (AgentsRoom 1.242.0) تلتزم بقاعدة واحدة: لا تبويب لكل أمر. بدلاً من ذلك، يصل كل استدعاء إلى سجل، سجل واحد لكل اتصال.
- تبويب «النشاط» في اللوحة اليمنى، بجانب «الملفات» و«التغييرات» و«الاختبارات»، يعرض الاتصالات التي لمسها الوكلاء على شكل بطاقات (آخر أمر، الوكيل، الوقت، الحالة) وآخر 40 استدعاءً على خط زمني. يصفّي حسب الوكيل ويبحث في الأوامر وأسماء الاتصالات والمخرجات.
- سجل الاتصال يُقرأ مثل طرفية:
agent · time، ثم$ command، ثم المخرجات، ثمDone · exit 0 · 1.2 s. مخرجات SSH تتدفق مباشرةً، والعرض يتبع الأسفل إلى أن تمرّر للأعلى. زر واحد ينسخ السجل كاملاً نصاً. - شارات في رأس الوكيل، واحدة لكل خادم أو قاعدة بيانات أو عنقود لمسه ذلك الوكيل، مع نقطة خضراء أثناء الاستدعاء. نقرة واحدة تفتح ذلك السجل.
- شارة «وكيل يعمل» على سطر الاتصال في نوافذ «خوادم» و«قواعد البيانات» وKubernetes، فقط أثناء تنفيذ استدعاء.
السجل للقراءة فقط. لتكتب في الآلة بنفسك، يبقى تبويب SSH في نافذة «خوادم» هو المدخل. صفحة الميزة الكاملة هي اتصالات SSH لوكلاء الذكاء الاصطناعي، وجانب قواعد البيانات في اتصالات قواعد البيانات.
ما الذي يُسجَّل، وما الذي لا يُسجَّل
| الاستدعاء | في السجل | السبب |
|---|---|---|
ssh_exec (SSH، AWS SSM، WinRM) | نعم | الحالة الأساسية: أمر على آلة بعيدة، بلا تبويب خاص به |
ssh_transfer | نعم | ملف يُنسخ إلى خادم أو منه هو فعل على ذلك الخادم |
db_query، db_schema | نعم | استعلام SQL كما كتبه الوكيل، وأولى أسطر النتيجة |
kube_kubectl | نعم | يُعرض كسطر kubectl مع وسائطه |
commands_run، ssh_connect | لا | يفتحان أصلاً تبويب طرفية تستطيع متابعته |
أداة الصدفة الخاصة بالوكيل (ssh أو psql أو kubectl مكتوبة مباشرةً) | لا | لا تمر عبر AgentsRoom: هي في طرفية الوكيل ونص جلسته |
السطر الأخير هو الحد الصادق. السجل يرى ما يمر عبر أدواتنا. إن أردت أن يظهر فيه كل فعل بعيد، فيجب أن تكون الأدوات هي الطريق الأسهل للوكيل، وهذا درس الأوامر الـ166.
تفصيل آخر: وحده SSH يبث المخرجات أثناء تنفيذ الأمر، لأنه يمر عبر طرفية حقيقية على جهازك. نتائج WinRM وSQL وkubectl تظهر حين ينتهي الاستدعاء.
كم يكلّف الاحتفاظ بالسجل
مستخدمونا يشغّلون وكلاء كثيرين في وقت واحد: 45 وكيلاً عبر 18 مشروعاً على جهاز، و48 طرفية على جهاز آخر. كل ما يُحسب لكل وكيل أو لكل دفعة مخرجات يتضاعف بهذه الأرقام، لذلك للسجل حدود صارمة:
- 120 استدعاءً لكل مشروع، ويُحذف الأقدم أولاً.
- 32,000 حرف من المخرجات لكل استدعاء، مع الاحتفاظ بالنهاية، حيث الأخطاء ورموز الخروج.
- 2,000 حرف من الأمر أو من SQL لكل استدعاء.
- رسالة تحديث واحدة لكل استدعاء كل 120 ms للمخرجات المباشرة، لا رسالة لكل دفعة من مخرجات الطرفية.
- لا مؤقّت في وضع السكون. ما دام لا وكيل يستدعي أداة بعيدة، لا يكلّف السجل شيئاً.
يحدث التسجيل في نقطة واحدة: الجسر الذي تمر عبره استدعاءات الأدوات لكل CLI. لهذا يعمل بالطريقة نفسها مع Claude Code وCodex وAntigravity CLI وأي واجهة CLI أخرى يشغّلها التطبيق، من دون شيفرة خاصة بكل مزوّد.
الحد الذي اخترناه: لا شيء يغادر الجهاز
يُحفظ السجل في ذاكرة تطبيق سطح المكتب ويختفي حين تغلقه. لا يُزامَن مع خوادمنا، وهذا غير مألوف عندنا: كل شيء تقريباً في AgentsRoom يتبع حسابك من حاسوب إلى آخر.
هذا لا يفعل، عن قصد. مخرجات env على خادم تحتوي أسراراً. وSELECT على جدول عملاء يحتوي بيانات عملاء. أداة صُنعت لتجعل هذه الأشياء مرئية لا ينبغي أن تنسخها أيضاً إلى مكان جديد.
يستطيع الهاتف متابعة السجل نفسه من ملف الوكيل (تطبيق الهاتف 2.47 وما بعده). يمر البث من حاسوبك إلى هاتفك عبر الرابط المشفّر من طرف إلى طرف، وتُخفى الأسرار قبل خروجها (مفاتيح API، وأزواج KEY=value، وكلمات المرور داخل الروابط، والرموز المميزة)، ولا يُخزَّن شيء على أي خادم. ويبقى الاستدعاء نفسه مقروءاً في محادثة الوكيل، كما كان من قبل.
سجلات تدقيق Claude Code شيء مختلف
إن بحثت عن "Claude Code audit log"، فالأرجح أنك وجدت Compliance API من Anthropic لـClaude Enterprise: موجز نشاط، وأحداث سجل التدقيق، ونصوص الجلسات للجلسات المحلية المسجَّل دخولها بحساب Enterprise. هي مبنية للمسؤولين وفرق الامتثال، وتغطي المؤسسة، وتقرؤها بعد وقوع الأمر.
هذا يجيب عن سؤال "من في الشركة فعل ماذا بـClaude". ولا يجيب عن سؤال "أي أمر ينفّذه وكيلي على خادم قاعدة البيانات الآن". يمكن أن يتعايش الاثنان، وإن كنت تعمل في شركة لديها متطلبات امتثال، فالأرجح أنك تحتاج إلى الأول بغض النظر عما تستعمله للثاني.
إن كنت لا تستعمل AgentsRoom
يمكنك الحصول على جزء كبير من هذا بما توفّره واجهات CLI أصلاً.
سجّل كل أمر صدفة لحظة بدايته. تستطيع hooks في Claude Code تشغيل أمر قبل كل استدعاء أداة. دليل الـhooks يعرض النمط: hook من نوع PreToolUse على أداة Bash يمرّر jq -r .tool_input.command إلى ملف سجل. شغّل tail -f على ذلك الملف في طرفية ثانية، فترى كل أمر لحظة إرسال الوكيل له، بما في ذلك أسطر ssh.
اقرأ نص الجلسة حين تحتاج إلى المخرجات. الـhook يعطيك الأمر، لا ما أجاب به الخادم. لذلك، ملف الجلسة تحت ~/.claude/projects/ (أو ~/.codex/sessions/ لـCodex) يحتوي النتيجة الكاملة لكل استدعاء.
امنح الوكيل حسابه الخاص على الخادم. مستخدم مخصص يجعل كل اتصال قابلاً للنسب في سجل المصادقة على الخادم، وإن كانت خوادمك تشغّل auditd، فإن قاعدة على execve لذلك المستخدم تسجّل كل عملية يطلقها، من جهة الخادم، حيث لا يستطيع الوكيل تجاوزها.
أبقِ بيانات الاعتماد بعيداً عن متناول الوكيل. إن كانت الوسيلة الوحيدة للاتصال كلمة مرور يضطر الوكيل إلى طلبها منك، فسترى أسطر sshpass في المحادثة. استعمل مفتاحاً لا يقرؤه الوكيل أبداً، أو أداة تحتفظ بالسر نيابةً عنه. كتبنا دليلاً منفصلاً عن إعطاء الوكيل سراً من دون وضعه في الموجّه.
ما لا يعطيك إياه هذا الإعداد هو الربط بين الثلاثة: أي وكيل، وعلى أي اتصال، وبأي مخرجات مباشرة، في مكان واحد. هذا هو الجزء الذي بنيناه.
أسئلة يطرحها الناس فعلاً
هل أستطيع أن أرى ما يفعله Claude Code على خادم بعيد أثناء عمله؟
في الطرفية ترى استدعاء الأداة، ثم نتيجة مختصرة حين ينتهي. أما الأمر الكامل ومخرجاته فيُكتبان في نص الجلسة على قرصك، وتقرؤه لاحقاً. لتتابع ذلك لحظة حدوثه تحتاج إلى شيء يسجّل كل استدعاء عند بدايته: hook في Claude Code يكتب كل أمر Bash في ملف سجل، أو تطبيق ينفّذ الاستدعاءات البعيدة نيابةً عن الوكيل ويعرضها مباشرةً، وهذا ما يفعله تبويب «النشاط» في AgentsRoom.
أين يحتفظ Claude Code بسجل الأوامر التي نفّذها؟
في نص الجلسة، وهو ملف JSONL تحت ~/.claude/projects/، بمجلد لكل مشروع وملف لكل جلسة. كل استدعاء أداة سطر فيه مدخلاته ونتيجته. ويحتفظ Codex بملف مماثل لكل جلسة تحت ~/.codex/sessions/. كلاهما كامل، وكلاهما مكتوب كي يستأنف الـCLI الجلسة، لا كي يتصفحه إنسان.
هل هذا هو نفسه سجلات تدقيق Claude Code؟
لا. سجلات التدقيق التي يبحث عنها الناس بهذا الاسم هي السجلات على مستوى المؤسسة التي تقدّمها Anthropic في خطة Enterprise عبر Compliance API: موجز نشاط، وأحداث تدقيق، ونصوص الجلسات للجلسات المسجَّل دخولها، يقرؤها مسؤول لاحقاً. هي تجيب عن سؤال: من فعل ماذا في المؤسسة. أما العرض المباشر للأوامر على خادم واحد فأداة مختلفة لشخص مختلف.
لماذا لا يُفتح تبويب طرفية لكل أمر ينفّذه الوكيل؟
جرّبنا هذا الطريق وقسناه: وكيل يعالج مشكلة في الإنتاج أطلق 166 أمراً بعيداً في جلسة واحدة. تبويب لكل أمر يجعل شريط التبويبات بلا فائدة بعد عشر دقائق. ما ينجح هو سجل واحد لكل اتصال، يكون فيه كل استدعاء مدخلاً بأمره ومخرجاته المباشرة ورمز خروجه ومدته.
هل يرسل AgentsRoom الأوامر ومخرجاتها إلى خادم؟
لا. السجل يعيش في ذاكرة تطبيق سطح المكتب، بحد أقصى 120 استدعاءً لكل مشروع، ويختفي حين تغلق التطبيق. يستطيع الهاتف متابعته من ملف الوكيل (تطبيق الهاتف 2.47 وما بعده): يمر البث من حاسوبك إلى هاتفك عبر الرابط المشفّر من طرف إلى طرف، مع إخفاء الأسرار، ولا يُخزَّن شيء على أي خادم.
ما أوامر الوكيل التي لا يعرضها تبويب «النشاط»؟
لا يُسجَّل إلا ما يمر عبر أدوات AgentsRoom: ssh_exec وssh_transfer وdb_query وdb_schema وkube_kubectl. الأمر الذي ينفّذه الوكيل بأداة الصدفة الخاصة به، مثل سطر ssh أو psql خام، موجود في طرفيته ونص جلسته لكنه ليس في السجل. واستُبعد commands_run وssh_connect عمداً، لأنهما يفتحان أصلاً تبويب طرفية تستطيع متابعته.
النسخة المختصرة
الوكيل على خادم يحتاج منك إلى شيئين: طريقة للعمل لا تمر بكلمة مرورك، وطريقة تتيح لك أن ترى ما يفعله أثناء فعله. الأول من دون الثاني يتركك تقرأ JSON بعد وقوع الأمر. والثاني من دون الأول يلتفّ عليه وكيل يلصق أسطر sshpass.
انتهى بنا الأمر إلى سجل واحد لكل اتصال، محدود، ومحفوظ على جهازك. إن أردت تجربته، فـAgentsRoom مجاني التنزيل، وصفحة اتصالات SSH تعرض الإعداد خطوة بخطوة. وإن فضّلت البقاء مع الـCLI وحده، فابدأ بـhook من نوع PreToolUse وtail -f: يستغرق ذلك خمس دقائق، ولن تتساءل بعدها أبداً عما كانت عليه آخر ستة استدعاءات أدوات.
تحميل AgentsRoom
شغّل كل وكلاء الذكاء الاصطناعي لديك، في كل مشاريعك، من نافذة واحدة.
التطبيق المرافق: تابع وكلاءك أينما كنت
استخدم Claude أو Codex أو Antigravity CLI أو أي مزود AI آخر.
أرسل الأخطاء والطلبات مباشرة إلى قائمة المهام العامة.
تابع القراءة
إبقاء Claude Code يعمل بعد انقطاع SSH: وصفة tmux
أبقِ Claude Code يعمل بعد انقطاع SSH باستخدام tmux. عُد إلى العملية نفسها، وتحقق من الاستمرارية، واستخدم الخيار الاختياري في AgentsRoom.
اقرأ المقالإعطاء سرّ لوكيل برمجة دون وضعه في الموجّه أبدًا
يحتاج الوكيل إلى مفتاح Stripe أو كلمة مرور قاعدة بيانات ليشغّل أمره. الصقها في المحادثة فتذهب إلى سجل المحادثة على قرصك، وإلى مزوّد النموذج، وأحيانًا داخل commit. القاعدة التي وصلنا إليها بعد ثلاثة أخطاء ارتكبناها بأنفسنا: السر يصل إلى الوكيل عبر متغير بيئة، ولا شيء غيره.
اقرأ المقالحساب Claude واحد على حاسوبين، أو لشخصين: ما الذي ينجح
يمكن تسجيل الدخول بحساب Claude واحد على كل أجهزتك، وكلها تستهلك من حد الخمس ساعات والحد الأسبوعي نفسيهما، Claude وClaude Code معًا. استخدام شخصين لحساب واحد مخالف لشروط Anthropic، ولا توجد خطة عائلية. ما تحققنا منه في 25 أكتوبر 2026، وكيف ترى أي حاسوب استهلك ماذا.
اقرأ المقال