Messages and delivery
صف هدایت
وقتی در حالی که اجرای یک نشست از قبل در حال جریان است، یک پرامپت عادی میرسد و حالت صف steer است (حالت پیشفرض که به پیکربندی نیاز ندارد)، OpenClaw تلاش میکند آن پرامپت را به زماناجرای فعال ارسال کند. OpenClaw و چارچوب بومی app-server در Codex جزئیات تحویل را به روشهای متفاوتی پیادهسازی میکنند.
این صفحه هدایت مبتنی بر حالت صف را برای پیامهای ورودی عادی در حالت steer پوشش میدهد. در حالت followup یا collect، پیامهای عادی از این مسیر عبور نمیکنند و تا پایان اجرای فعال منتظر میمانند. برای فرمان صریح /steer <message>، به هدایت مراجعه کنید.
مرز زماناجرا
هدایت، فراخوانی ابزاری را که از قبل در حال اجرا است قطع نمیکند. OpenClaw در مرزهای مدل، وجود پیامهای هدایت در صف را بررسی میکند:
- دستیار درخواست فراخوانی ابزارها را میدهد.
- OpenClaw دسته فراخوانیهای ابزارِ پیام فعلی دستیار را اجرا میکند.
- OpenClaw رویداد پایان نوبت را منتشر میکند.
- OpenClaw پیامهای هدایت موجود در صف را تخلیه میکند.
- OpenClaw پیش از فراخوانی بعدی LLM، آن پیامها را بهعنوان پیامهای کاربر میافزاید.
این کار نتایج ابزار را با پیام دستیاری که آنها را درخواست کرده است جفت نگه میدارد و سپس امکان میدهد فراخوانی بعدی مدل آخرین ورودی کاربر را ببیند.
چارچوب بومی app-server در Codex بهجای صف هدایت داخلی زماناجرای OpenClaw، turn/steer را ارائه میدهد. OpenClaw پرامپتهای در صف را در بازه سکوت پیکربندیشده دستهبندی میکند و سپس یک درخواست turn/steer واحد را با تمام ورودیهای کاربرِ گردآوریشده، به ترتیب ورود، ارسال میکند.
نوبتهای بازبینی و Compaction دستی در Codex هدایت در همان نوبت را رد میکنند. وقتی یک زماناجرا نتواند هدایت را در حالت steer بپذیرد، OpenClaw پیش از شروع پرامپت تا پایان اجرای فعال منتظر میماند.
حالتها
| حالت | رفتار هنگام اجرای فعال | رفتار بعدی |
|---|---|---|
steer |
در صورت امکان، پرامپت را به زماناجرای فعال هدایت میکند. | اگر هدایت در دسترس نباشد، تا پایان اجرای فعال منتظر میماند. |
followup |
هدایت نمیکند. | پیامهای در صف را بعداً، پس از پایان اجرای فعال، اجرا میکند. |
collect |
هدایت نمیکند. | پس از بازه حذف جهش، پیامهای سازگارِ در صف را در یک نوبت بعدی با هم ادغام میکند. |
interrupt |
اجرای فعال را بهجای هدایت آن لغو میکند. | پس از لغو، جدیدترین پیام را آغاز میکند. |
نمونه ارسال پیاپی
اگر چهار کاربر در زمانی که عامل در حال اجرای یک فراخوانی ابزار است پیام بفرستند:
- با رفتار پیشفرض، زماناجرای فعال هر چهار پیام را پیش از تصمیم بعدی مدل، به ترتیب ورود دریافت میکند. OpenClaw آنها را در مرز بعدی مدل تخلیه میکند؛ Codex آنها را بهصورت یک
turn/steerدستهبندیشده دریافت میکند. - با
/queue collect، OpenClaw هدایت نمیکند. تا پایان اجرای فعال منتظر میماند و سپس، پس از بازه حذف جهش، یک نوبت پیگیری با پیامهای سازگارِ در صف ایجاد میکند. - با
/queue interrupt، OpenClaw اجرای فعال را لغو میکند و بهجای هدایت، جدیدترین پیام را آغاز میکند.
دامنه
هدایت همیشه اجرای فعال فعلی نشست را هدف قرار میدهد. هدایت نشست جدیدی ایجاد نمیکند، سیاست ابزارِ اجرای فعال را تغییر نمیدهد و پیامها را بر اساس فرستنده تفکیک نمیکند. در کانالهای چندکاربره، پرامپتهای ورودی از قبل شامل زمینه فرستنده و مسیریابی هستند؛ بنابراین فراخوانی بعدی مدل میتواند ببیند هر پیام را چه کسی فرستاده است.
هنگامی که میخواهید پیامها بهطور پیشفرض بهجای هدایت اجرای فعال در صف قرار گیرند، از followup یا collect استفاده کنید. هنگامی که جدیدترین پرامپت باید جایگزین اجرای فعال شود، از interrupt استفاده کنید.
حذف جهش
messages.queue.debounceMs برای تحویل پیامهای در صف در حالتهای followup و collect اعمال میشود. در حالت steer همراه با چارچوب بومی Codex، این گزینه همچنین بازه سکوت پیش از ارسال turn/steer دستهبندیشده را تعیین میکند. در OpenClaw، خود هدایت فعال از زمانسنج حذف جهش استفاده نمیکند، زیرا OpenClaw بهطور طبیعی پیامها را تا مرز بعدی مدل دستهبندی میکند.