verbalcoding 0.2.6 → 0.2.8

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 (44) hide show
  1. package/README.md +12 -22
  2. package/app-node/cli_install.test.mjs +15 -0
  3. package/docs/FRESH_INSTALL.md +8 -2
  4. package/docs/assets/figures/verbalcoding-flow.svg +45 -30
  5. package/docs/i18n/CONFIGURATION.es.md +239 -0
  6. package/docs/i18n/CONFIGURATION.fr.md +239 -0
  7. package/docs/i18n/CONFIGURATION.ja.md +239 -0
  8. package/docs/i18n/CONFIGURATION.ko.md +66 -74
  9. package/docs/i18n/CONFIGURATION.ru.md +239 -0
  10. package/docs/i18n/CONFIGURATION.zh.md +239 -0
  11. package/docs/i18n/FRESH_INSTALL.es.md +207 -0
  12. package/docs/i18n/FRESH_INSTALL.fr.md +207 -0
  13. package/docs/i18n/FRESH_INSTALL.ja.md +207 -0
  14. package/docs/i18n/FRESH_INSTALL.ko.md +60 -54
  15. package/docs/i18n/FRESH_INSTALL.ru.md +207 -0
  16. package/docs/i18n/FRESH_INSTALL.zh.md +207 -0
  17. package/docs/i18n/MULTI_INSTANCE.es.md +180 -0
  18. package/docs/i18n/MULTI_INSTANCE.fr.md +180 -0
  19. package/docs/i18n/MULTI_INSTANCE.ja.md +179 -0
  20. package/docs/i18n/MULTI_INSTANCE.ko.md +46 -46
  21. package/docs/i18n/MULTI_INSTANCE.ru.md +179 -0
  22. package/docs/i18n/MULTI_INSTANCE.zh.md +179 -0
  23. package/docs/i18n/README.es.md +83 -55
  24. package/docs/i18n/README.fr.md +85 -57
  25. package/docs/i18n/README.ja.md +83 -55
  26. package/docs/i18n/README.ko.md +47 -56
  27. package/docs/i18n/README.ru.md +86 -58
  28. package/docs/i18n/README.zh.md +83 -56
  29. package/docs/i18n/RELEASE.es.md +74 -0
  30. package/docs/i18n/RELEASE.fr.md +74 -0
  31. package/docs/i18n/RELEASE.ja.md +74 -0
  32. package/docs/i18n/RELEASE.ko.md +38 -36
  33. package/docs/i18n/RELEASE.ru.md +74 -0
  34. package/docs/i18n/RELEASE.zh.md +74 -0
  35. package/docs/i18n/USAGE.es.md +161 -0
  36. package/docs/i18n/USAGE.fr.md +161 -0
  37. package/docs/i18n/USAGE.ja.md +161 -0
  38. package/docs/i18n/USAGE.ko.md +61 -72
  39. package/docs/i18n/USAGE.ru.md +161 -0
  40. package/docs/i18n/USAGE.zh.md +161 -0
  41. package/package.json +1 -1
  42. package/scripts/bootstrap_prereqs.sh +15 -3
  43. package/scripts/cli.mjs +1 -1
  44. package/scripts/doctor.mjs +114 -8
