본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 21. 01:04

1935417243/AnyBot

요약

AnyBot은 AI CLI 도구를 원격 사용 가능한 AI 어시스턴트로 변환해주는 도구입니다. Web UI뿐만 아니라 Feishu, QQ, Telegram, WeChat 등 다양한 메신저를 통해 모바일과 데스크톱 어디서든 AI와 대화할 수 있는 환경을 제공합니다.

핵심 포인트

  • OpenAI Codex CLI 및 Claude Code를 백엔드 Provider로 지원
  • Web UI를 통한 Markdown 렌더링, 코드 하이라이팅 및 세션 관리 기능 제공
  • 이미지 및 파일 첨부를 지원하는 멀티모달 대화 가능
  • 다양한 메신저 플랫폼 통합을 통한 모바일 접근성 강화
  • 데몬 모드 및 Electron 패키징을 통한 간편한 설치 및 백그라운드 실행 지원

중국어 | English

AI CLI 도구를 원격 사용 가능한 AI 어시스턴트로 변환합니다. 내장된 Web UI를 통해 브라우저에서 대화하거나, Feishu(飞书) 로봇 / QQ 로봇 / Telegram 로봇 / 개인 WeChat을 통해 모바일 또는 데스크톱에서 기기 내 AI에게 언제든 메시지를 보낼 수 있습니다.

현재 OpenAI Codex CLI 및 Claude Code를 Provider(제공자)로 지원합니다.

macOS, Linux, Windows를 지원합니다.

다중 Provider 아키텍처— 탈부착 가능한 AI CLI 백엔드로, 현재 Codex CLI와 Claude Code를 지원하며 향후 더 많은 확장이 가능합니다.
Web UI— Markdown 렌더링, 코드 하이라이팅, 세션 관리를 지원하는 즉시 사용 가능한 로컬 채팅 인터페이스.
첨부 파일 지원— Web UI에서 📎 버튼, 이미지 붙여넣기 또는 파일 드래그 앤 드롭을 통해 첨부 파일을 전송할 수 있습니다 (이미지 + 모든 파일, 50MB 제한).
다중 플랫폼 통합— Feishu(Long Connection), QQ 로봇(WebSocket), Telegram, 개인 WeChat을 동시에 지원하여 모바일에서도 사용 가능합니다.
능동적 푸시— API를 통해 채널 소유자(Owner)에게 능동적으로 메시지를 전송하며, 자동화 알림 시나리오에 적합합니다.
스킬 관리— Web UI에서 스킬을 탐색, 활성화/비활성화 및 삭제할 수 있습니다.
프록시 설정— Web UI에서 HTTP / SOCKS5 프록시를 설정할 수 있으며, 저장 및 연결성 테스트를 지원합니다.
세션 이어가기— Provider의 네이티브 세션(Session)을 재사용하여 문맥(Context)을 유지합니다. /new를 입력하여 새 세션을 시작할 수 있습니다.
이미지 이해— 이미지를 전송하여 멀티모달(Multimodal) 대화를 지원합니다.
파일 회신— 생성된 이미지와 파일이 채팅창으로 자동 전송됩니다.
모델 전환— Web UI 또는 채팅에서 /provider, /model 명령어를 통해 언제든지 Provider와 모델을 전환할 수 있습니다.
채팅 명령어— 모든 채널에서 /help, /new, /provider, /model 명령어를 공통으로 지원합니다.
백그라운드 실행— 데몬(Daemon) 모드를 지원하여 부팅 시 즉시 사용 가능합니다.
데스크톱 설치 패키지— Electron 패키징을 지원하여 일반 사용자가 설치 후 Web UI를 통해 직접 설정하고 사용할 수 있습니다.

채팅 인터페이스모델 전환
제공자 전환채널 관리
스킬 관리프록시 설정

| 모바일 조작 |
|---|---|

종속성최소 버전설명
Node.js18+실행 환경
npmNode.js에 포함됨패키지 관리

그리고 최소 하나 이상의 Provider를 설정해야 합니다:

Provider설치 방식설명
Codex CLInpm install -g @openai/codexOpenAI의 CLI 도구
Claude Code로컬에 로그인된 claude 명령어를 사용; 프로젝트 종속성에 SDK 포함Anthropic의 CLI 도구

Windows 설치 가이드

  • Node.js 공식 웹사이트에서 LTS 버전을 다운로드하여 설치합니다.
  • Git for Windows를 설치하거나 기존의 Git 환경을 사용합니다.
  • PowerShell 또는 Windows Terminal에서 다음 명령어를 실행합니다.

Linux 설치 가이드

Ubuntu / Debian:

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

