[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) · [ไทย](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（山姆大叔）

**一个 DeepSeek Harness 提供方：不用按量计费的 API，而是通过你自己的浏览器、用你已有的网页账号来回答。**

**在真实浏览器里操作 chat.deepseek.com 的 DeepSeek Harness 插件 —— DeepSeek API 的免费替代方案。用你自己的账号聊天、DeepThink 和网页搜索，不需要 API Key，不按 token 计费。**

**☕ [请我喝杯咖啡](https://revolut.me/operatingtag)** — 一个人、在夜里、没有任何资助地写出来。没有别的收入来源。一个星标或一份有用的缺陷报告，价值是一样的。

> **这个产品仍在持续开发中。请预期有 bug。**
>
> 它能跑、很快，也已经每天用了好几周 —— 但它一直在变，而且浏览器这条路依赖一个会在毫无预告的情况下
> 改动的网站。如果哪里坏了，一张截图加版本号，比一段描述有用得多。如果你要依赖它，就固定一个版本。

```
提供方    deepseek-web
模型      deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
成本      每个 token 零费用 —— 用的是你浏览器里已经开着的那个订阅
状态      开发中 —— 请预期有 bug
实测      首个 token 约 1.9 秒 · 额外开销约 0.6 秒 · 一整轮约 2.5 秒
```

网页路线的回答会带 **🔴 Uncle Sam** 署名。这个名字是个玩笑，不是声明：它标记的是哪条路线回答的，而 API
的回答完全没有署名。你永远知道是谁回答的。

---

## 它替你省下什么

API 按 token 计费，网页版不计费。这个插件把 `deepseek-web` 注册成模型提供方，每次调用都在真实浏览器里
操作 `chat.deepseek.com` 来回答 —— 页面干活，浏览器保存会话，没有任何东西被计量。

| | API 路线 | 网页路线 |
|---|---|---|
| 成本 | 按 token，永远 | 订阅之外不再花钱 |
| 速度 | 快 | 每轮约 2.5 秒（实测） |
| 工具调用 | 原生、可靠 | 模拟实现，能用但更弱 |
| 依赖 | API | 一个会毫无预告就变动的网站 |

**两条路线都会留着。** 模型选择器就是开关：平时用便宜的那条，需要可靠工具调用的任务再切到 API。

---

## 安装

Uncle Sam 是 **DeepSeek Harness 的插件**。在 Harness 之外它什么都不做，因为它注册的是一个模型提供方、一条
宿主路由和两处界面插槽。

**要求**

| | |
|---|---|
| DeepSeek Harness | 任意带有插件管理器的近期版本 |
| 浏览器 | 推荐 Brave；没有 Brave 时自动使用 Edge |
| Node | 22 或更新 |

**从 npm 安装**

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

**从这个仓库安装**

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

然后把这行加进你的配置文件，让 Harness 加载它：

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

**或者从文件夹安装：** 设置 → 插件 → 从本地路径安装，指向包含 `package.json` 的那个文件夹。

### 首次运行

点 **登录 / 打开对话**。浏览器会打开并**保持可见**，直到你在 chat.deepseek.com 登录完成。之后它会自己
最小化，你不会再看到它。会话保存在你的浏览器配置里，所以**插件不保存任何密码** —— 没有可泄露的东西。

随后你应该看到：

1. **设置 → Uncle Sam** —— 一个带状态行和登录按钮的页面。
2. **输入框下方** —— `● DeepSeek Harness` 或 `● Uncle Sam`，点击切换。
3. **模型列表** —— API 模型旁边的四个 `(web)` 模型。

### 卸载

设置 → 插件 → Uncle Sam → 卸载。除了你登录用的那个浏览器配置之外，不写任何东西。

---

## API / 网页 开关

**模型选择器就是开关。** 没有第二个控件，因为一个也要选择模型的第二控件，等于同一个决定有两个真相来源。

| 选择这个模型 | 路线 | DeepThink | 搜索 |
|---|---|---|---|
| `DeepSeek Chat (web)` | 浏览器 | 关 | 关 |
| `DeepSeek Chat + Search (web)` | 浏览器 | 关 | **开** |
| `DeepSeek Reasoner (web)` | 浏览器 | **开** | 关 |
| `DeepSeek Reasoner + Search (web)` | 浏览器 | **开** | **开** |
| 任何不带 `(web)` 的模型 | API | — | — |

模型名旁边会显示 **WEB** 或 **API** 徽标，一眼就能看出当前走哪条路线。识别不了名字时，徽标什么都不显示
而不是去猜 —— 错误的徽标比没有徽标更糟。

你的选择在重启后仍然保留。**DeepThink** 是推理那一遍；**搜索** 让它去读实时网络。

### 搜索在对话里看得见

用搜索模型时，一轮会产生**两个块** —— 搜索用的查询、找到的来源，然后是用了它们的回答：

```
网页搜索 — “今天有什么科技新闻标题？”
来源 (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
链接: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
```

页面不会公开它内部输入的查询，所以引用的查询就是触发搜索的那条消息。来源和链接是在回答稳定之后从页面上
读出来的。因为来源只在最后才存在，**搜索轮会把内容攒起来一次性输出，而不是流式输出**；普通轮仍然一个
token 一个 token 地流。

---

## 为什么用浏览器，而不是它们自己的 HTTP API

最直接的办法 —— 直接调 `chat.deepseek.com` 自己的 API —— 试过，放弃了。这个网站让每条消息都要过两道闸：

| 闸 | 含义 |
|---|---|
| `/api/v0/chat/create_pow_challenge` | 每条消息一次**工作量证明** |
| `challenges.cloudflare.com/turnstile` | 源站上的机器人校验 |

重新实现其中任何一个都是必输的：它们是混淆的，会变，而变化之后失败的样子跟网络故障一模一样。
**页面本身已经为自己的请求解决了这两道闸。**

所以适配器从来不跟网站讲 HTTP。它去驱动页面，其余交给页面。认证、工作量证明和 Turnstile 不再是我们的
问题，也不会脱离网站本身单独坏掉。

**已核实：** 对网站发一个普通的 `HEAD` 返回 `403`；走浏览器这条路则返回真正的回答。

---

## 老实说明的限制

**工具调用是模拟的。** 网页对话没有结构化的工具通道，所以工具是写在提示词里描述的，一次调用是从回答里
解析出一个 JSON 对象恢复出来的。它管用 —— 已核实 —— 但比原生工具调用弱：一个不理会指令的模型会用散文
回答，那一轮 Harness 就完全看不到工具使用。**重型智能体作业，API 路线更可靠。** 网页路线最适合对话、长
回答、子代理、上下文压缩，以及任何"必须以网页模型作答"的轮次。

**它依赖一个你控制不了的网站。** 页面形变，插件就必须跟着变。这就是本页顶部那条开发中的警告，不是客套。

**它与 DeepSeek 无关。** 没有他们的背书也没有他们的支持，也不给你任何针对他们服务的权利。你对该服务的
使用由他们的条款管。

---

## 配置

`cordis.patch.yml` 里设置：

| 键 | 默认值 | 含义 |
|---|---|---|
| `port` | `9222` | 浏览器的调试端口 |
| `defaultModel` | `deepseek-chat-search` | 调用没指定模型时使用 |
| `showBrowser` | `true` | 工作时窗口是否可见 |

浏览器里必须有一个已登录的 `chat.deepseek.com` 会话。第一次调用时如果端口没开，它会用 **Default** 配置
启动 Brave。如果 Brave 已经在运行但*没有*调试端口，适配器无法连接，会明确说明，而不是默默失败。

---

## 结构

```
index.js          适配器：Harness 的 StreamChunk  ←→  引擎
lib/engine.mjs    浏览器 + 页面：输入、发送、流式读取、等待稳定
lib/cdp.mjs       Chrome DevTools Protocol 客户端，零依赖
lib/prompt.mjs    把消息和工具压平为一条消息；从回答里恢复工具调用
lib/savings.mjs   按 API 价格折算网页路线帮你省了多少
lib/i18n.mjs      面板用的 51 种语言
```

**没有任何依赖。** Node 24 自带 `WebSocket` 和 `fetch`，CDP 需要的就这些，所以 token 流从不离开宿主机
进程，每个增量也没有一次 IPC 往返。

---

## 支持

Uncle Sam 的存在就是为了让你不再按 token 付钱。如果它替你省了钱，而你也想看到下一个版本建在不会做到一半
就内存不够的硬件上：

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

给仓库点个星标，或者报一个有用的 bug，价值是一样的。

---

## 许可

**CC BY-NC-ND 4.0** —— 知识共享 署名-非商业性使用-禁止演绎 4.0 国际。
Copyright (c) 2026 Darren T. Weldon，以 Operating Tag 名义发布。

**一句话说清全部约定：个人使用，免费安装、免费使用。不要改、不要传、不要卖、不要在公司里用。**

这不是开源，它也不假装是。

```
可以        安装并运行 · 个人、非商业地使用
           阅读源码以理解它

不可以      修改、改编，或创作衍生作品
           复制、分发、发布、镜像，或以任何方式提供给他人
           上传到任何代码托管、注册表、网站、论坛或聊天
           出售、转售、出租，或对本体或对它的访问收费
           打包进任何你交付给别人的东西里
           用于任何商业目的，或在经营活动中使用
```

**唯一两个正当来源是本仓库和 npm 包
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam)。** 从别处拿到的
副本都没有授权，不管是谁给你的。如果你看到这个软件在卖，卖的人不是作者。

**商业使用，以及修改和分发的权利，另行提供书面许可。** 问 Operating Tag，你会得到一个明确的答复和一个
明确的价格。

以 [LICENSE](LICENSE) 文件为准，它的开头是用浅白英文写的同样内容。

---

Uncle Sam 是一个独立插件。与 DeepSeek 无关联，未获其背书，也未获其支持。

```
@operatingtag/dsh-unclesam   v1.3.5
作者      Operating Tag
许可      CC BY-NC-ND 4.0 —— 可免费使用，不可修改、共享或出售
```
