# 🎙️ Lv2 リアルタイム議論参加システム

> Jarvisが対面会議にリアルタイムで参加する仕組み（テキスト返答版）。
> Lv3（音声返答・声クローン）は司令塔/MEMO.mdに別タスクとして記録済。

最終更新：2026-05-04

---

## 🚫 重要警告：`/loop` 経路は禁止（2026-05-04 確定）

**2026-05-04 `/loop 30s` 経路で2連続PCクラッシュ事故**。
- 15:27 1回目：WindowServer落ち→強制リブート
- 18:09 2回目：ハードウォッチドッグ強制リセット（whisper-cli 26プロセス連続生成）

**黒幕：** `/loop` の連続再呼出（1fire約100k tok×60fire/h＝6Mトークン/h、Max 5x枠を15〜30分で焼き切り）
**実行犯：** `whisper-cli` 並列重複（CHUNK_SEC内に処理終わらず重なってメモリ＋GPU枯渇）

**確定方針：**
- このREADME・start_live.sh・loop_prompt.md・HOW_TO_JOIN.md に記載の「`/loop 30s "$(cat loop_prompt.md)"`」起動方法は**実行禁止**
- 常駐ループは**外部Pythonデーモン+Anthropic API直叩き**で再実装する（本命：`jarvis_daemon.py`）
- 暫定運用：手動オンデマンド（会話後にtranscript.mdをJarvisに読ませる）or 会議後一括レビュー

詳細：`memory/feedback_no_loop.md` ／ `memory/feedback_loop_outside_claude_code.md`

---

## 全体構造

```
[HOLLYLAND ピンマイク2本] → [Mac USB受信機（2ch認識済）]
       ↓
[transcribe.sh] ── ffmpeg + whisper-cpp で文字起こし
       ↓
[transcript.md] ── 話者分離付きで追記
       ↓                          ↑
[Jarvisセッション ── /loop 30s で読みに行く]
       ↓
[jarvis_responses.md] ── Jarvisの意見追記
       ↓
[dashboard ライブ会議カード] ── 5秒リフレッシュで両方表示
```

---

## ⚡ ワンコマンド起動（推奨・2026-05-04 追加）

```bash
cd "/Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー/clone-jarvis/jarvis/live_session"
./start_live.sh
```

これだけで：
- 環境チェック（whisper-cpp / ffmpeg / モデル / マイク）
- HOLLYLAND ピンマイク or 内蔵マイク自動判定
- dashboard 起動（重複起動回避）
- 文字起こしバックグラウンド起動
- Jarvisループ起動コマンド表示

停止: `./stop_live.sh`（`--clean` オプションで chunks/ の WAV も削除）

---

## 🔴 起動手順（3ステップ）

### ステップ1：依存インストール確認（初回のみ）
```bash
brew install whisper-cpp ffmpeg  # 既にバックグラウンド実行中・完了確認
whisper-cpp-download-ggml-model medium  # 日本語モデルDL（数分）
```

詳細は `SETUP.md` 参照。

### ステップ2：3つを別ターミナルで起動

**ターミナル1：音声→テキスト**
```bash
cd "/Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー/clone-jarvis/jarvis/live_session"
./transcribe.sh
```

**ターミナル2：Jarvis監視ループ**
```bash
# Claude Code を開いて Jarvisモード起動：「jarvis起動」
# 次に：
/loop 30s "$(cat /Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー/clone-jarvis/jarvis/live_session/loop_prompt.md)"
```

**ターミナル3：dashboard起動**（既起動中ならスキップ）
```bash
cd "/Users/rk/Library/CloudStorage/GoogleDrive-ritsuha1021@gmail.com/マイドライブ/起業フォルダー/dashboard"
./start.sh
# ブラウザ自動オープン → http://localhost:8765
```

### ステップ3：会議開始
- ピンマイクで普通に話すだけ
- `transcript.md` と `jarvis_responses.md` が自動で更新される
- dashboardで両方リアルタイム監視

---

## 停止手順
- ターミナル1：`Ctrl+C`
- ターミナル2：/loop停止コマンド or `Ctrl+C`
- ターミナル3：`./stop.sh`

---

## ファイル一覧
| ファイル | 役割 |
|---|---|
| `README.md` | このファイル |
| `transcribe.sh` | 音声→テキスト起動 |
| `SETUP.md` | whisper/ffmpegセットアップ詳細 |
| `transcript.md` | 文字起こし結果（自動追記） |
| `jarvis_responses.md` | Jarvis意見（自動追記） |
| `HOW_TO_JOIN.md` | Jarvis監視ループ詳細 |
| `loop_prompt.md` | /loopに渡すプロンプト本体 |
| `last_pos.txt` | Jarvis読み終わり位置 |
| `AQUAVOICE_PREP.md` | AquaVoice移行準備（Whisper不満時） |

---

## 既知の罠・トラブルシュート
- **左右ch逆**：「[りつは]」と「[暦]」が逆 → `SETUP.md` 参照して `transcribe.sh` の pan filter 順序入替
- **whisperが何も拾わない**：マイクのbluetoothペアリング・受信機USB抜き差し
- **Jarvisが意見出さない**：`transcript.md` に新規行があるか確認・/loopが回ってるか確認
- **dashboard真っ黒**：シンボリックリンク `dashboard/live_session` 確認

---

## Lv3 への進化（後日）
司令塔/MEMO.md「完全リアルタイム会議参加Jarvis（Lv3）」参照。
- 声での返答（macOS `say` or ElevenLabs声クローン）
- 議論への割り込み発言
- Lv2運用の体感が安定したら着手

---

## Phase 1（Lv2常駐デーモン）作業ディレクトリ構成

```
live_session/
├── SPEC.md                           # 仕様書（必読）
├── daemon/                           # デーモン実装（Step 2で作成）
├── transcripts/                      # Whisper出力（YYYY-MM-DD.jsonl）
├── wake_word_learning/
│   ├── ng_patterns.md                # 呼名NGパターン（5個仕込み済）
│   ├── false_positives.jsonl         # 誤発火履歴
│   └── weekly_reports/               # 週次精度レポート
├── tokens.jsonl                      # 1日消費追跡
├── action_log.jsonl                  # 全Jarvis共通アクションログ
└── README.md                         # このファイル
```

### ステータス（2026-05-05）
- ✅ Step 1：仕様書作成（SPEC.md）
- ✅ Step 1.5：作業ディレクトリ骨格作成
- 🟡 Step 2：MVP実装（次セッション着手）
- ⬜ Step 3：dry-run試運転
- ⬜ Step 4：暦会議で実戦投入

### クイックリファレンス
- 実装方式：Claude Code 経由（`claude -p` subprocess）→ 追加課金ゼロ
- トリガー：呼名+指示文（案A・誤発火許容）
- 誤発火学習：5回ルール → ng_patterns.md 自動追加 → DNA昇格
- モード別上限：🟢30k / 🟡200k / 🔴500k tok/日
- 出力：dashboard カード（live_meeting_YYYY-MM-DD）
