Мы адаптируем проект для локальной разработки на Windows 11. Основная цель — быстро получить работающий прототип с пространствами, переводом, AI-провайдерами и тегированными закладками, чтобы отладить логику перед переносом на Debian. Ниже представлен детальный промпт для реализации на Windows.

text

Роль: Senior Full-Stack Developer (Windows-ориентированный)

Задача: Создать локальный прототип AI-браузера с пространствами и тегированными закладками на Windows 11

Контекст

Мы разрабатываем специализированный AI-браузер, который должен работать на Windows 11 для отладки и тестирования. Позже он будет перенесён на Debian-сервер с удалённым доступом. Сейчас нам нужен локально запускаемый прототип с основными функциями:

  • Пространства (изолированные рабочие области с собственными вкладками и AI-контекстом).
  • Расширенные закладки с тегами (локальное хранение).
  • Перевод русских запросов в английские перед отправкой в AI.
  • Поддержка Gemini, Claude, DeepSeek через API.
  • Хранение истории и статистики токенов.
  • Удобный UI (боковая панель, тёмная тема).

Ограничения и особенности Windows

  • Используем знакомые инструменты: Node.js, Electron, SQLite, Docker Desktop (опционально для Faved).
  • Для управления браузером проще всего взять Electron с встроенным Chromium, а не собирать полный форк BrowserOS (это сложно на Windows). BrowserOS мы можем использовать как отдельный процесс, управляемый через CDP, но для простоты можно реализовать вкладки через webview Electron и держать контексты изоляции в памяти.
  • Пространства можно реализовать как коллекции вкладок (каждая вкладка – это webview или отдельное окно) с сохранением состояния в SQLite.
  • Тегированные закладки – можно либо запустить Faved через Docker, либо использовать легковесную SQLite-таблицу с тегами и реализовать простой UI для управления (это быстрее и не требует Docker).
  • Перевод и AI-адаптеры – пишем на TypeScript как модули Node.js.

Архитектура прототипа (Windows)

┌─────────────────────────────────────────────────────────────┐
│ Electron Main Process │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ UI (React) – боковая панель + вкладки (webview) │ │
│ └───────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Translation Engine + AI Adapters (Node.js модули) │ │
│ └───────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ SQLite (лучше-sqlite3) – пространства, сообщения, │ │
│ │ закладки, теги, кэш переводов, токены │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

text

Компоненты и их реализация

1. Базовое Electron-приложение с TypeScript + React

  • Используем electron-forge или vite шаблон.
  • Структура папок:
    ai-browser-win/
    ├── src/
    │ ├── main/ # Electron main process
    │ │ ├── main.ts
    │ │ ├── ipc-handlers.ts
    │ │ └── menu.ts
    │ ├── renderer/ # React UI
    │ │ ├── App.tsx
    │ │ ├── components/
    │ │ │ ├── Sidebar.tsx # левая панель пространств
    │ │ │ ├── TabBar.tsx # вкладки текущего пространства
    │ │ │ ├── WebView.tsx # компонент webview
    │ │ │ ├── ChatPanel.tsx # AI-чат
    │ │ │ ├── BookmarksPanel.tsx # закладки с тегами
    │ │ │ └── Settings.tsx
    │ │ └── index.tsx
    │ ├── services/ # бизнес-логика
    │ │ ├── translation/
    │ │ ├── providers/
    │ │ ├── spaces/
    │ │ ├── bookmarks/
    │ │ └── storage/
    │ └── shared/
    ├── assets/
    ├── config/
    ├── package.json
    └── tsconfig.json

text

2. Пространства (Spaces)

  • Хранение: таблица spaces в SQLite: id, name, created_at, settings (JSON).
  • Текущие вкладки пространства: таблица space_tabs: id, space_id, url, title, order.
  • При создании пространства – создаётся запись в spaces.
  • При переключении пространства:
  • Загружаем сохранённые вкладки из space_tabs и открываем их в webview.
  • Восстанавливаем историю чата этого пространства (таблица messages с space_id).
  • UI: левая панель со списком пространств (кнопки +/-, переключение).

3. Расширенные закладки с тегами (упрощённо)

  • Таблицы:
  • bookmarks: id, space_id, url, title, created_at
  • tags: id, name
  • bookmark_tags: bookmark_id, tag_id
  • Интерфейс:
  • Кнопка "Добавить закладку" на панели инструментов.
  • При добавлении – диалог с полями: название (автоподставляется title страницы), теги (ввод через запятую, автодополнение существующих).
  • Панель закладок в боковой панели с фильтром по тегам.
  • Опционально: AI-автотегирование через Gemini Nano или локальную модель, но на данном этапе можно пропустить.

4. Translation Engine (адаптировать из промпта Claude)

  • Реализовать модуль src/services/translation/index.ts с интерфейсом:
  • detectLanguage(text)
  • translate(text, from, to)
  • кэш в SQLite (таблица translation_cache).
  • Поддержка бэкендов:
  • LibreTranslate (можно запустить локально через Docker, но для простоты сначала используем бесплатный Google Translate endpoint).
  • Google Translate free (через GET запрос).
  • Google Cloud API (опционально).
  • Критично: не переводить блоки кода и URL.

5. AI Provider Adapters

  • Реализовать три класса с общим интерфейсом AIProvider:
  • GeminiProvider
  • ClaudeProvider
  • DeepSeekProvider
  • Поддержка streaming через Server-Sent Events или WebSocket.
  • Подсчёт токенов (использовать библиотеки типа tiktoken для подсчёта).
  • Хранение ключей: через keytar (поддерживает Windows Credential Manager) с fallback AES.

