Skip to content

Conversation

@hardy-one
Copy link
Contributor

@hardy-one hardy-one commented Jan 8, 2026

💻 Change Type

  • ✨ feat
  • 🐛 fix
  • ♻️ refactor
  • 💄 style
  • 👷 build
  • ⚡️ perf
  • ✅ test
  • 📝 docs
  • 🔨 chore

🔗 Related Issue

Fixes #11296 Fixes #11271

🔀 Description of Change

修复自定义 AI Provider 无法使用服务端 API 的问题。

问题原因:
客户端使用 sdkType(如 'azure'、'openai')构建 API 端点路径,但服务端使用该路径作为 provider ID 从数据库查询配置。这导致服务端查询了内置 provider 的配置,而不是用户自定义 provider 的配置。

修复方案:
将 API 端点路径从使用 sdkType 改为使用原始的 provider 标识。这确保服务端能正确查询用户配置,然后从配置中读取 sdkType 来初始化相应的运行时。

修改文件:
src/services/chat/index.ts:聊天 API 端点使用 provider
src/services/models.ts:模型列表和模型拉取 API 端点使用 provider

为什么客户端模式之前能正常工作:
客户端模式不走服务器 API,而是直接在浏览器中通过 createPayloadWithKeyVaults(provider) 从 store 读取配置(使用原始 provider),然后使用 ModelRuntime.initializeWithProvider(runtimeProvider, ...) 选择 SDK(使用 sdkType)。两个参数职责清晰分离,不存在路径混淆问题。

🧪 How to Test

  • Tested locally
  • Added/updated tests
  • No tests needed

📸 Screenshots / Videos

Before After
... ...

📝 Additional Information

Summary by Sourcery

Ensure server-side AI API requests use the correct provider identifier for routing and configuration lookup.

Bug Fixes:

  • Fix server-side chat streaming endpoint to address custom AI providers being unable to use their configured APIs.
  • Fix model listing and model pull endpoints so custom AI providers resolve against the correct provider configuration instead of the SDK type.

@vercel
Copy link

vercel bot commented Jan 8, 2026

@hardy-one is attempting to deploy a commit to the LobeHub OSS Team on Vercel.

A member of the Team first needs to authorize it.

@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Jan 8, 2026
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Jan 8, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Updates client-side chat and model service API calls to use the original provider identifier in endpoint paths instead of the runtime SDK type, so that server-side lookups fetch the correct custom provider configuration.

Sequence diagram for server chat request using provider instead of sdkType

sequenceDiagram
    actor User
    participant ChatUI
    participant ChatService
    participant API_ENDPOINTS
    participant Server
    participant ProviderConfigStore
    participant ModelRuntime

    User->>ChatUI: submitMessage(provider, sdkType, message)
    ChatUI->>ChatService: sendChat(provider, sdkType, payload)

    ChatService->>API_ENDPOINTS: chat(provider)
    API_ENDPOINTS-->>ChatService: /api/chat/{provider}

    ChatService->>Server: POST /api/chat/{provider} payload
    Server->>ProviderConfigStore: getConfig(provider)
    ProviderConfigStore-->>Server: ProviderConfig(sdkType, credentials,...)

    Server->>ModelRuntime: initializeWithProvider(ProviderConfig)
    ModelRuntime-->>Server: runtimeInstance

    Server->>ModelRuntime: sendMessage(payload)
    ModelRuntime-->>Server: streamingResponse
    Server-->>ChatService: SSE stream
    ChatService-->>ChatUI: deliverStream
    ChatUI-->>User: renderAssistantMessages
Loading

Sequence diagram for model list and pull using provider identifier

