Cherry Studioは、Electron製のデスクトップAIアシスタントアプリです。OpenAI・Anthropic・Googleなど複数のLLMプロバイダーを、Vercel AI SDKベースの独自パッケージ「aiCore」で統一的に扱える構成になっています。チャットや自律エージェント、300以上のアシスタントプリセットを1つのアプリから利用できる設計です。
中心にあるのはmonorepo内のpackages/aiCoreです。createAgentがプロバイダー設定からLanguageModelを解決し、ToolLoopAgentとして返す仕組みがテストコードから確認できます。プロバイダーごとの差異はプラグイン機構で吸収します。definePluginでconfigureContextやtransformParamsを登録し、wrapLanguageModelでミドルウェアを合成します。packages/ai-sdk-providerのCherryInProviderは、CherryINという独自ゲートウェイ経由でopenai・anthropic・geminiなど複数のエンドポイント種別を1つのAPIキーでルーティングします。OpenAI互換リランキングモデルやreasoningモデル向けmax_tokens変換など、プロバイダー固有の癖を吸収する小さな変換関数が個別にvitestで検証されています。アプリ本体はelectron-viteでmain・preload・rendererをビルドし、better-sqlite3などネイティブモジュールはelectron-rebuildで再構築する流れです。
- STEP 01
pnpm installを実行すると、Electron本体や各AI SDKプロバイダー、better-sqlite3など多数のネイティブ依存が解決されます。
- STEP 02
pnpm devを実行すると、rebuild:electron・download:binaries・electron-vite devが順に走り、Electronウィンドウが起動してチャット画面が表示されます。
- STEP 03
実際にLLMへ問い合わせるには、.envにOPENAI_API_KEYやCHERRYIN_API_KEYなど使いたいプロバイダーのキーを設定する必要があります。
- STEP 04
pnpm testを実行すると、main・renderer・aiCoreなど7つのプロジェクトに分かれたvitestスイートが順番に走ります。
- STEP 05
pnpm typecheckはnode・web・aiCoreの3系統をtsgoとtscで並行にチェックし、型エラーがあればそこで止まります。
- STEP 06
エージェント向けにはpnpm skills:checkが用意されており、.agents/skills配下のSKILL.md群の整合性を検証できます。
起動すると、複数のLLMプロバイダーを切り替えられるチャットアプリ本体と、再利用可能なプロバイダー抽象化層aiCoreパッケージが手に入ります。PRレビューやリリース準備向けのSKILL.md群、i18nチェックスクリプトなども同梱されており、アプリ本体だけでなく開発ワークフロー一式が付いてくる点が特徴です。
Node バージョンが24.11.1以上24.16.0未満に固定されており、範囲外のバージョンでは動作確認がされていない可能性があります。
better-sqlite3などネイティブモジュールのビルドが必須で、OSやアーキテクチャによってはrebuild:electronが失敗するリスクがあります。
実際にLLM機能を試すには、各プロバイダーの有料APIキーが別途必要です。CherryINゲートウェイも例外ではありません。
.agents/skillsと.claude/skillsは自動生成のgitignore管理下にあり、pnpm skills:syncを実行しないと最新のSKILL.mdが反映されません。
複数のLLMプロバイダーを1つのデスクトップアプリで切り替えたい人、あるいはVercel AI SDKベースの独自抽象化層aiCoreを設計の参考にしたい開発者に向いています。createAgentのテストやreasoningモデル変換関数のテストなど、プロバイダー差異を吸収する部分に実テストが伴っている点は、READMEの記述だけでなくソースコードからも裏付けが取れました。ただしAPIキー投入後の実際のチャット体験や、300以上あるとされるアシスタントプリセットの中身までは、与えられた材料からは確認できません。