ویجت چت OrbitPilot — استریم، متحرک، موبایل و صوتی
این چیست
OrbitPilot اکنون یک ویجت چت شناور جهانی برای کاربران ورود کرده است: یک دکمه 🛰 در گوشه پنلی را باز میکند که میتوانید از هر صفحهای استفاده کنید. این پنل غیرمسدودکننده است (در حالی که باز است به مرور ادامه دهید)، قابل جابهجایی، قابل جمع شدن و جای خود را به خاطر میسپارد و گفتگوی بازی که در حال حرکت در سایت هستید.
قابلیتهای جدید
- پاسخهای استریم شده — پاسخ به صورت کلمه به کلمه ظاهر میشود به جای اینکه بعد از انتظار.
- متوقف کردن — متوقف کردن هوش مصنوعی در میانه پاسخ. متوقف کردن هر چیزی که تا کنون نوشته شده را ذخیره میکند و از تعداد پرسشهای مجاز ماهانه شما کم نمیکند.
- کپی / دانلود کل چت — دکمهها در بالای پنل و پایین آن (دانلود یک متن .txt است).
- کپی یک پیام واحد — روی هر حباب بر روی آیکون کپی بگذارید.
- بزرگنمایی پنجره، مرور تاریخچه چت و شروع گفتگوی جدید.
- ورودی صوتی — میکروفن را بزنید و صحبت کنید; کلمات شما به طور خودکار تایپ میشود.
مهمانها (کاربران غیرورود کرده) ویجت چت پاپ آپ صفحه اصلی اصلی را حفظ میکنند.
در تلفن شما (موبایل)
- پنل به پایین صفحه میچسبد و هرگز از لبهها تجاوز نمیکند, در هر جهتی — چرخاندن تلفن بهطور خودکار آن را دوباره متناسب میکند.
- این ناحیه و نشانگر خانه (ناحیههای ایمن) را رعایت میکند و از ارتفاع زنده صفحه استفاده میکند به طوری که نوار آدرس مرورگر نمیتواند دکمه ارسال را برش دهد.
- پس از صحبت و ارسال, کادر خالی میشود برای سوال بعدی شما — دوباره میکروفون را بزنید تا برای نوبت بعدی صحبت کنید.
برای توسعهدهندگان
استریم به یک نمایش غیرهمزمان تحت ASGI نیاز دارد (یک تولیدکننده همزمان قبل از
نخستین بایت بافر میکند). orbitpilot.views.orbitpilot_ask_stream یک async def است که
StreamingHttpResponse را از یک تولیدکننده غیرهمزمان باز میگرداند که رویدادهای سرور-فرستاده شده را پخش میکند
(meta ⟶ token… ⟶ done). تمام ORM/گیتینگ در دو کمککننده SYNC
(_prepare_ask_stream / _finalize_ask_stream) از طریق
sync_to_async(thread_sensitive=True) اجرا میشود. متوقف کردن = کلاینت درخواست را متوقف میکند ⟶ تولیدکننده غیرهمزمان لغو میشود ⟶ پاسخ جزئی ذخیره میشود و ردیف سهم نوشته نمیشود. فرانتاند در templates/_orbitpilot_widget.html +
static/css/orbitpilot-widget.css + static/js/orbitpilot-widget.js زندگی میکند، که فقط در base.html برای کاربران تأیید شده گنجانده شده است.
پاسخگویی موبایل (Workstream E): کل ویجت box-sizing: border-box است بنابراین حاشیه 1px در داخل عرض محاسبه میشود (overflow های قدیمی آیفون width:100vw + border بود). قانون @media (max-width:575px) 100vw را برای left/right: env(safe-area-inset-*) + width:auto حذف میکند، اندازهها را با dvh (با یک vh پشتیبان) اندازهگیری میکند و مجری را با env(safe-area-inset-bottom) شیب میزند. در JS، یک موقعیت کشیده شده بر روی دسکتاپ در viewport موبایل اعمال نمیشود، و یک شنونده resize/orientationchange موقعیت را دوباره تنظیم میکند از طریق applyPos(). صدای واضح: ماژول گفتار یک بافر saved نهایی شده را جدا از ورودی نگه میدارد; send() اکنون یک resetVoice() مشترک را فراخوانی میکند (شناسایی را متوقف میکند، تایمر سکوت را خالی میکند، saved را خالی میکند) درست زمانی که input.value را خالی میکند، بنابراین نوبت بعدی بدون محتوا آغاز میشود.
اندازه فونت چت + اصلاح ارسال موبایل (2026-07-27)
- A− / A+ در هدر ویجت متن چت را کوچک یا بزرگ میکند. انتخاب شما به خاطر سپرده میشود
(در مرورگر از طریق کلید
op_widget_fontذخیره میشود) در سراسر صفحات و جلسات. اندازه به 12−22px محدود میشود. - دکمه ارسال در تلفنها: ردیف ترکیب اکنون دکمههای ارسال (و میکروفن) را در کنار کادر متن در صفحههای باریک واضح نگه میدارد — پیشتر، کادر متن میتوانست دکمه ارسال را از لبه راست حذف کند.
برای توسعهدهندگان: markup templates/_orbitpilot_widget.html، رفتار
static/js/orbitpilot-widget.js (applyFont()/bumpFont()، در ابتدای کار دوبارهسازی شده) ، طراحی
static/css/orbitpilot-widget.css. دکمهها یک متغیر CSS --op-chat-font را افزایش میدهند که توسط
بدنه پیام + ورودی خوانده میشود; ترکیبکننده از min-width:0 در textarea و flex:0 0 auto بر روی
دکمهها استفاده میکند تا دکمه ارسال هرگز از صفحه خارج نشود.
منوی همبرگری + حالت تمام صفحه (2026-07-27)
هدر ویجت چت اکنون یک منوی ☰ و یک دکمه ⮲ تمام صفحه دارد:
- دستورالعملهای شما — یادداشتهای دائمی که هوش مصنوعی همیشه در نظر میگیرد (مثل دستورالعملهای سفارشی ChatGPT). ذخیرهشده در
OrbitPilotSettings.custom_user_promptاز طریقorbitpilot_custom_instructions; با ویژگیcustom_promptکه دیوار بسته - دانلودها — اکنون دو گزینه مشخص دارد: «این گفتگو فقط»
(
orbitpilot_conversation_download) در برابر «تمام تاریخچه چت من» (جدیدorbitpilot_history_download). دکمه نوار ابزار به «⮵ این چت» تغییر نام داده شده است. - حافظه → اکنون حافظهام را بازسازی کن — یک بازسازی کامل
(
orbitpilot_rebuild_memory) که در پس یک هشدار هزینه تأیید قرار دارد (همه چیز را دوباره میخواند و دوباره وارد میکند، که از اعتبار هوش مصنوعی استفاده میکند); یک بازسازی را در حال حاضر در حال اجرا انباشته نمیکند.
حالت تمام صفحه (⮲) /orbitpilot/chat/ را در یک برگه جدید باز میکند، یک گفتگوی سبک ChatGPT/Gemini که همان ویجت را دوباره استفاده میکند (از طریق کلاس بدنه op-fullpage) — بنابراین جابهجایی بین
ویجت کوچک و صفحه کامل همان گفتگو را حفظ میکند (اشتراک op_widget_conv localStorage + یک storage event listener).
برای توسعهدهندگان: markup templates/_orbitpilot_widget.html، رفتار
static/js/orbitpilot-widget.js، طراحی static/css/orbitpilot-widget.css; نمای دید تمام صفحه
orbitpilot.views.orbitpilot_chat → orbitpilot/templates/orbitpilot/chat_full.html.
بهروزرسانی سریع در برابر بازسازی کامل (حافظه نرم/سخت، 2026-07-27)
منوی 🧠 حافظه ویجت اکنون دو بازسازی را ارائه میدهد:
- ⚡ بهروزرسانی سریع (نرم) — فقط آیتمهایی که تغییر دادهاید را دوباره میخواند و دوباره وارد میکند از آخرین ساخت؛ آیتمهای بدون تغییر به واردات موجود خود ادامه میدهند و آیتمهای حذفشده حذف میشوند. خیلی ارزانتر است، زیرا هزینه واردات OpenAI با تغییرات نه با کل بدنه مقایسه میشود.
- 🔄 بازسازی کامل (سخت) — همه موارد را از صفر دوباره میخواند و دوباره وارد میکند (از اعتبار هوش مصنوعی بیشتری استفاده میکند). فقط در صورتی که چیزی به نظر نادرست میآید از آن استفاده کنید.
برای توسعهدهندگان: run_memory_build(user, settings, build, incremental=True) قسمتهای جدید را با قسمتهای ذخیرهشده بر اساس (source_key, source_id, chunk_index, content_hash) کلید
قبل از فراخوانی embed_chunks مقایسه میکند، بنابراین فقط قسمتهای جدید/تغییر یافته دوباره وارد میشوند؛ ردیفهای منقضی شده در همان بلاک اتمی پاک میشوند؛ ردیفهای بدون تغییر به حال خود باقی میمانند. حالت در OrbitPilotMemoryBuild.incremental نگهداشته میشود (مهاجرت orbitpilot/0025) و توسط
orbitpilot_rebuild_memory از mode=soft|hard تنظیم میشود. اگر incremental حذف شود، run_memory_build آن را از رکورد ساخت میخواند. مسیر کامل/سختترین رفتار پاک کردن اتمی دقیق قبلی + دوباره وارد کردن را حفظ میکند.
اصلاحات مبتنی بر چت (2026-07-28)
تحلیل گفتگوهای واقعی (بدون شناسایی PII) OrbitPilot چهار اصلاح را نمایان کرد:
- لینکهای AI شکسته (
your-app-link): مدل یک دامنه ایجاد کرده است زمانی که مسیرهای نسبی از یک دفترچه منقضی ارائه شد. اکنون (الف) یک بررسی وضعیت سیستم هشدار میدهد اگرSITE_URLدر تولید localhost باشد، و (ب)orbitpilot.services.heal_links()هر لینک BASE placeholder/localhost را در هر پاسخ (استریم/مسدود کننده/مهمان) به میزبان واقعی سایت بازنویسی میکند — بنابراین لینکها حتی قبل از بازسازی کار میکنند. اصلاح دائمی (تنظیمSITE_URL+ بازسازی) در چک لیست تنظیمات مدیر قرار دارد. - «لیست وینکهای من» اکنون کار میکند:
pipeline/retrieve.py add_list_intent_sources()تمام بخشهای یک منبع را هنگامی که پرسش یک درخواست نرمافزاری است ("لیست/نمایش/تمام وینکها/کارها/رویدادها")، و نمونههای لقبی Wink را نمونهبرداری میکند — بنابراین هوش مصنوعی آیتمهای واقعی را لیست میکند، نه فقط تعداد. - عملیات بعدی قابل کلیک: عملیات اکنون
{label, url}هستند. یک لینک ناوبری واقعی به عنوان یک دکمه قابل کلیک در نظر گرفته میشود (در یک برگه جدید باز میشود)؛ در غیر این صورت یک چیپ پیشپر میشود. در تمام ویجت، مدال خانگی مهمان (که قبلاً عملیات را از دست میداد)، و نتیجه تمام صفحه بهبود یافته است. لینکهای پاسخ داخلی نیز اکنون در یک برگه جدید باز میشوند. - اصلاح prompt: خوشه پاسخ اصلی بر تکرار بیش از حد هدف اصلی کاربر متوقف میشود و به طور مؤثر "چه چیزی از دیروز تغییر کرده" را مدیریت میکند (این از نمونه فعلی کار میکند، نه تاریخ روزانه).
برای توسعهدهندگان: orbitpilot/services.py (heal_links، request_base،
split_answer_actions اکنون برگشتی dict، لایه next_actions مهمان)،
pipeline/retrieve.py (add_list_intent_sources), adminapp/diagnostics.py
(_check_site_url)، ویجت JS + home.html (رندر عملیات + DOMPurify target=_blank hook)،
aihub/prompt_registry.py (هسته + پیشفرضهای next_actions; در پیشفرضهای کاشتهشده بدون تغییر از طریق
aihub/0007 بهروز میشوند).
This guide was translated automatically. Read the English original.