sequenceDiagram
    actor User
    participant ModelsUI
    participant ModelsService
    participant API_ENDPOINTS
    participant Server
    participant ProviderConfigStore
    participant ModelRuntime

    User->>ModelsUI: viewModels(provider, sdkType)
    ModelsUI->>ModelsService: listModels(provider, runtimeProvider, headers)

    alt useAgentRuntime
        ModelsService->>ModelRuntime: models()
        ModelRuntime-->>ModelsService: modelsList
    else useServerAPI
        ModelsService->>API_ENDPOINTS: models(provider)
        API_ENDPOINTS-->>ModelsService: /api/models/{provider}
        ModelsService->>Server: GET /api/models/{provider}
        Server->>ProviderConfigStore: getConfig(provider)
        ProviderConfigStore-->>Server: ProviderConfig(sdkType,...)
        Server->>ModelRuntime: initializeWithProvider(ProviderConfig)
        ModelRuntime-->>Server: modelsList
        Server-->>ModelsService: modelsList
    end

    ModelsService-->>ModelsUI: modelsList
    ModelsUI-->>User: showModels

    User->>ModelsUI: pullModel(provider, model)
    ModelsUI->>ModelsService: pullModel(provider, runtimeProvider, model, headers)

    alt useAgentRuntime
        ModelsService->>ModelRuntime: pullModel(model)
        ModelRuntime-->>ModelsService: pullResult
    else useServerAPI
        ModelsService->>API_ENDPOINTS: modelPull(provider)
        API_ENDPOINTS-->>ModelsService: /api/models/{provider}/pull
        ModelsService->>Server: POST /api/models/{provider}/pull { model }
        Server->>ProviderConfigStore: getConfig(provider)
        ProviderConfigStore-->>Server: ProviderConfig(sdkType,...)
        Server->>ModelRuntime: initializeWithProvider(ProviderConfig)
        ModelRuntime-->>Server: runtimeInstance
        Server->>ModelRuntime: pullModel(model)
        ModelRuntime-->>Server: pullResult
        Server-->>ModelsService: pullResult
    end

    ModelsService-->>ModelsUI: pullResult
    ModelsUI-->>User: showPullStatus
Loading

Updated class diagram for chat and model services provider handling

classDiagram
    class ChatService {
      +sendChat(provider, sdkType, payload, headers)
      +buildAnimations(responseAnimation)
    }

    class ModelsService {
      +listModels(provider, runtimeProvider, headers)
      +pullModel(provider, runtimeProvider, model, headers, signal)
    }

    class API_ENDPOINTS {
      +chat(provider)
      +models(provider)
      +modelPull(provider)
    }

    class ProviderConfigStore {
      +getConfig(provider)
    }

    class ProviderConfig {
      +provider
      +sdkType
      +credentials
      +settings
    }

    class ModelRuntime {
      +initializeWithProvider(providerConfig)
      +models()
      +pullModel(model)
      +sendMessage(payload)
    }

    ChatService --> API_ENDPOINTS : uses
    ChatService --> ModelRuntime : consumes via server

    ModelsService --> API_ENDPOINTS : uses
    ModelsService --> ModelRuntime : uses

    ProviderConfigStore --> ProviderConfig : returns
    ModelRuntime ..> ProviderConfig : depends on

    API_ENDPOINTS ..> ProviderConfig : keyed by provider
    ChatService ..> ProviderConfigStore : via server lookup
    ModelsService ..> ProviderConfigStore : via server lookup
Loading

File-Level Changes

Change Details Files
Use original provider ID instead of sdkType/runtimeProvider when constructing server API endpoints for chat and model operations.
  • Change chat SSE request to call API_ENDPOINTS.chat with provider rather than sdkType so server uses provider ID for configuration lookup.
  • Change model list fetch to call API_ENDPOINTS.models with provider instead of runtimeProvider to align with server expectations.
  • Change model pull request to call API_ENDPOINTS.modelPull with provider instead of runtimeProvider so custom providers hit their own endpoints.
src/services/chat/index.ts
src/services/models.ts

Assessment against linked issues

Issue Objective Addressed Explanation
#11271 Ensure that custom/self-hosted AI providers configured with an OpenAI-compatible format can correctly fetch the model list from the server API instead of failing or showing an incorrect default list.
#11271 Ensure that chat/completion requests for custom AI providers (e.g., OpenAI-format, newapi with upstream octopus/gemini) are routed using the custom provider identifier rather than the sdkType, so they hit the correct backend configuration.
#11296 Ensure that when using backend/server requests, chat and related AI requests are routed to the configured custom AI service provider instead of always going to the default OpenAI provider.

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@gru-agent
Copy link
Contributor

