@operatingtag/dsh-unclesam 1.0.0 → 1.1.0

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/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) · [ไทย](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)
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.1.0
256
+ 저자 Operating Tag
257
+ 라이선스 CC BY-NC-ND 4.0 — 사용은 자유, 변경·공유·판매는 불가
258
+ ```