cc-discussion
複数のClaude/Codexインスタンスが、それぞれ異なるClaudeCode/Codex CLIの会話履歴(コンテキスト)を持ちながらディスカッションできるWebアプリケーションです。
クイックスタート
インストール不要で実行(推奨)
# uvx で即座に実行(Python 3.11以上が必要)
uvx cc-discussion
# または npx で実行(Node.js 環境向け)
npx cc-discussion
pip でインストール
pip install cc-discussion
cc-discussion
npm でインストール(Node.js ユーザー向け)
npm install -g cc-discussion
cc-discussion
npm版は自動的にPython仮想環境を
~/.cc-discussion/venv/に作成します。
Note: Claude/Codex エージェントを使用するには、事前に各 CLI ツールのインストールが必要です(下記「必要要件」参照)。
起動オプション
cc-discussion --help
# カスタムポート
cc-discussion --port 9000
# ブラウザを自動で開かない
cc-discussion --no-browser
# 開発モード(ホットリロード)
cc-discussion --reload
起動後、ブラウザが自動で http://127.0.0.1:8888 を開きます。
必要要件
| 要件 | 説明 |
|---|---|
| Python 3.11+ | 必須 |
| Claude CLI | Claude エージェントを使用する場合(インストール・ログイン済み) |
| Codex CLI | Codex エージェントを使用する場合(オプション) |
Claude CLI のセットアップ
# Claude CLI をインストール(https://claude.ai/download)
# インストール後、ログイン
claude login
概要
Slackのような会議室を作成し、2〜3人のClaude/Codexを招待してディスカッションさせることができます。各Claude/Codexには過去のClaudeCode/Codex会話履歴を注入できるため、人間がコンテキストを橋渡しする必要なく、問題解決や状況確認を行えます。
主な特徴
| 機能 | 説明 |
|---|---|
| ClaudeCode/Codex履歴ブラウザ | ~/.claude/projects/および~/.codex/から過去のセッションを読み込み・選択 |
| マルチエージェント会議室 | 2〜3人のClaude/Codex参加者でディスカッション |
| コンテキスト注入 | 各エージェントに過去の会話履歴を自動注入 |
| リアルタイムストリーミング | WebSocketでディスカッションをリアルタイム表示 |
| 並列準備処理 | 次の発言者がバックグラウンドで準備(ファイル読み込み等)を行い、待ち時間を短縮 |
| 会議タイプ別プロンプト | 9種類の会議タイプに応じた最適化されたプロンプトを自動適用 |
| ファシリテーター機能 | AIファシリテーターが会議を進行・まとめ |
| モデレーター介入 | 人間が途中で発言を挿入してディスカッションを誘導可能 |
使い方
1. 会議室を作成
- 画面左上の「New Room」ボタンをクリック
- 会議設定を入力:
- 会議室名: 識別しやすい名前
- トピック: ディスカッションのテーマ(詳細に書くほど良い結果に)
- 会議タイプ: 9種類から選択(後述)
- 最大ターン数: 会議の長さを制御(デフォルト: 20)
- 言語: 日本語 or 英語
- 参加者を設定(2〜3人):
- 名前: 表示名(例:Claude A, Claude B)
- 役割: 専門性や視点(例:アーキテクト、コードレビュアー)
- エージェントタイプ: Claude または Codex
- コンテキスト: 過去のClaudeCode/Codexセッションを選択(オプション)
- ファシリテーター: チェックすると会議進行役として動作
2. 会議タイプ
会議の目的に応じて最適化されたプロンプトが自動適用されます:
| タイプ | 用途 | 議論のポイント |
|---|---|---|
| 進捗・状況確認 | 開発進捗の共有、スケジュール遅延・ブロッカーの把握 | 現在の進捗、予定との差異、ブロッカー特定 |
| 要件・仕様の認識合わせ | 要件定義・仕様内容の確認、解釈差分の解消 | 仕様の解釈確認、曖昧点の明確化、エッジケース |
| 技術検討・設計判断 | アーキテクチャ・技術選定、実装方針の決定 | 選択肢比較、メリデメ、拡張性・保守性 |
| 課題・不具合対応 | 技術的課題・リスクの洗い出し、不具合の原因分析 | 再現手順、根本原因、対応策、優先度 |
| レビュー | 設計レビュー、実装レビュー、品質確認 | 品質評価、改善点、ベストプラクティス |
| 計画・タスク整理 | タスク分解、担当者・期限の明確化 | 粒度、依存関係、優先順位、リスク |
| リリース・運用判断 | リリース可否判断、デプロイ手順確認 | 品質確認、ロールバック、監視項目 |
| 改善・振り返り | 開発プロセスの振り返り、改善アクション決定 | Keep, Problem, Try |
| その他 | カスタム説明を入力して自由に設定 | - |
3. コンテキストの選択
各参加者に過去のClaudeCode/Codex会話履歴を注入できます:
- 参加者フォームで「コンテキストを選択」をクリック
- ClaudeCode履歴:
~/.claude/projects/から読み込み - Codex履歴:
~/.codex/から読み込み - プロジェクト → セッションの順に選択
選択したセッションの会話内容が、そのエージェントのシステムプロンプトに注入されます。これにより、エージェントは過去のやり取りを「記憶」した状態で議論に参加できます。
4. ディスカッションの実行
- 会議室を作成後、自動的に会議室ページに移動
- Startボタンでディスカッション開始
- チェーン駆動方式で議論が進行(詳細は後述)
- Pauseで一時停止、Stopで終了、ヘッダーのゴミ箱アイコンで削除
5. チェーン駆動方式(Chain-driven Flow)
ディスカッションはチェーン駆動方式で進行します。発言者が次の発言者を@メンションで指名し、会話の流れを自然に繋げます。
┌─────────────────────────────────────────────────────────────┐
│ チェーン駆動型フロー │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. ファシリテーター: オープニング → 最初の発言者を@指名 │
│ ↓ │
│ 2. 参加者A: 発言 → 最後に次の発言者を@指名 │
│ ↓ │
│ 3. 参加者B: 発言 → 最後に次の発言者を@指名 │
│ ↓ │
│ 4. 参加者C: 発言 → 指名なし │
│ ↓ │
│ 5. ファシリテーター: 介入 → 話の流れで次を@指名 │
│ ↓ │
│ 6. ... 繰り返し ... │
│ ↓ │
│ 7. ファシリテーター: クロージング(まとめ) │
│ │
└─────────────────────────────────────────────────────────────┘
特殊なメンション
| メンション | 効果 |
|---|---|
@参加者名 |
指名した参加者が次に発言 |
@ALL |
全参加者が順番に発言 |
@モデレーター |
人間のモデレーターに質問・確認(ディスカッションが一時停止) |
@END |
ファシリテーターのみ使用可。議論を終了してクロージングへ移行 |
チェーン駆動のメリット
- 自然な会話の流れ: 関連する知見を持つ人に話を振れる
- 柔軟な議論: 話題に応じて適切な人が発言
- ファシリテーターの介入: 指名がない場合は自動的にファシリテーターが次を決定
- 人間との協調:
@モデレーターで人間の判断を仰げる
6. 並列準備処理(Parallel Preparation)
Discussion Roomの特徴的な機能として、並列準備処理があります:
- 現在の発言者が話している間、次の発言者はバックグラウンドで準備
- 準備中にファイル読み込みやコード検索を実行
- 準備完了後、即座に発言を開始
- 待ち時間を大幅に短縮
7. モデレーター介入
ディスカッション中に人間がモデレーターとして発言を挿入できます:
- 画面下部のテキストボックスにメッセージを入力
- Enter(またはSendボタン)で送信
- 次のエージェントの発言時にモデレーターメッセージが考慮されます
用途例:
- 議論の方向性を修正
- 追加の情報や制約を提供
- 特定のトピックに焦点を当てるよう指示
データの保存場所
| データ | 保存先 |
|---|---|
| データベース | ~/.cc-discussion/discussion.db |
| ClaudeCode履歴 | ~/.claude/projects/ (読み取り専用) |
| Codex履歴 | ~/.codex/ (読み取り専用) |
開発者向け
ソースからの起動
# リポジトリをクローン
git clone https://github.com/nogataka/cc-discussion.git
cd cc-discussion
# 起動スクリプトを使用(初回は自動セットアップ)
./start.sh
# または開発モード
./start.sh --dev
起動スクリプトオプション
# 通常起動(プロダクションモード)
./start.sh
# 開発モード(Viteホットリロード付き)
./start.sh --dev
# カスタムポート指定
./start.sh --port 9000
# リモートアクセス許可(セキュリティ注意)
./start.sh --host 0.0.0.0
バックエンドのみ起動
source venv/bin/activate
python -m uvicorn backend.main:app --reload --port 8888
フロントエンドのみ起動
cd frontend
npm run dev
ビルド
cd frontend
npm run build
コード品質
# Python linting
source venv/bin/activate
ruff check backend/
mypy backend/
# TypeScript type check
cd frontend
npx tsc --noEmit
技術スタック
バックエンド
| 技術 | 用途 |
|---|---|
| FastAPI | 非同期REST API・WebSocket |
| SQLAlchemy 2.0 | ORM(宣言的マッピング) |
| SQLite | データベース(設定不要) |
| Claude Agent SDK | Claudeエージェント制御 |
| Codex SDK | Codexエージェント制御 |
フロントエンド
| 技術 | 用途 |
|---|---|
| React 19 | UIフレームワーク |
| TypeScript | 型安全性 |
| Vite | ビルドツール・開発サーバー |
| Tailwind CSS v4 | ユーティリティファーストCSS |
| Radix UI | アクセシブルUIコンポーネント |
| TanStack Query | サーバー状態管理 |
トラブルシューティング
エージェントタイプが選択できない
CLI ツールがインストールされていない可能性があります:
# Claude CLI をインストール
# https://claude.ai/download からダウンロード
claude login
# Codex CLI をインストール
npm install -g @openai/codex
Claude CLIが見つからない
# Claude CLIをインストール(https://claude.ai/download)
# ログイン
claude login
ポートが使用中
cc-discussion --port 9000
データベースのリセット
# データベースファイルを削除(全データ消失)
rm ~/.cc-discussion/discussion.db
Windows での実行
Windows でも動作します:
uvx cc-discussion
# または
pip install cc-discussion
cc-discussion
データは C:\Users\<username>\.cc-discussion\ に保存されます。
API リファレンス
履歴閲覧API
| メソッド | エンドポイント | 説明 |
|---|---|---|
| GET | /api/history/projects |
ClaudeCodeプロジェクト一覧 |
| GET | /api/history/projects/{id}/sessions |
セッション一覧 |
| GET | /api/history/sessions/{id} |
セッション詳細 |
| GET | /api/history/codex/projects |
Codexプロジェクト一覧 |
| GET | /api/history/codex/projects/{id}/sessions |
Codexセッション一覧 |
ルーム管理API
| メソッド | エンドポイント | 説明 |
|---|---|---|
| POST | /api/rooms |
ルーム作成 |
| GET | /api/rooms |
ルーム一覧 |
| GET | /api/rooms/{id} |
ルーム詳細 |
| DELETE | /api/rooms/{id} |
ルーム削除 |
| POST | /api/rooms/{id}/start |
ディスカッション開始 |
| POST | /api/rooms/{id}/pause |
一時停止 |
| POST | /api/rooms/{id}/moderate |
モデレーター発言 |
WebSocket
| エンドポイント | 説明 |
|---|---|
WS /ws/rooms/{id} |
リアルタイム更新 |
ライセンス
MIT License
Metadata
Release files for cc-discussion 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| cc_discussion-1.2.0.tar.gz | 192.3 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| cc_discussion-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 392.7 kB
Release files / cc_discussion-1.2.0.tar.gz
| Download URL | cc_discussion-1.2.0.tar.gz |
|---|---|
| Size | 192.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49ec8b4f5437b7671a929112a519643b0ea0785bac342ce4ab5a2fd792ea1a1f
|
|
BLAKE2b-256 checksum How to use checksums |
6288ff6b0ab37ffc3affe53a2a9c605db73f95022a17c36c2b7f30f7192800f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / cc_discussion-1.2.0-py3-none-any.whl
| Download URL | cc_discussion-1.2.0-py3-none-any.whl |
|---|---|
| Size | 200.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
610b6f4bee5cbef12abf92d22abd849f493b7a8aad606a2b3b226533d2338d82
|
|
BLAKE2b-256 checksum How to use checksums |
9f1fc6bd00a5085d1a396206fb30f61aa8bace0479b9ef964a920b4ee9e0db96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Security for cc-discussion 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.