qwen-expert
README.md
# Qwen Studio Browser Gateway
[English](README.en.md)
Неофициальный localhost-only gateway, который даёт Claude Code одно дополнительное **недоверенное экспертное мнение Qwen 3.8 Max** через вручную авторизованную web-сессию `chat.qwen.ai`.
Это **не официальный Qwen API**, не основной агент и не источник гарантированно правильных ответов. Пользователь входит на сайт вручную на каждом хосте; проект не переносит cookies/tokens, не обходит CAPTCHA/MFA и не даёт Qwen доступ к shell, filesystem или локальным tools.
## Поток
```text
Claude Code
└─ MCP ask_qwen_expert
└─ http://127.0.0.1:8798/v1/expert
└─ FIFO, active = 1
└─ CDP http://127.0.0.1:9333
└─ одна видимая вкладка https://chat.qwen.ai
└─ точная Qwen3.8-Max
```
Перед каждым Send gateway выбирает и подтверждает `qwen3.8-max` / `Qwen3.8-Max`. Несовпадение модели, неизвестный DOM, challenge, отсутствие login или удалённый endpoint завершаются ошибкой. После Send browser generation не повторяется автоматически.
## Требования
- Node.js 22+;
- Chrome/Chromium с графическим окном;
- Linux для готовых systemd user templates (сам Node.js gateway переносим);
- собственный аккаунт Qwen и право использовать web-сервис.
## Установка
```bash
npm ci
npm run check
npm run build
npm test
```
Создайте приватную конфигурацию:
```bash
install -d -m 700 ~/.config/qwen-studio-browser-gateway
cp .env.example ~/.config/qwen-studio-browser-gateway/server.env
chmod 600 ~/.config/qwen-studio-browser-gateway/server.env
```
Отредактируйте `server.env`:
- задайте локальный `QWEN_BROWSER_EXECUTABLE_PATH`;
- сгенерируйте новый случайный `QWEN_LOCAL_API_KEY` для этого хоста;
- не меняйте loopback endpoints;
- перед использованием подтвердите актуальные ID/label сильнейшей модели в живом UI.
Не коммитьте `server.env` и browser profile.
## Ручной вход
Запустите отдельный браузер:
```bash
set -a
source ~/.config/qwen-studio-browser-gateway/server.env
set +a
./start-qwen-browser.sh
```
В открытом окне войдите на `https://chat.qwen.ai` самостоятельно. CAPTCHA и MFA проходит только пользователь. Оставьте одну вкладку Qwen открытой.
В другом терминале запустите gateway:
```bash
set -a
source ~/.config/qwen-studio-browser-gateway/server.env
set +a
node dist/cli.js serve
```
Для постоянного Linux user service используйте шаблоны в [`systemd/`](systemd/) и инструкцию [`docs/setup.md`](docs/setup.md).
## Безопасные smoke-тесты
Эти запросы не запускают генерацию:
```bash
node dist/cli.js browser doctor
curl -fsS -H "Authorization: Bearer $QWEN_LOCAL_API_KEY" \
http://127.0.0.1:8798/health
curl -fsS -H "Authorization: Bearer $QWEN_LOCAL_API_KEY" \
http://127.0.0.1:8798/v1/models
node dist/cli.js mcp install-config
```
`POST /v1/expert` и `POST /v1/chat/completions` запускают реальную web-генерацию и могут расходовать quota.
## Claude Code MCP
После `npm run build` выполните:
```bash
node dist/cli.js mcp install-config
```
Команда печатает переносимый JSON с текущими путями Node.js и `dist/cli.js`. Добавьте объект `qwen-expert` в MCP-конфигурацию Claude Code на этом хосте. MCP публикует только `ask_qwen_expert`; ответ всегда помечается как advisory и должен проверяться независимо.
## Границы безопасности
- HTTP и CDP принимают только loopback endpoints.
- `QWEN_WEB_URL` принимает только origin `https://chat.qwen.ai`.
- Локальный API key обязателен.
- Prompt-ы не логируются; screenshots выключены по умолчанию.
- Одна вкладка и одна FIFO-очередь предотвращают смешивание ответов.
- Qwen не получает executable tools или локальные файлы.
- Проект не предназначен для обхода ограничений сайта или массовой автоматизации.
Подробнее: [`AGENTS.md`](AGENTS.md), [`docs/architecture.md`](docs/architecture.md), [`docs/security.md`](docs/security.md), [`docs/troubleshooting.md`](docs/troubleshooting.md).
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues