verbalcoding 0.2.12 → 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 +74 -4
- package/README.es.md +3 -1
- package/README.fr.md +3 -1
- package/README.ja.md +3 -1
- package/README.ko.md +4 -2
- package/README.md +4 -2
- package/README.ru.md +3 -1
- package/README.zh.md +3 -1
- package/app-node/agent_adapters.test.mjs +14 -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 +110 -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 +488 -1368
- 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/plan_dispatcher.mjs +215 -0
- package/app-node/plan_dispatcher.test.mjs +101 -0
- package/app-node/plan_mode.mjs +36 -7
- package/app-node/plan_mode.test.mjs +78 -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 +1 -1
- package/app-node/stream_sentencer.mjs +32 -2
- package/app-node/stream_sentencer.test.mjs +65 -0
- package/app-node/streaming_tts_queue.mjs +5 -1
- package/app-node/streaming_tts_queue.test.mjs +7 -1
- package/app-node/stt_whisper.mjs +24 -0
- package/app-node/stt_whisper.test.mjs +32 -0
- package/app-node/text_routing.mjs +4 -2
- 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 +12 -2
- 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/README.md +1 -0
- package/docs/ROADMAP.md +20 -5
- package/docs/TTS_BACKENDS.md +227 -0
- package/docs/USAGE.md +22 -0
- 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/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/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 +6 -1
- package/scripts/cli.mjs +84 -0
- package/scripts/doctor.mjs +104 -4
- package/scripts/install.mjs +5 -1
- 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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Harnesses de agentes de codificación
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.es.md">README</a> ·
|
|
5
|
+
<a href="README.es.md">Centro de documentación</a> ·
|
|
6
|
+
<a href="USAGE.es.md">Uso</a> ·
|
|
7
|
+
<a href="CONFIGURATION.es.md">Configuración</a> ·
|
|
8
|
+
<a href="TROUBLESHOOTING.es.md">Resolución de problemas</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
VerbalCoding es agnóstico al agente. Lanza el CLI de codificación que tengas instalado una vez por turno de voz, le pasa la transcripción como prompt y reproduce la respuesta. Elige **uno** como predeterminado; el enrutamiento por voz te permite alcanzar los demás dentro de la sesión.
|
|
12
|
+
|
|
13
|
+
| Harness | Comando por defecto | Reanudación de sesión | Documento específico |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Hermes Agent | `hermes chat -Q -q` | ✅ (`--resume <id>`) | [HERMES_VOICE.es.md](./HERMES_VOICE.es.md) · [HARNESS_HERMES.es.md](./HARNESS_HERMES.es.md) |
|
|
16
|
+
| Claude Code | `claude -p` | ❌ | [HARNESS_CLAUDE.es.md](./HARNESS_CLAUDE.es.md) |
|
|
17
|
+
| Codex | `codex exec` | ❌ (captura del último mensaje) | [HARNESS_CODEX.es.md](./HARNESS_CODEX.es.md) |
|
|
18
|
+
| Gemini CLI | `gemini -p` | ❌ | [HARNESS_GEMINI.es.md](./HARNESS_GEMINI.es.md) |
|
|
19
|
+
| OpenCode | `opencode run` | ❌ | [HARNESS_OPENCODE.es.md](./HARNESS_OPENCODE.es.md) |
|
|
20
|
+
| OpenClaw | `openclaw run` | ❌ | [HARNESS_OPENCLAW.es.md](./HARNESS_OPENCLAW.es.md) |
|
|
21
|
+
| Aider | `aider --no-pretty --yes-always --message` | ❌ | [HARNESS_AIDER.es.md](./HARNESS_AIDER.es.md) |
|
|
22
|
+
| Cursor CLI | `cursor-agent --print --prompt` | ❌ | [HARNESS_CURSOR.es.md](./HARNESS_CURSOR.es.md) |
|
|
23
|
+
|
|
24
|
+
## Elige tu agente por defecto
|
|
25
|
+
|
|
26
|
+
`vc setup` autodetecta los binarios instalados y te deja elegir. Configuración no interactiva:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# .env o instance .env
|
|
30
|
+
AGENT_BACKEND=claude # hermes | claude | codex | gemini | opencode | openclaw | aider | cursor | custom
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Cada harness lee su comando de la env del mismo nombre (`HERMES_COMMAND`, `CLAUDE_COMMAND`, etc.). Las envs compartidas (`AGENT_LABEL`, `AGENT_COMMAND`, `AGENT_SESSION_FILE`, `AGENT_WORKDIR`, `AGENT_PROJECT_CONTEXT`, `AGENT_TASK_TIMEOUT_MS`, `AGENT_CHAT_TIMEOUT_MS`, `AGENT_VERBOSE_PROGRESS`) sobreescriben los valores por defecto de cada harness.
|
|
34
|
+
|
|
35
|
+
## Enrutamiento entre harnesses por voz
|
|
36
|
+
|
|
37
|
+
Una vez configurado, puedes alcanzar cualquier harness **instalado** sin reiniciar:
|
|
38
|
+
|
|
39
|
+
- `"ask Codex what it thinks"` — ruta de un solo turno; el siguiente turno vuelve al predeterminado.
|
|
40
|
+
- `"switch to Aider"` — ruta sticky hasta que digas `"back to default"`.
|
|
41
|
+
- Slot `which_agent` del modo plan — el propio agente propone qué backend ejecuta el siguiente plan.
|
|
42
|
+
|
|
43
|
+
La capa de enrutamiento verifica si el binario está en `PATH` (resolviendo rutas relativas contra el workdir de la sesión de proyecto activa). Si no está instalado, el puente pregunta `"¿Quieres que use el agente por defecto?"` — responde `"yes"` para hacer fallback o `"no"` para cancelar.
|
|
44
|
+
|
|
45
|
+
Alias reconocidos: `claude` / `claude code`, `codex`, `gemini` / `gemini cli`, `opencode`, `openclaw`, `aider`, `cursor` / `cursor cli`, `hermes`.
|
|
46
|
+
|
|
47
|
+
## Semánticas compartidas
|
|
48
|
+
|
|
49
|
+
Todo adaptador respeta:
|
|
50
|
+
|
|
51
|
+
- **Modo plan por voz** — `"plan it first"` narra un plan, edita por voz, `"approve"` ejecuta contra el harness elegido.
|
|
52
|
+
- **Barge-in** — el corte interrumpe el TTS actual y aborta la tarea del agente. El enrutamiento sticky sobrevive a interrupciones; solo las rutas de un turno se limpian.
|
|
53
|
+
- **Progreso detallado** — `AGENT_VERBOSE_PROGRESS=1` imprime eventos de progreso. Con `SMART_PROGRESS_API_KEY`, un LLM los resume en una frase por lote.
|
|
54
|
+
- **Notificación push** — `NOTIFY_PROVIDER=ntfy|pushover` + `NOTIFY_MIN_TASK_MS` envía push cuando una tarea larga termina y el canal de voz está vacío. Debounce por cuerpo + `NOTIFY_DEBOUNCE_MS`.
|
|
55
|
+
- **Estado por canal** — cada canal de voz mantiene su propio enrutamiento, estado de plan y buffer de elocuciones recientes.
|
|
56
|
+
- **Sesiones de proyecto** — `!session new <name> <workdir>` vincula un canal a un proyecto; los adaptadores (harness, sesión) se cachean y se invalidan al rebind.
|
|
57
|
+
|
|
58
|
+
Detalles de instalación, autenticación y pitfalls por harness en sus docs respectivos. Referencia completa de env: `docs/CONFIGURATION.es.md`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Harnesses d'agents de codage
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.fr.md">README</a> ·
|
|
5
|
+
<a href="README.fr.md">Docs hub</a> ·
|
|
6
|
+
<a href="USAGE.fr.md">Utilisation</a> ·
|
|
7
|
+
<a href="CONFIGURATION.fr.md">Configuration</a> ·
|
|
8
|
+
<a href="TROUBLESHOOTING.fr.md">Dépannage</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
VerbalCoding est agnostique : il pilote le CLI de codage installé chez vous, un appel par tour vocal, en lui passant la transcription comme prompt et en jouant la réponse. Choisissez **un** agent par défaut ; le routage par voix permet d'atteindre les autres en cours de session.
|
|
12
|
+
|
|
13
|
+
| Harness | Commande par défaut | Reprise de session | Doc dédiée |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Hermes Agent | `hermes chat -Q -q` | ✅ (`--resume <id>`) | [HERMES_VOICE.fr.md](./HERMES_VOICE.fr.md) · [HARNESS_HERMES.fr.md](./HARNESS_HERMES.fr.md) |
|
|
16
|
+
| Claude Code | `claude -p` | ❌ | [HARNESS_CLAUDE.fr.md](./HARNESS_CLAUDE.fr.md) |
|
|
17
|
+
| Codex | `codex exec` | ❌ (capture du dernier message) | [HARNESS_CODEX.fr.md](./HARNESS_CODEX.fr.md) |
|
|
18
|
+
| Gemini CLI | `gemini -p` | ❌ | [HARNESS_GEMINI.fr.md](./HARNESS_GEMINI.fr.md) |
|
|
19
|
+
| OpenCode | `opencode run` | ❌ | [HARNESS_OPENCODE.fr.md](./HARNESS_OPENCODE.fr.md) |
|
|
20
|
+
| OpenClaw | `openclaw run` | ❌ | [HARNESS_OPENCLAW.fr.md](./HARNESS_OPENCLAW.fr.md) |
|
|
21
|
+
| Aider | `aider --no-pretty --yes-always --message` | ❌ | [HARNESS_AIDER.fr.md](./HARNESS_AIDER.fr.md) |
|
|
22
|
+
| Cursor CLI | `cursor-agent --print --prompt` | ❌ | [HARNESS_CURSOR.fr.md](./HARNESS_CURSOR.fr.md) |
|
|
23
|
+
|
|
24
|
+
## Choisir l'agent par défaut
|
|
25
|
+
|
|
26
|
+
`vc setup` détecte les binaires installés et propose un choix. Sans interaction :
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# .env ou instance .env
|
|
30
|
+
AGENT_BACKEND=claude # hermes | claude | codex | gemini | opencode | openclaw | aider | cursor | custom
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Chaque harness lit sa commande dans l'env homonyme (`HERMES_COMMAND`, `CLAUDE_COMMAND`, etc.). Les envs partagées (`AGENT_LABEL`, `AGENT_COMMAND`, `AGENT_SESSION_FILE`, `AGENT_WORKDIR`, `AGENT_PROJECT_CONTEXT`, `AGENT_TASK_TIMEOUT_MS`, `AGENT_CHAT_TIMEOUT_MS`, `AGENT_VERBOSE_PROGRESS`) surchargent les valeurs par défaut.
|
|
34
|
+
|
|
35
|
+
## Routage entre harnesses par voix
|
|
36
|
+
|
|
37
|
+
Une fois configuré, vous atteignez n'importe quel harness **installé** sans redémarrer :
|
|
38
|
+
|
|
39
|
+
- `"ask Codex what it thinks"` — routage à un tour ; le tour suivant revient au défaut.
|
|
40
|
+
- `"switch to Aider"` — routage sticky jusqu'à `"back to default"`.
|
|
41
|
+
- Slot `which_agent` du mode plan — l'agent propose lui-même quel backend exécute le plan.
|
|
42
|
+
|
|
43
|
+
Le routeur vérifie la présence du binaire dans `PATH` (les chemins relatifs sont résolus contre le workdir de la session projet active). Sinon, il demande `"Utiliser l'agent par défaut à la place ?"` — `"yes"` pour le fallback, `"no"` pour annuler.
|
|
44
|
+
|
|
45
|
+
Alias reconnus : `claude` / `claude code`, `codex`, `gemini` / `gemini cli`, `opencode`, `openclaw`, `aider`, `cursor` / `cursor cli`, `hermes`.
|
|
46
|
+
|
|
47
|
+
## Sémantique partagée
|
|
48
|
+
|
|
49
|
+
Tous les adaptateurs respectent :
|
|
50
|
+
|
|
51
|
+
- **Mode plan vocal** — `"plan it first"` narre un plan, édition vocale, `"approve"` exécute via le harness choisi.
|
|
52
|
+
- **Barge-in** — l'interruption coupe le TTS courant et abort la tâche de l'agent. Le routage sticky survit aux interruptions ; seuls les routages à un tour sont effacés.
|
|
53
|
+
- **Progression verbeuse** — `AGENT_VERBOSE_PROGRESS=1` affiche les événements ; avec `SMART_PROGRESS_API_KEY`, un LLM les résume.
|
|
54
|
+
- **Push notification** — `NOTIFY_PROVIDER=ntfy|pushover` + `NOTIFY_MIN_TASK_MS` envoie un push quand une tâche longue se termine et que le canal vocal est vide ; debounce par corps + `NOTIFY_DEBOUNCE_MS`.
|
|
55
|
+
- **État par canal** — chaque canal vocal Discord conserve son routage, son état de plan, son buffer d'énoncés.
|
|
56
|
+
- **Sessions projet** — `!session new <name> <workdir>` lie un canal à un projet ; les adaptateurs (harness, session) sont cachés et invalidés au rebind.
|
|
57
|
+
|
|
58
|
+
Détails d'installation et pièges par harness dans leurs docs respectifs. Référence env complète : `docs/CONFIGURATION.fr.md`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# コーディングエージェントハーネス
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.ja.md">README</a> ·
|
|
5
|
+
<a href="README.ja.md">ドキュメントハブ</a> ·
|
|
6
|
+
<a href="USAGE.ja.md">使い方</a> ·
|
|
7
|
+
<a href="CONFIGURATION.ja.md">設定</a> ·
|
|
8
|
+
<a href="TROUBLESHOOTING.ja.md">トラブルシュート</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
VerbalCoding はエージェント非依存です。インストール済みの CLI コーディングエージェントを音声ターンごとに 1 回起動し、STT した発話を prompt として渡し、応答を音声で返します。**1 つ**を既定として選び、音声ルーティングで他のエージェントへ一時的に切り替えます。
|
|
12
|
+
|
|
13
|
+
| ハーネス | 既定コマンド | セッション再開 | ハーネス別ドキュメント |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Hermes Agent | `hermes chat -Q -q` | ✅ (`--resume <id>`) | [HERMES_VOICE.ja.md](./HERMES_VOICE.ja.md) · [HARNESS_HERMES.ja.md](./HARNESS_HERMES.ja.md) |
|
|
16
|
+
| Claude Code | `claude -p` | ❌ | [HARNESS_CLAUDE.ja.md](./HARNESS_CLAUDE.ja.md) |
|
|
17
|
+
| Codex | `codex exec` | ❌ (最終メッセージファイル取得) | [HARNESS_CODEX.ja.md](./HARNESS_CODEX.ja.md) |
|
|
18
|
+
| Gemini CLI | `gemini -p` | ❌ | [HARNESS_GEMINI.ja.md](./HARNESS_GEMINI.ja.md) |
|
|
19
|
+
| OpenCode | `opencode run` | ❌ | [HARNESS_OPENCODE.ja.md](./HARNESS_OPENCODE.ja.md) |
|
|
20
|
+
| OpenClaw | `openclaw run` | ❌ | [HARNESS_OPENCLAW.ja.md](./HARNESS_OPENCLAW.ja.md) |
|
|
21
|
+
| Aider | `aider --no-pretty --yes-always --message` | ❌ | [HARNESS_AIDER.ja.md](./HARNESS_AIDER.ja.md) |
|
|
22
|
+
| Cursor CLI | `cursor-agent --print --prompt` | ❌ | [HARNESS_CURSOR.ja.md](./HARNESS_CURSOR.ja.md) |
|
|
23
|
+
|
|
24
|
+
## 既定エージェントの選択
|
|
25
|
+
|
|
26
|
+
`vc setup` がインストール済みバイナリを自動検出して選択肢を提示します。非対話設定:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# .env または instance .env
|
|
30
|
+
AGENT_BACKEND=claude # hermes | claude | codex | gemini | opencode | openclaw | aider | cursor | custom
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
各ハーネスは自分のコマンドを同名の env (`HERMES_COMMAND`, `CLAUDE_COMMAND` など) から読みます。共通 env (`AGENT_LABEL`, `AGENT_COMMAND`, `AGENT_SESSION_FILE`, `AGENT_WORKDIR`, `AGENT_PROJECT_CONTEXT`, `AGENT_TASK_TIMEOUT_MS`, `AGENT_CHAT_TIMEOUT_MS`, `AGENT_VERBOSE_PROGRESS`) は当該ハーネス既定値を上書きします。
|
|
34
|
+
|
|
35
|
+
## 音声でのルーティング
|
|
36
|
+
|
|
37
|
+
設定後は再起動なしで**インストール済み**の任意ハーネスへ届きます:
|
|
38
|
+
|
|
39
|
+
- `"ask Codex what it thinks"` — 単一ターンのみ Codex、次ターンは既定へ復帰。
|
|
40
|
+
- `"switch to Aider"` — sticky ルート、`"back to default"`まで持続。
|
|
41
|
+
- プランモードの `which_agent` スロット — エージェント自身が次のプランの実行先を提案。
|
|
42
|
+
|
|
43
|
+
ルーティング層はバイナリの `PATH` 存在を確認し(プロジェクトセッションの workdir からの相対パスも解決)、未インストールなら `"既定エージェントで代わりに進める?"` と尋ねます。`"yes"` で既定に fallback、`"no"` でキャンセル。
|
|
44
|
+
|
|
45
|
+
パーサが認識するエイリアス: `claude` / `claude code`, `codex` / `コーデックス`, `gemini` / `gemini cli` / `ジェミニ`, `opencode`, `openclaw`, `aider`, `cursor` / `cursor cli`, `hermes`.
|
|
46
|
+
|
|
47
|
+
## 共通動作
|
|
48
|
+
|
|
49
|
+
全ハーネスアダプタが共通で扱うもの:
|
|
50
|
+
|
|
51
|
+
- **音声プランモード** — `"plan it first"` でプランを narrate、音声で編集、`"approve"` で選択ハーネスへ実行。
|
|
52
|
+
- **割り込み** — barge-in は現在の TTS を切り、エージェントタスクを abort。sticky ルートは割り込み後も維持、単一ターンルートのみクリア。
|
|
53
|
+
- **詳細進捗** — `AGENT_VERBOSE_PROGRESS=1` (または `"verbose progress on"`) でハーネスが emit する進捗イベントを表示。`SMART_PROGRESS_API_KEY` 設定で LLM 要約器がバッチごとに 1 文に。
|
|
54
|
+
- **プッシュ通知ハンドオフ** — `NOTIFY_PROVIDER=ntfy|pushover` + `NOTIFY_MIN_TASK_MS` を満たし、音声チャンネルが空のときに push。body + `NOTIFY_DEBOUNCE_MS` で debounce。
|
|
55
|
+
- **チャンネル別状態** — Discord 音声チャンネルごとにルーティング・プラン状態・発話リングバッファを保持。
|
|
56
|
+
- **プロジェクトセッション** — `!session new <name> <workdir>` でチャンネルとプロジェクトを束ねる。(ハーネス, セッション) 別アダプタはキャッシュされ rebind 時に無効化。
|
|
57
|
+
|
|
58
|
+
ハーネス別の install パス、認証、罠は各ドキュメント参照。env リファレンスは `docs/CONFIGURATION.ja.md`。
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 코딩 에이전트 하니스
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.ko.md">README</a> ·
|
|
5
|
+
<a href="README.ko.md">문서 허브</a> ·
|
|
6
|
+
<a href="USAGE.ko.md">사용법</a> ·
|
|
7
|
+
<a href="CONFIGURATION.ko.md">설정</a> ·
|
|
8
|
+
<a href="TROUBLESHOOTING.ko.md">문제 해결</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
VerbalCoding은 에이전트 종속이 아니야. 설치돼 있는 CLI 코딩 에이전트를 voice turn 하나당 한 번씩 실행하고, STT 결과를 prompt로 넘긴 다음 응답을 음성으로 돌려줘. **하나**를 기본 에이전트로 정하고, 음성 라우팅으로 다른 에이전트에 잠깐씩 전환할 수 있어.
|
|
12
|
+
|
|
13
|
+
| 하니스 | 기본 명령 | 세션 재개 | 하니스별 문서 |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Hermes Agent | `hermes chat -Q -q` | ✅ (`--resume <id>`) | [HERMES_VOICE.ko.md](./HERMES_VOICE.ko.md) · [HARNESS_HERMES.ko.md](./HARNESS_HERMES.ko.md) |
|
|
16
|
+
| Claude Code | `claude -p` | ❌ | [HARNESS_CLAUDE.ko.md](./HARNESS_CLAUDE.ko.md) |
|
|
17
|
+
| Codex | `codex exec` | ❌ (마지막 메시지 파일 캡처) | [HARNESS_CODEX.ko.md](./HARNESS_CODEX.ko.md) |
|
|
18
|
+
| Gemini CLI | `gemini -p` | ❌ | [HARNESS_GEMINI.ko.md](./HARNESS_GEMINI.ko.md) |
|
|
19
|
+
| OpenCode | `opencode run` | ❌ | [HARNESS_OPENCODE.ko.md](./HARNESS_OPENCODE.ko.md) |
|
|
20
|
+
| OpenClaw | `openclaw run` | ❌ | [HARNESS_OPENCLAW.ko.md](./HARNESS_OPENCLAW.ko.md) |
|
|
21
|
+
| Aider | `aider --no-pretty --yes-always --message` | ❌ | [HARNESS_AIDER.ko.md](./HARNESS_AIDER.ko.md) |
|
|
22
|
+
| Cursor CLI | `cursor-agent --print --prompt` | ❌ | [HARNESS_CURSOR.ko.md](./HARNESS_CURSOR.ko.md) |
|
|
23
|
+
|
|
24
|
+
## 기본 에이전트 고르기
|
|
25
|
+
|
|
26
|
+
`vc setup`이 설치된 바이너리를 자동 감지해서 선택지를 보여줘. 비대화형 설정은:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# .env 또는 instance .env
|
|
30
|
+
AGENT_BACKEND=claude # hermes | claude | codex | gemini | opencode | openclaw | aider | cursor | custom
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
각 하니스는 자기 명령을 같은 이름의 env 변수(`HERMES_COMMAND`, `CLAUDE_COMMAND` 등)에서 읽어. 공통 env (`AGENT_LABEL`, `AGENT_COMMAND`, `AGENT_SESSION_FILE`, `AGENT_WORKDIR`, `AGENT_PROJECT_CONTEXT`, `AGENT_TASK_TIMEOUT_MS`, `AGENT_CHAT_TIMEOUT_MS`, `AGENT_VERBOSE_PROGRESS`)는 해당 하니스의 기본값을 덮어써.
|
|
34
|
+
|
|
35
|
+
## 음성으로 하니스 사이 라우팅
|
|
36
|
+
|
|
37
|
+
설정이 끝나면 재시작 없이 **설치돼 있는** 어떤 하니스로든 옮길 수 있어:
|
|
38
|
+
|
|
39
|
+
- `"코덱스한테 물어봐"` — 이번 턴만 Codex, 다음 턴은 기본 에이전트로 복귀.
|
|
40
|
+
- `"aider로 전환"` — sticky 라우팅, `"기본으로 돌아가"`라고 할 때까지 유지.
|
|
41
|
+
- 플랜 모드의 `which_agent` 슬롯 — 에이전트가 다음 플랜을 어느 백엔드로 돌릴지 직접 제안.
|
|
42
|
+
|
|
43
|
+
라우팅 레이어는 바이너리가 `PATH`에 있는지 확인하고 (활성 프로젝트 세션의 workdir 기준 상대 경로도 처리), 없으면 `"기본 에이전트로 대신 진행할까?"`라고 물어봐. `"예"`로 답하면 기본 에이전트로 fallback, `"아니오"`로 취소.
|
|
44
|
+
|
|
45
|
+
파서가 인식하는 별칭: `claude` / `claude code`, `codex` / `코덱스`, `gemini` / `gemini cli` / `제미나이`, `opencode`, `openclaw`, `aider` / `에이더`, `cursor` / `cursor cli`, `hermes` / `헤르메스`.
|
|
46
|
+
|
|
47
|
+
## 공통 동작
|
|
48
|
+
|
|
49
|
+
모든 하니스 어댑터가 똑같이 처리하는 것들:
|
|
50
|
+
|
|
51
|
+
- **음성 플랜 모드** — `"먼저 계획 짜줘"`로 플랜을 만들고, 음성으로 편집한 다음 `"실행"`이라고 하면 선택된 하니스로 실행돼.
|
|
52
|
+
- **Barge-in** — 끼어들기는 현재 TTS를 끊고 에이전트 작업을 abort 시켜. Sticky 라우팅은 interrupt 후에도 유지, 단일 턴 라우팅만 초기화돼.
|
|
53
|
+
- **상세 진행** — `AGENT_VERBOSE_PROGRESS=1` (또는 `"상세 진행 켜"`)로 하니스가 emit하는 진행 이벤트를 출력해. `SMART_PROGRESS_API_KEY`가 있으면 LLM 요약기가 묶음당 한 문장으로 정리.
|
|
54
|
+
- **푸시 알림 핸드오프** — `NOTIFY_PROVIDER=ntfy|pushover` + `NOTIFY_MIN_TASK_MS` 조건 충족 시 긴 작업이 끝나고 음성채널이 비어 있으면 푸시. body + `NOTIFY_DEBOUNCE_MS`로 debounce.
|
|
55
|
+
- **채널별 상태** — 디스코드 음성 채널마다 별도의 라우팅·플랜 상태·발화 링 버퍼.
|
|
56
|
+
- **프로젝트 세션** — `!session new <name> <workdir>`로 채널과 프로젝트를 묶음. (하니스, 세션)별 어댑터는 캐시되고 rebind 시 무효화.
|
|
57
|
+
|
|
58
|
+
설치 경로, 인증, 함정은 하니스별 문서 참고. env 변수 전체 레퍼런스는 `docs/CONFIGURATION.ko.md`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Harness-ы для кодинг-агентов
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.ru.md">README</a> ·
|
|
5
|
+
<a href="README.ru.md">Хаб документации</a> ·
|
|
6
|
+
<a href="USAGE.ru.md">Использование</a> ·
|
|
7
|
+
<a href="CONFIGURATION.ru.md">Настройка</a> ·
|
|
8
|
+
<a href="TROUBLESHOOTING.ru.md">Решение проблем</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
VerbalCoding не привязан к конкретному агенту: он вызывает установленный CLI кодинг-агент один раз на voice turn, передаёт STT-расшифровку как prompt и проигрывает ответ голосом. Выберите **один** агент по умолчанию; голосовая маршрутизация позволит дотянуться до остальных в течение сессии.
|
|
12
|
+
|
|
13
|
+
| Harness | Команда по умолчанию | Возобновление сессии | Документ |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Hermes Agent | `hermes chat -Q -q` | ✅ (`--resume <id>`) | [HERMES_VOICE.ru.md](./HERMES_VOICE.ru.md) · [HARNESS_HERMES.ru.md](./HARNESS_HERMES.ru.md) |
|
|
16
|
+
| Claude Code | `claude -p` | ❌ | [HARNESS_CLAUDE.ru.md](./HARNESS_CLAUDE.ru.md) |
|
|
17
|
+
| Codex | `codex exec` | ❌ (захват последнего сообщения в файл) | [HARNESS_CODEX.ru.md](./HARNESS_CODEX.ru.md) |
|
|
18
|
+
| Gemini CLI | `gemini -p` | ❌ | [HARNESS_GEMINI.ru.md](./HARNESS_GEMINI.ru.md) |
|
|
19
|
+
| OpenCode | `opencode run` | ❌ | [HARNESS_OPENCODE.ru.md](./HARNESS_OPENCODE.ru.md) |
|
|
20
|
+
| OpenClaw | `openclaw run` | ❌ | [HARNESS_OPENCLAW.ru.md](./HARNESS_OPENCLAW.ru.md) |
|
|
21
|
+
| Aider | `aider --no-pretty --yes-always --message` | ❌ | [HARNESS_AIDER.ru.md](./HARNESS_AIDER.ru.md) |
|
|
22
|
+
| Cursor CLI | `cursor-agent --print --prompt` | ❌ | [HARNESS_CURSOR.ru.md](./HARNESS_CURSOR.ru.md) |
|
|
23
|
+
|
|
24
|
+
## Выбор агента по умолчанию
|
|
25
|
+
|
|
26
|
+
`vc setup` автоматически находит установленные бинарники и предлагает выбор. Без интерактива:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# .env или instance .env
|
|
30
|
+
AGENT_BACKEND=claude # hermes | claude | codex | gemini | opencode | openclaw | aider | cursor | custom
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Каждый harness читает свою команду из одноимённой env (`HERMES_COMMAND`, `CLAUDE_COMMAND` и т. д.). Общие env (`AGENT_LABEL`, `AGENT_COMMAND`, `AGENT_SESSION_FILE`, `AGENT_WORKDIR`, `AGENT_PROJECT_CONTEXT`, `AGENT_TASK_TIMEOUT_MS`, `AGENT_CHAT_TIMEOUT_MS`, `AGENT_VERBOSE_PROGRESS`) перекрывают значения по умолчанию.
|
|
34
|
+
|
|
35
|
+
## Голосовая маршрутизация между harness
|
|
36
|
+
|
|
37
|
+
После настройки можно дотянуться до любого **установленного** harness без перезапуска:
|
|
38
|
+
|
|
39
|
+
- `"ask Codex what it thinks"` — маршрут на один turn, следующий turn возвращается к умолчанию.
|
|
40
|
+
- `"switch to Aider"` — sticky-маршрут до `"back to default"`.
|
|
41
|
+
- Слот `which_agent` в plan-mode — агент сам предлагает, какой backend выполнит план.
|
|
42
|
+
|
|
43
|
+
Маршрутизатор проверяет наличие бинарника в `PATH` (относительные пути резолвятся относительно workdir активной проектной сессии). Если не установлено — мост спрашивает `"Использовать агент по умолчанию?"` — ответьте `"yes"` для fallback или `"no"` для отмены.
|
|
44
|
+
|
|
45
|
+
Распознаваемые алиасы: `claude` / `claude code`, `codex`, `gemini` / `gemini cli`, `opencode`, `openclaw`, `aider`, `cursor` / `cursor cli`, `hermes`.
|
|
46
|
+
|
|
47
|
+
## Общая семантика
|
|
48
|
+
|
|
49
|
+
Все адаптеры соблюдают:
|
|
50
|
+
|
|
51
|
+
- **Голосовой plan-mode** — `"plan it first"` озвучивает план, голосом правим, `"approve"` запускает на выбранном harness.
|
|
52
|
+
- **Barge-in** — прерывание срезает текущий TTS и abort задачу агента. Sticky-маршрут переживает прерывания; сбрасываются только маршруты на один turn.
|
|
53
|
+
- **Подробный прогресс** — `AGENT_VERBOSE_PROGRESS=1` выводит события прогресса. С `SMART_PROGRESS_API_KEY` LLM-сводщик собирает их в одну фразу на батч.
|
|
54
|
+
- **Push-уведомления** — `NOTIFY_PROVIDER=ntfy|pushover` + `NOTIFY_MIN_TASK_MS` отправляет push, когда длинная задача завершается и голосовой канал пуст. Debounce по телу + `NOTIFY_DEBOUNCE_MS`.
|
|
55
|
+
- **Состояние на канал** — каждый голосовой канал Discord ведёт свою маршрутизацию, состояние плана и буфер последних реплик.
|
|
56
|
+
- **Проектные сессии** — `!session new <name> <workdir>` привязывает канал к проекту; (harness, session) адаптеры кэшируются и инвалидируются при rebind.
|
|
57
|
+
|
|
58
|
+
Детали установки, авторизации и подводные камни — в документах по каждому harness. Полная справка по env: `docs/CONFIGURATION.ru.md`.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# 编码代理 Harness
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.zh.md">README</a> ·
|
|
5
|
+
<a href="README.zh.md">文档中心</a> ·
|
|
6
|
+
<a href="USAGE.zh.md">使用</a> ·
|
|
7
|
+
<a href="CONFIGURATION.zh.md">配置</a> ·
|
|
8
|
+
<a href="TROUBLESHOOTING.zh.md">排错</a>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
VerbalCoding 与代理无关。它会驱动你安装的任意 CLI 编码代理:每次语音 turn 启动它一次,把 STT 后的发言作为 prompt 传入,再把回答念回来。选**一个**作为默认,跨代理语音路由让你临时切换到其它代理。
|
|
12
|
+
|
|
13
|
+
| Harness | 默认命令 | 会话续接 | Harness 专用文档 |
|
|
14
|
+
|---|---|---|---|
|
|
15
|
+
| Hermes Agent | `hermes chat -Q -q` | ✅ (`--resume <id>`) | [HERMES_VOICE.zh.md](./HERMES_VOICE.zh.md) · [HARNESS_HERMES.zh.md](./HARNESS_HERMES.zh.md) |
|
|
16
|
+
| Claude Code | `claude -p` | ❌ | [HARNESS_CLAUDE.zh.md](./HARNESS_CLAUDE.zh.md) |
|
|
17
|
+
| Codex | `codex exec` | ❌ (末条消息文件抓取) | [HARNESS_CODEX.zh.md](./HARNESS_CODEX.zh.md) |
|
|
18
|
+
| Gemini CLI | `gemini -p` | ❌ | [HARNESS_GEMINI.zh.md](./HARNESS_GEMINI.zh.md) |
|
|
19
|
+
| OpenCode | `opencode run` | ❌ | [HARNESS_OPENCODE.zh.md](./HARNESS_OPENCODE.zh.md) |
|
|
20
|
+
| OpenClaw | `openclaw run` | ❌ | [HARNESS_OPENCLAW.zh.md](./HARNESS_OPENCLAW.zh.md) |
|
|
21
|
+
| Aider | `aider --no-pretty --yes-always --message` | ❌ | [HARNESS_AIDER.zh.md](./HARNESS_AIDER.zh.md) |
|
|
22
|
+
| Cursor CLI | `cursor-agent --print --prompt` | ❌ | [HARNESS_CURSOR.zh.md](./HARNESS_CURSOR.zh.md) |
|
|
23
|
+
|
|
24
|
+
## 选择默认代理
|
|
25
|
+
|
|
26
|
+
`vc setup` 会自动检测已安装的二进制并让你选择。非交互方式:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# .env 或 instance .env
|
|
30
|
+
AGENT_BACKEND=claude # hermes | claude | codex | gemini | opencode | openclaw | aider | cursor | custom
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
每个 harness 从对应同名 env (`HERMES_COMMAND`、`CLAUDE_COMMAND` 等) 读取自己的命令。共享 env (`AGENT_LABEL`、`AGENT_COMMAND`、`AGENT_SESSION_FILE`、`AGENT_WORKDIR`、`AGENT_PROJECT_CONTEXT`、`AGENT_TASK_TIMEOUT_MS`、`AGENT_CHAT_TIMEOUT_MS`、`AGENT_VERBOSE_PROGRESS`) 会覆盖各 harness 默认值。
|
|
34
|
+
|
|
35
|
+
## 通过语音在 harness 之间路由
|
|
36
|
+
|
|
37
|
+
配置好后无需重启即可路由到任意**已安装**的 harness:
|
|
38
|
+
|
|
39
|
+
- `"ask Codex what it thinks"` — 单 turn 路由,下一个 turn 自动回默认。
|
|
40
|
+
- `"switch to Aider"` — 粘性路由,直到说 `"back to default"`。
|
|
41
|
+
- 计划模式 `which_agent` 槽 — 代理自身建议下一个计划由哪个后端执行。
|
|
42
|
+
|
|
43
|
+
路由层会检测二进制是否在 `PATH` (相对路径按活动项目会话的 workdir 解析);若未安装,bridge 会问 `"用默认代理代替进行?"` — 回答 `"yes"` 转默认,`"no"` 取消。
|
|
44
|
+
|
|
45
|
+
解析器识别的别名: `claude` / `claude code`、`codex` / `科德克斯`、`gemini` / `gemini cli`、`opencode`、`openclaw`、`aider`、`cursor` / `cursor cli`、`hermes`。
|
|
46
|
+
|
|
47
|
+
## 共享语义
|
|
48
|
+
|
|
49
|
+
所有 harness 适配器一致遵守的:
|
|
50
|
+
|
|
51
|
+
- **语音计划模式** — `"plan it first"` 生成计划,语音编辑,`"approve"` 用选定的 harness 执行。
|
|
52
|
+
- **打断** — barge-in 立即切断当前 TTS 并 abort 代理任务。粘性路由在打断后保留,只清除单 turn 路由。
|
|
53
|
+
- **详细进度** — `AGENT_VERBOSE_PROGRESS=1` (或语音命令) 输出 harness 发出的进度事件。配置 `SMART_PROGRESS_API_KEY` 后,LLM 摘要器每批合成一句。
|
|
54
|
+
- **推送通知** — `NOTIFY_PROVIDER=ntfy|pushover` + `NOTIFY_MIN_TASK_MS` 条件成立且语音频道为空时推送。按 body + `NOTIFY_DEBOUNCE_MS` 去抖。
|
|
55
|
+
- **按频道状态** — 每个 Discord 语音频道单独维护路由、计划状态、发言环形缓冲。
|
|
56
|
+
- **项目会话** — `!session new <name> <workdir>` 将频道绑定到项目。(harness, session) 适配器缓存,rebind 时失效。
|
|
57
|
+
|
|
58
|
+
各 harness 安装路径、认证、坑请见各自文档。env 完整参考: `docs/CONFIGURATION.zh.md`。
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Aider — Notas del Harness
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.es.md">README</a> ·
|
|
5
|
+
<a href="HARNESSES.es.md">Harnesses</a> ·
|
|
6
|
+
<a href="USAGE.es.md">Uso</a> ·
|
|
7
|
+
<a href="CONFIGURATION.es.md">Configuración</a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
Aider es un CLI de pair-programming centrado en edits directos. VerbalCoding lo invoca con `aider --no-pretty --yes-always --message`, pasando el prompt como valor de `--message`. Cada turno de voz se vuelve una corrida no interactiva de Aider que puede modificar archivos en `AGENT_WORKDIR`.
|
|
11
|
+
|
|
12
|
+
## Instalación
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install aider-chat
|
|
16
|
+
aider --version
|
|
17
|
+
aider --no-pretty --yes-always --message "list the top-level files"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Aider necesita una API key para el modelo elegido (OpenAI / Anthropic / servidor local). Ver <https://aider.chat>.
|
|
21
|
+
|
|
22
|
+
## Configuración
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# .env
|
|
26
|
+
AGENT_BACKEND=aider
|
|
27
|
+
AIDER_COMMAND="aider --no-pretty --yes-always --message"
|
|
28
|
+
AGENT_WORKDIR=/Users/you/code/your-project
|
|
29
|
+
AGENT_PROJECT_CONTEXT="..."
|
|
30
|
+
AGENT_CHAT_TIMEOUT_MS=120000
|
|
31
|
+
AGENT_TASK_TIMEOUT_MS=0
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`--no-pretty` quita caracteres de caja de Rich. `--yes-always` mantiene la corrida no interactiva.
|
|
35
|
+
|
|
36
|
+
## Frases de voz para cambiar a Aider
|
|
37
|
+
|
|
38
|
+
- en: `"switch to Aider"`, `"ask Aider to ..."`
|
|
39
|
+
- es: `"cambia a Aider"`, `"pásalo a Aider"`
|
|
40
|
+
|
|
41
|
+
Alias: `aider`.
|
|
42
|
+
|
|
43
|
+
## Trampas
|
|
44
|
+
|
|
45
|
+
- **Aider edita ficheros.** A diferencia de Claude / Codex / Gemini bajo `-p`, Aider modifica el árbol de trabajo al responder. Ajusta `AGENT_WORKDIR` con cuidado.
|
|
46
|
+
- **Diffs en salida.** Si se interrumpe el turno, el puente no lee diffs; consulta el canal de texto y `git status`.
|
|
47
|
+
- **Auth.** `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` deben estar en el entorno de Aider; suelen vivir en `instances/<project>.env`.
|
|
48
|
+
- **Estado por canal.** El enrutamiento es por canal de Discord; cambiar a Aider en una sala no afecta a las otras.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Aider — Notes Harness
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.fr.md">README</a> ·
|
|
5
|
+
<a href="HARNESSES.fr.md">Harnesses</a> ·
|
|
6
|
+
<a href="USAGE.fr.md">Utilisation</a> ·
|
|
7
|
+
<a href="CONFIGURATION.fr.md">Configuration</a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
Aider est un CLI de pair-programming centré sur les edits directs. VerbalCoding l'invoque via `aider --no-pretty --yes-always --message`, en passant le prompt comme valeur de `--message`. Chaque tour vocal devient un run Aider non interactif susceptible de modifier des fichiers dans `AGENT_WORKDIR`.
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install aider-chat
|
|
16
|
+
aider --version
|
|
17
|
+
aider --no-pretty --yes-always --message "list the top-level files"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Aider requiert la clé API du modèle utilisé (OpenAI / Anthropic / serveur local). Voir <https://aider.chat>.
|
|
21
|
+
|
|
22
|
+
## Configuration
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# .env
|
|
26
|
+
AGENT_BACKEND=aider
|
|
27
|
+
AIDER_COMMAND="aider --no-pretty --yes-always --message"
|
|
28
|
+
AGENT_WORKDIR=/Users/you/code/your-project
|
|
29
|
+
AGENT_PROJECT_CONTEXT="..."
|
|
30
|
+
AGENT_CHAT_TIMEOUT_MS=120000
|
|
31
|
+
AGENT_TASK_TIMEOUT_MS=0
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`--no-pretty` retire les caractères de cadre Rich. `--yes-always` garde la run non interactive.
|
|
35
|
+
|
|
36
|
+
## Phrases vocales pour basculer vers Aider
|
|
37
|
+
|
|
38
|
+
- en: `"switch to Aider"`, `"ask Aider to ..."`
|
|
39
|
+
- fr: `"passe à Aider"`
|
|
40
|
+
|
|
41
|
+
Alias : `aider`.
|
|
42
|
+
|
|
43
|
+
## Pièges
|
|
44
|
+
|
|
45
|
+
- **Aider modifie les fichiers.** Contrairement à Claude/Codex/Gemini en `-p`, Aider touche directement à l'arbre de travail. `AGENT_WORKDIR` doit être bien choisi (généralement le `workdir` d'une session projet).
|
|
46
|
+
- **Diffs dans la sortie.** Si le tour est interrompu, le bridge ne lit pas le diff — utilisez le canal texte et `git status`.
|
|
47
|
+
- **Auth.** `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` doivent être dans l'env d'Aider ; en isolation, mettez-les dans `instances/<project>.env`.
|
|
48
|
+
- **État par canal.** Le routage inter-agents est par canal Discord ; passer à Aider dans un salon n'affecte pas les autres.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Aider — ハーネスノート
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.ja.md">README</a> ·
|
|
5
|
+
<a href="HARNESSES.ja.md">ハーネス</a> ·
|
|
6
|
+
<a href="USAGE.ja.md">使い方</a> ·
|
|
7
|
+
<a href="CONFIGURATION.ja.md">設定</a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
Aider はファイルを直接編集するペアプログラミング AI CLI。VerbalCoding は `aider --no-pretty --yes-always --message` で呼び出し、prompt は `--message` 値として渡されます。音声ターン 1 つが `AGENT_WORKDIR` のファイルを直接書き換え得る非対話 Aider 実行 1 つになります。
|
|
11
|
+
|
|
12
|
+
## インストール
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install aider-chat
|
|
16
|
+
aider --version
|
|
17
|
+
# 単一メッセージ実行を確認:
|
|
18
|
+
aider --no-pretty --yes-always --message "list the top-level files"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Aider は使用モデルの API キーが必要 (OpenAI / Anthropic / ローカルサーバ)。<https://aider.chat> 参照。
|
|
22
|
+
|
|
23
|
+
## VerbalCoding 設定
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# .env
|
|
27
|
+
AGENT_BACKEND=aider
|
|
28
|
+
# 任意
|
|
29
|
+
AIDER_COMMAND="aider --no-pretty --yes-always --message" # 既定
|
|
30
|
+
AGENT_WORKDIR=/Users/you/code/your-project # Aider が編集するディレクトリ
|
|
31
|
+
AGENT_PROJECT_CONTEXT="..."
|
|
32
|
+
AGENT_CHAT_TIMEOUT_MS=120000 # Aider は時間がかかることが多い
|
|
33
|
+
AGENT_TASK_TIMEOUT_MS=0
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`--no-pretty` は Rich のボックス文字を抑え、ストリーム sentencer が詰まらないようにします。`--yes-always` は非対話実行を維持 (Aider が "この diff を適用?" で止まらない)。
|
|
37
|
+
|
|
38
|
+
## Aider へ切り替える音声表現
|
|
39
|
+
|
|
40
|
+
- en: `"switch to Aider"`, `"ask Aider to ..."`
|
|
41
|
+
- ja: `"Aider に切り替えて"`, `"Aider に頼んで"`
|
|
42
|
+
|
|
43
|
+
エイリアス: `aider`。
|
|
44
|
+
|
|
45
|
+
## 罠
|
|
46
|
+
|
|
47
|
+
- **Aider はファイルを編集します。** `-p` モードの Claude / Codex / Gemini と異なり、Aider は応答時にワーキングツリーを直接変更。`AGENT_WORKDIR` を慎重に指定 — 通常はプロジェクトセッションの `workdir`。
|
|
48
|
+
- **出力に diff。** Aider はしばしば diff 形式のテキストを出力。ターン中断時は "中断" 通知のみ発話し diff は読み上げません — テキストチャンネルと `git status` で確認。
|
|
49
|
+
- **認証。** `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` を Aider の環境に。インスタンス分離は通常 `instances/<project>.env` を使用。
|
|
50
|
+
- **チャンネル別状態。** クロスエージェントルーティングは Discord チャンネル単位。あるプロジェクトルームで Aider に切り替えても他ルームには影響しません。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Aider — 하니스 노트
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.ko.md">README</a> ·
|
|
5
|
+
<a href="HARNESSES.ko.md">하니스</a> ·
|
|
6
|
+
<a href="USAGE.ko.md">사용법</a> ·
|
|
7
|
+
<a href="CONFIGURATION.ko.md">설정</a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
Aider는 직접 파일 수정에 집중한 페어 프로그래밍 AI CLI야. VerbalCoding은 `aider --no-pretty --yes-always --message`로 호출해 — prompt는 `--message` 값으로 들어가고, voice turn 하나가 `AGENT_WORKDIR`의 파일을 직접 수정할 수 있는 non-interactive Aider 실행 하나가 돼.
|
|
11
|
+
|
|
12
|
+
## 설치
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install aider-chat
|
|
16
|
+
aider --version
|
|
17
|
+
# 단일 메시지 실행 확인:
|
|
18
|
+
aider --no-pretty --yes-always --message "list the top-level files"
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Aider는 사용하는 모델용 API 키가 필요해 (OpenAI / Anthropic / 로컬 서버). <https://aider.chat> 참고.
|
|
22
|
+
|
|
23
|
+
## VerbalCoding 설정
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# .env
|
|
27
|
+
AGENT_BACKEND=aider
|
|
28
|
+
# 선택
|
|
29
|
+
AIDER_COMMAND="aider --no-pretty --yes-always --message" # 기본값
|
|
30
|
+
AGENT_WORKDIR=/Users/you/code/your-project # Aider가 편집할 디렉터리
|
|
31
|
+
AGENT_PROJECT_CONTEXT="..."
|
|
32
|
+
AGENT_CHAT_TIMEOUT_MS=120000 # Aider는 더 오래 걸릴 수 있음
|
|
33
|
+
AGENT_TASK_TIMEOUT_MS=0
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`--no-pretty`는 Rich 박스 문자를 제거해서 스트림 sentencer가 안 막혀. `--yes-always`는 실행을 non-interactive로 유지 (Aider가 "이 diff 적용할까요?" 같은 대화 없이 진행).
|
|
37
|
+
|
|
38
|
+
## Aider로 전환하는 음성 표현
|
|
39
|
+
|
|
40
|
+
- en: `"switch to Aider"`, `"ask Aider to ..."`
|
|
41
|
+
- ko: `"aider로 전환해줘"`, `"에이더로 전환"`
|
|
42
|
+
|
|
43
|
+
매처가 받는 별칭: `aider`, `에이더`.
|
|
44
|
+
|
|
45
|
+
## 함정
|
|
46
|
+
|
|
47
|
+
- **Aider는 파일을 수정해.** `-p` 모드의 Claude / Codex / Gemini와 달리 Aider는 답변하면서 작업 트리를 직접 바꿔. `AGENT_WORKDIR` 설정을 신중히 — 보통 프로젝트 세션의 `workdir`이 적당.
|
|
48
|
+
- **출력에 diff.** Aider는 diff 모양 텍스트를 자주 emit해. 턴이 interrupt되면 bridge는 "중단됨" 안내만 하고 diff는 음성으로 안 읽어 — 텍스트 채널과 `git status`로 확인해.
|
|
49
|
+
- **인증.** `OPENAI_API_KEY` / `ANTHROPIC_API_KEY`가 Aider 환경에 있어야 해. 인스턴스 격리 설치는 보통 `instances/<project>.env` 사용.
|
|
50
|
+
- **채널별 상태.** 크로스 에이전트 라우팅은 디스코드 채널 기준이라, 한 프로젝트 룸에서 Aider로 전환해도 다른 룸엔 영향 없어.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Aider — Заметки по harness
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<a href="../../README.ru.md">README</a> ·
|
|
5
|
+
<a href="HARNESSES.ru.md">Harness-ы</a> ·
|
|
6
|
+
<a href="USAGE.ru.md">Использование</a> ·
|
|
7
|
+
<a href="CONFIGURATION.ru.md">Настройка</a>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
Aider — CLI для парного программирования с прямыми правками. VerbalCoding вызывает его через `aider --no-pretty --yes-always --message`, передавая prompt значением `--message`. Каждый voice turn — это один не интерактивный запуск Aider, который может изменять файлы в `AGENT_WORKDIR`.
|
|
11
|
+
|
|
12
|
+
## Установка
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install aider-chat
|
|
16
|
+
aider --version
|
|
17
|
+
aider --no-pretty --yes-always --message "list the top-level files"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Aider требует API-ключ выбранной модели (OpenAI / Anthropic / локальный сервер). См. <https://aider.chat>.
|
|
21
|
+
|
|
22
|
+
## Настройка
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# .env
|
|
26
|
+
AGENT_BACKEND=aider
|
|
27
|
+
AIDER_COMMAND="aider --no-pretty --yes-always --message"
|
|
28
|
+
AGENT_WORKDIR=/Users/you/code/your-project
|
|
29
|
+
AGENT_PROJECT_CONTEXT="..."
|
|
30
|
+
AGENT_CHAT_TIMEOUT_MS=120000
|
|
31
|
+
AGENT_TASK_TIMEOUT_MS=0
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`--no-pretty` убирает рамки Rich, чтобы sentencer не подвисал. `--yes-always` держит запуск не интерактивным.
|
|
35
|
+
|
|
36
|
+
## Голосовые фразы для переключения на Aider
|
|
37
|
+
|
|
38
|
+
- en: `"switch to Aider"`, `"ask Aider to ..."`
|
|
39
|
+
- ru: `"переключись на Aider"`
|
|
40
|
+
|
|
41
|
+
Алиасы: `aider`.
|
|
42
|
+
|
|
43
|
+
## Подводные камни
|
|
44
|
+
|
|
45
|
+
- **Aider правит файлы.** В отличие от Claude/Codex/Gemini в `-p`, Aider трогает рабочее дерево в момент ответа. Аккуратно выбирайте `AGENT_WORKDIR` (обычно — `workdir` проектной сессии).
|
|
46
|
+
- **Diff в выводе.** При прерывании turn-а мост не зачитывает diff; смотрите текстовый канал и `git status`.
|
|
47
|
+
- **Auth.** `OPENAI_API_KEY` / `ANTHROPIC_API_KEY` должны быть в env Aider; обычно — в `instances/<project>.env`.
|
|
48
|
+
- **Состояние на канал.** Маршрутизация cross-agent — на канал Discord; переключение на Aider в одной комнате не влияет на другие.
|