Статус памяти — одна страница, одна истина (BL-428)
Что это за страница
OrbitPilot уже отслеживал в нескольких разных местах, что он помнит о
вас: карточка сборки на панели управления, небольшие значки рядом с каждым Blink,
и строка, которую он добавляет в свои собственные ответы, когда память устарела. Слова владельца в день
выпуска: время обновления, которое молчит о SCOPE — "обновлено сегодня, но
нет доступа" — это правдивая фраза, которая все равно оставляет вас в замешательстве. Страница
Статуса памяти (/orbitpilot/memory-status/) собирает все это на одной
странице: когда память последний раз изменилась и как, каждый источник, в настоящее время в ней с количеством,
и — для всего, что отсутствует — честная причина, почему, простым языком.
Что она показывает
- Последнее обновление. Время последнего изменения памяти и метод — полное восстановление, быстрое обновление или автоматическое/ручное обновление из одного сохраненного изменения — плюс, если память устарела, деградировала или никогда не была создана, точная фраза, которую OrbitPilot прикрепил бы к ответу прямо сейчас.
- В вашей памяти. Каждый источник с реальным содержанием в памяти — Blinks, Цели, Проекты, Бизнесы, файлы и другие — с количеством элементов и когда он был последний раз собраны.
- Не в вашей памяти. Каждый другой доступный источник, каждый с действительной причиной: отключен для всего сайта, не по вашему плану (обновление dобавит его), файлы, которые ожидают, чтобы быть перемещенными в защищенную папку файлов OrbitPilot, или просто еще не были захвачены в сборку.
Обновление памяти с этой страницы
Начиная с BL-435 карточка Последнее обновление содержит два действия обновления —
Быстрое обновление (чтение только того, что изменилось с последней сборки; дешево) и
Полное восстановление (чтение и повторное встраивание всего; использует больше AI-кредитов) — так
что никому не нужно покидать страницу, чтобы действовать на основе того, что она показывает. Это те же самые элементы управления,
что и в окне чата OrbitPilot меню Память, по правилу владельца "не дублировать
код": ОДИН общий шаблонный фрагмент
(templates/_orbitpilot_rebuild_controls.html) отображается на обоих поверхностях, ОДИН
конечный пункт (orbitpilot_rebuild_memory, POST mode=soft|hard), тот же
диалог подтверждения, то же исцеление застрявшей сборки при нажатии (BL-404 reaper) и то же
живое кольцо прогресса (BL-410). Кнопки подключены делегированием на уровне документа
[data-op-rebuild] в static/js/orbitpilot-widget.js;
согласно тому, как этот скрипт загружается с задержкой, orbitpilot-loader.js ставит в очередь нажатие, которое происходит
до загрузки и воспроизводит его (rebuildFromButton), так же, как он защищает
первое нажатие кнопки чата. Когда сборка завершена, эта страница перезагружается, чтобы "Последние
обновления" повторно прочитались из get_memory_status_page, вместо того чтобы устаревать.
Защита: orbitpilot/test_memory_status_page.py::RebuildControlsTests терпит неудачу
в тот момент, когда кнопки копируются во второй шаблон или зарегистрирован второй маршрут восстановления.
Где это найти
Ссылка "🧠 Статус памяти" находится в нижней панели инструментов окна чата OrbitPilot — в той же строке, что и Новое / История / Копировать / Этот чат — так что она находится в одном нажатии от каждого разговора, закрепленного или в полном экране. Гостям видна та же ссылка, но она ведет к созданию аккаунта вместо этого, поскольку пока нет личной памяти для отчета.
Как это работает — для администраторов
Сегодня ничего настраивать не нужно. Страница открыта для каждого вошедшего пользователя; дальнейшее
ограничение по плану (например, ограничение для более высоких уровней) — всего в одном ряду Реестра функций —
зарегистрируйте Feature с ключом orbitpilot_memory_status_page
и назначьте или отключите его, никаких изменений кода не требуется.
Счета сотрудников и суперпользователей видят дополнительное уведомление на странице: их аккаунт
полностью обходят ограничения по плану (plans.services.get_effective_limits
отдает сотрудникам каждый флаг без условий), так что то, что видит аккаунт сотрудника, не то, что
видит не-сотрудник с тем же планом. Это сделано для того, чтобы администратор никогда не перепутал свой
собственный обходной вид с тем, как выглядит страница настоящего пользователя.
Как это работает — для разработчиков
orbitpilot/services.py::get_memory_status_page(user) — это полное
вычисление, и оно ТОЛЬКО агрегирует — оно вызывает те же функции, которые уже используются на каждой другой
поверхности, так что эта страница никогда не может с ними не согласоваться:
get_last_build/get_last_completed_build,
memory_is_stale, build_notice.ask_honesty_note (BL-405,
вернулась без изменений) и resolve_build_sources + _plan_gate_reason
(#597 / BL-410-P1, те же причины, которые build_user_snapshot отдает модели
во время разговора). Счеты по источникам получают один GROUP BY по
OrbitPilotMemoryChunk, исключая get_rag_disabled_keys() так же, как pipeline/retrieve.py исключает их —
источник, который администратор отключил после его сборки, все еще имеет строки в таблице, и эта страница не должна
называть эти строки "в памяти", когда извлечение никогда не будет их искать.
Вид: orbitpilot.views.orbitpilot_memory_status, имя URL orbitpilot_memory_status. Шаблон:
orbitpilot/templates/orbitpilot/memory_status.html. Паритет закреплен
orbitpilot/test_memory_status_page.py — тест создает реальную строку профессии
и утверждает, что количество на странице равно простому запросу по той же таблице, так что страница не может
тихо начать пересчитывать свои собственные цифры.
Связанные страницы
Docshub: "Иконки статуса памяти на каждый Blink" (BL-417, та же лексика и
семейство формулировок), "Ваша память остается честной" (BL-405). docs/orbitpilot/TASKS.md.
This guide was translated automatically. Read the English original.