Skip to main content
Glama
nvk
by nvk

LLM Wiki for Chrome

Открытый, не содержащий контента исполнительный слой для целевых адаптеров llm-wiki. Он предоставляет одно расширение Chrome, один разрешенный хост Native Messaging, частный ретранслятор Unix-сокетов и версионированный типизированный контракт заданий.

Исходный код расширения и локального коннектора является открытым. Разрешения браузера, данные страниц, учетные данные, частные слоты результатов и сокеты времени выполнения остаются локальными и никогда не являются содержимым репозитория. Доступность открытого исходного кода не является публикацией в Chrome Web Store или разрешением на публикацию пользовательских данных.

Это не автономный агент естественного языка для браузера. Он предоставляет небольшую структурированную поверхность инструментов агента — общие вкладки, снимок доступности, скриншот области просмотра, семантический клик, частная вставка текста, клавиатурная комбинация и прокрутка — и компилирует каждый вызов в тот же самый точный типизированный протокол. Он не принимает произвольный JavaScript, сырые методы CDP, загруженный код, фоновый доступ к браузеру или действия, созданные на странице. Адаптеры, специфичные для провайдеров, по-прежнему отвечают за более строгую маршрутизацию, аутентификацию, журналы, восстановление, идемпотентность и финальную проверку обратного считывания для ответственных рабочих процессов.

LLM Wiki for Chrome, подключенный к одной явно общей вкладке

Руководство по установке, совместной работе, безопасности и устранению неполадок →

Процесс совместной работы по клику

Расширение не требует постоянного доступа к сайту или регистрации хоста Chrome для каждой страницы. Пользователь открывает HTTPS-страницу и нажимает на действие расширения. Его имя, видимое в Chrome, — LLM Wiki for Chrome; терминология исполнителя браузера используется только для внутреннего протокола и реализации. Этот жест пользователя Chrome создает новый временный грант на совместную работу, привязанный к конкретной вкладке, URL и источнику. Нажатие на дополнительные вкладки формирует явное рабочее пространство из до 16 грантов; исполнитель никогда не перечисляет несвязанные вкладки. Навигация в рамках того же источника изменяет точный ID гранта и URL, так что устаревшие программы завершаются с ошибкой. Грант отзывается, когда вкладка покидает свой источник, закрывается или пользователь останавливает эту вкладку или все рабочее пространство на боковой панели.

Активный грант виден на странице как фиксированная зеленая рамка и пилюля LLM WIKI • CONTROLLED, а также значок действия ON. Маркер является упакованным, неинтерактивным, не учитывающим содержимое и внедряется только после нажатия на расширение; он удаляется при отзыве гранта и никогда не получает содержимое страницы или задания. Слушатель действия получает грант activeTab от Chrome и синхронно открывает боковую панель для этой конкретной вкладки. Загрузка панели подтверждает созданный действием грант; ретранслированное сообщение панели никогда не пытается открыть панель или создать жест пользователя. Его кнопка подключения является элементом управления статусом/повтором, а не заменой жеста панели инструментов, создающего полномочия activeTab. Состояние подключения означает, что грант был опубликован через работающий локальный коннектор, поэтому агент может определить готовность с помощью browser_status, не прося пользователя проверять внутренности расширения.

Локальный агент и целевые адаптеры получают частное рабочее пространство через нативный сокет. Прямой агент должен сначала перечислить точные нажатые гранты и указать один ID сотрудничества при каждом вызове инструмента. Затем сервер компилирует фиксированную типизированную программу и завершается с ошибкой, если грант или страница изменились. Клик авторизует ограниченные чтения и структурированное взаимодействие на этой конкретной вкладке; он никогда не предоставляет фоновый доступ к браузеру. Ответственные рабочие процессы провайдера по-прежнему используют целевой адаптер для более строгих предусловий и независимой проверки.

Код адаптера по-прежнему необходимо установить и доверять ему один раз. Грант на совместную работу заменяет регистрацию для каждого ресурса и OAuth провайдера только для рабочих процессов, которые можно проверить и подтвердить через пользовательский интерфейс браузера. Целевой адаптер может сохранить сторонний API как опциональный более строгий путь проверки.

