[English](README.md) · [Español](README.es.md) · **Français** · [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 fournisseur pour DeepSeek Harness qui répond à travers votre propre navigateur, sur le compte web que vous avez déjà, au lieu de l'API facturée.**

**Le plugin DeepSeek Harness qui pilote chat.deepseek.com dans un vrai navigateur : l'alternative gratuite à l'API DeepSeek. Chat, DeepThink et recherche web sur votre propre compte, sans clé d'API et sans payer au token.**

**☕ [Offrez-moi un café](https://revolut.me/operatingtag)** — écrit par une seule personne, la nuit, sans financement. Il n'y a pas d'autre modèle économique. Une étoile ou un rapport de bug vaut tout autant.

> **Ce produit est en développement actif. Attendez-vous à des bugs.**
>
> Il fonctionne, il est rapide, et il est utilisé tous les jours depuis des semaines — mais il change sans
> cesse, et la route navigateur dépend d'un site web qui change sans prévenir. Si quelque chose casse, une
> capture d'écran et le numéro de version valent mieux qu'une description. Épinglez une version si vous en
> dépendez.

```
fournisseur  deepseek-web
modèles      deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
coût         rien par token — il utilise l'abonnement déjà ouvert dans votre navigateur
état         en développement — attendez-vous à des bugs
mesuré       premier token ~1,9 s · surcoût ~0,6 s · un tour complet en ~2,5 s
```

Les réponses de la route web sont signées **🔴 Uncle Sam**. Ce nom est une plaisanterie, pas une revendication :
il indique quelle route a répondu, et les réponses de l'API ne portent aucune signature. Vous savez toujours
laquelle des deux vous a répondu.

---

## Ce que cela vous économise

L'API facture au token. Le produit web ne facture pas. Ce plugin enregistre `deepseek-web` comme fournisseur de
modèles et répond à chaque appel en pilotant `chat.deepseek.com` dans un vrai navigateur — la page fait le
travail, le navigateur garde la session, et rien n'est mesuré.

| | Route API | Route web |
|---|---|---|
| Coût | au token, indéfiniment | rien au-delà de l'abonnement |
| Vitesse | rapide | ~2,5 s par tour, mesuré |
| Appel d'outils | natif et fiable | émulé, fonctionne mais plus fragile |
| Dépend de | l'API | un site web qui change sans prévenir |

**Les deux routes restent installées.** Le sélecteur de modèle est l'interrupteur : vous pouvez utiliser la
route bon marché par défaut et recourir à l'API quand une tâche exige des outils fiables.

---

## Installation

Uncle Sam est un **plugin DeepSeek Harness**. Il ne fait rien en dehors du harness, car il enregistre un
fournisseur de modèles, une route côté hôte et deux emplacements d'interface.

**Prérequis**

| | |
|---|---|
| DeepSeek Harness | toute version récente avec le gestionnaire de plugins |
| Navigateur | Brave recommandé, Edge utilisé automatiquement si Brave est absent |
| Node | 22 ou plus récent |

**Depuis npm**

```bash
pnpm add @operatingtag/dsh-unclesam
```

**Depuis ce dépôt**

```bash
git clone https://github.com/operatingtag/dsh-unclesam
cd dsh-unclesam
pnpm install
```

Ajoutez ensuite la ligne du paquet à votre profil pour que le harness le charge :

```yaml
# cordis.patch.yml
- insert:
    - id: dsh-unclesam
      name: '@operatingtag/dsh-unclesam'
      config:
        port: 9222
        defaultModel: deepseek-chat-search
        autoMinimise: true
```

**Ou depuis un dossier :** Réglages → Plugins → installer depuis un chemin local, en pointant le dossier qui
contient `package.json`.

### Premier lancement

Cliquez sur **Se connecter / ouvrir le chat**. Le navigateur s'ouvre et **reste visible** jusqu'à ce que vous
soyez connecté à chat.deepseek.com. Ensuite il se réduit de lui-même et vous ne le verrez plus. La session vit
dans votre profil de navigateur : **le plugin ne stocke aucun mot de passe**, il n'y a donc rien à divulguer.

Vous devriez alors voir :

1. **Réglages → Uncle Sam** — une page avec des lignes d'état et un bouton de connexion.
2. **Sous la zone de saisie** — `● DeepSeek Harness` ou `● Uncle Sam`, cliquez pour basculer.
3. **La liste des modèles** — quatre modèles `(web)` à côté de ceux de l'API.

### Le désinstaller

Réglages → Plugins → Uncle Sam → Désinstaller. Rien n'est écrit en dehors du profil de navigateur avec lequel
vous vous êtes connecté.

---

## L'interrupteur API / web

**Le sélecteur de modèle est l'interrupteur.** Il n'y a pas de second contrôle, car un second contrôle qui
choisirait aussi le modèle serait deux sources de vérité pour une seule décision.

| Choisissez ce modèle | Route | DeepThink | Recherche |
|---|---|---|---|
| `DeepSeek Chat (web)` | navigateur | off | off |
| `DeepSeek Chat + Search (web)` | navigateur | off | **on** |
| `DeepSeek Reasoner (web)` | navigateur | **on** | off |
| `DeepSeek Reasoner + Search (web)` | navigateur | **on** | **on** |
| tout modèle sans `(web)` | l'API | — | — |

Un badge **WEB** ou **API** s'affiche à côté de l'étiquette du modèle pour que la route active soit visible
d'un coup d'œil. Quand l'étiquette n'est pas reconnue, le badge n'affiche rien plutôt que de deviner — un badge
faux serait pire que pas de badge.

Votre choix persiste entre les redémarrages. **DeepThink** est la passe de raisonnement ; **Recherche** lui
permet de lire le web en direct.

### La recherche est visible dans la conversation

Avec un modèle de recherche, un tour produit **deux blocs** — la requête utilisée, les sources trouvées, puis
la réponse qui s'en sert :

```
Recherche web — « Quel est un titre technologique du jour ? »
Sources (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
Liens : https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
```

La page n'expose pas la requête saisie en interne : la requête citée est donc le message qui a déclenché la
recherche. Les sources et les liens sont lus sur la page une fois la réponse stabilisée. Comme les sources
n'existent qu'à la fin, **les tours avec recherche s'accumulent au lieu d'être diffusés en flux** ; les tours
ordinaires sont toujours diffusés token par token.

---

## Pourquoi un navigateur, et pas leur API HTTP

La route évidente — appeler l'API de `chat.deepseek.com` — a été tentée puis abandonnée. Le site fait franchir
deux portes à chaque message :

| Porte | Ce que cela signifie |
|---|---|
| `/api/v0/chat/create_pow_challenge` | une **preuve de travail** par message |
| `challenges.cloudflare.com/turnstile` | une barrière anti-robots sur l'origine |

Réimplémenter l'une ou l'autre est une bataille perdue : elles sont obscurcies, elles changent, et quand elles
changent la panne ressemble exactement à une panne réseau. **La page résout déjà les deux pour ses propres
requêtes.**

L'adaptateur ne parle donc jamais HTTP au site. Il pilote la page, et la page fait le reste. L'authentification,
la preuve de travail et Turnstile cessent d'être notre problème et ne peuvent pas casser indépendamment du site
lui-même.

**Vérifié :** un simple `HEAD` vers le site renvoie `403` ; la route navigateur renvoie des réponses.

---

## Limites, dites honnêtement

**L'appel d'outils est émulé.** Un chat web n'a pas de canal d'outils structuré : les outils sont décrits dans
le message, et un appel est récupéré en analysant un objet JSON dans la réponse. Cela fonctionne — vérifié —
mais c'est plus fragile que l'appel natif : un modèle qui ignore la consigne répond en prose, et le harness ne
voit aucun outil ce tour-là. **Pour un travail agentique lourd, la route API est plus fiable.** La route web est
meilleure pour la conversation, les réponses longues, les sous-agents, la compaction, et tout tour où le modèle
doit être le modèle web.

**Il dépend d'un site web que vous ne contrôlez pas.** Quand la page change de forme, le plugin doit changer
avec elle. C'est l'avertissement de développement actif en haut de cette page, pas une formalité.

**Il n'est pas affilié à DeepSeek.** Il n'est ni approuvé ni soutenu par eux, et il ne vous donne aucun droit
sur leur service. Votre usage de ce service est régi par leurs conditions.

---

## Configuration

`cordis.patch.yml` définit :

| clé | défaut | signification |
|---|---|---|
| `port` | `9222` | le port de débogage du navigateur |
| `defaultModel` | `deepseek-chat-search` | utilisé quand un appel ne nomme aucun modèle |
| `showBrowser` | `true` | si la fenêtre est visible pendant le travail |

Le navigateur doit avoir une session connectée à `chat.deepseek.com`. Le premier appel lance Brave sur le
profil **Default** si le port n'est pas déjà ouvert. Si Brave tourne déjà *sans* port de débogage, l'adaptateur
ne peut pas s'y attacher, et le dit clairement au lieu d'échouer en silence.

---

## Architecture

```
index.js          l'adaptateur : StreamChunk du harness  ←→  moteur
lib/engine.mjs    navigateur + page : écrire, envoyer, diffuser, stabiliser
lib/cdp.mjs       client Chrome DevTools Protocol, sans dépendances
lib/prompt.mjs    aplatit messages + outils en un message ; récupère les appels dans la réponse
lib/savings.mjs   ce que la route web vous a économisé, valorisé face à l'API
lib/i18n.mjs      51 langues pour le panneau
```

**Aucune dépendance.** Node 24 fournit `WebSocket` et `fetch` en global, ce qui suffit à CDP : le flux de
tokens ne quitte donc jamais le processus hôte et il n'y a pas d'aller-retour IPC par delta.

---

## Soutien

Uncle Sam existe pour que vous cessiez de payer au token. S'il vous a fait économiser de l'argent et que vous
aimeriez voir le suivant construit sur du matériel qui ne tombe pas en panne de mémoire à mi-chemin :

**[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**

Une étoile sur le dépôt ou un rapport de bug utile vaut tout autant.

---

## Licence

**CC BY-NC-ND 4.0** — Creative Commons Attribution-Pas d'Utilisation Commerciale-Pas de Modification 4.0
International. Copyright (c) 2026 Darren T. Weldon, publié sous le nom Operating Tag.

**Tout l'accord, en une ligne : installez-le et utilisez-le, personnellement, gratuitement. Ne le modifiez pas,
ne le partagez pas, ne le vendez pas, et ne l'utilisez pas dans une entreprise.**

Ce n'est pas de l'open source, et cela ne prétend pas l'être.

```
vous pouvez     l'installer et l'exécuter · l'utiliser personnellement, à des fins non commerciales
                lire le code source pour le comprendre

vous ne pouvez  pas le modifier, l'adapter ou en créer une œuvre dérivée
                pas le copier, le distribuer, le publier, le mettre en miroir
                       ou le rendre disponible à quiconque
                pas le déposer sur un hébergement de code, un registre, un site,
                       un forum ou un chat
                pas le vendre, le revendre, le louer, ni facturer son accès
                pas l'intégrer à quoi que ce soit que vous fournissez à autrui
                pas l'utiliser à des fins commerciales ni dans le cadre d'une activité
```

**Les deux seules sources légitimes sont ce dépôt et le paquet npm
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** Une copie venant
d'ailleurs n'est pas sous licence, quelle que soit la personne qui l'a fournie. Si vous voyez ce logiciel en
vente, il n'est pas vendu par son auteur.

**L'usage commercial, ainsi que le droit de modifier et de distribuer, sont disponibles sous une licence écrite
séparée.** Demandez à Operating Tag : vous aurez une réponse claire et un prix clair.

Le fichier [LICENSE](LICENSE) fait foi, et il s'ouvre sur le même résumé en anglais simple.

---

Uncle Sam est un plugin indépendant. Non affilié à DeepSeek, ni approuvé ni soutenu par eux.

```
@operatingtag/dsh-unclesam   v1.3.5
Auteur     Operating Tag
Licence    CC BY-NC-ND 4.0 — gratuit à l'usage, pas au changement, au partage ou à la vente
```
