@operatingtag/dsh-unclesam 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -8,6 +8,41 @@ fixes the patch.
8
8
 
9
9
  ---
10
10
 
11
+ ## 1.0.1
12
+
13
+ **The tool line no longer tells the website what is installed on your machine.**
14
+
15
+ MEASURED, on screen, by the person using it: every chat turn was typing this into the box, above their own
16
+ sentence -
17
+
18
+ Tools: ask_user_question, cordis_inspect_list, cordis_inspect_query, create_goal,
19
+ demergo_brave, demergo_busy, demergo_click, demergo_clipboard, demergo_cursor,
20
+ demergo_drag, demergo_elements, demergo_glide, +282 more
21
+
22
+ That list was real. It was the harness's tool inventory for the session - 283 tools, including a separate
23
+ screen-control plugin installed on the same machine - and because a web chat has no system channel, every
24
+ word of it was typed into `chat.deepseek.com` and sent to a third party. An inventory of a private computer
25
+ leaving the computer, on every turn, for no benefit.
26
+
27
+ - The preamble now states a **count** and the call format, and names nothing:
28
+
29
+ [283 tools available · to call one reply only with {"tool":"name","arguments":{}}]
30
+
31
+ - **Proved by test, not by intention.** `dev/test-preamble.mjs` asserts that no tool name reaches the prompt
32
+ on either a greeting or a real task, using real names from this machine (`demergo_`, `cordis_`,
33
+ `ask_user_question`) plus a synthetic set. A name leaking back in fails the suite.
34
+ - **The call format survives verbatim**, because without it the model answers in prose instead of emitting a
35
+ call. Live tool use re-tested after the change - a call still happens.
36
+ - Things that had to change with it: the panel's "last thing sent" view recognised the old `Tools: ` label,
37
+ and `test-answer-language.mjs` asserted it. Both now recognise the new wording. The suite caught the second
38
+ one; it was not spotted by reading.
39
+
40
+ Honest loss: a model can no longer browse the catalogue and pick a tool nobody told it about. On a turn where
41
+ the harness attaches tools, their names must still be sent - a model cannot call a tool it has never heard of.
42
+ This only affects the turn where no particular tool is being offered.
43
+
44
+ ---
45
+
11
46
  ## 3.9.17
12
47
 
13
48
  **A page that is thinking is not a page that has died.**
package/LICENSE CHANGED
@@ -8,6 +8,8 @@ Contact: @operatingtag
8
8
  ☕ Buy me a coffee: https://revolut.me/operatingtag
9
9
  (a request, not a condition — see the note at the end)
10
10
 
11
+ Resumen en español: README.es.md English summary below
12
+
11
13
  ═══════════════════════════════════════════════════════════════════════════════
12
14
  WHAT THIS MEANS, IN PLAIN ENGLISH
13
15
  ═══════════════════════════════════════════════════════════════════════════════
