[English](README.md) · **Español** · [Français](README.fr.md) · [Deutsch](README.de.md) · [Português](README.pt.md) · [Italiano](README.it.md) · [Türkçe](README.tr.md) · [한국어](README.ko.md) · [日本語](README.ja.md) · [简体中文](README.zh.md) · [Русский](README.ru.md) · [Polski](README.pl.md) · [हिन्दी](README.hi.md) · [Nederlands](README.nl.md) · [Українська](README.uk.md) · [Tiếng Việt](README.vi.md) · [Bahasa Indonesia](README.id.md) · [ไทย](README.th.md) · [فارسی](README.fa.md) · [Ελληνικά](README.el.md) · [עברית](README.he.md) · [Čeština](README.cs.md) · [Română](README.ro.md) · [Svenska](README.sv.md) · [Dansk](README.da.md) · [Suomi](README.fi.md) · [Magyar](README.hu.md) · [العربية](README.ar.md) · [Oʻzbekcha](README.uz.md) · [Azərbaycan](README.az.md) · [Български](README.bg.md) · [Hrvatski](README.hr.md) · [Қазақша](README.kk.md) · [ქართული](README.ka.md) · [नेपाली](README.ne.md) · [සිංහල](README.si.md) · [தமிழ்](README.ta.md) · [తెలుగు](README.te.md) · [मराठी](README.mr.md) · [বাংলা](README.bn.md) · [ខ្មែរ](README.km.md) · [Lietuvių](README.lt.md) · [Bahasa Melayu](README.ms.md) · [မြန်မာ](README.my.md) · [Norsk](README.no.md) · [Slovenčina](README.sk.md) · [Slovenščina](README.sl.md) · [Српски](README.sr.md) · [Kiswahili](README.sw.md) · [Filipino](README.tl.md) · [اردو](README.ur.md)

# Uncle Sam

**Un proveedor para DeepSeek Harness que responde a través de tu propio navegador, con la cuenta web que ya tienes, en lugar de la API de pago.**

**El plugin de DeepSeek Harness que conduce chat.deepseek.com en un navegador real: la alternativa gratuita a la API de DeepSeek. Chat, DeepThink y búsqueda web con tu propia cuenta, sin clave de API y sin pagar por token.**