gru-agent bot commented Jan 8, 2026

TestGru Assignment

Summary

Link CommitId Status Reason
Detail 7e8ab3c 🚫 Skipped No files need to be tested {"src/services/chat/index.ts":"Can not find valuable test target.\nChatService: Out of scope - The exported class ChatService only exposes methods as class properties, and the file exports an instance (chatService). Since the class contains only methods and no standalone exported functions, and its logic is highly coupled with multiple modules, external depende…","src/services/models.ts":"Can not find valuable test target.\nModelsService: Out of scope - The exported class ModelsService is primarily a service layer that handles fetching, downloading, and aborting model operations, including network requests and streaming responses. Its methods involve side effects, external dependencies, and process orchestration, mak…"}

History Assignment

Tip

You can @gru-agent and leave your feedback. TestGru will make adjustments based on your input

@dosubot dosubot bot added the Model Provider Model provider related label Jan 8, 2026
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • Given the subtle distinction between provider, runtimeProvider, and sdkType, consider tightening the types or renaming parameters in API_ENDPOINTS and call sites so it’s harder to accidentally pass the wrong identifier in the future.
  • It may be helpful to add a small helper (e.g. getProviderEndpointId(provider) or similar) to centralize the mapping logic and avoid repeating the raw provider vs sdkType choice across multiple services.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- Given the subtle distinction between `provider`, `runtimeProvider`, and `sdkType`, consider tightening the types or renaming parameters in `API_ENDPOINTS` and call sites so it’s harder to accidentally pass the wrong identifier in the future.
- It may be helpful to add a small helper (e.g. `getProviderEndpointId(provider)` or similar) to centralize the mapping logic and avoid repeating the raw `provider` vs `sdkType` choice across multiple services.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@hardy-one hardy-one closed this Jan 8, 2026
@hardy-one hardy-one reopened this Jan 8, 2026
@hardy-one hardy-one closed this Jan 8, 2026
@hardy-one hardy-one reopened this Jan 8, 2026
@codecov
Copy link

codecov bot commented Jan 8, 2026

Codecov Report

❌ Patch coverage is 66.66667% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 76.40%. Comparing base (c0d165e) to head (5f172b7).
⚠️ Report is 4 commits behind head on next.

Additional details and impacted files
@@            Coverage Diff            @@
##             next   #11335     +/-   ##
=========================================
  Coverage   76.40%   76.40%             
=========================================
  Files        1134     1134             
  Lines       87549    87549             
  Branches    11796    10275   -1521     
=========================================
  Hits        66892    66892             
  Misses      20581    20581             
  Partials       76       76             
Flag Coverage Δ
app 70.18% <66.66%> (ø)
database 94.08% <ø> (ø)
packages/agent-runtime 89.08% <ø> (ø)
packages/context-engine 83.19% <ø> (ø)
packages/conversation-flow 92.41% <ø> (ø)
packages/file-loaders 88.66% <ø> (ø)
packages/memory-user-memory 70.29% <ø> (ø)
packages/model-bank 100.00% <ø> (ø)
packages/model-runtime 86.88% <ø> (ø)
packages/prompts 76.00% <ø> (ø)
packages/python-interpreter 92.90% <ø> (ø)
packages/ssrf-safe-fetch 0.00% <ø> (ø)
packages/utils 92.88% <ø> (ø)
packages/web-crawler 95.62% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
Store 68.52% <ø> (ø)
Services 54.01% <66.66%> (ø)
Server 73.63% <ø> (ø)
Libs 41.53% <ø> (ø)
Utils 94.40% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@arvinxx arvinxx changed the title 🐛 fix(api): 修复自定义 AI Provider 无法使用自定义 API 的问题 🐛 fix(api): Fix the issue where custom AI Providers cannot use custom APIs Jan 8, 2026
@arvinxx arvinxx force-pushed the fix/custom-provider-api-endpoint branch from 3fdeb9a to b0c318e Compare January 8, 2026 08:53
@vercel
Copy link

