@operatingtag/dsh-unclesam 1.0.0 → 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 +35 -0
- package/LICENSE +2 -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 +129 -223
- 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/index.js +5 -2
- package/lib/prompt.mjs +24 -44
- package/package.json +18 -2
package/README.ja.md
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
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.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
|
+
|
|
3
|
+
# Uncle Sam
|
|
4
|
+
|
|
5
|
+
**課金される API の代わりに、すでにお使いの Web アカウントを使って、あなた自身のブラウザ経由で応答する DeepSeek Harness 用プロバイダーです。**
|
|
6
|
+
|
|
7
|
+
**☕ [コーヒーをおごってください](https://revolut.me/operatingtag)** — ひとりが夜に、資金もなく書いています。ほかに収益源はありません。スターや不具合の報告も同じくらい嬉しいものです。
|
|
8
|
+
|
|
9
|
+
> **この製品は現在も開発を続けています。不具合はあるものと思ってください。**
|
|
10
|
+
>
|
|
11
|
+
> 動作し、速く、何週間も毎日使われていますが、常に変わっていきますし、ブラウザ経由の経路は予告なく
|
|
12
|
+
> 変わる Web サイトに依存しています。壊れたときは、説明よりもスクリーンショットとバージョン番号の
|
|
13
|
+
> ほうが役に立ちます。依存するならバージョンを固定してください。
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
プロバイダー deepseek-web
|
|
17
|
+
モデル deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
|
|
18
|
+
コスト トークンあたり 0 円 — ブラウザで開いているサブスクリプションを使います
|
|
19
|
+
状態 開発中 — 不具合はあるものと思ってください
|
|
20
|
+
実測 最初のトークンまで約 1.9 秒 · オーバーヘッド約 0.6 秒 · 1 ターン約 2.5 秒
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Web 経由の応答には **🔴 Uncle Sam** の署名が付きます。これは冗談の名前で、主張ではありません。どちらの
|
|
24
|
+
経路が答えたかを示す印であり、API の応答には署名が一切ありません。どちらが答えたかは常に分かります。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 何を節約できるか
|
|
29
|
+
|
|
30
|
+
API はトークン単位で課金されます。Web 版は課金されません。このプラグインは `deepseek-web` をモデル
|
|
31
|
+
プロバイダーとして登録し、実際のブラウザで `chat.deepseek.com` を操作して応答します。作業はページが
|
|
32
|
+
行い、セッションはブラウザが保持し、何も計測されません。
|
|
33
|
+
|
|
34
|
+
| | API 経路 | Web 経路 |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| コスト | トークン単位でずっと | サブスクリプション以外は無料 |
|
|
37
|
+
| 速度 | 速い | 1 ターン約 2.5 秒(実測) |
|
|
38
|
+
| ツール呼び出し | ネイティブで確実 | エミュレート、動くが弱い |
|
|
39
|
+
| 依存先 | API | 予告なく変わる Web サイト |
|
|
40
|
+
|
|
41
|
+
**両方の経路が入ったまま残ります。** 切り替えはモデル選択そのものです。ふだんは安いほうを使い、確実な
|
|
42
|
+
ツール操作が要る作業だけ API に切り替えられます。
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## インストール
|
|
47
|
+
|
|
48
|
+
Uncle Sam は **DeepSeek Harness のプラグイン**です。モデルプロバイダー、ホストのルート、UI の 2 つの
|
|
49
|
+
スロットを登録するため、Harness の外では何もしません。
|
|
50
|
+
|
|
51
|
+
**必要なもの**
|
|
52
|
+
|
|
53
|
+
| | |
|
|
54
|
+
|---|---|
|
|
55
|
+
| DeepSeek Harness | プラグインマネージャー付きの新しいビルド |
|
|
56
|
+
| ブラウザ | Brave 推奨。無ければ Edge を自動で使います |
|
|
57
|
+
| Node | 22 以上 |
|
|
58
|
+
|
|
59
|
+
**npm から**
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
pnpm add @operatingtag/dsh-unclesam
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**このリポジトリから**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
git clone https://github.com/operatingtag/dsh-unclesam
|
|
69
|
+
cd dsh-unclesam
|
|
70
|
+
pnpm install
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
そのうえで、Harness が読み込むようにプロフィールへ 1 行追加します。
|
|
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
|
+
**フォルダから入れる場合:** 設定 → プラグイン → ローカルパスからインストール、`package.json` のある
|
|
87
|
+
フォルダを指定します。
|
|
88
|
+
|
|
89
|
+
### 最初の実行
|
|
90
|
+
|
|
91
|
+
**サインイン / チャットを開く** を押します。chat.deepseek.com でサインインするまでブラウザは**表示された
|
|
92
|
+
まま**になります。その後は自動で最小化され、二度と見えません。セッションはブラウザのプロフィールに
|
|
93
|
+
残るので、**プラグインはパスワードを保存しません**。漏れるものがありません。
|
|
94
|
+
|
|
95
|
+
そのあと次が見えるはずです。
|
|
96
|
+
|
|
97
|
+
1. **設定 → Uncle Sam** — 状態の行とサインインボタンのあるページ。
|
|
98
|
+
2. **入力欄の下** — `● DeepSeek Harness` または `● Uncle Sam`、クリックで切り替え。
|
|
99
|
+
3. **モデル一覧** — API のモデルの隣に 4 つの `(web)` モデル。
|
|
100
|
+
|
|
101
|
+
### 削除する
|
|
102
|
+
|
|
103
|
+
設定 → プラグイン → Uncle Sam → アンインストール。サインインしたブラウザのプロフィール以外には何も
|
|
104
|
+
書き込まれません。
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## API / Web の切り替え
|
|
109
|
+
|
|
110
|
+
**モデル選択がそのままスイッチです。** 2 つ目の操作系はありません。モデルも選ぶ 2 つ目の操作系は、
|
|
111
|
+
1 つの判断に対して 2 つの正解を持つことになるからです。
|
|
112
|
+
|
|
113
|
+
| このモデルを選ぶ | 経路 | DeepThink | 検索 |
|
|
114
|
+
|---|---|---|---|
|
|
115
|
+
| `DeepSeek Chat (web)` | ブラウザ | オフ | オフ |
|
|
116
|
+
| `DeepSeek Chat + Search (web)` | ブラウザ | オフ | **オン** |
|
|
117
|
+
| `DeepSeek Reasoner (web)` | ブラウザ | **オン** | オフ |
|
|
118
|
+
| `DeepSeek Reasoner + Search (web)` | ブラウザ | **オン** | **オン** |
|
|
119
|
+
| `(web)` の付かないモデル | API | — | — |
|
|
120
|
+
|
|
121
|
+
モデル名の横に **WEB** または **API** のバッジが出るので、いまどちらの経路かが一目で分かります。名前を
|
|
122
|
+
認識できないときは、推測せずに何も表示しません。間違ったバッジは、バッジが無いより悪いからです。
|
|
123
|
+
|
|
124
|
+
選択は再起動しても残ります。**DeepThink** は推論のパス、**検索** は Web を読ませる機能です。
|
|
125
|
+
|
|
126
|
+
### 検索は会話に表示されます
|
|
127
|
+
|
|
128
|
+
検索モデルでは 1 ターンで**2 つのブロック**が出ます。検索したクエリ、見つけた出典、そしてそれを使った
|
|
129
|
+
回答です。
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Web 検索 — 「今日のテクノロジーニュースの見出しは?」
|
|
133
|
+
出典 (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
|
|
134
|
+
リンク: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
ページは内部で入力したクエリを公開しないため、引用されるクエリは検索を起こしたメッセージそのものです。
|
|
138
|
+
出典とリンクは回答が落ち着いてからページから読み取ります。出典は最後にしか存在しないので、**検索ターンは
|
|
139
|
+
ストリームせずまとめて出力**します。通常のターンは今まで通りトークン単位で流れます。
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## なぜブラウザなのか、なぜ自前の HTTP API ではないのか
|
|
144
|
+
|
|
145
|
+
素直な方法 — `chat.deepseek.com` 自身の API を呼ぶ — は試してやめました。このサイトはすべてのメッセージ
|
|
146
|
+
に 2 つの関門を課します。
|
|
147
|
+
|
|
148
|
+
| 関門 | 意味 |
|
|
149
|
+
|---|---|
|
|
150
|
+
| `/api/v0/chat/create_pow_challenge` | メッセージごとの**プルーフ・オブ・ワーク** |
|
|
151
|
+
| `challenges.cloudflare.com/turnstile` | オリジン側のボット対策 |
|
|
152
|
+
|
|
153
|
+
どちらかを再実装するのは負け戦です。難読化されていて、変わり、変わったときの失敗はネットワーク障害と
|
|
154
|
+
まったく同じに見えます。**ページ自身はそのどちらも自分のリクエストのために解決済みです。**
|
|
155
|
+
|
|
156
|
+
そこでアダプターはサイトと HTTP で話しません。ページを操作し、あとはページに任せます。認証、プルーフ・
|
|
157
|
+
オブ・ワーク、Turnstile はこちらの問題ではなくなり、サイト本体とは独立に壊れることもありません。
|
|
158
|
+
|
|
159
|
+
**確認済み:** サイトへの単純な `HEAD` は `403` を返し、ブラウザ経由の経路は回答を返します。
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 正直に書く制限
|
|
164
|
+
|
|
165
|
+
**ツール呼び出しはエミュレートです。** Web チャットには構造化されたツールの経路がありません。ツールは
|
|
166
|
+
プロンプトに文章で書き、呼び出しは応答から JSON を抜き出して復元します。動きます — 確認済みです — が、
|
|
167
|
+
ネイティブのツール呼び出しより弱いです。指示を無視したモデルは文章で答えてしまい、そのターン Harness は
|
|
168
|
+
ツール利用をまったく見ません。**重いエージェント作業には API 経路のほうが確実です。** Web 経路は会話、
|
|
169
|
+
長い回答、サブエージェント、圧縮、そしてモデルが Web モデルでなければならないターンに向いています。
|
|
170
|
+
|
|
171
|
+
**あなたが制御できない Web サイトに依存します。** ページの形が変われば、プラグインも変わらなければ
|
|
172
|
+
なりません。これはこのページ冒頭の開発中の警告であって、飾りではありません。
|
|
173
|
+
|
|
174
|
+
**DeepSeek とは関係ありません。** 彼らによる承認も支援もなく、彼らのサービスに対する権利も与えません。
|
|
175
|
+
そのサービスの利用は彼らの規約に従います。
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 設定
|
|
180
|
+
|
|
181
|
+
`cordis.patch.yml` で設定します。
|
|
182
|
+
|
|
183
|
+
| キー | 既定値 | 意味 |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
| `port` | `9222` | ブラウザのデバッグポート |
|
|
186
|
+
| `defaultModel` | `deepseek-chat-search` | 呼び出しがモデルを指定しないときに使う |
|
|
187
|
+
| `showBrowser` | `true` | 作業中にウィンドウを表示するか |
|
|
188
|
+
|
|
189
|
+
ブラウザには `chat.deepseek.com` のサインイン済みセッションが必要です。最初の呼び出しのとき、ポートが
|
|
190
|
+
まだ開いていなければ Brave を **Default** プロフィールで起動します。Brave がデバッグポート*なし*で
|
|
191
|
+
すでに動いている場合はアダプターが接続できず、黙って失敗せずにその旨をはっきり伝えます。
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 構成
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
index.js Harness の StreamChunk ←→ エンジン のアダプター
|
|
199
|
+
lib/engine.mjs ブラウザとページ:入力、送信、ストリーム、落ち着き待ち
|
|
200
|
+
lib/cdp.mjs Chrome DevTools Protocol クライアント、依存ゼロ
|
|
201
|
+
lib/prompt.mjs メッセージとツールを 1 通にまとめ、応答からツール呼び出しを復元
|
|
202
|
+
lib/savings.mjs Web 経路で浮いた額を API 価格で換算
|
|
203
|
+
lib/i18n.mjs パネル用の 51 言語
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
**依存パッケージはありません。** Node 24 は `WebSocket` と `fetch` を標準で持っており、CDP に必要なのは
|
|
207
|
+
それだけです。トークンの流れがホストプロセスから出ることはなく、差分ごとの IPC もありません。
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 支援
|
|
212
|
+
|
|
213
|
+
Uncle Sam は、トークン課金を止めるためにあります。お金の節約になったなら、途中でメモリ不足にならない
|
|
214
|
+
ハードウェアで次を作りたいと思っています。
|
|
215
|
+
|
|
216
|
+
**[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
|
|
217
|
+
|
|
218
|
+
リポジトリへのスターや役に立つ不具合報告も同じくらい嬉しいものです。
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## ライセンス
|
|
223
|
+
|
|
224
|
+
**CC BY-NC-ND 4.0** — クリエイティブ・コモンズ 表示-非営利-改変禁止 4.0 国際。
|
|
225
|
+
Copyright (c) 2026 Darren T. Weldon、Operating Tag 名義で公開。
|
|
226
|
+
|
|
227
|
+
**ひとことで言えば:個人的に、無料でインストールして使えます。変更しない、共有しない、売らない、企業で
|
|
228
|
+
使わない。**
|
|
229
|
+
|
|
230
|
+
これはオープンソースではありませんし、そう装いもしません。
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
できること インストールして実行する · 個人的に非営利で使う
|
|
234
|
+
理解のためにソースを読む
|
|
235
|
+
|
|
236
|
+
できないこと 改変・翻案・二次的著作物の作成
|
|
237
|
+
複製・配布・公開・ミラー・誰かに利用可能にすること
|
|
238
|
+
コードホスティング、レジストリ、Web サイト、フォーラム、
|
|
239
|
+
チャットのいずれかへのアップロード
|
|
240
|
+
販売・転売・貸与、および本体やアクセスに対する課金
|
|
241
|
+
他者に提供するものへの組み込み
|
|
242
|
+
商業目的、または事業活動のなかでの使用
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
**正規に入手できるのは、このリポジトリと npm パッケージ
|
|
246
|
+
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam) の 2 か所だけ
|
|
247
|
+
です。** ほかから入手したコピーは、誰が渡したものであってもライセンスされていません。このソフトが売られて
|
|
248
|
+
いたら、売っているのは作者ではありません。
|
|
249
|
+
|
|
250
|
+
**商用利用、および改変・配布の権利は、別途の書面ライセンスで提供します。** Operating Tag に問い合わせて
|
|
251
|
+
いただければ、はっきりした答えとはっきりした価格をお伝えします。
|
|
252
|
+
|
|
253
|
+
効力を持つのは [LICENSE](LICENSE) ファイルで、その冒頭に同じ内容が平易な英語で書かれています。
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
Uncle Sam は独立したプラグインです。DeepSeek とは関係がなく、承認も支援も受けていません。
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
@operatingtag/dsh-unclesam v1.0.1
|
|
261
|
+
作者 Operating Tag
|
|
262
|
+
ライセンス CC BY-NC-ND 4.0 — 使用は自由、変更・共有・販売は不可
|
|
263
|
+
```
|
package/README.ko.md
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
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.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
|
+
|
|
3
|
+
# Uncle Sam
|
|
4
|
+
|
|
5
|
+
**과금되는 API 대신, 이미 쓰고 있는 웹 계정으로 당신의 브라우저를 통해 응답하는 DeepSeek Harness용 공급자입니다.**
|
|
6
|
+
|
|
7
|
+
**☕ [커피 한 잔 사주세요](https://revolut.me/operatingtag)** — 한 사람이 밤에, 지원 없이 씁니다. 다른 수익 모델은 없습니다. 스타나 쓸모 있는 버그 제보도 똑같이 값집니다.
|
|
8
|
+
|
|
9
|
+
> **이 제품은 계속 개발 중입니다. 버그가 있을 것으로 보세요.**
|
|
10
|
+
>
|
|
11
|
+
> 동작하고, 빠르고, 몇 주째 매일 쓰이고 있지만 계속 바뀌고, 브라우저 경로는 예고 없이 바뀌는 웹사이트에
|
|
12
|
+
> 의존합니다. 뭔가 깨지면 설명보다 스크린샷과 버전 번호가 더 쓸모 있습니다. 의존한다면 버전을 고정하세요.
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
공급자 deepseek-web
|
|
16
|
+
모델 deepseek-chat · deepseek-chat-search · deepseek-reasoner · deepseek-reasoner-search
|
|
17
|
+
비용 토큰당 0원 — 브라우저에 이미 열려 있는 구독을 사용합니다
|
|
18
|
+
상태 개발 중 — 버그가 있을 것으로 보세요
|
|
19
|
+
실측 첫 토큰 약 1.9초 · 오버헤드 약 0.6초 · 한 턴 약 2.5초
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
웹 경로의 응답에는 **🔴 Uncle Sam** 서명이 붙습니다. 이 이름은 농담이지 주장이 아닙니다. 어느 경로가
|
|
23
|
+
답했는지를 표시하는 표식이고, API 응답에는 서명이 전혀 없습니다. 누가 답했는지 항상 알 수 있습니다.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 무엇을 아껴 주는가
|
|
28
|
+
|
|
29
|
+
API는 토큰마다 과금합니다. 웹 제품은 과금하지 않습니다. 이 플러그인은 `deepseek-web`을 모델 공급자로
|
|
30
|
+
등록하고, 실제 브라우저에서 `chat.deepseek.com`을 조작해 모든 호출에 응답합니다. 페이지가 일하고,
|
|
31
|
+
브라우저가 세션을 들고 있고, 아무것도 계량되지 않습니다.
|
|
32
|
+
|
|
33
|
+
| | API 경로 | 웹 경로 |
|
|
34
|
+
|---|---|---|
|
|
35
|
+
| 비용 | 토큰당, 계속 | 구독 외에는 없음 |
|
|
36
|
+
| 속도 | 빠름 | 턴당 약 2.5초(실측) |
|
|
37
|
+
| 도구 호출 | 네이티브이고 안정적 | 에뮬레이션, 되긴 하지만 약함 |
|
|
38
|
+
| 의존 대상 | API | 예고 없이 바뀌는 웹사이트 |
|
|
39
|
+
|
|
40
|
+
**두 경로가 모두 설치된 채 남습니다.** 모델 선택기가 곧 스위치입니다. 평소에는 저렴한 경로를 쓰고, 안정적인
|
|
41
|
+
도구 호출이 필요한 작업에만 API로 넘어가면 됩니다.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 설치
|
|
46
|
+
|
|
47
|
+
Uncle Sam은 **DeepSeek Harness 플러그인**입니다. 모델 공급자, 호스트 라우트, UI 슬롯 두 곳을 등록하기
|
|
48
|
+
때문에 하네스 밖에서는 아무것도 하지 않습니다.
|
|
49
|
+
|
|
50
|
+
**요구 사항**
|
|
51
|
+
|
|
52
|
+
| | |
|
|
53
|
+
|---|---|
|
|
54
|
+
| DeepSeek Harness | 플러그인 관리자가 있는 최근 빌드 |
|
|
55
|
+
| 브라우저 | Brave 권장. 없으면 Edge를 자동으로 사용합니다 |
|
|
56
|
+
| Node | 22 이상 |
|
|
57
|
+
|
|
58
|
+
**npm에서**
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
pnpm add @operatingtag/dsh-unclesam
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**이 저장소에서**
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
git clone https://github.com/operatingtag/dsh-unclesam
|
|
68
|
+
cd dsh-unclesam
|
|
69
|
+
pnpm install
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
그다음 하네스가 읽어 가도록 프로필에 한 줄을 추가합니다.
|
|
73
|
+
|
|
74
|
+
```yaml
|
|
75
|
+
# cordis.patch.yml
|
|
76
|
+
- insert:
|
|
77
|
+
- id: dsh-unclesam
|
|
78
|
+
name: '@operatingtag/dsh-unclesam'
|
|
79
|
+
config:
|
|
80
|
+
port: 9222
|
|
81
|
+
defaultModel: deepseek-chat-search
|
|
82
|
+
autoMinimise: true
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**폴더에서 설치하려면:** 설정 → 플러그인 → 로컬 경로에서 설치, `package.json`이 있는 폴더를 지정합니다.
|
|
86
|
+
|
|
87
|
+
### 첫 실행
|
|
88
|
+
|
|
89
|
+
**로그인 / 채팅 열기**를 누릅니다. chat.deepseek.com에 로그인할 때까지 브라우저가 **보이는 상태로**
|
|
90
|
+
남습니다. 그 뒤로는 스스로 최소화되어 다시 보이지 않습니다. 세션은 브라우저 프로필에 남기 때문에
|
|
91
|
+
**플러그인은 비밀번호를 저장하지 않습니다** — 새어 나갈 것이 없습니다.
|
|
92
|
+
|
|
93
|
+
그 뒤에 보여야 하는 것:
|
|
94
|
+
|
|
95
|
+
1. **설정 → Uncle Sam** — 상태 줄과 로그인 버튼이 있는 페이지.
|
|
96
|
+
2. **입력창 아래** — `● DeepSeek Harness` 또는 `● Uncle Sam`, 클릭해서 전환.
|
|
97
|
+
3. **모델 목록** — API 모델 옆에 `(web)` 모델 네 개.
|
|
98
|
+
|
|
99
|
+
### 제거
|
|
100
|
+
|
|
101
|
+
설정 → 플러그인 → Uncle Sam → 제거. 로그인한 브라우저 프로필 밖에는 아무것도 쓰지 않습니다.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## API / 웹 스위치
|
|
106
|
+
|
|
107
|
+
**모델 선택기가 곧 스위치입니다.** 두 번째 조작부는 없습니다. 모델까지 고르는 두 번째 조작부는 한 가지
|
|
108
|
+
결정에 진실이 두 개가 되기 때문입니다.
|
|
109
|
+
|
|
110
|
+
| 이 모델을 고르면 | 경로 | DeepThink | 검색 |
|
|
111
|
+
|---|---|---|---|
|
|
112
|
+
| `DeepSeek Chat (web)` | 브라우저 | 꺼짐 | 꺼짐 |
|
|
113
|
+
| `DeepSeek Chat + Search (web)` | 브라우저 | 꺼짐 | **켜짐** |
|
|
114
|
+
| `DeepSeek Reasoner (web)` | 브라우저 | **켜짐** | 꺼짐 |
|
|
115
|
+
| `DeepSeek Reasoner + Search (web)` | 브라우저 | **켜짐** | **켜짐** |
|
|
116
|
+
| `(web)`이 없는 모델 | API | — | — |
|
|
117
|
+
|
|
118
|
+
모델 이름 옆에 **WEB** 또는 **API** 배지가 붙어 지금 어느 경로인지 한눈에 보입니다. 이름을 알아보지 못하면
|
|
119
|
+
배지는 추측하지 않고 아무것도 표시하지 않습니다. 잘못된 배지는 없는 것보다 나쁩니다.
|
|
120
|
+
|
|
121
|
+
선택은 재시작해도 유지됩니다. **DeepThink**는 추론 패스, **검색**은 실시간 웹을 읽게 하는 기능입니다.
|
|
122
|
+
|
|
123
|
+
### 검색은 대화에 보입니다
|
|
124
|
+
|
|
125
|
+
검색 모델에서는 한 턴에 **두 블록**이 생깁니다 — 검색한 질의, 찾은 출처, 그리고 그것을 쓴 답변입니다.
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
웹 검색 — "오늘의 기술 뉴스 헤드라인은?"
|
|
129
|
+
출처 (4): yna.co.kr · fnnews.com · rthk.hk · sina.com.cn
|
|
130
|
+
링크: https://k.sina.com.cn/article_... http://www.21jingji.com/article_...
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
페이지는 내부에서 입력한 질의를 공개하지 않으므로, 인용된 질의는 검색을 일으킨 메시지입니다. 출처와 링크는
|
|
134
|
+
답변이 자리를 잡은 뒤 페이지에서 읽어 옵니다. 출처는 마지막에만 존재하기 때문에 **검색 턴은 스트리밍하지
|
|
135
|
+
않고 모아서 출력**합니다. 일반 턴은 지금처럼 토큰 단위로 흘러갑니다.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 왜 브라우저인가, 왜 저쪽 HTTP API가 아닌가
|
|
140
|
+
|
|
141
|
+
뻔한 길 — `chat.deepseek.com` 자체 API를 호출하는 것 — 은 시도했다가 포기했습니다. 이 사이트는 모든
|
|
142
|
+
메시지를 두 개의 문으로 통과시킵니다.
|
|
143
|
+
|
|
144
|
+
| 문 | 의미 |
|
|
145
|
+
|---|---|
|
|
146
|
+
| `/api/v0/chat/create_pow_challenge` | 메시지마다 **작업 증명** |
|
|
147
|
+
| `challenges.cloudflare.com/turnstile` | 오리진의 봇 차단 |
|
|
148
|
+
|
|
149
|
+
둘 중 하나를 다시 구현하는 것은 질 수밖에 없는 싸움입니다. 난독화되어 있고, 바뀌고, 바뀌면 실패가 네트워크
|
|
150
|
+
장애와 똑같이 보입니다. **페이지는 자기 요청을 위해 이미 둘 다 해결하고 있습니다.**
|
|
151
|
+
|
|
152
|
+
그래서 어댑터는 사이트와 HTTP로 말하지 않습니다. 페이지를 조작하고, 나머지는 페이지가 합니다. 인증, 작업
|
|
153
|
+
증명, Turnstile은 더 이상 우리 문제가 아니고, 사이트 자체와 별개로 깨질 수도 없습니다.
|
|
154
|
+
|
|
155
|
+
**확인됨:** 사이트에 단순한 `HEAD`를 보내면 `403`이 돌아오고, 브라우저 경로는 답변을 돌려줍니다.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 솔직히 말하는 한계
|
|
160
|
+
|
|
161
|
+
**도구 호출은 에뮬레이션입니다.** 웹 채팅에는 구조화된 도구 채널이 없습니다. 도구는 프롬프트에 글로 적고,
|
|
162
|
+
호출은 응답에서 JSON 객체를 뽑아 복원합니다. 동작합니다 — 확인했습니다 — 하지만 네이티브 도구 호출보다
|
|
163
|
+
약합니다. 지시를 무시한 모델은 글로 답해 버리고, 그 턴에 하네스는 도구 사용을 전혀 보지 못합니다. **무거운
|
|
164
|
+
에이전트 작업에는 API 경로가 더 안정적입니다.** 웹 경로는 대화, 긴 답변, 서브에이전트, 압축, 그리고 모델이
|
|
165
|
+
반드시 웹 모델이어야 하는 턴에 가장 잘 맞습니다.
|
|
166
|
+
|
|
167
|
+
**당신이 통제할 수 없는 웹사이트에 의존합니다.** 페이지 모양이 바뀌면 플러그인도 따라 바뀌어야 합니다. 이
|
|
168
|
+
페이지 맨 위의 개발 중 경고는 형식이 아닙니다.
|
|
169
|
+
|
|
170
|
+
**DeepSeek과 무관합니다.** 그들의 보증도 지원도 없고, 그들의 서비스에 대한 어떤 권리도 주지 않습니다. 그
|
|
171
|
+
서비스의 사용은 그들의 약관을 따릅니다.
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 설정
|
|
176
|
+
|
|
177
|
+
`cordis.patch.yml`에서 정합니다.
|
|
178
|
+
|
|
179
|
+
| 키 | 기본값 | 의미 |
|
|
180
|
+
|---|---|---|
|
|
181
|
+
| `port` | `9222` | 브라우저 디버깅 포트 |
|
|
182
|
+
| `defaultModel` | `deepseek-chat-search` | 호출이 모델을 지정하지 않을 때 사용 |
|
|
183
|
+
| `showBrowser` | `true` | 작업 중 창을 보일지 |
|
|
184
|
+
|
|
185
|
+
브라우저에는 로그인된 `chat.deepseek.com` 세션이 있어야 합니다. 첫 호출 시 포트가 열려 있지 않으면 Brave를
|
|
186
|
+
**Default** 프로필로 실행합니다. Brave가 디버깅 포트 *없이* 이미 실행 중이면 어댑터가 붙을 수 없고, 조용히
|
|
187
|
+
실패하지 않고 그 사실을 분명히 알려 줍니다.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 구조
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
index.js 어댑터: 하네스 StreamChunk ←→ 엔진
|
|
195
|
+
lib/engine.mjs 브라우저 + 페이지: 입력, 전송, 스트리밍, 안정화 대기
|
|
196
|
+
lib/cdp.mjs Chrome DevTools Protocol 클라이언트, 의존성 없음
|
|
197
|
+
lib/prompt.mjs 메시지와 도구를 한 메시지로 평탄화, 응답에서 도구 호출 복원
|
|
198
|
+
lib/savings.mjs 웹 경로가 아껴 준 금액을 API 가격으로 환산
|
|
199
|
+
lib/i18n.mjs 패널용 51개 언어
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**의존성이 없습니다.** Node 24에는 `WebSocket`과 `fetch`가 전역으로 있어 CDP에 필요한 것이 그것뿐입니다.
|
|
203
|
+
토큰 스트림이 호스트 프로세스를 떠나지 않고, 델타마다 IPC를 건너지도 않습니다.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## 후원
|
|
208
|
+
|
|
209
|
+
Uncle Sam은 토큰 과금을 그만두게 하려고 있습니다. 돈을 아꼈다면, 중간에 메모리가 떨어지지 않는 하드웨어에서
|
|
210
|
+
다음을 만들고 싶습니다.
|
|
211
|
+
|
|
212
|
+
**[☕ revolut.me/operatingtag](https://revolut.me/operatingtag)**
|
|
213
|
+
|
|
214
|
+
저장소에 스타를 주거나 쓸모 있는 버그를 제보하는 것도 똑같이 값집니다.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 라이선스
|
|
219
|
+
|
|
220
|
+
**CC BY-NC-ND 4.0** — 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제.
|
|
221
|
+
Copyright (c) 2026 Darren T. Weldon, Operating Tag 이름으로 공개.
|
|
222
|
+
|
|
223
|
+
**한 줄로 말하면: 개인적으로 무료로 설치하고 쓸 수 있습니다. 바꾸지 말고, 공유하지 말고, 팔지 말고, 회사에서
|
|
224
|
+
쓰지 마세요.**
|
|
225
|
+
|
|
226
|
+
오픈 소스가 아니며, 그런 척하지도 않습니다.
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
할 수 있는 것 설치해서 실행하기 · 개인적으로 비영리로 사용하기
|
|
230
|
+
이해를 위해 소스 읽기
|
|
231
|
+
|
|
232
|
+
할 수 없는 것 변경·각색하거나 2차적 저작물 만들기
|
|
233
|
+
복제·배포·공개·미러하거나 다른 사람이 쓸 수 있게 하기
|
|
234
|
+
코드 호스팅, 레지스트리, 웹사이트, 포럼, 채팅에 올리기
|
|
235
|
+
판매·재판매·대여하거나, 본체나 접근에 대해 돈 받기
|
|
236
|
+
다른 사람에게 넘기는 무엇이든 거기에 포함하기
|
|
237
|
+
상업적 목적이나 사업 활동의 일환으로 사용하기
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
**정당한 출처는 이 저장소와 npm 패키지
|
|
241
|
+
[`@operatingtag/dsh-unclesam`](https://www.npmjs.com/package/@operatingtag/dsh-unclesam) 두 곳뿐입니다.**
|
|
242
|
+
다른 곳에서 받은 사본은 누가 주었든 라이선스가 없습니다. 이 소프트웨어가 판매되고 있다면, 파는 사람은
|
|
243
|
+
저자가 아닙니다.
|
|
244
|
+
|
|
245
|
+
**상업적 사용, 그리고 변경·배포 권리는 별도의 서면 라이선스로 제공합니다.** Operating Tag에 물어보시면 분명한
|
|
246
|
+
답과 분명한 가격을 드립니다.
|
|
247
|
+
|
|
248
|
+
효력이 있는 것은 [LICENSE](LICENSE) 파일이며, 맨 앞에 같은 내용이 쉬운 영어로 적혀 있습니다.
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
Uncle Sam은 독립적인 플러그인입니다. DeepSeek과 무관하며, 그들의 보증이나 지원을 받지 않습니다.
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
@operatingtag/dsh-unclesam v1.0.1
|
|
256
|
+
저자 Operating Tag
|
|
257
|
+
라이선스 CC BY-NC-ND 4.0 — 사용은 자유, 변경·공유·판매는 불가
|
|
258
|
+
```
|