課題:8 体並列で 3 分 7 回鳴ったので、音を全部切った
AI エージェントを 8 体並列で回しています。音が鳴ります。緑になったマスを見て次を頼みます。音が鳴ります。別のマスです。琥珀色なので答えます。音が鳴ります。音が鳴ります。音が鳴ります。
3 分で 7 回鳴りました。音を全部切ります。
静かになります。そして呼ばれても気づかなくなります。別のウィンドウで作業しているときに、AI が止まっていることが分からない。30 分後に見に行って、25 分前から止まっていた。
音を入れた理由がこれを避けるためだったので、切ると振り出しに戻ります。病棟で音量を下げるのと同じ場所に着いてしまう。
AI 並列化で最初に挫折する典型のひとつが、この「音疲れで全部切る」です。並列数が増えれば音の頻度も比例して増えるので、1 体でちょうどよかった設定が 8 体ではうるさくなるのは当たり前。問題は、全部切る以外の対処が無い作りのツールが多いことです。
既存のやり方とそのコスト
OS 側で通知音をミュート
macOS の集中モードや Windows のサイレント時間で、ターミナル系アプリの音を一括で止める。
即効性はあります。ただし、粒度が粗すぎる。危険な許可プロンプト(Waiting)も、完了通知も、同じ扱いで消えます。しかも AI 以外のアプリにも波及するので、Slack の DM まで静かになる。
マスごとに AI を 1 体だけ使う
並列をやめる、という逃げ方。1 体なら鳴り続けない。
でもそれは MulmoTerminal を使う理由を半分捨てる選択です。並列で回したいから格子の UI を使っている。1 体なら素のターミナル 1 枚で十分です。
フィルタースクリプトを間に挟む
通知経路に自前の中継を挟んで、頻度や種類を間引く。実装は可能ですが、設定とデバッグが本番コードより重いことがしばしばです。ツール側に粒度が無いことを、個人の工夫で補う形になる。
MulmoTerminal の解決:鳴る瞬間を 6 種類に分けて選べる
MulmoTerminal で音が鳴る瞬間は 6 種類あります。既定 ON は最初の 2 つだけ、残り 4 つは opt-in(設定で明示的に有効化する)です。
| 種類 | 鳴る瞬間 | 既定 |
|---|---|---|
| finished | エージェントが返答を終え、未読のまま | ON |
| waiting | エージェントが質問して止まった(許可・確認) | ON |
| run セル成功 | 単発コマンドを実行する Run セルが正常終了 | OFF |
| run セル失敗 | 同、異常終了 | OFF |
| session end | 会話のターミナルが終了した | OFF |
| CI 失敗 | そのディレクトリの提案 PR の CI が赤になった | OFF |
機能を足すたびに音が増える作りではないのが、ここの肝です。そういう作りだと最終的に全部切ることになる。opt-in にしてあることで、「必要なものだけ生きている」が保たれます。
詳細
疲れたら「waiting」だけ残す
ふだん 2 つ ON の既定でもうるさいとき、何を残すかはほぼ決まっています。waiting だけ残す。
効く理由は、2 つの性質が違うからです。
- waiting: 進んでいない。答えるまで 1 ミリも動かないので、気づかないと損をする
- finished: すでに進んで、終わっている。放っておいても損はしないので、次に見たときに読めばいい
音で知る価値があるのは waiting だけです。冒頭の 7 回も、本当に急ぐのは 2〜3 回でした。残りは「後でまとめて読む」で済む finished。
シェルの中で走らせたコマンドでは鳴らない
これは知っておくと無駄に設定を触らずに済みます。「テストが失敗したら音を鳴らしたい」と思って設定しても、素のターミナルで yarn test と打っただけでは鳴りません。
そのセルでは対話するシェルが生き続けているので、その中のコマンドがいつ終わったかを誰も知らないからです。シェルはプロンプトに戻っただけで、それが成功だったのか失敗だったのかを外から知る方法がありません。
鳴らせるのは、単発コマンドだけを走らせるために開いた Run セルです。そこには終了の合図(exit code)がある。プロジェクトのスクリプトとして登録しておいて、Run セルから実行すると鳴ります。
提案のテスト音(CI 失敗)は、拡大セルの横ペインが条件
もう一つ見落としやすい制約があります。
提案 PR の CI が赤くなったことを検知しているのは、1 体を拡大したときに横に出る PR 一覧ペインです。そのペインが画面に出ている間だけ、CI の状態を取りに行っている。格子を眺めているだけだと、そもそも取りに行っていません。
設定したのに鳴らないときはこれが原因です。拡大セルを開いて、横のペインを出した状態で待つ必要があります。
音の選び方は 3 通り
| 選び方 | 挙動 |
|---|---|
| 内蔵の 7 種類(鐘・コイン・鳥・ドア・銅鑼・魔法・猫) | 初回だけダウンロードし、以降はキャッシュから。ネット無しでも鳴る |
| 自分の音声ファイルのパスを指定 | そのファイルを再生 |
| 何も指定しない | ブラウザが合成した音 |
使わない人には何もダウンロードさせない作りになっています。選んだ瞬間に取得する。
合成音には「上昇/下降」の工夫がある
何も指定しないときに鳴る合成音には、覚えなくて済む工夫があります。
種類ごとに 2 音の形が違っていて、
- waiting(呼ばれているとき) → 上昇
- finished(終わったとき) → 下降
上がる音と下がる音は、音色を覚えなくても区別できます。何の音だっけを考えずに「上がったら答える、下がったら読む」で済む。音を 1 つずつ選ぶより、これで足りることが多い。
プロジェクトごとに音を変える
プロジェクトの設定に書けば、そのディレクトリのセルだけ音が変わります(プロジェクト設定が優先)。
耳で区別する目的なら、変えるのは1 つか 2 つだけにします。3 つ以上のプロジェクトに別の音を付けても、区別できるのは最初の数日です。
効くのは メインのプロジェクトだけ音を変える形。いつもの音じゃないからメインだ、と条件反射で分かる。
試すときは、そのセルを見ない
落とし穴が 1 つ。通知音は、いま見ているセルでは鳴りません。目の前で終わったものに音で知らせる意味がないからです。
設定を変えて、そのセルを見ながら試しても鳴りません。別のセルを見ている状態で試す。
スマホへの Web Push は逆で、見ているセルでも飛びます。そちらはパソコンが手元にない前提だからです(詳細は スマホ通知を 2 種類で選び分ける)。
使ってみる
既存のインストールがあれば、音の設定は追加インストールなしに動きます。初めての方は MulmoTerminal 完全ガイド の「使い方 3 ステップ」から。
動作確認の最小シナリオ
書く場所は ~/.mulmoterminal/config.json。無ければ作ります。設定画面の通知音の項目からでも変えられます。
{
"soundKinds": ["waiting"]
}
この設定は起動時に一度だけ読まれるので、アプリを再起動してタブを再読み込みします。
別のセルを見ている状態で、AI に許可を求めさせます。鳴れば成功。終わったときには鳴りません。
やめるときは項目を消せば既定(finished + waiting)に戻ります。
並列が多い日と少ない日で切り替える
実際の使い方は、固定の設定を 1 つ決めるのではなく、
- 1〜2 体のとき → 既定(finished + waiting)
- 5 体以上のとき →
waitingだけ - デモや打ち合わせ中 →
soundKinds: [](空)で全部黙らせる
といった形で、その日の並列数で切り替えるのが現実的です。設定ファイルの書き換えか、設定画面のチェックボックスで数秒で変えられます。
まとめ
- 並列数が増えれば音の頻度も比例して増える。1 体で快適な設定は 8 体ではうるさい
- 全部切ると、席を離れた瞬間に止まった AI に気づけなくなる
- MulmoTerminal の通知音は 6 種類で、既定 ON は 2 つ、残り 4 つは opt-in
- 疲れたら
waitingだけ残す。進んでいないのは止まったときだけだから - シェルの中の
yarn testでは鳴らない(exit code が外に出ないため)。Run セルで鳴らす - 合成音は上昇/下降で区別できる。音色を覚えなくても意味が分かる
関連: MulmoTerminal 公式ガイドの通知音ページ / MulmoTerminal のスマホ通知を 2 種類で選び分ける / Cursor の代替としての MulmoTerminal / tmux で Claude Code を並列に走らせる限界