Программы мутации могут связывать отпечаток версии, принадлежащий провайдеру, с assert_ax_private_sha256. Исполнитель пересчитывает ограниченную проекцию доступности на точной открытой вкладке непосредственно перед управляемой границей мутации и завершается с ошибкой при расхождении. Ожидаемый хеш остается частным значением; ни он, ни спроецированное содержимое страницы не отображаются на боковой панели.

Адаптеры провайдера используют встроенный клиент напрямую:

from browser_executor.client import BrowserExecutorClient

executor = BrowserExecutorClient()
collaboration = executor.collaboration_for_url(expected_url)
if collaboration is None:
    raise RuntimeError("click the extension on the target page")

# Bind collaboration_id, url, and origin into the signed typed program.
result = executor.run(program, private_values=private_values)

Codex и другие MCP-клиенты используют нейтральную к провайдеру прямую поверхность сотрудничества вместо самостоятельного создания программ:

.venv/bin/python adapter.py mcp-server

MCP-сервер публикует фиксированный структурированный инвентарь инструментов, охватывающий явный жизненный цикл вкладок, точную навигацию в пределах одного источника, ожидания, снимки доступности, скриншоты области просмотра/области/всей страницы, геометрию элементов, клик/наведение/ввод текста/выбор/перетаскивание/клавиатуру/прокрутку, ограниченную диагностику, передачу файлов из зарегистрированного корня, активацию интерфейса менеджера паролей и составление черновиков рабочих процессов в памяти. Он не имеет произвольных программ, CSS-селекторов, скриптов, инструментов выполнения на естественном языке или запросов к несвязанным вкладкам. Содержимое страницы возвращается только вызывающему локальному агенту для активного запроса и не сохраняется в этом репозитории и не отображается на боковой панели.

Related MCP server: browser-mcp

Статус разработки

Текущая ветка разработки расширяет основу 0.0.1 первым ограниченным срезом выполнения:

  • строгое хеширование и проверка программ;

  • кросс-языковые тесты политических решений для Python-клиента и MV3-валидатора;

  • точные HTTPS-цели и объявления ограниченных действий;

  • гранты activeTab, созданные кликом, без постоянных разрешений хоста;

  • ограниченное рабочее пространство для совместной работы с несколькими вкладками с частным поиском точного URL;

  • нативные сокеты для каждого экземпляра Chrome, агрегированные локальным клиентом, так что несколько профилей или процессов Chrome не могут перезаписывать общие вкладки друг друга;

  • фиксированная рамка/пилюля на странице и значок панели инструментов, показывающие, какие вкладки контролируются;

  • зеленая группа вкладок LLM Wiki, содержащая только явные гранты;

  • примитивы: открытие/навигация/история/перезагрузка в пределах одного источника, фокус/закрытие точной вкладки, семантические ожидания, наведение, выбор опции, перетаскивание и прокрутка к элементу;

  • уплощенная, ограниченная коллекция доступности по прикрепленным дочерним фреймам с геометрией и взаимодействиями, привязанными к сессии; семантическое обнаружение AX также охватывает открытые теневые деревья без включения произвольного обхода DOM;

  • скриншоты всей страницы с ограничением области и размеров, семантическая геометрия элементов и ограниченные метрики производительности;

  • корни загрузки/выгрузки на локальной машине с проверками реального пути, проверкой завершенной загрузки, принудительным применением опасного состояния, потоковыми хешами и без неявных полномочий файловой системы;

  • ручной, утвержденный план и автоматический ограниченные режимы авторизации с защищенными действиями, всегда возвращающимися к локальному подтверждению и счетчику решений сессии без содержимого;

  • уведомления о завершении/внимании без содержимого;

  • отменяемые в памяти расписания снимков только для чтения, чьи частные результаты извлекаются один раз и чьи полномочия истекают вместе с процессом MCP или грантом вкладки;

  • запись в памяти уже введенных действий агента в связанный хешем, требующий проверки, намеренно невоспроизводимый черновик драйвера провайдера;

  • активация интерфейса менеджера паролей, которая никогда не получает значение учетных данных;

  • SDK драйвера провайдера, который связывает целевые адаптеры с точным грантом, утвержденным хешем плана, одним обратным вызовом мутации и проверкой постусловий, принадлежащей адаптеру;

  • грант вкладки слушателя действия, элемент управления статусом/повтором на боковой панели и инструмент готовности агента без содержимого;

  • боковая панель без содержимого с рабочим пространством, индикатором прогресса, отзывом гранта для каждой вкладки и отменой;

  • отдельные возможности чтения и мутации;

  • один управляемый обратный вызов мутации в Python-клиенте;

  • стабильная идентификация расширения и точный источник нативного хоста;

  • частное локальное состояние, короткие пути сокетов, ограничения сообщений и одно активное задание;

  • активация точной вкладки и проверенная навигация в пределах одного источника;

  • прямая поверхность локального MCP-агента, которая делает клик по расширению немедленно обнаруживаемым и управляемым агентом без гранта OAuth провайдера;

  • чтения DOM и дерева доступности из белого списка, ожидания и частное извлечение;

  • частный захват JPEG области просмотра с ограничением в байтах без сохранения на стороне исполнителя;

  • ограниченная прокрутка области просмотра, дедупликация сбора длинных списков и частное извлечение ссылок/описаний AX;

  • ограниченный захват журнала браузера для точной вкладки через частные слоты результатов;

  • ограниченный захват метаданных запроса для точной вкладки, который удаляет строки запроса и игнорирует заголовки, тела, куки, инициаторы и детали безопасности;

  • ограниченный захват консольного API для точной вкладки, который сохраняет только скалярные аргументы и никогда не вычисляет или не разыменовывает удаленные объекты;

  • типизированные действия: клик, фокус, клавиатурная комбинация и частная вставка текста;

  • отмена, обнаружение дрейфа фокуса цели, ограничения размера результатов и очистка отладчика по возможности (отмена останавливается на следующем ограниченном действии и не может откатить уже начавшуюся мутацию);

  • одноразовая авторизация перед мутацией до эффекта провайдера;

  • манифест самотестирования llm-wiki без маршрутизации;

  • панель состояния расширения без содержимого с состояниями подключения, выполнения, авторизации и сбоя.

