[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) · **Русский** · [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.**

**Плагин DeepSeek Harness, который управляет chat.deepseek.com в настоящем браузере — бесплатная альтернатива API DeepSeek. Чат, DeepThink и веб-поиск на своём аккаунте: без ключа API и без оплаты за токены.**

**☕ [Угостите меня кофе](https://revolut.me/operatingtag)** — пишет один человек, ночью, без финансирования. Другой модели дохода нет. Звезда на репозитории или полезный отчёт об ошибке стоит столько же.

> **Продукт находится в активной разработке. Ожидайте ошибок.**
>
> Он работает, он быстрый и им пользуются каждый день уже несколько недель — но он постоянно меняется, а
> браузерный путь зависит от сайта, который меняется без предупреждения. Если что-то сломалось, скриншот и
> номер версии полезнее описания. Закрепите версию, если вы от него зависите.

```
провайдер    deepseek-web
модели       deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
цена         ноль за токен — используется подписка, уже открытая в вашем браузере
состояние    в разработке — ожидайте ошибок
измерено     первый токен ~1,9 с · накладные ~0,6 с · полный ход ~2,5 с
```

Ответы веб-пути подписаны **🔴 Uncle Sam**. Это имя — шутка, а не заявление: оно отмечает, какой путь
ответил, а ответы API вообще без подписи. Вы всегда знаете, кто вам ответил.

---

## Что это экономит

API берёт деньги за токены. Веб-продукт — нет. Плагин регистрирует `deepseek-web` как провайдера моделей и
отвечает на каждый вызов, управляя `chat.deepseek.com` в настоящем браузере: работу делает страница, сеанс
держит браузер, и ничего не тарифицируется.

| | Путь API | Веб-путь |
|---|---|---|
| Цена | за токен, всегда | ничего сверх подписки |
| Скорость | быстро | ~2,5 с на ход, измерено |
| Вызов инструментов | нативный и надёжный | эмуляция: работает, но слабее |
| Зависит от | API | сайта, который меняется без предупреждения |

**Оба пути остаются установленными.** Переключатель — это выбор модели: по умолчанию дешёвый путь, а к API
обращаетесь, когда задаче нужны надёжные инструменты.

---

## Установка

Uncle Sam — **плагин DeepSeek Harness**. Вне Harness он ничего не делает: он регистрирует провайдера моделей,
маршрут на хосте и два места в интерфейсе.

**Требования**

| | |
|---|---|
| DeepSeek Harness | любая свежая сборка с менеджером плагинов |
| Браузер | рекомендуется Brave; Edge используется автоматически, если Brave нет |
| 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. **Список моделей** — четыре модели `(web)` рядом с моделями API.

### Удаление

Настройки → Плагины → 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_...
```

Страница не раскрывает запрос, который ввела внутри себя, поэтому цитируемый запрос — это сообщение,
запустившее поиск. Источники и ссылки считываются со страницы, когда ответ устоялся. Поскольку источники
существуют только в конце, **ходы с поиском буферизуются, а не транслируются**; обычные ходы по-прежнему
идут токен за токеном.

---

## Почему браузер, а не их HTTP API

Очевидный путь — вызывать собственный API `chat.deepseek.com` — был испробован и отброшен. Сайт заставляет
каждое сообщение пройти двое ворот:

| Ворота | Что это значит |
|---|---|
| `/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`. Первый вызов запускает Brave с профилем
**Default**, если порт ещё не открыт. Если Brave уже работает *без* порта отладки, адаптер не может
подключиться и прямо об этом сообщает, а не падает молча.

---

## Устройство

```
index.js          адаптер: StreamChunk Harness  ←→  движок
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 ничего не нужно,
поэтому поток токенов никогда не покидает процесс хоста и на каждую дельту нет перехода через IPC.

---

## Поддержка

Uncle Sam существует, чтобы вы перестали платить за токены. Если он сэкономил вам деньги и вам хотелось бы
увидеть следующий на железе, которое не кончается память на полпути:

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

Звезда на репозитории или полезный отчёт об ошибке стоит столько же.

---

## Лицензия

**CC BY-NC-ND 4.0** — Creative Commons «Атрибуция — Некоммерческое использование — Без производных» 4.0
International. 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 — бесплатно для использования, не для изменения, передачи или продажи
```
