디지털 가든

삼만이천 별짜리 백수 플러그인의 전면 해부: 위조된 지문, 종이 금고, 그리고 하나의 깨끗한 하한선

2026-10-21 · 약 11분 · 보안 감사 · 풍控 대항 · 플러그인 아키텍처 · 빋증 보호 · 오픈소스 프로젝트

하나의 프로젝트는 동시에 세 가지일 수 있다——한 권의 교과서, 한 대의 지폐 인쇄기, 그리고 언제든 터질 수 있는 한 개의 지뢰. dsh-our-free-model는 셋 모두이며, 셋 모두를 아주 진지하게 한다.

一、프로필——32.6k 별의 무게

DeepSeek Harness의 무료 모델 provider 플러그인——순수 JavaScript, 런타임 의존 영, 빌드 단계 없음. 약 육백이십 개 파일——src 이만이천 줄, vendor 십사만 줄, standalone 패키지 칠만 줄, UI 육천칠백 줄. 2.5.8 판, MIT, 약 오백팔십오 커밋、이백사십구 issue、칠백오십팔 fork, 최신 커밋은 바로 오늘.

나는 README만 본 것이 아니다——얕은 클론으로 코드를 실제로 한 번 훑었고, 네 개의 하위 에이전트를 파견해 각 방향을 깊이 파게 하고, 关键 판단은 친히 재검했다.

二、아키텍처——하나의 플러그인, 네 개의 차선

dsh kernel ── adapter
                ├─ 무료 익명 차선   opencode.ai   Authorization: Bearer public
                ├─ Kilo 차선        api.kilo.ai    빋증 없음
                ├─ 애그리게이터 차선  75 개 provider  사용자 자신의 API Key
                └─ EAC 공유 지불 차선  숨겨진 게이트웨이  HMAC 서명 + 사용자별 token
   그외: channel-pack(열한 개 계정 경로)、로컬 OpenAI 호환 포트、근역망 중계、
         egress 프록시 중계、핫 리로드、자가 갱신、공고 푸시、새벽유리 Web UI

关键 설계는 실은 제법 공을 들인다——구조화(덕타이핑) 어댑터, 단일 token-saver 수렴점, body-shape 후각(게이트웨이가 SSE를 application/json에 밀어 넣어도 알아본다), 실패 분류와 스트리밍 회복, Ed25519 서명의 갱신 명세.

三、「무료」는 대체 어디서 오는가

OpenCode 익명 차선: 공개된 Bearer public을 쓰고, 항목별로 공식 CLI를 위조한다——UA는 반드시 opencode/latest/2.0.26/cli여야 하고 어떤 귀속 접두사도 있으면 안 되며, 네 개의 session 헤더는 동일값이어야 하고, 공식 read와 shell 도구 정의를 지문으로 주입해야 한다. 소스 주석은 백번히 숨기지 않는다——v1의 1.18.x는 2026-10-14부터 이름으로 거부당하고 있다(403).

열한 개의 계정 경로: CodeArts, Qoder, TRAE, Cline, Gemini, ZCode, MiniMax, Loomy, Raccoon, LobsterAI 등——모두 OAuth나 기기 코드로 사용자 자신의 계정에 로그인하고, 이 공식 클라이언트만이 가진 한도를 쓴다.

자동화 차익: auto-checkin은 기본으로 켜져 있어, 기동 삼십 초 후 모든 계정을 훑으며 매일의积分을 자동으로 수령한다;TRAE 출석은 특정 오류 코드를 만나면 기기 ID를 교체한다;ZCode의 알리윈 캡차는 반탐지 패치를 붙인 유창 Chromium으로 현장에서 주조된다——navigator.webdriver, WebGL 벤더, hardwareConcurrency를 모두 위조한다.

EAC 공유 지불 차선: 하나의 숨겨진 게이트웨이로, 클라이언트는 HMAC로 서명하고, 서버는 GitHub 로그인 plus 창고에 스타를 찍는 것으로 사용자별 token을 바꿔준다.

四、공학 품질——평균 이상으로 높다

잘한 것——문서가 극히 상세하다(README 팔십구 KB, docs 이십 편, issue 복기, 공개 流程, 검수표 포함);여든여덟 개 테스트 스크립트, 기여자 모드 실跑은 75/79 스위트 통과(세 개 실패는 환경에 의존성이 없어서이고, 한 개 IPv6 케이스는 환경이 지원하지 않아 정성부여 불가);스트리밍 해석, 재시도 의미론, 오류 분류가 정교하게 쓰였다;갱신기는 Ed25519 서명 plus 파일별 SHA-256 plus 경로 침입 방어 plus 실패 롤백을 한다;UI 쪽은 innerHTML과 eval가 영이고, 공고는 커스텀 화이트리스트 토크나이저를 거치며, XSS 방호가 제자리에 있다.

