Plugin guides
Plugin لوحة العمل
يضيف Plugin Workboard لوحة اختيارية بنمط Kanban إلى واجهة التحكم: بطاقات عمل بحجم مناسب للوكلاء، وإسنادها إلى الوكلاء، ورابطًا للعودة إلى مهمة البطاقة وتشغيلها وجلسة لوحة المعلومات الخاصة بها.
صُمم Workboard ليكون صغيرًا عمدًا: فهو يتتبع أعمال التشغيل المحلية لـ Gateway واحد من OpenClaw. وليس بديلًا عن GitHub Issues أو Linear أو Jira أو أنظمة إدارة مشاريع الفرق الأخرى.
تمكينه
يأتي Workboard مضمّنًا، لكنه معطّل افتراضيًا:
- افتح Plugins في واجهة التحكم، أو استخدم
/settings/pluginsنسبةً إلى المسار الأساسي المضبوط لواجهة التحكم. على سبيل المثال، يستخدم المسار الأساسي/openclawالمسار/openclaw/settings/plugins. - ابحث عن Workboard واختر Enable. ولأن Workboard مضمّن مع OpenClaw، فلا يحتاج إلى إجراء Install.
- إذا أبلغت الواجهة بأن إعادة التشغيل مطلوبة، فأعد تشغيل Gateway.
تظهر علامة تبويب Workboard في شريط تنقل لوحة المعلومات بعد تحميل وقت تشغيل Plugin.
وعندما يكون معطّلًا، تظل علامة التبويب مخفية من التنقل. يؤدي فتح مسار
/workboard مباشرةً بينما يكون Plugin معطّلًا أو محظورًا بواسطة
plugins.allow/plugins.deny إلى عرض حالة عدم توفر Plugin بدلًا من بيانات
البطاقات.
سير عمل CLI المكافئ هو:
openclaw plugins enable workboardopenclaw gateway restartopenclaw dashboardالإعداد
لا يملك Workboard إعدادات خاصة بـ Plugin. مكّنه أو عطّله باستخدام إدخال Plugin القياسي:
{ plugins: { entries: { workboard: { enabled: true, config: {}, }, }, },}openclaw plugins disable workboardopenclaw gateway restartحقول البطاقة
| الحقل | القيم |
|---|---|
status |
triage، backlog، todo، scheduled، ready، running، review، blocked، done |
priority |
low، normal، high، urgent |
labels |
سلاسل نصية حرة |
agentId |
وكيل مُسنَد اختياريًا |
| المراجع المرتبطة | مهمة أو تشغيل أو جلسة أو عنوان URL للمصدر، وجميعها اختيارية |
execution |
بيانات وصفية اختيارية لتشغيل Codex/Claude بدأ من البطاقة (المحرك، والوضع، والنموذج، والجلسة، ومعرّف التشغيل، والحالة) |
تحمل البطاقات أيضًا بيانات وصفية موجزة للمحاولات، والتعليقات، والروابط، والإثبات،
والعناصر الناتجة، وإعدادات الأتمتة، والمرفقات، وسجلات العامل، وحالة بروتوكول
العامل، والمطالبات، والتشخيصات، والإشعارات، ومعرّف القالب، وحالة الأرشفة،
واكتشاف الجلسات القديمة، بالإضافة إلى قائمة بالأحداث الحديثة (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.
تُخزّن البطاقات في حالة Gateway الخاصة بـ Plugin وتنتقل مع بقية حالة OpenClaw لذلك الـ Gateway (راجع التخزين).
بدء العمل من بطاقة
يمكن للبطاقات غير المرتبطة بدء العمل مباشرةً:
- يبدأ تشغيل Codex / تشغيل Claude تشغيل وكيل متتبّعًا بمهمة باستخدام
محرك محدد صراحةً، ويرسل مطالبة البطاقة، ويضع علامة
runningعلى البطاقة. تستخدم تشغيلات Codex النموذجopenai/gpt-5.6-sol؛ وتستخدم تشغيلات Claude النموذجanthropic/claude-sonnet-4-6. - ينشئ فتح Codex / فتح Claude جلسة لوحة معلومات مرتبطة دون إرسال مطالبة البطاقة أو نقلها، للعمل اليدوي الذي يظل مرتبطًا باللوحة.
تستخدم عمليات البدء المستقلة مسار تشغيل الوكيل المتتبّع بمهمة في Gateway (الوكيل والنموذج الافتراضيان ما لم يُختر Codex/Claude صراحةً)؛ ثم يربط Workboard المهمة الناتجة ومعرّف التشغيل ومفتاح الجلسة بالبطاقة. ويسجل كل تنفيذ مرتبط أيضًا ملخصًا للمحاولة (المحرك، والوضع، والنموذج، ومعرّف التشغيل، والطوابع الزمنية، والحالة، وعدد الإخفاقات المتتابعة) بحيث تظل الإخفاقات المتكررة ظاهرة.
تحدّث لوحة المعلومات حالة المهمة من سجل مهام Gateway، وتطابق
المهام مع البطاقات بحسب معرّف المهمة أو معرّف التشغيل أو مفتاح الجلسة المرتبط. تُبقي المهمة
المصطفة/قيد التشغيل دورة حياة البطاقة نشطة؛ بينما تنقل المهمة المكتملة أو الفاشلة أو المنتهية مهلتها أو
الملغاة البطاقة نحو review أو blocked باستخدام قاعدة المزامنة نفسها
المستخدمة للجلسات المرتبطة (راجع مزامنة دورة حياة الجلسة).
أدوات الوكيل
| الأداة | الغرض |
|---|---|
workboard_list |
عرض بطاقات موجزة مع حالة المطالبة/التشخيص؛ مع مرشح اختياري للوحة. |
workboard_read |
إرجاع بطاقة واحدة مع سياق محدود للعامل (الملاحظات، المحاولات، التعليقات، الروابط، الإثبات، العناصر، نتائج البطاقات الأصلية، الأعمال الحديثة للمُسنَد إليه، التشخيصات النشطة). |
workboard_create |
إنشاء بطاقة مع بطاقات أصلية اختيارية، ومستأجر، وSkills، ولوحة، وبيانات وصفية لمساحة العمل، ومفتاح لتحقيق التكرار الآمن، وحد للتشغيل، وميزانية لإعادة المحاولة. |
workboard_link |
ربط بطاقة أصلية ببطاقة فرعية. تظل البطاقات الفرعية في حالة todo حتى تصل كل بطاقة أصلية إلى done، ثم ينقلها تصعيد الإرسال إلى ready. |
workboard_claim |
المطالبة ببطاقة لصالح الوكيل المستدعي؛ ينقل backlog/todo/ready إلى running. |
workboard_heartbeat |
تحديث Heartbeat للمطالبة أثناء تشغيل أطول. |
workboard_release |
تحرير المطالبة بعد الإكمال أو الإيقاف المؤقت أو التسليم؛ ويمكن نقل البطاقة إلى حالة تالية. |
workboard_complete / workboard_block |
أدوات منظّمة لدورة الحياة للملخصات النهائية والإثبات والعناصر وبيانات البطاقات المُنشأة (يجب أن تشير إلى بطاقات مرتبطة عكسيًا بالبطاقة المكتملة) أو أسباب الحظر. |
workboard_attachment_add / workboard_attachment_read / workboard_attachment_delete |
تخزين مرفقات صغيرة للبطاقة في حالة SQLite الخاصة بالـPlugin، وفهرستها في البطاقة، وإظهارها في سياق العامل. |
workboard_worker_log / workboard_protocol_violation |
تسجيل أسطر سجل العامل وحظر بطاقة عندما يتوقف عامل مؤتمت من دون استدعاء workboard_complete/workboard_block. |
workboard_board_create / workboard_board_archive / workboard_board_delete |
إدارة البيانات الوصفية الدائمة للوحة (اسم العرض، والوصف، وحالة الأرشفة، ومساحة العمل الافتراضية). |
workboard_runs |
إرجاع السجل الدائم لمحاولات تشغيل بطاقة. |
workboard_specify |
تحويل بطاقة أولية للفرز/التراكم إلى بطاقة todo موضّحة؛ ويسجل ملخص المواصفات في البطاقة. |
workboard_decompose |
تفريع بطاقة تنسيق أصلية إلى بطاقات فرعية مرتبطة ترث البيانات الوصفية للوحة/المستأجر؛ ويمكن إكمال البطاقة الأصلية ببيان للبطاقات المُنشأة. |
workboard_notify_subscribe / workboard_notify_list / workboard_notify_events / workboard_notify_advance / workboard_notify_unsubscribe |
إدارة اشتراكات الإشعارات. قراءات الأحداث آمنة عند إعادة التشغيل؛ وينقل advance المؤشر الدائم لكي يستأنف المستدعون من دون فقدان أحداث البطاقات المكتملة/الفاشلة/القديمة أو قراءتها مرتين. |
workboard_boards / workboard_stats |
فحص نطاقات أسماء اللوحات وإحصاءات قائمة الانتظار. |
workboard_promote / workboard_reassign / workboard_reclaim |
استعادة العمل العالق أو تسليمه. |
workboard_comment / workboard_proof |
إضافة ملاحظات التسليم أو إرفاق مراجع الإثبات/العناصر. |
workboard_unblock |
إعادة العمل المحظور إلى todo. |
workboard_dispatch |
تحفيز تصعيد التبعيات أو تنظيف المطالبات القديمة. |
ترفض البطاقات المُطالَب بها التغييرات التي تجريها أدوات الوكيل من وكلاء آخرين ما لم يكن المستدعي
يحمل رمز المطالبة الذي أعاده workboard_claim. تحجب كل بطاقة تعيدها
أداة وكيل أو استدعاء RPC في Gateway قيمة metadata.claim.token إلى [redacted]
(يُعاد الرمز نفسه مرة واحدة، في المستوى الأعلى، ومن workboard_claim فقط)،
بحيث يمكن لمشغلي لوحة المعلومات والوكلاء الآخرين فحص حالة المطالبة من دون
رؤية رمز قابل للاستخدام مطلقًا. تتم الاستعادة عبر
workboard_promote/workboard_reassign/workboard_reclaim، ولا تتطلب هذه الأدوات
الرمز.
الإرسال
الإرسال محلي في Gateway: فهو لا ينشئ عمليات نظام تشغيل عشوائية. تظل جلسات الوكلاء الفرعيين العادية في OpenClaw مسؤولة عن التنفيذ. تنفّذ دورة إرسال واحدة ما يلي:
- تصعّد البطاقات الجاهزة من ناحية التبعيات.
- تسجل البيانات الوصفية للإرسال في البطاقات الجاهزة.
- تحظر المطالبات منتهية الصلاحية أو عمليات التشغيل التي انتهت مهلتها.
- تضع علامة على بطاقات الفرز التي أُعدّت لها اللوحة باعتبارها مرشحة للتنسيق.
- تطالب بدفعة صغيرة من البطاقات الجاهزة وتبدأ عمليات تشغيل العامل عبر وقت تشغيل الوكيل الفرعي في Gateway.
يحصل العاملون على سياق محدود للبطاقة بالإضافة إلى رمز المطالبة اللازم لإرسال Heartbeat، أو إكمال البطاقة، أو حظرها عبر أدوات لوحة العمل.
اختيار العامل
تبدأ كل دورة 3 عاملين كحد أقصى افتراضيًا. تُرتب البطاقات الجاهزة حسب
الأولوية، ثم الموضع، ثم وقت الإنشاء. تبدأ الدورة بطاقة واحدة فقط لكل
مالك/وكيل، وتتخطى المالكين الذين لديهم بالفعل عمل قيد التشغيل أو المراجعة في
اللوحة. لا تُحدد البطاقات المؤرشفة، والبطاقات ذات المطالبة النشطة، والبطاقات التي ليست في
حالة ready مطلقًا لبدء العاملين (مع إمكانية أن تتأثر بجانب
البيانات من الإرسال: تنظيف المطالبات القديمة، وتصعيد التبعيات، وتنظيف انتهاء
المهلة).
مفاتيح الجلسات حتمية لكل لوحة/بطاقة، لذلك تعيد عمليات الإرسال المتكررة التوجيه إلى مسار العامل نفسه بدلًا من إنشاء جلسات غير مرتبطة:
- البطاقات المُسنَدة:
agent:<agentId>:subagent:workboard-<boardId>-<cardId> - البطاقات غير المُسنَدة:
subagent:workboard-<boardId>-<cardId>(يحدد Gateway الوكيل الافتراضي المُعد)
إذا تعذر بدء عامل بعد المطالبة ببطاقة، تحظر لوحة العمل البطاقة، وتمحو المطالبة، وتسجل فشل بدء التشغيل، وتضيف سطرًا إلى سجل العامل
- يظهر في لوحة المعلومات، وJSON الخاص بـCLI، وأدوات الوكيل، وتشخيصات البطاقة.
نقاط الدخول
- إجراء الإرسال في لوحة المعلومات
openclaw workboard dispatch/workboard dispatchفي قناة تدعم الأوامر
تستخدم النقاط الثلاث وقت تشغيل الوكيل الفرعي في Gateway عندما يكون Gateway متاحًا. لدى
CLI مسار احتياطي واحد للمشغل: إذا فشل استدعاء Gateway بسبب خطأ
اتصال/عدم توفر (أو خطأ unknown method لإصدارات Gateway
الأقدم)، ولم يُحدد هدف صريح عبر --url/--token ولم ينطبق إعداد Gateway
بعيد (OPENCLAW_GATEWAY_URL أو gateway.mode: remote)، يشغّل CLI
إرسالًا للبيانات فقط على حالة SQLite المحلية - ويمكنه تصعيد التبعيات،
وتنظيف المطالبات القديمة، وحظر عمليات التشغيل التي انتهت مهلتها، لكنه لا يستطيع بدء العاملين. لا تُعامل
إخفاقات المصادقة والأذونات والتحقق من Gateway يمكن الوصول إليه
على أنها عدم توفر؛ بل تظهر كأخطاء أوامر، وينطبق ذلك أيضًا على أي فشل في Gateway
عند تقديم هدف صريح عبر --url/--token.
يمكن للبيانات الوصفية للوحة ضبط autoDecompose وautoDecomposePerDispatch
وdefaultAssignee وorchestratorProfile. يسجل OpenClaw هذه النية
ويظهرها في سياق العامل؛ لكن تحديد المواصفات/التفكيك الفعلي يظل يُنفذ
عبر أدوات لوحة العمل العادية.
CLI وأمر الشرطة المائلة
openclaw workboard list [--board <id>] [--status <status>] [--include-archived] [--json]openclaw workboard create "Fix stale card lifecycle" --priority high --labels bug,workboardopenclaw workboard show <card-id> [--json]openclaw workboard dispatch [--board <id>] [--json]يخفي الإخراج النصي لـlist البطاقات المؤرشفة افتراضيًا (ويتجاوز
--include-archived ذلك)؛ بينما يتضمن --json دائمًا البطاقات المؤرشفة، بما يتوافق مع عقد
البطاقة الكاملة الذي تستخدمه النصوص البرمجية الحالية. يقبل show بادئة معرّف غير ملتبسة.
تقرأ list وcreate وshow دائمًا حالة الـPlugin المحلية أو تكتبها مباشرة.
يستدعي dispatch وحده Gateway قيد التشغيل، مع المسار الاحتياطي الموضح أعلاه.
راجع CLI للوحة العمل للاطلاع على جميع العلامات، وإخراج JSON، وسلوك المسار الاحتياطي لـGateway، ومعالجة بادئة المعرّف، وقواعد اختيار الإرسال، واستكشاف الأخطاء وإصلاحها.
تعكس /workboard list و/workboard show <card-id> و/workboard create <title>
و/workboard dispatch وظائف CLI. تمثل القائمة والعرض عمليات قراءة
متاحة لأي مرسل أوامر مصرح له. يتطلب الإنشاء والإرسال حالة المالك على
واجهات الدردشة، أو عميل Gateway لديه operator.write/operator.admin.
مزامنة دورة حياة الجلسة
يمكن للبطاقات الارتباط بجلسة موجودة في لوحة المعلومات، أو بجلسة تُنشأ عند بدء العمل من البطاقة. تعرض البطاقات المرتبطة دورة حياة الجلسة ضمن البطاقة: قيد التشغيل، أو قديمة، أو مرتبطة وخاملة، أو منتهية، أو فاشلة، أو مفقودة. يمكنك أيضًا التقاط جلسة موجودة من علامة تبويب الجلسات باستخدام الإضافة إلى Workboard؛ وترتبط البطاقة بتلك الجلسة، وتستخدم تسمية الجلسة أو مطالبة المستخدم الأخيرة عنوانًا، وتملأ الملاحظات من مطالبة المستخدم الأخيرة بالإضافة إلى أحدث استجابة للمساعد عند توفرها.
إذا أصبحت الجلسة المرتبطة مفقودة، تظل البطاقة مرتبطة للحفاظ على السياق،
وتستمر في توفير عناصر تحكم البدء لإعادة التشغيل في جلسة جديدة. إذا توقفت جلسة
مرتبطة نشطة عن الإبلاغ عن نشاط حديث، يضع Workboard علامة
stale على البطاقة ويخزن ذلك كبيانات وصفية حتى تمحوها دورة الحياة.
عندما تكون البطاقة في حالة عمل نشطة، يتابع Workboard الجلسة المرتبطة:
| حالة الجلسة المرتبطة | حالة البطاقة |
|---|---|
| نشطة | running |
| مكتملة | review |
| فاشلة، أو مُنهية قسرًا، أو انتهت مهلتها، أو أُجهضت | blocked |
تتقدم حالات المراجعة اليدوية على غيرها. يؤدي نقل بطاقة إلى review أو blocked أو done
إلى إيقاف المزامنة التلقائية لتلك البطاقة حتى تعيدها إلى todo أو running.
يستخدم بدء بطاقة جلسات Gateway العادية؛ ولا يخزن Workboard سوى البيانات الوصفية
للبطاقة والروابط. يظل نص المحادثة، واختيار النموذج، ودورة حياة التشغيل
مملوكًا لنظام الجلسات العادي. استخدم إيقاف على بطاقة مرتبطة نشطة
لإجهاض التشغيل النشط؛ يضع Workboard علامة blocked على تلك البطاقة لكي
تظل ظاهرة للمتابعة.
يمكن بدء البطاقات الجديدة من قوالب Workboard (bugfix وdocs وrelease
وpr_review وplugin). تملأ القوالب مسبقًا العنوان والملاحظات والتسميات والأولوية؛
ويُخزن معرّف القالب كبيانات وصفية للبطاقة.
سير عمل لوحة المعلومات
- افتح علامة تبويب Workboard في واجهة التحكم.
- أنشئ بطاقة بعنوان وملاحظات وأولوية وتسميات ووكيل اختياري و جلسة مرتبطة اختيارية، أو افتح الجلسات واختر الإضافة إلى Workboard لجلسة موجودة.
- اسحب البطاقة بين الأعمدة، أو ركّز على عنصر التحكم المدمج في حالتها واستخدم القائمة أو ArrowLeft/ArrowRight.
- ابدأ العمل من البطاقة لإنشاء جلسة في لوحة المعلومات أو إعادة استخدامها.
- افتح الجلسة المرتبطة من البطاقة أثناء عمل الوكيل.
- دع مزامنة دورة الحياة تنقل العمل الجاري إلى
review/blocked، ثم انقل البطاقة يدويًا إلىdoneعند قبولها.
التشخيصات
تُحسب التشخيصات من البيانات الوصفية المحلية للبطاقة. تشير الفحوصات المضمنة إلى:
| النوع | الشرط |
|---|---|
stranded_ready |
بطاقة todo/backlog/ready مُسندة لم تُحدّث منذ أكثر من ساعة. |
running_without_heartbeat |
بطاقة running بلا Heartbeat للمطالبة أو تحديث للتنفيذ منذ أكثر من 20 دقيقة. |
blocked_too_long |
بطاقة blocked لم تُحدّث منذ أكثر من 24 ساعة. |
repeated_failures |
وصول عدد الإخفاقات المتتبعة للبطاقة إلى 2 أو أكثر. |
missing_proof |
بطاقة done بلا إثبات أو عناصر ناتجة أو مرفقات. |
orphaned_session |
بطاقة running تحتوي على sessionKey ولكن بلا بيانات وصفية لـexecution. |
الأذونات
تندرج أساليب RPC في Gateway تحت workboard.*:
| النطاق | الأساليب |
|---|---|
operator.read |
cards.list وcards.export وcards.diagnostics، وقائمة المرفقات/جلبها، وقراءات أحداث الإشعارات، وboards.list وcards.stats وcards.runs |
operator.write |
cards.diagnostics.refresh، والإنشاء/التحديث/النقل/الحذف/التعليق/الربط/linkDependency/الإثبات/العنصر الناتج، وإضافة المرفقات/حذفها، وسجل العامل، وانتهاك البروتوكول، والمطالبة/Heartbeat/التحرير/الترقية/إعادة الإسناد/استعادة المطالبة/الإكمال/الحظر/إلغاء الحظر، وcards.dispatch وcards.bulk والأرشفة، وboards.upsert/archive/delete، وcards.specify/decompose، والاشتراك في الإشعارات/حذفها/تقديمها |
لا يتطلب أي أسلوب RPC الإذن operator.admin. يمكن للمتصفحات المتصلة بصلاحية
مشغّل للقراءة فقط فحص اللوحة، لكنها لا تستطيع تعديل البطاقات.
التخزين
يخزن Workboard البيانات الدائمة في قاعدة بيانات SQLite علائقية يملكها Plugin ضمن دليل حالة OpenClaw: توجد اللوحات والبطاقات والتسميات وأحداث دورة الحياة ومحاولات التشغيل والتعليقات وروابط الاعتماد والإثبات ومراجع العناصر الناتجة والبيانات الوصفية للمرفقات وبياناتها الثنائية والتشخيصات والإشعارات وسجلات العمال وحالة البروتوكول والاشتراكات جميعها في جداول Workboard (وليس في إدخالات المفتاح والقيمة الخاصة بالـPlugin). يحافظ تصدير البطاقة على سرد اللوحة من دون تضمين محتويات البيانات الثنائية للمرفقات.
يمكن لعمليات التثبيت التي استخدمت Workboard في إصدار .28 تشغيل
openclaw doctor --fix لترحيل نطاقات حالة الـPlugin القديمة التي شُحنت
(workboard.cards وworkboard.boards وworkboard.notify، وكذلك
workboard.attachments إن وُجدت) إلى قاعدة البيانات العلائقية.
استكشاف الأخطاء وإصلاحها
تشير علامة التبويب إلى أن Workboard غير متاح
openclaw plugins inspect workboard --runtime --jsonإذا كان plugins.allow مُهيأً، فأضف إليه workboard. وإذا كان plugins.deny
يحتوي على workboard، فأزله قبل تمكين الـPlugin.
لا تُحفظ البطاقات
تأكد من أن اتصال المتصفح يملك صلاحية operator.write. يمكن لجلسات المشغّل
ذات صلاحية القراءة فقط عرض البطاقات، لكنها لا تستطيع إنشاءها أو تعديلها أو نقلها أو حذفها.
لا يؤدي بدء بطاقة إلى فتح الجلسة المتوقعة
تحقق من معرّف وكيل البطاقة والجلسة المرتبطة، ثم افتح الجلسات أو المحادثة لفحص حالة التشغيل الفعلية.
لا يبدأ الإرسال عاملاً
تأكد من وجود بطاقة ready واحدة على الأقل بلا مطالبة نشطة:
openclaw workboard list --status readyإذا أبلغت CLI عن إرسال للبيانات فقط، فابدأ Gateway أو أعد تشغيله ثم أعد المحاولة؛ يحدّث الإرسال للبيانات فقط حالة اللوحة المحلية، لكنه لا يستطيع بدء تشغيلات عمال الوكلاء الفرعيين. قد يجري أيضًا تخطي البطاقات عندما تكون بطاقة أخرى للمالك أو الوكيل نفسه قيد التشغيل بالفعل أو بانتظار المراجعة؛ أكمل ذلك العمل النشط أو احظره أو حرره قبل إرسال المزيد للمالك نفسه.