verbalcoding 0.2.10 โ†’ 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/.env.example +27 -1
  2. package/README.es.md +132 -0
  3. package/README.fr.md +132 -0
  4. package/README.ja.md +132 -0
  5. package/README.ko.md +132 -0
  6. package/README.md +116 -74
  7. package/README.ru.md +132 -0
  8. package/README.zh.md +131 -0
  9. package/app-node/agent_adapters.mjs +37 -5
  10. package/app-node/agent_adapters.test.mjs +13 -1
  11. package/app-node/agent_detect.mjs +73 -0
  12. package/app-node/agent_detect.test.mjs +77 -0
  13. package/app-node/cli_install.test.mjs +5 -0
  14. package/app-node/install_config.mjs +5 -0
  15. package/app-node/main.mjs +339 -4
  16. package/app-node/notify.mjs +73 -0
  17. package/app-node/notify.test.mjs +68 -0
  18. package/app-node/plan_mode.mjs +174 -0
  19. package/app-node/plan_mode.test.mjs +153 -0
  20. package/app-node/smart_progress.mjs +94 -0
  21. package/app-node/smart_progress.test.mjs +66 -0
  22. package/app-node/stream_sentencer.mjs +61 -0
  23. package/app-node/stream_sentencer.test.mjs +64 -0
  24. package/app-node/streaming_tts_queue.mjs +48 -0
  25. package/app-node/streaming_tts_queue.test.mjs +58 -0
  26. package/app-node/text_routing.mjs +20 -0
  27. package/app-node/text_routing.test.mjs +23 -1
  28. package/docs/CONFIGURATION.md +69 -96
  29. package/docs/FRESH_INSTALL.md +105 -63
  30. package/docs/HERMES_VOICE.md +65 -0
  31. package/docs/MULTI_INSTANCE.md +16 -0
  32. package/docs/README.md +49 -0
  33. package/docs/RELEASE.md +42 -19
  34. package/docs/ROADMAP.md +38 -0
  35. package/docs/TROUBLESHOOTING.md +126 -0
  36. package/docs/USAGE.md +72 -40
  37. package/docs/assets/figures/verbalcoding-flow.svg +1 -1
  38. package/docs/i18n/CONFIGURATION.es.md +25 -0
  39. package/docs/i18n/CONFIGURATION.fr.md +25 -0
  40. package/docs/i18n/CONFIGURATION.ja.md +25 -0
  41. package/docs/i18n/CONFIGURATION.ko.md +25 -0
  42. package/docs/i18n/CONFIGURATION.ru.md +25 -0
  43. package/docs/i18n/CONFIGURATION.zh.md +25 -0
  44. package/docs/i18n/FRESH_INSTALL.es.md +27 -2
  45. package/docs/i18n/FRESH_INSTALL.fr.md +27 -2
  46. package/docs/i18n/FRESH_INSTALL.ja.md +27 -2
  47. package/docs/i18n/FRESH_INSTALL.ko.md +27 -2
  48. package/docs/i18n/FRESH_INSTALL.ru.md +27 -2
  49. package/docs/i18n/FRESH_INSTALL.zh.md +27 -2
  50. package/docs/i18n/HERMES_VOICE.es.md +46 -0
  51. package/docs/i18n/HERMES_VOICE.fr.md +46 -0
  52. package/docs/i18n/HERMES_VOICE.ja.md +46 -0
  53. package/docs/i18n/HERMES_VOICE.ko.md +65 -0
  54. package/docs/i18n/HERMES_VOICE.ru.md +46 -0
  55. package/docs/i18n/HERMES_VOICE.zh.md +46 -0
  56. package/docs/i18n/MULTI_INSTANCE.es.md +25 -0
  57. package/docs/i18n/MULTI_INSTANCE.fr.md +25 -0
  58. package/docs/i18n/MULTI_INSTANCE.ja.md +25 -0
  59. package/docs/i18n/MULTI_INSTANCE.ko.md +25 -0
  60. package/docs/i18n/MULTI_INSTANCE.ru.md +25 -0
  61. package/docs/i18n/MULTI_INSTANCE.zh.md +25 -0
  62. package/docs/i18n/README.es.md +20 -134
  63. package/docs/i18n/README.fr.md +20 -134
  64. package/docs/i18n/README.ja.md +20 -134
  65. package/docs/i18n/README.ko.md +20 -133
  66. package/docs/i18n/README.ru.md +20 -134
  67. package/docs/i18n/README.zh.md +20 -133
  68. package/docs/i18n/RELEASE.es.md +26 -1
  69. package/docs/i18n/RELEASE.fr.md +26 -1
  70. package/docs/i18n/RELEASE.ja.md +26 -1
  71. package/docs/i18n/RELEASE.ko.md +26 -1
  72. package/docs/i18n/RELEASE.ru.md +26 -1
  73. package/docs/i18n/RELEASE.zh.md +26 -1
  74. package/docs/i18n/TROUBLESHOOTING.es.md +39 -0
  75. package/docs/i18n/TROUBLESHOOTING.fr.md +39 -0
  76. package/docs/i18n/TROUBLESHOOTING.ja.md +39 -0
  77. package/docs/i18n/TROUBLESHOOTING.ko.md +39 -0
  78. package/docs/i18n/TROUBLESHOOTING.ru.md +39 -0
  79. package/docs/i18n/TROUBLESHOOTING.zh.md +39 -0
  80. package/docs/i18n/USAGE.es.md +25 -0
  81. package/docs/i18n/USAGE.fr.md +25 -0
  82. package/docs/i18n/USAGE.ja.md +25 -0
  83. package/docs/i18n/USAGE.ko.md +25 -0
  84. package/docs/i18n/USAGE.ru.md +25 -0
  85. package/docs/i18n/USAGE.zh.md +25 -0
  86. package/docs/superpowers/plans/2026-05-13-phase1-streaming-pipeline.md +122 -0
  87. package/docs/superpowers/plans/2026-05-13-phase10-push-notifications.md +152 -0
  88. package/docs/superpowers/plans/2026-05-13-phase2-agent-adapters.md +242 -0
  89. package/docs/superpowers/plans/2026-05-13-phase6-smart-progress.md +172 -0
  90. package/docs/superpowers/plans/2026-05-13-phase7-voice-plan-mode.md +108 -0
  91. package/package.json +2 -1
  92. package/scripts/cli.mjs +7 -4
  93. package/scripts/doctor.mjs +11 -0
  94. package/scripts/install.mjs +44 -1
package/.env.example CHANGED
@@ -1,17 +1,43 @@
1
1
  # Copy to .env and fill local values. Do not commit .env.
2
+ # Preferred setup commands:
3
+ # vc setup token
4
+ # vc setup channels "General,Team Voice"
2
5
 
3
6
  DISCORD_BOT_TOKEN=""
7
+ DISCORD_CLIENT_ID=""
4
8
  DISCORD_ALLOWED_USERS=""
5
9
  AUTO_JOIN_VOICE_CHANNELS="์ผ๋ฐ˜,General,general"
6
10
  TRANSCRIPT_CHANNEL_ID=""
