[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.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) · [ไทย](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

**課金される API の代わりに、すでにお使いの Web アカウントを使って、あなた自身のブラウザ経由で応答する DeepSeek Harness 用プロバイダーです。**

**実際のブラウザで chat.deepseek.com を操作する DeepSeek Harness プラグイン。DeepSeek API の無料代替です。API キーもトークン課金もなしで、自分のアカウントでチャット・DeepThink・ウェブ検索。**

**☕ [コーヒーをおごってください](https://revolut.me/operatingtag)** — ひとりが夜に、資金もなく書いています。ほかに収益源はありません。スターや不具合の報告も同じくらい嬉しいものです。

> **この製品は現在も開発を続けています。不具合はあるものと思ってください。**
>
> 動作し、速く、何週間も毎日使われていますが、常に変わっていきますし、ブラウザ経由の経路は予告なく
> 変わる Web サイトに依存しています。壊れたときは、説明よりもスクリーンショットとバージョン番号の
> ほうが役に立ちます。依存するならバージョンを固定してください。

```
プロバイダー  deepseek-web
モデル        deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
コスト        トークンあたり 0 円 — ブラウザで開いているサブスクリプションを使います
状態          開発中 — 不具合はあるものと思ってください
実測          最初のトークンまで約 1.9 秒 · オーバーヘッド約 0.6 秒 · 1 ターン約 2.5 秒
```

Web 経由の応答には **🔴 Uncle Sam** の署名が付きます。これは冗談の名前で、主張ではありません。どちらの
経路が答えたかを示す印であり、API の応答には署名が一切ありません。どちらが答えたかは常に分かります。

---

## 何を節約できるか

API はトークン単位で課金されます。Web 版は課金されません。このプラグインは `deepseek-web` をモデル
プロバイダーとして登録し、実際のブラウザで `chat.deepseek.com` を操作して応答します。作業はページが
行い、セッションはブラウザが保持し、何も計測されません。

| | API 経路 | Web 経路 |
|---|---|---|
| コスト | トークン単位でずっと | サブスクリプション以外は無料 |
| 速度 | 速い | 1 ターン約 2.5 秒（実測） |
| ツール呼び出し | ネイティブで確実 | エミュレート、動くが弱い |
| 依存先 | API | 予告なく変わる Web サイト |

**両方の経路が入ったまま残ります。** 切り替えはモデル選択そのものです。ふだんは安いほうを使い、確実な
ツール操作が要る作業だけ API に切り替えられます。

---

## インストール

Uncle Sam は **DeepSeek Harness のプラグイン**です。モデルプロバイダー、ホストのルート、UI の 2 つの
スロットを登録するため、Harness の外では何もしません。

**必要なもの**

| | |
|---|---|
| DeepSeek Harness | プラグインマネージャー付きの新しいビルド |
| ブラウザ | 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 が読み込むようにプロフィールへ 1 行追加します。

```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 のモデルの隣に 4 つの `(web)` モデル。

### 削除する

設定 → プラグイン → Uncle Sam → アンインストール。サインインしたブラウザのプロフィール以外には何も
書き込まれません。

---

## API / Web の切り替え

**モデル選択がそのままスイッチです。** 2 つ目の操作系はありません。モデルも選ぶ 2 つ目の操作系は、
1 つの判断に対して 2 つの正解を持つことになるからです。

| このモデルを選ぶ | 経路 | DeepThink | 検索 |
|---|---|---|---|
| `DeepSeek Chat (web)` | ブラウザ | オフ | オフ |
| `DeepSeek Chat + Search (web)` | ブラウザ | オフ | **オン** |
| `DeepSeek Reasoner (web)` | ブラウザ | **オン** | オフ |
| `DeepSeek Reasoner + Search (web)` | ブラウザ | **オン** | **オン** |
| `(web)` の付かないモデル | API | — | — |

モデル名の横に **WEB** または **API** のバッジが出るので、いまどちらの経路かが一目で分かります。名前を
認識できないときは、推測せずに何も表示しません。間違ったバッジは、バッジが無いより悪いからです。

選択は再起動しても残ります。**DeepThink** は推論のパス、**検索** は Web を読ませる機能です。

### 検索は会話に表示されます

検索モデルでは 1 ターンで**2 つのブロック**が出ます。検索したクエリ、見つけた出典、そしてそれを使った
回答です。

```
Web 検索 — 「今日のテクノロジーニュースの見出しは？」
出典 (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
リンク: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
```

ページは内部で入力したクエリを公開しないため、引用されるクエリは検索を起こしたメッセージそのものです。
出典とリンクは回答が落ち着いてからページから読み取ります。出典は最後にしか存在しないので、**検索ターンは
ストリームせずまとめて出力**します。通常のターンは今まで通りトークン単位で流れます。

---

## なぜブラウザなのか、なぜ自前の HTTP API ではないのか

素直な方法 — `chat.deepseek.com` 自身の API を呼ぶ — は試してやめました。このサイトはすべてのメッセージ
に 2 つの関門を課します。

| 関門 | 意味 |
|---|---|
| `/api/v0/chat/create_pow_challenge` | メッセージごとの**プルーフ・オブ・ワーク** |
| `challenges.cloudflare.com/turnstile` | オリジン側のボット対策 |

どちらかを再実装するのは負け戦です。難読化されていて、変わり、変わったときの失敗はネットワーク障害と
まったく同じに見えます。**ページ自身はそのどちらも自分のリクエストのために解決済みです。**

そこでアダプターはサイトと HTTP で話しません。ページを操作し、あとはページに任せます。認証、プルーフ・
オブ・ワーク、Turnstile はこちらの問題ではなくなり、サイト本体とは独立に壊れることもありません。

**確認済み：** サイトへの単純な `HEAD` は `403` を返し、ブラウザ経由の経路は回答を返します。

---

## 正直に書く制限

**ツール呼び出しはエミュレートです。** Web チャットには構造化されたツールの経路がありません。ツールは
プロンプトに文章で書き、呼び出しは応答から JSON を抜き出して復元します。動きます — 確認済みです — が、
ネイティブのツール呼び出しより弱いです。指示を無視したモデルは文章で答えてしまい、そのターン Harness は
ツール利用をまったく見ません。**重いエージェント作業には API 経路のほうが確実です。** Web 経路は会話、
長い回答、サブエージェント、圧縮、そしてモデルが Web モデルでなければならないターンに向いています。

**あなたが制御できない Web サイトに依存します。** ページの形が変われば、プラグインも変わらなければ
なりません。これはこのページ冒頭の開発中の警告であって、飾りではありません。

**DeepSeek とは関係ありません。** 彼らによる承認も支援もなく、彼らのサービスに対する権利も与えません。
そのサービスの利用は彼らの規約に従います。

---

## 設定

`cordis.patch.yml` で設定します。

| キー | 既定値 | 意味 |
|---|---|---|
| `port` | `9222` | ブラウザのデバッグポート |
| `defaultModel` | `deepseek-chat-search` | 呼び出しがモデルを指定しないときに使う |
| `showBrowser` | `true` | 作業中にウィンドウを表示するか |

ブラウザには `chat.deepseek.com` のサインイン済みセッションが必要です。最初の呼び出しのとき、ポートが
まだ開いていなければ Brave を **Default** プロフィールで起動します。Brave がデバッグポート*なし*で
すでに動いている場合はアダプターが接続できず、黙って失敗せずにその旨をはっきり伝えます。

---

## 構成

```
index.js          Harness の StreamChunk ←→ エンジン のアダプター
lib/engine.mjs    ブラウザとページ：入力、送信、ストリーム、落ち着き待ち
lib/cdp.mjs       Chrome DevTools Protocol クライアント、依存ゼロ
lib/prompt.mjs    メッセージとツールを 1 通にまとめ、応答からツール呼び出しを復元
lib/savings.mjs   Web 経路で浮いた額を 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** — クリエイティブ・コモンズ 表示-非営利-改変禁止 4.0 国際。
Copyright (c) 2026 Darren T. Weldon、Operating Tag 名義で公開。

**ひとことで言えば：個人的に、無料でインストールして使えます。変更しない、共有しない、売らない、企業で
使わない。**

これはオープンソースではありませんし、そう装いもしません。

```
できること   インストールして実行する · 個人的に非営利で使う
             理解のためにソースを読む

できないこと  改変・翻案・二次的著作物の作成
             複製・配布・公開・ミラー・誰かに利用可能にすること
             コードホスティング、レジストリ、Web サイト、フォーラム、
             チャットのいずれかへのアップロード
             販売・転売・貸与、および本体やアクセスに対する課金
             他者に提供するものへの組み込み
             商業目的、または事業活動のなかでの使用
```

**正規に入手できるのは、このリポジトリと npm パッケージ
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam) の 2 か所だけ
です。** ほかから入手したコピーは、誰が渡したものであってもライセンスされていません。このソフトが売られて
いたら、売っているのは作者ではありません。

**商用利用、および改変・配布の権利は、別途の書面ライセンスで提供します。** Operating Tag に問い合わせて
いただければ、はっきりした答えとはっきりした価格をお伝えします。

効力を持つのは [LICENSE](LICENSE) ファイルで、その冒頭に同じ内容が平易な英語で書かれています。

---

Uncle Sam は独立したプラグインです。DeepSeek とは関係がなく、承認も支援も受けていません。

```
@operatingtag/dsh-unclesam   v1.3.5
作者      Operating Tag
ライセンス  CC BY-NC-ND 4.0 — 使用は自由、変更・共有・販売は不可
```