CentOS / RHEL / Fedora:

curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs # Fedora는 dnf 사용

nvm 사용 (권장, sudo 불필요):

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.bashrc # 또는 source ~/.zshrc
nvm install --lts

macOS 설치 가이드

brew install node

git clone https://github.com/1935417243/AnyBot.git
cd AnyBot
npm install
...

실행 후 http://localhost:19981을 열면

Web UI를 사용할 수 있습니다. Provider, 모델, 권한, 프록시(Proxy) 및 채널은 모두 Web UI에서 설정합니다.

# 백그라운드 실행 (daemon)
npm run bot:start
# 상태 확인
...

AnyBot는 플러그형(Pluggable) Provider 아키텍처를 사용하며, 각 AI CLI 도구는 하나의 Provider 구현에 대응합니다:

Provider상태CLI 도구설명
codex✅ 사용 가능Codex CLIOpenAI의 CLI, Sandbox 모드 지원
claude-code✅ 사용 가능Claude CodeAnth Anthropic의 CLI, 세션 이어가기 및 Sandbox 매핑 지원

환경 변수 PROVIDER=codex 또는 PROVIDER=claude-code를 통해 기본 Provider를 전환할 수 있으며, Web UI에서도 언제든지 전환이 가능합니다.

별도의 추가 배포 없이 내장된 Web 채팅 인터페이스를 제공합니다:

  • 다중 세션 관리, 히스토리 영구 저장 (SQLite)

  • Markdown 렌더링 + 코드 구문 강조 (Syntax Highlighting) + 원클릭 복사

  • 첨부 파일 지원: 📎 버튼을 통한 파일 업로드, 이미지 붙여넣기, 대화창으로 파일 드래그 앤 드롭 (최대 50MB)

  • 이미지 첨부 파일은 멀티모달 (Multimodal) 이해를 위해 Provider로 자동 전달

  • 이미지가 아닌 파일 경로는 컨텍스트 (Context)로 전달되어 Provider가 읽고 처리 가능

  • Provider 및 모델 전환

  • 채널 설정 관리 (Feishu, QQ 봇, Telegram, WeChat)

  • 스킬 관리 (브라우징, 활성화/비활성화, 삭제)

  • 프록시 (Proxy) 설정 (HTTP / SOCKS5, 인증, 연결성 테스트)

  • 다크 테마

Feishu 롱 커넥션 (Long Connection) 모드를 통해 접속하며, 공인 IP 콜백 주소 (Public Callback Address)가 필요하지 않습니다.

Feishu 오픈 플랫폼에서 앱을 생성한 후:

  • 봇 (Bot) 기능 활성화 - 활성화
  • 롱 커넥션 모드의 이벤트 구독 - 이벤트 구독 im.message.receive_v1
  • 메시지 전송 권한 부여 - 이미지 메시지를 처리하려면 메시지 리소스 읽기 관련 권한도 추가로 부여해야 함 - 앱 게시

채널 설정은 .data/channels.json에 저장되며, 세 가지 방식으로 관리할 수 있습니다:

방식설명
Web UI서비스 실행 후 설정 페이지에서 채널별로 설정 입력
REST APIGET /api/channels로 조회, PUT /api/channels/:type으로 업데이트
수동 편집.data/channels.json 파일을 직접 편집

channels.json 전체 필드 설명