7
11
 
8
- # Agent harness: hermes, claude-code, claude, codex, gemini, opencode, openclaw, custom
12
+ # Agent harness: hermes, claude-code, claude, codex, gemini, opencode, openclaw, aider, cursor, custom
13
+ # `vc setup` auto-detects which agents are installed and lets you pick.
9
14
  AGENT_BACKEND="hermes"
10
15
  # AGENT_LABEL="My Harness"
11
16
  # AGENT_COMMAND="my-harness run --non-interactive"
17
+ # AIDER_COMMAND="aider --no-pretty --yes-always --message"
18
+ # CURSOR_COMMAND="cursor-agent --print --prompt"
12
19
  AGENT_TASK_TIMEOUT_MS="0"
13
20
  AGENT_CHAT_TIMEOUT_MS="45000"
14
21
  AGENT_VERBOSE_PROGRESS="0" # default off; toggle in Discord with !verbose on/off
22
+
23
+ # Streaming TTS pipeline: enables sentence-by-sentence playback while the agent is still writing.
24
+ # First audio plays before the agent finishes. Default off; opt in once you've validated TTS latency.
25
+ STREAMING_TTS="0"
26
+
27
+ # Smart progress summarization. When SMART_PROGRESS_API_KEY is set, raw progress events get
28
+ # folded into a single human sentence via a small LLM (Groq OpenAI-compatible API by default).
29
+ # Without an API key it falls back to the existing regex categories.
30
+ # SMART_PROGRESS_API_KEY=""
31
+ # SMART_PROGRESS_BASE_URL="https://api.groq.com/openai/v1"
32
+ # SMART_PROGRESS_MODEL="llama-3.1-8b-instant"
33
+
34
+ # Push notification handoff for long tasks when the voice channel is empty.
35
+ # Provider: ntfy (free, no account, mobile apps) | pushover | noop.
36
+ # NOTIFY_PROVIDER="ntfy"
37
+ # NTFY_TOPIC="" # pick something unguessable; subscribe with the ntfy app
38
+ # PUSHOVER_USER=""
39
+ # PUSHOVER_TOKEN=""
40
+ NOTIFY_MIN_TASK_MS="60000" # only notify when a task ran at least this long
15
41
  LATENCY_LOG_PATH="./.logs/latency.jsonl"
16
42
  PROJECT_SESSIONS_FILE="./config/project-sessions.json"
17
43
  # Agent workflow helper: off by default. Toggle with `vc restart auto on|off`.