@@ -0,0 +1,239 @@
1
+ # VerbalCoding 配置
2
+
3
+ ## 设置向导
4
+
5
+ 这里有意不从头重新解释 Discord 机器人/应用设置。请先使用这些上游指南完成 Discord 侧步骤,然后回到 VerbalCoding 设置:
6
+
7
+ - Hermes Agent Discord 消息指南:<https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
8
+ - Discord 官方机器人概览:<https://docs.discord.com/developers/bots/overview>
9
+ - Discord 官方快速开始:<https://docs.discord.com/developers/quick-start/getting-started>
10
+
11
+ ```bash
12
+ ./scripts/install.sh
13
+ ```
14
+
15
+ 安装器会询问 Discord 令牌、允许的用户、自动加入的语音频道名称、转写频道/thread、CLI 驱动后端、默认语音语言、TTS 设置和唤醒词行为。它会以 `0600` 模式写入 `.env`;`.env` 会被 git 忽略。它还会链接简短的 shell 命令 `vc`。
16
+
17
+ 如果你在手动安装后只需要 shell 命令:
18
+
19
+ ```bash
20
+ npm link
21
+ ```
22
+
23
+ ## 支持的代理后端
24
+
25
+ 在 `.env` 中设置 `AGENT_BACKEND`。
26
+
27
+ | 后端 | 默认命令 | 说明 |
28
+ |---|---|---|
29
+ | `hermes` | `hermes chat -Q -q` | 默认。保留 `.verbalcoding-session` 恢复行为。 |
30
+ | `claude-code` / `claude` | `claude -p` | 用 `CLAUDE_COMMAND` 或 `AGENT_COMMAND` 覆盖。 |
31
+ | `codex` | `codex exec` | 用 `CODEX_COMMAND` 或 `AGENT_COMMAND` 覆盖。 |
32
+ | `gemini` | `gemini -p` | 用 `GEMINI_COMMAND` 或 `AGENT_COMMAND` 覆盖。 |
33
+ | `opencode` | `opencode run` | 用 `OPENCODE_COMMAND` 或 `AGENT_COMMAND` 覆盖。 |
34
+ | `openclaw` | `openclaw run` | 用 `OPENCLAW_COMMAND` 或 `AGENT_COMMAND` 覆盖。 |
35
+ | `custom` | 必需的 `AGENT_COMMAND` | 提示会作为最终 argv 参数追加。 |
36
+
37
+ 通用覆盖:
38
+
39
+ ```bash
40
+ AGENT_BACKEND=custom
41
+ AGENT_LABEL="My Harness"
42
+ AGENT_COMMAND="my-harness run --non-interactive"
43
+ AGENT_TASK_TIMEOUT_MS=0
44
+ AGENT_CHAT_TIMEOUT_MS=45000
45
+ AGENT_VERBOSE_PROGRESS=0
46
+ UTTERANCE_IDLE_MS=4500
47
+ LATENCY_LOG_PATH=./.logs/latency.jsonl
48
+ ```
49
+
50
+ ## 代理适配器契约
51
+
52
+ 语音桥接通过一个适配器契约与每个后端通信:
53
+
54
+ - `run({ text }, signal, plan)` 返回状态、最终答案文本、后端标签、耗时,以及可选会话元数据。
55
+ - `ask(text, signal, plan)` 是兼容性快捷方式,只返回最终答案文本。
56
+ - `capabilities` 声明后端是否支持会话恢复、流式进度和取消。
57
+ - Hermes 是参考适配器:会话恢复、详细进度流、取消,以及从 Hermes 会话文件恢复最终答案。
58
+
59
+ 新后端应实现同一契约,并将语音/STT/TTS 行为保留在适配器外部。
60
+
61
+ ## `.env` 示例
62
+
63
+ ```bash
64
+ DISCORD_BOT_TOKEN="***"
65
+ DISCORD_ALLOWED_USERS="123456789012345678"
66
+ AUTO_JOIN_VOICE_CHANNELS="일반,General,general"
67
+ TRANSCRIPT_CHANNEL_ID="123456789012345678"
68
+
69
+ AGENT_BACKEND="hermes"
70
+ STT_ENGINE="whisper_cpp"
71
+ WHISPER_CPP_BIN="whisper-cli"
72
+ WHISPER_CPP_MODEL="./models/ggml-small-q5_1.bin"
73
+
74
+ TTS_BACKEND="edge"
75
+ TTS_VOICE_TYPE="korean_female"
76
+ TTS_VOICE="ko-KR-SunHiNeural"
77
+ TTS_RATE="+10%"
78
+ TTS_MAX_CHARS="495"
79
+ TTS_VOLUME="1.0"
80
+
81
+ REQUIRE_WAKE_WORD="0"
82
+ MIN_UTTERANCE_SECONDS="1.0"
83
+ UTTERANCE_IDLE_MS="4500"
84
+ HERMES_TASK_TIMEOUT_MS="0"
85
+ HERMES_CHAT_TIMEOUT_MS="45000"
86
+ AGENT_VERBOSE_PROGRESS="0"
87
+ LATENCY_LOG_PATH="./.logs/latency.jsonl"
88
+ ```
89
+
90
+ ## TTS 声音选择
91
+
92
+ 语言预设和声音选择是分开的:
93
+
94
+ - `vc language ko|en|auto` 会更改 STT 语言、进度语言和该语言的默认声音。
95
+ - “남자 한국어 목소리로 바꿔”、“여자 한국어 목소리로 바꿔”、`change voice to Korean female` 和 `switch speaker to English` 等实时语音命令只更改说话人/声音类型。
96
+ - `!voice-test <text>` 会用当前选择的后端和声音播放快速样本。
97
+
98
+ 默认情况下,声音选择保存在 `config/tts-voices.json` 中。可用 `TTS_VOICE_CONFIG` 覆盖路径。运行中的桥接会在合成前重新读取/应用声音选择,因此语音命令无需完整重启即可生效。
99
+
100
+ 默认 Edge 目录:
101
+
102
+ | `TTS_VOICE_TYPE` | `TTS_VOICE` | 语言 |
103
+ |---|---|---|
104
+ | `korean_male` | `ko-KR-InJoonNeural` | 韩语 |
105
+ | `korean_female` | `ko-KR-SunHiNeural` | 韩语 |
106
+ | `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` | 韩语 |
107
+ | `english_male` | `en-US-GuyNeural` | 英语 |
108
+ | `english_female` | `en-US-AriaNeural` | 英语 |
109
+
110
+ 手动持久覆盖:
111
+
112
+ ```bash
113
+ TTS_BACKEND="edge"
114
+ TTS_VOICE_TYPE="korean_male"
115
+ TTS_VOICE="ko-KR-InJoonNeural"
116
+ TTS_VOICE_CONFIG="config/tts-voices.json"
117
+ ```
118
+
119
+ 对于 OpenVoice、SpeechSwift 或 Supertonic,请保留下方各节中的后端专用声音/参考设置;同一个声音目录文件仍可跟踪当前活动声音类型。
120
+
121
+ 后端专用声音选项:
122
+
123
+ | 后端 | 设置 | 声音选择 |
124
+ |---|---|---|
125
+ | Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | 上述内置类型,以及 `edge-tts --list-voices` 返回的任何声音 |
126
+ | Supertonic | `SUPERTONIC_VOICE`, `SUPERTONIC_LANGUAGE` | `M1`–`M5`, `F1`–`F5`;语言 `ko`, `en`, `es`, `pt`, `fr` |
127
+ | OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE`, `OPENVOICE_LANGUAGE` | 用户提供且获准使用的参考 WAV;风格默认 `default` |
128
+ | SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER`, `SPEECHSWIFT_MODEL_ID` | CosyVoice 的参考样本声音,或后端支持的说话人/模型 ID |
129
+
130
+ ## 发言分段
131
+
132
+ `UTTERANCE_IDLE_MS` 控制桥接在语音片段后等待多久,才判定用户说完并启动 STT。默认值是 `4500` ms,用于保留带自然停顿的较长口述指令。较低值让短命令感觉更快,但可能拆分长听写;较高值更适合需要思考停顿的语音。
133
+
134
+ ```bash
135
+ UTTERANCE_IDLE_MS="4500" # 平衡默认值
136
+ UTTERANCE_IDLE_MS="6000" # 对带停顿的长听写更安全
137
+ ```
138
+
139
+ ## MCP 服务器
140
+
141
+ VerbalCoding 附带一个 stdio MCP 服务器,因此 Hermes Agent 或任何 MCP 客户端都可以通过工具控制桥接,而不必依赖 skills 或自由形式 shell 命令。
142
+
143
+ Hermes 配置示例:
144
+
145
+ ```yaml
146
+ mcp_servers:
147
+ verbalcoding:
148
+ command: "node"
149
+ args: ["/path/to/VerbalCoding/scripts/mcp-server.mjs"]
150
+ timeout: 120
151
+ connect_timeout: 30
152
+ ```
153
+
154
+ 暴露的 MCP 工具:
155
+
156
+ | 工具 | 用途 |
157
+ |---|---|
158
+ | `status` | 在不暴露密钥的情况下报告桥接/配置状态 |
159
+ | `doctor` | 运行脱敏 doctor 检查 |
160
+ | `set_auto_restart` | 启用/禁用提交时语音机器人自动重启 |
161
+ | `set_language` | 同时更新 STT/进度/TTS 语言 |
162
+ | `start`, `stop`, `restart` | 控制 Discord 语音桥接 |
163
+
164
+ ## 可选 OpenVoice TTS
165
+
166
+ Edge TTS 仍是默认值和回退。若要尝试使用 OpenVoice V2 进行本地语音克隆:
167
+
168
+ ```bash
169
+ ./scripts/setup_openvoice.sh
170
+ # 从 OpenVoice 文档下载 checkpoints_v2_0417.zip,并解压到 vendor/OpenVoice/checkpoints_v2/
171
+ mkdir -p voice-samples
172
+ # 将获准使用的参考样本放到 voice-samples/user-reference.wav,
173
+ # 或在 Discord 中用 !voice-clone capture 采集一个。
174
+ python3 integrations/openvoice/synth.py --openvoice-dir vendor/OpenVoice --ref-audio voice-samples/user-reference.wav --text '안녕하세요. 버벌코딩 목소리 복제 테스트입니다.' --output /tmp/verbalcoding-openvoice-smoke.wav
175
+ ```
176
+
177
+ 然后设置:
178
+
179
+ ```bash
180
+ TTS_BACKEND="openvoice"
181
+ OPENVOICE_REF_AUDIO="./voice-samples/user-reference.wav"
182
+ OPENVOICE_PROGRESS="0"
183
+ ```
184
+
185
+ 只克隆你拥有或获准使用的声音。如果 OpenVoice 失败或超时,VerbalCoding 会回退到 Edge TTS。
186
+
187
+ ## 可选 Supertonic TTS
188
+
189
+ ```bash
190
+ ./scripts/setup_supertonic.sh
191
+ supertonic tts '안녕하세요. 수퍼토닉 테스트입니다.' --lang ko --voice M1 --steps 2 --speed 1.0 -o /tmp/verbalcoding-supertonic.wav
192
+ ```
193
+
194
+ 然后设置:
195
+
196
+ ```bash
197
+ TTS_BACKEND="supertonic"
198
+ SUPERTONIC_COMMAND="./.venv-supertonic/bin/supertonic"
199
+ SUPERTONIC_VOICE="M1"
200
+ SUPERTONIC_LANGUAGE="ko"
201
+ SUPERTONIC_STEPS="2"
202
+ SUPERTONIC_SPEED="1.0"
203
+ SUPERTONIC_PROGRESS="0"
204
+ ```
205
+
206
+ 如果 Supertonic 缺失、失败或超时,VerbalCoding 会回退到 Edge TTS。
207
+
208
+ ## 可选 SpeechSwift / CosyVoice TTS
209
+
210
+ 在 Apple Silicon 上,`speech-swift` 是一个用于韩语语音克隆的本地后端,基于 MLX 原生 CosyVoice/Qwen3-TTS。
211
+
212
+ ```bash
213
+ brew tap soniqo/speech https://github.com/soniqo/speech-swift
214
+ brew install speech
215
+ ```
216
+
217
+ 推荐 env:
218
+
219
+ ```bash
220
+ TTS_BACKEND="speechswift"
221
+ SPEECHSWIFT_MODE="server"
222
+ SPEECHSWIFT_ENGINE="cosyvoice"
223
+ SPEECHSWIFT_LANGUAGE="korean"
224
+ SPEECHSWIFT_REF_AUDIO="./voice-samples/user-reference.wav"
225
+ SPEECHSWIFT_SERVER_HOST="127.0.0.1"
226
+ SPEECHSWIFT_SERVER_PORT="18080"
227
+ SPEECHSWIFT_SERVER_URL="http://127.0.0.1:18080"
228
+ SPEECHSWIFT_PROGRESS="0"
229
+ ```
230
+
231
+ 保留 Edge 用于快速进度/回声提示。
232
+
233
+ ## 运维说明
234
+
235
+ - 机器人需要启用 Discord 特权 Message Content intent 才能使用文本命令。
236
+ - 机器人需要语音频道连接/发言权限。
237
+ - 对于 Hermes Agent,请在默认 profile 上正常配置/认证 Hermes(`hermes setup`、`hermes login` 等)。
238
+ - 对于 Claude Code、Codex、Gemini、OpenCode、OpenClaw,请分别安装并认证这些 CLI。
239
+ - 如果某个 CLI 在超时或信号失败时输出 diff/code,桥接会避免朗读它,而改为发送详细文本。
@@ -0,0 +1,207 @@
1
+ # Instalación limpia
2
+
3
+ Esta guía es para una instalación pública limpia. Evita suposiciones locales y usa el instalador para inicializar todo lo posible.
4
+
5
+ ## 1. Instala la CLI
6
+
7
+ Ruta recomendada con npm:
8
+
9
+ ```bash
10
+ npm install -g verbalcoding
11
+ ```
12
+
13
+ O ejecuta directamente el paquete publicado:
14
+
15
+ ```bash
16
+ npx verbalcoding setup --yes
17
+ ```
18
+
19
+ Si usaste `npm install -g`, continúa con:
20
+
21
+ ```bash
22
+ vc setup --yes
23
+ ```
24
+
25
+ Ruta de clonación de GitHub para colaboradores:
26
+
27
+ ```bash
28
+ git clone https://github.com/ca1773130n/VerbalCoding.git
29
+ cd VerbalCoding
30
+ ./scripts/install.sh --yes
31
+ ```
32
+
33
+ ## 2. Inicializa dependencias y ejecuta el asistente de configuración
34
+
35
+ En una instalación npm, no ejecutes `./scripts/install.sh` directamente; no hay un checkout del repositorio en tu directorio actual. Usa en su lugar el wrapper CLI empaquetado:
36
+
37
+ ```bash
38
+ vc setup --yes
39
+ ```
40
+
41
+ `vc setup` ejecuta el `scripts/install.sh` incluido dentro del paquete npm instalado. Usa `./scripts/install.sh --yes` solo cuando estés dentro de un clon de GitHub:
42
+
43
+ ```bash
44
+ ./scripts/install.sh --yes
45
+ ```
46
+
47
+ Qué hace esto:
48
+
49
+ - instala las dependencias npm cuando falta `node_modules/`,
50
+ - instala el comando corto de shell `vc` con `npm link`,
51
+ - instala `ffmpeg`, Node/npm y `whisper-cli` cuando el administrador de paquetes del SO lo admite,
52
+ - descarga `models/ggml-small-q5_1.bin`,
53
+ - crea `.venv-tts` e instala `edge-tts` cuando `edge-tts` no está ya en `PATH`,
54
+ - ejecuta el asistente interactivo de `.env`.
55
+
56
+ Rutas de arranque del sistema compatibles:
57
+
58
+ | SO | Ruta de dependencias del sistema |
59
+ |---|---|
60
+ | macOS | Homebrew: `brew install node ffmpeg whisper-cpp` según sea necesario |
61
+ | Debian/Ubuntu | `apt-get` para Node/npm, ffmpeg, Python y herramientas de compilación; compilación local alternativa de whisper.cpp |
62
+ | Fedora/RHEL | `dnf` para Node/npm, ffmpeg, Python y herramientas de compilación; compilación local alternativa de whisper.cpp |
63
+ | Arch | `pacman` para Node/npm, ffmpeg, Python y herramientas de compilación; compilación local alternativa de whisper.cpp |
64
+
65
+ Variantes útiles del instalador:
66
+
67
+ ```bash
68
+ vc setup --yes --no-wizard # dependency/bootstrap only from npm install
69
+ ./scripts/install.sh --yes --no-wizard # dependency/bootstrap only from a clone
70
+ ./scripts/install.sh --skip-system # do not install OS packages
71
+ ./scripts/install.sh --skip-model # do not download the default STT model
72
+ ./scripts/install.sh --skip-edge-tts # do not create .venv-tts
73
+ VERBALCODING_SKIP_CLI_LINK=1 ./scripts/install.sh --yes
74
+ ```
75
+
76
+ Si tu SO no es compatible, instala esto manualmente antes de volver a ejecutar:
77
+
78
+ - Node.js 20+ y npm
79
+ - ffmpeg
80
+ - Python 3 con venv/pip
81
+ - `whisper-cli` de whisper.cpp
82
+ - un backend de agente CLI autenticado, Hermes Agent por defecto
83
+
84
+ ## 3. Configuración de la aplicación de Discord
85
+
86
+ Lee primero las guías originales de configuración de bots de Discord si este es tu primer bot:
87
+
88
+ - Guía de mensajería Discord de Hermes Agent: <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
89
+ - Resumen oficial de bots de Discord: <https://docs.discord.com/developers/bots/overview>
90
+ - Guía oficial de primeros pasos de Discord: <https://docs.discord.com/developers/quick-start/getting-started>
91
+
92
+ Esas páginas muestran cómo crear una aplicación de Discord, añadir un usuario bot, habilitar intents privilegiados e invitarlo a un servidor. VerbalCoding usa la misma configuración de bot de Discord y luego añade recepción de voz, STT, ejecución de agentes CLI y reproducción TTS encima.
93
+
94
+ 1. Crea una aplicación y un bot de Discord en el Discord Developer Portal.
95
+ 2. Habilita el intent privilegiado Message Content.
96
+ 3. Copia el token del bot en el prompt del instalador o en `.env` como `DISCORD_BOT_TOKEN`.
97
+ 4. Genera una URL de invitación:
98
+
99
+ ```bash
100
+ vc bot invite <discord-client-id>
101
+ # or pin it to one server:
102
+ vc bot invite <discord-client-id> --guild <guild-id>
103
+ ```
104
+
105
+ La invitación incluye los scopes de bot y comandos slash, además de los permisos de texto/voz usados por VerbalCoding.
106
+
107
+ ## 4. Verifica
108
+
109
+ ```bash
110
+ vc doctor
111
+ ```
112
+
113
+ `vc doctor` está redactado: informa tokens/comandos/modelos faltantes sin imprimir valores secretos. Cuando falten prerrequisitos locales reparables (`ffmpeg`, `whisper-cli`, el modelo predeterminado o el asistente Edge TTS), primero vuelve a ejecutar automáticamente el bootstrap empaquetado. Corrige cualquier elemento `✗` restante y vuelve a ejecutarlo.
114
+
115
+ El éxito esperado incluye:
116
+
117
+ ```text
118
+ ✓ Node.js
119
+ ✓ npm
120
+ ✓ ffmpeg
121
+ ✓ whisper-cli
122
+ ✓ whisper.cpp model
123
+ ✓ Discord bot token configured — [REDACTED]
124
+ ✓ edge-tts
125
+ ✓ hermes CLI
126
+ Doctor passed. Run vc start to start VerbalCoding.
127
+ ```
128
+
129
+ Si el instalador creó un asistente local de Edge TTS, `.env` debería contener una ruta `EDGE_TTS_COMMAND` que apunte a `.venv-tts/bin/edge-tts`.
130
+
131
+ ## 5. Ejecuta el bot predeterminado único
132
+
133
+ ```bash
134
+ vc start
135
+ # or, from a GitHub clone:
136
+ ./run.sh
137
+ ```
138
+
139
+ Los registros de inicio correcto incluyen:
140
+
141
+ ```text
142
+ Logged in as <bot-name>
143
+ Listening in voice channel <server> / <channel>
144
+ ```
145
+
146
+ En Discord:
147
+
148
+ ```text
149
+ !ping
150
+ !join
151
+ !ask say hello briefly
152
+ !verbose on
153
+ ```
154
+
155
+ Luego habla en el canal de voz configurado. Deberías ver texto STT, texto de progreso cuando el modo detallado está activado, una respuesta final de texto y escuchar la reproducción TTS.
156
+
157
+ ## 6. Configuración de un proyecto por sala
158
+
159
+ Para un bot permanente por sala de voz de proyecto, crea una aplicación de Discord por proyecto y luego:
160
+
161
+ ```bash
162
+ vc instance setup my-project
163
+ vc bot invite <that-project-client-id>
164
+ vc instance start my-project
165
+ vc instance status my-project
166
+ ```
167
+
168
+ Cada instancia escribe un `instances/<name>.env` ignorado con su propio token, canal de voz, destino de transcripción, ruta de registro, archivo de sesión de Hermes y perfil de Hermes opcional.
169
+
170
+ ## 7. Configuración opcional de OpenVoice
171
+
172
+ La clonación de voz de OpenVoice es opcional. Mantén `TTS_BACKEND=edge` para una instalación pública nueva. Para habilitar OpenVoice más adelante:
173
+
174
+ ```bash
175
+ ./scripts/setup_openvoice.sh
176
+ # Download OpenVoice V2 checkpoints into vendor/OpenVoice/checkpoints_v2/
177
+ # Add a permitted local sample at voice-samples/user-reference.wav,
178
+ # or run the bot, say "목소리 샘플 녹음 시작해", then speak 10-30 seconds.
179
+ python3 integrations/openvoice/synth.py --openvoice-dir vendor/OpenVoice --ref-audio voice-samples/user-reference.wav --text '안녕하세요. 버벌코딩 목소리 복제 테스트입니다.' --output /tmp/verbalcoding-openvoice-smoke.wav
180
+ ```
181
+
182
+ Luego define `TTS_BACKEND=openvoice`, ejecuta `vc doctor` y prueba `!voice-test <text>` en Discord.
183
+
184
+ ## 8. Prueba rápida de clon limpio para mantenedores
185
+
186
+ Prueba rápida solo en el host:
187
+
188
+ ```bash
189
+ TMPDIR=$(mktemp -d)
190
+ git clone https://github.com/ca1773130n/VerbalCoding.git "$TMPDIR/VerbalCoding"
191
+ cd "$TMPDIR/VerbalCoding"
192
+ ./scripts/install.sh --yes --no-wizard
193
+ npm pack --dry-run
194
+ cp .env.example .env
195
+ chmod 600 .env
196
+ vc doctor || true
197
+ ```
198
+
199
+ El fallo esperado en este punto es la ausencia de secretos locales o una CLI de agente no autenticada, no tokens filtrados ni scripts de instalación faltantes.
200
+
201
+ Prueba rápida de instalación limpia en Ubuntu basada en Docker:
202
+
203
+ ```bash
204
+ ./scripts/docker_ubuntu_smoke.sh
205
+ ```
206
+
207
+ Esto ejecuta `ubuntu:24.04`, copia el árbol del repositorio rastreado a un contenedor limpio, ejecuta `./scripts/install.sh --yes --no-wizard`, escribe un `.env` de prueba sin secretos, comprueba `vc`, ejecuta pruebas de Node y verifica `vc doctor`. No se conecta a voz de Discord; usa una VM real de Ubuntu o WSL2 después de esto si necesitas una prueba de extremo a extremo con canal de voz.
@@ -0,0 +1,207 @@
1
+ # Installation propre
2
+
3
+ Ce guide couvre une installation publique propre. Il évite les hypothèses propres à une machine locale et utilise l'installateur pour amorcer autant d'éléments que possible.
4
+
5
+ ## 1. Installer la CLI
6
+
7
+ Chemin npm recommandé :
8
+
9
+ ```bash
10
+ npm install -g verbalcoding
11
+ ```
12
+
13
+ Ou exécutez directement le paquet publié :
14
+
15
+ ```bash
16
+ npx verbalcoding setup --yes
17
+ ```
18
+
19
+ Si vous avez utilisé `npm install -g`, continuez avec :
20
+
21
+ ```bash
22
+ vc setup --yes
23
+ ```
24
+
25
+ Chemin de clonage GitHub pour les contributeurs :
26
+
27
+ ```bash
28
+ git clone https://github.com/ca1773130n/VerbalCoding.git
29
+ cd VerbalCoding
30
+ ./scripts/install.sh --yes
31
+ ```
32
+
33
+ ## 2. Amorcer les dépendances et lancer l'assistant de configuration
34
+
35
+ Pour une installation npm, n'exécutez pas `./scripts/install.sh` directement : il n'y a pas de checkout du dépôt dans votre répertoire courant. Utilisez plutôt l'enveloppe CLI empaquetée :
36
+
37
+ ```bash
38
+ vc setup --yes
39
+ ```
40
+
41
+ `vc setup` exécute le `scripts/install.sh` inclus dans le paquet npm installé. N'utilisez `./scripts/install.sh --yes` que lorsque vous êtes dans un clone GitHub :
42
+
43
+ ```bash
44
+ ./scripts/install.sh --yes
45
+ ```
46
+
47
+ Ce que cela fait :
48
+
49
+ - installe les dépendances npm quand `node_modules/` est absent,
50
+ - installe la commande shell courte `vc` avec `npm link`,
51
+ - installe `ffmpeg`, Node/npm et `whisper-cli` quand le gestionnaire de paquets de l'OS le permet,
52
+ - télécharge `models/ggml-small-q5_1.bin`,
53
+ - crée `.venv-tts` et installe `edge-tts` quand `edge-tts` n'est pas déjà dans `PATH`,
54
+ - lance l'assistant interactif `.env`.
55
+
56
+ Chemins d'amorçage système pris en charge :
57
+
58
+ | OS | Chemin pour les dépendances système |
59
+ |---|---|
60
+ | macOS | Homebrew : `brew install node ffmpeg whisper-cpp` selon les besoins |
61
+ | Debian/Ubuntu | `apt-get` pour Node/npm, ffmpeg, Python, outils de build ; fallback de build whisper.cpp local |
62
+ | Fedora/RHEL | `dnf` pour Node/npm, ffmpeg, Python, outils de build ; fallback de build whisper.cpp local |
63
+ | Arch | `pacman` pour Node/npm, ffmpeg, Python, outils de build ; fallback de build whisper.cpp local |
64
+
65
+ Variantes utiles de l'installateur :
66
+
67
+ ```bash
68
+ vc setup --yes --no-wizard # dépendances/amorcage seulement depuis l'installation npm
69
+ ./scripts/install.sh --yes --no-wizard # dépendances/amorcage seulement depuis un clone
70
+ ./scripts/install.sh --skip-system # ne pas installer de paquets OS
71
+ ./scripts/install.sh --skip-model # ne pas télécharger le modèle STT par défaut
72
+ ./scripts/install.sh --skip-edge-tts # ne pas créer .venv-tts
73
+ VERBALCODING_SKIP_CLI_LINK=1 ./scripts/install.sh --yes
74
+ ```
75
+
76
+ Si votre OS n'est pas pris en charge, installez manuellement ces éléments avant de relancer :
77
+
78
+ - Node.js 20+ et npm
79
+ - ffmpeg
80
+ - Python 3 avec venv/pip
81
+ - `whisper-cli` de whisper.cpp
82
+ - un backend d'agent CLI authentifié, Hermes Agent par défaut
83
+
84
+ ## 3. Configuration de l'application Discord
85
+
86
+ Lisez d'abord les guides amont de configuration d'un bot Discord si c'est votre premier bot :
87
+
88
+ - Guide de messagerie Discord de Hermes Agent : <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
89
+ - Vue d'ensemble officielle des bots Discord : <https://docs.discord.com/developers/bots/overview>
90
+ - Guide officiel de démarrage Discord : <https://docs.discord.com/developers/quick-start/getting-started>
91
+
92
+ Ces pages montrent comment créer une application Discord, ajouter un utilisateur bot, activer les intents privilégiés et l'inviter sur un serveur. VerbalCoding utilise la même configuration de bot Discord, puis ajoute par-dessus la réception vocale, le STT, l'exécution d'agent CLI et la lecture TTS.
93
+
94
+ 1. Créez une application Discord et un bot dans le portail développeur Discord.
95
+ 2. Activez l'intent privilégié Message Content.
96
+ 3. Copiez le jeton du bot dans l'invite de l'installateur ou dans `.env` en tant que `DISCORD_BOT_TOKEN`.
97
+ 4. Générez une URL d'invitation :
98
+
99
+ ```bash
100
+ vc bot invite <discord-client-id>
101
+ # or pin it to one server:
102
+ vc bot invite <discord-client-id> --guild <guild-id>
103
+ ```
104
+
105
+ L'invitation inclut les scopes bot et commandes slash ainsi que les permissions texte/voix utilisées par VerbalCoding.
106
+
107
+ ## 4. Vérifier
108
+
109
+ ```bash
110
+ vc doctor
111
+ ```
112
+
113
+ `vc doctor` est expurgé : il signale les jetons/commandes/modèles manquants sans imprimer de valeurs secrètes. Quand des prérequis locaux réparables manquent (`ffmpeg`, `whisper-cli`, le modèle par défaut ou l'assistant Edge TTS), il relance d'abord automatiquement le bootstrap empaqueté. Corrigez les éléments `✗` restants, puis relancez-le.
114
+
115
+ Un succès attendu ressemble à :
116
+
117
+ ```text
118
+ ✓ Node.js
119
+ ✓ npm
120
+ ✓ ffmpeg
121
+ ✓ whisper-cli
122
+ ✓ whisper.cpp model
123
+ ✓ Discord bot token configured — [REDACTED]
124
+ ✓ edge-tts
125
+ ✓ hermes CLI
126
+ Doctor passed. Run vc start to start VerbalCoding.
127
+ ```
128
+
129
+ Si l'installateur a créé un assistant Edge TTS local, `.env` doit contenir un chemin `EDGE_TTS_COMMAND` pointant vers `.venv-tts/bin/edge-tts`.
130
+
131
+ ## 5. Lancer le bot par défaut unique
132
+
133
+ ```bash
134
+ vc start
135
+ # or, from a GitHub clone:
136
+ ./run.sh
137
+ ```
138
+
139
+ Les journaux d'un démarrage réussi incluent :
140
+
141
+ ```text
142
+ Logged in as <bot-name>
143
+ Listening in voice channel <server> / <channel>
144
+ ```
145
+
146
+ Dans Discord :
147
+
148
+ ```text
149
+ !ping
150
+ !join
151
+ !ask say hello briefly
152
+ !verbose on
153
+ ```
154
+
155
+ Parlez ensuite dans le salon vocal configuré. Vous devriez voir le texte STT, le texte de progression quand le mode détaillé est activé, une réponse texte finale et entendre la lecture TTS.
156
+
157
+ ## 6. Configuration un projet par salon
158
+
159
+ Pour un bot permanent par salon vocal de projet, créez une application Discord par projet, puis :
160
+
161
+ ```bash
162
+ vc instance setup my-project
163
+ vc bot invite <that-project-client-id>
164
+ vc instance start my-project
165
+ vc instance status my-project
166
+ ```
167
+
168
+ Chaque instance écrit un fichier ignoré `instances/<name>.env` avec son propre jeton, salon vocal, cible de transcription, chemin de journal, fichier de session Hermes et profil Hermes facultatif.
169
+
170
+ ## 7. Configuration OpenVoice facultative
171
+
172
+ Le clonage vocal OpenVoice est facultatif. Gardez `TTS_BACKEND=edge` pour une nouvelle installation publique. Pour activer OpenVoice plus tard :
173
+
174
+ ```bash
175
+ ./scripts/setup_openvoice.sh
176
+ # Download OpenVoice V2 checkpoints into vendor/OpenVoice/checkpoints_v2/
177
+ # Add a permitted local sample at voice-samples/user-reference.wav,
178
+ # or run the bot, say "목소리 샘플 녹음 시작해", then speak 10-30 seconds.
179
+ python3 integrations/openvoice/synth.py --openvoice-dir vendor/OpenVoice --ref-audio voice-samples/user-reference.wav --text '안녕하세요. 버벌코딩 목소리 복제 테스트입니다.' --output /tmp/verbalcoding-openvoice-smoke.wav
180
+ ```
181
+
182
+ Définissez ensuite `TTS_BACKEND=openvoice`, exécutez `vc doctor` et testez `!voice-test <text>` dans Discord.
183
+
184
+ ## 8. Smoke test de clone propre pour les mainteneurs
185
+
186
+ Smoke test rapide sur l'hôte uniquement :
187
+
188
+ ```bash
189
+ TMPDIR=$(mktemp -d)
190
+ git clone https://github.com/ca1773130n/VerbalCoding.git "$TMPDIR/VerbalCoding"
191
+ cd "$TMPDIR/VerbalCoding"
192
+ ./scripts/install.sh --yes --no-wizard
193
+ npm pack --dry-run
194
+ cp .env.example .env
195
+ chmod 600 .env
196
+ vc doctor || true
197
+ ```
198
+
199
+ L'échec attendu à ce stade est l'absence de secrets locaux ou d'authentification de la CLI d'agent, et non une fuite de jetons ou des scripts d'installation manquants.
200
+
201
+ Smoke test d'installation propre Ubuntu basé sur Docker :
202
+
203
+ ```bash
204
+ ./scripts/docker_ubuntu_smoke.sh
205
+ ```
206
+
207
+ Cela lance `ubuntu:24.04`, copie l'arborescence suivie du dépôt dans un conteneur propre, exécute `./scripts/install.sh --yes --no-wizard`, écrit un `.env` de smoke test sans secret, vérifie `vc`, lance les tests Node et vérifie `vc doctor`. Il ne se connecte pas à la voix Discord ; utilisez une vraie VM Ubuntu ou WSL2 après cela si vous avez besoin d'un test de bout en bout dans un salon vocal.