
AI 코딩 CLI가 "Hi"와 "Thanks"로 토큰을 낭비하지 않도록 방지하는 방법
요약
AI 코딩 CLI 사용 시 발생하는 불필요한 인사말(hi, thanks 등)로 인한 토큰 및 모델 호출 낭비를 방지하는 Python 스크립트 'Pleasantries'를 소개합니다. 정규표현식을 활용해 인사말만 포함된 프롬프트를 가로채 차단함으로써 개발 효율성을 높입니다.
핵심 포인트
- 인사말만 포함된 프롬프트를 차단하여 토큰과 모델 호출 비용 절감
- 정규표현식 전체 일치(fullmatch) 방식을 사용하여 실제 작업이 포함된 프롬프트는 허용
- Claude Code, Gemini CLI, Cursor 등 15개 이상의 AI 코딩 CLI 지원
- 외부 의존성 없는 단일 Python 스크립트로 간편하게 설치 및 사용 가능
이 블로그 포스트에서는 **Pleasantries**라고 불리는 작은 Python 스크립트가 어떻게 여러분의 AI 코딩 CLI가 "hi", "ok", 또는 "thank you"를 입력할 때마다 전체 모델 호출(model call)을 소모하는 것을 막을 수 있는지 살펴보겠습니다. 저는 Claude Code와 Qwen Code에 보내는 제 프롬프트들이 순전히 습관적으로 인삿말부터 시작하는 것을 발견했고, 그 각각이 실제 작업 가치 없이 조용히 토큰과 시간을 소모한다는 점을 깨달은 후 이 도구를 만들었습니다.
Pleasantries는 인사말만 포함된 프롬프트가 AI 코딩 CLI 모델에 도달하기 전에 가로채는 가벼운 Python 프리훅 (pre-hook) 스크립트입니다. 이 도구는 정규표현식 전체 일치 (regex fullmatch) 로직을 사용하여 "hi", "thank you", 또는 "ok"와 같은 입력을 차단하는 동시에, 인사말 단어를 포함하더라도 실제 작업 내용을 담고 있는 프롬프트는 허용합니다.
이 도구는 Claude Code, Gemini CLI, Cursor를 포함한 15개의 AI 코딩 CLI를 지원하며, 외부 의존성 없이 단일 Python 스크립트로 설치할 수 있습니다. 사용자는 최소한의 노력으로 차단 목록 (blocklist)을 사용자 정의하고 새로운 CLI 어댑터를 추가할 수 있습니다.
1. 왜 Pleasantries를 만들었는가
Pleasantries는 AI 코딩 CLI를 위한 프리훅 (pre-hook) 스크립트입니다. 이는 "hi", "hello", "ok", "thank you"와 같이 인사말만 있는 프롬프트가 모델에 도달하기 전에 차단합니다.
이 프로젝트를 시작하게 된 관찰 결과는 다음과 같습니다. AI 코딩 어시스턴트는 작업 도구이지, 채팅 친구가 아닙니다. 모든 "hello"는 여전히 전체 왕복 (round trip) 과정을 트리거합니다: CLI가 이를 읽고, 모델로 전송하며, 모델이 응답합니다. 이는 실제 작업 내용이 없는 프롬프트를 위해 낭비되는 호출이자, 낭비되는 토큰이며, 여러분의 흐름 (flow)을 끊는 작은 방해 요소입니다.
저는 부하 테스트 (load test)든 모델 호출 (model call)이든 효율성에 대해 생각하는 데 많은 시간을 할애하기 때문에, 이를 자동화하여 해결하는 것이 쉬운 승리(easy win)라고 느꼈습니다.
2. 작동 방식
아이디어는 간단합니다. 훅 (hook)이 모델에 도달하기 전에 프롬프트를 가로챕니다:
"hi"를 입력함 --> 훅이 프롬프트를 읽음 --> 정규표현식 전체 일치 (Regex fullmatch) --> 차단됨
"fix auth bug"를 입력함 --> 훅이 프롬프트를 읽음 --> 일치하지 않음 --> 프롬프트 진행
내부적으로 매처(matcher)는 입력값을 정규화(소문자 변환, 문장 부호 제거, 공백 압축)하고, 부분 일치(partial match)가 아닌 전체 일치(fullmatch)를 사용하여 프롬프트 전체가 인사말인지 확인합니다. 이 차이는 매우 중요합니다. 인사말 단어를 포함하고 있더라도 실제 작업(task)을 함께 담고 있는 프롬프트는 수정 없이 통과됩니다.
아래 표에서 보는 바와 같이, 각 CLI는 훅(hook)이 프롬프트를 거부하기로 결정했을 때 이를 차단하는 고유한 방식을 가지고 있습니다:
| 차단 방식 | CLI |
|---|---|
| stderr + 종료 코드(exit code) 2 | Claude, Kiro, Copilot Chat, Copilot CLI, Cursor, Factory Droid, Kimi Code, Devin |
| ... |
3. 지원되는 AI 코딩 CLI
Pleasantries는 현재 Claude Code, Codex CLI, Gemini CLI, Cursor, Copilot Chat, Copilot CLI, Qwen Code, Junie CLI, Factory Droid, Kimi Code, grok-cli, Kun, Open Interpreter, Kiro, 그리고 Devin CLI를 포함한 15개의 CLI에 훅(hook)을 연결할 수 있습니다.
몇몇 도구들은 아직 연결할 수 있는 훅(hook) 시스템이 없으므로 지원되지 않습니다: CodeBuddy, OpenCode, Aider, Kilo Code, Trae, Hermes, Pi, OpenClaw, Amp, Google Antigravity, Cline, oh-my-pi, Freebuff, 그리고 Command Code.
4. 간단한 예시
예를 들어, Claude Code를 실행하고 실제 요청을 하기 전에 습관적으로 "hi"라고 입력한다고 가정해 봅시다. 훅(hook)이 설치되어 있다면, 해당 프롬프트는 모델에 도달하지 않습니다:
| 프롬프트 (Prompt) | 결과 (Result) |
|---|---|
hi | 차단됨 (Blocked) |
| ... | |
| 마지막 두 행을 주목해 보세요. "hello world program in python"에는 hello라는 단어가 포함되어 있지만, 이는 명백히 실제 작업이므로 그대로 통과합니다. 이러한 전체 일치 (fullmatch) 로직 덕분에 이 도구가 짜증 나는 오탐 (false-positive) 기계가 되지 않도록 유지할 수 있습니다. |
5. 1분 안에 설치하기
github.com/QAInsights/pleasantries로 이동하여 저장소 (repo)를 클론 (clone)하세요. 그런 다음 설치 프로그램을 실행합니다:
python install.py
설치 프로그램은 다음을 수행합니다:
block_pleasantries.py를~/.pleasantries/로 복사합니다.- 사용자의 머신에 어떤 AI 코딩 CLI가 설치되어 있는지 감지합니다.
- 어떤 CLI에 훅 (hook)을 설치할지 선택하게 합니다.
- 이미 설치된 것은 건너뛰고, 각 CLI의 설정 (config)에 훅을 병합합니다.
직접 수동으로 연결하고 싶다면, 다음은 Claude Code 설정의 예시입니다. 이를 ~/.claude/settings.json에 추가하세요:
{
"hooks": {
"UserPromptSubmit": [
...
block_pleasantries.py의 실제 경로로 교체하면 설정이 완료됩니다. 지원되는 다른 모든 CLI도 각자의 설정 파일을 통해 동일한 패턴을 따르며, 모든 내용은 README에 문서화되어 있습니다.
나중에 모든 훅을 제거하려면:
python install.py --uninstall
요구 사항은 가볍습니다: Python 3.10 이상, 표준 라이브러리 (json, re, sys) 외의 외부 의존성 없음, 그리고 macOS, Linux, Windows에서 실행됩니다.
6. 차단 목록 (blocklist) 커스텀하기
차단 목록은 block_pleasantries.py 내부의 PLEASANTRY_PATTERNS 정규 표현식 (regex)에 있으며, 카테고리별로 그룹화되어 있습니다:
- 인사 (Greetings): hi, hello, hey, howdy, good morning 및 유사한 표현
- 확인 (Acknowledgments): ok, sure, yeah, got it
- 감사 (Thanks): thank you, thanks, thx, ty
- 부탁 (Please): please, pls, plz
- 작별 인사 (Farewells): bye, goodbye, see ya, later
만약 팀에서 Slack 스타일의 "yo"나 "np"와 같은 자체적인 약어를 사용한다면, 해당 매칭 카테고리에 추가하기만 하면 됩니다. 그러면 다음 실행 시 훅이 이를 감지합니다.
완전히 새로운 CLI에 대한 지원을 추가하는 것도 매우 간단합니다. 핵심 매처(matcher)는 CLI에 구애받지 않으며(CLI-agnostic), 각 CLI는 공유된 ADAPTERS 딕셔너리에 연결하기 위한 작은 어댑터(adapter) 함수만 필요하기 때문입니다.
7. 마무리
Pleasantries는 작지만 실질적인 문제를 해결하는 작은 도구입니다. 만약 여러분이 매일 여러 개의 AI 코딩 CLI를 사용하면서, 실제 질문을 하기 전에 습관적으로 "hi"라고 입력하는 자신을 발견한다면, 이 훅(hook)은 매번 낭비되는 모델 호출을 조용히 아껴줄 것입니다.
즐거운 테스트 되세요!
여러분도 습관적으로 AI 코딩 어시스턴트에게 인사를 하시나요, 아니면 저만 이런 죄를 짓고 있는 건가요?
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기