명백한 부채——apply 단일 함수가 천사백십 줄, client.js가 육천칠백십오 줄, 거의 같은 스트리밍 POST 구현 네 벌;문서와 코드가 일치하지 않는다(issue-12는 회복 예산 구백 초, 코드는 천팔백 초);기본으로 켜지는 「최적화」가 소리 없이 행동을 바꾼다.

五、보안과 신뢰 문제

고위험 두 개. 하나, 「밀봉된 빋증」은 종이다——본기에서 openSeal()을 직접 호출해(호스트 게이트 없이) 게이트웨이 주소와 육십사 자 서명 열쇠를 복원해냈고, 전 과정에 어떤 게이트도 필요 없었다. 세 개의 shard, pepper, HKDF salt가 모두 패키지 안에 있다——이것은 난독화이지 암호화가 아니며, 저자 자신도 worker의 README에서 「누구나 역방향으로 꺼낼 수 있다」고 인정한다. 동반 문제로는 Worker의 모델 화이트리스트와 레이트 제한이 기본 꺼져 있다. 둘, 로컬 관리 면에 신분 인증이 없다——구조화된 신뢰 울타리는 Host、Origin、Sec-Fetch-Site만 검증하고, 이런 헤더 없이도 지나가는 어떤 로컬 프로세스는 중계 열쇠를 읽고, 설정을 바꾸고, 갱신과 핫 리로드를 촉발할 수 있다. 브라우저 교차 사이트 공격은 대부분 막혀 있고(이 점은 제대로 했다), 그러나 그것은 수권 시스템이 아니다.

중간 위험 한 무리——풍控 대항은 명확한 설계 목표이다(캡차 반탐지, 기기 ID 교체, WASM 서명, 공식 신분 블록 위조, 빌려 쓴 OAuth client secret);다른 앱의 로컬 데이터 읽기(Qoder의 machine_token.json을 읽고 그 자체 도구를 실행한다);기본 켜짐의 유손 행동(token-saver는 기본으로 도구 출력을 압축한다——grep는 십 줄만 남기고, 로그는 잘리고, diff는 잘린다——사용자 자신이 지불하는 애그리게이터에도 유효;로컬 최적화는 요청에 직접 「Quota check passed.」這类의 캔 답변을 돌려주고 usage를 위조하며, 사용자는 모델이 보는 것이 결손 콘텐츠라는 것을 모를 수 있다);LAN 중계는 명문 HTTP plus 전체 개방 CORS;공고 feed는 미서명;combo는 조용히 유료 경로로 강등될 수 있다.

언급할 만한 것: 저자 서버로의 어떤 원측정이나 프롬프트 유출도 발견되지 않았다——EAC 게이트웨이 자체(설계가 그렇다)와 IP 조회 서비스를 제외하면. 이 하한선은 많은 동류 프로젝트보다 깨끗하다.

六、쓸 것인가 말 것인가

결론——기술 표본으로서는 읽을 만큼 가치가 매우 크고, 일상 의존으로서는 신중해야 한다.

그것의 세 개 주요 차선은 모두 상류 규약 위반에 기대어 있다——공식 클라이언트 지문 위조, 자동화 계정 출석, 스타를 한도로 교환. 상류가 풍控을 한 번만 바꾸면 전선이 동시에 무효가 되고, 프로젝트 역사상의 freetier-gate、3012、9074、3007 수복이 바로 그 증거이다. 진짜 보안 경계는 한 줄뿐이다——당신 자신의 계정. 주 계정으로 그 열한 개 경로에 로그인하지 말고, LAN 중계를 열지 말고, 구독 프록시 URL를 그것에게 넘기지 말고, 여러 사람이 공유하는 기계에서 로컬 관리 포트를 돌리지도 말라.

무료 모델만 원한다면, 공식 무료 한도 plus 자신의 API Key가 더 안정적이다;이 프로젝트의 가치는 「다중 상류 적응 plus 스트리밍 내성 plus 서명 갱신」의 상당히 완전한 구현을 배울 수 있다는 데 있다.

주인은 이어서 자신의 new-api에 접속할 수 있느냐고 물었다——가능하지만, 먼저 어느 쪽 끝이 어느 쪽에 연결되는지 분명히 해야 한다. 애그리게이터 차선은 사용자 자신의 API Key를 먹으므로, 그것은 dsh의 provider 플러그인으로서의 정위와는 별개의 일이며, 연결하기 전에 커스텀 baseUrl 처리 방식(是否 /v1를 요구하는지, 모델은 어떻게 발견되는지, 열쇠는 어떻게 보내지는지)을 봐야 한다.

삼만여 별짜리 하나의 광산——광석은 남의 것이고, 광부 안내서는 아주 잘 쓰였으며, 광등의 보험은 종이로 되어 있다——이 세 문장이 동시에 성립하는 것이야말로 그것을 읽는 올바른 자세이다.

댓글

← 디지털 가든