Plugin guides
Plugin دفتر ثبت وقایع
Plugin گزارشکار، فعالیت صفحهنمایش را به یک دفترچهٔ خودکار فعالیتهای کاری تبدیل میکند. این Plugin بهصورت دورهای از صفحهنمایش یک Node جفتشده عکس میگیرد، آنها را به مشاهدات دارای مُهر زمانی خلاصه میکند و کارتهای خط زمانی را در رابط کنترل میسازد. همچنین میتواند یادداشتهای روزانهٔ جلسهٔ هماهنگی تولید کند و به پرسشهای مربوط به یک روز ثبتشده پاسخ دهد.
وضعیت متعلق به OpenClaw در Gateway و در مسیر <state-dir>/logbook/ باقی میماند، اما
پردازش مدل لزوماً محلی نیست. تصاویر نمونهبرداریشدهٔ صفحهنمایش به
مسیر بینایی پیکربندیشده ارسال میشوند؛ مشاهدات و متن خط زمانی نیز به مدل پیشفرض
عامل میروند. اگر محتوای صفحهنمایش و متن فعالیت استخراجشده باید روی دستگاه
باقی بمانند، برای هر دو مرحله از مسیرهای مدل محلی استفاده کنید.
گزارشکار بهصورت همراه ارائه میشود و بهطور پیشفرض غیرفعال است. فعالکردن Plugin باعث میشود
Gateway از ضبط صفحهنمایش استفاده کند، زیرا مقدار پیشفرض captureEnabled برابر true است.
پیش از شروع
به موارد زیر نیاز دارید:
- یک Node متصل که
screen.snapshotیاlogbook.snapshotرا ارائه کند. Node برنامهٔ macOS به مجوز Screen Recording نیاز دارد. یک میزبان Node بدون رابط گرافیکی در macOS (openclaw node host run) فرمانlogbook.snapshotارائهشده توسط Plugin را دریافت میکند که از ابزار سیستمیscreencaptureاستفاده میکند. - Plugin همراه Codex باید فعال و احراز هویت شده باشد. Codex در حال حاضر
قرارداد استخراج ساختیافتهٔ تصویر موردنیاز گزارشکار را فراهم میکند. با
openclaw models auth login --provider openaiوارد شوید؛ برای مسیرهای دیگر احراز هویت، محیط اجرایی Codex را ببینید. - یک مدل پیشفرض عامل که بهدرستی کار کند. گزارشکار پس از مرحلهٔ بینایی، از آن برای ساخت کارتها، یادداشتهای جلسهٔ هماهنگی و پرسشوپاسخ روزانه استفاده میکند.
شروع سریع
Pluginهای Codex و گزارشکار را فعال کنید:
openclaw plugins enable codexopenclaw plugins enable logbookبرای راهاندازی قطعی، یک مدل بینایی صریح پیکربندی کنید:
{ plugins: { entries: { codex: { enabled: true, }, logbook: { enabled: true, config: { visionModel: "codex/gpt-5.6-sol", }, }, }, },}اگر از plugins.allow استفاده میکنید، هر دو مورد codex و logbook را در آن قرار دهید. پس از تغییر
پیکربندی Plugin، Gateway را راهاندازی مجدد کنید، سپس ثبتها را بررسی کرده
و داشبورد را باز کنید:
openclaw gateway restartopenclaw plugins inspect logbook --runtime --jsonopenclaw nodes status --connectedopenclaw nodes describe --node <idOrNameOrIp>openclaw dashboardشرح Node باید شامل screen.snapshot یا logbook.snapshot باشد.
Nodeهای بدون رابط گرافیکی فقط پس از فعالشدن Plugin، logbook.snapshot را اعلام میکنند.
اگر فرمان وجود ندارد، عیبیابی Node را ببینید.
زبانهٔ گزارشکار فقط برای یک Plugin فعال و نشست رابط کنترل با مجوز operator.write
نمایان میشود. ردیف وضعیت باید در حال ضبط را بدون خطا نشان دهد.
پس از بستهشدن پنجرهٔ تحلیل، یک کارت خط زمانی ظاهر میشود؛ همچنین پس از ثبت
فعالیت میتوانید اکنون تحلیل شود را انتخاب کنید.
نحوهٔ کار
- ضبط: در هر بازهٔ
captureIntervalSeconds(پیشفرض ۳۰ ثانیه)، گزارشکار فرمان ضبط Node انتخابشده را فراخوانی کرده و یک قاب JPEG با اندازهٔ مقیاسشده ذخیره میکند. قابهای یکسان متوالی بهعنوان بیکار علامتگذاری شده و از تحلیل کنار گذاشته میشوند. - مشاهده: پس از سپریشدن یک پنجرهٔ تحلیل (پیشفرض ۱۵ دقیقه)، Plugin حداکثر ۱۶ قاب فعال را نمونهبرداری کرده و به مدل بینایی میفرستد؛ مدل نیز مشاهدات فعالیت دارای مُهر زمانی را برمیگرداند («VS Code: ویرایش store.ts، رفع یک خطای نوع»). وقفهٔ ضبط طولانیتر از دو دقیقه یا نیمهشب محلی نیز پنجرهٔ جاری را میبندد.
- ترکیب: مشاهدات بههمراه کارتهای موجودِ ۴۵ دقیقهٔ اخیر به کارتهای خط زمانی بازنویسی میشوند (هرکدام ۱۰ تا ۶۰ دقیقه) که شامل عنوان، خلاصه، دسته، برنامهٔ اصلی و هرگونه حواسپرتی کوتاه هستند.
- پاکسازی: قابهای قدیمیتر از
retentionDays(پیشفرض ۱۴) حذف میشوند. کارتها، مشاهدات و یادداشتهای جلسهٔ هماهنگی ذخیرهشده در حافظهٔ نهان نگه داشته میشوند.
مرز روزها و ساعتهای خط زمانی از منطقهٔ زمانی محلی Gateway استفاده میکنند، نه
منطقهٔ زمانی مرورگر. قابها و پایگاهدادهٔ SQLite خط زمانی در
<state-dir>/logbook/ قرار دارند.
جریان مدل و داده
گزارشکار از دو مسیر مدل جداگانه استفاده میکند:
| مرحله | دادهٔ ارسالی | مسیر مدل |
|---|---|---|
| مشاهده | حداکثر ۱۶ قاب JPEG نمونهبرداریشده بههمراه زمان ضبط آنها | visionModel، یا یک ورودی سازگار Codex که از tools.media به امانت گرفته شده است |
| ترکیب کارتها | مشاهدات دارای مُهر زمانی و کارتهای اخیر خط زمانی | مدل پیشفرض عامل از طریق زمان اجرای LLM مربوط به Plugin |
| تولید یادداشت جلسهٔ هماهنگی | کارتهای روز انتخابشده و روز قبل | مدل پیشفرض عامل از طریق زمان اجرای LLM مربوط به Plugin |
| پرسش دربارهٔ روز | پرسش، کارتهای روز انتخابشده و مشاهدات اخیر | مدل پیشفرض عامل از طریق زمان اجرای LLM مربوط به Plugin |
کل پایگاهدادهٔ SQLite برای هیچیک از مدلها ارسال نمیشود. تصاویر خام صفحهنمایش فقط به مرحلهٔ مشاهده میروند؛ ترکیب کارت، جلسهٔ هماهنگی و پرسشوپاسخ، متن استخراجشده را دریافت میکنند.
پیکربندی
{ plugins: { entries: { codex: { enabled: true, }, logbook: { enabled: true, config: { captureEnabled: true, captureIntervalSeconds: 30, analysisIntervalMinutes: 15, nodeId: "my-mac", screenIndex: 0, maxWidth: 1440, visionModel: "codex/gpt-5.6-sol", retentionDays: 14, }, }, }, },}همهٔ کلیدهای پیکربندی گزارشکار اختیاری هستند. مقادیر عددی به اعداد صحیح گرد شده و به بازهٔ پشتیبانیشده محدود میشوند.
| کلید | پیشفرض | بازه یا مقادیر | رفتار |
|---|---|---|---|
captureEnabled |
true |
بولی | کلید اصلی پایدار برای تصاویر جدید؛ هنگامی که false باشد، خط زمانی همچنان در دسترس است |
captureIntervalSeconds |
30 |
5-600 |
تأخیر میان تلاشهای ضبط |
analysisIntervalMinutes |
15 |
3-120 |
پنجرهٔ هدف مشاهده؛ وقفهها و نیمهشب میتوانند آن را زودتر ببندند |
nodeId |
تنظیمنشده | شناسهٔ Node یا نام نمایشی | ضبط را به یک Node متصل محدود میکند؛ تطبیق به بزرگی و کوچکی حروف حساس نیست |
screenIndex |
0 |
0-16 |
نمایهٔ نمایشگر با مبدأ صفر |
maxWidth |
1440 |
480-3840 |
سقف درخواستی اندازهٔ ضبط؛ macOS بدون رابط گرافیکی آن را روی بزرگترین بُعد اعمال میکند |
visionModel |
تنظیمنشده | provider/model |
مسیر ساختیافتهٔ صریح؛ ارجاعهای نادرست تحلیل را متوقف میکنند و ارائهدهندگان پشتیبانینشده باعث شکست دستهها میشوند |
retentionDays |
14 |
1-365 |
قابهای قدیمی را حذف میکند؛ کارتها، مشاهدات و یادداشتهای جلسهٔ هماهنگی باقی میمانند |
بدون nodeId، گزارشکار ابتدا یک Node برنامهٔ متصل را که
screen.snapshot ارائه میکند ترجیح میدهد، سپس به یک Node بدون رابط گرافیکی که
logbook.snapshot ارائه میکند رجوع میکند. در تنظیمات بدون تثبیت Node، Node ناموفق به پشت سایر
Nodeهای واجد شرایط منتقل میشود. کلید توقف موقت داشبورد فقط برای همان نشست است و با
راهاندازی مجدد Gateway بازنشانی میشود؛ برای توقف پایدار از captureEnabled: false استفاده کنید.
انتخاب مدل بینایی
گزارشکار مدل مشاهده را به ترتیب زیر تعیین میکند:
plugins.entries.logbook.config.visionModel- نخستین ورودی Codex با قابلیت تصویر در
tools.media.image.models - نخستین ورودی Codex با قابلیت تصویر در
tools.media.models
سایر ارائهدهندگان رسانه نادیده گرفته میشوند، زیرا در حال حاضر قرارداد
استخراج ساختیافتهٔ موردنیاز گزارشکار را ارائه نمیکنند. تنظیم
tools.media.image.enabled: false پیشفرضهای رسانهای بهامانتگرفتهشده را غیرفعال میکند، اما
یک visionModel صریح گزارشکار همچنان اعمال میشود.
زبانهٔ داشبورد
- خط زمانی: کارتهای بازشدنی برای هر فعالیت با رنگهای دسته، برنامهٔ اصلی، برچسبهای حواسپرتی و یک قاب کلیدی از تصویر صفحه.
- نمای کلی روز: نسبت تمرکز، تفکیک دستهها و برنامههای پرکاربرد.
- جلسهٔ هماهنگی روزانه: فعالیتهای دیروز و امروز را به یک گزارش آمادهٔ جایگذاری تبدیل میکند.
- پرسش دربارهٔ روز: پاسخ به پرسشهای زبان طبیعی بر پایهٔ خط زمانی ثبتشده («چه زمانی PR مربوط به Gateway را بررسی کردم؟»).
- اکنون تحلیل شود: بهجای انتظار برای بازهٔ تحلیل، پنجرهٔ ضبط جاری را فوراً میبندد.
روشهای Gateway
گزارشکار روشهای RPC زیر را در Gateway ثبت میکند:
| روش | پارامترها | دامنه | نتیجه |
|---|---|---|---|
logbook.status |
هیچکدام | operator.read |
وضعیت ضبط، تحلیل، مدل، Node، روز Gateway و منطقهٔ زمانی Gateway |
logbook.days |
هیچکدام | operator.read |
روزهای دارای تعداد کارتهای خط زمانی و محدودههای زمانی کارت |
logbook.timeline |
{ day?: "YYYY-MM-DD" } |
operator.read |
کارتهای استخراجشده و آمار روز؛ پیشفرض، روز جاری Gateway است |
logbook.frames |
{ startMs, endMs } |
operator.write |
فرادادهٔ قابها در بازهٔ درخواستی بر حسب میلیثانیه از مبدأ |
logbook.frame |
{ frameId } |
operator.write |
یک قاب خام JPEG بهصورت base64 |
logbook.standup |
{ day?, refresh? } |
operator.write |
متن جلسهٔ هماهنگی ذخیرهشده در حافظهٔ نهان یا بازتولیدشده برای یک روز |
logbook.ask |
{ day?, question } |
operator.write |
پاسخ مبتنی بر خط زمانی برای یک روز |
logbook.capture.set |
{ paused } |
operator.write |
وضعیت توقف موقت مخصوص نشست و وضعیت بهروزشده |
logbook.analyze.now |
هیچکدام | operator.write |
تحلیل در انتظار را آغاز میکند یا دلیل آغازنشدن آن را برمیگرداند |
روشهای خواندن، وضعیت عملیاتی یا متن استخراجشده را برمیگردانند. پیکسلهای خام
تصاویر صفحهنمایش، عملیات دارای هزینهٔ مدل و تغییرات زمان اجرا به
operator.write نیاز دارند. زبانهٔ رابط کنترل نیز به operator.write نیاز دارد، زیرا
این عملیات و پیشنمایش قابهای خام را ارائه میکند؛ یک کارخواه فقطخواندنی همچنان میتواند
روشهای متن استخراجشده را مستقیماً فراخوانی کند.
نکات حریم خصوصی
- تصاویر میتوانند هر چیزی را که روی صفحه است، از جمله اطلاعات محرمانه، در خود داشته باشند. قابها هرگز دستگاه را ترک نمیکنند، مگر بهعنوان ورودی نمونهبرداریشده برای مدل مشاهدهٔ پیکربندیشده.
- مشاهدات، کارتهای اخیر و پرسشها ممکن است هنگام ترکیب کارت، تولید یادداشت جلسهٔ هماهنگی یا پرسشوپاسخ، از طریق مدل پیشفرض عامل دستگاه را ترک کنند. سیاست مدیریت دادهٔ ارائهدهنده را برای هر دو مسیر مدل اعمال کنید.
- هنگامی که به یک خط لولهٔ کاملاً محلی نیاز دارید، برای هر دو مدل مشاهدهٔ ساختیافته و مدل پیشفرض عامل از مسیرهای محلی استفاده کنید.
- قابها، پایگاهدادهٔ خط زمانی و ضبطهای موقت با مجوز فایل فقط برای مالک نوشته میشوند.
- افزودن
screen.snapshotبهgateway.nodes.denyCommandsکلید قطع ضبط صفحهنمایش است: این کار هم ضبط Node برنامه و هم فرمانlogbook.snapshotخود گزارشکار را مسدود میکند. - تنظیم
tools.media.image.enabled: falseهمچنین مانع میشود گزارشکار مدلهای تصویر رسانه را برای تحلیل به امانت بگیرد؛ در این حالت فقط یکvisionModelصریح در پیکربندی Plugin استفاده میشود.
عیبیابی
زبانهٔ گزارشکار وجود ندارد
هر سه شرط را بررسی کنید:
- خروجی
openclaw plugins list --enabledشاملlogbookباشد. - Gateway پس از تغییر Plugin یا فهرست مجاز راهاندازی مجدد شده باشد.
- اتصال رابط کنترل دارای
operator.writeباشد؛ نشستهای فقطخواندنی توصیفگر زبانهٔ تعاملی را دریافت نمیکنند.
اگر plugins.allow تنظیم شده باشد، برای پیکربندی پیشنهادی باید هر دو مورد logbook و codex را شامل شود.
ثبت با خطا مواجه میشود
openclaw nodes status --connectedopenclaw nodes describe --node <idOrNameOrIp>openclaw logs --follow- تأیید کنید که Node قابلیت
screen.snapshotیاlogbook.snapshotرا ارائه میدهد. - مجوز ضبط صفحه را در Mac ثبتکننده اعطا کنید.
- اگر
nodeIdپیکربندی شده است، تأیید کنید که با شناسه یا نام نمایشی Node مطابقت دارد. - بررسی کنید که
gateway.nodes.denyCommandsشاملscreen.snapshotنباشد.
پس از سه شکست متوالی، Logbook بهمدت ده نوبت ثبت عقبنشینی میکند و سپس دوباره تلاش میکند. راهاندازیِ بدون تثبیت روی یک Node میتواند به Node واجد شرایط دیگری منتقل شود.
ثبتها موفقاند، اما هیچ کارتی ظاهر نمیشود
- وضعیت مدل موجود نیست به این معناست که هیچ مسیر سازگارِ بینایی ساختیافتهای یافت نشده است. Plugin مربوط به Codex را فعال و احراز هویت کنید، یا یک
visionModelصریح و معتبر تنظیم کنید. تا زمانی که مدل موجود نباشد، فریمهای ثبتشده در حالت انتظار باقی میمانند و پس از اصلاح پیکربندی قابل تحلیل خواهند بود. - تا زمان
analysisIntervalMinutesمنتظر بمانید، یا پس از ثبت فعالیت، اکنون تحلیل کن را انتخاب کنید. - فریمهای یکسانِ متوالی شواهد بیکاری هستند و وارد دستههای تحلیل نمیشوند. پیش از آزمایش، محتوای قابلمشاهدهٔ صفحه را تغییر دهید.
- اگر جدیدترین دسته خطایی نشان میدهد، مشکل مدل یا احراز هویت را برطرف کنید و اکنون تحلیل کن را انتخاب کنید. برای جلوگیری از هزینهٔ تکراری مدل، تلاش مجدد برای دستههای ناموفق فقط با این اقدام صریح انجام میشود.