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.
- package/README.md +12 -22
- package/app-node/cli_install.test.mjs +15 -0
- package/docs/FRESH_INSTALL.md +8 -2
- package/docs/assets/figures/verbalcoding-flow.svg +45 -30
- package/docs/i18n/CONFIGURATION.es.md +239 -0
- package/docs/i18n/CONFIGURATION.fr.md +239 -0
- package/docs/i18n/CONFIGURATION.ja.md +239 -0
- package/docs/i18n/CONFIGURATION.ko.md +66 -74
- package/docs/i18n/CONFIGURATION.ru.md +239 -0
- package/docs/i18n/CONFIGURATION.zh.md +239 -0
- package/docs/i18n/FRESH_INSTALL.es.md +207 -0
- package/docs/i18n/FRESH_INSTALL.fr.md +207 -0
- package/docs/i18n/FRESH_INSTALL.ja.md +207 -0
- package/docs/i18n/FRESH_INSTALL.ko.md +60 -54
- package/docs/i18n/FRESH_INSTALL.ru.md +207 -0
- package/docs/i18n/FRESH_INSTALL.zh.md +207 -0
- package/docs/i18n/MULTI_INSTANCE.es.md +180 -0
- package/docs/i18n/MULTI_INSTANCE.fr.md +180 -0
- package/docs/i18n/MULTI_INSTANCE.ja.md +179 -0
- package/docs/i18n/MULTI_INSTANCE.ko.md +46 -46
- package/docs/i18n/MULTI_INSTANCE.ru.md +179 -0
- package/docs/i18n/MULTI_INSTANCE.zh.md +179 -0
- package/docs/i18n/README.es.md +83 -55
- package/docs/i18n/README.fr.md +85 -57
- package/docs/i18n/README.ja.md +83 -55
- package/docs/i18n/README.ko.md +47 -56
- package/docs/i18n/README.ru.md +86 -58
- package/docs/i18n/README.zh.md +83 -56
- package/docs/i18n/RELEASE.es.md +74 -0
- package/docs/i18n/RELEASE.fr.md +74 -0
- package/docs/i18n/RELEASE.ja.md +74 -0
- package/docs/i18n/RELEASE.ko.md +38 -36
- package/docs/i18n/RELEASE.ru.md +74 -0
- package/docs/i18n/RELEASE.zh.md +74 -0
- package/docs/i18n/USAGE.es.md +161 -0
- package/docs/i18n/USAGE.fr.md +161 -0
- package/docs/i18n/USAGE.ja.md +161 -0
- package/docs/i18n/USAGE.ko.md +61 -72
- package/docs/i18n/USAGE.ru.md +161 -0
- package/docs/i18n/USAGE.zh.md +161 -0
- package/package.json +1 -1
- package/scripts/bootstrap_prereqs.sh +15 -3
- package/scripts/cli.mjs +1 -1
- package/scripts/doctor.mjs +114 -8
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# VerbalCoding 发行说明
|
|
2
|
+
|
|
3
|
+
## 当前候选版本
|
|
4
|
+
|
|
5
|
+
VerbalCoding 是一个 Discord 语音桥接,用于通过语音控制基于 CLI 的编码代理。它面向公开发布,macOS / Apple Silicon 是测试最多的路径,并为常见包管理器提供尽力支持的 Linux 引导。
|
|
6
|
+
|
|
7
|
+
### 已包含
|
|
8
|
+
|
|
9
|
+
- 通过 Node `@discordjs/voice` 接收 Discord 语音。
|
|
10
|
+
- 通过 `whisper.cpp` + Metal 进行本地韩语 STT。
|
|
11
|
+
- 使用韩语默认声音进行 Edge TTS 播放。
|
|
12
|
+
- 通用 CLI 驱动适配器层:
|
|
13
|
+
- Hermes Agent
|
|
14
|
+
- Claude Code
|
|
15
|
+
- Codex CLI
|
|
16
|
+
- Gemini CLI
|
|
17
|
+
- OpenCode
|
|
18
|
+
- OpenClaw
|
|
19
|
+
- 自定义命令
|
|
20
|
+
- Hermes 后端的共享语音/文本会话支持。
|
|
21
|
+
- 长答案 TTS 分块和响应式插话。
|
|
22
|
+
- Diff/code/log 保护机制,避免大段技术输出被朗读。
|
|
23
|
+
- 面向室内与嘈杂/户外使用的普通和保守灵敏度模式。
|
|
24
|
+
- 设置向导、`.env.example`、`vc doctor` 前置条件检查器,以及用于 OS 软件包、npm 依赖、Edge TTS 辅助环境和默认 whisper.cpp 模型的 `./scripts/install.sh --yes` 引导。
|
|
25
|
+
- npm 包安装路径:`npm install -g verbalcoding`、`vc setup --yes` 和 `vc start`。
|
|
26
|
+
- 可选详细进度模式,在长时间代理工作期间提供仅文本的中间步骤更新。
|
|
27
|
+
- 常开 JSONL 延迟指标,以及用于流水线优化的 `!latency` / `!metrics` 摘要。
|
|
28
|
+
- 更耐心的发言空闲等待(`UTTERANCE_IDLE_MS=4500`),使带自然停顿的长口述指令不会被拆成部分提示加被忽略的处理期间语音。
|
|
29
|
+
- 多实例 Hermes profile 隔离:`vc instance setup <name>` 会自动将 Hermes profile 克隆到 `~/.hermes/profiles/<name>`,设置实例 workdir,初始化 SOUL.md,并将 `HERMES_HOME` 写入实例 env,使每项目记忆和 skills 保持分离;`vc instance start` 会自愈缺失 profile,`vc doctor` 会检查 profile 目录存在性和 `terminal.cwd` 一致性。
|
|
30
|
+
|
|
31
|
+
### 预发布检查清单
|
|
32
|
+
|
|
33
|
+
从仓库根目录运行:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
./scripts/install.sh --yes --no-wizard
|
|
37
|
+
./scripts/docker_ubuntu_smoke.sh # 需要 Docker;验证 ubuntu:24.04 干净安装
|
|
38
|
+
node --check app-node/main.mjs app-node/agent_adapters.mjs app-node/install_config.mjs scripts/install.mjs
|
|
39
|
+
npm test
|
|
40
|
+
PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 python3 -m pytest tests/ -q || [ $? -eq 5 ] # 没有 Python 测试时也可以
|
|
41
|
+
bash -n run.sh scripts/install.sh scripts/bootstrap_prereqs.sh scripts/docker_ubuntu_smoke.sh
|
|
42
|
+
npm pack --dry-run
|
|
43
|
+
vc doctor
|
|
44
|
+
git diff --check
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
手动冒烟测试:
|
|
48
|
+
|
|
49
|
+
1. 使用 `vc start` 或 `./run.sh` 启动桥接。
|
|
50
|
+
2. 验证日志包含 `Logged in as <bot-name>`。
|
|
51
|
+
3. 验证日志包含 `Listening in voice channel ... / 일반` 或已配置的默认频道。
|
|
52
|
+
4. 在 Discord 中运行 `!ping`。
|
|
53
|
+
5. 在 Discord 语音中说一个简短韩语请求。
|
|
54
|
+
6. 验证 STT 转写、代理响应、TTS 播放和插话行为。
|
|
55
|
+
|
|
56
|
+
### 已知要求
|
|
57
|
+
|
|
58
|
+
- macOS + Homebrew,或带 `apt`、`dnf`、`pacman` 的 Linux(用于尽力支持的引导)。
|
|
59
|
+
- `ffmpeg`;安装器会尝试安装它。
|
|
60
|
+
- `whisper-cli`;安装器在 macOS 使用 Homebrew,在 Linux 上回退到本地 `vendor/whisper.cpp` 构建。
|
|
61
|
+
- 默认模型位于 `models/ggml-small-q5_1.bin`;除非使用 `--skip-model`,安装器会下载它。
|
|
62
|
+
- `PATH` 上的 Edge TTS CLI,或本地 `.venv-tts/bin/edge-tts`;安装器会在需要时创建本地辅助环境。
|
|
63
|
+
- `.env`、`instances/<name>.env`、`~/.zshrc` 或运行时 env 中的 Discord 机器人令牌。
|
|
64
|
+
- 已安装并认证的所选 CLI 驱动。
|
|
65
|
+
|
|
66
|
+
### 尚不适合公开发布
|
|
67
|
+
|
|
68
|
+
公开发布前,建议添加:
|
|
69
|
+
|
|
70
|
+
- GitHub Actions CI。
|
|
71
|
+
- 演示视频 / GIF。
|
|
72
|
+
- Discord 机器人设置截图。
|
|
73
|
+
- 在脚本级检查之外,对真实发行版进行更广泛的 Linux 验证。
|
|
74
|
+
- 对所有日志路径进行安全审查。
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Guía de uso de VerbalCoding
|
|
2
|
+
|
|
3
|
+
Esta página contiene los detalles operativos que antes hacían que el README fuera demasiado largo.
|
|
4
|
+
|
|
5
|
+
## Comandos CLI
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
vc status # show STT language, progress language, and TTS voice
|
|
9
|
+
vc language en # English STT + English progress/TTS voice
|
|
10
|
+
vc language ko # Korean STT + Korean progress/TTS voice
|
|
11
|
+
vc language auto # Whisper auto-detect STT + English progress/TTS voice
|
|
12
|
+
vc restart auto status # show commit-time voice-bot auto-restart setting
|
|
13
|
+
vc restart auto on # enable commit-time voice-bot auto-restart
|
|
14
|
+
vc restart auto off # disable it; this is the default
|
|
15
|
+
vc bot invite CLIENT_ID # print a Discord invite URL with required permissions
|
|
16
|
+
vc instance status # list per-instance bridge configs and process status
|
|
17
|
+
vc instance setup NAME # write instances/NAME.env and create ~/.hermes/profiles/NAME
|
|
18
|
+
vc instance start NAME # start ./run.sh instances/NAME.env detached
|
|
19
|
+
vc instance stop NAME # stop a detached instance and remove its pid file
|
|
20
|
+
vc doctor # run the redacted doctor check
|
|
21
|
+
npm run mcp # run the stdio MCP server
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Los cambios de idioma actualizan `.env`; reinicia el puente con `./run.sh` o tu gestor de procesos para que surtan efecto.
|
|
25
|
+
|
|
26
|
+
## Modos de ejecución
|
|
27
|
+
|
|
28
|
+
Puente de instancia única:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
./run.sh
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Puente por instancia usando un entorno local de sobrescritura:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
./run.sh instances/my-project.env
|
|
38
|
+
# or
|
|
39
|
+
VERBALCODING_INSTANCE_ENV=instances/my-project.env ./run.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
El bot se une automáticamente al primer nombre de canal configurado, con valor predeterminado `일반,General,general`.
|
|
43
|
+
|
|
44
|
+
## Comandos de Discord
|
|
45
|
+
|
|
46
|
+
Antes de cablear comandos, configura la aplicación/bot de Discord usando las guías originales:
|
|
47
|
+
|
|
48
|
+
- Guía de Discord de Hermes Agent: <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
|
|
49
|
+
- Documentación oficial de bots de Discord: <https://docs.discord.com/developers/bots/overview>
|
|
50
|
+
|
|
51
|
+
Luego usa `vc bot invite CLIENT_ID` para generar la URL de invitación específica de VerbalCoding con permisos de texto y voz.
|
|
52
|
+
|
|
53
|
+
| Comando | Propósito |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `!ping` | Comprobación básica del bot |
|
|
56
|
+
| `!join` / `!leave` | Unirse a voz o salir de voz |
|
|
57
|
+
| `!say <text>` | Decir texto directamente mediante TTS |
|
|
58
|
+
| `!voice-test <text>` | Probar el backend/voz TTS activo |
|
|
59
|
+
| `!voice-clone capture` | Guardar la siguiente emisión válida como muestra de referencia para OpenVoice |
|
|
60
|
+
| `!voice-clone status` / `!voice-clone cancel` | Inspeccionar o cancelar la captura |
|
|
61
|
+
| `!ask <prompt>` | Enviar texto mediante el mismo adaptador de arnés seleccionado que la voz |
|
|
62
|
+
| `!session status` | Mostrar la sesión actual de proyecto/adaptador predeterminado |
|
|
63
|
+
| `!session new <name> <workdir> [context] --voice <voice-channel>` | Crear una sesión Hermes con alcance de proyecto |
|
|
64
|
+
| `!session attach-voice [sessionName] --voice <voice-channel>` | Vincular canal/hilo de texto a un canal de voz |
|
|
65
|
+
| `!session list` | Listar sesiones de proyecto configuradas |
|
|
66
|
+
| `!session reset` / `!reset-session` | Borrar el archivo de sesión actual del proyecto/adaptador predeterminado |
|
|
67
|
+
| `!verbose on/off` | Alternar actualizaciones de progreso detalladas |
|
|
68
|
+
| `!latency` / `!metrics` | Mostrar resumen de latencia reciente |
|
|
69
|
+
| `!sensitivity normal/conservative` | Cambiar sensibilidad de interrupción |
|
|
70
|
+
|
|
71
|
+
Equivalentes de voz como “외부 모드”, “보수 모드”, “실내”, “기본 감도” y frases claras de parada como “잠깐”, “멈춰”, “그만” son gestionados por el puente. También puedes decir “상세 진행 켜” / “상세 진행 꺼” para alternar el progreso detallado por voz.
|
|
72
|
+
|
|
73
|
+
## Cambiar la voz
|
|
74
|
+
|
|
75
|
+
`vc language ko|en|auto` cambia juntos el idioma STT, el idioma de progreso y la voz TTS predeterminada correspondiente. Si solo quieres cambiar el hablante/voz mientras el puente está en ejecución, dilo en la voz de Discord:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
남자 한국어 목소리로 바꿔
|
|
79
|
+
여자 한국어 목소리로 바꿔
|
|
80
|
+
change voice to Korean female
|
|
81
|
+
switch speaker to English
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
El puente en vivo reconoce esto como comandos de control por voz, actualiza `config/tts-voices.json`, actualiza el entorno TTS efectivo del proceso en ejecución y responde con una confirmación corta como “목소리를 Korean male로 바꿨어.” Usa `!voice-test <text>` justo después de cambiarla para escuchar el backend y la voz actuales.
|
|
85
|
+
|
|
86
|
+
Tipos de voz Edge integrados:
|
|
87
|
+
|
|
88
|
+
| Tipo de voz | Voz Edge |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `korean_male` | `ko-KR-InJoonNeural` |
|
|
91
|
+
| `korean_female` | `ko-KR-SunHiNeural` |
|
|
92
|
+
| `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` |
|
|
93
|
+
| `english_male` | `en-US-GuyNeural` |
|
|
94
|
+
| `english_female` | `en-US-AriaNeural` |
|
|
95
|
+
|
|
96
|
+
Para configuración manual persistente, define `TTS_BACKEND=edge`, `TTS_VOICE_TYPE=<voice-type>` y opcionalmente `TTS_VOICE=<edge-voice>` en `.env`, o edita `config/tts-voices.json` para catálogos de voz personalizados.
|
|
97
|
+
|
|
98
|
+
Controles de voz específicos de backend:
|
|
99
|
+
|
|
100
|
+
| Backend | Ajuste de voz | Opciones comunes |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | `korean_male`, `korean_female`, `korean_multilingual_male`, `english_male`, `english_female`; cualquier voz Edge de `edge-tts --list-voices` |
|
|
103
|
+
| Supertonic | `SUPERTONIC_VOICE` | `M1`–`M5`, `F1`–`F5`; define `SUPERTONIC_LANGUAGE=ko|en|es|pt|fr` |
|
|
104
|
+
| OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE` | una referencia WAV permitida más un estilo como `default` |
|
|
105
|
+
| SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER` | WAV de referencia para CosyVoice, o valores de hablante/modelo admitidos por el backend |
|
|
106
|
+
|
|
107
|
+
Para Supertonic y backends locales de clonación, usa las variables de entorno del backend anteriores junto con `!voice-test <text>` para probar cambios. El cambio por comandos de voz actualmente asigna los tipos de voz integrados de estilo Edge; se pueden añadir catálogos de backend más completos en `config/tts-voices.json`.
|
|
108
|
+
|
|
109
|
+
## Dictado largo y pausas
|
|
110
|
+
|
|
111
|
+
VerbalCoding espera una ventana de inactividad antes de enviar el habla a STT. El valor predeterminado `UTTERANCE_IDLE_MS=4500` es deliberadamente un poco paciente para que una pausa natural en una instrucción larga no divida la oración, inicie un turno de agente demasiado pronto y luego trate el resto como una interrupción durante el procesamiento.
|
|
112
|
+
|
|
113
|
+
Si prefieres comandos cortos más rápidos, bájalo en `.env`; si el dictado largo en coreano aún se divide, súbelo:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
UTTERANCE_IDLE_MS="6000"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Modo de progreso detallado
|
|
120
|
+
|
|
121
|
+
El progreso detallado está desactivado por defecto salvo que `AGENT_VERBOSE_PROGRESS=1` esté definido. Habilítalo con `!verbose on` o con un comando de voz como “상세 진행 켜”. Puede emitir líneas cortas de progreso como:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
🤖 Hermes Agent 호출 시작
|
|
125
|
+
📖 파일 읽기 app-node/main.mjs
|
|
126
|
+
🔎 웹 검색 실행
|
|
127
|
+
⌨️ 터미널 명령 실행
|
|
128
|
+
🤖 Hermes Agent 응답 수신
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Este modo pide al arnés CLI seleccionado que emita líneas `VERBALCODING_PROGRESS: ...` y resume marcadores comunes de herramientas desde stdout/stderr en streaming cuando están disponibles. Los campos con aspecto de secreto se redactan y las líneas de progreso se eliminan de la respuesta final hablada.
|
|
132
|
+
|
|
133
|
+
## Métricas de latencia
|
|
134
|
+
|
|
135
|
+
VerbalCoding escribe registros de latencia por turno como JSONL. Ruta predeterminada:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
./.logs/latency.jsonl
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Cada registro incluye estado, tiempo total, tiempo de captura de voz, espera de inactividad de emisión, tiempo STT, tiempo del agente, tiempo de síntesis/reproducción TTS, conteos de fragmentos, longitud de transcripción, longitud de respuesta y niveles de audio cuando están disponibles.
|
|
142
|
+
|
|
143
|
+
En Discord:
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
!latency
|
|
147
|
+
!metrics
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
El resumen usa los últimos 200 registros: conteo, promedio, p95, máximo y estados no OK.
|
|
151
|
+
|
|
152
|
+
## Pruebas
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
node --check app-node/main.mjs
|
|
156
|
+
npm test
|
|
157
|
+
bash -n run.sh scripts/install.sh
|
|
158
|
+
vc doctor
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`vc doctor` redacta secretos intencionadamente y solo informa si los valores requeridos están configurados. También comprueba `instances/*.env` en busca de huellas de token duplicadas y rutas de ejecución en conflicto.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Guide d'utilisation de VerbalCoding
|
|
2
|
+
|
|
3
|
+
Cette page contient les détails opérationnels qui rendaient auparavant le README trop long.
|
|
4
|
+
|
|
5
|
+
## Commandes CLI
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
vc status # show STT language, progress language, and TTS voice
|
|
9
|
+
vc language en # English STT + English progress/TTS voice
|
|
10
|
+
vc language ko # Korean STT + Korean progress/TTS voice
|
|
11
|
+
vc language auto # Whisper auto-detect STT + English progress/TTS voice
|
|
12
|
+
vc restart auto status # show commit-time voice-bot auto-restart setting
|
|
13
|
+
vc restart auto on # enable commit-time voice-bot auto-restart
|
|
14
|
+
vc restart auto off # disable it; this is the default
|
|
15
|
+
vc bot invite CLIENT_ID # print a Discord invite URL with required permissions
|
|
16
|
+
vc instance status # list per-instance bridge configs and process status
|
|
17
|
+
vc instance setup NAME # write instances/NAME.env and create ~/.hermes/profiles/NAME
|
|
18
|
+
vc instance start NAME # start ./run.sh instances/NAME.env detached
|
|
19
|
+
vc instance stop NAME # stop a detached instance and remove its pid file
|
|
20
|
+
vc doctor # run the redacted doctor check
|
|
21
|
+
npm run mcp # run the stdio MCP server
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Les changements de langue mettent à jour `.env` ; redémarrez la passerelle avec `./run.sh` ou votre gestionnaire de processus pour qu'ils prennent effet.
|
|
25
|
+
|
|
26
|
+
## Modes d'exécution
|
|
27
|
+
|
|
28
|
+
Passerelle à instance unique :
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
./run.sh
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Passerelle par instance avec un env de surcharge local :
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
./run.sh instances/my-project.env
|
|
38
|
+
# or
|
|
39
|
+
VERBALCODING_INSTANCE_ENV=instances/my-project.env ./run.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Le bot rejoint automatiquement le premier nom de salon configuré, par défaut `일반,General,general`.
|
|
43
|
+
|
|
44
|
+
## Commandes Discord
|
|
45
|
+
|
|
46
|
+
Avant de câbler les commandes, configurez l'application/le bot Discord avec les guides amont :
|
|
47
|
+
|
|
48
|
+
- Guide Discord de Hermes Agent : <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
|
|
49
|
+
- Documentation officielle des bots Discord : <https://docs.discord.com/developers/bots/overview>
|
|
50
|
+
|
|
51
|
+
Utilisez ensuite `vc bot invite CLIENT_ID` pour générer l'URL d'invitation propre à VerbalCoding avec permissions texte et voix.
|
|
52
|
+
|
|
53
|
+
| Commande | Objectif |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `!ping` | Vérification de base du bot |
|
|
56
|
+
| `!join` / `!leave` | Rejoindre ou quitter la voix |
|
|
57
|
+
| `!say <text>` | Énoncer directement du texte via TTS |
|
|
58
|
+
| `!voice-test <text>` | Tester le backend/la voix TTS actif |
|
|
59
|
+
| `!voice-clone capture` | Enregistrer la prochaine énonciation valide comme échantillon de référence OpenVoice |
|
|
60
|
+
| `!voice-clone status` / `!voice-clone cancel` | Inspecter ou annuler la capture |
|
|
61
|
+
| `!ask <prompt>` | Envoyer du texte via le même adaptateur de harnais sélectionné que la voix |
|
|
62
|
+
| `!session status` | Afficher la session de projet/par défaut actuelle de l'adaptateur |
|
|
63
|
+
| `!session new <name> <workdir> [context] --voice <voice-channel>` | Créer une session Hermes limitée à un projet |
|
|
64
|
+
| `!session attach-voice [sessionName] --voice <voice-channel>` | Lier un salon/fil texte à un salon vocal |
|
|
65
|
+
| `!session list` | Lister les sessions de projet configurées |
|
|
66
|
+
| `!session reset` / `!reset-session` | Effacer le fichier de session de projet/par défaut actuel de l'adaptateur |
|
|
67
|
+
| `!verbose on/off` | Activer/désactiver les mises à jour détaillées de progression |
|
|
68
|
+
| `!latency` / `!metrics` | Afficher un résumé récent de la latence |
|
|
69
|
+
| `!sensitivity normal/conservative` | Changer la sensibilité d'interruption |
|
|
70
|
+
|
|
71
|
+
Les équivalents vocaux comme “외부 모드”, “보수 모드”, “실내”, “기본 감도” et les phrases d'arrêt claires comme “잠깐”, “멈춰”, “그만” sont gérés par la passerelle. Vous pouvez aussi dire “상세 진행 켜” / “상세 진행 꺼” pour activer/désactiver la progression détaillée par la voix.
|
|
72
|
+
|
|
73
|
+
## Changer la voix
|
|
74
|
+
|
|
75
|
+
`vc language ko|en|auto` change ensemble la langue STT, la langue de progression et la voix TTS par défaut correspondante. Si vous voulez seulement changer le locuteur/la voix pendant que la passerelle tourne, dites-le dans le vocal Discord :
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
남자 한국어 목소리로 바꿔
|
|
79
|
+
여자 한국어 목소리로 바꿔
|
|
80
|
+
change voice to Korean female
|
|
81
|
+
switch speaker to English
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
La passerelle en cours d'exécution reconnaît ces phrases comme des commandes vocales, met à jour `config/tts-voices.json`, met à jour l'env TTS effectif du processus actif et répond par une courte confirmation comme “목소리를 Korean male로 바꿨어.” Utilisez `!voice-test <text>` juste après le changement pour entendre le backend et la voix actuels.
|
|
85
|
+
|
|
86
|
+
Types de voix Edge intégrés :
|
|
87
|
+
|
|
88
|
+
| Type de voix | Voix Edge |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `korean_male` | `ko-KR-InJoonNeural` |
|
|
91
|
+
| `korean_female` | `ko-KR-SunHiNeural` |
|
|
92
|
+
| `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` |
|
|
93
|
+
| `english_male` | `en-US-GuyNeural` |
|
|
94
|
+
| `english_female` | `en-US-AriaNeural` |
|
|
95
|
+
|
|
96
|
+
Pour une configuration manuelle persistante, définissez `TTS_BACKEND=edge`, `TTS_VOICE_TYPE=<voice-type>` et éventuellement `TTS_VOICE=<edge-voice>` dans `.env`, ou modifiez `config/tts-voices.json` pour des catalogues de voix personnalisés.
|
|
97
|
+
|
|
98
|
+
Réglages vocaux propres au backend :
|
|
99
|
+
|
|
100
|
+
| Backend | Paramètre de voix | Choix courants |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | `korean_male`, `korean_female`, `korean_multilingual_male`, `english_male`, `english_female` ; toute voix Edge de `edge-tts --list-voices` |
|
|
103
|
+
| Supertonic | `SUPERTONIC_VOICE` | `M1`–`M5`, `F1`–`F5` ; définissez `SUPERTONIC_LANGUAGE=ko|en|es|pt|fr` |
|
|
104
|
+
| OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE` | un WAV de référence autorisé plus un style comme `default` |
|
|
105
|
+
| SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER` | WAV de référence pour CosyVoice, ou valeurs locuteur/modèle prises en charge par le backend |
|
|
106
|
+
|
|
107
|
+
Pour Supertonic et les backends de clonage locaux, utilisez les variables d'env ci-dessus ainsi que `!voice-test <text>` pour écouter les changements. Le changement par commande vocale mappe actuellement les types de voix intégrés de style Edge ; des catalogues de backends plus riches peuvent être ajoutés dans `config/tts-voices.json`.
|
|
108
|
+
|
|
109
|
+
## Dictée longue et pauses
|
|
110
|
+
|
|
111
|
+
VerbalCoding attend une fenêtre d'inactivité avant d'envoyer la parole au STT. La valeur par défaut `UTTERANCE_IDLE_MS=4500` est volontairement un peu patiente afin qu'une pause naturelle dans une longue instruction ne coupe pas la phrase, ne démarre pas un tour d'agent trop tôt, puis ne traite pas la suite comme une interruption pendant le traitement.
|
|
112
|
+
|
|
113
|
+
Si vous préférez des commandes courtes plus rapides, diminuez-la dans `.env` ; si une longue dictée coréenne est encore coupée, augmentez-la :
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
UTTERANCE_IDLE_MS="6000"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Mode progression détaillée
|
|
120
|
+
|
|
121
|
+
La progression détaillée est désactivée par défaut sauf si `AGENT_VERBOSE_PROGRESS=1` est défini. Activez-la avec `!verbose on` ou une commande vocale comme “상세 진행 켜”. Elle peut émettre de courtes lignes de progression comme :
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
🤖 Hermes Agent 호출 시작
|
|
125
|
+
📖 파일 읽기 app-node/main.mjs
|
|
126
|
+
🔎 웹 검색 실행
|
|
127
|
+
⌨️ 터미널 명령 실행
|
|
128
|
+
🤖 Hermes Agent 응답 수신
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Ce mode demande au harnais CLI sélectionné d'émettre des lignes `VERBALCODING_PROGRESS: ...` et résume les marqueurs d'outils courants depuis stdout/stderr en streaming quand ils sont disponibles. Les champs ressemblant à des secrets sont expurgés et les lignes de progression sont retirées de la réponse finale énoncée.
|
|
132
|
+
|
|
133
|
+
## Métriques de latence
|
|
134
|
+
|
|
135
|
+
VerbalCoding écrit des enregistrements de latence par tour en JSONL. Chemin par défaut :
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
./.logs/latency.jsonl
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Chaque enregistrement inclut le statut, le temps total, le temps de capture vocale, l'attente d'inactivité de l'énonciation, le temps STT, le temps agent, le temps de synthèse/lecture TTS, le nombre de morceaux, la longueur de transcription, la longueur de réponse et les niveaux audio quand disponibles.
|
|
142
|
+
|
|
143
|
+
Dans Discord :
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
!latency
|
|
147
|
+
!metrics
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Le résumé utilise les 200 derniers enregistrements : nombre, moyenne, p95, maximum et statuts non-OK.
|
|
151
|
+
|
|
152
|
+
## Tests
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
node --check app-node/main.mjs
|
|
156
|
+
npm test
|
|
157
|
+
bash -n run.sh scripts/install.sh
|
|
158
|
+
vc doctor
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`vc doctor` expurge intentionnellement les secrets et indique seulement si les valeurs requises sont configurées. Il vérifie aussi `instances/*.env` pour détecter les empreintes de jetons dupliquées et les chemins d'exécution en collision.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# VerbalCoding 使い方ガイド
|
|
2
|
+
|
|
3
|
+
このページには、README を長くしすぎていた運用上の詳細をまとめています。
|
|
4
|
+
|
|
5
|
+
## CLI コマンド
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
vc status # STT 言語、進捗言語、TTS 音声を表示
|
|
9
|
+
vc language en # 英語 STT + 英語の進捗/TTS 音声
|
|
10
|
+
vc language ko # 韓国語 STT + 韓国語の進捗/TTS 音声
|
|
11
|
+
vc language auto # Whisper 自動検出 STT + 英語の進捗/TTS 音声
|
|
12
|
+
vc restart auto status # コミット時の音声ボット自動再起動設定を表示
|
|
13
|
+
vc restart auto on # コミット時の音声ボット自動再起動を有効化
|
|
14
|
+
vc restart auto off # 無効化。これがデフォルト
|
|
15
|
+
vc bot invite CLIENT_ID # 必要な権限付きの Discord 招待 URL を出力
|
|
16
|
+
vc instance status # インスタンスごとのブリッジ設定とプロセス状態を一覧表示
|
|
17
|
+
vc instance setup NAME # instances/NAME.env を書き、~/.hermes/profiles/NAME を作成
|
|
18
|
+
vc instance start NAME # ./run.sh instances/NAME.env をデタッチして起動
|
|
19
|
+
vc instance stop NAME # デタッチされたインスタンスを停止し pid ファイルを削除
|
|
20
|
+
vc doctor # 秘密情報を伏せた doctor チェックを実行
|
|
21
|
+
npm run mcp # stdio MCP サーバーを実行
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
言語変更は `.env` を更新します。反映するには `./run.sh` または利用中のプロセスマネージャーでブリッジを再起動してください。
|
|
25
|
+
|
|
26
|
+
## 実行モード
|
|
27
|
+
|
|
28
|
+
単一インスタンスのブリッジ:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
./run.sh
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
ローカルの上書き env を使うインスタンス別ブリッジ:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
./run.sh instances/my-project.env
|
|
38
|
+
# または
|
|
39
|
+
VERBALCODING_INSTANCE_ENV=instances/my-project.env ./run.sh
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
ボットは最初に設定されたチャンネル名へ自動参加します。デフォルトは `일반,General,general` です。
|
|
43
|
+
|
|
44
|
+
## Discord コマンド
|
|
45
|
+
|
|
46
|
+
コマンドを接続する前に、上流ガイドに従って Discord アプリケーション/ボットをセットアップしてください:
|
|
47
|
+
|
|
48
|
+
- Hermes Agent の Discord ガイド: <https://hermes-agent.nousresearch.com/docs/user-guide/messaging/discord>
|
|
49
|
+
- Discord 公式ボットドキュメント: <https://docs.discord.com/developers/bots/overview>
|
|
50
|
+
|
|
51
|
+
その後、`vc bot invite CLIENT_ID` を使って、テキストおよび音声権限を持つ VerbalCoding 専用の招待 URL を生成します。
|
|
52
|
+
|
|
53
|
+
| コマンド | 目的 |
|
|
54
|
+
|---|---|
|
|
55
|
+
| `!ping` | 基本的なボット確認 |
|
|
56
|
+
| `!join` / `!leave` | 音声に参加または退出 |
|
|
57
|
+
| `!say <text>` | TTS でテキストを直接読み上げ |
|
|
58
|
+
| `!voice-test <text>` | 有効な TTS バックエンド/音声をテスト |
|
|
59
|
+
| `!voice-clone capture` | 次の有効な発話を OpenVoice 参照サンプルとして保存 |
|
|
60
|
+
| `!voice-clone status` / `!voice-clone cancel` | キャプチャ状態を確認またはキャンセル |
|
|
61
|
+
| `!ask <prompt>` | 音声と同じ選択済みハーネスアダプター経由でテキストを送信 |
|
|
62
|
+
| `!session status` | 現在のプロジェクト/デフォルトアダプターセッションを表示 |
|
|
63
|
+
| `!session new <name> <workdir> [context] --voice <voice-channel>` | プロジェクトスコープの Hermes セッションを作成 |
|
|
64
|
+
| `!session attach-voice [sessionName] --voice <voice-channel>` | テキストチャンネル/スレッドを音声チャンネルに紐付け |
|
|
65
|
+
| `!session list` | 設定済みプロジェクトセッションを一覧表示 |
|
|
66
|
+
| `!session reset` / `!reset-session` | 現在のプロジェクト/デフォルトアダプターセッションファイルを消去 |
|
|
67
|
+
| `!verbose on/off` | 詳細な進捗更新を切り替え |
|
|
68
|
+
| `!latency` / `!metrics` | 直近のレイテンシ要約を表示 |
|
|
69
|
+
| `!sensitivity normal/conservative` | 割り込み感度を切り替え |
|
|
70
|
+
|
|
71
|
+
「외부 모드」「보수 모드」「실내」「기본 감도」などの音声での同等表現や、「잠깐」「멈춰」「그만」のような明確な停止フレーズはブリッジが処理します。また、「상세 진행 켜」/「상세 진행 꺼」と言うことで、音声でも詳細進捗を切り替えられます。
|
|
72
|
+
|
|
73
|
+
## 音声を変更する
|
|
74
|
+
|
|
75
|
+
`vc language ko|en|auto` は、STT 言語、進捗言語、対応するデフォルト TTS 音声をまとめて変更します。ブリッジの実行中に話者/音声だけを変更したい場合は、Discord 音声で次のように話します:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
남자 한국어 목소리로 바꿔
|
|
79
|
+
여자 한국어 목소리로 바꿔
|
|
80
|
+
change voice to Korean female
|
|
81
|
+
switch speaker to English
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
実行中のブリッジはこれらを音声制御コマンドとして認識し、`config/tts-voices.json` を更新し、実行中プロセスの有効な TTS env を更新して、「목소리를 Korean male로 바꿨어。」のような短い確認で応答します。変更直後に `!voice-test <text>` を使うと、現在のバックエンドと音声を聞けます。
|
|
85
|
+
|
|
86
|
+
組み込み Edge 音声タイプ:
|
|
87
|
+
|
|
88
|
+
| 音声タイプ | Edge 音声 |
|
|
89
|
+
|---|---|
|
|
90
|
+
| `korean_male` | `ko-KR-InJoonNeural` |
|
|
91
|
+
| `korean_female` | `ko-KR-SunHiNeural` |
|
|
92
|
+
| `korean_multilingual_male` | `ko-KR-HyunsuMultilingualNeural` |
|
|
93
|
+
| `english_male` | `en-US-GuyNeural` |
|
|
94
|
+
| `english_female` | `en-US-AriaNeural` |
|
|
95
|
+
|
|
96
|
+
永続的な手動設定では、`.env` に `TTS_BACKEND=edge`、`TTS_VOICE_TYPE=<voice-type>`、必要に応じて `TTS_VOICE=<edge-voice>` を設定するか、カスタム音声カタログ用に `config/tts-voices.json` を編集します。
|
|
97
|
+
|
|
98
|
+
バックエンド固有の音声ノブ:
|
|
99
|
+
|
|
100
|
+
| バックエンド | 音声設定 | 一般的な選択肢 |
|
|
101
|
+
|---|---|---|
|
|
102
|
+
| Edge | `TTS_VOICE_TYPE`, `TTS_VOICE` | `korean_male`、`korean_female`、`korean_multilingual_male`、`english_male`、`english_female`。`edge-tts --list-voices` が返す任意の Edge 音声 |
|
|
103
|
+
| Supertonic | `SUPERTONIC_VOICE` | `M1`〜`M5`、`F1`〜`F5`。`SUPERTONIC_LANGUAGE=ko|en|es|pt|fr` を設定 |
|
|
104
|
+
| OpenVoice | `OPENVOICE_REF_AUDIO`, `OPENVOICE_STYLE` | 許可済み参照 WAV と、`default` などのスタイル |
|
|
105
|
+
| SpeechSwift / CosyVoice | `SPEECHSWIFT_REF_AUDIO`, `SPEECHSWIFT_ENGINE`, `SPEECHSWIFT_SPEAKER` | CosyVoice 用の参照 WAV、またはバックエンド対応の話者/モデル値 |
|
|
106
|
+
|
|
107
|
+
Supertonic とローカルクローンバックエンドでは、上記のバックエンド env 変数に加えて `!voice-test <text>` を使い、変更を試聴してください。音声コマンドによる切り替えは、現在は組み込みの Edge 風音声タイプにマッピングされます。より豊富なバックエンドカタログは `config/tts-voices.json` に追加できます。
|
|
108
|
+
|
|
109
|
+
## 長いディクテーションとポーズ
|
|
110
|
+
|
|
111
|
+
VerbalCoding は、音声を STT に送る前に無音ウィンドウを待ちます。デフォルトの `UTTERANCE_IDLE_MS=4500` は意図的に少し余裕を持たせています。長い指示の自然な間で文を分割したり、エージェントターンを早く始めすぎたり、その後の発話を処理中の割り込みとして扱ったりしないためです。
|
|
112
|
+
|
|
113
|
+
短いコマンドをより速くしたい場合は `.env` で小さくしてください。長い韓国語ディクテーションがまだ分割される場合は大きくしてください:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
UTTERANCE_IDLE_MS="6000"
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## 詳細進捗モード
|
|
120
|
+
|
|
121
|
+
`AGENT_VERBOSE_PROGRESS=1` が設定されていない限り、詳細進捗はデフォルトでオフです。`!verbose on` または「상세 진행 켜」のような音声コマンドで有効にします。次のような短い進捗行を出力できます:
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
🤖 Hermes Agent 호출 시작
|
|
125
|
+
📖 파일 읽기 app-node/main.mjs
|
|
126
|
+
🔎 웹 검색 실행
|
|
127
|
+
⌨️ 터미널 명령 실행
|
|
128
|
+
🤖 Hermes Agent 응답 수신
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
このモードは、選択された CLI ハーネスに `VERBALCODING_PROGRESS: ...` 行の出力を求め、利用可能な場合はストリーミング stdout/stderr から一般的なツールマーカーを要約します。秘密情報に見えるフィールドは伏せられ、進捗行は最終的に読み上げられる回答から削除されます。
|
|
132
|
+
|
|
133
|
+
## レイテンシ指標
|
|
134
|
+
|
|
135
|
+
VerbalCoding はターンごとのレイテンシ記録を JSONL として書き込みます。デフォルトパス:
|
|
136
|
+
|
|
137
|
+
```text
|
|
138
|
+
./.logs/latency.jsonl
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
各レコードには、ステータス、合計時間、音声キャプチャ時間、発話アイドル待ち、STT 時間、エージェント時間、TTS 合成/再生時間、チャンク数、文字起こし長、回答長、利用可能な場合の音声レベルが含まれます。
|
|
142
|
+
|
|
143
|
+
Discord 内:
|
|
144
|
+
|
|
145
|
+
```text
|
|
146
|
+
!latency
|
|
147
|
+
!metrics
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
要約は最新 200 件のレコードを使い、件数、平均、p95、最大、OK 以外のステータスを表示します。
|
|
151
|
+
|
|
152
|
+
## テスト
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
node --check app-node/main.mjs
|
|
156
|
+
npm test
|
|
157
|
+
bash -n run.sh scripts/install.sh
|
|
158
|
+
vc doctor
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`vc doctor` は意図的に秘密情報を伏せ、必要な値が設定されているかだけを報告します。また、`instances/*.env` について、重複するトークンフィンガープリントや衝突するランタイムパスも確認します。
|