vercel bot commented Jan 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
lobehub Ready Ready Preview, Comment Jan 8, 2026 1:40pm

hardy-one and others added 2 commits January 9, 2026 00:00
Fixed custom AI Provider functionality by correcting API endpoint construction.
Previously used sdkType/runtimeProvider (e.g., 'azure', 'openai') as the API path,
causing server to query wrong provider configuration from database.

Now correctly uses the original provider identifier, allowing custom providers
to work with server-side APIs.

Changes:
- chat/index.ts: use provider for chat API endpoint
- models.ts: use provider for models and modelPull API endpoints

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

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
@tjx666 tjx666 force-pushed the fix/custom-provider-api-endpoint branch from dc114f3 to 5f172b7 Compare January 8, 2026 16:00
@arvinxx arvinxx merged commit 2c666b8 into lobehub:next Jan 8, 2026
22 of 23 checks passed
@lobehubbot
Copy link
Member

❤️ Great PR @hardy-one ❤️

The growth of project is inseparable from user feedback and contribution, thanks for your contribution! If you are interesting with the lobehub developer community, please join our discord and then dm @arvinxx or @canisminor1990. They will invite you to our private developer channel. We are talking about the lobe-chat development or sharing ai newsletter around the world.

lobehubbot pushed a commit that referenced this pull request Jan 8, 2026
## [Version&nbsp;2.0.0-next.244](v2.0.0-next.243...v2.0.0-next.244)
<sup>Released on **2026-01-08**</sup>

#### 🐛 Bug Fixes

- **api**: Fix the issue where custom AI Providers cannot use custom APIs.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### What's fixed

