linguo2625469/workbuddy2api-panel
把腾讯WorkBuddy账号变成 OpenAI 兼容 API 的多账号网关,同时自动完成任务中心全部任务,附 Web 管理面板(账号池可视化 / 积分任务 / 配置热更新)。基于 Sliverkiss/workbuddy2api 的增强分支
WorkBuddy2API Panel – 텐센트 CodeBuddy에 대한 오픈AI 호환 게이트웨이 (자체 호스팅)
무엇인가요 – 오픈AI 호환 클라이언트(챗GPT SDK, CLI 도구 등)를 텐센트 CodeBuddy(copilot.tencent.com)와 함께 사용할 수 있게 해주는 Go 기반 역방향 프록시입니다. 하나 이상의 CodeBuddy 계정을 감싸며, OAuth 디바이스 플로우 로그인을 처리하고 토큰을 자동 갱신하며, 오픈AI API를 모방하는 단일 /v1/chat/completions 엔드포인트를 제공합니다.
왜 존재하는가 – 텐센트는 공개적인 오픈AI 스타일 API를 제공하지 않습니다. 이 프로젝트는 CodeBuddy 계정을 보유한 개인이 기존의 오픈AI 인터페이스를 통해 자신의 크레딧을 재사용할 수 있게 해주며, 기존 도구와의 0코드 통합을 가능하게 합니다.
핵심 기능 (README에 설명된 내용)
| 기능 | 설명 |
|---|---|
| OAuth 일클릭 로그인 | login.sh 또는 웹 패널의 계정 추가 버튼이 디바이스 인증 플로우를 실행하고, 인증 정보 JSON을 저장하며 서비스 재시작 없이 새 계정을 즉시 로드합니다. |
| 다중 계정 풀 | 인증 정보 풀을 유지하며, 크레딧, 비활성 시간 보너스, 성공률을 고려한 3요소 가중 무작위 알고리즘으로 요청마다 계정을 선택합니다. 상위 5개 후보를 고려하고, 빠른 재사용을 막기 위해 짧은 "버스트 방지" 지연을 적용합니다. |
| 회로 차단기 및 쿨다운 | 429 응답에 대해 소프트 쿨다운(지수 백오프 최대 2시간), 404에 대해 고정 60초 쿨다운, 402(잔액 소진)에 대해 다음 날 04:00까지 하드 쿨다운, 그리고 실패 횟수 기반 차단기 기능을 제공합니다. |
| 세션 스티키니스 | conversation_id (또는 유사한 해시)를 공유하는 요청은 세션 기간 동안 동일한 업스트림 계정으로 라우팅됩니다(기본 TTL 30분, 성공적인 호출마다 갱신). 상태는 Upstash Redis에 미러링하여 재시작 후에도 유지될 수 있습니다. |
| 스케줄된 작업 | 자동 일일 로그인, 활동 보고서, "고양이 여행", 토큰 유지, "블랙캣" 야행성 작업 등이 있습니다. 각 작업은 독립적인 케이스 스위치와 구성 가능한 시간대를 가집니다. |
| 스트리밍 및 비스트리밍 | 외부 호출은 stream:true로 강제됩니다. 클라이언트가 비스트리밍을 요청할 경우 게이트웨이는 스트리밍 청크를 하나의 응답으로 재조합합니다. |
| 모델 수준 호환성 | 모델 이름을 그대로 전달하며, DeepSeek의 "사고 체인" 삽입, 자동 노력 수준 낮추기, 응답 콘텐츠 보충 기능을 제공합니다. |
| 시스템 프롬프트 처리 | 기본적으로 클라이언트가 제공한 system 메시지를 사용자 정의 프롬프트로 대체합니다(원본을 제거하여 CodeBuddy의 콘텐츠 필터링 오진을 방지). passthrough 모드도 제공됩니다. |
| 지문 정제 | 블랙리스트된 필드(예: 디바이스 지문)는 외부 페이로드에서 제거되며, 비활성화 가능합니다. |
| 관측성 | 요청당 1줄의 CSV 로그(TTFB, 토큰 속도, uid), 서비스 상태를 보여주는 /healthz 엔드포인트, 선택적 Redis 미러링 기능을 제공합니다. |
| 웹 관리 패널 | 단일 페이지 UI(내장된 go:embed를 통해)를 통해 계정 추가, 풀 상태 확인, config.json 실시간 편집, 성장 작업 자동화 트리거, 로그 검사, 스케줄된 작업 수동 실행이 가능합니다. |
| 성장 작업 자동화 | CodeBuddy "성장" 작업 중 17개(로그인, 캔버스 생성, 채팅 활동, 전문가 소환 등)를 패널에서 일클릭으로 자동 완료하고 보상 자동 청구가 가능합니다. |
빠른 시작 (Docker Compose – 추천 방법)
# 리포지토리 복제
git clone https://github.com/linguo2625469/workbuddy2api-panel.git
cd workbuddy2api-panel
# 예제 설정 복사 및 원하는 경우 수정
cp config.example.json config.json # 원하는 경우 config.json 수정
# 서비스 시작 (Docker가 Go 바이너리 빌드)
docker compose up -d --build
# 건강 상태 확인
curl -s http://localhost:7863/healthz
# → {"healthy":0,"total":0,"service":"workbuddy2api"}
브라우저에서 http://localhost:7863/panel/에 접속하여 계정 추가를 클릭하고, OAuth 디바이스 플로우 링크를 따라가서 CodeBuddy 자격 증명으로 로그인하면 새 계정이 즉시 풀에 나타납니다.
Docker 없이 실행하기 (싱글 바이너리)
- 릴리스된
wb2api.exe(Windows) 다운로드 또는 소스에서 빌드 (go build -trimpath -ldflags="-s -w" -o wb2api ./cmd/server). - 실행:
./wb2api -config config.json– 첫 실행 시api_key필드가 비어 있으면 임의의api_key가 생성됩니다. http://127.0.0.1:7863/panel/열고 위와 같이 계정 추가.
구성 요약
| 키 | 기본값 | 의미 |
|---|---|---|
listen |
:7863 |
HTTP 바인드 주소 |
api_key |
비어 있음 | 클라이언트가 필요로 하는 베어러 토큰; 비어 있으면 인증 비활성화(공개 노출 시 권장되지 않음) |
auth_dir |
./auths |
OAuth 인증 정보 JSON 파일이 저장되는 디렉터리 |
state_file |
./data/state.json |
지속적인 풀 상태 |
server.max_body_mb |
8 |
최대 요청 본문 크기; 더 큰 본문은 413으로 거부됩니다 |
cooldown.soft_rate / soft_rate_max |
600s / 2h |
429 이후 지수 백오프의 기본값 및 최대값 |
schedule.*_enabled |
true |
다섯 가지 스케줄된 작업(로그인, 활동, 여행, 유지, 블랙캣)의 스위치 |
upstash.url / upstash.token |
비어 있음 | 설정 시 풀 상태와 세션 바인딩이 Upstash Redis에 미러링되어 충돌에 강건해집니다 |
prompt.mode |
custom |
custom은 클라이언트 시스템 프롬프트를 대체; passthrough는 그대로 유지 |
features.sanitize_blacklist_fingerprints |
true |
외부 페이로드에서 알려진 지문 필드 제거 |
모든 필드는 WB2A_ 접두사가 붙은 환경 변수를 통해 런타임에 오버라이드 가능합니다(예: WB2A_API_KEY).
내부 동작 방식 (고수준 개요)
- 입력 요청 – HTTP 핸들러는 선택적 API 키를 검증하고, 본문 크기 제한을 적용하며, 페이로드를 재작성(스트리밍 플래그, 프롬프트 처리, 도구 호출 정규화)하고, 풀에서 업스트림 계정을 선택합니다.
- 풀 로직 – 비활성화/쿨다운/차단기 상태인 계정을 필터링하고, 가중치를 적용한 후 무작위로 상위 5개 후보를 선택합니다. 최근 사용 방지 및 비활성 보너스 규칙을 준수합니다.
- 세션 스티키니스 – 요청에
conversation_id(또는 유사한 메타데이터)가 포함되어 있으면, 세션의 TTL 동안 동일한 업스트림 계정에 연결을 시도합니다. - 업스트림 호출 – 얇은 클라이언트가 요청을 CodeBuddy(
/v1/chat/completions)로 스트리밍합니다. 응답은 호출자에게 스트리밍으로 반환되며, 비스트리밍 요청의 경우 선택적으로 통합됩니다. - 오류 분류 – 응답을 분류(잔액 소진, 레이트 제한, 세션 손실, 5xx 등)하고, 풀은 쿨다운 카운터, 차단기 상태, 또는 계정 비활성화를 업데이트합니다.
- 관측성 및 지속성 – 각 요청은 CSV 라인으로 로깅되며, 풀 상태는
state.json에 원자적으로 쓰이고, 선택적으로 Redis에 미러링됩니다./healthz엔드포인트는 로드 밸런서용 전체 풀 상태를 보고합니다. - 웹 패널 – UI(바이너리 내장)는 동일한 HTTP API와 통신하여 풀 메트릭 표시,
config.json실시간 편집, 성장 작업 자동화 실행, 로그 검사가 가능합니다.
누가 이 도구를 사용할까?
- 개인 개발자 – 개인 CodeBuddy 구독을 보유하고 있으며, 오픈AI API만 이해하는 도구와 함께 사용하고 싶은 경우.
- 파워 유저 – 여러 CodeBuddy 계정을 관리하는 경우(예: 부하 분산 또는 계정별 레이트 제한 회피).
- 자체 호스팅 AI 플레이그라운드 – 오픈AI 엔드포인트를 즉시 사용할 수 있지만, 백엔드 서비스는 비공개로 유지하고 싶은 경우.
법적/준수 참고사항
README는 이 도구가 비공식 게이트웨이임을 강조합니다. 소유한 계정만 사용하고, 개인 환경에서만 사용하며, 적절한 인증 없이 공개적으로 노출해서는 안 됩니다. 이 도구는 텐센트의 라이선스를 우회하지 않으며, 단지 디바이스 플로우 로그인과 토큰 갱신을 자동화할 뿐입니다.
TL;DR
WorkBuddy2API Panel = 텐센트 CodeBuddy 계정을 표준 오픈AI 호환 API로 변환하는 Go 서버이며, 스마트 라우팅을 지원하는 다중 계정 풀, 자동 일일 작업, 내장된 웹 UI를 제공합니다. Docker 또는 싱글 바이너리로 배포하고, OAuth를 통해 계정을 추가한 후, 어떤 오픈AI 클라이언트도 http://localhost:7863/v1/...에 연결할 수 있습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트