verbalcoding 0.2.11 → 0.2.13
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.
- package/.env.example +98 -2
- package/README.es.md +134 -0
- package/README.fr.md +134 -0
- package/README.ja.md +134 -0
- package/README.ko.md +134 -0
- package/README.md +118 -74
- package/README.ru.md +134 -0
- package/README.zh.md +133 -0
- package/app-node/agent_adapters.mjs +37 -5
- package/app-node/agent_adapters.test.mjs +27 -1
- package/app-node/agent_detect.mjs +73 -0
- package/app-node/agent_detect.test.mjs +77 -0
- package/app-node/agent_routing.mjs +148 -0
- package/app-node/agent_routing.test.mjs +138 -0
- package/app-node/agent_turn.mjs +86 -0
- package/app-node/agent_turn.test.mjs +109 -0
- package/app-node/bridge_context.mjs +73 -0
- package/app-node/bridge_context.test.mjs +54 -0
- package/app-node/bridge_state.mjs +4 -0
- package/app-node/bridge_wireup.test.mjs +462 -0
- package/app-node/cli_install.test.mjs +31 -0
- package/app-node/cross_agent_routing.test.mjs +78 -0
- package/app-node/discord_command_router.mjs +204 -0
- package/app-node/discord_command_router.test.mjs +311 -0
- package/app-node/discord_voice_setup.mjs +251 -0
- package/app-node/discord_voice_setup.test.mjs +86 -0
- package/app-node/hermes_profiles.test.mjs +12 -1
- package/app-node/install_config.mjs +113 -3
- package/app-node/install_config.test.mjs +8 -0
- package/app-node/instance_doctor.test.mjs +9 -0
- package/app-node/instances.test.mjs +8 -1
- package/app-node/main.mjs +513 -1058
- package/app-node/mcp_tools.test.mjs +7 -0
- package/app-node/notification_handler.mjs +89 -0
- package/app-node/notification_handler.test.mjs +187 -0
- package/app-node/notify.mjs +73 -0
- package/app-node/notify.test.mjs +68 -0
- package/app-node/plan_dispatcher.mjs +215 -0
- package/app-node/plan_dispatcher.test.mjs +101 -0
- package/app-node/plan_mode.mjs +203 -0
- package/app-node/plan_mode.test.mjs +231 -0
- package/app-node/progress_handler.mjs +220 -0
- package/app-node/progress_handler.test.mjs +193 -0
- package/app-node/progress_speech.mjs +54 -32
- package/app-node/progress_speech.test.mjs +12 -3
- package/app-node/project_sessions.mjs +5 -2
- package/app-node/project_sessions.test.mjs +7 -0
- package/app-node/research_mode.mjs +282 -0
- package/app-node/research_mode.test.mjs +264 -0
- package/app-node/restart_notice.mjs +3 -0
- package/app-node/restart_notice.test.mjs +11 -0
- package/app-node/session_ontology.mjs +271 -0
- package/app-node/session_ontology.test.mjs +130 -0
- package/app-node/smart_progress.mjs +94 -0
- package/app-node/smart_progress.test.mjs +66 -0
- package/app-node/stream_sentencer.mjs +91 -0
- package/app-node/stream_sentencer.test.mjs +129 -0
- package/app-node/streaming_tts_queue.mjs +52 -0
- package/app-node/streaming_tts_queue.test.mjs +64 -0
- package/app-node/stt_whisper.mjs +24 -0
- package/app-node/stt_whisper.test.mjs +32 -0
- package/app-node/text_routing.mjs +22 -0
- package/app-node/text_routing.test.mjs +23 -1
- package/app-node/tts_backends.mjs +537 -3
- package/app-node/tts_backends.test.mjs +454 -0
- package/app-node/tts_player.mjs +164 -0
- package/app-node/tts_player.test.mjs +202 -0
- package/app-node/tts_runtime.mjs +134 -0
- package/app-node/tts_runtime.test.mjs +89 -0
- package/app-node/tts_settings.mjs +150 -3
- package/app-node/tts_settings.test.mjs +204 -0
- package/app-node/tts_voice_config.mjs +136 -2
- package/app-node/tts_voice_config.test.mjs +94 -0
- package/app-node/utterance_router.mjs +216 -0
- package/app-node/utterance_router.test.mjs +236 -0
- package/app-node/voice_autojoin.mjs +37 -0
- package/app-node/voice_autojoin.test.mjs +59 -0
- package/app-node/voice_io.mjs +272 -0
- package/app-node/voice_io.test.mjs +102 -0
- package/app-node/voice_turn_runner.mjs +449 -0
- package/app-node/voice_turn_runner.test.mjs +289 -0
- package/docs/CONFIGURATION.md +79 -96
- package/docs/FRESH_INSTALL.md +105 -63
- package/docs/HARNESSES.md +58 -0
- package/docs/HARNESS_AIDER.md +50 -0
- package/docs/HARNESS_CLAUDE.md +56 -0
- package/docs/HARNESS_CODEX.md +56 -0
- package/docs/HARNESS_CURSOR.md +45 -0
- package/docs/HARNESS_GEMINI.md +45 -0
- package/docs/HARNESS_HERMES.md +57 -0
- package/docs/HARNESS_OPENCLAW.md +44 -0
- package/docs/HARNESS_OPENCODE.md +44 -0
- package/docs/HERMES_VOICE.md +65 -0
- package/docs/MULTI_INSTANCE.md +16 -0
- package/docs/README.md +50 -0
- package/docs/RELEASE.md +42 -19
- package/docs/ROADMAP.md +53 -0
- package/docs/TROUBLESHOOTING.md +126 -0
- package/docs/TTS_BACKENDS.md +227 -0
- package/docs/USAGE.md +94 -40
- package/docs/assets/figures/verbalcoding-flow.svg +1 -1
- package/docs/i18n/AGENTS.es.md +34 -0
- package/docs/i18n/AGENTS.fr.md +34 -0
- package/docs/i18n/AGENTS.ja.md +34 -0
- package/docs/i18n/AGENTS.ko.md +34 -0
- package/docs/i18n/AGENTS.ru.md +34 -0
- package/docs/i18n/AGENTS.zh.md +34 -0
- package/docs/i18n/CONFIGURATION.es.md +25 -0
- package/docs/i18n/CONFIGURATION.fr.md +25 -0
- package/docs/i18n/CONFIGURATION.ja.md +25 -0
- package/docs/i18n/CONFIGURATION.ko.md +25 -0
- package/docs/i18n/CONFIGURATION.ru.md +25 -0
- package/docs/i18n/CONFIGURATION.zh.md +25 -0
- package/docs/i18n/FRESH_INSTALL.es.md +27 -2
- package/docs/i18n/FRESH_INSTALL.fr.md +27 -2
- package/docs/i18n/FRESH_INSTALL.ja.md +27 -2
- package/docs/i18n/FRESH_INSTALL.ko.md +27 -2
- package/docs/i18n/FRESH_INSTALL.ru.md +27 -2
- package/docs/i18n/FRESH_INSTALL.zh.md +27 -2
- package/docs/i18n/HARNESSES.es.md +58 -0
- package/docs/i18n/HARNESSES.fr.md +58 -0
- package/docs/i18n/HARNESSES.ja.md +58 -0
- package/docs/i18n/HARNESSES.ko.md +58 -0
- package/docs/i18n/HARNESSES.ru.md +58 -0
- package/docs/i18n/HARNESSES.zh.md +58 -0
- package/docs/i18n/HARNESS_AIDER.es.md +48 -0
- package/docs/i18n/HARNESS_AIDER.fr.md +48 -0
- package/docs/i18n/HARNESS_AIDER.ja.md +50 -0
- package/docs/i18n/HARNESS_AIDER.ko.md +50 -0
- package/docs/i18n/HARNESS_AIDER.ru.md +48 -0
- package/docs/i18n/HARNESS_AIDER.zh.md +48 -0
- package/docs/i18n/HARNESS_CLAUDE.es.md +55 -0
- package/docs/i18n/HARNESS_CLAUDE.fr.md +55 -0
- package/docs/i18n/HARNESS_CLAUDE.ja.md +56 -0
- package/docs/i18n/HARNESS_CLAUDE.ko.md +56 -0
- package/docs/i18n/HARNESS_CLAUDE.ru.md +55 -0
- package/docs/i18n/HARNESS_CLAUDE.zh.md +56 -0
- package/docs/i18n/HARNESS_CODEX.es.md +55 -0
- package/docs/i18n/HARNESS_CODEX.fr.md +55 -0
- package/docs/i18n/HARNESS_CODEX.ja.md +56 -0
- package/docs/i18n/HARNESS_CODEX.ko.md +56 -0
- package/docs/i18n/HARNESS_CODEX.ru.md +55 -0
- package/docs/i18n/HARNESS_CODEX.zh.md +56 -0
- package/docs/i18n/HARNESS_CURSOR.es.md +42 -0
- package/docs/i18n/HARNESS_CURSOR.fr.md +42 -0
- package/docs/i18n/HARNESS_CURSOR.ja.md +45 -0
- package/docs/i18n/HARNESS_CURSOR.ko.md +45 -0
- package/docs/i18n/HARNESS_CURSOR.ru.md +42 -0
- package/docs/i18n/HARNESS_CURSOR.zh.md +42 -0
- package/docs/i18n/HARNESS_GEMINI.es.md +44 -0
- package/docs/i18n/HARNESS_GEMINI.fr.md +44 -0
- package/docs/i18n/HARNESS_GEMINI.ja.md +45 -0
- package/docs/i18n/HARNESS_GEMINI.ko.md +45 -0
- package/docs/i18n/HARNESS_GEMINI.ru.md +44 -0
- package/docs/i18n/HARNESS_GEMINI.zh.md +45 -0
- package/docs/i18n/HARNESS_HERMES.es.md +54 -0
- package/docs/i18n/HARNESS_HERMES.fr.md +54 -0
- package/docs/i18n/HARNESS_HERMES.ja.md +57 -0
- package/docs/i18n/HARNESS_HERMES.ko.md +57 -0
- package/docs/i18n/HARNESS_HERMES.ru.md +54 -0
- package/docs/i18n/HARNESS_HERMES.zh.md +57 -0
- package/docs/i18n/HARNESS_OPENCLAW.es.md +41 -0
- package/docs/i18n/HARNESS_OPENCLAW.fr.md +41 -0
- package/docs/i18n/HARNESS_OPENCLAW.ja.md +44 -0
- package/docs/i18n/HARNESS_OPENCLAW.ko.md +44 -0
- package/docs/i18n/HARNESS_OPENCLAW.ru.md +41 -0
- package/docs/i18n/HARNESS_OPENCLAW.zh.md +42 -0
- package/docs/i18n/HARNESS_OPENCODE.es.md +41 -0
- package/docs/i18n/HARNESS_OPENCODE.fr.md +41 -0
- package/docs/i18n/HARNESS_OPENCODE.ja.md +44 -0
- package/docs/i18n/HARNESS_OPENCODE.ko.md +44 -0
- package/docs/i18n/HARNESS_OPENCODE.ru.md +41 -0
- package/docs/i18n/HARNESS_OPENCODE.zh.md +44 -0
- package/docs/i18n/HERMES_VOICE.es.md +46 -0
- package/docs/i18n/HERMES_VOICE.fr.md +46 -0
- package/docs/i18n/HERMES_VOICE.ja.md +46 -0
- package/docs/i18n/HERMES_VOICE.ko.md +65 -0
- package/docs/i18n/HERMES_VOICE.ru.md +46 -0
- package/docs/i18n/HERMES_VOICE.zh.md +46 -0
- package/docs/i18n/MULTI_INSTANCE.es.md +25 -0
- package/docs/i18n/MULTI_INSTANCE.fr.md +25 -0
- package/docs/i18n/MULTI_INSTANCE.ja.md +25 -0
- package/docs/i18n/MULTI_INSTANCE.ko.md +25 -0
- package/docs/i18n/MULTI_INSTANCE.ru.md +25 -0
- package/docs/i18n/MULTI_INSTANCE.zh.md +25 -0
- package/docs/i18n/README.es.md +20 -134
- package/docs/i18n/README.fr.md +20 -134
- package/docs/i18n/README.ja.md +20 -134
- package/docs/i18n/README.ko.md +20 -133
- package/docs/i18n/README.ru.md +20 -134
- package/docs/i18n/README.zh.md +20 -133
- package/docs/i18n/RELEASE.es.md +26 -1
- package/docs/i18n/RELEASE.fr.md +26 -1
- package/docs/i18n/RELEASE.ja.md +26 -1
- package/docs/i18n/RELEASE.ko.md +26 -1
- package/docs/i18n/RELEASE.ru.md +26 -1
- package/docs/i18n/RELEASE.zh.md +26 -1
- package/docs/i18n/TROUBLESHOOTING.es.md +39 -0
- package/docs/i18n/TROUBLESHOOTING.fr.md +39 -0
- package/docs/i18n/TROUBLESHOOTING.ja.md +39 -0
- package/docs/i18n/TROUBLESHOOTING.ko.md +39 -0
- package/docs/i18n/TROUBLESHOOTING.ru.md +39 -0
- package/docs/i18n/TROUBLESHOOTING.zh.md +39 -0
- package/docs/i18n/USAGE.es.md +25 -0
- package/docs/i18n/USAGE.fr.md +25 -0
- package/docs/i18n/USAGE.ja.md +25 -0
- package/docs/i18n/USAGE.ko.md +25 -0
- package/docs/i18n/USAGE.ru.md +25 -0
- package/docs/i18n/USAGE.zh.md +25 -0
- package/docs/superpowers/plans/2026-05-13-phase1-streaming-pipeline.md +122 -0
- package/docs/superpowers/plans/2026-05-13-phase10-push-notifications.md +152 -0
- package/docs/superpowers/plans/2026-05-13-phase2-agent-adapters.md +242 -0
- package/docs/superpowers/plans/2026-05-13-phase6-smart-progress.md +172 -0
- package/docs/superpowers/plans/2026-05-13-phase7-voice-plan-mode.md +108 -0
- package/docs/superpowers/plans/2026-05-14-cross-agent-voice-transfer.md +625 -0
- package/docs/superpowers/plans/2026-05-21-audio-overview-narrated-diffs.md +95 -0
- package/docs/superpowers/plans/2026-05-21-autoresearch-ontology.md +83 -0
- package/docs/superpowers/plans/2026-05-21-phase11-push-to-talk-wakeword-v2.md +77 -0
- package/docs/superpowers/plans/2026-05-21-phase12-multi-user-voice.md +147 -0
- package/docs/superpowers/plans/2026-05-21-phase14-verbalbench.md +136 -0
- package/docs/superpowers/plans/2026-05-21-phase15-phone-companion.md +72 -0
- package/integrations/fireredtts2/mlx_llm.py +183 -0
- package/integrations/fireredtts2/synth.py +156 -0
- package/integrations/fireredtts2/synth_mlx.py +196 -0
- package/integrations/mlxaudio/synth.py +74 -0
- package/integrations/neuttsair/synth.py +104 -0
- package/integrations/omnivoice/synth.py +110 -0
- package/package.json +7 -1
- package/scripts/cli.mjs +88 -3
- package/scripts/doctor.mjs +115 -4
- package/scripts/install.mjs +20 -2
- package/scripts/install_fireredtts2.sh +109 -0
- package/scripts/install_mlxaudio.sh +34 -0
- package/scripts/install_mossttsnano.sh +46 -0
- package/scripts/postinstall.mjs +34 -0
package/README.ko.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
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, Aider, Cursor CLI 또는 custom command를 지원합니다. `vc setup`이 설치된 것을 자동 감지해요. |
|
|
34
|
+
| 음성으로 에이전트 라우팅 | `"코덱스한테 물어봐"`로 한 턴만 보내거나 `"aider로 전환"`으로 sticky 전환. `"기본으로 돌아가"`로 복귀. 없는 바이너리는 감지해서 기본 에이전트로 fallback할지 물어봐. |
|
|
35
|
+
| Hermes 기본 음성 너머 | 같은 VC 음성 루프를 기반으로 프로젝트 방, `!ask` 공유 컨텍스트, 세밀한 끼어들기 처리, 진행/상태 음성 안내, 다중 에이전트 백엔드 제어를 더합니다. |
|
|
36
|
+
| 운영 친화 기능 | doctor auto-fix, Docker UDP 안내, latency metrics, multi-instance rooms, redacted config checks가 포함됩니다. |
|
|
37
|
+
|
|
38
|
+
## 빠른 시작
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install -g verbalcoding@latest
|
|
42
|
+
vc setup
|
|
43
|
+
vc doctor
|
|
44
|
+
vc start
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`vc setup`이 일반 사용자 경로입니다. Discord Developer Portal을 열어 둔 상태에서 bot token, application/client ID, transcript target, voice channel names를 입력하세요.
|
|
48
|
+
|
|
49
|
+
자동화에서는 프롬프트를 건너뛴 뒤 Discord 값을 나중에 넣을 수 있습니다.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
vc setup --yes
|
|
53
|
+
vc setup token <bot-token> --client-id <discord-client-id>
|
|
54
|
+
vc setup channels "General,Team Voice"
|
|
55
|
+
vc doctor
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Discord 설정 1분 요약
|
|
59
|
+
|
|
60
|
+
1. Discord Developer Portal에서 application과 bot을 만듭니다.
|
|
61
|
+
2. Message Content privileged intent를 켭니다.
|
|
62
|
+
3. `vc setup`을 실행하고 bot token과 application/client ID를 붙여넣습니다.
|
|
63
|
+
4. 자동 입장할 voice channel 이름을 정확히 입력합니다.
|
|
64
|
+
5. 아래 명령으로 bot을 초대합니다.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
vc bot invite <discord-client-id>
|
|
68
|
+
vc bot invite <discord-client-id> --guild <guild-id>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 작은 명령 지도
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
vc setup # 안내형 설정: prerequisites, Discord, backend, voice
|
|
75
|
+
vc setup --yes # 비대화형 bootstrap/starter config
|
|
76
|
+
vc setup token # 나중에 Discord bot token과 client ID 회전/추가
|
|
77
|
+
vc setup channels "General,Team Voice" # auto-join voice channel names 업데이트
|
|
78
|
+
vc bot invite CLIENT_ID # Discord bot invite URL 생성
|
|
79
|
+
vc status # 현재 설정 표시
|
|
80
|
+
vc language ko|en|auto # language preset 전환
|
|
81
|
+
vc doctor # redacted health check와 auto-fix
|
|
82
|
+
vc start # 기본 bridge 시작
|
|
83
|
+
vc instance setup NAME # 격리된 project voice bot 생성
|
|
84
|
+
vc instance start NAME # 해당 bot을 background로 실행
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 더 보기
|
|
88
|
+
|
|
89
|
+
| 가이드 | 내용 |
|
|
90
|
+
|---|---|
|
|
91
|
+
| [문서 허브](docs/i18n/README.ko.md) | 현지화된 가이드 색인. |
|
|
92
|
+
| [Fresh Install](docs/i18n/FRESH_INSTALL.ko.md) | npm/global setup, Discord 설정, 첫 실행. |
|
|
93
|
+
| [Usage](docs/i18n/USAGE.ko.md) | CLI 명령, Discord 명령, 실행 모드, latency. |
|
|
94
|
+
| [하니스 사용법](docs/i18n/HARNESSES.ko.md) | Claude Code, Codex, Aider 등 백엔드별 설치·설정·음성 라우팅. |
|
|
95
|
+
| [Hermes 기본 음성 vs VerbalCoding](docs/i18n/HERMES_VOICE.ko.md) | Hermes가 이미 지원하는 Discord 음성과 VerbalCoding의 차이. |
|
|
96
|
+
| [Configuration](docs/i18n/CONFIGURATION.ko.md) | .env, agent backends, MCP, TTS, 운영. |
|
|
97
|
+
| [Troubleshooting](docs/i18n/TROUBLESHOOTING.ko.md) | Docker UDP, token/channel 누락 점검. |
|
|
98
|
+
| [Multi-Instance](docs/i18n/MULTI_INSTANCE.ko.md) | 프로젝트마다 하나의 고정 음성 방. |
|
|
99
|
+
|
|
100
|
+
## 요구 사항
|
|
101
|
+
|
|
102
|
+
| 계층 | 기본값 |
|
|
103
|
+
|---|---|
|
|
104
|
+
| Runtime | Node.js 20+와 npm. |
|
|
105
|
+
| Audio | `ffmpeg`와 local `whisper-cli`. |
|
|
106
|
+
| TTS | 기본 Edge TTS, 선택 OpenVoice, SpeechSwift/CosyVoice, Supertonic, OmniVoice, Qwen3 TTS CLI. |
|
|
107
|
+
| Discord | Bot token, Message Content intent, voice permissions, 일치하는 channel names. |
|
|
108
|
+
| Agent | 인증된 CLI harness 하나 이상, 기본은 Hermes Agent. |
|
|
109
|
+
|
|
110
|
+
## Docker / 컨테이너 참고
|
|
111
|
+
|
|
112
|
+
로그에 `Cannot perform IP discovery - socket closed`가 보이면 Discord voice UDP가 막힌 것입니다. Linux Docker Compose에서는 다음을 사용하세요:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
services:
|
|
116
|
+
verbalcoding:
|
|
117
|
+
network_mode: "host"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
`network_mode: "host"`와 `ports:`를 함께 쓰지 마세요.
|
|
121
|
+
|
|
122
|
+
## 기여
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
node --check app-node/main.mjs
|
|
126
|
+
npm test
|
|
127
|
+
bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
|
|
128
|
+
npm pack --dry-run
|
|
129
|
+
vc doctor
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## 상태
|
|
133
|
+
|
|
134
|
+
VerbalCoding은 공개 릴리스를 지향하지만 아직 초기 단계입니다. 데모 영상/GIF, 더 넓은 Linux 검증, CI, 보안 리뷰는 TODO입니다.
|
package/README.md
CHANGED
|
@@ -1,148 +1,192 @@
|
|
|
1
1
|
# VerbalCoding
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<strong>
|
|
4
|
+
<strong>The voice layer for any coding agent — real barge-in, streaming latency, and the agents you already use.</strong>
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<a href="
|
|
9
|
-
<a href="
|
|
10
|
-
<a href="
|
|
11
|
-
<a href="
|
|
12
|
-
<a href="
|
|
13
|
-
<a href="
|
|
8
|
+
<a href="./README.ko.md">한국어</a> ·
|
|
9
|
+
<a href="./README.ja.md">日本語</a> ·
|
|
10
|
+
<a href="./README.zh.md">中文</a> ·
|
|
11
|
+
<a href="./README.es.md">Español</a> ·
|
|
12
|
+
<a href="./README.fr.md">Français</a> ·
|
|
13
|
+
<a href="./README.ru.md">Русский</a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
17
|
+
<img alt="npm" src="https://img.shields.io/npm/v/verbalcoding?color=CB3837&logo=npm&logoColor=white">
|
|
17
18
|
<img alt="Node.js" src="https://img.shields.io/badge/Node.js-20%2B-339933?logo=node.js&logoColor=white">
|
|
18
19
|
<img alt="Discord" src="https://img.shields.io/badge/Discord-voice%20bridge-5865F2?logo=discord&logoColor=white">
|
|
19
20
|
<img alt="STT" src="https://img.shields.io/badge/STT-whisper.cpp-7C3AED">
|
|
20
|
-
<img alt="TTS" src="https://img.shields.io/badge/TTS-Edge%20%7C%20OpenVoice%20%7C%
|
|
21
|
-
<img alt="
|
|
21
|
+
<img alt="TTS" src="https://img.shields.io/badge/TTS-Edge%20%7C%20OpenVoice%20%7C%20SpeechSwift-0EA5E9">
|
|
22
|
+
<img alt="License" src="https://img.shields.io/github/license/ca1773130n/VerbalCoding">
|
|
22
23
|
</p>
|
|
23
24
|
|
|
24
25
|
<p align="center">
|
|
25
26
|
<img src="docs/assets/figures/verbalcoding-flow.svg" alt="VerbalCoding voice-to-agent flow" width="860">
|
|
26
27
|
</p>
|
|
27
28
|
|
|
28
|
-
## Why
|
|
29
|
+
## Why it exists
|
|
29
30
|
|
|
30
|
-
VerbalCoding turns a Discord voice channel into a hands-free
|
|
31
|
+
VerbalCoding turns a Discord voice channel into a hands-free cockpit for **any** CLI coding agent. Hermes ships its own `/voice join` for Hermes; VerbalCoding is a thin, agent-agnostic layer that puts the same loop on top of Hermes, Claude Code, Codex, Gemini, OpenCode, OpenClaw, Aider, Cursor CLI, or any non-interactive shell command — with the rough edges other voice frontends still have on their roadmap:
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
- **True audio barge-in** — interrupt the agent mid-sentence; Hermes' built-in voice pauses its listener during TTS.
|
|
34
|
+
- **Streaming pipeline** — first sentence plays while the agent is still writing (Hermes lists this as a future Phase-4 item).
|
|
35
|
+
- **Smart progress narration** — describes intent ("wiring the new login route"), not file lists.
|
|
36
|
+
- **Voice plan mode** — say "plan it first", edit by voice ("skip step 3"), say "approve" to execute.
|
|
37
|
+
- **Cross-agent routing by voice** — "ask Codex what it thinks" for a single turn, "switch to Aider" to make it sticky, "back to default" to restore. The plan can also emit a `which_agent` slot so the agent itself picks the next backend.
|
|
38
|
+
- **Phone-down mode** — push notification with a voice summary when a long task completes and the room is empty.
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
## What feels different
|
|
41
|
+
|
|
42
|
+
| Capability | Why it matters |
|
|
35
43
|
|---|---|
|
|
36
|
-
|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
44
|
+
| Agent choice, first-class | Hermes Agent, Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw, Aider, Cursor CLI, or any custom command. `vc setup` auto-detects what's installed. |
|
|
45
|
+
| Cross-agent voice routing | Say "ask Codex …" (single turn), "switch to Aider" (sticky), or "back to default". Missing binaries are detected and the bridge offers to fall back to the default agent. Handoff prompts carry recent utterances + last plan decisions to the new agent. |
|
|
46
|
+
| Real barge-in | VAD thresholds tuned for indoor and noisy rooms; cut in mid-utterance and resume the conversation. |
|
|
47
|
+
| Streaming end-to-end | Sentence-by-sentence playback while the agent is still writing; first audio in well under a second on a warm cache. On by default — set `STREAMING_TTS=0` to fall back to whole-reply playback. |
|
|
48
|
+
| Smart progress | Optional LLM summarizer collapses raw events into one human sentence; falls back to the existing regex labels when no key is set. |
|
|
49
|
+
| Plan-mode by voice | Narrated, editable, voice-driven plans without touching the keyboard. |
|
|
50
|
+
| Phone-down handoff | Long task + empty VC = push notification (`ntfy`/`pushover`) with a redacted one-line summary and tap-to-rejoin link. |
|
|
51
|
+
| Local speech loop | Discord audio is transcribed by local `whisper-cli`; TTS via Edge, OpenVoice, SpeechSwift/CosyVoice, or Supertonic. |
|
|
52
|
+
| Real operations support | Doctor auto-fixes, Docker UDP guidance, latency metrics, multi-instance project rooms, redacted config checks. |
|
|
53
|
+
|
|
54
|
+
> **Already using Hermes Agent?** Hermes itself has a working Discord voice loop via `/voice join` / `/voice channel`. Use VerbalCoding when you want it agent-agnostic, want barge-in and streaming today, or want plan-mode, push handoff, and smart narration on top of the same loop. The two coexist — VerbalCoding can drive Hermes as its backend.
|
|
42
55
|
|
|
43
56
|
## Quick Start
|
|
44
57
|
|
|
45
|
-
Fastest path with npm:
|
|
46
|
-
|
|
47
58
|
```bash
|
|
48
|
-
npm install -g verbalcoding
|
|
49
|
-
vc setup
|
|
59
|
+
npm install -g verbalcoding@latest
|
|
60
|
+
vc setup # detects installed agents and lets you pick
|
|
50
61
|
vc doctor
|
|
51
62
|
vc start
|
|
52
63
|
```
|
|
53
64
|
|
|
54
|
-
|
|
65
|
+
`vc setup` is the normal human path. Keep Discord Developer Portal open while it asks for your bot token, application/client ID, transcript target, and voice channel names.
|
|
66
|
+
|
|
67
|
+
Automation can skip prompts, then fill Discord details later:
|
|
55
68
|
|
|
56
69
|
```bash
|
|
57
|
-
|
|
70
|
+
vc setup --yes
|
|
71
|
+
vc setup token <bot-token> --client-id <discord-client-id>
|
|
72
|
+
vc setup channels "General,Team Voice"
|
|
58
73
|
vc doctor
|
|
59
|
-
vc start
|
|
60
74
|
```
|
|
61
75
|
|
|
62
|
-
|
|
76
|
+
Contributor clone path:
|
|
63
77
|
|
|
64
78
|
```bash
|
|
65
79
|
git clone https://github.com/ca1773130n/VerbalCoding.git
|
|
66
80
|
cd VerbalCoding
|
|
67
|
-
./scripts/install.sh
|
|
81
|
+
./scripts/install.sh
|
|
68
82
|
vc doctor
|
|
69
83
|
./run.sh
|
|
70
84
|
```
|
|
71
85
|
|
|
72
|
-
|
|
86
|
+
## Discord setup in one minute
|
|
73
87
|
|
|
74
|
-
|
|
88
|
+
1. Create a Discord application and bot in <https://discord.com/developers/applications>.
|
|
89
|
+
2. Enable the Message Content privileged intent.
|
|
90
|
+
3. Run `vc setup` and paste the bot token plus application/client ID when prompted.
|
|
91
|
+
4. Enter exact voice channel names for auto-join.
|
|
92
|
+
5. Invite the bot with:
|
|
75
93
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
| Hermes Agent | `hermes chat -Q -q` | Resume, verbose progress, cancellation, final-answer recovery |
|
|
81
|
-
| Claude Code | `claude -p` | CLI session file support through adapter defaults |
|
|
82
|
-
| Codex CLI | `codex exec` | CLI session file support through adapter defaults |
|
|
83
|
-
| Gemini CLI | `gemini -p` | CLI session file support through adapter defaults |
|
|
84
|
-
| OpenCode | `opencode run` | CLI session file support through adapter defaults |
|
|
85
|
-
| OpenClaw | `openclaw run` | CLI session file support through adapter defaults |
|
|
86
|
-
| Custom | `AGENT_COMMAND` | Bring your own non-interactive command |
|
|
94
|
+
```bash
|
|
95
|
+
vc bot invite <discord-client-id>
|
|
96
|
+
vc bot invite <discord-client-id> --guild <guild-id>
|
|
97
|
+
```
|
|
87
98
|
|
|
88
|
-
|
|
99
|
+
Secrets are stored in ignored local env files with mode `0600` and are not printed back by `vc doctor`.
|
|
89
100
|
|
|
90
|
-
|
|
91
|
-
|---|---|
|
|
92
|
-
| [Fresh Install](docs/FRESH_INSTALL.md) | Clean clone setup, model download, first run |
|
|
93
|
-
| [Usage Guide](docs/USAGE.md) | CLI commands, Discord commands, progress mode, latency metrics |
|
|
94
|
-
| [Configuration](docs/CONFIGURATION.md) | `.env`, agent backends, MCP, TTS backends, operational notes |
|
|
95
|
-
| [Multi-Instance](docs/MULTI_INSTANCE.md) | One permanent Discord voice room per project |
|
|
96
|
-
| [Release Notes](docs/RELEASE.md) | Current capabilities and pre-release checklist |
|
|
97
|
-
|
|
98
|
-
## Tiny Command Map
|
|
101
|
+
## Tiny command map
|
|
99
102
|
|
|
100
103
|
```bash
|
|
101
|
-
vc
|
|
102
|
-
vc
|
|
103
|
-
vc
|
|
104
|
-
vc
|
|
105
|
-
vc
|
|
106
|
-
vc
|
|
107
|
-
vc
|
|
104
|
+
vc setup # guided setup with agent auto-detection
|
|
105
|
+
vc setup --yes # non-interactive bootstrap/starter config
|
|
106
|
+
vc setup token # rotate or add Discord bot token/client ID later
|
|
107
|
+
vc setup channels "General,Team Voice" # update auto-join voice channel names
|
|
108
|
+
vc bot invite CLIENT_ID # generate a Discord bot invite URL
|
|
109
|
+
vc status # show active language, TTS, bridge settings, and resolved backend
|
|
110
|
+
vc language ko|en|auto # switch STT/progress/TTS language preset
|
|
111
|
+
vc doctor # redacted health check with auto-fix suggestions
|
|
112
|
+
vc start # start the default bridge
|
|
113
|
+
vc instance setup NAME # create an isolated project voice bot
|
|
114
|
+
vc instance start NAME # run that bot in the background
|
|
108
115
|
```
|
|
109
116
|
|
|
110
117
|
In Discord:
|
|
111
118
|
|
|
112
119
|
| Command | What it does |
|
|
113
120
|
|---|---|
|
|
114
|
-
| `!join` | Join your current voice channel. |
|
|
115
|
-
| `!ask <prompt>` | Send text to the same agent backend. |
|
|
116
|
-
| `!verbose on\|off` |
|
|
117
|
-
| `!latency` | Summarize recent
|
|
118
|
-
| `!sensitivity normal` |
|
|
119
|
-
| `!sensitivity conservative` | Use stricter noisy/outdoor sensitivity. |
|
|
121
|
+
| `!join` / `!leave` | Join or leave your current voice channel. |
|
|
122
|
+
| `!ask <prompt>` | Send text to the same selected agent backend. |
|
|
123
|
+
| `!verbose on\|off` | Toggle short progress updates. |
|
|
124
|
+
| `!latency` / `!metrics` | Summarize recent STT/agent/TTS latency. |
|
|
125
|
+
| `!sensitivity normal\|conservative` | Tune barge-in for indoor or noisy environments. |
|
|
120
126
|
| `!session new <name> <workdir> [context] --voice <voice-channel>` | Bind a project session to a voice room. |
|
|
121
127
|
|
|
128
|
+
## Roadmap
|
|
129
|
+
|
|
130
|
+
The differentiation push is tracked in [docs/ROADMAP.md](./docs/ROADMAP.md). Five phases land the claims above:
|
|
131
|
+
|
|
132
|
+
| # | Phase | What it adds |
|
|
133
|
+
|---|---|---|
|
|
134
|
+
| 1 | Streaming pipeline | Sentence-by-sentence TTS while the agent is still writing. |
|
|
135
|
+
| 2 | Agent-agnostic adapters | First-class Aider + Cursor CLI; `vc setup` auto-detects. |
|
|
136
|
+
| 6 | Smart progress | LLM-summarized narration. Falls back to today's regex labels. |
|
|
137
|
+
| 7 | Voice plan mode | Narrate plan, voice-edit, approve to execute. |
|
|
138
|
+
| 10 | Push notification handoff | ntfy/Pushover when a long task ends and the room is empty. |
|
|
139
|
+
|
|
140
|
+
## Learn more
|
|
141
|
+
|
|
142
|
+
| Guide | What you get |
|
|
143
|
+
|---|---|
|
|
144
|
+
| [Docs hub](docs/README.md) | One page linking every guide and localized doc set. |
|
|
145
|
+
| [Roadmap](docs/ROADMAP.md) | Differentiation plan and per-phase implementation plans. |
|
|
146
|
+
| [Fresh Install](docs/FRESH_INSTALL.md) | npm/global setup, Discord app setup, token/channel commands, first run. |
|
|
147
|
+
| [Usage Guide](docs/USAGE.md) | CLI commands, Discord commands, run modes, voice changes, latency metrics. |
|
|
148
|
+
| [Hermes Built-in Voice vs VerbalCoding](docs/HERMES_VOICE.md) | What Hermes already supports and when VerbalCoding is worth adding. |
|
|
149
|
+
| [Configuration](docs/CONFIGURATION.md) | `.env`, agent backends, MCP server, TTS backends, operational notes. |
|
|
150
|
+
| [Troubleshooting](docs/TROUBLESHOOTING.md) | Docker host networking, UDP voice failures, missing token/channel diagnostics. |
|
|
151
|
+
| [Multi-Instance](docs/MULTI_INSTANCE.md) | One permanent Discord voice room per project. |
|
|
152
|
+
| [Release Notes](docs/RELEASE.md) | Current capabilities, checks, and public-release gaps. |
|
|
153
|
+
|
|
122
154
|
## Requirements
|
|
123
155
|
|
|
124
156
|
| Layer | Default |
|
|
125
157
|
|---|---|
|
|
126
|
-
| Runtime | Node.js 20
|
|
127
|
-
| Audio | `ffmpeg`;
|
|
128
|
-
| Speech recognition | Local `whisper-cli` from whisper.cpp
|
|
129
|
-
| TTS | Edge TTS
|
|
130
|
-
| Discord | Bot token, Message Content intent, voice permissions |
|
|
131
|
-
| Agent | At least one
|
|
132
|
-
| Platform focus | macOS / Apple Silicon most tested; Linux bootstrap is best-effort
|
|
158
|
+
| Runtime | Node.js 20+ and npm; setup can install via Homebrew/apt/dnf/pacman where supported. |
|
|
159
|
+
| Audio | `ffmpeg`; setup/doctor can install it on supported OSes. |
|
|
160
|
+
| Speech recognition | Local `whisper-cli` from whisper.cpp plus `models/ggml-small-q5_1.bin`. |
|
|
161
|
+
| TTS | Edge TTS by default; optional OpenVoice, SpeechSwift/CosyVoice, Supertonic, OmniVoice, and Qwen3 TTS CLI paths. |
|
|
162
|
+
| Discord | Bot token, Message Content intent, voice permissions, matching auto-join channel names. |
|
|
163
|
+
| Agent | At least one CLI harness installed; `vc setup` auto-detects Hermes, Claude Code, Codex, Gemini, OpenCode, OpenClaw, Aider, Cursor CLI. |
|
|
164
|
+
| Platform focus | macOS / Apple Silicon most tested; Linux bootstrap is best-effort; Windows unsupported for now. |
|
|
165
|
+
|
|
166
|
+
## Docker / container note
|
|
167
|
+
|
|
168
|
+
Discord text login can work while voice join fails if outbound UDP is blocked. If logs show `Cannot perform IP discovery - socket closed`, use Linux host networking for the service that runs `vc start`:
|
|
169
|
+
|
|
170
|
+
```yaml
|
|
171
|
+
services:
|
|
172
|
+
verbalcoding:
|
|
173
|
+
network_mode: "host"
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Do not combine `network_mode: "host"` with `ports:`. Docker Desktop for macOS/Windows behaves differently; if UDP still fails there, run VerbalCoding directly on the host or a Linux VM.
|
|
133
177
|
|
|
134
178
|
## Contributing
|
|
135
179
|
|
|
136
|
-
Run
|
|
180
|
+
Run lightweight checks before sending changes:
|
|
137
181
|
|
|
138
182
|
```bash
|
|
139
183
|
node --check app-node/main.mjs
|
|
140
184
|
npm test
|
|
141
|
-
bash -n run.sh scripts/install.sh
|
|
185
|
+
bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
|
|
142
186
|
npm pack --dry-run
|
|
143
187
|
vc doctor
|
|
144
188
|
```
|
|
145
189
|
|
|
146
190
|
## Status
|
|
147
191
|
|
|
148
|
-
|
|
192
|
+
Public-release oriented but still early. The roadmap above tracks live differentiation work. Demo video/GIF, broader Linux validation, CI, and deeper security review are still TODOs.
|
package/README.ru.md
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# VerbalCoding
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>Общайтесь с CLI-агентами для разработки голосом в Discord, как по телефону.</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.fr.md">Français</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 в hands-free кабину для coding agents. Вы произносите задачу, CLI-агент работает, а в ответ получаете короткую озвучку, текстовую расшифровку и события прогресса. Diffs и logs не зачитываются длинным TTS.
|
|
23
|
+
|
|
24
|
+
> **Уже используете Hermes Agent?** В Hermes уже есть встроенная поддержка голосовых каналов Discord через `/voice join` / `/voice channel`: бот может зайти в текущий VC, распознать речь через Whisper и ответить TTS. Для этого базового цикла VerbalCoding не обязателен. VerbalCoding добавляет workflow-слой: маршрутизацию проектов/сессий, общий контекст голоса+текста, правила прерывания, голосовой прогресс, языковые пресеты, метрики задержки и переключение CLI-бэкендов помимо Hermes.
|
|
25
|
+
|
|
26
|
+
## Что ощущается иначе
|
|
27
|
+
|
|
28
|
+
| Возможность | Зачем это важно |
|
|
29
|
+
|---|---|
|
|
30
|
+
| Работа как звонок | Говорите, слушайте, перебивайте и продолжайте в одном голосовом канале Discord. |
|
|
31
|
+
| Пошаговая настройка | `vc setup` проводит через prerequisites, Discord token/client ID, voice channel, transcript target, backend и TTS settings за один проход. |
|
|
32
|
+
| Локальный голосовой цикл | Discord audio → local `whisper-cli` → selected CLI agent → TTS reply. |
|
|
33
|
+
| Выбор агента | Hermes Agent, Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw, Aider, Cursor CLI или custom command. `vc setup` автоматически находит установленные. |
|
|
34
|
+
| Голосовая маршрутизация агента | `"ask Codex what it thinks"` — на один turn, `"switch to Aider"` — sticky, `"back to default"` — возврат. Отсутствующие бинарники определяются и мост предлагает fallback к агенту по умолчанию. |
|
|
35
|
+
| Больше, чем встроенный голос Hermes | Сохраняет тот же VC-голосовой цикл и добавляет проектные комнаты, общий контекст `!ask`, тонкую обработку прерываний, голос прогресса/статуса и управление multi-agent бэкендами. |
|
|
36
|
+
| Готовность к эксплуатации | doctor auto-fix, Docker UDP guide, latency metrics, multi-instance rooms и redacted config checks встроены. |
|
|
37
|
+
|
|
38
|
+
## Быстрый старт
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npm install -g verbalcoding@latest
|
|
42
|
+
vc setup
|
|
43
|
+
vc doctor
|
|
44
|
+
vc start
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
`vc setup` — обычный путь для человека. Держите Discord Developer Portal открытым и введите bot token, application/client ID, transcript target и voice channel names.
|
|
48
|
+
|
|
49
|
+
Для автоматизации можно пропустить prompts и добавить Discord-данные позже.
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
vc setup --yes
|
|
53
|
+
vc setup token <bot-token> --client-id <discord-client-id>
|
|
54
|
+
vc setup channels "General,Team Voice"
|
|
55
|
+
vc doctor
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Discord за одну минуту
|
|
59
|
+
|
|
60
|
+
1. Создайте application и bot в Discord Developer Portal.
|
|
61
|
+
2. Включите Message Content privileged intent.
|
|
62
|
+
3. Запустите `vc setup` и вставьте bot token и application/client ID.
|
|
63
|
+
4. Введите точные имена voice channels для auto-join.
|
|
64
|
+
5. Пригласите bot этими командами.
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
vc bot invite <discord-client-id>
|
|
68
|
+
vc bot invite <discord-client-id> --guild <guild-id>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Краткая карта команд
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
vc setup # пошаговая настройка: prerequisites, Discord, backend, voice
|
|
75
|
+
vc setup --yes # неинтерактивный bootstrap/starter config
|
|
76
|
+
vc setup token # позже обновить или добавить Discord bot token/client ID
|
|
77
|
+
vc setup channels "General,Team Voice" # обновить auto-join voice channel names
|
|
78
|
+
vc bot invite CLIENT_ID # сгенерировать Discord bot invite URL
|
|
79
|
+
vc status # показать текущие настройки
|
|
80
|
+
vc language ko|en|auto # переключить language preset
|
|
81
|
+
vc doctor # redacted health check и auto-fixes
|
|
82
|
+
vc start # запустить bridge по умолчанию
|
|
83
|
+
vc instance setup NAME # создать изолированный project voice bot
|
|
84
|
+
vc instance start NAME # запустить этот bot в background
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Подробнее
|
|
88
|
+
|
|
89
|
+
| Гайд | Что внутри |
|
|
90
|
+
|---|---|
|
|
91
|
+
| [Центр документации](docs/i18n/README.ru.md) | Индекс локализованных гайдов. |
|
|
92
|
+
| [Fresh Install](docs/i18n/FRESH_INSTALL.ru.md) | npm/global setup, настройка Discord и первый запуск. |
|
|
93
|
+
| [Usage](docs/i18n/USAGE.ru.md) | CLI-команды, Discord-команды, режимы запуска и latency. |
|
|
94
|
+
| [Использование по harness](docs/i18n/HARNESSES.ru.md) | Установка, настройка и голосовая маршрутизация для Claude Code, Codex, Aider и других. |
|
|
95
|
+
| [Встроенный голос Hermes vs VerbalCoding](docs/i18n/HERMES_VOICE.ru.md) | Что Hermes уже умеет в Discord voice и чем отличается VerbalCoding. |
|
|
96
|
+
| [Configuration](docs/i18n/CONFIGURATION.ru.md) | .env, agent backends, MCP, TTS и эксплуатация. |
|
|
97
|
+
| [Troubleshooting](docs/i18n/TROUBLESHOOTING.ru.md) | Docker UDP и проверки token/channel. |
|
|
98
|
+
| [Multi-Instance](docs/i18n/MULTI_INSTANCE.ru.md) | Одна постоянная voice room на проект. |
|
|
99
|
+
|
|
100
|
+
## Требования
|
|
101
|
+
|
|
102
|
+
| Слой | По умолчанию |
|
|
103
|
+
|---|---|
|
|
104
|
+
| Runtime | Node.js 20+ и npm. |
|
|
105
|
+
| Audio | `ffmpeg` и local `whisper-cli`. |
|
|
106
|
+
| TTS | По умолчанию Edge TTS; опционально OpenVoice, SpeechSwift/CosyVoice, Supertonic. |
|
|
107
|
+
| Discord | Bot token, Message Content intent, voice permissions и совпадающие channel names. |
|
|
108
|
+
| Agent | Минимум один аутентифицированный CLI harness; по умолчанию Hermes Agent. |
|
|
109
|
+
|
|
110
|
+
## Docker / контейнеры
|
|
111
|
+
|
|
112
|
+
Если в logs видно `Cannot perform IP discovery - socket closed`, Discord voice UDP заблокирован. В Linux Docker Compose используйте:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
services:
|
|
116
|
+
verbalcoding:
|
|
117
|
+
network_mode: "host"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Не совмещайте `network_mode: "host"` с `ports:`.
|
|
121
|
+
|
|
122
|
+
## Участие
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
node --check app-node/main.mjs
|
|
126
|
+
npm test
|
|
127
|
+
bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh
|
|
128
|
+
npm pack --dry-run
|
|
129
|
+
vc doctor
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Статус
|
|
133
|
+
|
|
134
|
+
VerbalCoding ориентирован на публичный релиз, но проект ещё ранний. Demo video/GIF, более широкая Linux validation, CI и security review остаются TODO.
|