Эта ветка не является релизом или заменой установленного провайдера. Целевые теневые запуски адаптеров, проверка, принадлежащая провайдеру, тестирование обновления/отката и явное одобрение релиза остаются необходимыми перед консолидированным 0.1.0.

Границы репозитория

Разрешенные отслеживаемые материалы:

  • исполняемый код и активы расширения;

  • схемы протоколов и документация по безопасности;

  • синтетические фикстуры и детерминированные тесты.

Никогда не фиксируйте реальные URL или идентификаторы ресурсов, текст страниц, скриншоты, захваты, планы, квитанции, извлеченные результаты, куки, учетные данные, хранилище браузера или корпусы провайдера. Входные и выходные данные времени выполнения остаются в отдельно контролируемой плоскости данных целевого адаптера и должны оставаться в памяти, когда это возможно.

Архитектура

local agent through fixed MCP tools OR a targeted provider adapter
  -> select one exact user-created click grant from the private collaboration workspace
  -> deterministic typed program + exact approved plan hash
  -> BrowserExecutorClient over a private Unix socket
  -> allowlisted Native Messaging host
  -> shared MV3 extension on the exact user-exposed tab
  -> one-shot before-mutation challenge when required
  -> private result slots returned only to the targeted adapter

llm-wiki может видеть манифест адаптера самотестирования self-test этого репозитория без маршрутизации, но он никогда не направляет внешний запрос на редактирование или исследование напрямую исполнителю.

Упаковка и установка

Устанавливаемый продукт разделен на границе безопасности Chrome:

  • llm-wiki-chrome нативный компаньон: Python-клиент, фиксированный MCP-сервер, хост Native Messaging, установщик, диагностика и упакованные активы расширения;

  • LLM Wiki for Chrome: ZIP-архив расширения MV3 с открытым исходным кодом. Публикация в Chrome Web Store остается отдельным этапом релиза, требующим явного одобрения; загрузка распакованного пути остается рабочим процессом разработки.

Формула Homebrew только для разработки доступна из nvk/tap как сборка HEAD. Она намеренно не является стабильным релизом:

