1ggun

Claude Code, Codex, Antigravity CLI에 사운드 훅 추가.
각 에이전트마다 임진록 2+ 조선의 반격 일꾼 목소리가 이벤트에 반응.

설치

프로젝트 루트에서 실행. 동일한 명령어 재실행으로 업데이트 가능.

macOS

jq 미설치 시 Homebrew로 먼저 설치:

brew install jq
curl -fsSL https://raw.githubusercontent.com/qus0in/1ggun/main/install.sh | bash

Linux

# 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

Windows

Git Bash 또는 WSL2 환경 권장. PowerShell · cmd 미지원.
JSON 처리 도구 자동 감지 순서: 파일 미존재 시 직접 생성 → jqpython → 사용자 확인.

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재생 방식
macOSafplay
Linuxpaplay / aplay / ffplay / mpg123 (순서대로 시도)
Windows (Git Bash / WSL2)PowerShell MediaPlayer

에이전트별 목소리

에이전트인자목소리비고
Claude Codecc조선 일꾼
Codexcodex일본 일꾼훅 실행 시 사용자 승인 필요
Antigravity CLIagy명 일꾼

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 Code — .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 — .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}]}]
  }
}

Antigravity CLI — .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 수정.


영감

PeonPing에서 아이디어를 얻어 훅(hooks)과 셸 스크립트로 구현.

출처

사운드 원본: 게임 임진록 2+ 조선의 반격 각 진영 일꾼 유닛 효과음.
유튜브 채널 권율 영상에서 발췌: 조선 일꾼 · 명 일꾼 · 일본 일꾼

저작권 고지

  • 임진록 2+ 조선의 반격은 현재 어밴던웨어(abandonware)로 분류됨
  • 실질적인 저작권 행사 주체 없음 → 최종적으로 인천시청에 의해 몰수됨 (근거)
  • 저작권 소멸을 의미하지 않음
  • 상업적 활용 시 법적 위험 있음