package/README.de.md ADDED
@@ -0,0 +1,274 @@
1
+ [English](README.md) · [Español](README.es.md) · [Français](README.fr.md) · **Deutsch** · [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)
2
+
3
+ # Uncle Sam
4
+
5
+ **Ein Anbieter für DeepSeek Harness, der über Ihren eigenen Browser antwortet — mit dem Web-Konto, das Sie schon haben, statt über die abgerechnete API.**
6
+
7
+ **☕ [Kauf mir einen Kaffee](https://revolut.me/operatingtag)** — geschrieben von einer Person, nachts, ohne Finanzierung. Es gibt kein anderes Geschäftsmodell. Ein Stern oder ein guter Fehlerbericht ist genauso viel wert.
8
+
9
+ > **Dieses Produkt wird aktiv weiterentwickelt. Rechnen Sie mit Fehlern.**
10
+ >
11
+ > Es funktioniert, es ist schnell, und es läuft seit Wochen täglich — aber es ändert sich ständig, und der
12
+ > Browser-Weg hängt von einer Website ab, die sich ohne Vorwarnung ändert. Wenn etwas kaputtgeht, sind ein
13
+ > Screenshot und die Versionsnummer mehr wert als eine Beschreibung. Legen Sie sich auf eine Version fest, wenn
14
+ > Sie davon abhängen.
15
+
16
+ ```
17
+ Anbieter deepseek-web
18
+ Modelle deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
19
+ Kosten nichts pro Token — es nutzt das Abonnement, das in Ihrem Browser bereits offen ist
20
+ Status in Entwicklung — mit Fehlern rechnen
21
+ gemessen erstes Token ~1,9 s · Overhead ~0,6 s · ein ganzer Zug in ~2,5 s
22
+ ```
23
+
24
+ Antworten über den Web-Weg sind mit **🔴 Uncle Sam** signiert. Der Name ist ein Scherz, keine Behauptung: er
25
+ zeigt, welcher Weg geantwortet hat, und API-Antworten tragen überhaupt keine Signatur. Sie wissen immer, wer
26
+ Ihnen geantwortet hat.
27
+
28
+ ---
29
+
30
+ ## Was es Ihnen spart
31
+
32
+ Die API rechnet pro Token ab. Das Web-Produkt nicht. Dieses Plugin registriert `deepseek-web` als
33
+ Modellanbieter und beantwortet jeden Aufruf, indem es `chat.deepseek.com` in einem echten Browser steuert — die
34
+ Seite erledigt die Arbeit, der Browser hält die Sitzung, und nichts wird gemessen.
35
+
36
+ | | API-Weg | Web-Weg |
37
+ |---|---|---|
38
+ | Kosten | pro Token, dauerhaft | nichts über das Abonnement hinaus |
39
+ | Tempo | schnell | ~2,5 s pro Zug, gemessen |
40
+ | Werkzeugaufrufe | nativ und zuverlässig | emuliert, funktioniert, aber schwächer |
41
+ | Hängt ab von | der API | einer Website, die sich ohne Vorwarnung ändert |
42
+
43
+ **Beide Wege bleiben installiert.** Der Modellwähler ist der Schalter: Sie können den günstigen Weg als
44
+ Standard nutzen und zur API greifen, wenn eine Aufgabe zuverlässige Werkzeuge braucht.
45
+
46
+ ---
47
+
48
+ ## Installation
49
+
50
+ Uncle Sam ist ein **DeepSeek-Harness-Plugin**. Außerhalb des Harness tut es nichts, weil es einen
51
+ Modellanbieter, eine Host-Route und zwei Oberflächenplätze registriert.
52
+
53
+ **Voraussetzungen**
54
+
55
+ | | |
56
+ |---|---|
57
+ | DeepSeek Harness | jede neuere Version mit Plugin-Manager |
58
+ | Browser | Brave empfohlen, Edge wird automatisch genutzt, wenn Brave fehlt |
59
+ | Node | 22 oder neuer |
60
+
61
+ **Von npm**
62
+
63
+ ```bash
64
+ pnpm add @operatingtag/dsh-unclesam
65
+ ```
66
+
67
+ **Aus diesem Repository**
68
+
69
+ ```bash
70
+ git clone https://github.com/operatingtag/dsh-unclesam
71
+ cd dsh-unclesam
72
+ pnpm install
73
+ ```
74
+
75
+ Dann fügen Sie die Paketzeile zu Ihrem Profil hinzu, damit das Harness es lädt:
76
+
77
+ ```yaml
78
+ # cordis.patch.yml
79
+ - insert:
80
+ - id: dsh-unclesam
81
+ name: '@operatingtag/dsh-unclesam'
82
+ config:
83
+ port: 9222
84
+ defaultModel: deepseek-chat-search
85
+ autoMinimise: true
86
+ ```
87
+
88
+ **Oder aus einem Ordner:** Einstellungen → Plugins → aus einem lokalen Pfad installieren, auf den Ordner mit
89
+ der `package.json` zeigen.
90
+
91
+ ### Erster Start
92
+
93
+ Klicken Sie auf **Anmelden / Chat öffnen**. Der Browser öffnet sich und **bleibt sichtbar**, bis Sie sich bei
94
+ chat.deepseek.com angemeldet haben. Danach minimiert er sich selbst und Sie sehen ihn nicht wieder. Die Sitzung
95
+ liegt in Ihrem Browser-Profil — **das Plugin speichert kein Passwort**, es gibt also nichts, was geleakt werden
96
+ könnte.
97
+
98
+ Danach sollten Sie sehen:
99
+
100
+ 1. **Einstellungen → Uncle Sam** — eine Seite mit Statuszeilen und einer Anmeldeschaltfläche.
101
+ 2. **Unter dem Eingabefeld** — `● DeepSeek Harness` oder `● Uncle Sam`, klicken zum Umschalten.
102
+ 3. **Die Modellliste** — vier `(web)`-Modelle neben denen der API.
103
+
104
+ ### Entfernen
105
+
106
+ Einstellungen → Plugins → Uncle Sam → Deinstallieren. Außerhalb des Browser-Profils, mit dem Sie sich angemeldet
107
+ haben, wird nichts geschrieben.
108
+
109
+ ---
110
+
111
+ ## Der Schalter API / Web
112
+
113
+ **Der Modellwähler ist der Schalter.** Es gibt kein zweites Bedienelement, denn ein zweites Bedienelement, das
114
+ auch das Modell wählt, wären zwei Wahrheiten für eine Entscheidung.
115
+
116
+ | Wählen Sie dieses Modell | Weg | DeepThink | Suche |
117
+ |---|---|---|---|
118
+ | `DeepSeek Chat (web)` | Browser | aus | aus |
119
+ | `DeepSeek Chat + Search (web)` | Browser | aus | **an** |
120
+ | `DeepSeek Reasoner (web)` | Browser | **an** | aus |
121
+ | `DeepSeek Reasoner + Search (web)` | Browser | **an** | **an** |
122
+ | jedes Modell ohne `(web)` | API | — | — |
123
+
124
+ Neben der Modellbezeichnung erscheint ein Abzeichen **WEB** oder **API**, damit der aktive Weg auf einen Blick
125
+ sichtbar ist. Wird die Bezeichnung nicht erkannt, zeigt das Abzeichen nichts, statt zu raten — ein falsches
126
+ Abzeichen wäre schlimmer als keins.
127
+
128
+ Ihre Wahl bleibt über Neustarts erhalten. **DeepThink** ist der Denk-Durchlauf; **Suche** lässt es das live Netz
129
+ lesen.
130
+
131
+ ### Die Suche ist im Verlauf sichtbar
132
+
133
+ Mit einem Suchmodell erzeugt ein Zug **zwei Blöcke** — die Suchanfrage, die gefundenen Quellen und dann die
134
+ Antwort, die sie nutzt:
135
+
136
+ ```
137
+ Websuche — „Welche Technik-Schlagzeile gibt es heute?“
138
+ Quellen (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
139
+ Links: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
140
+ ```
141
+
142
+ Die Seite gibt die intern eingegebene Suchanfrage nicht preis; die zitierte Anfrage ist also die Nachricht, die
143
+ die Suche ausgelöst hat. Quellen und Links werden von der Seite gelesen, sobald die Antwort steht. Weil Quellen
144
+ erst am Ende existieren, **puffern Suchzüge, statt zu streamen**; gewöhnliche Züge streamen weiterhin Token für
145
+ Token.
146
+
147
+ ---
148
+
149
+ ## Warum ein Browser und nicht ihre HTTP-API
150
+
151
+ Der naheliegende Weg — die eigene API von `chat.deepseek.com` aufrufen — wurde versucht und verworfen. Die
152
+ Website lässt jede Nachricht durch zwei Tore:
153
+
154
+ | Tor | Was es bedeutet |
155
+ |---|---|
156
+ | `/api/v0/chat/create_pow_challenge` | eine **Proof-of-Work**-Aufgabe pro Nachricht |
157
+ | `challenges.cloudflare.com/turnstile` | eine Bot-Sperre am Ursprung |
158
+
159
+ Beides nachzubauen ist ein verlorenes Spiel: es ist verschleiert, es ändert sich, und wenn es sich ändert, sieht
160
+ der Fehler genau wie ein Netzwerkfehler aus. **Die Seite löst beides bereits für ihre eigenen Anfragen.**
161
+
162
+ Der Adapter spricht also nie HTTP mit der Website. Er steuert die Seite, und die Seite macht den Rest.
163
+ Anmeldung, Proof-of-Work und Turnstile sind nicht mehr unser Problem und können nicht unabhängig von der
164
+ Website kaputtgehen.
165
+
166
+ **Geprüft:** ein einfaches `HEAD` an die Website liefert `403`; der Browser-Weg liefert Antworten.
167
+
168
+ ---
169
+
170
+ ## Grenzen, ehrlich benannt
171
+
172
+ **Werkzeugaufrufe sind emuliert.** Ein Web-Chat hat keinen strukturierten Werkzeugkanal: Werkzeuge werden im
173
+ Prompt beschrieben, und ein Aufruf wird aus der Antwort als JSON-Objekt herausgelesen. Das funktioniert —
174
+ geprüft —, ist aber schwächer als native Werkzeugaufrufe: ein Modell, das die Anweisung ignoriert, antwortet in
175
+ Prosa, und das Harness sieht in diesem Zug keinen Werkzeugeinsatz. **Für schwere agentische Arbeit ist der
176
+ API-Weg zuverlässiger.** Der Web-Weg eignet sich am besten für Unterhaltung, lange Antworten, Subagenten,
177
+ Kompaktierung und jeden Zug, in dem das Modell das Web-Modell sein muss.
178
+
179
+ **Es hängt von einer Website ab, die Sie nicht kontrollieren.** Ändert die Seite ihre Form, muss das Plugin
180
+ mitgehen. Das ist die Warnung zur aktiven Entwicklung oben auf dieser Seite, keine Formalität.
181
+
182
+ **Es ist nicht mit DeepSeek verbunden.** Es wird von ihnen weder unterstützt noch gefördert, und es gibt Ihnen
183
+ keine Rechte an ihrem Dienst. Ihre Nutzung dieses Dienstes richtet sich nach deren Bedingungen.
184
+
185
+ ---
186
+
187
+ ## Konfiguration
188
+
189
+ `cordis.patch.yml` setzt:
190
+
191
+ | Schlüssel | Standard | Bedeutung |
192
+ |---|---|---|
193
+ | `port` | `9222` | der Debug-Port des Browsers |
194
+ | `defaultModel` | `deepseek-chat-search` | wird benutzt, wenn ein Aufruf kein Modell nennt |
195
+ | `showBrowser` | `true` | ob das Fenster während der Arbeit sichtbar ist |
196
+
197
+ Der Browser muss eine angemeldete Sitzung bei `chat.deepseek.com` haben. Der erste Aufruf startet Brave mit dem
198
+ Profil **Default**, wenn der Port noch nicht offen ist. Läuft Brave bereits *ohne* Debug-Port, kann der Adapter
199
+ sich nicht verbinden und sagt das klar, statt still zu scheitern.
200
+
201
+ ---
202
+
203
+ ## Aufbau
204
+
205
+ ```
206
+ index.js der Adapter: Harness-StreamChunk ←→ Engine
207
+ lib/engine.mjs Browser + Seite: tippen, senden, streamen, zur Ruhe kommen
208
+ lib/cdp.mjs Chrome-DevTools-Protocol-Client, ohne Abhängigkeiten
209
+ lib/prompt.mjs fasst Nachrichten + Werkzeuge zu einer Nachricht zusammen; holt Aufrufe aus der Antwort
210
+ lib/savings.mjs was Ihnen der Web-Weg gespart hat, gegen die API gerechnet
211
+ lib/i18n.mjs 51 Sprachen für das Panel
212
+ ```
213
+
214
+ **Keine Abhängigkeiten.** Node 24 bringt `WebSocket` und `fetch` global mit, mehr braucht CDP nicht: der
215
+ Token-Stream verlässt also nie den Host-Prozess und es gibt keinen IPC-Sprung pro Delta.
216
+
217
+ ---
218
+
219
+ ## Unterstützung
220
+
221
+ Uncle Sam gibt es, damit Sie aufhören, pro Token zu zahlen. Wenn es Ihnen Geld gespart hat und Sie den nächsten
222
+ auf Hardware sehen möchten, die nicht auf halbem Weg der Speicher ausgeht:
223
+
224
+ **[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
225
+
226
+ Ein Stern auf dem Repository oder ein brauchbarer Fehlerbericht ist genauso viel wert.
227
+
228
+ ---
229
+
230
+ ## Lizenz
231
+
232
+ **CC BY-NC-ND 4.0** — Creative Commons Namensnennung — Nicht kommerziell — Keine Bearbeitungen 4.0
233
+ International. Copyright (c) 2026 Darren T. Weldon, veröffentlicht unter dem Namen Operating Tag.
234
+
235
+ **Der ganze Deal in einer Zeile: installieren und persönlich kostenlos nutzen. Nicht ändern, nicht
236
+ weitergeben, nicht verkaufen und nicht in einem Unternehmen einsetzen.**
237
+
238
+ Das ist kein Open Source, und es behauptet es auch nicht.
239
+
240
+ ```
241
+ Sie dürfen es installieren und ausführen · es persönlich und nicht kommerziell nutzen
242
+ den Quellcode lesen, um ihn zu verstehen
243
+
244
+ Sie dürfen es nicht ändern, anpassen oder ein abgeleitetes Werk daraus machen
245
+ nicht es nicht kopieren, verbreiten, veröffentlichen, spiegeln oder
246
+ irgendwem zugänglich machen
247
+ es nicht auf eine Code-Plattform, ein Register, eine Website,
248
+ ein Forum oder einen Chat hochladen
249
+ es nicht verkaufen, weiterverkaufen, vermieten oder dafür oder
250
+ für den Zugang dazu Geld verlangen
251
+ es nicht in etwas einbinden, das Sie anderen liefern
252
+ es nicht kommerziell oder im Rahmen einer Geschäftstätigkeit nutzen
253
+ ```
254
+
255
+ **Die beiden einzigen legitimen Quellen sind dieses Repository und das npm-Paket
256
+ [`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** Eine Kopie von
257
+ anderswo ist nicht lizenziert, egal wer sie bereitgestellt hat. Wenn Sie diese Software zum Verkauf sehen,
258
+ verkauft sie nicht ihr Autor.
259
+
260
+ **Kommerzielle Nutzung sowie das Recht zu ändern und zu verbreiten gibt es unter einer separaten schriftlichen
261
+ Lizenz.** Fragen Sie Operating Tag — Sie bekommen eine klare Antwort und einen klaren Preis.
262
+
263
+ Die Datei [LICENSE](LICENSE) ist maßgeblich, und sie beginnt mit derselben Zusammenfassung in einfachem
264
+ Englisch.
265
+
266
+ ---
267
+
268
+ Uncle Sam ist ein unabhängiges Plugin. Nicht mit DeepSeek verbunden, von ihnen weder unterstützt noch gefördert.
269
+
270
+ ```
271
+ @operatingtag/dsh-unclesam v1.0.1
272
+ Autor Operating Tag
273
+ Lizenz CC BY-NC-ND 4.0 — frei zur Nutzung, nicht zum Ändern, Weitergabe oder Verkauf
274
+ ```
package/README.es.md ADDED
@@ -0,0 +1,268 @@
1
+ [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)
2
+
3
+ # Uncle Sam
4
+
5
+ **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.**
6
+
7
+ **☕ [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.
8
+
9
+ > **Este producto está en desarrollo activo. Espera fallos.**
10
+ >
11
+ > Funciona, es rápido y se ha usado a diario durante semanas, pero cambia con frecuencia y la ruta del
12
+ > navegador depende de un sitio web que cambia sin avisar. Si algo se rompe, una captura de pantalla y el
13
+ > número de versión valen más que una descripción. Fija una versión si dependes de él.
14
+
15
+ ```
16
+ proveedor deepseek-web
17
+ modelos deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
18
+ coste nada por token: usa la suscripción que ya tienes abierta en el navegador
19
+ estado en desarrollo — espera fallos
20
+ medido primer token ~1,9 s · sobrecoste ~0,6 s · un turno completo en ~2,5 s
21
+ ```
22
+
23
+ Las respuestas de la ruta web van firmadas con **🔴 Uncle Sam**. El nombre es una broma, no una afirmación:
24
+ marca qué ruta ha respondido, y las respuestas de la API no llevan firma. Siempre sabes cuál de las dos te ha
25
+ contestado.
26
+
27
+ ---
28
+
29
+ ## Qué te ahorra
30
+
31
+ La API cobra por token. El producto web no. Este plugin registra `deepseek-web` como proveedor de modelos y
32
+ responde cada llamada conduciendo `chat.deepseek.com` en un navegador real: la página hace el trabajo, el
33
+ navegador mantiene la sesión y no se factura nada.
34
+
35
+ | | Ruta API | Ruta web |
36
+ |---|---|---|
37
+ | Coste | por token, siempre | nada más allá de la suscripción |
38
+ | Velocidad | rápida | ~2,5 s por turno, medido |
39
+ | Llamadas a herramientas | nativas y fiables | emuladas, funciona pero es más débil |
40
+ | Depende de | la API | un sitio web que cambia sin avisar |
41
+
42
+ **Las dos rutas quedan instaladas.** El selector de modelo es el interruptor, así que puedes usar la barata por
43
+ defecto y recurrir a la API cuando una tarea necesite herramientas fiables.
44
+
45
+ ---
46
+
47
+ ## Instalación
48
+
49
+ Uncle Sam es un **plugin de DeepSeek Harness**. No hace nada fuera del harness, porque registra un proveedor de
50
+ modelos, una ruta del host y dos espacios de interfaz.
51
+
52
+ **Requisitos**
53
+
54
+ | | |
55
+ |---|---|
56
+ | DeepSeek Harness | cualquier versión reciente con gestor de plugins |
57
+ | Navegador | Brave recomendado; Edge se usa automáticamente si falta Brave |
58
+ | Node | 22 o superior |
59
+
60
+ **Desde npm**
61
+
62
+ ```bash
63
+ pnpm add @operatingtag/dsh-unclesam
64
+ ```
65
+
66
+ **Desde este repositorio**
67
+
68
+ ```bash
69
+ git clone https://github.com/operatingtag/dsh-unclesam
70
+ cd dsh-unclesam
71
+ pnpm install
72
+ ```
73
+
74
+ Después añade la fila del paquete a tu perfil para que el harness lo cargue:
75
+
76
+ ```yaml
77
+ # cordis.patch.yml
78
+ - insert:
79
+ - id: dsh-unclesam
80
+ name: '@operatingtag/dsh-unclesam'
81
+ config:
82
+ port: 9222
83
+ defaultModel: deepseek-chat-search
84
+ autoMinimise: true
85
+ ```
86
+
87
+ **O desde una carpeta:** Ajustes → Plugins → instalar desde una ruta local, apuntando a la carpeta que contiene
88
+ `package.json`.
89
+
90
+ ### Primera ejecución
91
+
92
+ Pulsa **Iniciar sesión / abrir el chat**. El navegador se abre y **permanece visible** hasta que hayas iniciado
93
+ 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
94
+ navegador, así que **el plugin no guarda ninguna contraseña**: no hay nada que filtrar.
95
+
96
+ Deberías ver entonces:
97
+
98
+ 1. **Ajustes → Uncle Sam** — una página con filas de estado y un botón de inicio de sesión.
99
+ 2. **Bajo la caja de chat** — `● DeepSeek Harness` o `● Uncle Sam`, pulsa para cambiar.
100
+ 3. **La lista de modelos** — cuatro modelos `(web)` junto a los de la API.
101
+
102
+ ### Desinstalarlo
103
+
104
+ Ajustes → Plugins → Uncle Sam → Desinstalar. No se escribe nada fuera del perfil del navegador con el que
105
+ iniciaste sesión.
106
+
107
+ ---
108
+
109
+ ## El interruptor API / web
110
+
111
+ **El selector de modelo es el interruptor.** No hay un segundo control, porque un segundo control que además
112
+ eligiera el modelo serían dos fuentes de verdad para una sola decisión.
113
+
114
+ | Elige este modelo | Ruta | DeepThink | Búsqueda |
115
+ |---|---|---|---|
116
+ | `DeepSeek Chat (web)` | navegador | no | no |
117
+ | `DeepSeek Chat + Search (web)` | navegador | no | **sí** |
118
+ | `DeepSeek Reasoner (web)` | navegador | **sí** | no |
119
+ | `DeepSeek Reasoner + Search (web)` | navegador | **sí** | **sí** |
120
+ | cualquier modelo sin `(web)` | la API | — | — |
121
+
122
+ Una insignia **WEB** o **API** aparece junto a la etiqueta del modelo para que la ruta activa se vea de un
123
+ vistazo. Cuando la etiqueta no se reconoce, la insignia no muestra nada en lugar de adivinar: una insignia
124
+ equivocada sería peor que ninguna.
125
+
126
+ Tu elección se mantiene entre reinicios. **DeepThink** es la pasada de razonamiento; **Búsqueda** le permite
127
+ leer la web en vivo.
128
+
129
+ ### La búsqueda se ve en la conversación
130
+
131
+ Con un modelo de búsqueda, un turno produce **dos bloques**: la consulta con la que buscó, las fuentes que
132
+ encontró y después la respuesta que las usó.
133
+
134
+ ```
135
+ Búsqueda web — "¿Cuál es un titular tecnológico de hoy?"
136
+ Fuentes (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
137
+ Enlaces: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
138
+ ```
139
+
140
+ La página no expone la consulta que escribió internamente, así que la consulta citada es el mensaje que
141
+ provocó la búsqueda. Las fuentes y los enlaces se leen de la página cuando la respuesta se asienta. Como las
142
+ fuentes solo existen al final, **los turnos con búsqueda se acumulan en lugar de emitirse en streaming**; los
143
+ turnos normales siguen emitiéndose token a token.
144
+
145
+ ---
146
+
147
+ ## Por qué un navegador y no su API HTTP
148
+
149
+ La ruta obvia —llamar a la API propia de `chat.deepseek.com`— se intentó y se abandonó. El sitio hace que cada
150
+ mensaje pase dos puertas:
151
+
152
+ | Puerta | Qué significa |
153
+ |---|---|
154
+ | `/api/v0/chat/create_pow_challenge` | un desafío de **prueba de trabajo** por mensaje |
155
+ | `challenges.cloudflare.com/turnstile` | una barrera anti-bots en el origen |
156
+
157
+ Reimplementar cualquiera de las dos es perder el tiempo: están ofuscadas, cambian, y cuando cambian el fallo
158
+ parece exactamente un fallo de red. **La página ya resuelve ambas para sus propias peticiones.**
159
+
160
+ Así que el adaptador nunca habla HTTP con el sitio. Conduce la página, y la página hace el resto. La
161
+ autenticación, la prueba de trabajo y Turnstile dejan de ser nuestro problema y no pueden romperse de forma
162
+ independiente al propio sitio.
163
+
164
+ **Verificado:** un `HEAD` simple al sitio devuelve `403`; la ruta del navegador devuelve respuestas.
165
+
166
+ ---
167
+
168
+ ## Límites, dichos con honestidad
169
+
170
+ **El uso de herramientas está emulado.** Un chat web no tiene canal estructurado de herramientas, así que las
171
+ herramientas se describen en el mensaje y una llamada se recupera analizando un objeto JSON de la respuesta.
172
+ Funciona —verificado— pero es más débil que las llamadas nativas: un modelo que ignora la instrucción responde
173
+ en prosa y el harness no ve ninguna herramienta ese turno. **Para trabajo agéntico pesado, la ruta API es más
174
+ fiable.** La ruta web es mejor para conversación, respuestas largas, subagentes, compactación y cualquier turno
175
+ en el que el modelo deba ser el modelo web.
176
+
177
+ **Depende de un sitio web que no controlas.** Cuando la página cambia de forma, el plugin tiene que cambiar con
178
+ ella. Eso es la advertencia de desarrollo activo de arriba, no una formalidad.
179
+
180
+ **No está afiliado a DeepSeek.** No está respaldado por ellos y no te da ningún derecho sobre su servicio. Tu
181
+ uso de ese servicio se rige por sus términos.
182
+
183
+ ---
184
+
185
+ ## Configuración
186
+
187
+ `cordis.patch.yml` define:
188
+
189
+ | clave | por defecto | significado |
190
+ |---|---|---|
191
+ | `port` | `9222` | el puerto de depuración del navegador |
192
+ | `defaultModel` | `deepseek-chat-search` | se usa cuando una llamada no indica modelo |
193
+ | `showBrowser` | `true` | si la ventana es visible mientras trabaja |
194
+
195
+ El navegador debe tener una sesión iniciada en `chat.deepseek.com`. La primera llamada abre Brave con el perfil
196
+ **Default** si el puerto no está ya abierto. Si Brave ya se está ejecutando *sin* puerto de depuración, el
197
+ adaptador no puede conectarse y lo dice claramente en lugar de fallar en silencio.
198
+
199
+ ---
200
+
201
+ ## Arquitectura
202
+
203
+ ```
204
+ index.js el adaptador: StreamChunk del harness ←→ motor
205
+ lib/engine.mjs navegador + página: escribir, enviar, transmitir, asentar
206
+ lib/cdp.mjs cliente del Chrome DevTools Protocol, sin dependencias
207
+ lib/prompt.mjs aplana mensajes + herramientas en un mensaje; recupera llamadas de la respuesta
208
+ lib/savings.mjs lo que te ahorró la ruta web, valorado contra la API
209
+ lib/i18n.mjs 51 idiomas para el panel
210
+ ```
211
+
212
+ **Sin dependencias.** Node 24 incluye `WebSocket` y `fetch` globales, que es todo lo que CDP necesita, así que
213
+ el flujo de tokens nunca sale del proceso host y no hay salto IPC por delta.
214
+
215
+ ---
216
+
217
+ ## Apoyo
218
+
219
+ Uncle Sam existe para que dejes de pagar por token. Si te ha ahorrado dinero y te gustaría ver el siguiente
220
+ construido sobre hardware que no se queda sin memoria a mitad de camino:
221
+
222
+ **[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
223
+
224
+ Una estrella en el repositorio o un informe de fallo útil vale lo mismo.
225
+
226
+ ---
227
+
228
+ ## Licencia
229
+
230
+ **CC BY-NC-ND 4.0** — Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.
231
+ Copyright (c) 2026 Darren T. Weldon, publicado bajo el nombre Operating Tag.
232
+
233
+ **Todo el acuerdo, en una línea: instálalo y úsalo, personalmente, gratis. No lo cambies, no lo compartas, no
234
+ lo vendas y no lo uses en una empresa.**
235
+
236
+ Eso no es código abierto, y no pretende serlo.
237
+
238
+ ```
239
+ puedes instalarlo y ejecutarlo · usarlo personalmente, sin fines comerciales
240
+ leer el código para entenderlo
241
+
242
+ no puedes modificarlo, adaptarlo ni crear una obra derivada
243
+ copiarlo, distribuirlo, publicarlo, replicarlo ni ponerlo a disposición de nadie
244
+ subirlo a ningún alojamiento de código, registro, web, foro o chat
245
+ venderlo, revenderlo, alquilarlo ni cobrar por él o por acceder a él
246
+ incluirlo en cualquier cosa que entregues a otra persona
247
+ usarlo con cualquier fin comercial ni en el ejercicio de una actividad empresarial
248
+ ```
249
+
250
+ **Las dos únicas fuentes legítimas son este repositorio y el paquete npm
251
+ [`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** Una copia que
252
+ venga de cualquier otro sitio no está licenciada, sea quien sea que la haya facilitado. Si ves este software a
253
+ la venta, no lo está vendiendo su autor.
254
+
255
+ **El uso comercial, y el derecho a modificar y distribuir, están disponibles bajo una licencia escrita
256
+ separada.** Pregunta a Operating Tag y recibirás una respuesta clara y un precio claro.
257
+
258
+ El archivo [LICENSE](LICENSE) es el que rige, y abre con el mismo resumen en inglés sencillo.
259
+
260
+ ---
261
+
262
+ Uncle Sam es un plugin independiente. No está afiliado, respaldado ni soportado por DeepSeek.
263
+
264
+ ```
265
+ @operatingtag/dsh-unclesam v1.0.1
266
+ Autor Operating Tag
267
+ Licencia CC BY-NC-ND 4.0 — gratis para usar, no para cambiar, compartir o vender
268
+ ```