brew install --HEAD nvk/tap/llm-wiki-chrome
llm-wiki-chrome install
llm-wiki-chrome doctor

install записывает регистрацию Native Messaging точного источника. Он не устанавливает демон: Chrome запускает хост по требованию и общается с ним через стандартный ввод/вывод. Каждый хост Chrome создает частный сокет для каждого процесса в детерминированном каталоге времени выполнения /tmp/llm-wiki-chrome-<uid>/. CLI, MCP-сервер и целевые адаптеры автоматически обнаруживают эти сокеты. Нет обычного аргумента сокета, порта, кода сопряжения или переменной окружения. Существующее переопределение окружения остается только для исключительных песочниц или сред разработки.

Для установки распакованной разработки запросите у пакета точный путь:

llm-wiki-chrome extension-path

Загрузите этот каталог из chrome://extensions и запустите llm-wiki-chrome doctor. healthy: true подтверждает пакет и регистрацию Native Messaging; connected: true появляется, пока Chrome имеет открытый нативный порт расширения. Удалите только регистрацию нативного компаньона с помощью:

llm-wiki-chrome uninstall

Передача файлов отключена по умолчанию. Включите только явные локальные корни в ~/.config/llm-wiki/browser-executor.json:

{
  "upload_roots": ["/absolute/private/staging/uploads"],
  "download_roots": ["/absolute/private/staging/downloads"]
}

Каждый путь отвергает конечную символическую ссылку, разрешает цепочку родительских каталогов и должен оставаться внутри зарегистрированного корня. Значения загрузки передаются только в частных слотах. Загрузки должны быть завершены, приняты Chrome как безопасные, находиться внутри зарегистрированного корня и хешируются локальным компаньоном перед возвратом вызывающему.

Боковая панель предлагает Manual, Approved plan и Automatic bounded jobs. По умолчанию используется Approved plan. Загрузка файлов, обработка диалогов и активация брокера учетных данных остаются защищёнными действиями и всегда требуют локального ручного подтверждения. История авторизации представляет собой счётчик сеансов без содержимого, а не журнал содержимого страницы.

Запись рабочего процесса захватывает только введённые операции, уже запрошенные через фиксированную поверхность MCP. browser_record_stop возвращает черновик, находящийся в памяти, привязанный к хешу и требующий проверки. Универсальный исполнитель никогда не воспроизводит его; целевой адаптер должен проверить, скомпилировать, авторизовать, зарегистрировать и независимо верифицировать версионированный рабочий процесс провайдера. Прямая поверхность допускает только ограниченное планирование в памяти снимка только для чтения, пока действуют точный грант и процесс MCP. Долгосрочное или повторяющееся планирование, мутации, восстановление и журналы остаются в целевом адаптере или внешнем планировщике, но никогда не в слое намерений расширения.

Целевые адаптеры могут централизовать границу выполнения с помощью browser_executor.driver.ProviderDriverSession, который отклоняет отклонение хеша плана или точного гранта и требует постусловия status: verified, принадлежащего адаптеру.

Создайте детерминированный ZIP-архив для Chrome Web Store без его публикации:

python3 scripts/package_extension.py

Никакой релиз, тег, загрузка в магазин или установленное обновление не выполняются этими командами сборки.

Разработка

python3 -m venv .venv
.venv/bin/python -m unittest discover -s tests -v
.venv/bin/python -m compileall -q adapter.py browser_executor tests
node --check extension/service-worker.js
node --check extension/protocol.mjs
node --check extension/executor.mjs
node --check extension/sidepanel.js

Детерминированный набор дополняется изолированным дымовым тестом с реальным браузером. Для него требуется совместимая пара Chrome for Testing и ChromeDriver, а также точная утверждённая цель чтения, предоставляемая во время выполнения; он не затрагивает обычный профиль Chrome и не печатает, не сохраняет и не возвращает захваченную область просмотра:

LLM_WIKI_BROWSER_E2E_TARGET_URL='<exact approved HTTPS target>' \
  .venv/bin/python tests/chrome/run_extension_e2e.py \
    --chrome '/path/to/Google Chrome for Testing' \
    --chromedriver '/path/to/chromedriver'