6. Оркестратор чата

  • При получении сообщения:
  • Определить текущее пространство.
  • Вызвать translation.translate (если включено).
  • Выбрать активного провайдера.
  • Отправить запрос с историей (последние N сообщений из этого пространства).
  • Полученные чанки отправлять в UI через IPC.
  • Сохранить сообщение в БД.

7. Хранилище (SQLite)

  • Использовать better-sqlite3 (синхронный, простой).
  • Миграции через простые SQL-скрипты.
  • Таблицы:
  • spaces (id, name, created_at, settings)
  • messages (id, space_id, role, content, original_text, tokens_in, tokens_out, created_at)
  • token_stats (id, space_id, provider, tokens_in, tokens_out, cost, date)
  • translation_cache (hash, source, target, source_lang, target_lang, used_at)
  • bookmarks, tags, bookmark_tags
  • space_tabs (id, space_id, url, title, order)

8. UI (React)

  • Левая панель: список пространств, кнопка добавления, иконка удаления.
  • Вкладки: отображаются сверху под панелью навигации (как в обычном браузере).
  • WebView: использовать компонент webview из Electron (или iframe если не требует изоляции). Для лучшей изоляции пространств можно создавать отдельные webview с разными разделами памяти, но в прототипе достаточно одного webview, переключаемого между вкладками.
  • Правая панель: AI-чат, закладки (переключаемые вкладки внутри панели).
  • Тёмная тема (CSS-переменные).

9. Конфигурация

  • Файл config/default.json по аналогии с промптом Claude, но с путями для Windows.

10. Логирование

  • Использовать winston с выводом в файл %APPDATA%\ai-browser\logs\.

Пошаговый план реализации на Windows

Шаг 1: Инициализация проекта

  • Создать папку, инициализировать package.json.
  • Установить зависимости: electron, react, typescript, electron-forge и т.д.
  • Настроить сборку (Vite или Webpack).

Шаг 2: Базовое окно с webview и простой боковой панелью

  • Создать главное окно с двумя колонками: левая (пространства) и правая (webview + сверху вкладки).
  • Проверить, что webview загружает страницы.

Шаг 3: SQLite и менеджер пространств

  • Подключить better-sqlite3, создать БД в userData.
  • Реализовать миграции (создание таблиц).
  • Создать CRUD для пространств через IPC.
  • Привязать UI к данным.

Шаг 4: Управление вкладками пространства

  • Сохранять открытые вкладки в таблицу space_tabs.
  • При переключении пространства закрывать все текущие webview и открывать сохранённые.
  • Реализовать добавление новой вкладки, закрытие.

Шаг 5: Translation Engine

  • Реализовать модуль перевода с кэшем.
  • Подключить один бэкенд (например, Google Translate free).
  • Проверить определение языка.

Шаг 6: AI-адаптеры

  • Реализовать классы для Gemini, Claude, DeepSeek с заглушками (ключи из конфига).
  • Протестировать отправку запросов и получение streaming-ответов.
  • Добавить подсчёт токенов.

Шаг 7: Чат-интерфейс

  • В правой панели добавить компонент чата.
  • При отправке сообщения вызывать оркестратор, получать ответ и отображать.
  • Сохранять сообщения в БД.

Шаг 8: Закладки с тегами

  • Реализовать таблицы и простой UI для добавления/просмотра.
  • При добавлении закладки из текущей вкладки подставлять URL и title.

Шаг 9: Статистика токенов и дашборд

  • Добавить вкладку "Статистика" в правую панель.
  • Отображать графики использования (можно использовать Chart.js).

Шаг 10: Отладка и тестирование

  • Проверить все сценарии: создание пространств, переключение, перевод, работу с разными AI, сохранение закладок.
  • Добавить логирование ошибок.

Технические детали для Windows

  • Путь к БД: app.getPath('userData') + '\\data.db'.
  • Для keytar: установить keytar (требует сборки, но есть предварительно собранные бинарники).
  • Для LibreTranslate: можно запустить через Docker Desktop (Windows) или использовать публичный тестовый эндпоинт (но он медленный). На первое время используем Google Translate free.
  • WebView: в Electron рекомендуется использовать <webview> с предварительной настройкой webviewTag: true в webPreferences.

Критерии готовности прототипа

  • Приложение запускается на Windows 11 без ошибок.
  • Можно создать несколько пространств, переключаться между ними.
  • В каждом пространстве открываются вкладки, сохраняется история.
  • Работает перевод с русского на английский (определяется автоматически).
  • Работают все три AI-провайдера (ключи вводятся через UI).
  • Можно добавлять закладки с тегами, фильтровать по тегам.
  • Отображается статистика токенов.
  • Код чистый, типизированный, с комментариями.

Начало работы

Начинаем с Шага 1. После завершения каждого шага будем тестировать функциональность и при необходимости корректировать. Поехали!
Этот промпт готов для использования в AI-ассистенте. Он учитывает особенности Windows, предлагает упрощённые решения (например, отказ от BrowserOS в пользу Electron + webview) и сохраняет ключевые функции (пространства, перевод, AI-адаптеры, тегированные закладки). После успешной отладки на Windows можно будет адаптировать код для Debian, заменив Electron на BrowserOS и добавив удалённый доступ.

Edit

Pub: 20 Feb 2026 15:51 UTC

Views: 18