{
"feishu": {
"enabled": true,
...

1:1 채팅— 봇에게 직접 메시지 전송
그룹 채팅— 기본적으로 봇을 @ 호출할 때만 응답 (모든 메시지에 응답하도록 변경 가능)

  • 이미지 전송 — 자동으로 다운로드하여 Provider가 처리하도록 전달
  • 응답 내의 이미지/파일은 자동으로 Feishu에 다시 업로드됨 (파일당 최대 30MB)
  • 모든 채팅 명령 지원 (아래 채팅 명령 섹션 참조)

QQ 오픈 플랫폼 WebSocket 게이트웨이를 통해 접속하며, 채널, 그룹 채팅, 1:1 채팅을 지원합니다.

QQ 오픈 플랫폼에서 봇 앱을 생성한 후:

  • App IDApp Secret 획득 - 봇의 메시지 수신 권한 설정

Feishu와 동일하게 Web UI, REST API 또는 .data/channels.json 내의 qqbot 필드를 통해 App ID / App Secret을 설정합니다.

채널 메시지— QQ 채널에서 봇을 @ 호출
그룹 채팅— 그룹 내에서 봇을 @ 호출하여 메시지 전송
1:1 채팅— 봇에게 직접 메시지 전송

  • 모든 채팅 명령 지원 (아래 채팅 명령 섹션 참조)

Telegram Bot API 롱 폴링 (Long Polling) 방식으로 접속하며, webhook 또는 공인 IP 콜백 주소가 필요하지 않습니다.

  • Telegram에서 @BotFather에게 연락
  • /newbot 명령어를 사용하여 봇 생성 - 생성된 Bot Token 기록 - 봇을 그룹에 추가한 후, 그룹 내에서 사용하려면 메시지에서 봇을 @ 호출하십시오.

다른 채널과 마찬가지로 다음 방식을 통해 telegram.token을 설정할 수 있습니다:

방식설명
Web UI"채널" 페이지에서 Telegram을 선택하고 Bot Token을 입력합니다
REST APIGET /api/channels로 조회, PUT /api/channels/telegram으로 업데이트
수동 편집.data/channels.json 파일 내의 telegram 필드를 직접 편집

개인 채팅 (Private Chat)— 봇에게 직접 메시지를 보냅니다
그룹 채팅 (Group Chat)— 그룹 내에서 봇을 @ 호출한 후 메시지를 보냅니다
이미지 메시지 (Image Message)— 이미지를 자동으로 다운로드하여 Provider에게 전달하며, 캡션 (caption)은 문맥 (context)과 함께 전달됩니다
긴 답변 분할 (Long Response Splitting)— Telegram의 단일 메시지 길이를 초과할 경우 자동으로 분할하여 전송합니다

  • 모든 채팅 명령어를 지원합니다 (아래 채팅 명령어 섹션 참조)

Tencent WeChat 채널 프로토콜을 통해 개인용 WeChat에 접속합니다. AnyBot가 직접 QR 코드를 스캔하여 로그인하고, 롱 폴링 (Long Polling) 방식으로 메시지를 수신 및 답장을 전송하므로 OpenClaw를 설치할 필요가 없습니다.

  • Web UI의 "채널" 페이지에서 "WeChat"을 활성화하거나, .data/channels.json 파일의 weixin.enabledtrue로 편집합니다.
  • AnyBot를 재시작합니다.
  • 터미널에 QR 코드가 표시되면 개인용 WeChat으로 스캔하고 휴대폰에서 승인합니다.
  • 스캔에 성공하면 weixin.accountId, weixin.token, ownerChatId가 설정 파일에 자동으로 기록됩니다.

로그인 상태가 만료된 경우, weixin.token을 비운 후 서비스를 재시작하면 다시 QR 코드를 스캔하여 연결할 수 있습니다.

개인 채팅 (Private Chat)— 연결된 개인용 WeChat으로 텍스트, 이미지, 파일 메시지를 수신 및 발신합니다
능동 푸시 (Active Push)/api/send를 사용하여 { "channel": "weixin", "message": "..." } 형식을 사용할 수 있습니다.

  • 이미지는 다운로드 후 멀티모달 (Multimodal) 이해를 위해 Provider에게 전달됩니다. 답장의 로컬 이미지 경로와 FILE: 파일은 WeChat CDN을 통해 암호화되어 업로드된 후 전송됩니다.
  • 모든 채팅 명령어를 지원합니다 (아래 채팅 명령어 섹션 참조)

모든 채널 (Feishu, QQ, Telegram, WeChat)은 다음과 같은 / 명령어를 공통적으로 지원합니다:

명령어설명
/help사용 가능한 명령어 목록을 표시합니다
/new새 창을 열고 현재 세션을 초기화합니다
/provider사용 가능한 공급자 (Provider) 목록 및 현재 선택된 공급자를 확인합니다
/provider <이름>공급자를 전환합니다 (예: /provider claude-code)
/model현재 공급자에서 사용 가능한 모델 목록을 확인합니다
/model <이름>모델을 전환합니다 (예: /model gpt-5.5)

공급자를 전환할 때 각 공급자가 마지막으로 사용한 모델을 자동으로 기억하며, 다시 전환 시 자동으로 복구됩니다.

Web UI를 통해 스킬 (Skill)을 관리합니다 (Provider에 대응하는 스킬 디렉토리 내의 SKILL.md 파일을 읽음):

  • 설치된 모든 스킬을 탐색하고 이름과 설명을 확인합니다.
  • 지정된 스킬을 활성화 또는 비활성화합니다.
  • 불필요한 스킬을 삭제합니다.
  • 스킬이 위치한 폴더를 빠르게 엽니다.

Provider를 전환하면 스킬 목록이 해당 Provider의 스킬 디렉토리로 자동 전환됩니다:

Provider스킬 디렉토리
codex$CODEX_HOME/skills/ (설정되지 않은 경우 ~/.codex/skills/)
claude-code$CLAUDE_CONFIG_DIR/skills/ (설정되지 않은 경우 ~/.claude/skills/)

AnyBot는 Web UI에서 네트워크 프록시 (Proxy)를 통합 설정할 수 있도록 지원하며, 이는 Provider 요청, Telegram API 요청 및 기타 아웃바운드 HTTP(S) 요청에 적용됩니다.

  • HTTPSOCKS5 프록시를 지원합니다.
  • 선택적으로 사용자 이름/비밀번호 인증을 지원합니다.
  • Web UI에서 클릭 한 번으로 프록시 연결성을 테스트할 수 있습니다.
  • 프록시 설정은 .data/proxy.json에 영구적으로 저장됩니다.
방식설명
Web UI왼쪽 "프록시" 페이지에서 활성화, 저장 및 연결 테스트를 수행합니다
REST APIGET /api/proxy로 조회, PUT /api/proxy로 업데이트, POST /api/proxy/test로 테스트합니다
수동 편집.data/proxy.json 파일을 직접 편집합니다
{
"enabled": true,
"protocol": "http",
...
  • 활성화 시 전역 HTTP_PROXY / HTTPS_PROXY 환경 변수가 업데이트됩니다.

  • 기본적으로 localhost, 127.0.0.1, ::1, *.feishu.cn, *.larksuite.com, *.qq.com은 직접 연결 (Direct Connect)됩니다.

  • 로컬 머신에서 프록시(Proxy)를 실행한 후, Codex / Claude Code / Telegram이 모두 프록시를 통하도록 설정하기에 매우 적합합니다.

AnyBot은 더 이상 .env 파일을 읽지 않습니다. Provider, 모델(Model) 및 권한(Permission) 등 자주 사용하는 설정은 .data/*.json에 저장되며, Web UI에서도 수정할 수 있습니다. 아래 변수들은 시스템 환경 변수(Environment Variable) 호환을 위한 엔트리로만 사용되며, 필요할 경우 실행 명령어나 시스템 서비스 설정에서 직접 전달해야 합니다.

변수기본값설명
PROVIDERcodex사용하는 Provider: codex, claude-code
WEB_PORT19981Web UI 포트
LOG_LEVELinfo로그 레벨 (Log Level): debug / info / warn / error
LOG_INCLUDE_CONTENTfalse로그에 메시지 내용 포함 (디버깅용)
LOG_INCLUDE_PROMPTfalse로그에 전체 프롬프트 (Prompt) 포함 (디버깅용)
LOG_RETENTION_DAYS3로그 보관 일수, 초과 시 자동 삭제
변수기본값설명
CODEX_BINcodexCodex CLI 실행 파일 경로
CODEX_MODEL사용할 모델 덮어쓰기
CODEX_SANDBOXread-only보안 모드 (Sandbox Mode): read-only / workspace-write / danger-full-access
CODEX_SYSTEM_PROMPT내장 프롬프트 뒤에 추가될 사용자 정의 시스템 프롬프트
CODEX_WORKDIR현재 디렉토리작업 디렉토리 (Working Directory)
변수기본값설명
CLAUDE_CODE_BIN선택 사항; 비워둘 경우 SDK와 함께 설치된 Claude Code 네이티브 바이너리(Native Binary)를 사용합니다. 외부 CLI를 지정해야 하는 경우 실행 파일의 전체 경로를 입력하십시오.
ANTHROPIC_API_KEY선택 사항; API Key 인증 방식으로 변경하고 싶을 때만 활성화합니다.
CLAUDE_AGENT_MODEL사용할 모델 덮어쓰기
CLAUDE_AGENT_PERMISSION_MODE권한 모드 덮어쓰기: default / acceptEdits / bypassPermissions / plan / dontAsk / auto
CLAUDE_AGENT_MAX_TURNSAgent 최대 루프 횟수

주의: CLAUDE_CODE_BIN을 설정하면 SDK는 해당 실행 파일을 실행하며, 셸 함수(Shell Function)나 별칭(Alias)은 읽지 않습니다. 만약 사용 중인 claude가 셸 함수 래퍼(Wrapper)라면, 동일한 로직을 스크립트로 저장한 후 CLAUDE_CODE_BIN이 해당 스크립트를 가리키도록 설정하십시오.

Web UI는 다음 API를 통해 백엔드와 상호작용하며, 직접 호출할 수도 있습니다:

방법경로설명
GET/api/sessions세션 목록 가져오기
POST/api/sessions새 세션 생성
GET/api/sessions/:id세션 상세 정보 가져오기 (메시지 포함)
DELETE/api/sessions/:id세션 삭제
POST/api/sessions/:id/messages메시지 전송, 첨부 파일 지원 { "content": "...", "attachments": [...] }
POST/api/upload파일 업로드 (최대 50MB), 파일 경로 및 유형 반환
POST/api/send채널 봇을 통해 능동적으로 메시지 푸시 { "channel": "feishu", "message": "..." }
GET/api/model-config현재 모델 설정 가져오기 (Provider 정보 포함)
PUT/api/model-config모델 전환 { "modelId": "..." }
GET/api/providers사용 가능한 Provider 목록 가져오기
PUT/api/providers/currentProvider 전환 { "provider": "codex" }
GET/api/channels채널 설정 가져오기
PUT/api/channels/:type채널 설정 업데이트
GET/api/proxy프록시(Proxy) 설정 가져오기
PUT/api/proxy프록시(Proxy) 설정 업데이트
POST/api/proxy/test프록시(Proxy) 연결성 테스트
GET/api/skills스킬(Skills) 목록 가져오기
PUT/api/skills/:id/toggle스킬(Skills) 활성화 / 비활성화 { "enabled": true }
DELETE/api/skills/:id스킬(Skills) 삭제
POST/api/skills/open-folder파일 관리자에서 스킬(Skills) 디렉토리 열기

/api/send 인터페이스를 통해 채널 봇이 소유자(Owner)에게 능동적으로 메시지를 보낼 수 있으며, 이는 자동화된 알림, 경고 등의 시나리오에 적합합니다:

curl -X POST http://localhost:19981/api/send \
-H "Content-Type: application/json" \
-d '{"channel": "telegram", "message": "배포 완료 ✅"}'

channel 옵션은 feishu, qqbot, telegram, weixin 중 선택할 수 있으며, 해당 채널 설정에서 ownerChatId를 설정해야 합니다.

  • 각 채팅(Web 세션 / Feishu chat / QQ 채팅)은 하나의 Provider 세션과 바인딩되며, 이후 메시지는 대화 지속(Continuation) 메커니즘을 통해 문맥(Context)을 유지합니다.

  • 세션 바인딩 관계는 SQLite에 저장됩니다. 각 채널의 바인딩은 프로세스 재시작 후 자동으로 재구성됩니다.

  • Feishu 메시지는 먼저 수신되었음을 나타내는 리액션(Reaction, 기본값 ✅)을 추가한 후, Provider의 완전한 응답을 기다립니다.

  • QQ 봇은 WebSocket 게이트웨이를 통해 메시지를 수신하며, OAuth2를 통해 토큰을 자동으로 관리합니다.

  • 프록시(Proxy)를 활성화하면 Provider와 Telegram 등의 아웃바운드(Outbound) 요청은 글로벌 프록시를 통하게 됩니다. Feishu, QQ, WeChat 및 로컬 주소는 기본적으로 직접 연결(Direct connection)됩니다.

  • 텍스트, 이미지 및 첨부 파일 메시지를 지원합니다. 기타 메시지 유형을 받으면 안내 메시지가 표시됩니다.

  • Web UI 첨부 파일은 multer 미들웨어를 통해 작업 디렉토리 하위의 tmp/uploads/에 업로드됩니다.

  • /new: 현재 세션 재설정

  • /provider/model: 공급자(Provider) 및 모델 전환

  • /help: 명령어 도움말 확인

  • 이미지 메시지는 먼저 임시 디렉토리에 다운로드된 후 Provider를 통해 전달됩니다.

  • 응답에 포함된 로컬 이미지 경로(`` 또는 순수 경로)는 자동으로 업로드됩니다.

  • 응답의 FILE: /path/to/file.ext는 파일로 전송됩니다.

  • 로그는 단일 행 JSON 형식으로 .run/ 디렉토리에 기록되며, 10분 단위로 분할되고 기본적으로 3일간 보관됩니다.

AnyBot/
├── src/
│ ├── index.ts # 메인 엔트리, 세션 상태 관리
...

AnyBot의 Provider 아키텍처는 확장 가능하며, 새로운 CLI 도구를 추가하는 방법은 다음 세 단계로 이루어집니다:

구현IProvider에서

인터페이스 src/providers/ 아래에 새 파일을 생성하여 listModels()run() 메서드를 구현합니다.

팩토리(Factory)에 등록src/providers/index.tsproviderFactories에 새 항목을 추가합니다.

환경 변수(Environment Variable) 추가src/index.tsgetProviderConfig()에서 해당하는 환경 변수를 읽어옵니다.

구현 템플릿으로 src/providers/codex.tssrc/providers/claude-code.ts를 참고할 수 있습니다.

MIT

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0