[English](README.md) · [Español](README.es.md) · [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.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

**Een provider voor DeepSeek Harness die antwoordt via je eigen browser, op het webaccount dat je al hebt, in plaats van via de betaalde API.**

**De DeepSeek Harness-plugin die chat.deepseek.com in een echte browser bestuurt — het gratis alternatief voor de DeepSeek API. Chat, DeepThink en webzoekopdrachten op je eigen account: geen API-sleutel, geen kosten per token.**

**☕ [Trakteer me op een koffie](https://revolut.me/operatingtag)** — geschreven door één persoon, 's nachts, zonder financiering. Er is geen ander verdienmodel. Een ster of een bruikbare bugmelding is net zoveel waard.

> **Dit product is volop in ontwikkeling. Verwacht bugs.**
>
> Het werkt, het is snel en het draait al weken dagelijks — maar het verandert voortdurend, en de browserroute
> hangt af van een website die zonder waarschuwing verandert. Als er iets stukgaat, zijn een schermafbeelding en
> het versienummer meer waard dan een beschrijving. Pin een versie als je ervan afhankelijk bent.

```
provider   deepseek-web
modellen   deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
kosten     niets per token — gebruikt het abonnement dat al in je browser openstaat
status     in ontwikkeling — verwacht bugs
gemeten    eerste token ~1,9 s · overhead ~0,6 s · een hele beurt in ~2,5 s
```

Antwoorden via de webroute zijn ondertekend met **🔴 Uncle Sam**. Die naam is een grap, geen claim: hij markeert
welke route antwoordde, en API-antwoorden hebben helemaal geen ondertekening. Je weet altijd wie je antwoord gaf.

---

## Wat het je bespaart

De API rekent per token. Het webproduct niet. Deze plugin registreert `deepseek-web` als modelprovider en
beantwoordt elke aanroep door `chat.deepseek.com` in een echte browser te besturen — de pagina doet het werk, de
browser houdt de sessie vast, en er wordt niets gemeten.

| | API-route | Webroute |
|---|---|---|
| Kosten | per token, altijd | niets bovenop het abonnement |
| Snelheid | snel | ~2,5 s per beurt, gemeten |
| Tool-aanroepen | native en betrouwbaar | nagebootst, werkt maar zwakker |
| Hangt af van | de API | een website die zonder waarschuwing verandert |

**Beide routes blijven geïnstalleerd.** De modelkiezer is de schakelaar: gebruik standaard de goedkope route en
grijp naar de API wanneer een taak betrouwbare tools nodig heeft.

---

## Installeren

Uncle Sam is een **DeepSeek Harness-plugin**. Buiten de harness doet hij niets, omdat hij een modelprovider, een
hostroute en twee UI-plekken registreert.

**Vereisten**

| | |
|---|---|
| DeepSeek Harness | elke recente build met pluginbeheer |
| Browser | Brave aanbevolen, Edge wordt automatisch gebruikt als Brave ontbreekt |
| Node | 22 of nieuwer |

**Vanaf npm**

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

**Vanuit deze repository**

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

Voeg dan de pakketregel toe aan je profiel zodat de harness hem laadt:

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

**Of vanuit een map:** Instellingen → Plugins → installeren vanaf een lokaal pad, wijzend naar de map met
`package.json`.

### Eerste keer

Klik op **Inloggen / chat openen**. De browser opent en **blijft zichtbaar** tot je bent ingelogd op
chat.deepseek.com. Daarna minimaliseert hij zichzelf en zie je hem niet meer. De sessie leeft in je
browserprofiel, dus **de plugin bewaart geen wachtwoord** — er is niets dat kan uitlekken.

Je zou dan moeten zien:

1. **Instellingen → Uncle Sam** — een pagina met statusregels en een inlogknop.
2. **Onder het invoerveld** — `● DeepSeek Harness` of `● Uncle Sam`, klik om te wisselen.
3. **De modellenlijst** — vier `(web)`-modellen naast de API-modellen.

### Verwijderen

Instellingen → Plugins → Uncle Sam → Verwijderen. Buiten het browserprofiel waarmee je inlogde wordt niets
geschreven.

---

## De schakelaar API / web

**De modelkiezer is de schakelaar.** Er is geen tweede bediening, want een tweede bediening die ook het model
koos zou twee bronnen van waarheid zijn voor één beslissing.

| Kies dit model | Route | DeepThink | Zoeken |
|---|---|---|---|
| `DeepSeek Chat (web)` | browser | uit | uit |
| `DeepSeek Chat + Search (web)` | browser | uit | **aan** |
| `DeepSeek Reasoner (web)` | browser | **aan** | uit |
| `DeepSeek Reasoner + Search (web)` | browser | **aan** | **aan** |
| elk model zonder `(web)` | de API | — | — |

Naast de modelnaam verschijnt een badge **WEB** of **API**, zodat de actieve route in één oogopslag zichtbaar is.
Wordt de naam niet herkend, dan toont de badge niets in plaats van te gokken — een verkeerde badge is erger dan
geen.

Je keuze blijft bewaard na herstarts. **DeepThink** is de redeneerpass; **Zoeken** laat hem het live web lezen.

### Zoeken is zichtbaar in het gesprek

Met een zoekmodel levert een beurt **twee blokken** op — de zoekopdracht die hij gebruikte, de gevonden bronnen
en dan het antwoord dat ervan gebruikmaakte:

```
Webzoekopdracht — "Wat is vandaag een technologienieuws-kop?"
Bronnen (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
Links: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
```

De pagina geeft de intern getypte opdracht niet prijs, dus de geciteerde opdracht is het bericht dat het zoeken
startte. Bronnen en links worden van de pagina gelezen zodra het antwoord is gaan liggen. Omdat bronnen pas aan
het eind bestaan, **worden zoekbeurten gebufferd in plaats van gestreamd**; gewone beurten streamen nog steeds
token voor token.

---

## Waarom een browser, en niet hun HTTP-API

De voor de hand liggende route — de eigen API van `chat.deepseek.com` aanroepen — is geprobeerd en verlaten. De
site laat elk bericht door twee poorten:

| Poort | Wat het betekent |
|---|---|
| `/api/v0/chat/create_pow_challenge` | een **proof-of-work** per bericht |
| `challenges.cloudflare.com/turnstile` | een botpoort op de origin |

Een van beide opnieuw bouwen is een verloren spel: ze zijn verduisterd, ze veranderen, en als ze veranderen lijkt
de storing precies op een netwerkstoring. **De pagina lost beide al op voor zijn eigen verzoeken.**

De adapter spreekt dus nooit HTTP met de site. Hij bestuurt de pagina, en de pagina doet de rest. Authenticatie,
proof-of-work en Turnstile zijn niet langer ons probleem en kunnen niet los van de site zelf breken.

**Geverifieerd:** een kale `HEAD` naar de site geeft `403`; de browserroute geeft antwoorden.

---

## Grenzen, eerlijk gezegd

**Tool-aanroepen zijn nagebootst.** Een webchat heeft geen gestructureerd toolkanaal: tools worden in de prompt
beschreven en een aanroep wordt teruggevonden door een JSON-object uit het antwoord te halen. Het werkt —
geverifieerd — maar is zwakker dan native tool-aanroepen: een model dat de instructie negeert antwoordt in proza
en de harness ziet die beurt geen toolgebruik. **Voor zwaar agentisch werk is de API-route betrouwbaarder.** De
webroute is het best voor gesprek, lange antwoorden, subagents, compactie en elke beurt waarin het model het
webmodel moet zijn.

**Het hangt af van een website die je niet beheert.** Als de pagina van vorm verandert, moet de plugin mee. Dat is
de waarschuwing over actieve ontwikkeling bovenaan deze pagina, geen formaliteit.

**Het is niet verbonden met DeepSeek.** Het wordt door hen niet goedgekeurd of ondersteund, en het geeft je geen
rechten op hun dienst. Jouw gebruik van die dienst valt onder hun voorwaarden.

---

## Configuratie

`cordis.patch.yml` stelt in:

| sleutel | standaard | betekenis |
|---|---|---|
| `port` | `9222` | de debugpoort van de browser |
| `defaultModel` | `deepseek-chat-search` | gebruikt als een aanroep geen model noemt |
| `showBrowser` | `true` | of het venster zichtbaar is tijdens het werk |

De browser moet een ingelogde `chat.deepseek.com`-sessie hebben. De eerste aanroep start Brave met het
**Default**-profiel als de poort nog niet open is. Draait Brave al *zonder* debugpoort, dan kan de adapter niet
koppelen en zegt dat duidelijk in plaats van stil te falen.

---

## Opbouw

```
index.js          de adapter: harness StreamChunk  ←→  engine
lib/engine.mjs    browser + pagina: typen, sturen, streamen, laten rusten
lib/cdp.mjs       Chrome DevTools Protocol-client, geen afhankelijkheden
lib/prompt.mjs    vlakt berichten + tools af tot één bericht; haalt tool-aanroepen uit het antwoord
lib/savings.mjs   wat de webroute je bespaarde, geprijsd tegen de API
lib/i18n.mjs      51 talen voor het paneel
```

**Geen afhankelijkheden.** Node 24 heeft globale `WebSocket` en `fetch`, en dat is alles wat CDP nodig heeft,
dus de tokenstroom verlaat nooit het hostproces en er is geen IPC-sprong per delta.

---

## Steun

Uncle Sam bestaat zodat je stopt met betalen per token. Als het je geld heeft bespaard en je de volgende op
hardware wilt zien die niet halverwege zonder geheugen komt te zitten:

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

Een ster op de repository of een bruikbare bugmelding is net zoveel waard.

---

## Licentie

**CC BY-NC-ND 4.0** — Creative Commons Naamsvermelding-NietCommercieel-GeenAfgeleiden 4.0 Internationaal.
Copyright (c) 2026 Darren T. Weldon, gepubliceerd onder de naam Operating Tag.

**De hele afspraak in één regel: installeer het en gebruik het persoonlijk, gratis. Wijzig het niet, deel het
niet, verkoop het niet en gebruik het niet in een bedrijf.**

Dat is geen open source, en het doet niet alsof.

```
je mag       het installeren en draaien · het persoonlijk, niet-commercieel gebruiken
            de broncode lezen om het te begrijpen

je mag niet het wijzigen, aanpassen of er een afgeleid werk van maken
            het kopiëren, verspreiden, publiceren, spiegelen of
            aan iemand anders beschikbaar stellen
            het uploaden naar welke codehost, registry, website, forum of chat dan ook
            het verkopen, doorverkopen, verhuren of er geld voor vragen of voor toegang
            het opnemen in iets dat je aan iemand anders levert
            het gebruiken voor enig commercieel doel of in het kader van een bedrijfsactiviteit
```

**De enige twee legitieme bronnen zijn deze repository en het npm-pakket
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** Een kopie van
ergens anders is niet gelicentieerd, wie hem ook heeft geleverd. Zie je deze software te koop, dan verkoopt niet de
auteur hem.

**Commercieel gebruik, en het recht om te wijzigen en te verspreiden, zijn beschikbaar onder een aparte
schriftelijke licentie.** Vraag Operating Tag en je krijgt een duidelijk antwoord en een duidelijke prijs.

Het bestand [LICENSE](LICENSE) is bindend, en het begint met dezelfde samenvatting in eenvoudig Engels.

---

Uncle Sam is een onafhankelijke plugin. Niet verbonden met DeepSeek, door hen niet goedgekeurd of ondersteund.

```
@operatingtag/dsh-unclesam   v1.3.5
Auteur    Operating Tag
Licentie  CC BY-NC-ND 4.0 — vrij om te gebruiken, niet om te wijzigen, delen of verkopen
```
