@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.
Files changed (83) hide show
  1. package/CHANGELOG.md +928 -0
  2. package/LICENSE +144 -0
  3. package/README.de.md +274 -0
  4. package/README.es.md +268 -0
  5. package/README.fr.md +272 -0
  6. package/README.hi.md +263 -0
  7. package/README.id.md +264 -0
  8. package/README.it.md +268 -0
  9. package/README.ja.md +263 -0
  10. package/README.ko.md +258 -0
  11. package/README.md +260 -2
  12. package/README.nl.md +266 -0
  13. package/README.pl.md +266 -0
  14. package/README.pt.md +265 -0
  15. package/README.ru.md +269 -0
  16. package/README.tr.md +265 -0
  17. package/README.uk.md +265 -0
  18. package/README.vi.md +263 -0
  19. package/README.zh.md +248 -0
  20. package/client.js +1099 -0
  21. package/cordis.patch.yml +48 -0
  22. package/icon.svg +17 -0
  23. package/index.js +1414 -0
  24. package/install.cmd +43 -0
  25. package/install.ps1 +311 -0
  26. package/lib/cdp.mjs +247 -0
  27. package/lib/engine.mjs +1412 -0
  28. package/lib/i18n.mjs +141 -0
  29. package/lib/prefs.mjs +101 -0
  30. package/lib/prompt.mjs +498 -0
  31. package/lib/savings.mjs +131 -0
  32. package/locale/ar.json +98 -0
  33. package/locale/az.json +98 -0
  34. package/locale/bg.json +98 -0
  35. package/locale/bn.json +98 -0
  36. package/locale/cs.json +98 -0
  37. package/locale/da.json +98 -0
  38. package/locale/de.json +98 -0
  39. package/locale/el.json +98 -0
  40. package/locale/en.json +98 -0
  41. package/locale/es.json +98 -0
  42. package/locale/fa.json +98 -0
  43. package/locale/fi.json +98 -0
  44. package/locale/fr.json +98 -0
  45. package/locale/he.json +98 -0
  46. package/locale/hi.json +98 -0
  47. package/locale/hr.json +98 -0
  48. package/locale/hu.json +98 -0
  49. package/locale/id.json +98 -0
  50. package/locale/it.json +98 -0
  51. package/locale/ja.json +98 -0
  52. package/locale/ka.json +98 -0
  53. package/locale/kk.json +98 -0
  54. package/locale/km.json +98 -0
  55. package/locale/ko.json +98 -0
  56. package/locale/lt.json +98 -0
  57. package/locale/mr.json +98 -0
  58. package/locale/ms.json +98 -0
  59. package/locale/my.json +98 -0
  60. package/locale/ne.json +98 -0
  61. package/locale/nl.json +98 -0
  62. package/locale/no.json +98 -0
  63. package/locale/pl.json +98 -0
  64. package/locale/pt.json +98 -0
  65. package/locale/ro.json +98 -0
  66. package/locale/ru.json +98 -0
  67. package/locale/si.json +98 -0
  68. package/locale/sk.json +98 -0
  69. package/locale/sl.json +98 -0
  70. package/locale/sr.json +98 -0
  71. package/locale/sv.json +98 -0
  72. package/locale/sw.json +98 -0
  73. package/locale/ta.json +98 -0
  74. package/locale/te.json +98 -0
  75. package/locale/th.json +98 -0
  76. package/locale/tl.json +98 -0
  77. package/locale/tr.json +98 -0
  78. package/locale/uk.json +98 -0
  79. package/locale/ur.json +98 -0
  80. package/locale/uz.json +98 -0
  81. package/locale/vi.json +98 -0
  82. package/locale/zh.json +98 -0
  83. package/package.json +89 -4
