49 Commits
Author SHA1 Message Date
linshen bfd1543110 feat: refresh built-in model catalog 2026-09-10 16:42:28 +08:00
linshen 69a636921e feat: refresh built-in provider models 2026-08-13 22:13:54 +08:00
octo-patch 87668531f5 Add MiniMax regional endpoint metadata 2026-08-12 02:40:49 +08:00
octo-patch 846fe27ed7 Correct MiniMax M2.7 capabilities 2026-08-11 17:45:05 +00:00
kapelame a6a5a17c5a Refresh MiniMax parameters 2026-08-03 14:51:02 +08:00
linshen 3126ae4530 feat(test): support image attachments in Basic/System tests (#196) 2026-07-17 23:25:52 +08:00
Octopus 74b06cea72 feat: upgrade MiniMax default model to M3 (#307)
- Add MiniMax-M3 to the model selection list and set as the new default
- Retain MiniMax-M2.7 and MiniMax-M2.7-highspeed as alternatives
- Remove deprecated MiniMax-M2.5 and MiniMax-M2.5-highspeed from the list
- Update unit tests to match the new model lineup
2026-06-02 09:53:48 +08:00
linshen 9119876b3e feat: add Xiaomi MiMo Token Plan provider 2026-05-27 21:28:37 +08:00
linshen c718d78ed4 fix(provider): pass Chrome Prompt API language options 2026-05-16 22:00:33 +08:00
linshen 4340f1bf28 feat(provider): add Chrome built-in AI support
- Register Chrome built-in AI as a local text provider with availability checks.
- Add explicit setup/download gating and auto-enable safeguards.
- Preserve structured prompt roles through initialPrompts and stream tests.
2026-05-16 11:29:46 +08:00
linshen 684a7bf4c1 feat(provider): add Grok text and image support
- Add first-class xAI/Grok text and image adapters with dynamic model fallback.
- Register defaults, env mapping, docs, locale labels, and legacy converter handling.
- Cover Grok request payloads, image defaults, registry behavior, and input image limit checks.
2026-05-15 20:43:18 +08:00
linshen 5e942ca945 feat: polish provider controls and themed UI
- Add provider pill selection and normalized provider display copy

- Adopt themed tooltips, confirmation dialogs, and Naive UI surface styles

- Enable Prompt Garden thumbnail previews through shared image preview components
2026-05-14 21:18:43 +08:00
linshen 69db225a1a feat(model): support headers and text quick switching
- Add custom request header parsing and provider metadata resolution

- Add quick switching controls for text model workspaces

- Keep model UI labels and custom header output tidy
2026-05-10 23:08:14 +08:00
linshen 4910e03d1f fix(ui): clarify minimax api endpoint guidance 2026-04-26 23:06:50 +08:00
linshen faeee9ff4c feat(core): update DeepSeek provider for v4 models 2026-04-24 22:35:32 +08:00
linshen 713143d47b feat(models): add responses request style for openai apis 2026-04-15 21:47:23 +08:00
linshen 90b957c983 feat(image): deliver multi-image generation workflow
- add multi-image request types, routing, favorites integration, and desktop bridges
- support multimodal streaming prompt optimization with ordered image inputs
- enable Seedream multi-image generation and redesign the multi-image workspace
- add coverage for routing, persistence, workspace guards, and end-to-end flows
2026-04-06 14:13:28 +08:00
linshen 24f2567c56 feat(core): add Cloudflare image and text providers
- add a Workers AI image adapter for FLUX.2 [klein] 4B generation and editing
- add a Cloudflare text adapter with dynamic model discovery and a Qwen3 default
- load Cloudflare token and account defaults from environment variables for both providers
- cover registry integration and default config wiring with unit tests

(cherry picked from commit 3ef9bdbd187ef150d331ef6b9b46f9d7ad3ef2af)
2026-03-29 19:26:38 +08:00
OctopusandPR Bot 114a80c326 feat: upgrade MiniMax default model to M2.7 (#277)
- Add MiniMax-M2.7 and MiniMax-M2.7-highspeed to model list
- Set MiniMax-M2.7 as default model (first in list)
- Keep all previous M2.5 models as alternatives
- Update related unit tests

Co-authored-by: PR Bot <pr-bot@minimaxi.com>
2026-03-18 14:36:37 +08:00
linshen aa8fe80953 test(e2e): refresh evaluation fixtures and stabilize image flows 2026-03-15 16:30:00 +08:00
ximiandClaude Opus 4.6 317afcbd67 feat(core): add MiniMax provider support (#266)
Add MiniMax as a new LLM provider with OpenAI-compatible API integration.
Includes MiniMax-M2.5 and MiniMax-M2.5-highspeed models, adapter registration,
environment variable mapping, and unit tests.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 14:52:57 +08:00
linshen 5b458ec301 fix(core): improve browser CORS for OpenAI SDK fetch 2026-02-27 21:18:37 +08:00
KanTakahiro ef2303a545 fix(core): 修复 Anthropic adapter 动态模型获取和 max_tokens 必需参数问题 (#246)
- 启用动态模型获取功能 (supportsDynamicModels: true)
- 实现 getModelsAsync 方法调用 Anthropic API
- 修复 max_tokens 必需参数问题(强制设置默认值 8192)
- 更新测试以匹配新行为
2026-02-05 14:59:57 +08:00
linshen f52b60bb37 fix(core): stop silent fallback in fetchModelList
Propagate dynamic model fetch errors so callers can handle fallback explicitly.
2026-02-04 21:28:00 +08:00
linshen 038a2d5343 feat(core): add Ollama adapters
Ollama can be deployed with proper CORS/reverse-proxy, so we avoid hard-marking it as browser-blocked and backfill legacy metadata.
2026-02-04 20:17:00 +08:00
linshen 0f33e9cf8d fix(core): allow testing disabled text models
- Allow testConnection to bypass the enabled check
- Keep sendMessage rejecting disabled models
2026-02-03 22:43:00 +08:00
linshen 81b8dcda20 fix(core): backfill provider CORS metadata
- Mark ModelScope provider as CORS-restricted
- Backfill missing providerMeta.corsRestricted on read
- Avoid eager adapter registry load unless needed
2026-02-03 21:17:00 +08:00
linshen 8467b96263 feat(test): 实现智能测试系统并改进测试策略
- 实现智能测试系统,统一测试入口
- 完成 Pro 路由重构和 Image 模式评估测试
- 为 Image 模式添加 data-testid 支持
- 完善 E2E 测试并修复选择器策略
- 优化 Seedream、OpenAI 和 SiliconFlow 适配器
- 移除调试日志,保留错误和警告日志
- 重命名 Pro 模式子模式(system/user → multi/variable)
- 清理测试代码并改进稳定性
2026-01-10 11:23:00 +08:00
linshenandClaude Sonnet 4.5 130b8fa880 feat(core): 新增 ModelScope(魔搭)API 集成支持
新增 ModelScope LLM 和图像生成服务的完整支持,包括:

LLM 适配器特性:
- 基于 OpenAI 兼容 API 实现,继承 OpenAIAdapter
- 支持动态获取模型列表(models.list() 返回 62 个模型)
- 内置 Qwen/Qwen3-Coder-480B-A35B-Instruct 静态模型
- 支持聊天和流式响应
- 每天免费 2000 次调用

图像生成适配器特性:
- 实现异步任务提交和轮询机制
- 支持文生图(text-to-image)功能
- 内置 Z-Image-Turbo 模型
- 增强的错误处理和状态管理
- 使用 resolveEndpointUrl() 确保 URL 规范化

技术改进:
- 正确处理自定义 baseURL 的 /v1 路径规范化
- 完善的轮询错误处理(SUCCEED/FAILED/ERROR/CANCELLED)
- 错误响应体解析,提供详细错误信息
- 处理未知终态,避免超时等待

测试覆盖:
- LLM 适配器单元测试(7 个测试用例)
- 图像适配器单元测试(7 个测试用例,包括真实 API 测试)
- 集成测试覆盖真实 API 调用和流式响应

配置集成:
- 环境变量支持:VITE_MODELSCOPE_API_KEY
- 自动注册到 LLM 和图像服务 registry
- 默认配置自动生成和启用

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 23:34:25 +08:00
linshen df52b32366 feat(evaluation): 重构评估响应结构,新增 patchPlan 精准修复功能
- 评估响应用 patchPlan 替代 issues,支持 insert/replace/delete 操作
- 新增 patch-plan 工具处理文本补丁应用
- 模板统一输出结构:score + improvements + patchPlan + summary
- UI 新增"立即替换"按钮,支持 diff 可视化展示
- usePromptOptimizer 新增 saveLocalEdit 保存本地编辑为新版本
- originalPrompt/testContent 改为可选,提升灵活性
2025-12-25 23:36:00 +08:00
linshen 1f1348a4b8 fix(test): 修复单元测试中的 mock 问题
- core: 修复 openai-adapter.test.ts 中 OpenAI SDK mock 方式
  - 使用工厂函数返回真正的类而非 vi.fn().mockImplementation()
  - 修复 "is not a constructor" 错误

- ui: 修复 setup.ts 中 Observer mock 问题
  - ResizeObserver、IntersectionObserver、MutationObserver 使用真正的类实现
  - 解决 vueuc 和 CodeMirror 在模块顶层实例化 Observer 时的构造函数错误

- ui: 简化 codemirror-extensions.spec.ts 测试
  - 移除需要完整 DOM 环境的过度测试(EditorView 实例化测试)
  - 保留工厂函数的单元测试,避免测试第三方库行为
2025-12-07 20:49:42 +08:00
linshen 1f1f6bcc1d feat(core): 新增 OpenRouter 文本模型适配器
- 创建 OpenRouterAdapter 继承 OpenAIAdapter
- 默认模型为 qwen/qwen3-235b-a22b:free
- 预置三个免费模型:Qwen3、Gemini 2.0 Flash、DeepSeek Chat V3
- 在 PROVIDER_ENV_KEYS 中添加 openrouter 配置
- 更新测试预期 Provider 数量
2025-12-06 17:04:56 +08:00
linshen 006565c599 refactor(core): 实现统一参数架构并修复运行时参数丢失问题
## 核心变更

### 🔧 关键Bug修复
- 修复LLM/Image服务运行时自定义参数丢失问题
- prepareRuntimeConfig()现在支持customParamOverrides向后兼容
- 确保用户配置的自定义API头、私有开关等参数不会在运行时丢失

### 🏗️ 统一参数架构
- 新增parameter-schema.ts: 统一参数定义与安全验证
- 新增parameter-utils.ts: 参数合并、验证、拆分工具
- 实现优先级参数合并: requestOverrides > customOverrides > builtInOverrides > defaults
- 安全过滤危险参数键(__proto__, apiKey, secret等)

### 📦 服务层改进
- llm/service.ts: 添加prepareRuntimeConfig()方法支持参数迁移
- image/service.ts: 同步实现参数迁移逻辑
- model/manager.ts: 添加读时迁移和弃用警告
- 所有Adapter统一使用UnifiedParameterDefinition

### 🎨 UI组件更新
- 新增ModelParameterEditor.vue: 统一参数编辑器
- 新增ModelAdvancedSection.vue: 高级参数折叠面板
- 简化TextModelEditModal和ImageModelEditModal逻辑
- 支持类型安全的参数编辑(number, boolean, string, select等)

### ✅ 测试覆盖
- 新增parameter-schema.test.ts: 参数定义验证测试
- 新增parameter-utils.test.ts: 参数工具函数测试
- 新增custom-params-migration.test.ts: 参数迁移全流程测试
- 修复anthropic-adapter和gemini-adapter测试以匹配新架构
- 所有582个测试通过(100%通过率)

## 向后兼容性
- 完全兼容旧格式配置(customParamOverrides独立字段)
- 读时自动迁移,写时清理已弃用字段
- 保留customParamOverrides以防版本回退

## 破坏性变更
- 无(完全向后兼容)

## 文档更新
- advancedParameterDefinitions.ts添加弃用说明
- 标注v3.0弃用,v4.0移除计划
2025-10-12 22:26:58 +08:00
linshen f4c24aaa03 refactor(core): 优化 Gemini adapter 与测试架构
主要改进:
- 优化 Gemini adapter 文本提取逻辑,优先使用 SDK response.text 属性
- 正确处理 Gemini 2.5+ 思考内容(thought)与普通文本的区分
- thinkingBudget 最小值改为 0,允许禁用思考功能
- 增强 PromptService 错误处理,验证失败时正确触发 onError 回调
- 重构集成测试,引入 createTestConfig 辅助函数消除硬编码
- 迁移 Anthropic adapter 测试到官方 SDK mock
- 添加测试间速率限制保护机制

测试结果:
- 565/566 测试通过 (99.8%)
- 类型检查全部通过
- 代码量净减少 27 行
2025-10-09 22:23:31 +08:00
linshen 31cd6d0ac4 feat(core): 升级 Gemini SDK 到 @google/genai 并支持新特性
- 迁移到统一的 @google/genai SDK
- 支持动态模型列表获取
- 新增思考功能参数(thinkingBudget、includeThoughts)
- 实现工具调用支持
- 简化消息处理逻辑
- 添加完整的集成测试套件
2025-10-08 16:56:31 +08:00
linshen c779b66203 refactor(core): 移除流式支持标识并修复TypeScript类型错误
- 移除TextModel接口中的supportsStreaming属性,简化模型能力定义
- 重构OpenAI适配器,简化模型配置和连接验证逻辑
- 修复useTextModelManager.ts中的TypeScript类型安全问题
- 更新所有相关测试文件,移除supportsStreaming相关断言
- 统一测试代码格式,确保编译通过

BREAKING CHANGE: 移除了supportsStreaming能力标识,所有模型默认支持流式响应
2025-10-07 23:56:00 +08:00
linshen 5de5614664 refactor(core): 重构LLM服务为Adapter模式架构
重大架构升级:
- 引入Adapter模式,实现Provider解耦
- 新增7个Provider适配器(OpenAI、Gemini、Anthropic等)
- 精简LLMService从2000+行到300+行
- 引入TextModelConfig新类型系统,支持向后兼容
- 完善类型定义和测试覆盖

架构改进:
- 抽象基类AbstractTextProviderAdapter提供模板方法
- TextAdapterRegistry统一管理所有适配器
- 支持动态模型获取(OpenAI兼容API)
- 提供配置转换器实现平滑升级

新增文件:
- packages/core/src/services/llm/adapters/ (8个文件)
- packages/core/src/services/model/converter.ts
- packages/core/src/services/model/text-model-defaults.ts
- docs/architecture/llm-refactor.md
- 9个新增测试文件

修改文件:
- packages/core/src/services/llm/service.ts
- packages/core/src/services/model/types.ts
- packages/core/src/index.ts
- 31个测试文件更新
- UI组件和composables适配新类型

BREAKING CHANGE: 模型配置结构从ModelConfig升级为TextModelConfig
(已提供converter.ts确保向后兼容和自动转换)

测试结果:
✅ TypeScript类型检查通过 (core + ui)
✅ 563个测试通过,90个跳过
✅ Core包构建成功
2025-10-04 01:01:08 +08:00
linshen ba63eff9ad feat: 重构图像模型管理架构并优化用户界面
## 核心改进

### 🏗️ 架构重构
- 实现ImageModelManager组件分离设计,关注点明确分离
- 重构ModelManager.vue为统一模型管理入口,支持文本/图像双模式
- 采用组件复用和扩展性设计,易于添加新模型类型

### 🎨 界面优化
- 摒弃5步导航式编辑,改为一体化界面设计
- 优化ImageModelEditModal为单页滚动布局,提升操作效率
- 统一文本和图像模型管理的交互体验和视觉风格

### 🔌 适配器扩展
- 新增OpenRouter和SiliconFlow图像适配器支持
- 完善AbstractImageProviderAdapter抽象基类设计
- 优化适配器注册表和动态模型发现机制

### 💻 类型系统
- 完善ImageModelConfig和相关类型定义
- 增强TypeScript类型安全和智能提示
- 优化服务层接口设计和依赖注入架构

### 🧪 测试覆盖
- 新增图像适配器单元测试和集成测试
- 添加E2E验收测试保证功能完整性
- 增强连接测试和参数验证测试覆盖

### 📚 文档完善
- 新增图像模型管理架构设计文档
- 添加一体化界面改进方案文档
- 更新项目结构和开发指南

## 技术特点

- **SOLID原则**:清晰的单一职责和开闭扩展设计
- **组合模式**:ImageModelManager + ModelManager.vue 组合架构
- **响应式设计**:基于Vue 3 Composition API的状态管理
- **依赖注入**:松耦合的服务架构和组件通信

这次重构显著提升了图像模型管理的用户体验和代码可维护性,
为后续音频、视频等多模态功能扩展奠定了坚实基础。
2025-09-21 20:17:03 +08:00
linshen 4f38852971 feat: 完整实现工具调用功能并修复测试环境问题
## 🎯 核心功能
- **LLM服务工具调用**: 支持OpenAI和Gemini的完整工具调用流程
- **UI工具管理**: ContextEditor工具管理面板,内置天气工具模板
- **工具同步机制**: 优化和测试阶段的工具信息双向同步
- **工具上下文注入**: 优化模板支持工具信息注入,提升优化质量

## 🔧 技术实现
- **统一工具调用接口**: ToolCall、ToolDefinition类型定义
- **Gemini工具调用适配**: 格式转换和流式处理支持
- **工具统计显示**: ConversationManager显示工具数量和名称
- **模板处理增强**: formatToolsAsText方法支持工具上下文

## 🧪 测试和修复
- **单元测试**: 工具调用核心功能测试覆盖
- **集成测试**: Gemini和OpenAI真实API工具调用验证
- **测试环境修复**: 修复Clipboard API mock,解决UI测试错误
- **全局测试设置**: 统一浏览器API mock管理

## 📊 代码统计
- 新增文件: 19个(包括测试和文档)
- 修改文件: 13个
- 新增代码: 876行,删除: 62行
2025-08-23 21:27:59 +08:00
linshen cd533e834d feat(core): 允许 API key 为空以支持特定服务
- 移除了对 API key 的强制性验证
- 更新了错误消息,强调 API URL 的重要性- 调整了测试用例以适应新的 API key策略
- 更新了 UI组件和国际化文案,明确 API key 为可选字段
2025-07-18 00:15:08 +08:00
linshen 2f4d7429ef feat: 更新文档与组件,引入应用初始化器与服务依赖注入,完成Vue Composable架构重构
- 更新 `composables-refactor-plan.md` 与 `experience.md`,记录重构成果、问题与后续计划,强调顶层声明和响应式连接。引入 `useAppInitializer`,及其对架构统一和代码复用的贡献。
- 更新多个组件与Composable文件,使其通过 `inject` 获取服务实例引用,解决了`ref` 迁移到 `reactive` 和异步回调中调用Composable函数导致的错误,优化了模板管理器的使用方式,并移除对服务单例的直接依赖。
- 修复 `templateLanguageService` 依赖注入失败的 bug,更新组件导出和模板管理器,优化代码结构与可读性。
- 将背景与目标修改为当前状态与问题,明确上层应用尚未适配底层重构的现状,并记录Web应用和浏览器插件启动失败问题,提出后续修复步骤。更新实施计划,强调对齐上层应用与底层服务架构的必要性。
2025-06-28 19:43:11 +08:00
linshen 31b807ba0b feat: 重构核心服务以支持Electron环境,并增强历史管理器功能
- 核心服务:
    - 移除单例导出,引入工厂函数模式以提升灵活性和可测试性。
    - 显式接收依赖并处理重构中的依赖问题,更新文档以反映新的服务创建方式和依赖注入策略。
    - 添加相应的代理和管理器工厂函数,优化服务初始化逻辑,确保在Electron环境下的配置同步。
- 历史管理器:引入 `IModelManager` 支持模型管理,修改构造函数并恢复模型名称获取逻辑。
- 构建配置:
    - 更新 `.gitignore` 文件,添加桌面应用相关构建和分发文件的忽略规则。
    - 在 `package.json` 中新增桌面应用构建和开发命令。
    - 更新 `pnpm-lock.yaml` 以包含新依赖。
- 重构计划文档:移除循环依赖描述,增加重构反思与后续决策,优化 `ensureInitialized()` 调用,修正错误处理行为并提升测试代码严谨性。
2025-06-28 11:21:33 +08:00
linshen bfd36b7176 feat(tests): 为Gemini API测试添加延迟处理以避免频率限制
- 在Gemini API集成测试中,添加了每个测试之间的延迟,以防止频率限制导致的失败。
- 更新了LLM参数测试,增加了延迟处理,确保测试稳定性。
- 修改OutputDisplay组件的测试,使用data-testid属性来查找工具栏元素,提升测试的准确性。
2025-06-25 22:34:51 +08:00
linshen 2e9dfd20c7 feat(LLMService): 重构消息发送逻辑,支持结构化响应与think标签处理
- 更新 `LLMService` 类,新增结构化消息发送方法,返回包含推理内容的响应
- 增强错误处理,确保API调用失败时提供友好的错误提示
- 实现流式处理中的think标签支持,优化推理内容与正文的分离
- 更新相关接口与类型定义,确保兼容性与可读性
- 添加新的单元测试与集成测试,验证结构化响应与think标签处理的正确性
- 更新文档,说明新的API使用方式与最佳实践
2025-06-23 21:54:34 +08:00
linshen ebf4d2730b feat(prompt): 增强提示词服务以支持用户和系统提示词优化
- 新增提示词类型选择功能,允许用户选择优化模式(系统或用户)
- 更新优化提示词接口,支持传入优化请求对象
- 修改相关模板管理和测试用例,以适应新的提示词类型
- 增强国际化支持,更新相关语言文件以反映新功能
2025-06-18 22:25:02 +08:00
linshen 688bb2e2bf feat(core): 添加高级LLM参数配置功能
- 在模型配置中引入 `llmParams` 字段,允许用户为每个模型单独设置高级LLM参数
- 更新文档,详细说明 `llmParams` 的使用方法及示例
- 在模型管理器中实现对 `llmParams` 的验证和处理逻辑
- 增强 LLMService 以支持从 `llmParams` 中提取参数,优化模型行为控制
- 更新 UI 组件以支持高级参数的配置和展示,提升用户体验
2025-06-07 16:30:39 +08:00
linshen a2173548d7 feat(core): 重构数据管理器并添加 UI 配置导入导出功能
- 重构了 DataManager 类,增加了 UI 配置导入导出功能
- 优化了数据导入流程,能够处理部分数据导入失败的情况
- 添加了对 UI 配置数据的导入导出支持
- 重构了部分错误处理逻辑,提高了代码的健壮性
2025-05-26 22:48:01 +08:00
linshen 22638cbde0 refactor: Migrate from LangChain to native SDKs for LLM services
- Replace LangChain dependencies with native OpenAI and Google Generative AI SDKs
- Rewrite LLMService to use direct API calls for OpenAI and Gemini
- Update core package dependencies to remove LangChain-related packages
- Modify message handling and streaming logic to work with new SDK implementations
- Simplify model configuration and instance management
- Update integration and unit tests to support new SDK approach
- Remove LangChain-specific message conversion and streaming methods
2025-02-23 09:12:00 +08:00
linshen 4d88c3093d refactor: Consolidate and clean up test files across core and web packages
- Remove redundant integration and unit test files from web package
- Update import paths in remaining test files to use local source
- Remove console logs and unnecessary comments in test files
- Simplify test structure and remove duplicate test scenarios
- Add dotenv dependency to core package for environment variable support
2025-02-22 16:02:52 +08:00