Claude Code, Codex, Antigravity CLI에 사운드 훅 추가.
각 에이전트마다 임진록 2+ 조선의 반격 일꾼 목소리가 이벤트에 반응.
프로젝트 루트에서 실행. 동일한 명령어 재실행으로 업데이트 가능.
jq 미설치 시 Homebrew로 먼저 설치:
brew install jq
curl -fsSL https://raw.githubusercontent.com/qus0in/1ggun/main/install.sh | bash
# Debian / Ubuntu
sudo apt install -y curl jq
# Fedora / RHEL
sudo dnf install -y curl jq
curl -fsSL https://raw.githubusercontent.com/qus0in/1ggun/main/install.sh | bash
Git Bash 또는 WSL2 환경 권장. PowerShell · cmd 미지원.
JSON 처리 도구 자동 감지 순서: 파일 미존재 시 직접 생성 → jq → python → 사용자 확인.
Git Bash (Git for Windows 포함):
curl -fsSL https://raw.githubusercontent.com/qus0in/1ggun/main/install.sh | bash
WSL2 (Ubuntu 등):
sudo apt install -y curl jq
curl -fsSL https://raw.githubusercontent.com/qus0in/1ggun/main/install.sh | bash
.agents/ sound_hook.sh # 훅 실행 스크립트 sound/ # MP3 파일들 hooks.json # AGY 훅 설정 .claude/ settings.json # Claude Code 훅 설정 .codex/ hooks.json # Codex 훅 설정
| OS | 재생 방식 |
|---|---|
| macOS | afplay |
| Linux | paplay / aplay / ffplay / mpg123 (순서대로 시도) |
| Windows (Git Bash / WSL2) | PowerShell MediaPlayer |
| 에이전트 | 인자 | 목소리 | 비고 |
|---|---|---|---|
| Claude Code | cc | 조선 일꾼 | |
| Codex | codex | 일본 일꾼 | 훅 실행 시 사용자 승인 필요 |
| Antigravity CLI | agy | 명 일꾼 |
Codex: 훅 명령어 실행 전 터미널에서 승인 여부를 묻는 프롬프트가 표시됨. 매번 수동으로 허용해야 사운드가 재생됨.
| 이벤트 | cc (조선 일꾼) | codex (일본 일꾼) | agy (명 일꾼) |
|---|---|---|---|
SessionStart | 찾으셨나요 | 갑니다요 | - |
UserPromptSubmit | 그렇게 합죠 | 녜녜 그렇게 합죠 | - |
PermissionRequest | 열심히 하겠습니다 | 걱정마십쇼 | - |
Notification | 말씀하세요 | - | - |
Stop | 말씀하세요 | 어떤 일을 할까요 | 분부만 내리세요 |
PreInvocation | - | - | 네네 알겠습니다요 |
.agents/sound/ 하위 구성. 이벤트 매핑에 쓰이지 않는 파일도 포함되어 있으며 커스터마이징에 활용 가능.
sound/ko/)| 파일 | 대사 | 미리 듣기 |
|---|---|---|
ko_s1.mp3 | 찾으셨나요 | |
ko_s2.mp3 | 말씀하세요 | |
ko_s3.mp3 | 예 | |
ko_h1.mp3 | 일하러 갑니다요 | |
ko_h2.mp3 | 그렇게 합죠 | |
ko_h3.mp3 | 열심히 하겠습니다 | |
ko_m1.mp3 | 갑니다요 | |
ko_m2.mp3 | 예 갑니다 |
sound/ch/)| 파일 | 대사 | 미리 듣기 |
|---|---|---|
ch_s1.mp3 | 일해야죠 | |
ch_s2.mp3 | 분부만 내리세요 | |
ch_m1.mp3 | 네네 알겠습니다요 | |
ch_h1.mp3 | 그렇게 합죠 |
sound/jp/)| 파일 | 대사 | 미리 듣기 |
|---|---|---|
jp_s1.mp3 | 어떤 일을 할까요 | |
jp_s2.mp3 | 녜녜녜녜 | |
jp_h1.mp3 | 걱정마십쇼 | |
jp_h2.mp3 | 녜녜 그렇게 합죠 | |
jp_m1.mp3 | 갑니다요 | |
jp_m2.mp3 | 아 녜녜 |
설치 스크립트가 자동으로 작성하는 훅 설정. 수동 구성 시 참고.
.claude/settings.json{
"hooks": {
"SessionStart": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh cc SessionStart", "timeout": 30}]}],
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh cc UserPromptSubmit", "timeout": 30}]}],
"PermissionRequest": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh cc PermissionRequest", "timeout": 30}]}],
"Notification": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh cc Notification", "timeout": 30}]}],
"Stop": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh cc Stop", "timeout": 30}]}]
}
}
.codex/hooks.json{
"hooks": {
"SessionStart": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh codex SessionStart", "timeout": 30}]}],
"UserPromptSubmit": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh codex UserPromptSubmit", "timeout": 30}]}],
"PermissionRequest": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh codex PermissionRequest", "timeout": 30}]}],
"Stop": [{"hooks": [{"type": "command", "command": "bash .agents/sound_hook.sh codex Stop", "timeout": 30}]}]
}
}
.agents/hooks.json{
"AGY": {
"enabled": true,
"PreInvocation": [{"type": "command", "command": "bash sound_hook.sh agy PreInvocation", "timeout": 30}],
"Stop": [{"type": "command", "command": "bash sound_hook.sh agy Stop", "timeout": 30}]
}
}
이벤트별 재생 파일 변경 시 .agents/sound_hook.sh 수정.