@operatingtag/dsh-unclesam 0.0.0-stage → 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 +928 -0
- package/LICENSE +144 -0
- package/README.de.md +274 -0
- package/README.es.md +268 -0
- package/README.fr.md +272 -0
- package/README.hi.md +263 -0
- package/README.id.md +264 -0
- package/README.it.md +268 -0
- package/README.ja.md +263 -0
- package/README.ko.md +258 -0
- package/README.md +260 -2
- package/README.nl.md +266 -0
- package/README.pl.md +266 -0
- package/README.pt.md +265 -0
- package/README.ru.md +269 -0
- package/README.tr.md +265 -0
- package/README.uk.md +265 -0
- package/README.vi.md +263 -0
- package/README.zh.md +248 -0
- package/client.js +1099 -0
- package/cordis.patch.yml +48 -0
- package/icon.svg +17 -0
- package/index.js +1414 -0
- package/install.cmd +43 -0
- package/install.ps1 +311 -0
- package/lib/cdp.mjs +247 -0
- package/lib/engine.mjs +1412 -0
- package/lib/i18n.mjs +141 -0
- package/lib/prefs.mjs +101 -0
- package/lib/prompt.mjs +498 -0
- package/lib/savings.mjs +131 -0
- package/locale/ar.json +98 -0
- package/locale/az.json +98 -0
- package/locale/bg.json +98 -0
- package/locale/bn.json +98 -0
- package/locale/cs.json +98 -0
- package/locale/da.json +98 -0
- package/locale/de.json +98 -0
- package/locale/el.json +98 -0
- package/locale/en.json +98 -0
- package/locale/es.json +98 -0
- package/locale/fa.json +98 -0
- package/locale/fi.json +98 -0
- package/locale/fr.json +98 -0
- package/locale/he.json +98 -0
- package/locale/hi.json +98 -0
- package/locale/hr.json +98 -0
- package/locale/hu.json +98 -0
- package/locale/id.json +98 -0
- package/locale/it.json +98 -0
- package/locale/ja.json +98 -0
- package/locale/ka.json +98 -0
- package/locale/kk.json +98 -0
- package/locale/km.json +98 -0
- package/locale/ko.json +98 -0
- package/locale/lt.json +98 -0
- package/locale/mr.json +98 -0
- package/locale/ms.json +98 -0
- package/locale/my.json +98 -0
- package/locale/ne.json +98 -0
- package/locale/nl.json +98 -0
- package/locale/no.json +98 -0
- package/locale/pl.json +98 -0
- package/locale/pt.json +98 -0
- package/locale/ro.json +98 -0
- package/locale/ru.json +98 -0
- package/locale/si.json +98 -0
- package/locale/sk.json +98 -0
- package/locale/sl.json +98 -0
- package/locale/sr.json +98 -0
- package/locale/sv.json +98 -0
- package/locale/sw.json +98 -0
- package/locale/ta.json +98 -0
- package/locale/te.json +98 -0
- package/locale/th.json +98 -0
- package/locale/tl.json +98 -0
- package/locale/tr.json +98 -0
- package/locale/uk.json +98 -0
- package/locale/ur.json +98 -0
- package/locale/uz.json +98 -0
- package/locale/vi.json +98 -0
- package/locale/zh.json +98 -0
- package/package.json +89 -4
package/README.md
CHANGED
|
@@ -1,3 +1,261 @@
|
|
|
1
|
-
|
|
1
|
+
**English** · [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.nl.md) · [Українська](README.uk.md) · [Tiếng Việt](README.vi.md) · [Bahasa Indonesia](README.id.md)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# Uncle Sam
|
|
4
|
+
|
|
5
|
+
**A DeepSeek Harness provider that answers through your own browser, on your existing web account, instead of the billed API.**
|
|
6
|
+
|
|
7
|
+
**☕ [Buy me a coffee](https://revolut.me/operatingtag)** — written by one person, at night, funded by nothing. There is no other revenue model. A star or a bug report is worth just as much.
|
|
8
|
+
|
|
9
|
+
> **This product is ongoing and under active development. Expect bugs.**
|
|
10
|
+
>
|
|
11
|
+
> It works, it is fast, and it has been driven daily for weeks — but it keeps changing, and the browser route
|
|
12
|
+
> depends on a website that changes without telling anyone. If something breaks, a screenshot and the version
|
|
13
|
+
> number is worth more than a description. Pin a version if you depend on it.
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
provider deepseek-web
|
|
17
|
+
models deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
|
|
18
|
+
cost nothing per token — it uses the subscription already open in your browser
|
|
19
|
+
status ongoing development — expect bugs
|
|
20
|
+
measured first token ~1.9 s · overhead ~0.6 s · a full turn in ~2.5 s
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Replies from the web route are signed **🔴 Uncle Sam**. That name is a joke, not a claim: it marks which route
|
|
24
|
+
answered, and API replies carry no signature at all. You always know which of the two answered you.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## What it saves you
|
|
29
|
+
|
|
30
|
+
The API bills per token. The web product does not. This plugin registers `deepseek-web` as a model provider and
|
|
31
|
+
answers every call by driving `chat.deepseek.com` in a real browser — the page does the work, the browser holds
|
|
32
|
+
the session, and nothing is metered.
|
|
33
|
+
|
|
34
|
+
| | API route | Web route |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Cost | per token, forever | nothing beyond the subscription |
|
|
37
|
+
| Speed | fast | ~2.5 s a turn, measured |
|
|
38
|
+
| Tool calling | native and reliable | emulated, works but weaker |
|
|
39
|
+
| Depends on | the API | a website that changes without notice |
|
|
40
|
+
|
|
41
|
+
**Both routes stay installed.** The model picker is the switch, so you can use the cheap one by default and
|
|
42
|
+
reach for the API when a task needs reliable tool use.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Installing
|
|
47
|
+
|
|
48
|
+
Uncle Sam is a **DeepSeek Harness plugin**. It does nothing outside the harness, because it registers a model
|
|
49
|
+
provider, a host route and two client UI slots.
|
|
50
|
+
|
|
51
|
+
**Requirements**
|
|
52
|
+
|
|
53
|
+
| | |
|
|
54
|
+
|---|---|
|
|
55
|
+
| DeepSeek Harness | any recent build with the plugin manager |
|
|
56
|
+
| Browser | Brave recommended, Edge used automatically when Brave is absent |
|
|
57
|
+
| Node | 22 or newer |
|
|
58
|
+
|
|
59
|
+
**From npm**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pnpm add @operatingtag/dsh-unclesam
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**From this repository**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/operatingtag/dsh-unclesam
|
|
69
|
+
cd dsh-unclesam
|
|
70
|
+
pnpm install
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Then add the bundle row to your profile so the harness loads it:
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
# cordis.patch.yml
|
|
77
|
+
- insert:
|
|
78
|
+
- id: dsh-unclesam
|
|
79
|
+
name: '@operatingtag/dsh-unclesam'
|
|
80
|
+
config:
|
|
81
|
+
port: 9222
|
|
82
|
+
defaultModel: deepseek-chat-search
|
|
83
|
+
autoMinimise: true
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Or from a folder:** Settings → Plugins → install from a local path, pointed at the folder holding
|
|
87
|
+
`package.json`.
|
|
88
|
+
|
|
89
|
+
### First run
|
|
90
|
+
|
|
91
|
+
Click **Sign in / open chat**. The browser opens and **stays visible** until you have signed in at
|
|
92
|
+
chat.deepseek.com. After that it minimises itself and you will not see it again. The session lives in your
|
|
93
|
+
browser profile, so **no password is stored by the plugin** — there is nothing to leak.
|
|
94
|
+
|
|
95
|
+
You should then see:
|
|
96
|
+
|
|
97
|
+
1. **Settings → Uncle Sam** — a page with status rows and a sign-in button.
|
|
98
|
+
2. **Under the chat box** — `● DeepSeek Harness` or `● Uncle Sam`, click to switch.
|
|
99
|
+
3. **The model list** — four `(web)` models beside the API models.
|
|
100
|
+
|
|
101
|
+
### Removing it
|
|
102
|
+
|
|
103
|
+
Settings → Plugins → Uncle Sam → Uninstall. Nothing is written outside the browser profile you signed in to.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## The API / web switch
|
|
108
|
+
|
|
109
|
+
**The model picker is the switch.** There is no second control, because a second control that also chose the
|
|
110
|
+
model would be two sources of truth for one decision.
|
|
111
|
+
|
|
112
|
+
| Pick this model | Route | DeepThink | Search |
|
|
113
|
+
|---|---|---|---|
|
|
114
|
+
| `DeepSeek Chat (web)` | browser | off | off |
|
|
115
|
+
| `DeepSeek Chat + Search (web)` | browser | off | **on** |
|
|
116
|
+
| `DeepSeek Reasoner (web)` | browser | **on** | off |
|
|
117
|
+
| `DeepSeek Reasoner + Search (web)` | browser | **on** | **on** |
|
|
118
|
+
| any model without `(web)` | the API | — | — |
|
|
119
|
+
|
|
120
|
+
A **WEB** or **API** badge renders beside the model label so the active route is visible at a glance. When the
|
|
121
|
+
label is not recognised the badge renders nothing rather than guessing — a wrong badge is worse than none.
|
|
122
|
+
|
|
123
|
+
Your choice persists across restarts. **DeepThink** is the reasoning pass; **Search** lets it read the live web.
|
|
124
|
+
|
|
125
|
+
### Search is visible in the transcript
|
|
126
|
+
|
|
127
|
+
With a search model, a turn produces **two blocks** — the query it searched with, the sources it found, then
|
|
128
|
+
the answer that used them:
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
Web search — "What is one technology news headline from today?"
|
|
132
|
+
Sources (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
|
|
133
|
+
Links: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
The page does not expose the query it typed internally, so the quoted query is the prompt that triggered the
|
|
137
|
+
search. Sources and links are read from the page once the answer settles. Because sources only exist at the
|
|
138
|
+
end, **search turns buffer instead of streaming**; ordinary turns still stream token by token.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Why a browser, and not their HTTP API
|
|
143
|
+
|
|
144
|
+
The obvious route — calling `chat.deepseek.com`'s own API — was attempted and abandoned. The site makes every
|
|
145
|
+
message clear two gates:
|
|
146
|
+
|
|
147
|
+
| Gate | What it means |
|
|
148
|
+
|---|---|
|
|
149
|
+
| `/api/v0/chat/create_pow_challenge` | a **proof-of-work** challenge per message |
|
|
150
|
+
| `challenges.cloudflare.com/turnstile` | a bot gate on the origin |
|
|
151
|
+
|
|
152
|
+
Re-implementing either is a losing game: they are obfuscated, they change, and when they change the failure
|
|
153
|
+
looks exactly like a network fault. **The page already solves both for its own requests.**
|
|
154
|
+
|
|
155
|
+
So the adapter never speaks HTTP to the site. It drives the page, and the page does the rest. Auth,
|
|
156
|
+
proof-of-work and Turnstile stop being our problem and cannot break independently of the site itself.
|
|
157
|
+
|
|
158
|
+
**Verified:** a plain `HEAD` to the site returns `403`; the browser path returns answers.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Limits, stated honestly
|
|
163
|
+
|
|
164
|
+
**Tool use is emulated.** A web chat has no structured tool channel, so tools are described in the prompt and
|
|
165
|
+
a call is recovered by parsing a JSON object out of the reply. It works — verified — but it is weaker than
|
|
166
|
+
native tool calling: a model that ignores the instruction answers in prose, and the harness sees no tool use
|
|
167
|
+
that turn. **For heavy agentic work the API route is more reliable.** The web route is best for chat, long
|
|
168
|
+
answers, subagents, compaction, and any turn where the model must be the web model.
|
|
169
|
+
|
|
170
|
+
**It depends on a website you do not control.** When the page changes shape, the plugin has to change with it.
|
|
171
|
+
That is the ongoing-development warning at the top of this page, not a formality.
|
|
172
|
+
|
|
173
|
+
**It is not affiliated with DeepSeek.** It is not endorsed by them, and it gives you no rights in their
|
|
174
|
+
service. Your use of that service is governed by their terms.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Configuration
|
|
179
|
+
|
|
180
|
+
`cordis.patch.yml` sets:
|
|
181
|
+
|
|
182
|
+
| key | default | meaning |
|
|
183
|
+
|---|---|---|
|
|
184
|
+
| `port` | `9222` | the browser's debugging port |
|
|
185
|
+
| `defaultModel` | `deepseek-chat-search` | used when a call names no model |
|
|
186
|
+
| `showBrowser` | `true` | whether the window is visible while it works |
|
|
187
|
+
|
|
188
|
+
The browser must hold a signed-in `chat.deepseek.com` session. The first call launches Brave on the **Default**
|
|
189
|
+
profile if the port is not already open. If Brave is already running *without* a debugging port, the adapter
|
|
190
|
+
cannot attach, and says so clearly rather than failing silently.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Architecture
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
index.js the adapter: harness StreamChunk ←→ engine
|
|
198
|
+
lib/engine.mjs browser + page: type, send, stream, settle
|
|
199
|
+
lib/cdp.mjs Chrome DevTools Protocol client, zero dependencies
|
|
200
|
+
lib/prompt.mjs flatten messages + tools into one message; recover tool calls from the reply
|
|
201
|
+
lib/savings.mjs what the web route saved you, priced against the API
|
|
202
|
+
lib/i18n.mjs 51 languages for the panel
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**No dependencies.** Node 24 ships a global `WebSocket` and `fetch`, which is all CDP needs, so the token
|
|
206
|
+
stream never leaves the host process and there is no IPC hop per delta.
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Support
|
|
211
|
+
|
|
212
|
+
Uncle Sam exists so you stop paying per token. If it saved you money, and you would like to see the next one
|
|
213
|
+
built on hardware that does not run out of memory halfway through:
|
|
214
|
+
|
|
215
|
+
**[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
|
|
216
|
+
|
|
217
|
+
A star on the repo or a useful bug report is worth just as much.
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## Licence
|
|
222
|
+
|
|
223
|
+
**CC BY-NC-ND 4.0** — Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International.
|
|
224
|
+
Copyright (c) 2026 Darren T. Weldon, published under the Operating Tag name.
|
|
225
|
+
|
|
226
|
+
**The whole deal, in one line: install it and use it, personally, for free. Do not change it, do not share
|
|
227
|
+
it, do not sell it, and do not use it in a business.**
|
|
228
|
+
|
|
229
|
+
That is not open source, and it does not pretend to be.
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
you may install it and run it · use it personally, non-commercially
|
|
233
|
+
read the source to understand it
|
|
234
|
+
|
|
235
|
+
you may not modify, adapt or create a derivative of it
|
|
236
|
+
copy, distribute, publish, mirror or make it available to anyone
|
|
237
|
+
upload it to any code host, registry, website, forum or chat
|
|
238
|
+
sell, resell, rent, or charge for it or for access to it
|
|
239
|
+
bundle it into anything you supply to another person
|
|
240
|
+
use it for any commercial purpose, or in the course of a business
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
**The only two legitimate sources are this repository and the npm package
|
|
244
|
+
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** A copy from
|
|
245
|
+
anywhere else is not licensed, whoever supplied it. If you see this software for sale, it is not being sold by
|
|
246
|
+
its author.
|
|
247
|
+
|
|
248
|
+
**Commercial use, and the right to modify and distribute, are available under a separate written licence.**
|
|
249
|
+
Ask Operating Tag and you will get a straight answer and a clear price.
|
|
250
|
+
|
|
251
|
+
The [LICENSE](LICENSE) file governs, and it opens with the same summary in plain English.
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
Uncle Sam is an independent plugin. Not affiliated with, endorsed by, or supported by DeepSeek.
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
@operatingtag/dsh-unclesam v1.0.1
|
|
259
|
+
Author Operating Tag
|
|
260
|
+
Licence CC BY-NC-ND 4.0 — free to use, not to change, share or sell
|
|
261
|
+
```
|
package/README.nl.md
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
[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)
|
|
2
|
+
|
|
3
|
+
# Uncle Sam
|
|
4
|
+
|
|
5
|
+
**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.**
|
|
6
|
+
|
|
7
|
+
**☕ [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.
|
|
8
|
+
|
|
9
|
+
> **Dit product is volop in ontwikkeling. Verwacht bugs.**
|
|
10
|
+
>
|
|
11
|
+
> Het werkt, het is snel en het draait al weken dagelijks — maar het verandert voortdurend, en de browserroute
|
|
12
|
+
> hangt af van een website die zonder waarschuwing verandert. Als er iets stukgaat, zijn een schermafbeelding en
|
|
13
|
+
> het versienummer meer waard dan een beschrijving. Pin een versie als je ervan afhankelijk bent.
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
provider deepseek-web
|
|
17
|
+
modellen deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
|
|
18
|
+
kosten niets per token — gebruikt het abonnement dat al in je browser openstaat
|
|
19
|
+
status in ontwikkeling — verwacht bugs
|
|
20
|
+
gemeten eerste token ~1,9 s · overhead ~0,6 s · een hele beurt in ~2,5 s
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Antwoorden via de webroute zijn ondertekend met **🔴 Uncle Sam**. Die naam is een grap, geen claim: hij markeert
|
|
24
|
+
welke route antwoordde, en API-antwoorden hebben helemaal geen ondertekening. Je weet altijd wie je antwoord gaf.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Wat het je bespaart
|
|
29
|
+
|
|
30
|
+
De API rekent per token. Het webproduct niet. Deze plugin registreert `deepseek-web` als modelprovider en
|
|
31
|
+
beantwoordt elke aanroep door `chat.deepseek.com` in een echte browser te besturen — de pagina doet het werk, de
|
|
32
|
+
browser houdt de sessie vast, en er wordt niets gemeten.
|
|
33
|
+
|
|
34
|
+
| | API-route | Webroute |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Kosten | per token, altijd | niets bovenop het abonnement |
|
|
37
|
+
| Snelheid | snel | ~2,5 s per beurt, gemeten |
|
|
38
|
+
| Tool-aanroepen | native en betrouwbaar | nagebootst, werkt maar zwakker |
|
|
39
|
+
| Hangt af van | de API | een website die zonder waarschuwing verandert |
|
|
40
|
+
|
|
41
|
+
**Beide routes blijven geïnstalleerd.** De modelkiezer is de schakelaar: gebruik standaard de goedkope route en
|
|
42
|
+
grijp naar de API wanneer een taak betrouwbare tools nodig heeft.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Installeren
|
|
47
|
+
|
|
48
|
+
Uncle Sam is een **DeepSeek Harness-plugin**. Buiten de harness doet hij niets, omdat hij een modelprovider, een
|
|
49
|
+
hostroute en twee UI-plekken registreert.
|
|
50
|
+
|
|
51
|
+
**Vereisten**
|
|
52
|
+
|
|
53
|
+
| | |
|
|
54
|
+
|---|---|
|
|
55
|
+
| DeepSeek Harness | elke recente build met pluginbeheer |
|
|
56
|
+
| Browser | Brave aanbevolen, Edge wordt automatisch gebruikt als Brave ontbreekt |
|
|
57
|
+
| Node | 22 of nieuwer |
|
|
58
|
+
|
|
59
|
+
**Vanaf npm**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pnpm add @operatingtag/dsh-unclesam
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Vanuit deze repository**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/operatingtag/dsh-unclesam
|
|
69
|
+
cd dsh-unclesam
|
|
70
|
+
pnpm install
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Voeg dan de pakketregel toe aan je profiel zodat de harness hem laadt:
|
|
74
|
+
|
|
75
|
+
```yaml
|
|
76
|
+
# cordis.patch.yml
|
|
77
|
+
- insert:
|
|
78
|
+
- id: dsh-unclesam
|
|
79
|
+
name: '@operatingtag/dsh-unclesam'
|
|
80
|
+
config:
|
|
81
|
+
port: 9222
|
|
82
|
+
defaultModel: deepseek-chat-search
|
|
83
|
+
autoMinimise: true
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Of vanuit een map:** Instellingen → Plugins → installeren vanaf een lokaal pad, wijzend naar de map met
|
|
87
|
+
`package.json`.
|
|
88
|
+
|
|
89
|
+
### Eerste keer
|
|
90
|
+
|
|
91
|
+
Klik op **Inloggen / chat openen**. De browser opent en **blijft zichtbaar** tot je bent ingelogd op
|
|
92
|
+
chat.deepseek.com. Daarna minimaliseert hij zichzelf en zie je hem niet meer. De sessie leeft in je
|
|
93
|
+
browserprofiel, dus **de plugin bewaart geen wachtwoord** — er is niets dat kan uitlekken.
|
|
94
|
+
|
|
95
|
+
Je zou dan moeten zien:
|
|
96
|
+
|
|
97
|
+
1. **Instellingen → Uncle Sam** — een pagina met statusregels en een inlogknop.
|
|
98
|
+
2. **Onder het invoerveld** — `● DeepSeek Harness` of `● Uncle Sam`, klik om te wisselen.
|
|
99
|
+
3. **De modellenlijst** — vier `(web)`-modellen naast de API-modellen.
|
|
100
|
+
|
|
101
|
+
### Verwijderen
|
|
102
|
+
|
|
103
|
+
Instellingen → Plugins → Uncle Sam → Verwijderen. Buiten het browserprofiel waarmee je inlogde wordt niets
|
|
104
|
+
geschreven.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## De schakelaar API / web
|
|
109
|
+
|
|
110
|
+
**De modelkiezer is de schakelaar.** Er is geen tweede bediening, want een tweede bediening die ook het model
|
|
111
|
+
koos zou twee bronnen van waarheid zijn voor één beslissing.
|
|
112
|
+
|
|
113
|
+
| Kies dit model | Route | DeepThink | Zoeken |
|
|
114
|
+
|---|---|---|---|
|
|
115
|
+
| `DeepSeek Chat (web)` | browser | uit | uit |
|
|
116
|
+
| `DeepSeek Chat + Search (web)` | browser | uit | **aan** |
|
|
117
|
+
| `DeepSeek Reasoner (web)` | browser | **aan** | uit |
|
|
118
|
+
| `DeepSeek Reasoner + Search (web)` | browser | **aan** | **aan** |
|
|
119
|
+
| elk model zonder `(web)` | de API | — | — |
|
|
120
|
+
|
|
121
|
+
Naast de modelnaam verschijnt een badge **WEB** of **API**, zodat de actieve route in één oogopslag zichtbaar is.
|
|
122
|
+
Wordt de naam niet herkend, dan toont de badge niets in plaats van te gokken — een verkeerde badge is erger dan
|
|
123
|
+
geen.
|
|
124
|
+
|
|
125
|
+
Je keuze blijft bewaard na herstarts. **DeepThink** is de redeneerpass; **Zoeken** laat hem het live web lezen.
|
|
126
|
+
|
|
127
|
+
### Zoeken is zichtbaar in het gesprek
|
|
128
|
+
|
|
129
|
+
Met een zoekmodel levert een beurt **twee blokken** op — de zoekopdracht die hij gebruikte, de gevonden bronnen
|
|
130
|
+
en dan het antwoord dat ervan gebruikmaakte:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Webzoekopdracht — "Wat is vandaag een technologienieuws-kop?"
|
|
134
|
+
Bronnen (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
|
|
135
|
+
Links: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
De pagina geeft de intern getypte opdracht niet prijs, dus de geciteerde opdracht is het bericht dat het zoeken
|
|
139
|
+
startte. Bronnen en links worden van de pagina gelezen zodra het antwoord is gaan liggen. Omdat bronnen pas aan
|
|
140
|
+
het eind bestaan, **worden zoekbeurten gebufferd in plaats van gestreamd**; gewone beurten streamen nog steeds
|
|
141
|
+
token voor token.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Waarom een browser, en niet hun HTTP-API
|
|
146
|
+
|
|
147
|
+
De voor de hand liggende route — de eigen API van `chat.deepseek.com` aanroepen — is geprobeerd en verlaten. De
|
|
148
|
+
site laat elk bericht door twee poorten:
|
|
149
|
+
|
|
150
|
+
| Poort | Wat het betekent |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `/api/v0/chat/create_pow_challenge` | een **proof-of-work** per bericht |
|
|
153
|
+
| `challenges.cloudflare.com/turnstile` | een botpoort op de origin |
|
|
154
|
+
|
|
155
|
+
Een van beide opnieuw bouwen is een verloren spel: ze zijn verduisterd, ze veranderen, en als ze veranderen lijkt
|
|
156
|
+
de storing precies op een netwerkstoring. **De pagina lost beide al op voor zijn eigen verzoeken.**
|
|
157
|
+
|
|
158
|
+
De adapter spreekt dus nooit HTTP met de site. Hij bestuurt de pagina, en de pagina doet de rest. Authenticatie,
|
|
159
|
+
proof-of-work en Turnstile zijn niet langer ons probleem en kunnen niet los van de site zelf breken.
|
|
160
|
+
|
|
161
|
+
**Geverifieerd:** een kale `HEAD` naar de site geeft `403`; de browserroute geeft antwoorden.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Grenzen, eerlijk gezegd
|
|
166
|
+
|
|
167
|
+
**Tool-aanroepen zijn nagebootst.** Een webchat heeft geen gestructureerd toolkanaal: tools worden in de prompt
|
|
168
|
+
beschreven en een aanroep wordt teruggevonden door een JSON-object uit het antwoord te halen. Het werkt —
|
|
169
|
+
geverifieerd — maar is zwakker dan native tool-aanroepen: een model dat de instructie negeert antwoordt in proza
|
|
170
|
+
en de harness ziet die beurt geen toolgebruik. **Voor zwaar agentisch werk is de API-route betrouwbaarder.** De
|
|
171
|
+
webroute is het best voor gesprek, lange antwoorden, subagents, compactie en elke beurt waarin het model het
|
|
172
|
+
webmodel moet zijn.
|
|
173
|
+
|
|
174
|
+
**Het hangt af van een website die je niet beheert.** Als de pagina van vorm verandert, moet de plugin mee. Dat is
|
|
175
|
+
de waarschuwing over actieve ontwikkeling bovenaan deze pagina, geen formaliteit.
|
|
176
|
+
|
|
177
|
+
**Het is niet verbonden met DeepSeek.** Het wordt door hen niet goedgekeurd of ondersteund, en het geeft je geen
|
|
178
|
+
rechten op hun dienst. Jouw gebruik van die dienst valt onder hun voorwaarden.
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Configuratie
|
|
183
|
+
|
|
184
|
+
`cordis.patch.yml` stelt in:
|
|
185
|
+
|
|
186
|
+
| sleutel | standaard | betekenis |
|
|
187
|
+
|---|---|---|
|
|
188
|
+
| `port` | `9222` | de debugpoort van de browser |
|
|
189
|
+
| `defaultModel` | `deepseek-chat-search` | gebruikt als een aanroep geen model noemt |
|
|
190
|
+
| `showBrowser` | `true` | of het venster zichtbaar is tijdens het werk |
|
|
191
|
+
|
|
192
|
+
De browser moet een ingelogde `chat.deepseek.com`-sessie hebben. De eerste aanroep start Brave met het
|
|
193
|
+
**Default**-profiel als de poort nog niet open is. Draait Brave al *zonder* debugpoort, dan kan de adapter niet
|
|
194
|
+
koppelen en zegt dat duidelijk in plaats van stil te falen.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Opbouw
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
index.js de adapter: harness StreamChunk ←→ engine
|
|
202
|
+
lib/engine.mjs browser + pagina: typen, sturen, streamen, laten rusten
|
|
203
|
+
lib/cdp.mjs Chrome DevTools Protocol-client, geen afhankelijkheden
|
|
204
|
+
lib/prompt.mjs vlakt berichten + tools af tot één bericht; haalt tool-aanroepen uit het antwoord
|
|
205
|
+
lib/savings.mjs wat de webroute je bespaarde, geprijsd tegen de API
|
|
206
|
+
lib/i18n.mjs 51 talen voor het paneel
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**Geen afhankelijkheden.** Node 24 heeft globale `WebSocket` en `fetch`, en dat is alles wat CDP nodig heeft,
|
|
210
|
+
dus de tokenstroom verlaat nooit het hostproces en er is geen IPC-sprong per delta.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Steun
|
|
215
|
+
|
|
216
|
+
Uncle Sam bestaat zodat je stopt met betalen per token. Als het je geld heeft bespaard en je de volgende op
|
|
217
|
+
hardware wilt zien die niet halverwege zonder geheugen komt te zitten:
|
|
218
|
+
|
|
219
|
+
**[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
|
|
220
|
+
|
|
221
|
+
Een ster op de repository of een bruikbare bugmelding is net zoveel waard.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Licentie
|
|
226
|
+
|
|
227
|
+
**CC BY-NC-ND 4.0** — Creative Commons Naamsvermelding-NietCommercieel-GeenAfgeleiden 4.0 Internationaal.
|
|
228
|
+
Copyright (c) 2026 Darren T. Weldon, gepubliceerd onder de naam Operating Tag.
|
|
229
|
+
|
|
230
|
+
**De hele afspraak in één regel: installeer het en gebruik het persoonlijk, gratis. Wijzig het niet, deel het
|
|
231
|
+
niet, verkoop het niet en gebruik het niet in een bedrijf.**
|
|
232
|
+
|
|
233
|
+
Dat is geen open source, en het doet niet alsof.
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
je mag het installeren en draaien · het persoonlijk, niet-commercieel gebruiken
|
|
237
|
+
de broncode lezen om het te begrijpen
|
|
238
|
+
|
|
239
|
+
je mag niet het wijzigen, aanpassen of er een afgeleid werk van maken
|
|
240
|
+
het kopiëren, verspreiden, publiceren, spiegelen of
|
|
241
|
+
aan iemand anders beschikbaar stellen
|
|
242
|
+
het uploaden naar welke codehost, registry, website, forum of chat dan ook
|
|
243
|
+
het verkopen, doorverkopen, verhuren of er geld voor vragen of voor toegang
|
|
244
|
+
het opnemen in iets dat je aan iemand anders levert
|
|
245
|
+
het gebruiken voor enig commercieel doel of in het kader van een bedrijfsactiviteit
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**De enige twee legitieme bronnen zijn deze repository en het npm-pakket
|
|
249
|
+
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam).** Een kopie van
|
|
250
|
+
ergens anders is niet gelicentieerd, wie hem ook heeft geleverd. Zie je deze software te koop, dan verkoopt niet de
|
|
251
|
+
auteur hem.
|
|
252
|
+
|
|
253
|
+
**Commercieel gebruik, en het recht om te wijzigen en te verspreiden, zijn beschikbaar onder een aparte
|
|
254
|
+
schriftelijke licentie.** Vraag Operating Tag en je krijgt een duidelijk antwoord en een duidelijke prijs.
|
|
255
|
+
|
|
256
|
+
Het bestand [LICENSE](LICENSE) is bindend, en het begint met dezelfde samenvatting in eenvoudig Engels.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
Uncle Sam is een onafhankelijke plugin. Niet verbonden met DeepSeek, door hen niet goedgekeurd of ondersteund.
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
@operatingtag/dsh-unclesam v1.0.1
|
|
264
|
+
Auteur Operating Tag
|
|
265
|
+
Licentie CC BY-NC-ND 4.0 — vrij om te gebruiken, niet om te wijzigen, delen of verkopen
|
|
266
|
+
```
|