**☕ [Invítame a un café](https://revolut.me/operatingtag)** — lo escribe una persona, de noche, sin financiación. No hay otro modelo de ingresos. Una estrella o un informe de fallo vale lo mismo.

> **Este producto está en desarrollo activo. Espera fallos.**
>
> Funciona, es rápido y se ha usado a diario durante semanas, pero cambia con frecuencia y la ruta del
> navegador depende de un sitio web que cambia sin avisar. Si algo se rompe, una captura de pantalla y el
> número de versión valen más que una descripción. Fija una versión si dependes de él.

```
proveedor  deepseek-web
modelos    deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
coste      nada por token: usa la suscripción que ya tienes abierta en el navegador
estado     en desarrollo — espera fallos
medido     primer token ~1,9 s · sobrecoste ~0,6 s · un turno completo en ~2,5 s
```

Las respuestas de la ruta web van firmadas con **🔴 Uncle Sam**. El nombre es una broma, no una afirmación:
marca qué ruta ha respondido, y las respuestas de la API no llevan firma. Siempre sabes cuál de las dos te ha
contestado.

---

## Qué te ahorra

La API cobra por token. El producto web no. Este plugin registra `deepseek-web` como proveedor de modelos y
responde cada llamada conduciendo `chat.deepseek.com` en un navegador real: la página hace el trabajo, el
navegador mantiene la sesión y no se factura nada.

| | Ruta API | Ruta web |
|---|---|---|
| Coste | por token, siempre | nada más allá de la suscripción |
| Velocidad | rápida | ~2,5 s por turno, medido |
| Llamadas a herramientas | nativas y fiables | emuladas, funciona pero es más débil |
| Depende de | la API | un sitio web que cambia sin avisar |

**Las dos rutas quedan instaladas.** El selector de modelo es el interruptor, así que puedes usar la barata por
defecto y recurrir a la API cuando una tarea necesite herramientas fiables.

---

## Instalación

Uncle Sam es un **plugin de DeepSeek Harness**. No hace nada fuera del harness, porque registra un proveedor de
modelos, una ruta del host y dos espacios de interfaz.

**Requisitos**

| | |
|---|---|
| DeepSeek Harness | cualquier versión reciente con gestor de plugins |
| Navegador | Brave recomendado; Edge se usa automáticamente si falta Brave |
| Node | 22 o superior |

**Desde npm**

```bash
pnpm add @operatingtag/dsh-unclesam
```

**Desde este repositorio**

```bash
git clone https://github.com/operatingtag/dsh-unclesam
cd dsh-unclesam
pnpm install
```

Después añade la fila del paquete a tu perfil para que el harness lo cargue:

```yaml
# cordis.patch.yml
- insert:
    - id: dsh-unclesam
      name: '@operatingtag/dsh-unclesam'
      config:
        port: 9222
        defaultModel: deepseek-chat-search
        autoMinimise: true
```

**O desde una carpeta:** Ajustes → Plugins → instalar desde una ruta local, apuntando a la carpeta que contiene
`package.json`.

### Primera ejecución

Pulsa **Iniciar sesión / abrir el chat**. El navegador se abre y **permanece visible** hasta que hayas iniciado
sesión en chat.deepseek.com. Después se minimiza solo y no lo volverás a ver. La sesión vive en tu perfil del
navegador, así que **el plugin no guarda ninguna contraseña**: no hay nada que filtrar.

Deberías ver entonces:

1. **Ajustes → Uncle Sam** — una página con filas de estado y un botón de inicio de sesión.
2. **Bajo la caja de chat** — `● DeepSeek Harness` o `● Uncle Sam`, pulsa para cambiar.
3. **La lista de modelos** — cuatro modelos `(web)` junto a los de la API.

### Desinstalarlo

Ajustes → Plugins → Uncle Sam → Desinstalar. No se escribe nada fuera del perfil del navegador con el que
iniciaste sesión.

---

## El interruptor API / web

**El selector de modelo es el interruptor.** No hay un segundo control, porque un segundo control que además
eligiera el modelo serían dos fuentes de verdad para una sola decisión.

| Elige este modelo | Ruta | DeepThink | Búsqueda |
|---|---|---|---|
| `DeepSeek Chat (web)` | navegador | no | no |
| `DeepSeek Chat + Search (web)` | navegador | no | **sí** |
| `DeepSeek Reasoner (web)` | navegador | **sí** | no |
| `DeepSeek Reasoner + Search (web)` | navegador | **sí** | **sí** |
| cualquier modelo sin `(web)` | la API | — | — |

Una insignia **WEB** o **API** aparece junto a la etiqueta del modelo para que la ruta activa se vea de un
vistazo. Cuando la etiqueta no se reconoce, la insignia no muestra nada en lugar de adivinar: una insignia
equivocada sería peor que ninguna.

Tu elección se mantiene entre reinicios. **DeepThink** es la pasada de razonamiento; **Búsqueda** le permite
leer la web en vivo.

### La búsqueda se ve en la conversación

Con un modelo de búsqueda, un turno produce **dos bloques**: la consulta con la que buscó, las fuentes que
encontró y después la respuesta que las usó.

```
Búsqueda web — "¿Cuál es un titular tecnológico de hoy?"
Fuentes (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
Enlaces: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
```

La página no expone la consulta que escribió internamente, así que la consulta citada es el mensaje que
provocó la búsqueda. Las fuentes y los enlaces se leen de la página cuando la respuesta se asienta. Como las
fuentes solo existen al final, **los turnos con búsqueda se acumulan en lugar de emitirse en streaming**; los
turnos normales siguen emitiéndose token a token.

---

## Por qué un navegador y no su API HTTP

La ruta obvia —llamar a la API propia de `chat.deepseek.com`— se intentó y se abandonó. El sitio hace que cada
mensaje pase dos puertas:

| Puerta | Qué significa |
|---|---|
| `/api/v0/chat/create_pow_challenge` | un desafío de **prueba de trabajo** por mensaje |
| `challenges.cloudflare.com/turnstile` | una barrera anti-bots en el origen |

Reimplementar cualquiera de las dos es perder el tiempo: están ofuscadas, cambian, y cuando cambian el fallo
parece exactamente un fallo de red. **La página ya resuelve ambas para sus propias peticiones.**

Así que el adaptador nunca habla HTTP con el sitio. Conduce la página, y la página hace el resto. La
autenticación, la prueba de trabajo y Turnstile dejan de ser nuestro problema y no pueden romperse de forma
independiente al propio sitio.

**Verificado:** un `HEAD` simple al sitio devuelve `403`; la ruta del navegador devuelve respuestas.

---

## Límites, dichos con honestidad

**El uso de herramientas está emulado.** Un chat web no tiene canal estructurado de herramientas, así que las
herramientas se describen en el mensaje y una llamada se recupera analizando un objeto JSON de la respuesta.
Funciona —verificado— pero es más débil que las llamadas nativas: un modelo que ignora la instrucción responde
en prosa y el harness no ve ninguna herramienta ese turno. **Para trabajo agéntico pesado, la ruta API es más
fiable.** La ruta web es mejor para conversación, respuestas largas, subagentes, compactación y cualquier turno
en el que el modelo deba ser el modelo web.

**Depende de un sitio web que no controlas.** Cuando la página cambia de forma, el plugin tiene que cambiar con
ella. Eso es la advertencia de desarrollo activo de arriba, no una formalidad.

**No está afiliado a DeepSeek.** No está respaldado por ellos y no te da ningún derecho sobre su servicio. Tu
uso de ese servicio se rige por sus términos.

---

## Configuración

`cordis.patch.yml` define:

| clave | por defecto | significado |
|---|---|---|
| `port` | `9222` | el puerto de depuración del navegador |
| `defaultModel` | `deepseek-chat-search` | se usa cuando una llamada no indica modelo |
| `showBrowser` | `true` | si la ventana es visible mientras trabaja |

El navegador debe tener una sesión iniciada en `chat.deepseek.com`. La primera llamada abre Brave con el perfil
**Default** si el puerto no está ya abierto. Si Brave ya se está ejecutando *sin* puerto de depuración, el
adaptador no puede conectarse y lo dice claramente en lugar de fallar en silencio.

---

## Arquitectura

```
index.js          el adaptador: StreamChunk del harness  ←→  motor
lib/engine.mjs    navegador + página: escribir, enviar, transmitir, asentar
lib/cdp.mjs       cliente del Chrome DevTools Protocol, sin dependencias
lib/prompt.mjs    aplana mensajes + herramientas en un mensaje; recupera llamadas de la respuesta
lib/savings.mjs   lo que te ahorró la ruta web, valorado contra la API
lib/i18n.mjs      51 idiomas para el panel
```

**Sin dependencias.** Node 24 incluye `WebSocket` y `fetch` globales, que es todo lo que CDP necesita, así que
el flujo de tokens nunca sale del proceso host y no hay salto IPC por delta.

---

## Apoyo

Uncle Sam existe para que dejes de pagar por token. Si te ha ahorrado dinero y te gustaría ver el siguiente
construido sobre hardware que no se queda sin memoria a mitad de camino:

**[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**

Una estrella en el repositorio o un informe de fallo útil vale lo mismo.

---

## Licencia

**CC BY-NC-ND 4.0** — Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
Copyright (c) 2026 Darren T. Weldon, publicado bajo el nombre Operating Tag.

**Todo el acuerdo, en una línea: instálalo y úsalo, personalmente, gratis. No lo cambies, no lo compartas, no
lo vendas y no lo uses en una empresa.**

Eso no es código abierto, y no pretende serlo.

```
puedes      instalarlo y ejecutarlo · usarlo personalmente, sin fines comerciales
            leer el código para entenderlo

no puedes   modificarlo, adaptarlo ni crear una obra derivada
            copiarlo, distribuirlo, publicarlo, replicarlo ni ponerlo a disposición de nadie
            subirlo a ningún alojamiento de código, registro, web, foro o chat
            venderlo, revenderlo, alquilarlo ni cobrar por él o por acceder a él
            incluirlo en cualquier cosa que entregues a otra persona
            usarlo con cualquier fin comercial ni en el ejercicio de una actividad empresarial
```

**Las dos únicas fuentes legítimas son este repositorio y el paquete npm
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** Una copia que
venga de cualquier otro sitio no está licenciada, sea quien sea que la haya facilitado. Si ves este software a
la venta, no lo está vendiendo su autor.

**El uso comercial, y el derecho a modificar y distribuir, están disponibles bajo una licencia escrita
separada.** Pregunta a Operating Tag y recibirás una respuesta clara y un precio claro.

El archivo [LICENSE](LICENSE) es el que rige, y abre con el mismo resumen en inglés sencillo.

---

Uncle Sam es un plugin independiente. No está afiliado, respaldado ni soportado por DeepSeek.

```
@operatingtag/dsh-unclesam   v1.3.5
Autor    Operating Tag
Licencia CC BY-NC-ND 4.0 — gratis para usar, no para cambiar, compartir o vender
```
