|
| 1 | +<img src="docs/icon-readme.png" width="32" height="32" alt="CodePilot" style="vertical-align: middle; margin-right: 8px;" /> CodePilot |
| 2 | +=== |
| 3 | + |
| 4 | +**Claude Code のネイティブ デスクトップ GUI** -- ターミナルではなく、洗練されたビジュアルインターフェースを通じてチャット、コーディング、プロジェクト管理を行えます。 |
| 5 | + |
| 6 | +[](https://github.com/op7418/CodePilot/releases) |
| 7 | +[](https://github.com/op7418/CodePilot/releases) |
| 8 | +[](LICENSE) |
| 9 | + |
| 10 | +[English](./README.md) | [中文文档](./README_CN.md) |
| 11 | + |
| 12 | +--- |
| 13 | + |
| 14 | +## 機能 |
| 15 | + |
| 16 | +- **💬 会話型コーディング** -- Claude からのレスポンスをリアルタイムでストリーミング受信します。完全な Markdown レンダリング、シンタックスハイライトされたコードブロック、ツール呼び出しの可視化に対応しています。 |
| 17 | +- **📂 セッション管理** -- チャットセッションの作成、名前変更、アーカイブ、再開ができます。会話は SQLite にローカル保存されるため、再起動後もデータが失われません。 |
| 18 | +- **🎯 プロジェクト対応コンテキスト** -- セッションごとに作業ディレクトリを指定できます。右パネルにはライブファイルツリーとファイルプレビューが表示されるため、Claude が何を見ているかが常にわかります。 |
| 19 | +- **🔒 権限制御** -- ツール使用をアクション単位で承認、拒否、または自動許可できます。お好みに応じて権限モードを選択できます。 |
| 20 | +- **🎭 複数の相互作用モード** -- *Code*、*Plan*、*Ask* モード間で切り替えて、各セッションで Claude の動作を制御できます。 |
| 21 | +- **🤖 モデルセレクター** -- 会話中に Claude モデル(Opus、Sonnet、Haiku)を切り替えられます。 |
| 22 | +- **🔌 MCP サーバー管理** -- Model Context Protocol サーバーをエクステンション ページから直接追加、設定、削除できます。`stdio`、`sse`、`http` トランスポート型に対応しています。 |
| 23 | +- **⚡ カスタムスキル** -- スラッシュコマンドとして呼び出し可能な、再利用可能なプロンプトベースのスキル(グローバルまたはプロジェクト単位)を定義できます。 |
| 24 | +- **⚙️ 設定エディター** -- `~/.claude/settings.json` のビジュアルエディターと JSON エディター。権限と環境変数の設定に対応しています。 |
| 25 | +- **📊 トークン使用量追跡** -- アシスタントのレスポンスごとに入力/出力トークン数と推定コストが表示されます。 |
| 26 | +- **🌗 ダーク / ライト テーマ** -- ナビゲーションレールのワンクリックでテーマを切り替えられます。 |
| 27 | +- **⌨️ スラッシュコマンド** -- `/help`、`/clear`、`/cost`、`/compact`、`/doctor`、`/review` などの組み込みコマンドを使用できます。 |
| 28 | +- **🖥️ Electron パッケージング** -- 隠れたタイトルバー、バンドルされた Next.js サーバー、自動ポート割り当てを備えたネイティブ デスクトップ アプリとして配布されます。 |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +## スクリーンショット |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +## 前提条件 |
| 39 | + |
| 40 | +> **重要**: CodePilot は Claude Code Agent SDK を内部で呼び出します。アプリを起動する前に、`claude` が `PATH` で利用可能であることを確認し、認証済み (`claude login`) であることを確認してください。 |
| 41 | +
|
| 42 | +| 要件 | 最小バージョン | |
| 43 | +|---|---| |
| 44 | +| **Node.js** | 18+ | |
| 45 | +| **Claude Code CLI** | インストール済みおよび認証済み (`claude --version` が動作することを確認) | |
| 46 | +| **npm** | 9+ (Node 18 に付属) | |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | +## ダウンロード |
| 51 | + |
| 52 | +プリビルド版のリリースは [**Releases**](https://github.com/op7418/CodePilot/releases) ページから利用できます。 |
| 53 | + |
| 54 | +### サポートプラットフォーム |
| 55 | + |
| 56 | +- **macOS**: ユニバーサルバイナリ(arm64 + x64)を `.dmg` として配布 |
| 57 | +- **Windows**: x64 を `.zip` として配布 |
| 58 | +- **Linux**: x64 と arm64 を `.AppImage`、`.deb`、`.rpm` として配布 |
| 59 | + |
| 60 | +--- |
| 61 | + |
| 62 | +## クイックスタート |
| 63 | + |
| 64 | +```bash |
| 65 | +# リポジトリのクローン |
| 66 | +git clone https://github.com/op7418/CodePilot.git |
| 67 | +cd codepilot |
| 68 | + |
| 69 | +# 依存関係のインストール |
| 70 | +npm install |
| 71 | + |
| 72 | +# 開発モードで起動(ブラウザ) |
| 73 | +npm run dev |
| 74 | + |
| 75 | +# -- または、開発モードで完全な Electron アプリを起動 -- |
| 76 | +npm run electron:dev |
| 77 | +``` |
| 78 | + |
| 79 | +その後、[http://localhost:3000](http://localhost:3000)(ブラウザモード)を開くか、Electron ウィンドウが表示されるまで待ちます。 |
| 80 | + |
| 81 | +--- |
| 82 | + |
| 83 | +## インストールのトラブルシューティング |
| 84 | + |
| 85 | +CodePilot はまだコード署名されていないため、初回起動時にオペレーティングシステムがセキュリティ警告を表示します。 |
| 86 | + |
| 87 | +### macOS |
| 88 | + |
| 89 | +**「Apple はこのソフトウェアを確認できません」** というダイアログが表示されます。 |
| 90 | + |
| 91 | +**オプション 1 -- 右クリックで開く** |
| 92 | + |
| 93 | +1. Finder で `CodePilot.app` を右クリック(または Control キーを押しながらクリック)します。 |
| 94 | +2. コンテキストメニューから **開く** を選択します。 |
| 95 | +3. 確認ダイアログで **開く** をクリックします。 |
| 96 | + |
| 97 | +**オプション 2 -- システム設定** |
| 98 | + |
| 99 | +1. **システム設定** > **プライバシーとセキュリティ** を開きます。 |
| 100 | +2. **セキュリティ** セクションまでスクロールします。 |
| 101 | +3. CodePilot がブロックされているというメッセージが表示されます。**このまま開く** をクリックします。 |
| 102 | +4. 必要に応じて認証を行い、アプリを起動します。 |
| 103 | + |
| 104 | +**オプション 3 -- ターミナルコマンド** |
| 105 | + |
| 106 | +```bash |
| 107 | +xattr -cr /Applications/CodePilot.app |
| 108 | +``` |
| 109 | + |
| 110 | +これは隔離属性を削除するため、macOS はアプリをブロックしなくなります。 |
| 111 | + |
| 112 | +### Windows |
| 113 | + |
| 114 | +Windows SmartScreen はインストーラーまたは実行ファイルをブロックします。 |
| 115 | + |
| 116 | +**オプション 1 -- 実行を続ける** |
| 117 | + |
| 118 | +1. SmartScreen ダイアログで **詳細情報** をクリックします。 |
| 119 | +2. **実行を続ける** をクリックします。 |
| 120 | + |
| 121 | +**オプション 2 -- アプリインストール制御を無効にする** |
| 122 | + |
| 123 | +1. **設定** > **アプリ** > **詳細アプリ設定** を開きます。 |
| 124 | +2. **アプリインストール制御**(または「アプリの取得元」)をトグルして、どこからでもアプリをインストール可能にします。 |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +## テック スタック |
| 129 | + |
| 130 | +| レイヤー | テクノロジー | |
| 131 | +|---|---| |
| 132 | +| フレームワーク | [Next.js 16](https://nextjs.org/)(App Router) | |
| 133 | +| デスクトップシェル | [Electron 40](https://www.electronjs.org/) | |
| 134 | +| UI コンポーネント | [Radix UI](https://www.radix-ui.com/) + [shadcn/ui](https://ui.shadcn.com/) | |
| 135 | +| スタイリング | [Tailwind CSS 4](https://tailwindcss.com/) | |
| 136 | +| アニメーション | [Motion](https://motion.dev/)(Framer Motion) | |
| 137 | +| AI 統合 | [Claude Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk) | |
| 138 | +| データベース | [better-sqlite3](https://github.com/WiseLibs/better-sqlite3)(組み込み、ユーザーごと) | |
| 139 | +| Markdown | react-markdown + remark-gfm + rehype-raw + [Shiki](https://shiki.style/) | |
| 140 | +| ストリーミング | [Vercel AI SDK](https://sdk.vercel.ai/) ヘルパー + Server-Sent Events | |
| 141 | +| アイコン | [Hugeicons](https://hugeicons.com/) + [Lucide](https://lucide.dev/) | |
| 142 | +| テスト | [Playwright](https://playwright.dev/) | |
| 143 | +| ビルド / パック | electron-builder + esbuild | |
| 144 | + |
| 145 | +--- |
| 146 | + |
| 147 | +## プロジェクト構成 |
| 148 | + |
| 149 | +``` |
| 150 | +codepilot/ |
| 151 | +├── electron/ # Electron メインプロセス&プリロード |
| 152 | +│ ├── main.ts # ウィンドウ作成、組み込みサーバーライフサイクル |
| 153 | +│ └── preload.ts # コンテキスト ブリッジ |
| 154 | +├── src/ |
| 155 | +│ ├── app/ # Next.js App Router ページ& API ルート |
| 156 | +│ │ ├── chat/ # 新規チャットページ& [id] セッションページ |
| 157 | +│ │ ├── extensions/ # スキル+ MCP サーバー管理 |
| 158 | +│ │ ├── settings/ # 設定エディター |
| 159 | +│ │ └── api/ # REST + SSE エンドポイント |
| 160 | +│ │ ├── chat/ # セッション、メッセージ、ストリーミング、権限 |
| 161 | +│ │ ├── files/ # ファイルツリー&プレビュー |
| 162 | +│ │ ├── plugins/ # プラグイン& MCP CRUD |
| 163 | +│ │ ├── settings/ # 設定の読み書き |
| 164 | +│ │ ├── skills/ # スキル CRUD |
| 165 | +│ │ └── tasks/ # タスク追跡 |
| 166 | +│ ├── components/ |
| 167 | +│ │ ├── ai-elements/ # メッセージバブル、コードブロック、ツール呼び出しなど |
| 168 | +│ │ ├── chat/ # ChatView、MessageList、MessageInput、ストリーミング |
| 169 | +│ │ ├── layout/ # AppShell、NavRail、Header、RightPanel |
| 170 | +│ │ ├── plugins/ # MCP サーバーリスト&エディター |
| 171 | +│ │ ├── project/ # FileTree、FilePreview、TaskList |
| 172 | +│ │ ├── skills/ # SkillsManager、SkillEditor |
| 173 | +│ │ └── ui/ # Radix ベースのプリミティブ(button、dialog、tabs など) |
| 174 | +│ ├── hooks/ # カスタム React フック(usePanel など) |
| 175 | +│ ├── lib/ # コアロジック |
| 176 | +│ │ ├── claude-client.ts # Agent SDK ストリーミングラッパー |
| 177 | +│ │ ├── db.ts # SQLite スキーマ、マイグレーション、CRUD |
| 178 | +│ │ ├── files.ts # ファイルシステムヘルパー |
| 179 | +│ │ ├── permission-registry.ts # 権限リクエスト/レスポンスブリッジ |
| 180 | +│ │ └── utils.ts # 共有ユーティリティ |
| 181 | +│ └── types/ # TypeScript インターフェース& API コントラクト |
| 182 | +├── electron-builder.yml # パッケージング設定 |
| 183 | +├── package.json |
| 184 | +└── tsconfig.json |
| 185 | +``` |
| 186 | + |
| 187 | +--- |
| 188 | + |
| 189 | +## 開発 |
| 190 | + |
| 191 | +```bash |
| 192 | +# Next.js 開発サーバーのみを実行(ブラウザで開く) |
| 193 | +npm run dev |
| 194 | + |
| 195 | +# 開発モードで完全な Electron アプリを実行 |
| 196 | +# (Next.js を起動して待機し、その後 Electron を開く) |
| 197 | +npm run electron:dev |
| 198 | + |
| 199 | +# 本番環境ビルド(Next.js 静的エクスポート) |
| 200 | +npm run build |
| 201 | + |
| 202 | +# Electron 配布可能ファイルと Next.js をビルド |
| 203 | +npm run electron:build |
| 204 | + |
| 205 | +# macOS DMG をパッケージ(ユニバーサルバイナリ) |
| 206 | +npm run electron:pack |
| 207 | +``` |
| 208 | + |
| 209 | +### メモ |
| 210 | + |
| 211 | +- Electron メインプロセス(`electron/main.ts`)は Next.js スタンドアロン サーバーをフォークし、`127.0.0.1` 経由でランダムなフリーポートで接続します。 |
| 212 | +- チャット データは `~/.codepilot/codepilot.db`(または開発モードでは `./data/codepilot.db`)に保存されます。 |
| 213 | +- アプリは SQLite の WAL モードを使用するため、同時読み込みは高速です。 |
| 214 | + |
| 215 | +--- |
| 216 | + |
| 217 | +## 貢献 |
| 218 | + |
| 219 | +貢献を歓迎します。開始するには: |
| 220 | + |
| 221 | +1. リポジトリをフォークしてフィーチャーブランチを作成します。 |
| 222 | +2. `npm install` で依存関係をインストールします。 |
| 223 | +3. `npm run electron:dev` を実行して、変更をローカルでテストします。 |
| 224 | +4. プルリクエストを開く前に `npm run lint` が成功することを確認します。 |
| 225 | +5. 変更内容と理由を明確に説明した PR を `main` に対して開きます。 |
| 226 | + |
| 227 | +PR はフォーカスを保つようにしてください -- 1 つのフィーチャーまたは修正ごとに 1 つの PR を開いてください。 |
| 228 | + |
| 229 | +--- |
| 230 | + |
| 231 | +## ライセンス |
| 232 | + |
| 233 | +MIT |
0 commit comments