[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80268":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":29,"discoverSource":30},80268,"qwenproxy","pedrofariasx\u002Fqwenproxy","pedrofariasx","Proxy API OpenAI-compatible que usa automação com Playwright para rotear requisições para modelos do Qwen com suporte a múltiplas contas, tools e sessões persistentes.",null,"TypeScript",116,55,1,2,0,3,13,27,11,5.24,"ISC License",false,"main",true,[],"2026-06-12 02:04:00","# QwenProxy\n\nProxy API local compatível com OpenAI que roteia requisições para os modelos do **Qwen (chat.qwen.ai)** via automação de navegador com Playwright. Oferece suporte a execução de ferramentas, modo de pensamento (reasoning) e persistência de sessão.\n\n[![CI](https:\u002F\u002Fgithub.com\u002Fpedrofariasx\u002Fqwenproxy\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fpedrofariasx\u002Fqwenproxy\u002Factions\u002Fworkflows\u002Fci.yml)\n[![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-6.0-blue)](https:\u002F\u002Fwww.typescriptlang.org\u002F)\n[![Hono](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHono-4.12-green)](https:\u002F\u002Fhono.dev\u002F)\n[![Playwright](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlaywright-1.60-blueviolet)](https:\u002F\u002Fplaywright.dev\u002F)\n[![License: ISC](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-ISC-yellow.svg)](LICENSE)\n\n---\n\n## ✨ Features\n\n- **OpenAI API Compatible**: Interface compatível com `\u002Fv1\u002Fchat\u002Fcompletions` e `\u002Fv1\u002Fmodels`.\n- **Reasoning Support**: Suporte completo ao modo de pensamento (thinking) dos modelos Qwen.\n- **Tool Execution**: Sistema de execução de ferramentas locais integrado ao fluxo do chat.\n- **Session Persistence**: Login persistente com armazenamento de perfil do navegador em `qwen_profile\u002F`.\n- **Network Visibility**: Exibe URLs local e de rede (IP) ao iniciar o servidor.\n- **Browser Selection**: Escolha entre Chrome, Firefox, Edge ou Chromium para execução.\n- **Docker Ready**: Deploy simplificado com suporte a Docker e Docker Compose.\n- **Auto-Login**: Login automático via credenciais `.env` com recuperação de sessão.\n- **Stream Options**: Suporte a `include_usage` em streaming responses.\n\n---\n\n## 🏗️ Arquitetura\n\n```mermaid\ngraph TD\n    Client[Cliente OpenAI\u002FSDK] -->|HTTP| Proxy[QwenProxy]\n    Proxy -->|\u002Fv1\u002Fchat\u002Fcompletions| Handler[Chat Handler]\n    Handler --> Qwen[chat.qwen.ai]\n    Handler --> Playwright[Playwright Service]\n    Playwright --> Browser[Browser Instance]\n    Handler --> Tools[Tools Executor]\n    Tools --> Registry[Tool Registry]\n    \n    subgraph \"Configuração\"\n        Env[.env] --> Proxy\n        Profile[qwen_profile\u002F] --> Playwright\n    end\n```\n\n---\n\n## 📋 Pré-requisitos\n\n| Dependência | Versão Mínima | Instalação |\n|------------|--------------|-----------|\n| Node.js | v20.x | [nvm](https:\u002F\u002Fgithub.com\u002Fnvm-sh\u002Fnvm) |\n| npm | v9.x | Incluído com Node.js |\n| Playwright | - | `npx playwright install` |\n| Docker (opcional) | v24.x | [Docker Docs](https:\u002F\u002Fdocs.docker.com\u002Fget-docker\u002F) |\n\n---\n\n## 🚀 Instalação\n\n### Via npm\n\n```bash\n# Clonar repositório\ngit clone https:\u002F\u002Fgithub.com\u002Fpedrofariasx\u002Fqwenproxy.git\ncd qwenproxy\n\n# Instalar dependências\nnpm install\n\n# Instalar browsers do Playwright\nnpx playwright install\n```\n\n### Via Docker\n\n```bash\n# Iniciar containers\ndocker-compose up -d\n```\n\n---\n\n## ⚙️ Configuração\n\nCrie o arquivo `.env` na raiz do projeto:\n\n```env\n# Porta do servidor (default: 3000)\nPORT=3000\n\n# Chave de API para proteger os endpoints (opcional)\nAPI_KEY=sua-chave-secreta-aqui\n\n# Credenciais Qwen (para login automático)\nQWEN_EMAIL=seu-email@exemplo.com\nQWEN_PASSWORD=sua-senha-aqui\n\n# Navegador padrão (chromium, firefox, chrome, edge)\nBROWSER=chromium\n```\n\n---\n\n## 📡 Uso e Comandos\n\n### Inicialização do Servidor\n\n```bash\n# Iniciar com o navegador padrão (Chromium)\nnpm start\n\n# Iniciar com navegadores específicos\nnpm run start:chrome\nnpm run start:firefox\nnpm run start:edge\n```\n\nAo iniciar, o console exibirá:\n```txt\n🚀 QwenProxy started!\n- Local:   http:\u002F\u002Flocalhost:3000\n- Network: http:\u002F\u002F192.168.1.10:3000\n\nAvailable Routes:\n- [GET] \u002Fhealth\n- [POST] \u002Fv1\u002Fchat\u002Fcompletions\n- [GET] \u002Fv1\u002Fmodels\n```\n\n### Autenticação de Sessão (Login)\n\nSe não usar credenciais no `.env`, realize o login manual:\n```bash\nnpm run login\n# Ou com browser específico\nnpm run login:firefox\n```\n\n---\n\n## 📡 API Reference\n\n### Chat Completions\n\n```http\nPOST \u002Fv1\u002Fchat\u002Fcompletions\nContent-Type: application\u002Fjson\nAuthorization: Bearer sua-chave\n```\n\n**Modelos Suportados**:\n- `qwen-plus`: Modelo padrão com raciocínio habilitado.\n- `qwen-plus-no-thinking`: Versão sem o bloco de pensamento.\n- `qwen-max`, `qwen-turbo`, etc. (conforme disponibilidade na conta).\n\n---\n\n## 💻 Exemplos de Integração\n\n### OpenAI SDK (Node.js)\n\n```typescript\nimport OpenAI from 'openai';\n\nconst openai = new OpenAI({\n  baseURL: 'http:\u002F\u002Flocalhost:3000\u002Fv1',\n  apiKey: process.env.API_KEY || 'sk-no-key-required'\n});\n\nconst completion = await openai.chat.completions.create({\n  model: 'qwen-plus',\n  messages: [{ role: 'user', content: 'Explique como funciona o Playwright.' }]\n});\n\nconsole.log(completion.choices[0].message.content);\n```\n\n---\n\n## 📁 Estrutura do Projeto\n\n```\nqwenproxy\u002F\n├── src\u002F\n│   ├── index.ts              # Entry point e servidor Hono\n│   ├── routes\u002F\n│   │   └── chat.ts          # Handler compatível com OpenAI\n│   ├── services\u002F\n│   │   ├── qwen.ts          # Integração com a API do Qwen\n│   │   └── playwright.ts    # Automação de navegador\n│   ├── tools\u002F\n│   │   ├── executor.ts      # Execução de ferramentas\n│   │   └── registry.ts      # Registro de tools\n│   └── login.ts             # Script de autenticação\n├── qwen_profile\u002F            # Armazenamento da sessão (gitignored)\n├── Dockerfile                # Configuração Docker\n└── package.json             # Scripts e dependências\n```\n\n---\n\n## 🔍 Troubleshooting\n\n- **Endereço em uso**: Verifique se a porta `3000` está livre ou altere o `PORT` no `.env`.\n- **Erro de Navegador**: Se um navegador não abrir, certifique-se de que ele está instalado (`npx playwright install`).\n- **Sessão Expirada**: Execute `npm run login` novamente para renovar os cookies.\n\n---\n\n## ⚠️ Disclaimer\n\n> Este projeto é fornecido estritamente para fins educacionais e de pesquisa.\n\nOs autores não incentivam ou endossam:\n- Violação dos Termos de Serviço da plataforma Qwen.\n- Automação não autorizada em larga escala.\n- Uso para atividades maliciosas.\n\n**Use por sua conta e risco.**\n","QwenProxy 是一个与OpenAI API兼容的本地代理，通过Playwright自动化浏览器将请求路由到Qwen模型。其核心功能包括支持思维模式、工具执行以及会话持久化等，采用TypeScript编写，并利用Hono框架和Playwright技术实现高效稳定的API调用处理。该项目特别适合需要在本地环境中使用Qwen模型进行开发测试或部署应用的场景，同时也提供了Docker支持以简化部署流程。","2026-06-11 04:00:06","CREATED_QUERY"]