From 1eef73ec225cccd908653429405cbaa6bd4b44cb Mon Sep 17 00:00:00 2001 From: raptorggi Date: Thu, 29 Oct 2026 21:24:45 -0700 Subject: [PATCH] =?UTF-8?q?README=20=D1=81=D0=BE=20=D1=81=D0=BA=D1=80?= =?UTF-8?q?=D0=B8=D0=BD=D1=88=D0=BE=D1=82=D0=BE=D0=BC=20=D0=BF=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BB=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Что показывает вкладка «Токены», как устроен прокси внутри OpenCode, установка без обёртки, переменные окружения, запуск server.mjs отдельно под Node. --- README.md | 123 +++++++++++++++++++++++++++++++++++++++++++++++++ docs/panel.png | Bin 0 -> 260123 bytes 2 files changed, 123 insertions(+) create mode 100644 README.md create mode 100644 docs/panel.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..8e11d1a --- /dev/null +++ b/README.md @@ -0,0 +1,123 @@ +# context-panel + +Панель «Токены» для веб-интерфейса OpenCode 2: что сейчас лежит в контексте сессии, как он рос и сколько +токенов ушло за сессию, за день и за всё время. Работает как плагин OpenCode и поднимается в его же процессе. + +Вкладка «Токены» в боковой панели OpenCode + +## Что на вкладке + +В шапке сессии появляется кнопка с кружком и % заполнения контекста. Она открывает боковую панель на вкладке +**«Токены»** рядом с Review и Context; вкладку можно выбрать и вручную. Кнопка и вкладка повторяют разметку +OpenCode, поэтому стили у них родные. Если OpenCode перерисует интерфейс, `panel.js` вставит их заново. + +- **Состав контекста.** Сколько токенов было в последнем запросе к модели (как в самом OpenCode) из лимита + модели. Разбивка по категориям: сообщения, ответы, reasoning, вывод каждого тула (MCP отдельно, + `gitlab: …`, `jira: …`; для Code Mode — какие MCP вызывал скрипт), сводка compaction. Учитывается только + то, что сейчас в контексте, — его отдаёт сам OpenCode (`/api/session/{id}/context`). Категории считаются как + символы/4, так же оценивает сам OpenCode. «Остаток» — это разница между реальным числом токенов и суммой + оценок: системный промпт, AGENTS.md, схемы тулов и MCP, плюс погрешность. +- **Рост контекста по шагам.** Токенов в каждом запросе к модели за всю сессию, линия лимита модели и отметки + compaction. Под графиком — список compaction: когда, авто или вручную, контекст до и после, размер сводки, + сколько заняло. Провал на графике без отметки compaction — это чистка вывода тулов (prune / DCP). +- **Самые тяжёлые вызовы в контексте.** Топ-10 вызовов тулов в текущем контексте: тул, что вызывали (файл, + команда, описание), токены входа и вывода. +- **Расход за сессию.** Input, cache read/write, output, reasoning, число шагов модели. Если были сабагенты, + рядом показан итог вместе с ними. +- **Скорость модели в сессии.** Генерация (output + reasoning за время потока, ток/с), среднее ожидание первого + токена, prefill (input без кэша за это время, ток/с) и среднее время модели на шаг. Начало потока — первая + часть ответа, конец — `time.streamed` сообщения. Выполнение тулов не считается. +- **Расход за сегодня / 7 дней / 30 дней / всё время**, по проекту или по всем проектам, плюс топ моделей + (со скоростью генерации и временем на шаг). Над таблицей — график с выбором периода: сегодня по часам, 7 и + 30 дней по дням, всё время по дням или по неделям, если история длиннее 90 дней. Столбики разбиты по типу + токенов (Cache / Input / Output) или по моделям (топ-4 + «другие»). + +Каждый раздел сворачивается кликом по заголовку; какие свёрнуты — запоминается в браузере (`localStorage`). +Данные обновляются раз в 3 секунды, пока вкладка выбрана, % на кнопке — раз в 10 секунд. + +## Как устроено + +У веб-интерфейса OpenCode нет точек расширения: он зашит в бинарник, слоты для плагинов есть только в TUI, а +своих HTTP-маршрутов серверный плагин добавить не может. Поэтому плагин `context-panel.v2.ts` поднимает внутри +процесса OpenCode прокси (`server.mjs`) на отдельном порту. Прокси пропускает HTTP, SSE и WebSocket как есть, а +в HTML-страницы вставляет `