mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-07-03 12:27:41 +08:00
Continued from #12227 ## Summary Phase 3 of AI SDK v6 migration: - **Image generation**: Migrate to native AI SDK `generateImage`/`editImage`, remove legacy image middleware - **Embedding**: Migrate to AI SDK `embedMany`, remove legacy embedding clients - **Model listing**: Refactor `ModelListService` to Strategy Registry pattern (`listModels.ts`), consolidate 7 schema files into one `schemas.ts` - **OpenRouter image**: Bump `@openrouter/ai-sdk-provider` to 2.3.3 with native image endpoint support, remove `isNativeImageGenerationProvider` guard - **GitHub Copilot**: Simplify extension by removing `ProviderV2` cast and `wrapProvider` - **Legacy removal**: Delete all legacy API clients, middleware pipeline, and barrel `index.ts` - **Rename**: `index_new.ts` → `AiProvider.ts`, `ModelListService.ts` → `listModels.ts` ## Manual Test Plan ### P0 — Core paths + PR change focus #### 1. Core Chat - [ ] OpenAI model (e.g. GPT-4o): send text, verify streaming output - [ ] Anthropic model (e.g. Claude Sonnet): verify chat works - [ ] Gemini model: verify chat works - [ ] DeepSeek model: verify chat works - [ ] Reasoning mode (o3-mini, DeepSeek R1): verify thinking process displays - [ ] Send message with image (multimodal): verify model recognizes image - [ ] Abort mid-stream: verify clean termination, no errors #### 2. Image Generation (key change area) - [ ] DALL-E 3 / GPT-Image-1: verify image generation works - [ ] OpenRouter image model: verify **native image endpoint** is used (no longer chat completions) - [ ] Image editing: upload image + text prompt, verify editImage path - [ ] Verify generated images display correctly (both base64 and URL formats) #### 3. Model Listing (refactored area) - [ ] Sync OpenAI models: verify names and groups - [ ] Sync Gemini models: verify `models/` prefix stripped - [ ] Sync Ollama models (local): verify display - [ ] Sync OpenRouter models: verify chat + embedding models both appear - [ ] Sync SiliconFlow models: verify grouping (e.g. `deepseek-ai/`) - [ ] Sync GitHub Models - [ ] Sync Together models - [ ] Sync NewAPI service (e.g. CherryIn) - [ ] Sync PPIO models: verify chat + embedding + reranker endpoints merged ### P1 — Affected by refactor #### 4. Provider Extensions - [ ] GitHub Copilot: verify chat works (simplified wrapProvider logic) - [ ] Ollama: verify chat works - [ ] Vertex AI / Bedrock: verify chat works (if configured) #### 5. MCP Tool Calling - [ ] Enable MCP server, send tool-requiring message, verify tool execution - [ ] Verify both prompt tool use and function calling modes #### 6. Auxiliary Functions - [ ] Auto topic title generation (fetchMessagesSummary) - [ ] Note summary (fetchNoteSummary) - [ ] Translation/generation (fetchGenerate) - [ ] API check (click "Check" button in settings) ### P2 — Indirect impact #### 7. Knowledge Base - [ ] Create knowledge base, associate with assistant, verify RAG retrieval and embedding #### 8. Web Search - [ ] Enable native web search (Gemini/Perplexity), verify search results in response #### 9. Tracing - [ ] Enable developer mode, send message, verify trace spans recorded and displayed --------- Signed-off-by: suyao <sy20010504@gmail.com> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> Co-authored-by: icarus <eurfelux@gmail.com> Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com>
40 lines
1.5 KiB
JSON
40 lines
1.5 KiB
JSON
{
|
|
"extends": "@electron-toolkit/tsconfig/tsconfig.web.json",
|
|
"include": [
|
|
"local/src/renderer/**/*",
|
|
"src/renderer/src/**/*",
|
|
"src/main/integration/cherryai/index.js",
|
|
"src/preload/*.d.ts",
|
|
"tests/__mocks__/**/*",
|
|
"packages/aiCore/src/**/*",
|
|
"packages/ai-sdk-provider/**/*",
|
|
"packages/extension-table-plus/**/*",
|
|
"packages/mcp-trace/**/*",
|
|
"packages/shared/**/*"
|
|
],
|
|
"exclude": ["packages/aiCore/src/**/__tests__/**"],
|
|
"compilerOptions": {
|
|
"composite": true,
|
|
"incremental": true,
|
|
"tsBuildInfoFile": ".tsbuildinfo/tsconfig.web.tsbuildinfo",
|
|
"jsx": "react-jsx",
|
|
"moduleResolution": "bundler",
|
|
"paths": {
|
|
"@logger": ["./src/renderer/src/services/LoggerService"],
|
|
"@renderer/*": ["./src/renderer/src/*"],
|
|
"@shared/*": ["./packages/shared/*"],
|
|
"@types": ["./src/renderer/src/types/index.ts"],
|
|
"@mcp-trace/*": ["./packages/mcp-trace/*"],
|
|
"@cherrystudio/ai-core/provider": ["./packages/aiCore/src/core/providers/index.ts"],
|
|
"@cherrystudio/ai-core/built-in/plugins": ["./packages/aiCore/src/core/plugins/built-in/index.ts"],
|
|
"@cherrystudio/ai-core/*": ["./packages/aiCore/src/*"],
|
|
"@cherrystudio/ai-core": ["./packages/aiCore/src/index.ts"],
|
|
"@cherrystudio/extension-table-plus": ["./packages/extension-table-plus/src/index.ts"],
|
|
"@cherrystudio/ai-sdk-provider": ["./packages/ai-sdk-provider/src/index.ts"]
|
|
},
|
|
"experimentalDecorators": true,
|
|
"emitDecoratorMetadata": true,
|
|
"useDefineForClassFields": true
|
|
}
|
|
}
|