Мы адаптируем проект для локальной разработки на 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_attags:id,namebookmark_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: GeminiProviderClaudeProviderDeepSeekProvider- Поддержка 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_tagsspace_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 и добавив удалённый доступ.