@mcptoolshop/claude-sfx 0.1.1 → 1.0.0
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/CHANGELOG.md +47 -0
- package/README.es.md +132 -118
- package/README.fr.md +132 -118
- package/README.hi.md +132 -118
- package/README.it.md +132 -118
- package/README.ja.md +132 -118
- package/README.md +18 -4
- package/README.pt-BR.md +132 -118
- package/README.zh.md +132 -118
- package/dist/cli.js +50 -8
- package/dist/errors.d.ts +35 -0
- package/dist/errors.js +59 -0
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
5
|
<p align="center">
|
|
6
6
|
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.jpg" width="400" alt="Claude-SFX">
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
10
|
<a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
|
|
11
|
+
<a href="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
12
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx/branch/main/graph/badge.svg" alt="codecov"></a>
|
|
11
13
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
12
14
|
<a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
13
15
|
</p>
|
|
@@ -177,6 +179,14 @@ Zero audio files. Every sound is synthesized at runtime from math:
|
|
|
177
179
|
|
|
178
180
|
The entire package is ~2,800 lines of TypeScript with zero production dependencies. Sounds are generated as PCM buffers, encoded to WAV in memory, and played through the OS native audio player (PowerShell on Windows, afplay on macOS, aplay on Linux).
|
|
179
181
|
|
|
182
|
+
## Security & Privacy
|
|
183
|
+
|
|
184
|
+
**Data touched:** `~/.claude-sfx/config.json` (preferences), `.claude/settings.json` (hook registration). Audio buffers are generated in memory and never written to disk unless you run `export`.
|
|
185
|
+
|
|
186
|
+
**Data NOT touched:** source code, git history, network, credentials, environment variables. No telemetry is collected or sent. No audio files are downloaded — every sound is synthesized locally from math.
|
|
187
|
+
|
|
188
|
+
**Permissions:** filesystem read/write for config and hooks, OS audio player invocation. See [SECURITY.md](SECURITY.md) for the full policy.
|
|
189
|
+
|
|
180
190
|
## Requirements
|
|
181
191
|
|
|
182
192
|
- Node.js 18+
|
|
@@ -186,3 +196,7 @@ The entire package is ~2,800 lines of TypeScript with zero production dependenci
|
|
|
186
196
|
## License
|
|
187
197
|
|
|
188
198
|
[MIT](LICENSE)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
Built by <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
package/README.pt-BR.md
CHANGED
|
@@ -1,54 +1,56 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.md">English</a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.zh.md">中文</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.md">English</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
5
|
<p align="center">
|
|
6
6
|
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.jpg" width="400" alt="Claude-SFX">
|
|
7
7
|
</p>
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
<p align="center">
|
|
10
|
-
<a href="https://www.npmjs.com/package/claude-sfx"><img src="https://img.shields.io/npm/v/claude-sfx" alt="npm version"></a>
|
|
10
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
|
|
11
|
+
<a href="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
12
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx/branch/main/graph/badge.svg" alt="codecov"></a>
|
|
11
13
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
12
14
|
<a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
13
15
|
</p>
|
|
14
|
-
|
|
15
|
-
Feedback de áudio procedural para [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Cada chamada de ferramenta, edição de arquivo, pesquisa, envio para o Git e despacho de agente recebe um som distinto — sintetizado a partir de cálculos matemáticos, e não de arquivos de áudio.
|
|
16
|
-
|
|
17
|
-
## Início Rápido
|
|
18
|
-
|
|
16
|
+
|
|
17
|
+
Feedback de áudio procedural para [Claude Code](https://docs.anthropic.com/en/docs/claude-code). Cada chamada de ferramenta, edição de arquivo, pesquisa, envio para o Git e despacho de agente recebe um som distinto — sintetizado a partir de cálculos matemáticos, e não de arquivos de áudio.
|
|
18
|
+
|
|
19
|
+
## Início Rápido
|
|
20
|
+
|
|
19
21
|
```bash
|
|
20
|
-
npm install -g claude-sfx
|
|
22
|
+
npm install -g @mcptoolshop/claude-sfx
|
|
21
23
|
cd your-project
|
|
22
24
|
claude-sfx init # install hooks into .claude/settings.json
|
|
23
25
|
claude-sfx demo # hear all 7 verbs
|
|
24
26
|
```
|
|
25
|
-
|
|
26
|
-
Pronto. O Claude Code agora emitirá sons enquanto estiver em execução.
|
|
27
|
-
|
|
28
|
-
## Por que o feedback de áudio?
|
|
29
|
-
|
|
30
|
-
Quando um agente de IA lê, escreve, pesquisa e implanta em seu nome, você perde a visibilidade. Você está apenas olhando para o texto passando na tela. O feedback de áudio restaura a consciência:
|
|
31
|
-
|
|
32
|
-
- **Acessibilidade** — ouça as mudanças de estado, erros e conclusões sem precisar observar o terminal.
|
|
33
|
-
- **Fluxo** — saiba se um teste foi aprovado ou se um envio foi concluído sem precisar alternar entre diferentes contextos.
|
|
34
|
-
- **Presença** — o agente parece um colaborador, e não uma caixa preta.
|
|
35
|
-
|
|
36
|
-
## Os 7 Verbos
|
|
37
|
-
|
|
38
|
-
Cada ação do Claude Code corresponde a um dos 7 verbos principais. Modificadores (status, escopo, direção) alteram o som sem comprometer a coerência.
|
|
39
|
-
|
|
40
|
-
| Verbo | Gatilhos | Som |
|
|
41
|
-
|
|
42
|
-
| **intake** | `Read`, `WebFetch`, `WebSearch` | Onda senoidal ascendente — algo chegando |
|
|
43
|
-
| **transform** | `Edit` | Pulso texturizado por FM — remodelando |
|
|
44
|
-
| **commit** | `Write`, `NotebookEdit`, `git commit` | Tom de
|
|
45
|
-
| **navigate** | `Grep`, `Glob` |
|
|
46
|
-
| **execute** | `Bash`, `npm test`, `tsc` | Ruído + tom — ação mecânica |
|
|
47
|
-
| **move** | `mv`, `cp`, criação de subagente | Sopro de vento — deslocamento de ar |
|
|
48
|
-
| **sync** | `git push`, `git pull` | Sopro dramático + âncora tonal |
|
|
49
|
-
|
|
50
|
-
### Modificadores
|
|
51
|
-
|
|
27
|
+
|
|
28
|
+
Pronto. O Claude Code agora emitirá sons enquanto estiver em execução.
|
|
29
|
+
|
|
30
|
+
## Por que o feedback de áudio?
|
|
31
|
+
|
|
32
|
+
Quando um agente de IA lê, escreve, pesquisa e implanta em seu nome, você perde a visibilidade. Você está apenas olhando para o texto passando na tela. O feedback de áudio restaura a consciência:
|
|
33
|
+
|
|
34
|
+
- **Acessibilidade** — ouça as mudanças de estado, erros e conclusões sem precisar observar o terminal.
|
|
35
|
+
- **Fluxo** — saiba se um teste foi aprovado ou se um envio foi concluído sem precisar alternar entre diferentes contextos.
|
|
36
|
+
- **Presença** — o agente parece um colaborador, e não uma caixa preta.
|
|
37
|
+
|
|
38
|
+
## Os 7 Verbos
|
|
39
|
+
|
|
40
|
+
Cada ação do Claude Code corresponde a um dos 7 verbos principais. Modificadores (status, escopo, direção) alteram o som sem comprometer a coerência.
|
|
41
|
+
|
|
42
|
+
| Verbo | Gatilhos | Som |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| **intake** | `Read`, `WebFetch`, `WebSearch` | Onda senoidal ascendente — algo chegando |
|
|
45
|
+
| **transform** | `Edit` | Pulso texturizado por FM — remodelando |
|
|
46
|
+
| **commit** | `Write`, `NotebookEdit`, `git commit` | Tom de estalo agudo — finalizado |
|
|
47
|
+
| **navigate** | `Grep`, `Glob` | Ping de sonar — escaneando |
|
|
48
|
+
| **execute** | `Bash`, `npm test`, `tsc` | Ruído + tom — ação mecânica |
|
|
49
|
+
| **move** | `mv`, `cp`, criação de subagente | Sopro de vento — deslocamento de ar |
|
|
50
|
+
| **sync** | `git push`, `git pull` | Sopro dramático + âncora tonal |
|
|
51
|
+
|
|
52
|
+
### Modificadores
|
|
53
|
+
|
|
52
54
|
```bash
|
|
53
55
|
claude-sfx play navigate --status ok # bright ping (octave harmonic)
|
|
54
56
|
claude-sfx play navigate --status err # low detuned ping (dissonance)
|
|
@@ -57,60 +59,60 @@ claude-sfx play sync --direction up # rising whoosh (push)
|
|
|
57
59
|
claude-sfx play sync --direction down # falling whoosh (pull)
|
|
58
60
|
claude-sfx play intake --scope remote # longer tail (distance feel)
|
|
59
61
|
```
|
|
60
|
-
|
|
61
|
-
### Detecção Inteligente de Bash
|
|
62
|
-
|
|
63
|
-
O manipulador de eventos inspeciona os comandos Bash para escolher o som correto:
|
|
64
|
-
|
|
65
|
-
| Comando Bash | Verbo | Status |
|
|
66
|
-
|
|
67
|
-
| `git push` | sync (para cima) | com base no código de saída |
|
|
68
|
-
| `git pull` | sync (para baixo) | com base no código de saída |
|
|
69
|
-
| `npm test`, `pytest` |
|
|
70
|
-
| `tsc`, `npm run build` |
|
|
71
|
-
| `mv`, `cp` |
|
|
72
|
-
| `rm` |
|
|
73
|
-
| tudo o mais |
|
|
74
|
-
|
|
75
|
-
## Perfis
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
| Perfil |
|
|
80
|
-
|
|
81
|
-
| **minimal** (default) | Tons de onda senoidal — sutis, profissionais, para uso diário |
|
|
82
|
-
| **retro** |
|
|
83
|
-
|
|
62
|
+
|
|
63
|
+
### Detecção Inteligente de Bash
|
|
64
|
+
|
|
65
|
+
O manipulador de eventos inspeciona os comandos Bash para escolher o som correto:
|
|
66
|
+
|
|
67
|
+
| Comando Bash | Verbo | Status |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| `git push` | sync (para cima) | com base no código de saída |
|
|
70
|
+
| `git pull` | sync (para baixo) | com base no código de saída |
|
|
71
|
+
| `npm test`, `pytest` | execução | com base no código de saída |
|
|
72
|
+
| `tsc`, `npm run build` | execução | com base no código de saída |
|
|
73
|
+
| `mv`, `cp` | movimento | — |
|
|
74
|
+
| `rm` | movimento | aviso |
|
|
75
|
+
| tudo o mais | execução | com base no código de saída |
|
|
76
|
+
|
|
77
|
+
## Perfis
|
|
78
|
+
|
|
79
|
+
Paletas de som que alteram todo o "caráter" com um único parâmetro.
|
|
80
|
+
|
|
81
|
+
| Perfil | Caráter |
|
|
82
|
+
|---|---|
|
|
83
|
+
| **minimal** (default) | Tons de onda senoidal — sutis, profissionais, para uso diário |
|
|
84
|
+
| **retro** | Ruídos de onda quadrada em 8 bits — divertidos, mas controlados |
|
|
85
|
+
|
|
84
86
|
```bash
|
|
85
87
|
claude-sfx demo --profile retro # hear retro palette
|
|
86
88
|
claude-sfx preview minimal # audition all sounds + modifiers
|
|
87
89
|
claude-sfx config set profile retro # change default globally
|
|
88
90
|
claude-sfx config repo retro # use retro in current directory only
|
|
89
91
|
```
|
|
90
|
-
|
|
91
|
-
### Perfis Personalizados
|
|
92
|
-
|
|
93
|
-
Copie `profiles/minimal.json`, edite os parâmetros de síntese e carregue-o:
|
|
94
|
-
|
|
92
|
+
|
|
93
|
+
### Perfis Personalizados
|
|
94
|
+
|
|
95
|
+
Copie `profiles/minimal.json`, edite os parâmetros de síntese e carregue-o:
|
|
96
|
+
|
|
95
97
|
```bash
|
|
96
98
|
claude-sfx play navigate --profile ./my-profile.json
|
|
97
99
|
```
|
|
98
|
-
|
|
99
|
-
Cada número no
|
|
100
|
-
|
|
101
|
-
##
|
|
102
|
-
|
|
103
|
-
O que diferencia um produto de um brinquedo.
|
|
104
|
-
|
|
105
|
-
| Recurso | Comportamento |
|
|
106
|
-
|
|
107
|
-
| **Debounce** |
|
|
108
|
-
| **Rate limit** | Máximo de 8 sons
|
|
109
|
-
| **Quiet hours** | Todos os sons são suprimidos durante as horas configuradas |
|
|
110
|
-
| **Mute** | Alternância instantânea, persiste após a reinicialização da sessão |
|
|
111
|
-
| **Volume** | Controle de ganho de 0 a 100 |
|
|
112
|
-
| **Per-verb disable** | Desative verbos específicos que você não deseja |
|
|
113
|
-
|
|
100
|
+
|
|
101
|
+
Cada número no JSON corresponde diretamente ao motor de síntese — forma de onda, frequência, duração, envelope (ADSR), profundidade de modulação por frequência (FM), largura de banda, ganho.
|
|
102
|
+
|
|
103
|
+
## Prevenção de Irritação
|
|
104
|
+
|
|
105
|
+
O que diferencia um produto de um brinquedo.
|
|
106
|
+
|
|
107
|
+
| Recurso | Comportamento |
|
|
108
|
+
|---|---|
|
|
109
|
+
| **Debounce** | Mesmo verbo dentro de 200ms → um som |
|
|
110
|
+
| **Rate limit** | Máximo de 8 sons por janela de 10 segundos |
|
|
111
|
+
| **Quiet hours** | Todos os sons são suprimidos durante as horas configuradas |
|
|
112
|
+
| **Mute** | Alternância instantânea, persiste após a reinicialização da sessão |
|
|
113
|
+
| **Volume** | Controle de ganho de 0 a 100 |
|
|
114
|
+
| **Per-verb disable** | Desative verbos específicos que você não deseja |
|
|
115
|
+
|
|
114
116
|
```bash
|
|
115
117
|
claude-sfx mute # instant silence
|
|
116
118
|
claude-sfx unmute
|
|
@@ -120,27 +122,27 @@ claude-sfx config set quiet-end 07:00 # until 7am
|
|
|
120
122
|
claude-sfx disable navigate # no more search pings
|
|
121
123
|
claude-sfx enable navigate # bring it back
|
|
122
124
|
```
|
|
123
|
-
|
|
124
|
-
## Ambiente (Operações de Longa Duração)
|
|
125
|
-
|
|
126
|
-
Para comandos que levam um tempo (compilações, implantações, grandes conjuntos de testes):
|
|
127
|
-
|
|
125
|
+
|
|
126
|
+
## Ambiente (Operações de Longa Duração)
|
|
127
|
+
|
|
128
|
+
Para comandos que levam um tempo (compilações, implantações, grandes conjuntos de testes):
|
|
129
|
+
|
|
128
130
|
```bash
|
|
129
131
|
claude-sfx ambient-start # low drone fades in
|
|
130
132
|
# ... operation runs ...
|
|
131
133
|
claude-sfx ambient-resolve # drone stops, resolution stinger plays
|
|
132
134
|
claude-sfx ambient-stop # stop drone silently (no stinger)
|
|
133
135
|
```
|
|
134
|
-
|
|
135
|
-
## Sons da Sessão
|
|
136
|
-
|
|
136
|
+
|
|
137
|
+
## Sons da Sessão
|
|
138
|
+
|
|
137
139
|
```bash
|
|
138
140
|
claude-sfx session-start # two-note ascending chime (boot)
|
|
139
141
|
claude-sfx session-end # two-note descending chime (closure)
|
|
140
142
|
```
|
|
141
|
-
|
|
142
|
-
## Todos os
|
|
143
|
-
|
|
143
|
+
|
|
144
|
+
## Todos os comandos
|
|
145
|
+
|
|
144
146
|
```
|
|
145
147
|
Setup:
|
|
146
148
|
init Install hooks into .claude/settings.json
|
|
@@ -163,26 +165,38 @@ Config:
|
|
|
163
165
|
disable / enable <verb> Toggle specific verbs
|
|
164
166
|
export [dir] [--profile] Export all sounds as .wav files
|
|
165
167
|
```
|
|
166
|
-
|
|
167
|
-
## Como Funciona
|
|
168
|
-
|
|
169
|
-
Nenhum arquivo de áudio. Cada som é sintetizado em tempo de execução a partir de cálculos matemáticos:
|
|
170
|
-
|
|
171
|
-
- **Osciladores** —
|
|
172
|
-
- **Envelopes ADSR** — ataque, decaimento, sustentação, liberação
|
|
173
|
-
- **Síntese
|
|
174
|
-
- **Filtro de variável
|
|
175
|
-
- **Varreduras de frequência** — interpolação linear para movimento
|
|
176
|
-
- **Limitador de volume** — compressão "soft-knee", limite máximo
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
##
|
|
181
|
-
|
|
182
|
-
-
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
168
|
+
|
|
169
|
+
## Como Funciona
|
|
170
|
+
|
|
171
|
+
Nenhum arquivo de áudio. Cada som é sintetizado em tempo de execução a partir de cálculos matemáticos:
|
|
172
|
+
|
|
173
|
+
- **Osciladores** — seno, quadrado, dente de serra, triângulo, ruído branco
|
|
174
|
+
- **Envelopes ADSR** — ataque, decaimento, sustentação, liberação
|
|
175
|
+
- **Síntese por modulação de frequência (FM)** — para textura
|
|
176
|
+
- **Filtro de estado variável** — ruído filtrado em banda para sons de "whoosh"
|
|
177
|
+
- **Varreduras de frequência** — interpolação linear para movimento
|
|
178
|
+
- **Limitador de volume** — compressão "soft-knee", limite máximo
|
|
179
|
+
|
|
180
|
+
Todo o pacote tem aproximadamente 2.800 linhas de TypeScript, sem dependências de produção. Os sons são gerados como buffers PCM, codificados para WAV na memória e reproduzidos através do reprodutor de áudio nativo do sistema operacional (PowerShell no Windows, afplay no macOS, aplay no Linux).
|
|
181
|
+
|
|
182
|
+
## Segurança e Privacidade
|
|
183
|
+
|
|
184
|
+
**Dados acessados:** `~/.claude-sfx/config.json` (preferências), `.claude/settings.json` (registro de hooks). Os buffers de áudio são gerados na memória e nunca são gravados em disco, a menos que você execute o comando `export`.
|
|
185
|
+
|
|
186
|
+
**Dados NÃO acessados:** código-fonte, histórico do Git, rede, credenciais, variáveis de ambiente. Nenhuma informação de telemetria é coletada ou enviada. Nenhum arquivo de áudio é baixado; todos os sons são sintetizados localmente a partir de cálculos matemáticos.
|
|
187
|
+
|
|
188
|
+
**Permissões:** leitura/escrita no sistema de arquivos para configurações e hooks, invocação do reprodutor de áudio do sistema operacional. Consulte o arquivo [SECURITY.md](SECURITY.md) para a política completa.
|
|
189
|
+
|
|
190
|
+
## Requisitos
|
|
191
|
+
|
|
192
|
+
- Node.js 18 ou superior
|
|
193
|
+
- Claude Code
|
|
194
|
+
- Saída de áudio do sistema (alto-falantes ou fones de ouvido)
|
|
195
|
+
|
|
196
|
+
## Licença
|
|
197
|
+
|
|
198
|
+
[MIT](LICENSE)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
Desenvolvido por <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a>
|
package/README.zh.md
CHANGED
|
@@ -1,54 +1,56 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<a href="README.ja.md">日本語</a> | <a href="README.md">English</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
-
</p>
|
|
4
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<a href="README.ja.md">日本語</a> | <a href="README.md">English</a> | <a href="README.es.md">Español</a> | <a href="README.fr.md">Français</a> | <a href="README.hi.md">हिन्दी</a> | <a href="README.it.md">Italiano</a> | <a href="README.pt-BR.md">Português (BR)</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
5
|
<p align="center">
|
|
6
6
|
<img src="https://raw.githubusercontent.com/mcp-tool-shop-org/brand/main/logos/claude-sfx/readme.jpg" width="400" alt="Claude-SFX">
|
|
7
7
|
</p>
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
<p align="center">
|
|
10
|
-
<a href="https://www.npmjs.com/package/claude-sfx"><img src="https://img.shields.io/npm/v/claude-sfx" alt="npm version"></a>
|
|
10
|
+
<a href="https://www.npmjs.com/package/@mcptoolshop/claude-sfx"><img src="https://img.shields.io/npm/v/@mcptoolshop/claude-sfx" alt="npm version"></a>
|
|
11
|
+
<a href="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml"><img src="https://github.com/mcp-tool-shop-org/claude-sfx/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
12
|
+
<a href="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx"><img src="https://codecov.io/gh/mcp-tool-shop-org/claude-sfx/branch/main/graph/badge.svg" alt="codecov"></a>
|
|
11
13
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
|
|
12
14
|
<a href="https://mcp-tool-shop-org.github.io/claude-sfx/"><img src="https://img.shields.io/badge/Landing_Page-live-blue" alt="Landing Page"></a>
|
|
13
15
|
</p>
|
|
14
|
-
|
|
15
|
-
对于 [Claude Code](https://docs.anthropic.com/en/docs/claude-code)
|
|
16
|
-
|
|
17
|
-
## 快速开始
|
|
18
|
-
|
|
16
|
+
|
|
17
|
+
对于 [Claude Code](https://docs.anthropic.com/en/docs/claude-code),我们提供程序级的音频反馈。 每次工具调用、文件编辑、搜索、git推送以及代理分发都会产生不同的声音——这些声音是通过数学算法合成的,而不是音频文件。
|
|
18
|
+
|
|
19
|
+
## 快速开始
|
|
20
|
+
|
|
19
21
|
```bash
|
|
20
|
-
npm install -g claude-sfx
|
|
22
|
+
npm install -g @mcptoolshop/claude-sfx
|
|
21
23
|
cd your-project
|
|
22
24
|
claude-sfx init # install hooks into .claude/settings.json
|
|
23
25
|
claude-sfx demo # hear all 7 verbs
|
|
24
26
|
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
## 为什么使用音频反馈?
|
|
29
|
-
|
|
30
|
-
当 AI 代理代表您读取、编写、搜索和部署时,您会失去可见性。
|
|
31
|
-
|
|
32
|
-
- **可访问性**:无需观看终端,即可听到状态变化、错误和完成情况。
|
|
33
|
-
- **流畅性**:无需切换上下文,即可知道测试是否通过或推送是否成功。
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
## 7
|
|
37
|
-
|
|
38
|
-
Claude Code
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
| **intake** | `Read`, `WebFetch`, `WebSearch` |
|
|
43
|
-
| **transform** | `Edit` | FM
|
|
44
|
-
| **commit** | `Write`, `NotebookEdit`, `git commit` | 清晰的敲击声——表示已完成 |
|
|
45
|
-
| **navigate** | `Grep`, `Glob` |
|
|
46
|
-
| **execute** | `Bash`, `npm test`, `tsc` | 噪声爆发 + 声音——表示机械动作 |
|
|
47
|
-
| **move** | `mv`、`cp`、子代理启动 | 气流声——表示空气移动 |
|
|
48
|
-
| **sync** | `git push`, `git pull` | 戏剧性的气流声 + 音调锚 |
|
|
49
|
-
|
|
50
|
-
### 修饰符
|
|
51
|
-
|
|
27
|
+
|
|
28
|
+
就这些了。现在,Claude Code 在工作时会播放声音。
|
|
29
|
+
|
|
30
|
+
## 为什么使用音频反馈?
|
|
31
|
+
|
|
32
|
+
当 AI 代理代表您读取、编写、搜索和部署时,您会失去可见性。 您会盯着屏幕上滚动的文本。 音频反馈可以恢复您的意识:
|
|
33
|
+
|
|
34
|
+
- **可访问性**:无需观看终端,即可听到状态变化、错误和完成情况。
|
|
35
|
+
- **流畅性**:无需切换上下文,即可知道测试是否通过或推送是否成功。
|
|
36
|
+
- **沉浸感**:代理感觉更像一个合作者,而不是一个黑盒子。
|
|
37
|
+
|
|
38
|
+
## 7 种核心动作
|
|
39
|
+
|
|
40
|
+
每个 Claude Code 动作都对应于 7 种核心动作中的一种。 修饰符(状态、范围、方向)会改变声音,但不会破坏其连贯性。
|
|
41
|
+
|
|
42
|
+
| 动作 | 触发器 | 声音 |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| **intake** | `Read`, `WebFetch`, `WebSearch` | 轻微上升的正弦波——表示某个内容正在进入 |
|
|
45
|
+
| **transform** | `Edit` | 具有 FM 特征的脉冲波——表示正在进行重塑 |
|
|
46
|
+
| **commit** | `Write`, `NotebookEdit`, `git commit` | 清晰的敲击声——表示已完成 |
|
|
47
|
+
| **navigate** | `Grep`, `Glob` | 声纳回声——表示正在扫描 |
|
|
48
|
+
| **execute** | `Bash`, `npm test`, `tsc` | 噪声爆发 + 声音——表示机械动作 |
|
|
49
|
+
| **move** | `mv`、`cp`、子代理启动 | 气流声——表示空气移动 |
|
|
50
|
+
| **sync** | `git push`, `git pull` | 戏剧性的气流声 + 音调锚 |
|
|
51
|
+
|
|
52
|
+
### 修饰符
|
|
53
|
+
|
|
52
54
|
```bash
|
|
53
55
|
claude-sfx play navigate --status ok # bright ping (octave harmonic)
|
|
54
56
|
claude-sfx play navigate --status err # low detuned ping (dissonance)
|
|
@@ -57,60 +59,60 @@ claude-sfx play sync --direction up # rising whoosh (push)
|
|
|
57
59
|
claude-sfx play sync --direction down # falling whoosh (pull)
|
|
58
60
|
claude-sfx play intake --scope remote # longer tail (distance feel)
|
|
59
61
|
```
|
|
60
|
-
|
|
61
|
-
### 智能 Bash 检测
|
|
62
|
-
|
|
63
|
-
处理程序会检查 Bash
|
|
64
|
-
|
|
65
|
-
| Bash 命令 |
|
|
66
|
-
|
|
67
|
-
| `git push` | sync (
|
|
68
|
-
| `git pull` | sync (
|
|
69
|
-
| `npm test`, `pytest` |
|
|
70
|
-
| `tsc`, `npm run build` |
|
|
71
|
-
| `mv`, `cp` |
|
|
72
|
-
| `rm` |
|
|
73
|
-
| 其他所有情况 |
|
|
74
|
-
|
|
75
|
-
## 配置文件
|
|
76
|
-
|
|
77
|
-
这些配置文件会改变整个声音,只需一个标志即可。
|
|
78
|
-
|
|
79
|
-
| 配置文件 |
|
|
80
|
-
|
|
81
|
-
| **minimal** (default) | 正弦波声音——微妙、专业、日常使用 |
|
|
82
|
-
| **retro** | 方波 8 位声音——有趣但可控 |
|
|
83
|
-
|
|
62
|
+
|
|
63
|
+
### 智能 Bash 检测
|
|
64
|
+
|
|
65
|
+
处理程序会检查 Bash 命令以选择正确的声音:
|
|
66
|
+
|
|
67
|
+
| Bash 命令 | 动作 | 状态 |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| `git push` | sync (成功) | 根据退出码 |
|
|
70
|
+
| `git pull` | sync (失败) | 根据退出码 |
|
|
71
|
+
| `npm test`, `pytest` | 执行 | 根据退出码 |
|
|
72
|
+
| `tsc`, `npm run build` | 执行 | 根据退出码 |
|
|
73
|
+
| `mv`, `cp` | 移动 | — |
|
|
74
|
+
| `rm` | 移动 | 警告 |
|
|
75
|
+
| 其他所有情况 | 执行 | 根据退出码 |
|
|
76
|
+
|
|
77
|
+
## 配置文件
|
|
78
|
+
|
|
79
|
+
这些配置文件会改变整个声音,只需一个标志即可。
|
|
80
|
+
|
|
81
|
+
| 配置文件 | 声音特征 |
|
|
82
|
+
|---|---|
|
|
83
|
+
| **minimal** (default) | 正弦波声音——微妙、专业、日常使用 |
|
|
84
|
+
| **retro** | 方波 8 位声音——有趣但可控 |
|
|
85
|
+
|
|
84
86
|
```bash
|
|
85
87
|
claude-sfx demo --profile retro # hear retro palette
|
|
86
88
|
claude-sfx preview minimal # audition all sounds + modifiers
|
|
87
89
|
claude-sfx config set profile retro # change default globally
|
|
88
90
|
claude-sfx config repo retro # use retro in current directory only
|
|
89
91
|
```
|
|
90
|
-
|
|
91
|
-
### 自定义配置文件
|
|
92
|
-
|
|
93
|
-
复制 `profiles/minimal.json`,编辑合成参数,然后加载它:
|
|
94
|
-
|
|
92
|
+
|
|
93
|
+
### 自定义配置文件
|
|
94
|
+
|
|
95
|
+
复制 `profiles/minimal.json`,编辑合成参数,然后加载它:
|
|
96
|
+
|
|
95
97
|
```bash
|
|
96
98
|
claude-sfx play navigate --profile ./my-profile.json
|
|
97
99
|
```
|
|
98
|
-
|
|
99
|
-
JSON
|
|
100
|
-
|
|
101
|
-
##
|
|
102
|
-
|
|
103
|
-
区分产品和玩具的关键。
|
|
104
|
-
|
|
105
|
-
| 功能 | 行为 |
|
|
106
|
-
|
|
107
|
-
| **Debounce** |
|
|
108
|
-
| **Rate limit** | 每 10 秒最多 8 个声音 |
|
|
109
|
-
| **Quiet hours** | 在配置的时间段内,所有声音都会被抑制 |
|
|
110
|
-
| **Mute** | 即时切换,重启会话后仍然有效 |
|
|
111
|
-
| **Volume** | 0–100 增益控制 |
|
|
112
|
-
| **Per-verb disable** |
|
|
113
|
-
|
|
100
|
+
|
|
101
|
+
JSON 中的每个数字都直接映射到合成引擎——波形、频率、持续时间、包络(ADSR)、FM 深度、带宽、增益。
|
|
102
|
+
|
|
103
|
+
## 防干扰
|
|
104
|
+
|
|
105
|
+
区分产品和玩具的关键。
|
|
106
|
+
|
|
107
|
+
| 功能 | 行为 |
|
|
108
|
+
|---|---|
|
|
109
|
+
| **Debounce** | 相同动作在 200 毫秒内重复 → 播放一个声音 |
|
|
110
|
+
| **Rate limit** | 每 10 秒最多 8 个声音 |
|
|
111
|
+
| **Quiet hours** | 在配置的时间段内,所有声音都会被抑制 |
|
|
112
|
+
| **Mute** | 即时切换,重启会话后仍然有效 |
|
|
113
|
+
| **Volume** | 0–100 增益控制 |
|
|
114
|
+
| **Per-verb disable** | 您可以关闭不想听到的特定动作 |
|
|
115
|
+
|
|
114
116
|
```bash
|
|
115
117
|
claude-sfx mute # instant silence
|
|
116
118
|
claude-sfx unmute
|
|
@@ -120,27 +122,27 @@ claude-sfx config set quiet-end 07:00 # until 7am
|
|
|
120
122
|
claude-sfx disable navigate # no more search pings
|
|
121
123
|
claude-sfx enable navigate # bring it back
|
|
122
124
|
```
|
|
123
|
-
|
|
124
|
-
##
|
|
125
|
-
|
|
126
|
-
对于需要一段时间才能完成的命令(构建、部署、大型测试套件):
|
|
127
|
-
|
|
125
|
+
|
|
126
|
+
## 环境音(长时间运行的操作)
|
|
127
|
+
|
|
128
|
+
对于需要一段时间才能完成的命令(构建、部署、大型测试套件):
|
|
129
|
+
|
|
128
130
|
```bash
|
|
129
131
|
claude-sfx ambient-start # low drone fades in
|
|
130
132
|
# ... operation runs ...
|
|
131
133
|
claude-sfx ambient-resolve # drone stops, resolution stinger plays
|
|
132
134
|
claude-sfx ambient-stop # stop drone silently (no stinger)
|
|
133
135
|
```
|
|
134
|
-
|
|
135
|
-
## 会话声音
|
|
136
|
-
|
|
136
|
+
|
|
137
|
+
## 会话声音
|
|
138
|
+
|
|
137
139
|
```bash
|
|
138
140
|
claude-sfx session-start # two-note ascending chime (boot)
|
|
139
141
|
claude-sfx session-end # two-note descending chime (closure)
|
|
140
142
|
```
|
|
141
|
-
|
|
142
|
-
## 所有命令
|
|
143
|
-
|
|
143
|
+
|
|
144
|
+
## 所有命令
|
|
145
|
+
|
|
144
146
|
```
|
|
145
147
|
Setup:
|
|
146
148
|
init Install hooks into .claude/settings.json
|
|
@@ -163,26 +165,38 @@ Config:
|
|
|
163
165
|
disable / enable <verb> Toggle specific verbs
|
|
164
166
|
export [dir] [--profile] Export all sounds as .wav files
|
|
165
167
|
```
|
|
166
|
-
|
|
167
|
-
## 工作原理
|
|
168
|
-
|
|
169
|
-
没有音频文件。 每次声音都是在运行时通过数学算法合成的:
|
|
170
|
-
|
|
171
|
-
-
|
|
172
|
-
- **ADSR
|
|
173
|
-
- **FM
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
##
|
|
181
|
-
|
|
182
|
-
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
168
|
+
|
|
169
|
+
## 工作原理
|
|
170
|
+
|
|
171
|
+
没有音频文件。 每次声音都是在运行时通过数学算法合成的:
|
|
172
|
+
|
|
173
|
+
- **振荡器**:正弦波、方波、锯齿波、三角波、白噪声
|
|
174
|
+
- **ADSR 包络**:攻击、衰减、持续、释放
|
|
175
|
+
- **FM 合成**:用于纹理的频率调制
|
|
176
|
+
- **状态变量滤波器**:用于气流声的带通滤波噪声
|
|
177
|
+
- **频率扫描**:用于移动的线性插值
|
|
178
|
+
- **响度限制器**:软限压缩、硬限
|
|
179
|
+
|
|
180
|
+
整个软件包约为 2800 行 TypeScript 代码,没有任何生产依赖项。 声音以 PCM 缓冲区生成,在内存中编码为 WAV 文件,并通过操作系统本地音频播放器播放(Windows 上的 PowerShell,macOS 上的 afplay,Linux 上的 aplay)。
|
|
181
|
+
|
|
182
|
+
## 安全与隐私
|
|
183
|
+
|
|
184
|
+
**访问的数据:** `~/.claude-sfx/config.json`(偏好设置),`.claude/settings.json`(钩子注册)。音频缓冲区在内存中生成,除非您运行 `export` 命令,否则不会写入磁盘。
|
|
185
|
+
|
|
186
|
+
**未访问的数据:** 源代码、Git 历史记录、网络、凭据、环境变量。 不会收集或发送任何遥测数据。 不会下载任何音频文件,所有声音都是从数学公式本地合成的。
|
|
187
|
+
|
|
188
|
+
**权限:** 配置文件和钩子所需的读写文件系统权限,以及操作系统音频播放器的调用权限。 完整的权限策略请参见 [SECURITY.md](SECURITY.md)。
|
|
189
|
+
|
|
190
|
+
## 要求
|
|
191
|
+
|
|
192
|
+
- Node.js 18+
|
|
193
|
+
- Claude Code
|
|
194
|
+
- 系统音频输出(扬声器或耳机)
|
|
195
|
+
|
|
196
|
+
## 许可证
|
|
197
|
+
|
|
198
|
+
[MIT](LICENSE)
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
由 <a href="https://mcp-tool-shop.github.io/">MCP Tool Shop</a> 构建。
|