* **api**: Fix the issue where custom AI Providers cannot use custom APIs, closes [#11335](#11335) ([2c666b8](2c666b8))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
@lobehubbot
Copy link
Member

🎉 This PR is included in version 2.0.0-next.244 🎉

The release is available on:

Your semantic-release bot 📦🚀

JamieStivala pushed a commit to jaworldwideorg/OneJA-Bot that referenced this pull request Jan 16, 2026
## [Version&nbsp;1.151.0](v1.150.0...v1.151.0)
<sup>Released on **2026-01-16**</sup>

#### ♻ Code Refactoring

- **agentGroup**: Simplify LobeChatGroupChatConfig schema.
- **database**: Renamed to userMemories/index.ts.
- **desktop**: Unify TITLE_BAR_HEIGHT constant to desktop-bridge.
- **misc**: Improve Tools popover component structure and fix UI consistency, migrate Next.js navigation APIs to React Router for SPA, refactor page and notebook document usage, remove the old lobehub plugins, rename chat folder to agent, use fallbackData to prevent useActionSWR auto-fetch.

#### ✨ Features

- **community**: Recommendation for agent & Discover tab, recommended for home & added discover tab, support to report for agent & mcp plugin interaction for recommendation.
- **conversation**: Use native context menu when selection is within current ChatItem.
- **desktop**: Add desktop release service and API endpoint, add local update testing scripts and stable channel API version check, implement history navigation stack, improve macOS permission requests and Full Disk Access detection.
- **electron**: Add custom titlebar for Electron windows.
- **share**: Add topic sharing functionality.
- **userMemories**: Support to assign for extra headers when invoking upstash workflows, support to use customized Qstash client with extra header for workflows.
- **misc**: Add the agent cron job, generate `agent_cron_jobs` in agents, improve baseline alignment for tool items, improve group profile builder, improve group prompt context engine and fix group supervisor response issue, improve PageEditor header UX with DropdownMenu and i18n support, update model definitions and sync i18n, update the agent profiles tools check & agentbuilder tools & publish to market button, update the community user layout action button, update the cron job visiual way, update the cron patterns fields values.

#### 🐛 Bug Fixes

- **@upstash/qstash**: Should properly extract Error message from thrown one.
- **api**: Fix the issue where custom AI Providers cannot use custom APIs.
- **ChatInput**: Add missing MaxTokens setting to params popover.
- **chat**: Reset activeTopicId when switching agent/group.
- **controls**: Update checkbox toggle behavior and pass value to ParamControlWrapper.
- **database**: Remove content validation limits for agent cron jobs.
- **desktop**: Prevent duplicate CORS headers in response, return OFFICIAL_URL in cloud mode for remoteServerUrl selector, update macOS beta icon size for macOS 26.
- **InputEditor**: Ensure lexical placeholder reactively updates on locale change.
- **mcp**: Fix installation check hanging issue in desktop app.
- **settings**: Add instant UI feedback for provider config switches.
- **misc**: Click lobe ai topic trigger create new agent, fix auto add group member crash, fix duplicate agent and group, fix group ux and memory retriever, fix internal editor onTextChange issue and add test case, fix memory search context, fix new topic flick issue, fix page content mismatch when switch quickly, fix thread portal not open correctly, Fix Windows desktop build error with macOS native module, force plain text paste in ChatInput editor, handle will-prevent-unload event to allow app quit, prevent auto navigation to profile when clicking topic, refresh sidebar after sendAsGroup and add E2E tests, slove the settings/profile change but not refresh the profiles.

#### 💄 Styles

- **desktop**: Update macOS beta icon assets.
- **misc**: Add MiniMax-M2.1 and GLM-4.7 for Qiniu provider, fix UI issues with tooltip wrapping and dropdown type, force gpt-5.2 use response api, improve agent loading state, improve cron jobs style, improve todo list, modelParse support to get model settings params & Customize extendParams UI, remember page agent panel width, update i18n, update i18n, update readFile content.

<br/>

<details>
<summary><kbd>Improvements and Fixes</kbd></summary>

#### Code refactoring

* **agentGroup**: Simplify LobeChatGroupChatConfig schema, closes [lobehub#11431](https://github.com/jaworldwideorg/OneJA-Bot/issues/11431) ([a8c6b2c](a8c6b2c))
* **database**: Renamed to userMemories/index.ts, closes [lobehub#11359](https://github.com/jaworldwideorg/OneJA-Bot/issues/11359) ([9dae5ff](9dae5ff))
* **desktop**: Unify TITLE_BAR_HEIGHT constant to desktop-bridge, closes [lobehub#11496](https://github.com/jaworldwideorg/OneJA-Bot/issues/11496) ([e7739e5](e7739e5))
* **misc**: Improve Tools popover component structure and fix UI consistency, closes [lobehub#11356](https://github.com/jaworldwideorg/OneJA-Bot/issues/11356) ([f46837a](f46837a))
* **misc**: Migrate Next.js navigation APIs to React Router for SPA, closes [lobehub#11394](https://github.com/jaworldwideorg/OneJA-Bot/issues/11394) ([2253d46](2253d46))
* **misc**: Refactor page and notebook document usage, closes [lobehub#11345](https://github.com/jaworldwideorg/OneJA-Bot/issues/11345) ([88721eb](88721eb))
* **misc**: Remove the old lobehub plugins, closes [lobehub#11498](https://github.com/jaworldwideorg/OneJA-Bot/issues/11498) ([e5b47df](e5b47df))
* **misc**: Rename chat folder to agent, closes [lobehub#11409](https://github.com/jaworldwideorg/OneJA-Bot/issues/11409) ([7cfb1a3](7cfb1a3))
* **misc**: Use fallbackData to prevent useActionSWR auto-fetch, closes [lobehub#11514](https://github.com/jaworldwideorg/OneJA-Bot/issues/11514) ([d446163](d446163))

#### What's improved

* **community**: Recommendation for agent & Discover tab, closes [lobehub#11445](https://github.com/jaworldwideorg/OneJA-Bot/issues/11445) ([5c102b5](5c102b5))
* **community**: Recommended for home & added discover tab, closes [lobehub#11290](https://github.com/jaworldwideorg/OneJA-Bot/issues/11290) ([8db248c](8db248c))
* **community**: Support to report for agent & mcp plugin interaction for recommendation, closes [lobehub#11289](https://github.com/jaworldwideorg/OneJA-Bot/issues/11289) ([6f98792](6f98792))
* **conversation**: Use native context menu when selection is within current ChatItem, closes [lobehub#11400](https://github.com/jaworldwideorg/OneJA-Bot/issues/11400) ([9778dce](9778dce))
* **desktop**: Add desktop release service and API endpoint, closes [lobehub#11520](https://github.com/jaworldwideorg/OneJA-Bot/issues/11520) ([e3dc5be](e3dc5be))
* **desktop**: Add local update testing scripts and stable channel API version check, closes [lobehub#11474](https://github.com/jaworldwideorg/OneJA-Bot/issues/11474) [lobehub#11513](https://github.com/jaworldwideorg/OneJA-Bot/issues/11513) ([959c210](959c210))
* **desktop**: Implement history navigation stack, closes [lobehub#11341](https://github.com/jaworldwideorg/OneJA-Bot/issues/11341) ([db270d5](db270d5))
* **desktop**: Improve macOS permission requests and Full Disk Access detection, closes [lobehub#11380](https://github.com/jaworldwideorg/OneJA-Bot/issues/11380) ([2d5868f](2d5868f))
* **electron**: Add custom titlebar for Electron windows, closes [lobehub#11438](https://github.com/jaworldwideorg/OneJA-Bot/issues/11438) ([08f6ee3](08f6ee3))
* **share**: Add topic sharing functionality, closes [lobehub#11448](https://github.com/jaworldwideorg/OneJA-Bot/issues/11448) ([ddca165](ddca165))
* **userMemories**: Support to assign for extra headers when invoking upstash workflows, closes [lobehub#11374](https://github.com/jaworldwideorg/OneJA-Bot/issues/11374) ([895e15e](895e15e))
* **userMemories**: Support to use customized Qstash client with extra header for workflows, closes [lobehub#11378](https://github.com/jaworldwideorg/OneJA-Bot/issues/11378) ([3417af4](3417af4))
* **misc**: Add the agent cron job, closes [lobehub#11370](https://github.com/jaworldwideorg/OneJA-Bot/issues/11370) ([10e47d9](10e47d9))
* **misc**: Generate `agent_cron_jobs` in agents, closes [lobehub#11349](https://github.com/jaworldwideorg/OneJA-Bot/issues/11349) ([eefb6cb](eefb6cb))
* **misc**: Improve baseline alignment for tool items, closes [lobehub#11447](https://github.com/jaworldwideorg/OneJA-Bot/issues/11447) ([be8dddd](be8dddd))
* **misc**: Improve group profile builder, closes [lobehub#11452](https://github.com/jaworldwideorg/OneJA-Bot/issues/11452) ([9012b40](9012b40))
* **misc**: Improve group prompt context engine and fix group supervisor response issue, closes [lobehub#11490](https://github.com/jaworldwideorg/OneJA-Bot/issues/11490) ([7d066eb](7d066eb))
* **misc**: Improve PageEditor header UX with DropdownMenu and i18n support, closes [lobehub#11462](https://github.com/jaworldwideorg/OneJA-Bot/issues/11462) ([ae499c9](ae499c9))
* **misc**: Update model definitions and sync i18n, closes [lobehub#11468](https://github.com/jaworldwideorg/OneJA-Bot/issues/11468) ([484ffb3](484ffb3))
* **misc**: Update the agent profiles tools check & agentbuilder tools & publish to market button, closes [lobehub#11501](https://github.com/jaworldwideorg/OneJA-Bot/issues/11501) ([85277fa](85277fa))
* **misc**: Update the community user layout action button, closes [lobehub#11472](https://github.com/jaworldwideorg/OneJA-Bot/issues/11472) ([2dd6d42](2dd6d42))
* **misc**: Update the cron job visiual way, closes [lobehub#11466](https://github.com/jaworldwideorg/OneJA-Bot/issues/11466) ([63d81de](63d81de))
* **misc**: Update the cron patterns fields values, closes [lobehub#11399](https://github.com/jaworldwideorg/OneJA-Bot/issues/11399) ([7632cef](7632cef))

#### What's fixed

* **@upstash/qstash**: Should properly extract Error message from thrown one, closes [lobehub#11465](https://github.com/jaworldwideorg/OneJA-Bot/issues/11465) ([a8142b4](a8142b4))
* **api**: Fix the issue where custom AI Providers cannot use custom APIs, closes [lobehub#11335](https://github.com/jaworldwideorg/OneJA-Bot/issues/11335) ([2c666b8](2c666b8))
* **ChatInput**: Add missing MaxTokens setting to params popover, closes [lobehub#11412](https://github.com/jaworldwideorg/OneJA-Bot/issues/11412) [lobehub#11375](https://github.com/jaworldwideorg/OneJA-Bot/issues/11375) ([3db4389](3db4389))
* **chat**: Reset activeTopicId when switching agent/group, closes [lobehub#11523](https://github.com/jaworldwideorg/OneJA-Bot/issues/11523) ([fde54b0](fde54b0))
* **controls**: Update checkbox toggle behavior and pass value to ParamControlWrapper, closes [lobehub#11363](https://github.com/jaworldwideorg/OneJA-Bot/issues/11363) ([1f1ef94](1f1ef94))
* **database**: Remove content validation limits for agent cron jobs, closes [lobehub#11444](https://github.com/jaworldwideorg/OneJA-Bot/issues/11444) ([04a28d3](04a28d3))
* **desktop**: Prevent duplicate CORS headers in response, closes [lobehub#11350](https://github.com/jaworldwideorg/OneJA-Bot/issues/11350) ([57e725c](57e725c))
* **desktop**: Return OFFICIAL_URL in cloud mode for remoteServerUrl selector, closes [lobehub#11502](https://github.com/jaworldwideorg/OneJA-Bot/issues/11502) ([1d11fac](1d11fac))
* **desktop**: Update macOS beta icon size for macOS 26, closes [lobehub#11348](https://github.com/jaworldwideorg/OneJA-Bot/issues/11348) ([0d1eedf](0d1eedf))
* **InputEditor**: Ensure lexical placeholder reactively updates on locale change, closes [lobehub#11352](https://github.com/jaworldwideorg/OneJA-Bot/issues/11352) ([72e796b](72e796b))
* **mcp**: Fix installation check hanging issue in desktop app, closes [lobehub#11524](https://github.com/jaworldwideorg/OneJA-Bot/issues/11524) ([b9341c3](b9341c3))
* **settings**: Add instant UI feedback for provider config switches, closes [lobehub#11362](https://github.com/jaworldwideorg/OneJA-Bot/issues/11362) ([a758d01](a758d01))
* **misc**: Click lobe ai topic trigger create new agent, closes [lobehub#11508](https://github.com/jaworldwideorg/OneJA-Bot/issues/11508) ([2443189](2443189))
* **misc**: Fix auto add group member crash, closes [lobehub#11387](https://github.com/jaworldwideorg/OneJA-Bot/issues/11387) ([fe4ff91](fe4ff91))
* **misc**: Fix duplicate agent and group, closes [lobehub#11411](https://github.com/jaworldwideorg/OneJA-Bot/issues/11411) ([bc8aea4](bc8aea4))
* **misc**: Fix group ux and memory retriever, closes [lobehub#11481](https://github.com/jaworldwideorg/OneJA-Bot/issues/11481) ([033ca92](033ca92))
* **misc**: Fix internal editor onTextChange issue and add test case, closes [lobehub#11509](https://github.com/jaworldwideorg/OneJA-Bot/issues/11509) ([e5eb03e](e5eb03e))
* **misc**: Fix memory search context, closes [lobehub#11393](https://github.com/jaworldwideorg/OneJA-Bot/issues/11393) ([9f51a4c](9f51a4c))
* **misc**: Fix new topic flick issue, closes [lobehub#11473](https://github.com/jaworldwideorg/OneJA-Bot/issues/11473) ([c53d372](c53d372))
* **misc**: Fix page content mismatch when switch quickly, closes [lobehub#11505](https://github.com/jaworldwideorg/OneJA-Bot/issues/11505) ([0cb1374](0cb1374))
* **misc**: Fix thread portal not open correctly, closes [lobehub#11475](https://github.com/jaworldwideorg/OneJA-Bot/issues/11475) ([e6ff90b](e6ff90b))
* **misc**: Fix Windows desktop build error with macOS native module, closes [lobehub#11417](https://github.com/jaworldwideorg/OneJA-Bot/issues/11417) ([67a8114](67a8114))
* **misc**: Force plain text paste in ChatInput editor, closes [lobehub#11414](https://github.com/jaworldwideorg/OneJA-Bot/issues/11414) ([70daf13](70daf13))
* **misc**: Handle will-prevent-unload event to allow app quit, closes [lobehub#11406](https://github.com/jaworldwideorg/OneJA-Bot/issues/11406) ([cbeb013](cbeb013))
* **misc**: Prevent auto navigation to profile when clicking topic, closes [lobehub#11500](https://github.com/jaworldwideorg/OneJA-Bot/issues/11500) ([1e03005](1e03005))
* **misc**: Refresh sidebar after sendAsGroup and add E2E tests, closes [lobehub#11450](https://github.com/jaworldwideorg/OneJA-Bot/issues/11450) ([8376a80](8376a80))
* **misc**: Slove the settings/profile change but not refresh the profiles, closes [lobehub#11497](https://github.com/jaworldwideorg/OneJA-Bot/issues/11497) ([f1e2111](f1e2111))

#### Styles

* **desktop**: Update macOS beta icon assets, closes [lobehub#11368](https://github.com/jaworldwideorg/OneJA-Bot/issues/11368) ([3623e58](3623e58))
* **misc**: Add MiniMax-M2.1 and GLM-4.7 for Qiniu provider, closes [lobehub#10982](https://github.com/jaworldwideorg/OneJA-Bot/issues/10982) ([695784d](695784d))
* **misc**: Fix UI issues with tooltip wrapping and dropdown type, closes [lobehub#11495](https://github.com/jaworldwideorg/OneJA-Bot/issues/11495) ([9d90eba](9d90eba))
* **misc**: Force gpt-5.2 use response api, closes [lobehub#11373](https://github.com/jaworldwideorg/OneJA-Bot/issues/11373) ([f7f3631](f7f3631))
* **misc**: Improve agent loading state, closes [lobehub#11511](https://github.com/jaworldwideorg/OneJA-Bot/issues/11511) ([3bb7f33](3bb7f33))
* **misc**: Improve cron jobs style, closes [lobehub#11420](https://github.com/jaworldwideorg/OneJA-Bot/issues/11420) ([d1602f6](d1602f6))
* **misc**: Improve todo list, closes [lobehub#11533](https://github.com/jaworldwideorg/OneJA-Bot/issues/11533) ([a4b71e9](a4b71e9))
* **misc**: ModelParse support to get model settings params & Customize extendParams UI, closes [lobehub#11185](https://github.com/jaworldwideorg/OneJA-Bot/issues/11185) ([94e985a](94e985a))
* **misc**: Remember page agent panel width, closes [lobehub#11389](https://github.com/jaworldwideorg/OneJA-Bot/issues/11389) ([801b624](801b624))
* **misc**: Update i18n, closes [lobehub#11425](https://github.com/jaworldwideorg/OneJA-Bot/issues/11425) ([87fbed2](87fbed2))
* **misc**: Update i18n, closes [lobehub#11360](https://github.com/jaworldwideorg/OneJA-Bot/issues/11360) ([da09825](da09825))
* **misc**: Update readFile content, closes [lobehub#11485](https://github.com/jaworldwideorg/OneJA-Bot/issues/11485) ([050499b](050499b))

</details>

<div align="right">

[![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)

</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Model Provider Model provider related released on @next size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

The custom AI service provider request failed AI服务商自建请求格式选择openAI貌似无效

3 participants