[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76270":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":13,"stars7d":13,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":12,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":8,"pushedAt":8,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":25,"lastSyncTime":26,"discoverSource":27},76270,"deepsproxy","pedrofariasx\u002Fdeepsproxy","pedrofariasx",null,"TypeScript",130,58,3,1,0,37,5.31,"ISC License",false,"main",true,[],"2026-06-12 02:03:41","# DeepsProxy\n\nProxy API local compatível com OpenAI que roteia requisições para modelos DeepSeek, com integração de automação de navegador via Playwright para execução de ferramentas e interações web.\n\n\n[![TypeScript](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FTypeScript-5.0-blue)](https:\u002F\u002Fwww.typescriptlang.org\u002F)\n[![Hono](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FHono-4.0-green)](https:\u002F\u002Fhono.dev\u002F)\n[![Playwright](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlaywright-1.40-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- **Tool Execution**: Sistema de ferramentas executáveis via Playwright\n- **Session Persistence**: Login persistente com armazenamento de perfil do navegador\n- **Authentication**: Suporte opcional a API Key via header `Authorization` ou `X-API-Key`\n- **Type-Safe**: Código 100% TypeScript com strict mode\n- **Docker Ready**: Deploy simplificado com Docker Compose\n\n---\n\n## 🏗️ Arquitetura\n\n```mermaid\ngraph TD\n    Client[Cliente OpenAI\u002FSDK] -->|HTTPS| Proxy[DeepsProxy]\n    Proxy -->|\u002Fv1\u002Fchat\u002Fcompletions| Handler[Chat Handler]\n    Handler --> DeepSeek[DeepSeek API]\n    Handler --> Playwright[Playwright Service]\n    Playwright --> Browser[Navegador Headless]\n    Handler --> Tools[Tools Executor]\n    Tools --> Registry[Tool Registry]\n    \n    subgraph \"Configuração\"\n        Env[.env] --> Proxy\n        Profile[deepseek_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\u002Fdeepsproxy.git\ncd deepsproxy\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# Build da imagem\ndocker-compose build\n\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 endpoints (opcional)\nAPI_KEY=sua-chave-secreta-aqui\n\n# Configurações Playwright\nPLAYWRIGHT_HEADLESS=true\nPLAYWRIGHT_TIMEOUT=30000\n\n# Logging\nLOG_LEVEL=info\n```\n\n### Variáveis de Ambiente\n\n| Variável | Descrição | Default | Obrigatória |\n|----------|-----------|---------|------------|\n| `PORT` | Porta HTTP do servidor | `3000` | Não |\n| `API_KEY` | Chave para autenticação de requests | - | Não |\n| `PLAYWRIGHT_HEADLESS` | Executar browser em modo headless | `true` | Não |\n| `PLAYWRIGHT_TIMEOUT` | Timeout para operações do Playwright (ms) | `30000` | Não |\n\n\\* Necessária para funcionalidades que requerem acesso à API DeepSeek\n\n---\n\n## 🔐 Autenticação\n\nSe `API_KEY` estiver configurada, todas as requisições devem incluir uma das opções:\n\n```bash\n# Via Bearer Token\ncurl -H \"Authorization: Bearer sua-chave\" http:\u002F\u002Flocalhost:3000\u002Fv1\u002Fchat\u002Fcompletions\n\n# Via X-API-Key header\ncurl -H \"X-API-Key: sua-chave\" http:\u002F\u002Flocalhost:3000\u002Fv1\u002Fchat\u002Fcompletions\n```\n\nResposta para autenticação falha:\n```json\n{ \"error\": \"Unauthorized\" }\n```\nStatus: `401`\n\n---\n\n## 📡 API Reference\n\n### Health Check\n\n```http\nGET \u002Fhealth\n```\n\n**Response** `200 OK`:\n```json\n{ \"status\": \"ok\" }\n```\n\n---\n\n### List Models\n\n```http\nGET \u002Fv1\u002Fmodels\n```\n\n**Response** `200 OK`:\n```json\n{\n  \"object\": \"list\",\n  \"data\": [\n    {\n      \"id\": \"deepseek-v4-flash\",\n      \"object\": \"model\",\n      \"created\": 1715616000,\n      \"owned_by\": \"deepseek\"\n    },\n    {\n      \"id\": \"deepseek-v4-flash-thinking\",\n      \"object\": \"model\",\n      \"created\": 1715616000,\n      \"owned_by\": \"deepseek\"\n    },\n    {\n      \"id\": \"deepseek-v4-pro\",\n      \"object\": \"model\",\n      \"created\": 1715616000,\n      \"owned_by\": \"deepseek\"\n    },\n    {\n      \"id\": \"deepseek-v4-pro-thinking\",\n      \"object\": \"model\",\n      \"created\": 1715616000,\n      \"owned_by\": \"deepseek\"\n    }\n  ]\n}\n```\n\n---\n\n### Chat Completions\n\n```http\nPOST \u002Fv1\u002Fchat\u002Fcompletions\nContent-Type: application\u002Fjson\n```\n\n**Request Body**:\n```json\n{\n  \"model\": \"deepseek-flash-thinking\",\n  \"messages\": [\n    { \"role\": \"user\", \"content\": \"Qual é a previsão do tempo?\" }\n  ],\n  \"tools\": [\n    {\n      \"type\": \"function\",\n      \"function\": {\n        \"name\": \"get_weather\",\n        \"description\": \"Obter previsão do tempo\",\n        \"parameters\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"location\": { \"type\": \"string\" }\n          },\n          \"required\": [\"location\"]\n        }\n      }\n    }\n  ],\n  \"tool_choice\": \"auto\",\n  \"stream\": false\n}\n```\n\n**Response** `200 OK`:\n```json\n{\n  \"id\": \"chatcmpl-xxx\",\n  \"object\": \"chat.completion\",\n  \"created\": 1715616000,\n  \"model\": \"deepseek-flash-thinking\",\n  \"choices\": [\n    {\n      \"index\": 0,\n      \"message\": {\n        \"role\": \"assistant\",\n        \"content\": \"A previsão para São Paulo é de 24°C com sol.\",\n        \"tool_calls\": []\n      },\n      \"finish_reason\": \"stop\"\n    }\n  ],\n  \"usage\": {\n    \"prompt_tokens\": 45,\n    \"completion_tokens\": 23,\n    \"total_tokens\": 68\n  }\n}\n```\n\n---\n\n## 💻 Exemplos de Uso\n\n### cURL\n\n```bash\ncurl http:\u002F\u002Flocalhost:3000\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"deepseek-flash-thinking\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Olá!\"}]\n  }'\n```\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: 'deepseek-thinking',\n  messages: [{ role: 'user', content: 'Explique TypeScript' }]\n});\n\nconsole.log(completion.choices[0].message.content);\n```\n\n### Python (openai library)\n\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(\n    base_url=\"http:\u002F\u002Flocalhost:3000\u002Fv1\",\n    api_key=\"sk-no-key-required\"\n)\n\nresponse = client.chat.completions.create(\n    model=\"deepseek-thinking\",\n    messages=[{\"role\": \"user\", \"content\": \"Hello!\"}]\n)\n\nprint(response.choices[0].message.content)\n```\n\n---\n\n## 🔧 Comandos Disponíveis\n\n| Comando | Descrição |\n|---------|-----------|\n| `npm start` | Inicia o servidor em produção |\n| `npm run dev` | Inicia com hot-reload para desenvolvimento |\n| `npm run login` | Executa fluxo de login e salva sessão do navegador |\n| `npm test` | Executa suite de testes |\n| `npm run build` | Compila TypeScript para `dist\u002F` |\n| `npx playwright install` | Instala browsers para automação |\n\n---\n\n## 📁 Estrutura do Projeto\n\n```\ndeepsproxy\u002F\n├── src\u002F\n│   ├── index.ts              # Entry point: servidor Hono + middleware\n│   ├── routes\u002F\n│   │   └── chat.ts          # Handler POST \u002Fv1\u002Fchat\u002Fcompletions\n│   ├── services\u002F\n│   │   ├── deepseek.ts      # Cliente API DeepSeek\n│   │   └── playwright.ts    # Gerenciamento de browser\u002Fsession\n│   ├── tools\u002F\n│   │   ├── executor.ts      # Execução dinâmica de ferramentas\n│   │   ├── registry.ts      # Registro e descoberta de tools\n│   │   ├── schema.ts        # Validação de schemas JSON\n│   │   └── types.ts         # Tipos do sistema de tools\n│   ├── runtime\u002F\n│   │   ├── engine.ts        # Motor principal de execução\n│   │   └── types.ts         # Tipos do runtime\n│   ├── types\u002F\n│   │   └── openai.ts        # Tipos compatíveis com OpenAI API\n│   ├── utils\u002F\n│   │   └── types.ts         # Utilitários de tipo\n│   ├── login.ts             # Script de autenticação inicial\n│   ├── index.test.ts        # Testes unitários básicos\n│   └── advanced.test.ts     # Testes de integração avançados\n├── docker-compose.yml        # Orquestração multi-container\n├── Dockerfile                # Imagem Docker otimizada\n├── tsconfig.json            # Configuração TypeScript strict\n├── package.json             # Dependências e scripts\n├── .env.example             # Template de variáveis de ambiente\n└── deepseek_profile\u002F        # Armazenamento de sessão (gitignored)\n```\n\n---\n\n## 🐳 Docker\n\n### docker-compose.yml\n\n```yaml\nservices:\n  deepsproxy:\n    build: .\n    ports:\n      - \"3000:3000\"\n    environment:\n      - PORT=3000\n      - PLAYWRIGHT_HEADLESS=true\n    volumes:\n      - .\u002Fdeepseek_profile:\u002Fapp\u002Fdeepseek_profile\n    restart: unless-stopped\n```\n\n### Build e Execução\n\n```bash\n# Build\ndocker-compose build\n\n# Executar em background\ndocker-compose up -d\n\n# Ver logs\ndocker-compose logs -f\n\n# Parar\ndocker-compose down\n```\n\n---\n\n## 🧪 Testes\n\n```bash\n# Executar todos os testes\nnpm test\n\n# Executar com watch mode\nnpm run test:watch\n\n# Executar testes específicos\nnpm test -- src\u002Findex.test.ts\n\n# Coverage report\nnpm run test:coverage\n```\n\n---\n\n## 🔍 Troubleshooting\n\n### Playwright não inicializa\n\n```bash\n# Reinstalar browsers\nnpx playwright install --with-deps\n\n# Verificar dependências do sistema\nnpx playwright install-deps\n```\n\n### Erro de autenticação\n\n- Verifique se `API_KEY` no `.env` corresponde ao header enviado\n- Teste sem `API_KEY` configurada para isolar o problema\n\n### Timeout em requests\n\n- Aumente `PLAYWRIGHT_TIMEOUT` no `.env`\n- Verifique conectividade com a API DeepSeek\n- Considere executar com `PLAYWRIGHT_HEADLESS=false` para debug visual\n\n### Sessão não persiste\n\n- Certifique-se que `deepseek_profile\u002F` tem permissões de escrita\n- Execute `npm run login` para renovar a sessão\n\n---\n\n## 🤝 Contribuindo\n\n1. Fork o repositório\n2. Crie uma branch para sua feature: `git checkout -b feature\u002Fminha-feature`\n3. Commit suas mudanças: `git commit -m 'feat: adiciona minha feature'`\n4. Push para a branch: `git push origin feature\u002Fminha-feature`\n5. Abra um Pull Request\n\n### Guidelines de Código\n\n- Siga o padrão TypeScript strict\n- Adicione testes para novas funcionalidades\n- Mantenha compatibilidade com OpenAI API spec\n\n---\n\n## 📄 License\n\nDistribuído sob licença ISC. Veja `LICENSE` para mais informações.\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- Uso indevido ou malicioso\n- Automação não autorizada de serviços terceiros\n- Violação de Termos de Serviço de plataformas\n- Atividades que violem leis ou regulamentações aplicáveis\n\nUsuários são integralmente responsáveis pelo uso deste software, incluindo conformidade com leis, regulamentos e contratos de serviço aplicáveis.\n\nEste repositório demonstra conceitos relacionados a:\n- Automação de navegadores com Playwright\n- Gerenciamento de sessões e autenticação\n- Arquiteturas de runtime compatíveis com OpenAI\n- Padrões de proxy e roteamento de API\n\n**Use por sua conta e risco.**\n","DeepsProxy 是一个兼容OpenAI API的本地代理，能够将请求路由到DeepSeek模型，并通过Playwright实现浏览器自动化以执行工具和网页交互。该项目使用TypeScript编写，支持与OpenAI `\u002Fv1\u002Fchat\u002Fcompletions` 和 `\u002Fv1\u002Fmodels` 兼容的接口、基于Playwright的服务端工具执行、会话持久化以及可选的API密钥认证。特别适合需要结合语言模型与Web自动化功能的应用场景，如构建聊天机器人或进行复杂的在线数据处理任务。项目结构清晰，易于部署，支持Docker Compose简化环境搭建过程。",2,"2026-06-11 03:54:50","CREATED_QUERY"]