package/README.es.md ADDED
@@ -0,0 +1,132 @@
1
+ # VerbalCoding
2
+
3
+ <p align="center"><strong>Habla con agentes de programaciรณn CLI por voz en Discord, como en una llamada.</strong></p>
4
+
5
+ <p align="center"><a href="./README.md">English</a> ยท <a href="./README.ko.md">ํ•œ๊ตญ์–ด</a> ยท <a href="./README.ja.md">ๆ—ฅๆœฌ่ชž</a> ยท <a href="./README.zh.md">ไธญๆ–‡</a> ยท <a href="./README.fr.md">Franรงais</a> ยท <a href="./README.ru.md">ะ ัƒััะบะธะน</a></p>
6
+
7
+ <p align="center">
8
+ <img alt="npm" src="https://img.shields.io/npm/v/verbalcoding?color=CB3837&logo=npm&logoColor=white">
9
+ <img alt="Node.js" src="https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white">
10
+ <img alt="Discord" src="https://img.shields.io/badge/Discord-voice%20bridge-5865F2?logo=discord&logoColor=white">
11
+ <img alt="STT" src="https://img.shields.io/badge/STT-whisper.cpp-7C3AED">
12
+ <img alt="TTS" src="https://img.shields.io/badge/TTS-Edge%20%7C%20OpenVoice%20%7C%20SpeechSwift-0EA5E9">
13
+ <img alt="License" src="https://img.shields.io/github/license/ca1773130n/VerbalCoding">
14
+ </p>
15
+
16
+ <p align="center">
17
+ <img src="docs/assets/figures/verbalcoding-flow.svg" alt="VerbalCoding voice-to-agent flow" width="860">
18
+ </p>
19
+
20
+ ## Por quรฉ existe
21
+
22
+ VerbalCoding convierte una sala de voz de Discord en una cabina manos libres para agentes de programaciรณn. Pides algo hablando, dejas trabajar al agente CLI y recibes una respuesta breve por voz con transcripciรณn y eventos de progreso. Los diffs y logs quedan fuera del TTS largo.
23
+
24
+ > **ยฟYa usas Hermes Agent?** Hermes ya trae soporte de canales de voz de Discord con `/voice join` / `/voice channel`: puede unirse al VC actual, transcribir con Whisper y responder por TTS. Para ese bucle bรกsico, VerbalCoding no es obligatorio. VerbalCoding aรฑade una capa de flujo de trabajo: enrutamiento de proyectos/sesiones, contexto compartido de voz+texto, reglas de interrupciรณn, avisos de progreso, presets de idioma, mรฉtricas de latencia y cambio de backend CLI mรกs allรก de Hermes.
25
+
26
+ ## Quรฉ lo hace distinto
27
+
28
+ | Capacidad | Por quรฉ importa |
29
+ |---|---|
30
+ | Flujo tipo llamada | Habla, escucha, interrumpe y continรบa en el mismo canal de voz de Discord. |
31
+ | Configuraciรณn guiada | `vc setup` reรบne prerequisites, Discord token/client ID, voice channel, transcript target, backend y TTS settings en un solo flujo. |
32
+ | Bucle de voz local | Discord audio โ†’ local `whisper-cli` โ†’ selected CLI agent โ†’ TTS reply. |
33
+ | Elecciรณn de agente | Hermes Agent, Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw o custom command. |
34
+ | Mรกs allรก de la voz integrada de Hermes | Mantiene el mismo bucle de voz en VC y aรฑade salas de proyecto, contexto compartido con `!ask`, interrupciones afinadas, voz de progreso/estado y control de backends multiagente. |
35
+ | Operaciรณn real | Incluye doctor auto-fix, guรญa Docker UDP, latency metrics, multi-instance rooms y redacted config checks. |
36
+
37
+ ## Inicio rรกpido
38
+
39
+ ```bash
40
+ npm install -g verbalcoding@latest
41
+ vc setup
42
+ vc doctor
43
+ vc start
44
+ ```
45
+
46
+ `vc setup` es la ruta normal para personas. Mantรฉn abierto Discord Developer Portal mientras introduces bot token, application/client ID, transcript target y voice channel names.
47
+
48
+ En automatizaciรณn puedes omitir prompts y completar los datos de Discord despuรฉs.
49
+
50
+ ```bash
51
+ vc setup --yes
52
+ vc setup token <bot-token> --client-id <discord-client-id>
53
+ vc setup channels "General,Team Voice"
54
+ vc doctor
55
+ ```
56
+
57
+ ## Discord en un minuto
58
+
59
+ 1. Crea una application y un bot en Discord Developer Portal.
60
+ 2. Activa Message Content privileged intent.
61
+ 3. Ejecuta `vc setup` y pega bot token y application/client ID.
62
+ 4. Introduce los nombres exactos de los voice channels para auto-join.
63
+ 5. Invita el bot con estos comandos.
64
+
65
+ ```bash
66
+ vc bot invite <discord-client-id>
67
+ vc bot invite <discord-client-id> --guild <guild-id>
68
+ ```
69
+
70
+ ## Mapa mรญnimo de comandos
71
+
72
+ ```bash
73
+ vc setup # configuraciรณn guiada: prerequisites, Discord, backend, voice
74
+ vc setup --yes # bootstrap/starter config no interactiva
75
+ vc setup token # rotar o aรฑadir Discord bot token/client ID despuรฉs
76
+ vc setup channels "General,Team Voice" # actualizar auto-join voice channel names
77
+ vc bot invite CLIENT_ID # generar Discord bot invite URL
78
+ vc status # mostrar configuraciรณn actual
79
+ vc language ko|en|auto # cambiar language preset
80
+ vc doctor # redacted health check y auto-fixes
81
+ vc start # iniciar bridge por defecto
82
+ vc instance setup NAME # crear project voice bot aislado
83
+ vc instance start NAME # ejecutar ese bot en background
84
+ ```
85
+
86
+ ## Mรกs informaciรณn
87
+
88
+ | Guรญa | Quรฉ obtienes |
89
+ |---|---|
90
+ | [Centro de documentaciรณn](docs/i18n/README.es.md) | รndice de guรญas localizadas. |
91
+ | [Fresh Install](docs/i18n/FRESH_INSTALL.es.md) | npm/global setup, configuraciรณn de Discord y primera ejecuciรณn. |
92
+ | [Usage](docs/i18n/USAGE.es.md) | Comandos CLI, comandos Discord, modos de ejecuciรณn y latency. |
93
+ | [Voz integrada de Hermes vs VerbalCoding](docs/i18n/HERMES_VOICE.es.md) | La voz Discord que Hermes ya ofrece y la diferencia de VerbalCoding. |
94
+ | [Configuration](docs/i18n/CONFIGURATION.es.md) | .env, agent backends, MCP, TTS y operaciรณn. |
95
+ | [Troubleshooting](docs/i18n/TROUBLESHOOTING.es.md) | Docker UDP y comprobaciones de token/channel. |
96
+ | [Multi-Instance](docs/i18n/MULTI_INSTANCE.es.md) | Una sala de voz fija por proyecto. |
97
+
98
+ ## Requisitos
99
+
100
+ | Capa | Predeterminado |
101
+ |---|---|
102
+ | Runtime | Node.js 20+ y npm. |
103
+ | Audio | `ffmpeg` y local `whisper-cli`. |
104
+ | TTS | Edge TTS por defecto; OpenVoice, SpeechSwift/CosyVoice y Supertonic opcionales. |
105
+ | Discord | Bot token, Message Content intent, voice permissions y channel names coincidentes. |
106
+ | Agent | Al menos un CLI harness autenticado; Hermes Agent por defecto. |
107
+
108
+ ## Nota Docker / contenedores
109
+
110
+ Si los logs muestran `Cannot perform IP discovery - socket closed`, Discord voice UDP estรก bloqueado. En Linux Docker Compose usa:
111
+
112
+ ```yaml
113
+ services:
114
+ verbalcoding:
115
+ network_mode: "host"
116
+ ```
117
+
118
+ No combines `network_mode: "host"` con `ports:`.
119
+
120
+ ## Contribuir
121
+
122
+ ```bash
123
+ node --check app-node/main.mjs
124
+ npm test
125
+ bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
126
+ npm pack --dry-run
127
+ vc doctor
128
+ ```
129
+
130
+ ## Estado
131
+
132
+ VerbalCoding apunta a publicaciรณn pรบblica, pero todavรญa es temprano. Demo video/GIF, validaciรณn Linux mรกs amplia, CI y revisiรณn de seguridad siguen como TODO.
package/README.fr.md ADDED
@@ -0,0 +1,132 @@
1
+ # VerbalCoding
2
+
3
+ <p align="center"><strong>Parlez ร  des agents de code CLI depuis Discord vocal, comme lors dโ€™un appel.</strong></p>
4
+
5
+ <p align="center"><a href="./README.md">English</a> ยท <a href="./README.ko.md">ํ•œ๊ตญ์–ด</a> ยท <a href="./README.ja.md">ๆ—ฅๆœฌ่ชž</a> ยท <a href="./README.zh.md">ไธญๆ–‡</a> ยท <a href="./README.es.md">Espaรฑol</a> ยท <a href="./README.ru.md">ะ ัƒััะบะธะน</a></p>
6
+
7
+ <p align="center">
8
+ <img alt="npm" src="https://img.shields.io/npm/v/verbalcoding?color=CB3837&logo=npm&logoColor=white">
9
+ <img alt="Node.js" src="https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white">
10
+ <img alt="Discord" src="https://img.shields.io/badge/Discord-voice%20bridge-5865F2?logo=discord&logoColor=white">
11
+ <img alt="STT" src="https://img.shields.io/badge/STT-whisper.cpp-7C3AED">
12
+ <img alt="TTS" src="https://img.shields.io/badge/TTS-Edge%20%7C%20OpenVoice%20%7C%20SpeechSwift-0EA5E9">
13
+ <img alt="License" src="https://img.shields.io/github/license/ca1773130n/VerbalCoding">
14
+ </p>
15
+
16
+ <p align="center">
17
+ <img src="docs/assets/figures/verbalcoding-flow.svg" alt="VerbalCoding voice-to-agent flow" width="860">
18
+ </p>
19
+
20
+ ## Pourquoi ce projet existe
21
+
22
+ VerbalCoding transforme un salon vocal Discord en poste de pilotage mains libres pour agents de code. Dictez une demande, laissez le CLI travailler, puis recevez une rรฉponse vocale concise avec transcription et progression. Les diffs et logs ne sont pas lus longuement par TTS.
23
+
24
+ > **Vous utilisez dรฉjร  Hermes Agent ?** Hermes prend dรฉjร  en charge les salons vocaux Discord via `/voice join` / `/voice channel` : il peut rejoindre votre VC, transcrire avec Whisper et rรฉpondre en TTS. Pour cette boucle de base, VerbalCoding nโ€™est pas obligatoire. VerbalCoding ajoute une couche de workflow : routage projet/session, contexte voix+texte partagรฉ, rรจgles dโ€™interruption, annonces de progression, prรฉrรฉglages de langue, mรฉtriques de latence et changement de backend CLI au-delร  de Hermes.
25
+
26
+ ## Ce qui change
27
+
28
+ | Capacitรฉ | Pourquoi cโ€™est utile |
29
+ |---|---|
30
+ | Flux type appel | Parler, รฉcouter, interrompre et continuer dans le mรชme salon vocal Discord. |
31
+ | Configuration guidรฉe | `vc setup` couvre prerequisites, Discord token/client ID, voice channel, transcript target, backend et TTS settings en un seul flux. |
32
+ | Boucle vocale locale | Discord audio โ†’ local `whisper-cli` โ†’ selected CLI agent โ†’ TTS reply. |
33
+ | Choix de lโ€™agent | Hermes Agent, Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw ou custom command. |
34
+ | Au-delร  de la voix intรฉgrรฉe de Hermes | Garde la mรชme boucle vocale VC, puis ajoute salons de projet, contexte partagรฉ `!ask`, interruptions rรฉglรฉes, annonces progression/รฉtat et contrรดle de backends multiagents. |
35
+ | Exploitation rรฉelle | doctor auto-fix, guide Docker UDP, latency metrics, multi-instance rooms et redacted config checks inclus. |
36
+
37
+ ## Dรฉmarrage rapide
38
+
39
+ ```bash
40
+ npm install -g verbalcoding@latest
41
+ vc setup
42
+ vc doctor
43
+ vc start
44
+ ```
45
+
46
+ `vc setup` est le parcours normal pour une personne. Gardez Discord Developer Portal ouvert pendant la saisie du bot token, application/client ID, transcript target et voice channel names.
47
+
48
+ En automatisation, vous pouvez ignorer les prompts puis renseigner Discord ensuite.
49
+
50
+ ```bash
51
+ vc setup --yes
52
+ vc setup token <bot-token> --client-id <discord-client-id>
53
+ vc setup channels "General,Team Voice"
54
+ vc doctor
55
+ ```
56
+
57
+ ## Discord en une minute
58
+
59
+ 1. Crรฉez une application et un bot dans Discord Developer Portal.
60
+ 2. Activez Message Content privileged intent.
61
+ 3. Lancez `vc setup` et collez bot token et application/client ID.
62
+ 4. Saisissez les noms exacts des voice channels ร  rejoindre.
63
+ 5. Invitez le bot avec ces commandes.
64
+
65
+ ```bash
66
+ vc bot invite <discord-client-id>
67
+ vc bot invite <discord-client-id> --guild <guild-id>
68
+ ```
69
+
70
+ ## Carte rapide des commandes
71
+
72
+ ```bash
73
+ vc setup # configuration guidรฉe: prerequisites, Discord, backend, voice
74
+ vc setup --yes # bootstrap/starter config non interactive
75
+ vc setup token # modifier ou ajouter Discord bot token/client ID plus tard
76
+ vc setup channels "General,Team Voice" # mettre ร  jour auto-join voice channel names
77
+ vc bot invite CLIENT_ID # gรฉnรฉrer Discord bot invite URL
78
+ vc status # afficher les rรฉglages actuels
79
+ vc language ko|en|auto # changer language preset
80
+ vc doctor # redacted health check et auto-fixes
81
+ vc start # dรฉmarrer le bridge par dรฉfaut
82
+ vc instance setup NAME # crรฉer un project voice bot isolรฉ
83
+ vc instance start NAME # exรฉcuter ce bot en background
84
+ ```
85
+
86
+ ## En savoir plus
87
+
88
+ | Guide | Contenu |
89
+ |---|---|
90
+ | [Centre de documentation](docs/i18n/README.fr.md) | Index des guides localisรฉs. |
91
+ | [Fresh Install](docs/i18n/FRESH_INSTALL.fr.md) | npm/global setup, configuration Discord, premier lancement. |
92
+ | [Usage](docs/i18n/USAGE.fr.md) | Commandes CLI, commandes Discord, modes dโ€™exรฉcution, latency. |
93
+ | [Voix intรฉgrรฉe Hermes vs VerbalCoding](docs/i18n/HERMES_VOICE.fr.md) | La voix Discord dรฉjร  fournie par Hermes et la diffรฉrence VerbalCoding. |
94
+ | [Configuration](docs/i18n/CONFIGURATION.fr.md) | .env, agent backends, MCP, TTS, exploitation. |
95
+ | [Troubleshooting](docs/i18n/TROUBLESHOOTING.fr.md) | Docker UDP et vรฉrifications token/channel. |
96
+ | [Multi-Instance](docs/i18n/MULTI_INSTANCE.fr.md) | Un salon vocal fixe par projet. |
97
+
98
+ ## Exigences
99
+
100
+ | Couche | Dรฉfaut |
101
+ |---|---|
102
+ | Runtime | Node.js 20+ et npm. |
103
+ | Audio | `ffmpeg` et local `whisper-cli`. |
104
+ | TTS | Edge TTS par dรฉfaut; OpenVoice, SpeechSwift/CosyVoice et Supertonic en option. |
105
+ | Discord | Bot token, Message Content intent, voice permissions et channel names correspondants. |
106
+ | Agent | Au moins un CLI harness authentifiรฉ; Hermes Agent par dรฉfaut. |
107
+
108
+ ## Note Docker / conteneurs
109
+
110
+ Si les logs affichent `Cannot perform IP discovery - socket closed`, Discord voice UDP est bloquรฉ. Avec Linux Docker Compose, utilisez:
111
+
112
+ ```yaml
113
+ services:
114
+ verbalcoding:
115
+ network_mode: "host"
116
+ ```
117
+
118
+ Ne combinez pas `network_mode: "host"` avec `ports:`.
119
+
120
+ ## Contribuer
121
+
122
+ ```bash
123
+ node --check app-node/main.mjs
124
+ npm test
125
+ bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
126
+ npm pack --dry-run
127
+ vc doctor
128
+ ```
129
+
130
+ ## Statut
131
+
132
+ VerbalCoding vise une publication publique mais reste jeune. Vidรฉo/GIF de dรฉmo, validation Linux plus large, CI et revue sรฉcuritรฉ restent TODO.
package/README.ja.md ADDED
@@ -0,0 +1,132 @@
1
+ # VerbalCoding
2
+
3
+ <p align="center"><strong>Discord ้Ÿณๅฃฐใง CLI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใจ้›ป่ฉฑใฎใ‚ˆใ†ใซไฝœๆฅญใงใใพใ™ใ€‚</strong></p>
4
+
5
+ <p align="center"><a href="./README.md">English</a> ยท <a href="./README.ko.md">ํ•œ๊ตญ์–ด</a> ยท <a href="./README.zh.md">ไธญๆ–‡</a> ยท <a href="./README.es.md">Espaรฑol</a> ยท <a href="./README.fr.md">Franรงais</a> ยท <a href="./README.ru.md">ะ ัƒััะบะธะน</a></p>
6
+
7
+ <p align="center">
8
+ <img alt="npm" src="https://img.shields.io/npm/v/verbalcoding?color=CB3837&logo=npm&logoColor=white">
9
+ <img alt="Node.js" src="https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white">
10
+ <img alt="Discord" src="https://img.shields.io/badge/Discord-voice%20bridge-5865F2?logo=discord&logoColor=white">
11
+ <img alt="STT" src="https://img.shields.io/badge/STT-whisper.cpp-7C3AED">
12
+ <img alt="TTS" src="https://img.shields.io/badge/TTS-Edge%20%7C%20OpenVoice%20%7C%20SpeechSwift-0EA5E9">
13
+ <img alt="License" src="https://img.shields.io/github/license/ca1773130n/VerbalCoding">
14
+ </p>
15
+
16
+ <p align="center">
17
+ <img src="docs/assets/figures/verbalcoding-flow.svg" alt="VerbalCoding voice-to-agent flow" width="860">
18
+ </p>
19
+
20
+ ## ใชใœไฝœใฃใŸใฎใ‹
21
+
22
+ VerbalCoding ใฏ Discord ใฎ้Ÿณๅฃฐใƒซใƒผใƒ ใ‚’ใ€ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ็”จใฎใƒใƒณใ‚บใƒ•ใƒชใƒผๆ“ไฝœๅธญใซๅค‰ใˆใพใ™ใ€‚ๅฃฐใงไพ้ ผใ—ใ€CLI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใซไฝœๆฅญใ•ใ›ใ€็Ÿญใ„้Ÿณๅฃฐๅ›ž็ญ”ใจใƒ†ใ‚ญใ‚นใƒˆ่จ˜้Œฒใ‚’ๅ—ใ‘ๅ–ใ‚Œใพใ™ใ€‚diff ใ‚„ใƒญใ‚ฐใ‚’้•ทใ€…ใจ่ชญใฟไธŠใ’ใชใ„ใŸใ‚ใฎไฟ่ญทใ‚‚ๅ…ฅใฃใฆใ„ใพใ™ใ€‚
23
+
24
+ > **ใ™ใงใซ Hermes Agent ใ‚’ไฝฟใฃใฆใ„ใพใ™ใ‹๏ผŸ** Hermes ่‡ชไฝ“ใซใ‚‚ `/voice join` / `/voice channel` ใซใ‚ˆใ‚‹ Discord ้ŸณๅฃฐใƒใƒฃใƒณใƒใƒซๅฏพๅฟœใŒใ‚ใ‚Šใพใ™ใ€‚็พๅœจใฎ VC ใซๅ‚ๅŠ ใ—ใ€Whisper STT ใงๆ–‡ๅญ—่ตทใ“ใ—ใ—ใ€TTS ใง่ฉฑใ—่ฟ”ใ›ใพใ™ใ€‚ใใฎๅŸบๆœฌใƒซใƒผใƒ—ใ ใ‘ใชใ‚‰ VerbalCoding ใฏๅฟ…้ ˆใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚VerbalCoding ใฏใใฎไธŠใซใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ/ใ‚ปใƒƒใ‚ทใƒงใƒณใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ€้Ÿณๅฃฐ+ใƒ†ใ‚ญใ‚นใƒˆๅ…ฑๆœ‰ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ€ๅ‰ฒใ‚Š่พผใฟใƒซใƒผใƒซใ€้€ฒๆ—้Ÿณๅฃฐใ€่จ€่ชžใƒ—ใƒชใ‚ปใƒƒใƒˆใ€ใƒฌใ‚คใƒ†ใƒณใ‚ทๆŒ‡ๆจ™ใ€Hermes ไปฅๅค–ใฎ CLI ใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ๅˆ‡ใ‚Šๆ›ฟใˆใ‚’ๅŠ ใˆใ‚‹ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใƒฌใ‚คใƒคใƒผใงใ™ใ€‚
25
+
26
+ ## ไฝ“้จ“ใฎ้•ใ„
27
+
28
+ | ๆฉŸ่ƒฝ | ไพกๅ€ค |
29
+ |---|---|
30
+ | ้›ป่ฉฑใฎใ‚ˆใ†ใชๆตใ‚Œ | ๅŒใ˜ Discord ้Ÿณๅฃฐใƒใƒฃใƒณใƒใƒซใง่ฉฑใ™ใ€่žใใ€ๅ‰ฒใ‚Š่พผใ‚€ใ€็ถšใ‘ใ‚‹ใŒใงใใพใ™ใ€‚ |
31
+ | ไบบๅ‘ใ‘ใฎใ‚ฌใ‚คใƒ‰ไป˜ใ่จญๅฎš | `vc setup` ใŒ prerequisitesใ€Discord token/client IDใ€voice channelใ€transcript targetใ€backendใ€TTS ่จญๅฎšใ‚’ไธ€้€ฃใฎๆตใ‚Œใง็ขบ่ชใ—ใพใ™ใ€‚ |
32
+ | ใƒญใƒผใ‚ซใƒซ้Ÿณๅฃฐใƒซใƒผใƒ— | Discord audio โ†’ local `whisper-cli` โ†’ selected CLI agent โ†’ TTS responseใ€‚ |
33
+ | ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ้ธๆŠž | Hermes Agentใ€Claude Codeใ€Codexใ€Gemini CLIใ€OpenCodeใ€OpenClawใ€custom command ใซๅฏพๅฟœใ—ใพใ™ใ€‚ |
34
+ | Hermes ๆจ™ๆบ–้Ÿณๅฃฐใฎๅ…ˆ | ๅŒใ˜ VC ้Ÿณๅฃฐใƒซใƒผใƒ—ใ‚’ๅœŸๅฐใซใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒซใƒผใƒ ใ€`!ask` ๅ…ฑๆœ‰ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ€็ดฐใ‹ใชๅ‰ฒใ‚Š่พผใฟๅ‡ฆ็†ใ€้€ฒๆ—/็Šถๆ…‹ใฎ้Ÿณๅฃฐๆกˆๅ†…ใ€่ค‡ๆ•ฐใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰ๅˆถๅพกใ‚’่ฟฝๅŠ ใ—ใพใ™ใ€‚ |
35
+ | ้‹็”จๅ‘ใ‘ๆฉŸ่ƒฝ | doctor auto-fixใ€Docker UDP ใ‚ฌใ‚คใƒ‰ใ€latency metricsใ€multi-instance roomsใ€redacted config checks ใ‚’ๅ‚™ใˆใฆใ„ใพใ™ใ€‚ |
36
+
37
+ ## ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ
38
+
39
+ ```bash
40
+ npm install -g verbalcoding@latest
41
+ vc setup
42
+ vc doctor
43
+ vc start
44
+ ```
45
+
46
+ ้€šๅธธใฎไบบ้–“ๅ‘ใ‘ๅฐŽ็ทšใฏ `vc setup` ใงใ™ใ€‚Discord Developer Portal ใ‚’้–‹ใ„ใŸใพใพใ€bot tokenใ€application/client IDใ€transcript targetใ€voice channel names ใ‚’ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„ใ€‚
47
+
48
+ ่‡ชๅ‹•ๅŒ–ใงใฏใƒ—ใƒญใƒณใƒ—ใƒˆใ‚’็œ็•ฅใ—ใ€Discord ใฎๅ€คใ‚’ๅพŒใ‹ใ‚‰่จญๅฎšใงใใพใ™ใ€‚
49
+
50
+ ```bash
51
+ vc setup --yes
52
+ vc setup token <bot-token> --client-id <discord-client-id>
53
+ vc setup channels "General,Team Voice"
54
+ vc doctor
55
+ ```
56
+
57
+ ## Discord ่จญๅฎšใ‚’ 1 ๅˆ†ใง
58
+
59
+ 1. Discord Developer Portal ใง application ใจ bot ใ‚’ไฝœๆˆใ—ใพใ™ใ€‚
60
+ 2. Message Content privileged intent ใ‚’ๆœ‰ๅŠนใซใ—ใพใ™ใ€‚
61
+ 3. `vc setup` ใ‚’ๅฎŸ่กŒใ—ใ€bot token ใจ application/client ID ใ‚’่ฒผใ‚Šไป˜ใ‘ใพใ™ใ€‚
62
+ 4. ่‡ชๅ‹•ๅ‚ๅŠ ใ™ใ‚‹ voice channel ๅใ‚’ๆญฃ็ขบใซๅ…ฅๅŠ›ใ—ใพใ™ใ€‚
63
+ 5. ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใง bot ใ‚’ๆ‹›ๅพ…ใ—ใพใ™ใ€‚
64
+
65
+ ```bash
66
+ vc bot invite <discord-client-id>
67
+ vc bot invite <discord-client-id> --guild <guild-id>
68
+ ```
69
+
70
+ ## ๅฐใ•ใชใ‚ณใƒžใƒณใƒ‰่กจ
71
+
72
+ ```bash
73
+ vc setup # ใ‚ฌใ‚คใƒ‰ไป˜ใ่จญๅฎš: prerequisites, Discord, backend, voice
74
+ vc setup --yes # ้žๅฏพ่ฉฑ bootstrap/starter config
75
+ vc setup token # Discord bot token ใจ client ID ใ‚’ๅพŒใงๆ›ดๆ–ฐ/่ฟฝๅŠ 
76
+ vc setup channels "General,Team Voice" # auto-join voice channel names ใ‚’ๆ›ดๆ–ฐ
77
+ vc bot invite CLIENT_ID # Discord bot invite URL ใ‚’็”Ÿๆˆ
78
+ vc status # ็พๅœจใฎ่จญๅฎšใ‚’่กจ็คบ
79
+ vc language ko|en|auto # language preset ใ‚’ๅˆ‡ใ‚Šๆ›ฟใˆ
80
+ vc doctor # redacted health check ใจ auto-fix
81
+ vc start # ๆ—ขๅฎš bridge ใ‚’้–‹ๅง‹
82
+ vc instance setup NAME # ๅˆ†้›ขใ•ใ‚ŒใŸ project voice bot ใ‚’ไฝœๆˆ
83
+ vc instance start NAME # ใใฎ bot ใ‚’ background ใงๅฎŸ่กŒ
84
+ ```
85
+
86
+ ## ่ฉณใ—ใ่ฆ‹ใ‚‹
87
+
88
+ | ใ‚ฌใ‚คใƒ‰ | ๅพ—ใ‚‰ใ‚Œใ‚‹ๅ†…ๅฎน |
89
+ |---|---|
90
+ | [ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใƒใƒ–](docs/i18n/README.ja.md) | ใƒญใƒผใ‚ซใƒฉใ‚คใ‚บๆธˆใฟใ‚ฌใ‚คใƒ‰ใฎ็ดขๅผ•ใ€‚ |
91
+ | [Fresh Install](docs/i18n/FRESH_INSTALL.ja.md) | npm/global setupใ€Discord ่จญๅฎšใ€ๅˆๅ›ž่ตทๅ‹•ใ€‚ |
92
+ | [Usage](docs/i18n/USAGE.ja.md) | CLI ใ‚ณใƒžใƒณใƒ‰ใ€Discord ใ‚ณใƒžใƒณใƒ‰ใ€ๅฎŸ่กŒใƒขใƒผใƒ‰ใ€latencyใ€‚ |
93
+ | [Hermes ๆจ™ๆบ–้Ÿณๅฃฐ vs VerbalCoding](docs/i18n/HERMES_VOICE.ja.md) | Hermes ใŒใ™ใงใซๆไพ›ใ™ใ‚‹ Discord ้Ÿณๅฃฐใจ VerbalCoding ใฎ้•ใ„ใ€‚ |
94
+ | [Configuration](docs/i18n/CONFIGURATION.ja.md) | .envใ€agent backendsใ€MCPใ€TTSใ€้‹็”จใ€‚ |
95
+ | [Troubleshooting](docs/i18n/TROUBLESHOOTING.ja.md) | Docker UDPใ€token/channel ไธ่ถณใƒใ‚งใƒƒใ‚ฏใ€‚ |
96
+ | [Multi-Instance](docs/i18n/MULTI_INSTANCE.ja.md) | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ”ใจใซๅ›บๅฎš้Ÿณๅฃฐใƒซใƒผใƒ ใ‚’ 1 ใคใ€‚ |
97
+
98
+ ## ่ฆไปถ
99
+
100
+ | ใƒฌใ‚คใƒคใƒผ | ๆ—ขๅฎš |
101
+ |---|---|
102
+ | Runtime | Node.js 20+ ใจ npmใ€‚ |
103
+ | Audio | `ffmpeg` ใจ local `whisper-cli`ใ€‚ |
104
+ | TTS | ๆ—ขๅฎšใฏ Edge TTSใ€‚OpenVoiceใ€SpeechSwift/CosyVoiceใ€Supertonic ใฏไปปๆ„ใ€‚ |
105
+ | Discord | Bot tokenใ€Message Content intentใ€voice permissionsใ€ไธ€่‡ดใ™ใ‚‹ channel namesใ€‚ |
106
+ | Agent | ่ช่จผๆธˆใฟ CLI harness ใŒ 1 ใคไปฅไธŠใ€‚ๆ—ขๅฎšใฏ Hermes Agentใ€‚ |
107
+
108
+ ## Docker / ใ‚ณใƒณใƒ†ใƒŠๆณจๆ„
109
+
110
+ ใƒญใ‚ฐใซ `Cannot perform IP discovery - socket closed` ใŒๅ‡บใ‚‹ๅ ดๅˆใ€Discord voice UDP ใŒใƒ–ใƒญใƒƒใ‚ฏใ•ใ‚Œใฆใ„ใพใ™ใ€‚Linux Docker Compose ใงใฏๆฌกใ‚’ไฝฟใ„ใพใ™:
111
+
112
+ ```yaml
113
+ services:
114
+ verbalcoding:
115
+ network_mode: "host"
116
+ ```
117
+
118
+ `network_mode: "host"` ใจ `ports:` ใ‚’ไฝต็”จใ—ใชใ„ใงใใ ใ•ใ„ใ€‚
119
+
120
+ ## ใ‚ณใƒณใƒˆใƒชใƒ“ใƒฅใƒผใ‚ทใƒงใƒณ
121
+
122
+ ```bash
123
+ node --check app-node/main.mjs
124
+ npm test
125
+ bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
126
+ npm pack --dry-run
127
+ vc doctor
128
+ ```
129
+
130
+ ## ็Šถๆ…‹
131
+
132
+ VerbalCoding ใฏๅ…ฌ้–‹ใƒชใƒชใƒผใ‚นใ‚’็›ฎๆŒ‡ใ—ใฆใ„ใพใ™ใŒใ€ใพใ ๅˆๆœŸๆฎต้šŽใงใ™ใ€‚ใƒ‡ใƒขๅ‹•็”ป/GIFใ€ใ‚ˆใ‚Šๅบƒใ„ Linux ๆคœ่จผใ€CIใ€ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒฌใƒ“ใƒฅใƒผใฏ TODO ใงใ™ใ€‚
package/README.ko.md ADDED
@@ -0,0 +1,132 @@
1
+ # VerbalCoding
2
+
3
+ <p align="center"><strong>Discord ์Œ์„ฑ์œผ๋กœ CLI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์™€ ํ†ตํ™”ํ•˜๋“ฏ ์ž‘์—…ํ•˜์„ธ์š”.</strong></p>
4
+
5
+ <p align="center"><a href="./README.md">English</a> ยท <a href="./README.ja.md">ๆ—ฅๆœฌ่ชž</a> ยท <a href="./README.zh.md">ไธญๆ–‡</a> ยท <a href="./README.es.md">Espaรฑol</a> ยท <a href="./README.fr.md">Franรงais</a> ยท <a href="./README.ru.md">ะ ัƒััะบะธะน</a></p>
6
+
7
+ <p align="center">
8
+ <img alt="npm" src="https://img.shields.io/npm/v/verbalcoding?color=CB3837&logo=npm&logoColor=white">
9
+ <img alt="Node.js" src="https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white">
10
+ <img alt="Discord" src="https://img.shields.io/badge/Discord-voice%20bridge-5865F2?logo=discord&logoColor=white">
11
+ <img alt="STT" src="https://img.shields.io/badge/STT-whisper.cpp-7C3AED">
12
+ <img alt="TTS" src="https://img.shields.io/badge/TTS-Edge%20%7C%20OpenVoice%20%7C%20SpeechSwift-0EA5E9">
13
+ <img alt="License" src="https://img.shields.io/github/license/ca1773130n/VerbalCoding">
14
+ </p>
15
+
16
+ <p align="center">
17
+ <img src="docs/assets/figures/verbalcoding-flow.svg" alt="VerbalCoding voice-to-agent flow" width="860">
18
+ </p>
19
+
20
+ ## ์กด์žฌ ์ด์œ 
21
+
22
+ VerbalCoding์€ Discord ์Œ์„ฑ ๋ฐฉ์„ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์šฉ ํ•ธ์ฆˆํ”„๋ฆฌ ์กฐ์ข…์„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋ง๋กœ ์š”์ฒญํ•˜๊ณ , CLI ์—์ด์ „ํŠธ๊ฐ€ ์ž‘์—…ํ•˜๊ฒŒ ๋‘๊ณ , ๊ฐ„๊ฒฐํ•œ ์Œ์„ฑ ๋‹ต๋ณ€๊ณผ ํ…์ŠคํŠธ ๊ธฐ๋ก์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. diff์™€ ๋กœ๊ทธ๋Š” TTS๋กœ ๊ธธ๊ฒŒ ์ฝ์ง€ ์•Š๋„๋ก ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค.
23
+
24
+ > **Hermes Agent๋ฅผ ์ด๋ฏธ ์“ฐ๊ณ  ์žˆ๋‚˜์š”?** Hermes ์ž์ฒด๋„ `/voice join` / `/voice channel`๋กœ Discord ์Œ์„ฑ ์ฑ„๋„์— ๋“ค์–ด๊ฐ€ Whisper STT์™€ TTS ๋‹ต๋ณ€์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ๋ณธ ๋ฃจํ”„๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด VerbalCoding์€ ํ•„์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. VerbalCoding์€ ๊ทธ ์œ„์— ํ”„๋กœ์ ํŠธ/์„ธ์…˜ ๋ผ์šฐํŒ…, ์Œ์„ฑ+ํ…์ŠคํŠธ ๊ณต์œ  ์ปจํ…์ŠคํŠธ, ๋ฐ”์ง€์ธ ๊ทœ์น™, ์ง„ํ–‰ ์Œ์„ฑ ์•ˆ๋‚ด, ์–ธ์–ด ํ”„๋ฆฌ์…‹, ์ง€์—ฐ ์‹œ๊ฐ„ ์ง€ํ‘œ, Hermes ์™ธ CLI ๋ฐฑ์—”๋“œ ์ „ํ™˜์„ ์–น๋Š” ์›Œํฌํ”Œ๋กœ ๋ ˆ์ด์–ด์ž…๋‹ˆ๋‹ค.
25
+
26
+ ## ๋ฌด์—‡์ด ๋‹ค๋ฅธ๊ฐ€
27
+
28
+ | ๊ธฐ๋Šฅ | ์™œ ์ค‘์š”ํ•œ๊ฐ€ |
29
+ |---|---|
30
+ | ํ†ตํ™” ๊ฐ™์€ ์ž‘์—… ํ๋ฆ„ | ํ•œ Discord ์Œ์„ฑ ์ฑ„๋„์—์„œ ๋งํ•˜๊ณ , ๋“ฃ๊ณ , ๋ผ์–ด๋“ค๊ณ , ์ด์–ด์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค. |
31
+ | ์•ˆ๋‚ดํ˜• ์‚ฌ๋žŒ์šฉ ์„ค์ • | `vc setup`์ด prerequisites, Discord token/client ID, voice channel, transcript target, backend, TTS ์„ค์ •์„ ํ•œ ํ๋ฆ„์œผ๋กœ ๋ฌป์Šต๋‹ˆ๋‹ค. |
32
+ | ๋กœ์ปฌ ์Œ์„ฑ ๋ฃจํ”„ | Discord audio โ†’ local `whisper-cli` โ†’ selected CLI agent โ†’ TTS ๋‹ต๋ณ€. |
33
+ | ์—์ด์ „ํŠธ ์„ ํƒ | Hermes Agent, Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw, custom command๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. |
34
+ | Hermes ๊ธฐ๋ณธ ์Œ์„ฑ ๋„ˆ๋จธ | ๊ฐ™์€ VC ์Œ์„ฑ ๋ฃจํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋กœ์ ํŠธ ๋ฐฉ, `!ask` ๊ณต์œ  ์ปจํ…์ŠคํŠธ, ์„ธ๋ฐ€ํ•œ ๋ผ์–ด๋“ค๊ธฐ ์ฒ˜๋ฆฌ, ์ง„ํ–‰/์ƒํƒœ ์Œ์„ฑ ์•ˆ๋‚ด, ๋‹ค์ค‘ ์—์ด์ „ํŠธ ๋ฐฑ์—”๋“œ ์ œ์–ด๋ฅผ ๋”ํ•ฉ๋‹ˆ๋‹ค. |
35
+ | ์šด์˜ ์นœํ™” ๊ธฐ๋Šฅ | doctor auto-fix, Docker UDP ์•ˆ๋‚ด, latency metrics, multi-instance rooms, redacted config checks๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. |
36
+
37
+ ## ๋น ๋ฅธ ์‹œ์ž‘
38
+
39
+ ```bash
40
+ npm install -g verbalcoding@latest
41
+ vc setup
42
+ vc doctor
43
+ vc start
44
+ ```
45
+
46
+ `vc setup`์ด ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. Discord Developer Portal์„ ์—ด์–ด ๋‘” ์ƒํƒœ์—์„œ bot token, application/client ID, transcript target, voice channel names๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
47
+
48
+ ์ž๋™ํ™”์—์„œ๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฑด๋„ˆ๋›ด ๋’ค Discord ๊ฐ’์„ ๋‚˜์ค‘์— ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
49
+
50
+ ```bash
51
+ vc setup --yes
52
+ vc setup token <bot-token> --client-id <discord-client-id>
53
+ vc setup channels "General,Team Voice"
54
+ vc doctor
55
+ ```
56
+
57
+ ## Discord ์„ค์ • 1๋ถ„ ์š”์•ฝ
58
+
59
+ 1. Discord Developer Portal์—์„œ application๊ณผ bot์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
60
+ 2. Message Content privileged intent๋ฅผ ์ผญ๋‹ˆ๋‹ค.
61
+ 3. `vc setup`์„ ์‹คํ–‰ํ•˜๊ณ  bot token๊ณผ application/client ID๋ฅผ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.
62
+ 4. ์ž๋™ ์ž…์žฅํ•  voice channel ์ด๋ฆ„์„ ์ •ํ™•ํžˆ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
63
+ 5. ์•„๋ž˜ ๋ช…๋ น์œผ๋กœ bot์„ ์ดˆ๋Œ€ํ•ฉ๋‹ˆ๋‹ค.
64
+
65
+ ```bash
66
+ vc bot invite <discord-client-id>
67
+ vc bot invite <discord-client-id> --guild <guild-id>
68
+ ```
69
+
70
+ ## ์ž‘์€ ๋ช…๋ น ์ง€๋„
71
+
72
+ ```bash
73
+ vc setup # ์•ˆ๋‚ดํ˜• ์„ค์ •: prerequisites, Discord, backend, voice
74
+ vc setup --yes # ๋น„๋Œ€ํ™”ํ˜• bootstrap/starter config
75
+ vc setup token # ๋‚˜์ค‘์— Discord bot token๊ณผ client ID ํšŒ์ „/์ถ”๊ฐ€
76
+ vc setup channels "General,Team Voice" # auto-join voice channel names ์—…๋ฐ์ดํŠธ
77
+ vc bot invite CLIENT_ID # Discord bot invite URL ์ƒ์„ฑ
78
+ vc status # ํ˜„์žฌ ์„ค์ • ํ‘œ์‹œ
79
+ vc language ko|en|auto # language preset ์ „ํ™˜
80
+ vc doctor # redacted health check์™€ auto-fix
81
+ vc start # ๊ธฐ๋ณธ bridge ์‹œ์ž‘
82
+ vc instance setup NAME # ๊ฒฉ๋ฆฌ๋œ project voice bot ์ƒ์„ฑ
83
+ vc instance start NAME # ํ•ด๋‹น bot์„ background๋กœ ์‹คํ–‰
84
+ ```
85
+
86
+ ## ๋” ๋ณด๊ธฐ
87
+
88
+ | ๊ฐ€์ด๋“œ | ๋‚ด์šฉ |
89
+ |---|---|
90
+ | [๋ฌธ์„œ ํ—ˆ๋ธŒ](docs/i18n/README.ko.md) | ํ˜„์ง€ํ™”๋œ ๊ฐ€์ด๋“œ ์ƒ‰์ธ. |
91
+ | [Fresh Install](docs/i18n/FRESH_INSTALL.ko.md) | npm/global setup, Discord ์„ค์ •, ์ฒซ ์‹คํ–‰. |
92
+ | [Usage](docs/i18n/USAGE.ko.md) | CLI ๋ช…๋ น, Discord ๋ช…๋ น, ์‹คํ–‰ ๋ชจ๋“œ, latency. |
93
+ | [Hermes ๊ธฐ๋ณธ ์Œ์„ฑ vs VerbalCoding](docs/i18n/HERMES_VOICE.ko.md) | Hermes๊ฐ€ ์ด๋ฏธ ์ง€์›ํ•˜๋Š” Discord ์Œ์„ฑ๊ณผ VerbalCoding์˜ ์ฐจ์ด. |
94
+ | [Configuration](docs/i18n/CONFIGURATION.ko.md) | .env, agent backends, MCP, TTS, ์šด์˜. |
95
+ | [Troubleshooting](docs/i18n/TROUBLESHOOTING.ko.md) | Docker UDP, token/channel ๋ˆ„๋ฝ ์ ๊ฒ€. |
96
+ | [Multi-Instance](docs/i18n/MULTI_INSTANCE.ko.md) | ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ๊ณ ์ • ์Œ์„ฑ ๋ฐฉ. |
97
+
98
+ ## ์š”๊ตฌ ์‚ฌํ•ญ
99
+
100
+ | ๊ณ„์ธต | ๊ธฐ๋ณธ๊ฐ’ |
101
+ |---|---|
102
+ | Runtime | Node.js 20+์™€ npm. |
103
+ | Audio | `ffmpeg`์™€ local `whisper-cli`. |
104
+ | TTS | ๊ธฐ๋ณธ Edge TTS, ์„ ํƒ OpenVoice, SpeechSwift/CosyVoice, Supertonic. |
105
+ | Discord | Bot token, Message Content intent, voice permissions, ์ผ์น˜ํ•˜๋Š” channel names. |
106
+ | Agent | ์ธ์ฆ๋œ CLI harness ํ•˜๋‚˜ ์ด์ƒ, ๊ธฐ๋ณธ์€ Hermes Agent. |
107
+
108
+ ## Docker / ์ปจํ…Œ์ด๋„ˆ ์ฐธ๊ณ 
109
+
110
+ ๋กœ๊ทธ์— `Cannot perform IP discovery - socket closed`๊ฐ€ ๋ณด์ด๋ฉด Discord voice UDP๊ฐ€ ๋ง‰ํžŒ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Linux Docker Compose์—์„œ๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”:
111
+
112
+ ```yaml
113
+ services:
114
+ verbalcoding:
115
+ network_mode: "host"
116
+ ```
117
+
118
+ `network_mode: "host"`์™€ `ports:`๋ฅผ ํ•จ๊ป˜ ์“ฐ์ง€ ๋งˆ์„ธ์š”.
119
+
120
+ ## ๊ธฐ์—ฌ
121
+
122
+ ```bash
123
+ node --check app-node/main.mjs
124
+ npm test
125
+ bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
126
+ npm pack --dry-run
127
+ vc doctor
128
+ ```
129
+
130
+ ## ์ƒํƒœ
131
+
132
+ VerbalCoding์€ ๊ณต๊ฐœ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ง€ํ–ฅํ•˜์ง€๋งŒ ์•„์ง ์ดˆ๊ธฐ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. ๋ฐ๋ชจ ์˜์ƒ/GIF, ๋” ๋„“์€ Linux ๊ฒ€์ฆ, CI, ๋ณด์•ˆ ๋ฆฌ๋ทฐ๋Š” TODO์ž…๋‹ˆ๋‹ค.