بدء جلسة غير تفاعلية
تتيح لك الجلسات غير التفاعلية استخدام Bob Shell مباشرةً من سطر الأوامر، من دون الدخول إلى جلسة تفاعلية. استخدمها للأتمتة والسكريبتات والمعالجة الدُفعية.
متى تستخدم جلسة غير تفاعلية؟
تكون الجلسات غير التفاعلية مناسبة لـ:
- دمج Bob Shell في سكريبتات الأتمتة.
- معالجة ملفات متعددة بأمر واحد.
- الحصول على إجابات سريعة من دون بدء جلسة تفاعلية.
- إنشاء توثيق من الكود.
- مسارات CI/CD التي تتطلب إخراج JSON منظّمًا.
بدء جلسة غير تفاعلية
استخدم الأمر الفرعي bob run لتشغيل Bob Shell بصورة غير تفاعلية من سطر الأوامر.
الصيغة
bob run [options] [prompt...]يمكنك أيضًا تمرير طلب عبر الإدخال القياسي:
echo "Explain this project" | bob runنصائح للاستخدام بفعالية
- عند معالجة ملفات أو مشاريع كبيرة، حدّد الملفات المطلوب تحليلها بوضوح.
- استخدم
--format jsonأو--format stream-jsonلتسهيل التحليل الموثوق في السكريبتات. - استخدم
--max-costو--max-turnsلوضع حدود لاستخدام الموارد في سير العمل المؤتمت. - للطلبات متعددة الأسطر، احفظها في ملف ثم مرّرها إلى
bob run:
cat prompt.txt | bob runالاستخدام الأساسي
تشغيل طلب مباشرةً
bob run "Explain this project"تمرير محتوى كمدخل
يمكنك تمرير محتوى نصي إلى Bob Shell:
cat buildError.txt | bob run "Explain this build error"حفظ النتائج في ملف
أعِد توجيه الإخراج لحفظ النتائج:
bob run "Review @bigFile.java" > review.mdالإشارة إلى ملفات المشروع
استخدم الرمز @ للإشارة إلى الملفات في مشروعك:
bob run "Summarize the functionality in @src/main.js"ضبط حدود التكلفة والأدوار
bob run --max-cost 0.50 --max-turns 10 "Refactor @app.js"إدارة الجلسات
استئناف جلسة سابقة
bob run --resume <task-id> "Continue from where we left off"
bob run --resume latest "Keep going"علامات الأدوات العامة
تُستدعى بعض العلامات مباشرةً باستخدام bob، وليس باستخدام bob run أو bob chat. لعرض المهام المحفوظة، شغّل الأمر التالي:
bob --list-tasksالعلامات التالية متاحة:
| العلامة | الوصف |
|---|---|
--list-tasks [n|all] | يعرض المهام المحفوظة لمساحة العمل الحالية ثم يخرج. القيمة الافتراضية هي 20. مرّر رقمًا أو all للتحكم في عدد المهام المعروضة. |
--limit <n> | الحد الأقصى لعدد المهام المعروضة مع --list-tasks. |
--show-license | يعرض اتفاقية ترخيص IBM ثم يخرج. |
إخراج قابل للمعالجة آليًا
عندما لا يكون الإخراج القياسي طرفية TTY — مثلًا عند تمرير الإخراج عبر pipe أو إعادة توجيهه — يتحول --list-tasks من جدول قابل للقراءة إلى NDJSON، بحيث يحتوي كل سطر على كائن JSON واحد.
يكون كل سطر بالشكل التالي:
{"id":"<uuid>","title":"<string>","status":"<string>","workspace":"<file-uri>","updatedAt":<unix-ms>}| الحقل | النوع | الوصف |
|---|---|---|
id | string (UUID) | معرّف المهمة الفريد، ويمكن استخدامه مع --resume. |
title | string | عنوان المهمة؛ ويعود إلى أول رسالة ثم إلى المعرّف عند عدم توفره. |
status | string | حالة المهمة: active أو completed أو paused. |
workspace | string (file URI) | مسار مساحة العمل المطلق بصيغة URI من نوع file:. |
updatedAt | number | وقت آخر تحديث بالمللي ثانية وفق Unix. |
أمثلة
# Pipe into jq
bob --list-tasks all | jq '.id'
# Save to file then process
bob --list-tasks 100 > tasks.ndjson
# Display the license agreement
bob --show-licenseتنسيقات الإخراج
يتحكم الخيار --format في طريقة كتابة bob run للإخراج. استخدمه عند التقاط الإخراج في سكريبتات أو مسارات CI.
pretty (الافتراضي)
إخراج نصي قابل للقراءة ومناسب للعرض في الطرفية.
json
يُصدر كائن JSON واحدًا بعد اكتمال الجلسة. استخدم هذا التنسيق لالتقاط النتيجة الكاملة للمعالجة البرمجية.
المخطط:
| الحقل | النوع | الوصف |
|---|---|---|
type | string | دائمًا "result". |
timestamp | string | وقت إتمام بتنسيق ISO 8601. |
status | string | "success" أو "error". |
stats | object | إحصاءات الجلسة؛ راجع الحقول أدناه. |
stats.task_id | string | معرّف المهمة المكتملة الفريد. |
stats.total_tokens | number | إجمالي الـ tokens المستخدمة. |
stats.input_tokens | number | الـ tokens المستخدمة للإدخال. |
stats.output_tokens | number | الـ tokens التي وُلّدت للإخراج. |
stats.cache_read_tokens | number | الـ tokens المقروءة من الذاكرة المؤقتة. |
stats.cache_write_tokens | number | الـ tokens المكتوبة في الذاكرة المؤقتة. |
stats.cache_ratio | number | نسبة نجاح استخدام الذاكرة المؤقتة. |
stats.duration_ms | number | مدة الجلسة بالمللي ثانية. |
stats.session_costs | number | التكلفة الإجمالية للجلسة. |
stats.tool_calls | number | عدد استدعاءات الأدوات التي أجريت. |
last_message | string | الرسالة الأخيرة للمساعد. |
مثال:
bob run --format json "What is the entry point?" > result.jsonstream-json
يُصدر JSON محددًا بأسطر جديدة (NDJSON) — كائن حدث واحدًا في كل سطر — أثناء تقدم الجلسة. استخدم هذا التنسيق لبث الإخراج إلى pipeline أو لمعالجة الأحداث لحظيًا.
أنواع الأحداث:
| نوع الحدث | الحقول الأساسية | الوصف |
|---|---|---|
message | role، content، isReasoning? | رسالة مستخدم أو مساعد. |
tool_use | tool_name، tool_id، parameters | استدعاء أداة بدأه Bob. |
tool_result | tool_id، status، output?، error? | النتيجة التي أعادتها أداة. |
error | severity، message | تم بلوغ حد التكلفة أو الأدوار. |
result | status، stats، last_message | ملخص نهائي يُصدر عند انتهاء الجلسة. |
مثال على pipeline:
bob run --format stream-json "Audit @src/" \
| grep '"type":"result"' \
| jq '.last_message'عند التشغيل بصورة غير تفاعلية باستخدام bob run، تكون جميع الأدوات معتمدة مسبقًا. لن يُطلب منك اعتماد استدعاءات الأدوات أثناء التنفيذ.
الخيارات
| الخيار | الوصف |
|---|---|
--format <format> | تنسيق الإخراج: pretty (الافتراضي) أو json أو stream-json. |
--mode <mode> | الوضع عند البدء، مثل agent أو plan أو ask. |
--max-cost <bobcoins> | الحد الأقصى للإنفاق بـ Bobcoins قبل إيقاف الجلسة. |
--max-turns <n> | الحد الأقصى لعدد الأدوار الوكيلة قبل إيقاف الجلسة. |
--disable-mcp | تعطيل جميع خوادم MCP لهذه الجلسة. |
--disable-subagents | تعطيل إنشاء الوكلاء الفرعيين لهذه الجلسة. |
--disable-tool-groups <groups> | تعطيل مجموعات أدوات محددة، مفصولة بفواصل؛ مثل execute,mcp. |
--workspace <path> | تجاوز مجلد جذر مساحة العمل. |
--log-level <level> | مستوى تفصيل السجل: error أو warn أو info أو debug أو trace. |
--resume <task-id> | استئناف مهمة سابقة باستخدام معرّف المهمة. |
--resume latest | استئناف أحدث مهمة. |
--team-id <id> | التشغيل ضمن سياق فريق محدد؛ مطلوب عند استخدام مفتاح API من النوع general. |
--trust | وضع علامة موثوق على المجلد الحالي. |
--accept-license | قبول اتفاقية ترخيص IBM والمتابعة من دون مطالبة. |