package/README.zh.md ADDED
@@ -0,0 +1,248 @@
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.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
+ **一个 DeepSeek Harness 提供方:不用按量计费的 API,而是通过你自己的浏览器、用你已有的网页账号来回答。**
6
+
7
+ **☕ [请我喝杯咖啡](https://revolut.me/operatingtag)** — 一个人、在夜里、没有任何资助地写出来。没有别的收入来源。一个星标或一份有用的缺陷报告,价值是一样的。
8
+
9
+ > **这个产品仍在持续开发中。请预期有 bug。**
10
+ >
11
+ > 它能跑、很快,也已经每天用了好几周 —— 但它一直在变,而且浏览器这条路依赖一个会在毫无预告的情况下
12
+ > 改动的网站。如果哪里坏了,一张截图加版本号,比一段描述有用得多。如果你要依赖它,就固定一个版本。
13
+
14
+ ```
15
+ 提供方 deepseek-web
16
+ 模型 deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
17
+ 成本 每个 token 零费用 —— 用的是你浏览器里已经开着的那个订阅
18
+ 状态 开发中 —— 请预期有 bug
19
+ 实测 首个 token 约 1.9 秒 · 额外开销约 0.6 秒 · 一整轮约 2.5 秒
20
+ ```
21
+
22
+ 网页路线的回答会带 **🔴 Uncle Sam** 署名。这个名字是个玩笑,不是声明:它标记的是哪条路线回答的,而 API
23
+ 的回答完全没有署名。你永远知道是谁回答的。
24
+
25
+ ---
26
+
27
+ ## 它替你省下什么
28
+
29
+ API 按 token 计费,网页版不计费。这个插件把 `deepseek-web` 注册成模型提供方,每次调用都在真实浏览器里
30
+ 操作 `chat.deepseek.com` 来回答 —— 页面干活,浏览器保存会话,没有任何东西被计量。
31
+
32
+ | | API 路线 | 网页路线 |
33
+ |---|---|---|
34
+ | 成本 | 按 token,永远 | 订阅之外不再花钱 |
35
+ | 速度 | 快 | 每轮约 2.5 秒(实测) |
36
+ | 工具调用 | 原生、可靠 | 模拟实现,能用但更弱 |
37
+ | 依赖 | API | 一个会毫无预告就变动的网站 |
38
+
39
+ **两条路线都会留着。** 模型选择器就是开关:平时用便宜的那条,需要可靠工具调用的任务再切到 API。
40
+
41
+ ---
42
+
43
+ ## 安装
44
+
45
+ Uncle Sam 是 **DeepSeek Harness 的插件**。在 Harness 之外它什么都不做,因为它注册的是一个模型提供方、一条
46
+ 宿主路由和两处界面插槽。
47
+
48
+ **要求**
49
+
50
+ | | |
51
+ |---|---|
52
+ | DeepSeek Harness | 任意带有插件管理器的近期版本 |
53
+ | 浏览器 | 推荐 Brave;没有 Brave 时自动使用 Edge |
54
+ | Node | 22 或更新 |
55
+
56
+ **从 npm 安装**
57
+
58
+ ```bash
59
+ pnpm add @operatingtag/dsh-unclesam
60
+ ```
61
+
62
+ **从这个仓库安装**
63
+
64
+ ```bash
65
+ git clone https://github.com/operatingtag/dsh-unclesam
66
+ cd dsh-unclesam
67
+ pnpm install
68
+ ```
69
+
70
+ 然后把这行加进你的配置文件,让 Harness 加载它:
71
+
72
+ ```yaml
73
+ # cordis.patch.yml
74
+ - insert:
75
+ - id: dsh-unclesam
76
+ name: '@operatingtag/dsh-unclesam'
77
+ config:
78
+ port: 9222
79
+ defaultModel: deepseek-chat-search
80
+ autoMinimise: true
81
+ ```
82
+
83
+ **或者从文件夹安装:** 设置 → 插件 → 从本地路径安装,指向包含 `package.json` 的那个文件夹。
84
+
85
+ ### 首次运行
86
+
87
+ 点 **登录 / 打开对话**。浏览器会打开并**保持可见**,直到你在 chat.deepseek.com 登录完成。之后它会自己
88
+ 最小化,你不会再看到它。会话保存在你的浏览器配置里,所以**插件不保存任何密码** —— 没有可泄露的东西。
89
+
90
+ 随后你应该看到:
91
+
92
+ 1. **设置 → Uncle Sam** —— 一个带状态行和登录按钮的页面。
93
+ 2. **输入框下方** —— `● DeepSeek Harness` 或 `● Uncle Sam`,点击切换。
94
+ 3. **模型列表** —— API 模型旁边的四个 `(web)` 模型。
95
+
96
+ ### 卸载
97
+
98
+ 设置 → 插件 → Uncle Sam → 卸载。除了你登录用的那个浏览器配置之外,不写任何东西。
99
+
100
+ ---
101
+
102
+ ## API / 网页 开关
103
+
104
+ **模型选择器就是开关。** 没有第二个控件,因为一个也要选择模型的第二控件,等于同一个决定有两个真相来源。
105
+
106
+ | 选择这个模型 | 路线 | DeepThink | 搜索 |
107
+ |---|---|---|---|
108
+ | `DeepSeek Chat (web)` | 浏览器 | 关 | 关 |
109
+ | `DeepSeek Chat + Search (web)` | 浏览器 | 关 | **开** |
110
+ | `DeepSeek Reasoner (web)` | 浏览器 | **开** | 关 |
111
+ | `DeepSeek Reasoner + Search (web)` | 浏览器 | **开** | **开** |
112
+ | 任何不带 `(web)` 的模型 | API | — | — |
113
+
114
+ 模型名旁边会显示 **WEB** 或 **API** 徽标,一眼就能看出当前走哪条路线。识别不了名字时,徽标什么都不显示
115
+ 而不是去猜 —— 错误的徽标比没有徽标更糟。
116
+
117
+ 你的选择在重启后仍然保留。**DeepThink** 是推理那一遍;**搜索** 让它去读实时网络。
118
+
119
+ ### 搜索在对话里看得见
120
+
121
+ 用搜索模型时,一轮会产生**两个块** —— 搜索用的查询、找到的来源,然后是用了它们的回答:
122
+
123
+ ```
124
+ 网页搜索 — “今天有什么科技新闻标题?”
125
+ 来源 (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
126
+ 链接: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
127
+ ```
128
+
129
+ 页面不会公开它内部输入的查询,所以引用的查询就是触发搜索的那条消息。来源和链接是在回答稳定之后从页面上
130
+ 读出来的。因为来源只在最后才存在,**搜索轮会把内容攒起来一次性输出,而不是流式输出**;普通轮仍然一个
131
+ token 一个 token 地流。
132
+
133
+ ---
134
+
135
+ ## 为什么用浏览器,而不是它们自己的 HTTP API
136
+
137
+ 最直接的办法 —— 直接调 `chat.deepseek.com` 自己的 API —— 试过,放弃了。这个网站让每条消息都要过两道闸:
138
+
139
+ | 闸 | 含义 |
140
+ |---|---|
141
+ | `/api/v0/chat/create_pow_challenge` | 每条消息一次**工作量证明** |
142
+ | `challenges.cloudflare.com/turnstile` | 源站上的机器人校验 |
143
+
144
+ 重新实现其中任何一个都是必输的:它们是混淆的,会变,而变化之后失败的样子跟网络故障一模一样。
145
+ **页面本身已经为自己的请求解决了这两道闸。**
146
+
147
+ 所以适配器从来不跟网站讲 HTTP。它去驱动页面,其余交给页面。认证、工作量证明和 Turnstile 不再是我们的
148
+ 问题,也不会脱离网站本身单独坏掉。
149
+
150
+ **已核实:** 对网站发一个普通的 `HEAD` 返回 `403`;走浏览器这条路则返回真正的回答。
151
+
152
+ ---
153
+
154
+ ## 老实说明的限制
155
+
156
+ **工具调用是模拟的。** 网页对话没有结构化的工具通道,所以工具是写在提示词里描述的,一次调用是从回答里
157
+ 解析出一个 JSON 对象恢复出来的。它管用 —— 已核实 —— 但比原生工具调用弱:一个不理会指令的模型会用散文
158
+ 回答,那一轮 Harness 就完全看不到工具使用。**重型智能体作业,API 路线更可靠。** 网页路线最适合对话、长
159
+ 回答、子代理、上下文压缩,以及任何"必须以网页模型作答"的轮次。
160
+
161
+ **它依赖一个你控制不了的网站。** 页面形变,插件就必须跟着变。这就是本页顶部那条开发中的警告,不是客套。
162
+
163
+ **它与 DeepSeek 无关。** 没有他们的背书也没有他们的支持,也不给你任何针对他们服务的权利。你对该服务的
164
+ 使用由他们的条款管。
165
+
166
+ ---
167
+
168
+ ## 配置
169
+
170
+ `cordis.patch.yml` 里设置:
171
+
172
+ | 键 | 默认值 | 含义 |
173
+ |---|---|---|
174
+ | `port` | `9222` | 浏览器的调试端口 |
175
+ | `defaultModel` | `deepseek-chat-search` | 调用没指定模型时使用 |
176
+ | `showBrowser` | `true` | 工作时窗口是否可见 |
177
+
178
+ 浏览器里必须有一个已登录的 `chat.deepseek.com` 会话。第一次调用时如果端口没开,它会用 **Default** 配置
179
+ 启动 Brave。如果 Brave 已经在运行但*没有*调试端口,适配器无法连接,会明确说明,而不是默默失败。
180
+
181
+ ---
182
+
183
+ ## 结构
184
+
185
+ ```
186
+ index.js 适配器:Harness 的 StreamChunk ←→ 引擎
187
+ lib/engine.mjs 浏览器 + 页面:输入、发送、流式读取、等待稳定
188
+ lib/cdp.mjs Chrome DevTools Protocol 客户端,零依赖
189
+ lib/prompt.mjs 把消息和工具压平为一条消息;从回答里恢复工具调用
190
+ lib/savings.mjs 按 API 价格折算网页路线帮你省了多少
191
+ lib/i18n.mjs 面板用的 51 种语言
192
+ ```
193
+
194
+ **没有任何依赖。** Node 24 自带 `WebSocket` 和 `fetch`,CDP 需要的就这些,所以 token 流从不离开宿主机
195
+ 进程,每个增量也没有一次 IPC 往返。
196
+
197
+ ---
198
+
199
+ ## 支持
200
+
201
+ Uncle Sam 的存在就是为了让你不再按 token 付钱。如果它替你省了钱,而你也想看到下一个版本建在不会做到一半
202
+ 就内存不够的硬件上:
203
+
204
+ **[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
205
+
206
+ 给仓库点个星标,或者报一个有用的 bug,价值是一样的。
207
+
208
+ ---
209
+
210
+ ## 许可
211
+
212
+ **CC BY-NC-ND 4.0** —— 知识共享 署名-非商业性使用-禁止演绎 4.0 国际。
213
+ Copyright (c) 2026 Darren T. Weldon,以 Operating Tag 名义发布。
214
+
215
+ **一句话说清全部约定:个人使用,免费安装、免费使用。不要改、不要传、不要卖、不要在公司里用。**
216
+
217
+ 这不是开源,它也不假装是。
218
+
219
+ ```
220
+ 可以 安装并运行 · 个人、非商业地使用
221
+ 阅读源码以理解它
222
+
223
+ 不可以 修改、改编,或创作衍生作品
224
+ 复制、分发、发布、镜像,或以任何方式提供给他人
225
+ 上传到任何代码托管、注册表、网站、论坛或聊天
226
+ 出售、转售、出租,或对本体或对它的访问收费
227
+ 打包进任何你交付给别人的东西里
228
+ 用于任何商业目的,或在经营活动中使用
229
+ ```
230
+
231
+ **唯一两个正当来源是本仓库和 npm 包
232
+ [`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam)。** 从别处拿到的
233
+ 副本都没有授权,不管是谁给你的。如果你看到这个软件在卖,卖的人不是作者。
234
+
235
+ **商业使用,以及修改和分发的权利,另行提供书面许可。** 问 Operating Tag,你会得到一个明确的答复和一个
236
+ 明确的价格。
237
+
238
+ 以 [LICENSE](LICENSE) 文件为准,它的开头是用浅白英文写的同样内容。
239
+
240
+ ---
241
+
242
+ Uncle Sam 是一个独立插件。与 DeepSeek 无关联,未获其背书,也未获其支持。
243
+
244
+ ```
245
+ @operatingtag/dsh-unclesam v1.0.1
246
+ 作者 Operating Tag
247
+ 许可 CC BY-NC-ND 4.0 —— 可免费使用,不可修改、共享或出售
248
+ ```