홈으로 돌아가기

AI CLI용 PromptPilot: 작업 스케줄러

PromptPilot — Claude Code와 같은 AI CLI용 큐 스케줄러. CLI, Web UI, Telegram 봇 지원, 속도 제한 처리 및 세션 재개. SQLite + 단일 스레드 워커 아키텍처로 안정성 보장.

PromptPilot을 사용한 AI CLI 자동화: 봇 및 큐
Advertisement 728x90

PromptPilot: AI CLI 도구를 위한 큐 스케줄러

PromptPilot는 Claude Code, Codex, Qwen과 같은 AI CLI 도구에 대한 작업을 큐에 넣을 수 있게 해줍니다. 이 도구는 CLI, 웹 인터페이스 또는 텔레그램 봇을 통해 일정에 따라 프롬프트를 실행합니다. 우선순위, 속도 제한 시 재시도, 세션 복구를 지원합니다. 작업자는 한 번에 하나의 작업만 처리하여 API 제한 경쟁을 방지합니다.

실제 시나리오: 업무 전 제한을 미리 사용하기, 월말 전 남은 할당량 사용하기, 봇을 통해 원격으로 작업 큐에 넣기. 작업은 동시성을 위해 WAL 모드의 SQLite에 저장됩니다.

실용적인 사용 사례

이 도구는 개발자의 일상적인 문제를 해결합니다:

Google AdInline article slot
  • 제한 미리 사용하기: 세션이 일찍 시작되도록 오전 5시에 가벼운 프롬프트를 예약합니다. 오전 9시까지 제한이 부분적으로 사용되고, 오전 10시에 재설정됩니다.
  • 야간 속도 제한: 늦은 밤에 재설정 시간에 작업을 큐에 넣으면 아침에 결과가 준비됩니다.
  • 원격 실행: 택시에서 봇을 통해 코드 감사를 보내면, 돌아왔을 때 제한이 재설정되고 작업이 완료됩니다.
  • 모바일 수정: Telegram에서 직접 테스트와 함께 payments.py에 유효성 검사를 추가합니다.
  • Claude 스킬: 봇의 /skills 또는 UI의 버튼을 통해 demo-invite.md와 같은 스킬을 호출합니다.

CLI 실행 예시:

pp add "api.py에 대한 테스트 작성" --dir C:\Projects\PromptPilot -p 1 -a "2026-04-01T05:00"

시스템 아키텍처

인터페이스(CLI, 웹 UI, TG 봇)는 SQLite(~/.promptpilot)에 기록합니다. 작업자는 5초마다 큐를 확인하고 AI CLI로 서브프로세스를 실행합니다.

인터페이스 → SQLite (WAL) → 작업자 (5초마다 확인) → 서브프로세스 (claude.exe | codex | qwen)
서버: FastAPI + JS UI
봇: Telegram API

프로세스는 독립적입니다:

Google AdInline article slot
  • 작업자: 단일 스레드, 한 번에 하나의 작업. 속도 제한 시 지수 백오프.
  • 서버: :8420에서 REST, 바닐라 JS UI.
  • : 단계별 대화, 전화번호로 인증.

충돌 복구: 시작 시 실행 중인 작업은 보류 상태로 롤백됩니다.

설치 및 구성

저장소를 복제하고 편집 가능하게 설치합니다:

git clone https://github.com/your/promptpilot
cd PromptPilot
pip install -e .

.env 파일 생성:

Google AdInline article slot
PP_CLAUDE_EXE=C:\Users\username\.local\bin\claude.exe
PP_DEFAULT_CLI=claude
PP_PROJECTS_ROOT=C:\Projects
PP_TASK_TIMEOUT=300
PP_BASE_DELAY=60
PP_MAX_DELAY=3600
PP_TG_TOKEN=...
PP_TG_ALLOWED_PHONES=+79001234567
PP_TASK_PASSWORD=12345

서비스 실행

CLI 모드:

pp worker  # 큐 처리
pp server  # http://127.0.0.1:8420
pp bot     # Telegram
pp start   # 작업자 + 서버

트레이 (Windows용 .exe): 더블클릭 → 트레이 아이콘 (🟢/🟠/⚫). 빌드: \.build.ps1 → dist/pp.exe (40MB, 독립 실행형).

PowerShell: \.start.ps1 (모든 서비스), \.stop.ps1.

관리 인터페이스

CLI

pp add "db.py 리팩터링" --dir /path -p 5
pp add --file prompts.txt
pp list --status pending

웹 UI (:8420)

  • 프롬프트 + Ctrl+Enter
  • Claude용 스킬
  • 일정 사전 설정
  • 상태 필터
  • 세부 정보: 토큰, 비용, 모델

5초마다 자동 새로고침, 단일 HTML 파일.

Telegram 봇

인증: 연락처 공유 (PP_TG_ALLOWED_PHONES). 단계별: 프롬프트 → 제공자 → 우선순위 → 디렉토리 → 일정.

명령어: /skills, 페이지네이션된 작업 목록, 버튼이 있는 세부 정보 [답장|삭제].

속도 제한 처리

stderr를 통해 감지: "rate limit", "429", "quota exceeded".

지수 백오프:

def compute_next_run(retry_count: int) -> datetime:
    delay = min(BASE_DELAY * (2 ** retry_count), MAX_DELAY)
    jitter = delay * 0.1 * (random.random() * 2 - 1)
    return datetime.now(timezone.utc) + timedelta(seconds=delay + jitter)

지연: 60초 → 120초 → ... → 3600초 + ±10% 지터. 최대 재시도 후 실패.

대화 계속하기

Claude가 "auth.py 또는 auth_v2.py?"라고 물을 수 있습니다. 작업은 session_id를 저장합니다. 봇/UI에서: 💬 답장--resume <session_id>가 있는 새 작업.

핵심 포인트

  • 단일 스레드 작업자는 API 제한에 대한 경쟁 조건을 보장합니다.
  • WAL SQLite + 충돌 복구로 신뢰성 확보.
  • 세 가지 인터페이스: 속도를 위한 CLI, 편의를 위한 UI/봇.
  • 지터가 있는 지수 백오프로 속도 제한 처리.
  • 스킬 및 Claude Code 세션 재개 지원.

— Editorial Team

Advertisement 728x90

다음 읽기