TL;DR
- Smartly는 자연어 한 문장을 단일 셸 명령어로 변환하고 즉시 실행하며, 여러 단계 스크립트는 허용하지 않는 도구임.
sed,date,stat등의 GNU·BSD 차이와 현재 디렉터리 및 Git 정보를 반영해 환경에 맞는 명령어를 생성함.- Anthropic·OpenAI API 또는 로그인된
claude·codexCLI 세션을 제공자로 선택할 수 있음. - 기본 실행 모드는 확인 없이 명령어를 실행하는 auto이며,
confirm,confirm-destructive,--dry-run으로 실행 전 확인을 추가할 수 있음. --learn모드는 명령어를 실행하지 않고 각 플래그·파이프·인수의 역할을 설명함.
Smartly 설치 및 시작
- Smartly는 원하는 결과를 평문으로 입력하면 해당 작업에 맞는 셸 명령어를 만들어 실행하는 도구임.
- Homebrew 설치 명령은
brew install rizwanreza/tap/smartly이며, Go 설치 명령은go install github.com/rizwanreza/smartly-cli/cmd/smartly@latest임. - 설치 후
smartly onboard를 실행해 제공자, 모델, 실행 모드를 선택함. - GitHub 저장소
자연어를 명령어로 변환하는 방식
- 결과를 한 문장으로 설명하면 Smartly가 실행 가능한 셸 명령어 하나를 반환함. 파이프,
&&, 리디렉션은 허용하지만 여러 단계 스크립트는 허용하지 않음. - 예를 들어 숨김 파일을 크기순으로 표시하는 요청은
ls -lahS로 변환됨. - 지난 한 주간 저장소의 변경 내용을 묻는 요청은
git log --oneline --since='1 week ago'로 변환됨. - 포트 3000을 사용 중인 프로세스를 종료하는 요청은
kill $(lsof -ti :3000)으로 변환됨. confirm-destructive모드에서는 병합된 브랜치 삭제 요청에 확인 절차가 적용되며, 예시 명령어는git branch --merged main | grep -vE '^\\*| main$' | xargs git branch -d임.- YAML 파일에서
api.example.com을api.internal로 바꾸는 요청은 macOS의 BSDsed에 맞춰sed -i ''를 사용하며, Linux에서는sed -i를 생성함. - 기본 설정인 auto 모드에서는 생성된 명령어가 실제로 실행됨.
주요 기능
- 자연어에서 명령어로 변환: 한 문장으로 요청하면 파이프·
&&·리디렉션을 포함할 수 있는 단일 실행 명령어를 생성함. - macOS·Linux 환경 인식: 시스템의
sed,date,stat등이 GNU 또는 BSD 중 어떤 구현인지 확인함. Homebrewcoreutils가 설치된 Mac처럼 두 구현이 함께 있는 경우도 고려함. - 디렉터리 및 Git 정보 활용: 기본적으로 범위를 제한한 디렉터리 목록과 Git 브랜치·상태·워크트리 정보를 전송해, 현재 존재하는 항목을 기준으로 요청을 해석함.
- 제공자 네 가지: API 키를 사용하는 Anthropic·OpenAI와 기존 로그인 세션을 사용하는
claude-cli·codex-cli를 지원함. - 실행 모드 네 가지: 기본 auto 모드는 즉시 실행,
confirm은 매번[y/N]확인,confirm-destructive는 안전하다고 인식하지 못한 명령어에 확인을 요청,--dry-run은 명령어만 출력하고 실행하지 않는 방식임. - 명령어 설명 모드:
--learn은 명령어를 실행하지 않고 각 플래그·파이프·인수를 순서대로 설명함.
설치 전 확인할 실행 안전 설정
- 기본값인 auto 모드는 확인 프롬프트 없이 명령어를 즉시 실행하며, 파괴적인 명령어도 포함됨. 이 모드에서는 모델이 정확히 하나의 깔끔한 명령어 행을 반환했는지만 확인함.
confirm모드는 명령어를 출력한 뒤[y/N]입력을 기다림./dev/tty에서 직접 입력을 읽으며, 터미널이 없으면 실행을 거부함.confirm-destructive모드는 로컬 분류기가 생성 명령어를 확인하고, 안전하다고 인식하지 못하는 명령어에 확인을 요청함. 파괴적인 명령어뿐 아니라 분류되지 않은 명령어도 확인 대상임.confirm-destructive는 최선을 다하는 안전장치이며 샌드박스가 아님. 모든 명령어에 확인을 적용하려면confirm을 사용함.- 설정 파일 위치는
~/.config/smartly/config.yaml이며, 실행 모드를confirm또는confirm-destructive로 지정할 수 있음. smartly --dry-run remove every merged branch처럼--dry-run을 사용하면 명령어를 출력만 하고 실행하지 않음.
제공자 및 인증
- Anthropic과 OpenAI는 사용자의 API 키로 API를 호출함.
openai제공자는 OpenAI 호환 엔드포인트도 사용할 수 있으며, 로컬vLLM, Ollama, LM Studio도 포함됨. anthropic은 기본 제공자이며, API 키 외에는 별도 설정이 필요하지 않음. 인증 환경 변수는ANTHROPIC_API_KEY임.openai의 인증 환경 변수는OPENAI_API_KEY이며 기본 모델이 없으므로providers.openai.model을 직접 설정해야 함.claude-cli는 로그인된claude세션을 사용하므로 API 키가 필요 없고 Claude 구독을 활용함. 도구 접근 권한은 없음.codex-cli는 로그인된codex세션을 사용하므로 API 키가 필요 없고 ChatGPT 구독을 활용함.--sandbox read-only로 실행됨.- CLI 제공자는 기존 구독을 사용해 별도의 API 요금을 피할 수 있지만, 실행 속도는 더 느림.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요