Тестовая обвязка копирует распакованное расширение во временную директорию, добавляет страницу расширения только для тестирования, запускает подписанную программу чтения в headless Chrome и возвращает только счётчики без содержимого. Двоичные файлы Chrome не загружаются и не устанавливаются репозиторием.

Самотестирование не содержит содержимого:

.venv/bin/python adapter.py describe
.venv/bin/python adapter.py execute --request /private/request.json \
  --response /private/response.json

Установите собственный хост из исходного кода один раз и зарегистрируйте его команду MCP:

.venv/bin/python adapter.py install

codex mcp add llm-wiki-browser \
  -- .venv/bin/python adapter.py mcp-server

Перезапуск сеанса агента после регистрации делает фиксированный набор инструментов доступным. Chrome по-прежнему ничего не раскрывает, пока пользователь не нажмёт на расширение на конкретной вкладке HTTPS, а остановка совместной работы отзывает грант. Исключительная среда выполнения, которая не может получить доступ к частной директории /tmp по умолчанию, может установить LLM_WIKI_BROWSER_EXECUTOR_NATIVE_SOCKET одинаково для обеих команд, но это не является частью упакованного пользовательского потока.

browser-install записывает манифест и загрузчик Native Messaging с точным происхождением. Используйте его только во время явной задачи установки или миграции. Загрузка распакованного расширения, изменение обычного профиля Chrome и обновление установленной копии не являются частью набора тестов и требуют явного указания пользователя.

Модель безопасности

Исполнитель проверяет канонический хеш программы, хеш плана, идентификатор активной совместной работы, фиксированную идентичность/версию драйвера, точную цель, возможности, ограничения, словарь действий, частные слоты и список разрешённых результатов независимо в Python и расширении. Нет постоянных разрешений хоста, доступа <all_urls> или скриптов содержимого; грант activeTab Chrome создаётся только по клику пользователя на расширение. Интерпретатор имеет фиксированный список разрешённых методов CDP и не принимает Runtime.evaluate, сырые методы, скрипты или действия, сгенерированные страницей.

Фиксированный список разрешённых CDP также включает парные окна Log.enable/Log.disable и Network.enable/Network.disable. Последнее сохраняет только ограниченные частные скаляры: метод запроса, источник/путь, тип ресурса, статус, MIME, кеш и сбои; оно удаляет строки запроса и никогда не сохраняет заголовки, тела, куки, инициаторы, детали безопасности или идентификаторы запросов. Ни одна из возможностей не раскрывает сырые диагностические методы или перехват запросов. Отдельное парное окно Runtime.enable/Runtime.disable сохраняет только ограниченные частные типы Runtime.consoleAPICalled, временные метки и скалярные аргументы. Оно игнорирует контексты, стеки, описания, предварительные просмотры и идентификаторы объектов и никогда не допускает оценку, компиляцию, вызовы функций, выполнение скриптов или доступ к свойствам. Каждый процесс собственного хоста Chrome связывает уникальный частный сокет ниже одного настроенного базового пути. Клиент обнаруживает только эти строго именованные сокеты, агрегирует их явные рабочие пространства совместной работы и направляет задание единственному хосту, которому принадлежит его точный грант. Это предотвращает замену реле друг друга несколькими профилями Chrome, сохраняя одну точную вкладку на задание.

Исполнитель — это доверенный локальный код, а не песочница операционной системы. Целевые адаптеры остаются ответственными за авторизацию каждого значимого эффекта провайдера и независимое доказательство конечного состояния провайдера. Инструменты прямого изменения пересекают одну внутреннюю одноразовую границу, но намеренно не предоставляют транзакционных гарантий провайдера. См. SECURITY.md.

Install Server
F
license - not found
B
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    MCP server for controlling a local camofox-browser instance, enabling LLM agents to perform web automation tasks such as navigation, interaction, snapshotting, and content extraction.
    53
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Agent-native browser control MCP server that enables AI agents to browse and interact with web pages via accessibility tree snapshots and ref ID-based commands.
    15
    2
    MIT

View all related MCP servers

Related MCP Connectors

  • Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.

  • Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.

  • Live browser debugging for AI assistants — DOM, console, network via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nvk/llm-wiki-chrome'

If you have feedback or need assistance with the MCP directory API, please join our Discord server