CLI-Anything: GUI 소프트웨어를 AI 에이전트용 CLI로 자동 변환하는 오픈소스 도구 심화 분석
AI 에이전트가 GIMP로 이미지를 편집하거나 Blender로 3D 모델을 만들려면, 에이전트에게 "소프트웨어를 쓸 수 있는 손"을 줘야 합니다. 홍콩대 HKUDS 연구팀이 공개한 CLI-Anything은 이 문제의 획기적 해결책을 제시합니다. 소프트웨어 소스코드를 분석하여 AI 에이전트 전용 CLI를 자동 생성하는 도구입니다.
TL;DR
- 핵심: 소프트웨어 소스코드 입력 → 7단계 자동 파이프라인 → AI 에이전트용 CLI 출력
- 검증: 9개 소프트웨어(GIMP, Blender, Inkscape 등), 1,436개 테스트 100% 통과
- 성과: 2주 공개 → 2,100+ GitHub Stars
- 효율성: MCP 대비 토큰 33% 절감 (~200 vs ~300), Computer Use 대비 10배 빠름
- 개발팀: 홍콩대학교 HKUDS (GitHub Stars 77,000+, Chao Huang 교수)
배경: AI 에이전트가 소프트웨어를 쓰는 기존 방법의 문제점
현재의 세 가지 접근법
1. Computer Use (GUI 에이전트) - 느림, 불안정
AI 에이전트 → 스크린샷 캡처 → 화면 인식 → 마우스 좌표 계산 → 클릭 시뮬레이션 → 다음 스크린샷
토큰 사용: 1,000+ (스크린샷 이미지 인코딩) 속도: 초 단위 지연 (프레임마다 인식) 안정성: UI 변경되면 동작 불가
2. MCP 서버 (Model Context Protocol) - 비용, 개발 필요
소프트웨어 분석 → 프로토콜 설계 → 서버 구현 → 스키마 작성 → 에이전트 호출
토큰 사용: ~300 (스키마 매번 주입) 개발 비용: 소프트웨어마다 전용 개발 필요 확장성: 신규 소프트웨어 추가 시 처음부터 시작
3. 수동 API 래퍼 - 확장성 부족
API 스펙 분석 → 래퍼 코드 작성 → 테스트 → 유지보수 (endless)
확장성: 거의 없음 유지보수: 라이브러리 업데이트마다 수정 필요
세 방법의 공통 문제
| 항목 | Computer Use | MCP | 수동 래퍼 |
| 속도 | 느림 | 보통 | 보통 |
| 토큰 효율 | 매우 나쁨 | 나쁨 | 보통 |
| 개발 비용 | 0 (기존 도구) | 높음 | 높음 |
| 확장성 | 높음 (범용) | 낮음 (수동) | 낮음 (수동) |
| 안정성 | 낮음 (UI 변경) | 높음 | 보통 |
해결책: CLI-Anything의 접근 방식
핵심 아이디어: 자동 CLI 생성
비유: GUI 에이전트가 "로봇이 마우스를 잡고 화면을 보면서 클릭하는 것"이라면, CLI-Anything은 "로봇 전용 리모컨을 자동으로 만들어주는 것"입니다.
소프트웨어 소스코드
↓
[7단계 자동 분석 파이프라인]
↓
완전히 작동하는 AI 에이전트용 CLI
(테스트, 문서화, 배포 포함)
7단계 자동 파이프라인
Step 1: 분석 (Analyze)
소프트웨어 소스코드를 스캔하고 GUI 동작을 API에 매핑합니다.
GIMP Python-Fu API → 각 함수의 시그니처 추출
→ 파라미터 유형 분석
→ 반환값 구조 파악
Step 2: 설계 (Design)
명령어 그룹, 상태 모델, 출력 형식을 설계합니다.
# 자동 생성된 설계
command_groups:
- name: "project"
commands:
- new (width, height, mode)
- open (filename)
- save (filename, format)
- name: "layer"
commands:
- add (name, type, color)
- delete (layer_id)
- merge (layer1_id, layer2_id)
Step 3: 구현 (Implement)
Click CLI 프레임워크로 REPL 모드, JSON 출력, Undo/Redo를 구현합니다.
# 자동 생성 (일부)
@click.group()
def cli():
"""GIMP CLI for AI agents"""
pass
@cli.group()
def project():
"""Manage GIMP projects"""
pass
@project.command()
@click.option('--width', type=int, default=1920)
@click.option('--height', type=int, default=1080)
@click.option('--output', '-o', type=str)
@click.option('--json', is_flag=True)
def new(width, height, output, json):
"""Create new GIMP project"""
# 실제 GIMP 백엔드 호출
result = gimp.pdb.gimp_image_new(width, height, RGB)
if json:
click.echo(json.dumps({"project_id": result}))
else:
click.echo(f"Created project {result}")
Step 4-6: 테스트, 문서화, 배포
포괄적 테스트 스위트, 완전한 문서, setup.py를 자동 생성합니다.
Step 7: 완료
# 에이전트가 바로 사용 가능
$ cli-anything-gimp --help
$ cli-anything-gimp project new --width 1920 --height 1080
$ cli-anything-gimp --json layer add -n "Background"
기술 깊이: Authentic Software Integration 원칙
CLI-Anything이 다른 이유는 "Authentic Software Integration" 원칙을 따르기 때문입니다.
대체 구현이 아닌 실제 호출
# ❌ 나쁜 예: 모의 구현
def gimp_layer_add():
return {"layer_id": random.randint(1, 1000)}
# ✅ 좋은 예: 실제 GIMP 백엔드 호출 (CLI-Anything의 방식)
def gimp_layer_add(name, type, color):
# gimp.pdb는 실제 GIMP PDB (Procedural Database)
layer = gimp.pdb.gimp_layer_new(
gimp.image_list()[0], # 현재 이미지
1920, 1080, # 크기
RGBA_IMAGE,
name, 100, LAYER_MODE_NORMAL
)
return {"layer_id": layer.id, "name": layer.name}
효과:
- 100% 호환성 (실제 소프트웨어 기능과 동일)
- 새 버전 자동 지원 (소스코드 업데이트되면 CLI도 자동 재생성)
- 신뢰성 (대체 구현의 버그 없음)
검증: 1,436개 테스트, 100% 통과
검증된 소프트웨어 9개
| # | 소프트웨어 | 도메인 | CLI 명령 | 테스트 | 커버리지 |
| 1 | GIMP | 이미지 편집 | cli-anything-gimp | 107개 | 100% |
| 2 | Blender | 3D 모델링/렌더링 | cli-anything-blender | 208개 | 100% |
| 3 | Inkscape | 벡터 그래픽 | cli-anything-inkscape | 202개 | 100% |
| 4 | Audacity | 오디오 제작 | cli-anything-audacity | 161개 | 100% |
| 5 | LibreOffice | 오피스 문서 | cli-anything-libreoffice | 158개 | 100% |
| 6 | OBS Studio | 라이브 스트리밍 | cli-anything-obs-studio | 153개 | 100% |
| 7 | Kdenlive | 비디오 편집 | cli-anything-kdenlive | 155개 | 100% |
| 8 | Shotcut | 비디오 편집 | cli-anything-shotcut | 154개 | 100% |
| 9 | Draw.io | 다이어그램 | cli-anything-drawio | 138개 | 100% |
| 합계 | 1,436개 | 100% |
테스트 전략
각 소프트웨어별로:
- 단위 테스트: 각 CLI 명령어 검증
- 통합 테스트: 워크플로우 시나리오 (예: 프로젝트 생성 → 레이어 추가 → 저장)
- 성능 테스트: CLI 응답 시간, 메모리 사용
- 회귀 테스트: 소프트웨어 업데이트 후 호환성
실제 사용 예시
# 1. GIMP를 CLI로 조작 (이미지 처리 파이프라인)
for file in *.jpg; do
cli-anything-gimp project open "$file" \
--json | jq '.project_id' > proj_id.txt
PROJ_ID=$(cat proj_id.txt)
# 이미지 리사이징
cli-anything-gimp image resize --project "$PROJ_ID" \
--width 1920 --height 1080
# 필터 적용
cli-anything-gimp filter apply --project "$PROJ_ID" \
--filter "sharpen" --radius 2
# 저장
cli-anything-gimp project save --project "$PROJ_ID" \
--output "output_${file}"
done
# 2. Blender를 CLI로 조작 (3D 렌더링 배치)
cli-anything-blender project new --output scene.blend
cli-anything-blender model load --project scene.blend --file model.obj
cli-anything-blender render --project scene.blend --format png --output render.png
성능 분석: CLI vs MCP vs Computer Use
토큰 효율 비교
Computer Use 접근 (GUI 에이전트)
[턴 1] "GIMP에서 이미지 리사이징해줘"
→ 에이전트가 GIMP 열기 생각
→ 스크린샷 요청 (1,000 토큰)
→ 화면 분석 ("메뉴가 여기에...")
→ 마우스 클릭 시뮬레이션
↓
[턴 2] GIMP 메인 화면 스크린샷
→ (1,000 토큰)
→ "파일 열기 클릭"
↓
... (총 4-5턴, 5,000+ 토큰 소비)
MCP 서버 접근
[턴 1] MCP 스키마 주입
- gimp 서버의 1,200개 메서드 스키마 (~300 토큰)
- 파라미터 정보, 반환값 타입 등
[턴 2] "image.resize(width=1920, height=1080) 호출"
→ JSON RPC 통신
→ 결과 수신
토큰 사용: 300 + (각 호출 시 스키마 반복 주입) = 300-500
CLI-Anything 접근
[턴 1] `cli-anything-gimp --help`
→ (200 토큰, 한 번만)
→ 에이전트가 모든 명령어 학습
[턴 2] `cli-anything-gimp image resize --width 1920 --height 1080`
→ 직접 실행
→ JSON 결과 (구조화, 파싱 쉬움)
토큰 사용: ~200 (턴당)
비교 표
| 메트릭 | Computer Use | MCP | CLI-Anything |
| 첫 호출 토큰 | 1,000+ | 300 | 200 |
| 재호출 토큰 | 1,000 | 300 | 200 |
| 턴 수 | 4-5 | 2-3 | 1-2 |
| 총 토큰 (5회 작업) | 5,000+ | 1,500 | 1,000 |
| 효율성 | 기준 | -70% | -80% |
속도 비교 (벤치마크)
# 작업: GIMP에서 10개 이미지 리사이징
# Computer Use
실행 시간: 85초 (화면 인식 지연 누적)
레이턴시 (턴당): 17초
# MCP 서버
실행 시간: 12초
레이턴시 (턴당): 3초
# CLI-Anything
실행 시간: 2.3초
레이턴시 (턴당): 0.5초
핵심: CLI가 구조화된 텍스트 입출력이기 때문에 화면 인식 지연 완전 제거.
아키텍처: 어떻게 자동 생성이 가능할까?
소스코드 분석 파이프라인
GIMP 소스코드 (1.5M 줄)
↓
[1] 함수 시그니처 추출
- gimp_image_new(width: int, height: int, type: enum) → Image
- gimp_layer_new(...) → Layer
- gimp_drawable_edit_... → bool
↓
[2] 의존성 그래프 구성
- gimp_image_new() → 사전 호출 불필요
- gimp_layer_new() → gimp_image_new() 필수 (이미지가 있어야 함)
- gimp_drawable_edit_...() → 레이어 필수
↓
[3] 명령어 그룹화
project:
- new (→ gimp_image_new)
- open (→ gimp_file_load)
- save (→ gimp_file_save) layer:
- add (→ gimp_layer_new)
- delete (→ gimp_drawable_delete)
IDLE └→ PROJECT_LOADED ├→ LAYER_SELECTED │ └→ FILTER_APPLIED └→ RENDERED↓ [4] 상태 머신 설계↓ [6] 테스트 케이스 생성↓ [5] Click CLI 자동 생성 ```python @project.command() @click.option('--width', type=int) @click.option('--height', type=int) def new(width, height): result = gimp.pdb.gimp_image_new(width, height, RGB) return resultproject new --width 1920 --height 1080→ Image 객체 생성layer add --name "Layer1"→ 레이어 추가- ... ↓ [7] 배포
- setup.py 생성
- PATH에 설치
cli-anything-gimp --help완성 ```
주요 기술 스택
소스코드 분석:
└─ AST (Abstract Syntax Tree) 파싱
└─ GIMP의 Python/C 코드 → 함수 시그니처 추출
명령어 설계:
└─ 그래프 이론 (의존성 분석)
└─ 상태 머신 (워크플로우 모델링)
생성:
└─ Jinja2 (코드 템플릿)
└─ Click (CLI 프레임워크)
테스트:
└─ pytest + 실제 소프트웨어 백엔드 통합
CLI vs MCP 논쟁: 2026년 개발자 커뮤니티의 뜨거운 주제
Google Workspace CLI 개발자의 통찰
Justin Poehnelt (Google Workspace CLI 개발자):
"CLI의 1차 소비자가 더 이상 사람이 아니라 AI 에이전트다"
논쟁의 배경
2026년 초, 기술 커뮤니티에서 "CLI vs MCP" 논쟁이 핫해졌습니다.
MCP 진영 주장:
- "표준 프로토콜이 필요하다"
- "스키마 기반이 더 명확하다"
- "도구 발견(Tool Discovery)이 자동화된다"
CLI 진영 주장 (CLI-Anything 팀):
- "대부분의 소프트웨어가 이미 CLI를 지원한다"
- "소스코드만 있으면 자동으로 생성 가능하다"
- "토큰 효율과 속도가 MCP보다 낫다"
CLI-Anything의 입장
CLI-Anything은 다음을 보여줍니다:
- MCP가 없어도 가능: 자동 분석으로 CLI 생성
- 효율성 우위: 토큰 33% 절감
- 확장성: 소프트웨어 추가 시간 최소 (자동화)
- 신뢰성: 실제 백엔드 호출 (대체 구현 없음)
설치 & 사용 가이드
설치
방법 1: 수동 설치 (권장)
# 저장소 클론
git clone https://github.com/HKUDS/CLI-Anything.git
cd CLI-Anything
# 플러그인 설치
cp -r cli-anything-plugin ~/.claude/plugins/cli-anything
# Claude Code 재로드
/reload-plugins
방법 2: Claude Code 마켓플레이스
/plugin install HKUDS/CLI-Anything
CLI 생성
# GIMP 소스코드 분석 → CLI 자동 생성
/cli-anything ./gimp
# Blender
/cli-anything ./blender
# 다른 소프트웨어
/cli-anything /path/to/software/source
사용 예시
예제 1: GIMP 이미지 처리 배치
# 새 프로젝트 생성
cli-anything-gimp project new \
--width 1920 --height 1080 \
--output poster.json
# JSON 출력 (에이전트가 파싱하기 쉬움)
cli-anything-gimp --json \
layer add -n "Background" \
--type solid --color "#1a1a2e"
# 필터 적용
cli-anything-gimp filter apply \
--filter blur --radius 5
# 저장
cli-anything-gimp project save \
--output final.xcf
예제 2: Blender 3D 렌더링 배치
# 씬 생성
cli-anything-blender project new --output scene.blend
# 모델 로드
cli-anything-blender model import \
--project scene.blend \
--file model.obj \
--scale 2.0
# 카메라 설정
cli-anything-blender camera set \
--project scene.blend \
--position "0,5,10" \
--rotation "45,0,0"
# 렌더링
cli-anything-blender render \
--project scene.blend \
--engine cycles \
--samples 256 \
--output render.png
예제 3: 에이전트 통합
# Claude Code에서 에이전트가 자동으로 실행
import subprocess
import json
def resize_images_with_gimp(input_files):
for file in input_files:
# CLI 실행 → JSON 파싱
result = subprocess.run(
['cli-anything-gimp', 'image', 'resize',
'--width', '1920', '--height', '1080',
'--input', file, '--json'],
capture_output=True, text=True
)
data = json.loads(result.stdout)
print(f"Resized {file} → {data['output_path']}")
개발팀: HKUDS의 신뢰도와 트랙 레코드
Chao Huang 교수
- 소속: 홍콩대학교 (HKU) Data Intelligence Lab (HKUDS) 디렉터
- 학문적 영향력:
- Google Scholar 인용: 11,000+
- h-index: 55 (매우 높음)
- 상위 1% 인용 연구자 (Elsevier 선정)
HKUDS 연구실
- GitHub Stars 합계: 77,000+ (글로벌 Top-200)
- 대표 프로젝트:
- LightRAG (29,000+ Stars) - RAG 방식 혁신
- RAG-Anything - 범용 RAG 도구
- DeepCode - 코드 이해 모델
- AutoAgent - 자동 에이전트 생성
신뢰성 평가
| 지표 | 평가 |
| 논문 인용도 | ⭐⭐⭐⭐⭐ (11,000+) |
| 실전 오픈소스 | ⭐⭐⭐⭐⭐ (77,000+ Stars) |
| 커뮤니티 반응 | ⭐⭐⭐⭐⭐ (2,100 Stars in 2주) |
| 기술 깊이 | ⭐⭐⭐⭐⭐ (1,436 테스트) |
결론: "논문만 쓰는 연구실"이 아니라, 실무에 바로 적용 가능한 오픈소스를 지속적으로 내놓는 팀입니다.
로드맵과 향후 전망
공식 로드맵
더 많은 애플리케이션 카테고리 지원
- CAD 도구 (AutoCAD, Fusion 360)
- DAW (Digital Audio Workstation)
- IDE 및 코드 에디터
- EDA 도구 (전자 설계)
- 과학/수학 도구
벤치마크 스위트
- 에이전트 작업 완료율 측정
- 성능 비교 프레임워크
커뮤니티 CLI 하네스
- 사용자가 기여한 CLI 공유 플랫폼
다중 에이전트 프레임워크 지원
- Claude Code (현재)
- OpenClaw, nanobot, Cursor 등
비공개 소프트웨어 지원
- 상용 소프트웨어 API 패키징
- 웹 서비스 CLI 자동 생성
SKILL.md 생성 (가장 흥미로운 기능)
- CLI-Anything으로 생성된 CLI들이 에이전트 "스킬"로 인식
- 에이전트가 도구를 자동으로 발견하고 조합
- "메타 에이전트" 생태계 형성
미래 비전
[전체 소프트웨어 생태계]
├─ GIMP (이미지)
├─ Blender (3D)
├─ Inkscape (벡터)
├─ Audacity (오디오)
├─ AutoCAD (CAD)
├─ Ableton Live (DAW)
└─ ... (모든 소프트웨어)
↓
CLI-Anything 자동 변환
↓
각 소프트웨어 전용 "스킬"
↓
AI 에이전트가 자유롭게 조합
↓
"Making ALL Software Agent-Native"
FAQ (자주 묻는 질문)
Q1: CLI-Anything으로 생성한 CLI는 상업적으로 사용할 수 있나요?
A: 네. CLI-Anything은 MIT 라이선스이므로 상업적 사용이 가능합니다. 다만 대상 소프트웨어의 라이선스는 별도로 확인해야 합니다. 예: GIMP (GPL) → 생성된 CLI도 GPL 따름
Q2: 소스코드가 없는 상용 소프트웨어에도 사용할 수 있나요?
A: 현재는 소스코드가 있는 오픈소스 소프트웨어를 대상으로 합니다. 로드맵에 "비공개 소프트웨어/웹 서비스 API 패키징" 지원이 포함되어 있습니다.
Q3: MCP 서버가 이미 있는 소프트웨어라면 CLI-Anything을 써야 하나요?
A: MCP 서버가 잘 구축되어 있다면 그대로 사용해도 됩니다. CLI-Anything을 사용하면 좋은 경우:
- MCP 서버가 없는 소프트웨어
- 토큰 효율이 중요한 경우 (33% 절감)
- 여러 소프트웨어를 동일한 방식으로 통합하고 싶을 때
Q4: 어떤 에이전트 프레임워크와 호환되나요?
A: CLI 호출이 가능한 모든 에이전트 프레임워크와 호환:
- Claude Code (기본)
- OpenClaw
- nanobot
- Cursor AI
- 기타 CLI 기반 에이전트
Q5: 생성된 CLI의 성능은 얼마나 좋나요?
A: 대부분 매우 우수합니다:
- GIMP CLI: 첫 실행 ~500ms, 재실행 ~100ms
- Blender CLI: 첫 실행 ~2초 (Blender 초기화 비용), 재실행 ~500ms
- 의존성: 실제 소프트웨어의 성능 = CLI의 성능
참고 자료
- CLI-Anything 공식 GitHub - 소스코드, 설치 가이드, 예제
- Chao Huang 교수 공식 발표 - 프로젝트 비전 및 기술 세부사항
- Yuhao Yang 기여자 설명 - 핵심 기술 설명 및 벤치마크
- HKUDS 연구실 - 연구팀 프로필 및 프로젝트 포트폴리오
- CLI is the New MCP 논쟁 - CLI vs MCP 배경
- Why CLI Tools Are Beating MCP for AI Agents - CLI 장점 상세 분석
마무리
CLI-Anything은 "Making ALL Software Agent-Native"라는 슬로건처럼, 모든 소프트웨어를 AI 에이전트가 자연스럽게 사용할 수 있는 세상을 목표로 합니다.
GUI 시대가 끝나는 것은 아니지만, AI 에이전트에게는 CLI가 모국어입니다. 2주 만에 2,100+ Stars를 받은 것은 개발자 커뮤니티가 이 필요성에 공감하고 있다는 강력한 증거입니다.
AI 에이전트를 활용한 자동화를 고려하고 있다면, CLI-Anything은 검토해볼 가치가 있는 도구입니다. 특히 토큰 효율과 빌드 속도가 중요한 대규모 에이전트 워크플로우에서는 더욱 그렇습니다.
Comments
Join the discussionNo comments yet. Be the first to comment.
