تمكينه
يأتي Workboard مضمنًا، لكنه معطّل افتراضيًا:- افتح Plugins في واجهة التحكم، أو استخدم
/settings/pluginsنسبةً إلى المسار الأساسي المهيأ لواجهة التحكم. على سبيل المثال، يستخدم المسار الأساسي/openclawالمسار/openclaw/settings/plugins. - ابحث عن Workboard واختر Enable. ولأن Workboard مضمّن مع OpenClaw، فلا يحتاج إلى إجراء Install.
- إذا أفادت الواجهة بأن إعادة التشغيل مطلوبة، فأعد تشغيل Gateway.
/workboard مباشرةً بينما يكون Plugin معطّلًا أو محظورًا بواسطة
plugins.allow/plugins.deny إلى إظهار حالة عدم توفر Plugin بدلًا من بيانات
البطاقات.
سير عمل CLI المكافئ هو:
الإعداد
لا يملك Workboard إعدادًا خاصًا بـ Plugin. مكّنه أو عطّله باستخدام إدخال Plugin القياسي:حقول البطاقة
تحمل البطاقات أيضًا بيانات وصفية موجزة للمحاولات والتعليقات والروابط والإثباتات
والعناصر الناتجة وإعدادات الأتمتة والمرفقات وسجلات العامل وبروتوكول العامل
وحالته والمطالبات والتشخيصات والإشعارات ومعرّف القالب وحالة الأرشفة
واكتشاف الجلسات القديمة، بالإضافة إلى قائمة بالأحداث الأخيرة (
created، edited،
moved، linked، specified، decomposed، claimed، heartbeat،
execution_updated، attempt_started، attempt_updated، comment_added،
link_added، proof_added، artifact_added، attachment_added،
diagnostic، notification، dispatch، orchestration،
protocol_violation، archived، unarchived، stale). تتيح هذه البيانات الوصفية
للمشغّل رؤية كيفية انتقال البطاقة عبر اللوحة دون فتح الجلسة المرتبطة؛
فهي سياق تشغيل محلي وليست بديلًا عن نصوص الجلسات
أو سجل مشكلات GitHub.
يستخدم Plugin وواجهة التحكم عقدًا واحدًا لبطاقة Workboard. لذلك تحافظ عمليات تحديث لوحة المعلومات
على مصدر مساحة العمل وسلطتها، وحالة المطالبة، وإجراءات التشخيص،
وأرقام تسلسل الإشعارات بدلًا من إنشاء نسخة مصغرة من البطاقة خاصة
بالواجهة فقط. تُتجاهل أنواع التشخيص ومستويات خطورته وأنواع
الإشعارات غير المعروفة إلى أن يدعمها السطحان معًا؛ ولا يُعاد
تحويلها أبدًا إلى حالة صالحة أخرى.
تتلقى لوحة المعلومات المفتوحة التحديثات من عمليات إبطال plugin.workboard.changed. يحتوي كل
حدث على حقبة المخزن ومراجعته فقط؛ ثم تعيد الواجهة قراءة البطاقات المعتمدة
من خلال RPC المعتاد operator.read. تُدمج المراجعات المتعددة في
عملية قراءة لاحقة واحدة. يؤجل Workboard تلك القراءة أثناء سحب بطاقة
أو تحريرها أو كتابتها، ثم يستأنفها بعد انتهاء التفاعل المحلي. ويؤدي
إعادة الاتصال دائمًا إلى إعادة تحميل معتمدة. لا يوجد استقصاء دوري لكامل
البطاقات، ويظل Refresh متاحًا للاسترداد اليدوي.
عند وجود أكثر من لوحة، يتضمن شريط الأدوات عامل تصفية Board يستند
إلى بيانات وصفية محفوظة للوحات، لا إلى البطاقات المرئية حاليًا فقط. لذلك تظل
اللوحات الفارغة والمؤرشفة قابلة للاختيار. تنتمي البطاقات التي لا تتضمن
معرّف لوحة صريحًا إلى لوحة default المعتمدة. تُخزّن اللوحة المحددة
في معامل الاستعلام ?board=، لذا يمكن إضافة عنوان URL المصفّى لـ Workboard إلى الإشارات المرجعية
أو مشاركته؛ وتؤدي تهيئة All boards إلى إزالة المعامل.
تُخزّن البطاقات في حالة Gateway الخاصة بـ Plugin، وتنتقل مع بقية
حالة OpenClaw لذلك الـ Gateway (راجع التخزين).
بدء العمل من بطاقة
يمكن للبطاقات غير المرتبطة بدء العمل مباشرةً:- يبدأ Run Codex / Run Claude تشغيل وكيل متتبَّعًا بمهمة باستخدام
محرك صريح، ويرسل مطالبة البطاقة، ويعيّن حالة البطاقة إلى
running. تستخدم عمليات تشغيل Codex القيمةopenai/gpt-5.6-sol؛ وتستخدم عمليات تشغيل Claude القيمةanthropic/claude-sonnet-4-6. - ينشئ Open Codex / Open Claude جلسة مرتبطة في لوحة المعلومات من دون إرسال مطالبة البطاقة أو نقل البطاقة، للعمل اليدوي الذي يظل مرتبطًا باللوحة.
review أو blocked باستخدام قاعدة المزامنة
نفسها المستخدمة للجلسات المرتبطة (راجع مزامنة دورة حياة الجلسة).
أدوات الوكيل
ترفض البطاقات المطالَب بها عمليات التغيير عبر أدوات الوكيل من الوكلاء الآخرين ما لم يكن المستدعي
يحمل رمز المطالبة الذي أعاده
workboard_claim. تحجب كل بطاقة تعيدها
أداة وكيل أو استدعاء Gateway RPC القيمة metadata.claim.token إلى [redacted]
(يُعاد الرمز نفسه مرة واحدة، في المستوى الأعلى، ومن workboard_claim فقط)،
بحيث يمكن لمشغّلي لوحة المعلومات والوكلاء الآخرين فحص حالة المطالبة من دون
رؤية رمز قابل للاستخدام مطلقًا. تتم الاستعادة عبر
workboard_promote/workboard_reassign/workboard_reclaim، والتي لا
تتطلب الرمز.
الإرسال
يكون الإرسال محليًا في Gateway: فهو لا ينشئ عمليات نظام تشغيل عشوائية. تظل جلسات الوكلاء الفرعيين العادية في OpenClaw مسؤولة عن التنفيذ. تمريرة إرسال واحدة:- ترقّي البطاقات الجاهزة من حيث التبعيات.
- تسجّل البيانات الوصفية للإرسال على البطاقات الجاهزة.
- تحظر المطالبات المنتهية أو عمليات التشغيل التي انتهت مهلتها.
- تضع علامة على بطاقات الفرز الأولي المكوّنة في اللوحة باعتبارها مرشحة للتنسيق.
- تطالب بدفعة صغيرة من البطاقات الجاهزة وتبدأ عمليات تشغيل العمال عبر وقت تشغيل الوكيل الفرعي في Gateway.
operator.write استخدام مساحات عمل الوكلاء المكوّنة؛
ويمكن لعملاء operator.admin استخدام نسخ عمل أخرى على المضيف. تستخدم أدوات الوكيل المعزولة
صلاحية الوصول إلى مساحة العمل في بيئتها المعزولة، بينما تستخدم الأدوات غير المعزولة والمقتصرة على مساحة العمل
جذر مساحة العمل المكوّن لها. يسجّل Workboard تلك الصلاحية عند تعيين مساحة عمل
ويأخذ تقاطعها مجددًا مع صلاحية المستدعي الحالي عند الإرسال،
ولذلك لا يمكن لبطاقة دائمة توسيع صلاحية وصول مستدعٍ لاحق. يجب إعادة
حفظ مساحة العمل للبطاقات الأقدم التي تحتوي على مساحة عمل صريحة على المضيف من دون صلاحية مسجلة
قبل إرسال كامل على المضيف؛ أما البطاقات التي لا تحتوي على مسار مضيف فتعتمد
صلاحية المستدعي الحالي عند إرسالها للمرة الأولى.
يقبل الإسناد المقيّد بمساحة العمل دليلاً أو نسخة Git عاملة فقط عندما
يتطابق جذر مستودعها تمامًا مع مساحة عمل الوكيل المستهدف. يُحصر طلب شجرة العمل
في ذلك الدليل ويُحفظ كمساحة عمل دليل، بحيث لا ينشئ
المضيف النسخة العاملة ولا ينفّذ تعليمة إعداد المستودع البرمجية. يجب على
العامل المستهدف استخدام بيئة Docker معزولة قابلة للكتابة وغير مشتركة لمساحة
العمل تلك تحديدًا، من دون تنفيذ بصلاحيات مرتفعة، أو تجاوزات تنفيذ مضيف/Node محفوظة، أو
أدوات Plugin وMCP غير مصنفة. يسرد Workboard أدواته المسجلة
بدلاً من الوثوق ببادئة workboard_*، ويرفض الإسناد حاوية Docker نشطة
إذا كانت تجزئة التحميل/الإعداد المباشرة فيها قديمة. يُبلغ الإسناد عن
سياسة الهدف غير المتوافقة بدلاً من بدء عامل أقل تقييدًا.
يمكن للإسناد على المضيف بالكامل استهداف نسخ عاملة محلية أخرى، مع الإبقاء على إعداد
شجرة العمل المُدارة المعتاد.
لا تنشئ صلاحية مساحة العمل نموذج أذونات ثانٍ لدورة حياة البطاقات.
يمكن للجهات المستدعية المخوّلة بتعديل بطاقات Workboard نقلها يدويًا عبر الحالات
نفسها على كل واجهة؛ ولا يمنع الوصول للقراءة فقط إلى مساحة العمل إلا
إسناد العامل الذي يتطلب صلاحية الكتابة.
اختيار العامل
تبدأ كل دورة 3 عمال كحد أقصى افتراضيًا. تُرتب البطاقات الجاهزة حسب الأولوية، ثم الموضع، ثم وقت الإنشاء. لا تبدأ الدورة إلا بطاقة واحدة لكل مالك/وكيل، وتتجاوز المالكين الذين لديهم بالفعل عمل قيد التشغيل أو المراجعة على اللوحة. لا تُختار أبدًا البطاقات المؤرشفة، والبطاقات ذات المطالبة النشطة، والبطاقات غير الموجودة في حالةready
لبدء العمال (مع إمكانية استمرار تأثرها بجانب البيانات من الإسناد: تنظيف المطالبات القديمة، وترقية التبعيات، وتنظيف
المهلات).
تكون مفاتيح الجلسات حتمية لكل لوحة/بطاقة، لذلك تعيد عمليات الإسناد المتكررة التوجيه
إلى مسار العامل نفسه بدلاً من إنشاء جلسات غير مرتبطة:
- البطاقات المعيّنة:
agent:<agentId>:subagent:workboard-<boardId>-<cardId> - البطاقات غير المعيّنة:
subagent:workboard-<boardId>-<cardId>(يحدد Gateway الوكيل الافتراضي المُعدّ)
نقاط الدخول
- إجراء إرسال من لوحة المعلومات
openclaw workboard dispatch/workboard dispatchعلى قناة تدعم الأوامر
unknown method مع إصدارات Gateway
الأقدم)، ولم ينطبق هدف --url/--token صريح ولا Gateway بعيد
مُهيأ (OPENCLAW_GATEWAY_URL أو gateway.mode: remote)، فإن CLI ينفذ
إرسالًا للبيانات فقط على حالة SQLite المحلية؛ ويمكنه ترقية التبعيات،
وتنظيف المطالبات القديمة، وحظر عمليات التشغيل التي انتهت مهلتها، لكنه لا يستطيع بدء العاملين. لا تُعامَل
إخفاقات المصادقة والأذونات والتحقق الواردة من Gateway يمكن الوصول إليه
على أنها عدم توفر؛ بل تظهر كأخطاء أوامر، وكذلك أي إخفاق في Gateway
عند تحديد هدف --url/--token صريح.
يمكن للبيانات الوصفية للوحة تعيين autoDecompose وautoDecomposePerDispatch
وdefaultAssignee وorchestratorProfile. يسجل OpenClaw هذه النية
ويعرضها في سياق العامل؛ بينما تظل عملية تحديد المواصفات/التفكيك الفعلية
تُنفذ عبر أدوات Workboard المعتادة.
CLI وأمر الشرطة المائلة
list البطاقات المؤرشفة افتراضيًا (يتجاوز
--include-archived ذلك)؛ بينما يتضمن --json البطاقات المؤرشفة دائمًا، بما يتوافق مع عقد
البطاقات الكامل الذي تستخدمه البرامج النصية الحالية. يقبل show وmove بادئة معرّف
لا لبس فيها. يقرأ/يكتب كل من list وcreate وshow وmove حالة Plugin
المحلية مباشرةً دائمًا. ولا يستدعي Gateway قيد التشغيل سوى dispatch، مع الآلية الاحتياطية
الموضحة أعلاه.
راجع CLI الخاص بـ Workboard للاطلاع على العلامات الكاملة، وإخراج JSON، وسلوك
Gateway الاحتياطي، ومعالجة بادئة المعرّف، وقواعد اختيار الإرسال،
واستكشاف الأخطاء وإصلاحها.
تعكس /workboard list و/workboard show <card-id> و/workboard create <title>
و/workboard move <card-id> --status <status> و/workboard dispatch
CLI. تُعد عمليتا العرض والسرد عمليتي قراءة لأي مرسل أوامر مخوّل.
تتطلب عمليات الإنشاء والنقل والإرسال حالة المالك على واجهات المحادثة، أو عميل Gateway
يمتلك operator.write/operator.admin. تستخدم عمليات النقل اليدوية التي يجريها المشغّل
سلوك تجاوز المطالبة نفسه المستخدم عند السحب والإفلات في لوحة المعلومات. ويظل وصولها إلى شجرة العمل
متبعًا حدود مساحة العمل نفسها الموضحة أعلاه.
مزامنة دورة حياة الجلسة
يمكن ربط البطاقات بجلسة موجودة في لوحة المعلومات، أو بجلسة تُنشأ عند بدء العمل من البطاقة. تعرض البطاقات المرتبطة دورة حياة الجلسة ضمنها: قيد التشغيل، أو قديمة، أو مرتبطة وخاملة، أو مكتملة، أو فاشلة، أو مفقودة. ويمكن أيضًا التقاط جلسة موجودة من علامة تبويب الجلسات باستخدام إضافة إلى Workboard؛ حيث ترتبط البطاقة بتلك الجلسة، وتستخدم تسمية الجلسة أو أحدث مطالبة للمستخدم عنوانًا، وتُنشئ الملاحظات الأولية من أحدث مطالبة للمستخدم بالإضافة إلى أحدث استجابة للمساعد عند توفرها. إذا فُقدت الجلسة المرتبطة، تظل البطاقة مرتبطة للاحتفاظ بالسياق وتواصل توفير عناصر التحكم في البدء لإعادة التشغيل ضمن جلسة جديدة. وإذا توقفت جلسة مرتبطة نشطة عن الإبلاغ عن نشاط حديث، يضع Workboard علامةstale على البطاقة ويخزن ذلك كبيانات وصفية حتى تمحوه دورة الحياة.
عندما تكون البطاقة في حالة عمل نشطة، يتبع Workboard الجلسة المرتبطة:
تتغلب حالات المراجعة اليدوية. يؤدي نقل بطاقة إلى
review أو blocked أو done
إلى إيقاف المزامنة التلقائية لتلك البطاقة حتى تُعاد إلى todo أو running.
يستخدم بدء بطاقة جلسات Gateway المعتادة؛ ولا يخزن Workboard سوى البيانات
الوصفية للبطاقة وروابطها. ويظل نص المحادثة، واختيار النموذج، ودورة حياة
التشغيل تحت إدارة نظام الجلسات المعتاد. استخدم إيقاف على بطاقة مرتبطة
نشطة لإجهاض التشغيل النشط؛ ويضع Workboard علامة blocked على تلك البطاقة لكي
تظل مرئية للمتابعة.
يمكن بدء البطاقات الجديدة من قوالب Workboard (bugfix وdocs وrelease
وpr_review وplugin). تملأ القوالب مسبقًا العنوان والملاحظات والتسميات والأولوية؛
ويُخزن معرّف القالب ضمن البيانات الوصفية للبطاقة.
سير العمل في لوحة المعلومات
- افتح علامة تبويب Workboard في واجهة التحكم.
- أنشئ بطاقة تتضمن عنوانًا وملاحظات وأولوية وتسميات ووكيلًا اختياريًا وجلسة مرتبطة اختيارية، أو افتح الجلسات واختر إضافة إلى Workboard لجلسة موجودة.
- اسحب البطاقة بين الأعمدة، أو ركّز على عنصر التحكم المدمج في حالتها واستخدم القائمة أو ArrowLeft/ArrowRight. أثناء السحب، تصبح البطاقة المصدر باهتة وتظهر حدود حول أعمدة الإفلات المتاحة.
- ابدأ العمل من البطاقة لإنشاء جلسة في لوحة المعلومات أو إعادة استخدامها.
- افتح الجلسة المرتبطة من البطاقة أثناء عمل الوكيل.
- دع مزامنة دورة الحياة تنقل العمل الجاري إلى
review/blocked، ثم انقل البطاقة يدويًا إلىdoneعند قبولها.
التشخيصات
تُحسب التشخيصات من البيانات الوصفية المحلية للبطاقة. تتحقق الفحوصات المضمنة من:الأذونات
توجد أساليب RPC الخاصة بـ Gateway ضمنworkboard.*:
لا يتطلب أي أسلوب RPC النطاق
operator.admin. يمكن للمتصفحات المتصلة بوصول
مشغّل للقراءة فقط فحص اللوحة، لكنها لا تستطيع تعديل البطاقات. يوسّع نطاق المسؤول
مسارات مضيف Workboard المقبولة؛ لكنه لا يغيّر الأساليب المتاحة.
التخزين
يخزن Workboard البيانات الدائمة في قاعدة بيانات SQLite علائقية مملوكة لـ Plugin ضمن دليل حالة OpenClaw: توجد اللوحات والبطاقات والتسميات وأحداث دورة الحياة ومحاولات التشغيل والتعليقات وروابط التبعيات والإثباتات ومراجع العناصر الناتجة والبيانات الوصفية للمرفقات وكتلها الثنائية والتشخيصات والإشعارات وسجلات العاملين وحالة البروتوكول والاشتراكات كلها في جداول Workboard (وليس في إدخالات المفتاح والقيمة الخاصة بـ Plugin). يحافظ تصدير البطاقة على سرد اللوحة من دون تضمين محتويات الكتل الثنائية للمرفقات داخليًا. يمكن لعمليات التثبيت التي استخدمت Workboard في إصدار.28 تشغيل
openclaw doctor --fix لترحيل نطاقات حالة Plugin القديمة التي شُحنت
(workboard.cards وworkboard.boards وworkboard.notify، وworkboard.attachments
إن وُجد) إلى قاعدة البيانات العلائقية.
استكشاف الأخطاء وإصلاحها
تقول علامة التبويب إن Workboard غير متاحplugins.allow مُهيأ، فأضف workboard إليه. وإذا كان plugins.deny
يتضمن workboard، فأزله قبل تمكين Plugin.
لا تُحفظ البطاقات
تأكد من أن اتصال المتصفح يمتلك وصول operator.write. يمكن لجلسات المشغّل
للقراءة فقط سرد البطاقات، لكنها لا تستطيع إنشاءها أو تحريرها أو نقلها أو حذفها.
لا يؤدي بدء بطاقة إلى فتح الجلسة المتوقعة
تحقق من معرّف وكيل البطاقة وجلستها المرتبطة، ثم افتح الجلسات أو الدردشة
لفحص حالة التشغيل الفعلية.
لا يبدأ الإرسال عاملًا
تأكد من وجود بطاقة ready واحدة على الأقل بلا مطالبة نشطة: