Compare commits

...

375 Commits

Author SHA1 Message Date
arvinxx e9f10ecb15 fix bug 2025-11-30 22:56:42 +08:00
Arvin Xu d0d7cc7b16 ♻️ refactor: refactor update agent config implement (#10507)
* refactor agent update config

* refactor sessionService.updateSessionMeta to agentService.updateAgentMeta

* fix lint

* fix tests

* Refactor agentStore: Split slices, optimize API calls, and improve naming

* add tests for agent store

* add tests for agent store

* fix agentId in test
2025-11-30 17:39:40 +08:00
Arvin Xu fe1be212ad ♻️ refactor: refactor session store to agent store (#10485)
* support agent store

* improve header

* refactor agent store using agentId other than sessionId

* refactor agent store using agentId other than sessionId

* LOBE-1070

* LOBE-1078

* LOBE-1086

* LOBE-1086

* LOBE-1086

* refactor agent url

* LOBE-1093
2025-11-30 15:34:57 +08:00
Arvin Xu 09f1504f9f ♻️ refactor: refactor with new conversation store (#10483)
refactor with new conversation
2025-11-28 23:57:24 +08:00
canisminor1990 75c8ad6c9a style: update agent profile 2025-11-28 22:18:50 +08:00
canisminor1990 979e6248af style: update agent profile 2025-11-28 22:18:50 +08:00
canisminor1990 17ce0abf45 style: update agent profile 2025-11-28 22:18:50 +08:00
Rene Wang 4adc332371 feat: Show breadcrumb title 2025-11-28 22:18:50 +08:00
Rene Wang 3365aeb75e build: Discard unused files 2025-11-28 22:18:50 +08:00
Rene Wang 07882ae9fb feat: Refactor resource routing and introduce new resource management components 2025-11-28 22:18:49 +08:00
Rene Wang b359ad1958 fix: Breadcrumb 2025-11-28 22:18:49 +08:00
Rene Wang e4305cf2ac feat: Add video file rendering support and enhance file fetching in the resource manager. 2025-11-28 22:18:49 +08:00
canisminor1990 2c22aa324e style: update sidebar 2025-11-28 22:18:49 +08:00
canisminor1990 a8194866c9 style: update sidebar 2025-11-28 22:18:49 +08:00
canisminor1990 49d5a4193b style: update sidebar 2025-11-28 22:18:49 +08:00
canisminor1990 2761a62123 style: update sidebar 2025-11-28 22:18:49 +08:00
Rene Wang c08e37f447 style: Adjust sidebar color 2025-11-28 22:18:49 +08:00
Rene Wang 252f19a134 feat: View file inline 2025-11-28 22:18:48 +08:00
Rene Wang 58e43cba48 fix: Type error 2025-11-28 22:18:48 +08:00
Rene Wang d14a4a2eae feat: Migrate Pages entry 2025-11-28 22:18:48 +08:00
canisminor1990 7662a3ac98 style: update thread 2025-11-28 22:18:48 +08:00
canisminor1990 be0289daa1 style: update topic 2025-11-28 22:18:48 +08:00
Rene Wang fd18655e2c fix: View document 2025-11-28 22:18:48 +08:00
arvinxx 91aa68f205 fix types 2025-11-28 22:18:48 +08:00
canisminor1990 a4341a7fd3 style: update topic 2025-11-28 22:18:48 +08:00
canisminor1990 0d9bc82ee7 style: update topic 2025-11-28 22:18:47 +08:00
Rene Wang 61e886c85d fix: style 2025-11-28 22:18:47 +08:00
Rene Wang f3519e0b9e fix: route 2025-11-28 22:18:47 +08:00
Rene Wang 45683a7ba3 fix: route 2025-11-28 22:18:47 +08:00
Rene Wang 4337d22368 fix: route 2025-11-28 22:18:47 +08:00
Shinji-Li b06ecd7fe2 feat: add editor data into market agent (#10451)
feat: add editor data into market agent
2025-11-28 22:18:47 +08:00
Rene Wang 609c037ef3 feat: Update nav 2025-11-28 22:18:47 +08:00
Rene Wang a1e02eaa10 feat: Update nav 2025-11-28 22:18:46 +08:00
Rene Wang b2912deff3 feat: Update route 2025-11-28 22:18:46 +08:00
René Wang 36b6d5eec0 feat: Create Folder in Repo (#10352)
* feat: Init implemention

* fix: sub-folder

* fix: Use slug

* feat: Folder path

* feat: Add breadcrumb

* feat: Add Go To Enclosing button

* feat: Rename kb to repo

* style: Merge two actions row into one

* style: Merge two actions row into one

* style: Merge two actions row into one

* style: Merge two actions row into one

* feat: Migrate route to `repo`

* feat: Add search bar

* feat: Folder tree

* feat: Folder tree

* feat: Folder tree

* feat: Folder tree

* feat: Folder tree

* style: Warp compoentn

* style: Optimize the skelton

* style: Optimize list style

* feat: Filter out folder in Inbox

* feat: Sort mode

* feat: Back to roiginal route

* feat: Move folder

* feat: Delete folder

* fix: Add files to folder

* fix: Files item

* feat: Update translations

* feat: Delete library

* feat: Re-organize folder

* feat: Rename newly created folder

* feat: Add connection option

* feat: Page editor refactor

* fix: ROute
2025-11-28 22:18:46 +08:00
arvinxx 8c4ccc27e6 refactor agent store 2025-11-28 22:18:43 +08:00
canisminor1990 05c521a78b style: update navbar 2025-11-28 22:18:29 +08:00
canisminor1990 32e17410c4 style: update navbar 2025-11-28 22:18:28 +08:00
canisminor1990 26b4927d25 style: update navbar 2025-11-28 22:18:28 +08:00
canisminor1990 ee2702e4ae fix: fix import 2025-11-28 22:18:28 +08:00
Shinji-Li 5feae971a5 🔨 chore: delete editor content sql migration (#10449)
fix: delete the editor_content sql migration
2025-11-28 22:18:28 +08:00
canisminor1990 ab34f4aed6 fix: fix import 2025-11-28 22:18:28 +08:00
CanisMinor e5c42fbbc2 💄 style(wip): LobeHub Next UI Refactor (#10388)
* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* style: update sidebar

* feat: add agent rename

* feat: add agent rename

* feat: update contextMenu

* fix: fix link

* chore: mv mobile chat

* chore: mv mobile chat

* chore: mv mobile chat

* style: update topic

* style: update topic

* style: update topic

* style: update switch

* style: update switch
2025-11-28 22:18:28 +08:00
Shinji-Li 1c16322707 feat: change agent settings drawer to editor mode (#10392)
* feat: change agent settings to editor way

* feat: add db schema

* fix: update the db sql migration

* fix: slove not save problme

* fix: editor add debounce

* fix: add the

* feat: add editor initial load docs

* fix: change next link to react-router-dom

* 🐛 fix: Showing compatibility with both new and old versions of Plugins (#10418)

* fix: Showing compatibility with both new and old versions of Plugins

* fix: add mcp plugin detail as plugins return

* feat: change settings drawer to model and delete something

*  test: fix tests snapshot (#10434)

fix snapshot

* 🔖 chore(release): v2.0.0-next.118 [skip ci]

## [Version 2.0.0-next.118](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.117...v2.0.0-next.118)
<sup>Released on **2025-11-26**</sup>

#### 🐛 Bug Fixes

- **misc**: Showing compatibility with both new and old versions of Plugins.

<br/>

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

#### What's fixed

* **misc**: Showing compatibility with both new and old versions of Plugins, closes [#10418](https://github.com/lobehub/lobe-chat/issues/10418) ([64af7b1](https://github.com/lobehub/lobe-chat/commit/64af7b1))

</details>

<div align="right">

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

</div>

* 📝 docs(bot): Auto sync agents & plugin to readme

* 🔨 chore: update docker yml (#10433)

update

* feat: add the manual add tools into agent setting editor

* 🤖 style: update i18n (#10405)

💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>

* 🔖 chore(release): v2.0.0-next.119 [skip ci]

## [Version&nbsp;2.0.0-next.119](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.118...v2.0.0-next.119)
<sup>Released on **2025-11-26**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10405](https://github.com/lobehub/lobe-chat/issues/10405) ([fb8f977](https://github.com/lobehub/lobe-chat/commit/fb8f977))

</details>

<div align="right">

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

</div>

* 📝 docs(bot): Auto sync agents & plugin to readme

* 🐛 fix: try to fix “TypeError: Response body object should not be disturbed or locked” (#10321)

* try to fix

* fix again

* fix again

* 🔖 chore(release): v2.0.0-next.120 [skip ci]

## [Version&nbsp;2.0.0-next.120](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.119...v2.0.0-next.120)
<sup>Released on **2025-11-26**</sup>

#### 🐛 Bug Fixes

- **misc**: Try to fix “TypeError: Response body object should not be disturbed or locked”.

<br/>

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

#### What's fixed

* **misc**: Try to fix “TypeError: Response body object should not be disturbed or locked”, closes [#10321](https://github.com/lobehub/lobe-chat/issues/10321) ([a547e9e](https://github.com/lobehub/lobe-chat/commit/a547e9e))

</details>

<div align="right">

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

</div>

* 📝 docs(bot): Auto sync agents & plugin to readme

* feat: update metion to market way

* fix: clean useless code

* fix: change the plugins back

* 💄 style: add image aspect ratio and resolution settings for Nano Banana Pro (#10430)

 feat: add image aspect ratio and resolution settings for AI models

* 🔖 chore(release): v2.0.0-next.121 [skip ci]

## [Version&nbsp;2.0.0-next.121](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.120...v2.0.0-next.121)
<sup>Released on **2025-11-26**</sup>

#### 💄 Styles

- **misc**: Add image aspect ratio and resolution settings for Nano Banana Pro.

<br/>

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

#### Styles

* **misc**: Add image aspect ratio and resolution settings for Nano Banana Pro, closes [#10430](https://github.com/lobehub/lobe-chat/issues/10430) ([a197b4b](https://github.com/lobehub/lobe-chat/commit/a197b4b))

</details>

<div align="right">

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

</div>

* 📝 docs(bot): Auto sync agents & plugin to readme

* feat: add some loading & inital status config

* fix: delete the description efffect

* 🐛 fix: slove the publish to market the agent config error (#10440)

fix: slove the publish to market the agent config error

---------

Co-authored-by: Arvin Xu <arvinx@foxmail.com>
Co-authored-by: semantic-release-bot <semantic-release-bot@martynus.net>
Co-authored-by: lobehubbot <i@lobehub.com>
Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
Co-authored-by: sxjeru <sxjeru@gmail.com>
2025-11-28 22:18:28 +08:00
lobehubbot 5777e195ef 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-28 09:46:05 +00:00
semantic-release-bot 1c4b3556dd 🔖 chore(release): v2.0.0-next.131 [skip ci]
## [Version&nbsp;2.0.0-next.131](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.130...v2.0.0-next.131)
<sup>Released on **2025-11-28**</sup>

#### 🐛 Bug Fixes

- **misc**: Implement uniform callback URL for SSO providers.

<br/>

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

#### What's fixed

* **misc**: Implement uniform callback URL for SSO providers, closes [#10479](https://github.com/lobehub/lobe-chat/issues/10479) ([74554c6](https://github.com/lobehub/lobe-chat/commit/74554c6))

</details>

<div align="right">

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

</div>
2025-11-28 09:44:51 +00:00
YuTengjing 74554c664f 🐛 fix: Implement uniform callback URL for SSO providers (#10479) 2025-11-28 17:30:54 +08:00
lobehubbot ab5db5042b 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-28 09:03:53 +00:00
semantic-release-bot 836060068e 🔖 chore(release): v2.0.0-next.130 [skip ci]
## [Version&nbsp;2.0.0-next.130](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.129...v2.0.0-next.130)
<sup>Released on **2025-11-28**</sup>

#### 🐛 Bug Fixes

- **misc**: Add handling for `content_part` and `reasoning_part` events in fetchSSE.

<br/>

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

#### What's fixed

* **misc**: Add handling for `content_part` and `reasoning_part` events in fetchSSE, closes [#10470](https://github.com/lobehub/lobe-chat/issues/10470) ([8aff3ab](https://github.com/lobehub/lobe-chat/commit/8aff3ab))

</details>

<div align="right">

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

</div>
2025-11-28 09:02:37 +00:00
sxjeru 8aff3ab70c 🐛 fix: add handling for content_part and reasoning_part events in fetchSSE (#10470)
feat: add handling for content_part and reasoning_part events in fetchSSE
2025-11-28 16:50:44 +08:00
lobehubbot e4ca75acf9 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-28 06:04:34 +00:00
semantic-release-bot 06cd54518b 🔖 chore(release): v2.0.0-next.129 [skip ci]
## [Version&nbsp;2.0.0-next.129](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.128...v2.0.0-next.129)
<sup>Released on **2025-11-28**</sup>

#### 🐛 Bug Fixes

- **misc**: Filter out file with `sourceType` = `file`.

<br/>

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

#### What's fixed

* **misc**: Filter out file with `sourceType` = `file`, closes [#10474](https://github.com/lobehub/lobe-chat/issues/10474) ([e1c99a0](https://github.com/lobehub/lobe-chat/commit/e1c99a0))

</details>

<div align="right">

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

</div>
2025-11-28 06:03:16 +00:00
Arvin Xu 69898185f3 ♻️ refactor: refactor thread table and nextauth userId (#10475)
push update
2025-11-28 13:50:43 +08:00
René Wang e1c99a068b 🐛 fix: Filter out file with sourceType = file (#10474)
fix: Filter out file with type = file
2025-11-28 13:37:38 +08:00
lobehubbot 5b8f7279c0 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-28 03:54:04 +00:00
semantic-release-bot 3c7eb69933 🔖 chore(release): v2.0.0-next.128 [skip ci]
## [Version&nbsp;2.0.0-next.128](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.127...v2.0.0-next.128)
<sup>Released on **2025-11-28**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10466](https://github.com/lobehub/lobe-chat/issues/10466) ([37bd67a](https://github.com/lobehub/lobe-chat/commit/37bd67a))

</details>

<div align="right">

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

</div>
2025-11-28 03:52:39 +00:00
LobeHub Bot 37bd67a539 🤖 style: update i18n (#10466)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-28 11:37:21 +08:00
sxjeru 7f40f15cbb 🐛 fix: Optimized New API provider (#10452)
* 🐛 fix: add CORS bypass for pricing fetch in browser and update provider icon mapping

* 🐛 fix: refactor pricing response handling to avoid duplicated logic in fetchPricing
2025-11-28 11:36:28 +08:00
LobeHub Bot 285a05059e 🌐 chore: translate non-English comments to English in packages/database (#10468)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-28 11:36:10 +08:00
Neko 36750adc3a 🔨 chore: support to have Redis and providers (#10391)
* feat: added redis providers (ioredis, upstash)

For environment annotation of Vitest, read more: https://github.com/capricorn86/happy-dom/issues/1042#issuecomment-3585851354

Co-authored-by: Makito <5277268+sumimakito@users.noreply.github.com>

* chore: changed as suggested

---------

Co-authored-by: Makito <5277268+sumimakito@users.noreply.github.com>
2025-11-28 11:35:35 +08:00
Neko 1193568f73 chore(ci): remove check console.log CI due to incorrect reports (#10460) 2025-11-28 00:08:01 +08:00
lobehubbot 95d34aea4f 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-27 14:23:22 +00:00
semantic-release-bot 37266c0244 🔖 chore(release): v2.0.0-next.127 [skip ci]
## [Version&nbsp;2.0.0-next.127](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.126...v2.0.0-next.127)
<sup>Released on **2025-11-27**</sup>

#### 🐛 Bug Fixes

- **misc**: Better-auth fallback next-auth providers env.

<br/>

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

#### What's fixed

* **misc**: Better-auth fallback next-auth providers env, closes [#10459](https://github.com/lobehub/lobe-chat/issues/10459) ([e167075](https://github.com/lobehub/lobe-chat/commit/e167075))

</details>

<div align="right">

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

</div>
2025-11-27 14:22:08 +00:00
YuTengjing e1670758ce 🐛 fix: better-auth fallback next-auth providers env (#10459)
* 🐛 fix: better-auth fallback next-auth providers env

*  test: add unit tests for getAuthConfig fallbacks
2025-11-27 22:08:54 +08:00
lobehubbot 1e2c12460e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-27 13:31:20 +00:00
semantic-release-bot 5facc05852 🔖 chore(release): v2.0.0-next.126 [skip ci]
## [Version&nbsp;2.0.0-next.126](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.125...v2.0.0-next.126)
<sup>Released on **2025-11-27**</sup>

#### 🐛 Bug Fixes

- **misc**: Align docker auth defaults and better-auth docs.

<br/>

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

#### What's fixed

* **misc**: Align docker auth defaults and better-auth docs, closes [#10457](https://github.com/lobehub/lobe-chat/issues/10457) ([1375314](https://github.com/lobehub/lobe-chat/commit/1375314))

</details>

<div align="right">

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

</div>
2025-11-27 13:30:04 +00:00
YuTengjing 1375314555 🐛 fix: align docker auth defaults and better-auth docs (#10457) 2025-11-27 21:16:22 +08:00
lobehubbot 224b3f0506 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-27 12:24:06 +00:00
semantic-release-bot fdec35449a 🔖 chore(release): v2.0.0-next.125 [skip ci]
## [Version&nbsp;2.0.0-next.125](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.124...v2.0.0-next.125)
<sup>Released on **2025-11-27**</sup>

####  Features

- **misc**: Support better-auth.

<br/>

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

#### What's improved

* **misc**: Support better-auth, closes [#10215](https://github.com/lobehub/lobe-chat/issues/10215) ([dc62cc9](https://github.com/lobehub/lobe-chat/commit/dc62cc9))

</details>

<div align="right">

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

</div>
2025-11-27 12:22:53 +00:00
YuTengjing dc62cc969d feat: support better-auth (#10215) 2025-11-27 20:10:40 +08:00
lobehubbot ef6809461b 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-27 05:27:57 +00:00
semantic-release-bot 57dcb48b33 🔖 chore(release): v2.0.0-next.124 [skip ci]
## [Version&nbsp;2.0.0-next.124](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.123...v2.0.0-next.124)
<sup>Released on **2025-11-27**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the agent settings plugins pages error problem, improve topic item interaction and editing behavior.

<br/>

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

#### What's fixed

* **misc**: Fixed the agent settings plugins pages error problem, closes [#10437](https://github.com/lobehub/lobe-chat/issues/10437) ([c58f37a](https://github.com/lobehub/lobe-chat/commit/c58f37a))
* **misc**: Improve topic item interaction and editing behavior, closes [#10409](https://github.com/lobehub/lobe-chat/issues/10409) ([85b45cb](https://github.com/lobehub/lobe-chat/commit/85b45cb))

</details>

<div align="right">

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

</div>
2025-11-27 05:26:41 +00:00
sxjeru 85b45cb8cd 🐛 fix: improve topic item interaction and editing behavior (#10409)
♻️ refactor: improve topic item interaction and editing behavior
2025-11-27 13:13:12 +08:00
Shinji-Li c58f37ad96 🐛 fix: fixed the agent settings plugins pages error problem (#10437)
fix: fixed the agent settings plugins pages error problem
2025-11-27 13:12:33 +08:00
Shinji-Li 3f95d1c34a 🔨 chore: add editor_data in agents db (#10448)
* feat: add editor_data in agents db

* fix: add if exists sql

* fix: change the schema
2025-11-27 13:09:05 +08:00
lobehubbot 513f2d36e7 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-27 04:27:34 +00:00
semantic-release-bot fcd781824c 🔖 chore(release): v2.0.0-next.123 [skip ci]
## [Version&nbsp;2.0.0-next.123](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.122...v2.0.0-next.123)
<sup>Released on **2025-11-27**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10445](https://github.com/lobehub/lobe-chat/issues/10445) ([4942bc9](https://github.com/lobehub/lobe-chat/commit/4942bc9))

</details>

<div align="right">

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

</div>
2025-11-27 04:26:27 +00:00
LobeHub Bot 4942bc91ae 🤖 style: update i18n (#10445)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-27 12:11:58 +08:00
lobehubbot 341690eb22 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-26 13:50:39 +00:00
semantic-release-bot b9ca265b54 🔖 chore(release): v2.0.0-next.122 [skip ci]
## [Version&nbsp;2.0.0-next.122](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.121...v2.0.0-next.122)
<sup>Released on **2025-11-26**</sup>

#### 🐛 Bug Fixes

- **misc**: Slove the publish to market the agent config error.

<br/>

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

#### What's fixed

* **misc**: Slove the publish to market the agent config error, closes [#10440](https://github.com/lobehub/lobe-chat/issues/10440) ([fda8119](https://github.com/lobehub/lobe-chat/commit/fda8119))

</details>

<div align="right">

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

</div>
2025-11-26 13:49:24 +00:00
Shinji-Li fda8119967 🐛 fix: slove the publish to market the agent config error (#10440)
fix: slove the publish to market the agent config error
2025-11-26 21:37:27 +08:00
lobehubbot 81860fef0f 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-26 11:54:06 +00:00
semantic-release-bot e38d37eee5 🔖 chore(release): v2.0.0-next.121 [skip ci]
## [Version&nbsp;2.0.0-next.121](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.120...v2.0.0-next.121)
<sup>Released on **2025-11-26**</sup>

#### 💄 Styles

- **misc**: Add image aspect ratio and resolution settings for Nano Banana Pro.

<br/>

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

#### Styles

* **misc**: Add image aspect ratio and resolution settings for Nano Banana Pro, closes [#10430](https://github.com/lobehub/lobe-chat/issues/10430) ([a197b4b](https://github.com/lobehub/lobe-chat/commit/a197b4b))

</details>

<div align="right">

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

</div>
2025-11-26 11:52:57 +00:00
sxjeru a197b4b433 💄 style: add image aspect ratio and resolution settings for Nano Banana Pro (#10430)
 feat: add image aspect ratio and resolution settings for AI models
2025-11-26 19:40:52 +08:00
lobehubbot b6dca900e3 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-26 09:42:17 +00:00
semantic-release-bot 6a235f22bf 🔖 chore(release): v2.0.0-next.120 [skip ci]
## [Version&nbsp;2.0.0-next.120](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.119...v2.0.0-next.120)
<sup>Released on **2025-11-26**</sup>

#### 🐛 Bug Fixes

- **misc**: Try to fix “TypeError: Response body object should not be disturbed or locked”.

<br/>

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

#### What's fixed

* **misc**: Try to fix “TypeError: Response body object should not be disturbed or locked”, closes [#10321](https://github.com/lobehub/lobe-chat/issues/10321) ([a547e9e](https://github.com/lobehub/lobe-chat/commit/a547e9e))

</details>

<div align="right">

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

</div>
2025-11-26 09:41:05 +00:00
Arvin Xu a547e9e5b4 🐛 fix: try to fix “TypeError: Response body object should not be disturbed or locked” (#10321)
* try to fix

* fix again

* fix again
2025-11-26 17:28:25 +08:00
lobehubbot f9d2c3f07f 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-26 09:04:24 +00:00
semantic-release-bot 0c831527ba 🔖 chore(release): v2.0.0-next.119 [skip ci]
## [Version&nbsp;2.0.0-next.119](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.118...v2.0.0-next.119)
<sup>Released on **2025-11-26**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10405](https://github.com/lobehub/lobe-chat/issues/10405) ([fb8f977](https://github.com/lobehub/lobe-chat/commit/fb8f977))

</details>

<div align="right">

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

</div>
2025-11-26 09:03:08 +00:00
LobeHub Bot fb8f977292 🤖 style: update i18n (#10405)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-26 16:50:24 +08:00
Arvin Xu acbb72a752 🔨 chore: update docker yml (#10433)
update
2025-11-26 13:19:23 +08:00
lobehubbot e95ed341b4 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-26 04:26:51 +00:00
semantic-release-bot 6553544fed 🔖 chore(release): v2.0.0-next.118 [skip ci]
## [Version&nbsp;2.0.0-next.118](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.117...v2.0.0-next.118)
<sup>Released on **2025-11-26**</sup>

#### 🐛 Bug Fixes

- **misc**: Showing compatibility with both new and old versions of Plugins.

<br/>

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

#### What's fixed

* **misc**: Showing compatibility with both new and old versions of Plugins, closes [#10418](https://github.com/lobehub/lobe-chat/issues/10418) ([64af7b1](https://github.com/lobehub/lobe-chat/commit/64af7b1))

</details>

<div align="right">

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

</div>
2025-11-26 04:25:29 +00:00
Arvin Xu a5a8bde483 test: fix tests snapshot (#10434)
fix snapshot
2025-11-26 12:12:44 +08:00
Shinji-Li 64af7b12ce 🐛 fix: Showing compatibility with both new and old versions of Plugins (#10418)
* fix: Showing compatibility with both new and old versions of Plugins

* fix: add mcp plugin detail as plugins return
2025-11-26 11:23:40 +08:00
LobeHub Bot 6924b81a38 test: add unit tests for headersToRecord function (#10412)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-26 01:27:14 +08:00
LobeHub Bot e508f8abd2 🌐 chore: translate non-English comments to English in mcp service (#10407)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-26 01:24:44 +08:00
lobehubbot 5ef00aeb73 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-25 17:07:38 +00:00
semantic-release-bot c7c1757e44 🔖 chore(release): v2.0.0-next.117 [skip ci]
## [Version&nbsp;2.0.0-next.117](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.116...v2.0.0-next.117)
<sup>Released on **2025-11-25**</sup>

####  Features

- **misc**: Bedrock claude model thinking support.

<br/>

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

#### What's improved

* **misc**: Bedrock claude model thinking support, closes [#10422](https://github.com/lobehub/lobe-chat/issues/10422) ([8b41638](https://github.com/lobehub/lobe-chat/commit/8b41638))

</details>

<div align="right">

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

</div>
2025-11-25 17:06:17 +00:00
YuTengjing 20ca43cc4f 🔨 chore: remove useless const file (#10425) 2025-11-26 00:51:17 +08:00
YuTengjing 8b41638755 feat: bedrock claude model thinking support (#10422) 2025-11-26 00:42:36 +08:00
lobehubbot 5bab1a4bcf 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-25 16:29:55 +00:00
semantic-release-bot 1f42b9beec 🔖 chore(release): v2.0.0-next.116 [skip ci]
## [Version&nbsp;2.0.0-next.116](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.115...v2.0.0-next.116)
<sup>Released on **2025-11-25**</sup>

####  Features

- **misc**: Support nano banana pro.

<br/>

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

#### What's improved

* **misc**: Support nano banana pro, closes [#10413](https://github.com/lobehub/lobe-chat/issues/10413) ([a93cfcd](https://github.com/lobehub/lobe-chat/commit/a93cfcd))

</details>

<div align="right">

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

</div>
2025-11-25 16:28:42 +00:00
Arvin Xu a93cfcd703 feat: support nano banana pro (#10413)
* fix nanobanana

* add types

* 完成 fetch sse 和 google ai 侧转换

* thinking

* ui for part render

* support image in thinking

* fix issue

* support convert content part

* support nano banana pro image generation

* fix tests

* fix tests
2025-11-26 00:16:44 +08:00
lobehubbot b78f24c67f 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-25 06:47:24 +00:00
semantic-release-bot 78a0efad8b 🔖 chore(release): v2.0.0-next.115 [skip ci]
## [Version&nbsp;2.0.0-next.115](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.114...v2.0.0-next.115)
<sup>Released on **2025-11-25**</sup>

####  Features

- **misc**: Add Claude Opus 4.5 model.

<br/>

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

#### What's improved

* **misc**: Add Claude Opus 4.5 model, closes [#10406](https://github.com/lobehub/lobe-chat/issues/10406) ([042005a](https://github.com/lobehub/lobe-chat/commit/042005a))

</details>

<div align="right">

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

</div>
2025-11-25 06:46:10 +00:00
sxjeru 042005a5ea feat: Add Claude Opus 4.5 model (#10406) 2025-11-25 14:33:11 +08:00
lobehubbot 728cd02404 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-25 05:54:43 +00:00
semantic-release-bot 25898eb497 🔖 chore(release): v2.0.0-next.114 [skip ci]
## [Version&nbsp;2.0.0-next.114](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.113...v2.0.0-next.114)
<sup>Released on **2025-11-25**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the topic link dropdown error.

<br/>

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

#### What's fixed

* **misc**: Fixed the topic link dropdown error, closes [#10408](https://github.com/lobehub/lobe-chat/issues/10408) ([864e3d5](https://github.com/lobehub/lobe-chat/commit/864e3d5))

</details>

<div align="right">

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

</div>
2025-11-25 05:53:28 +00:00
Shinji-Li 864e3d5aa3 🐛 fix: fixed the topic link dropdown error (#10408)
* fix: fixed the topic link jump problem

* fix: delete console.log
2025-11-25 13:41:44 +08:00
Lucas d77288f925 Fix issue to avoid sync error in forked repos (#10410) 2025-11-25 13:02:45 +08:00
lobehubbot 3a50003228 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-25 03:12:45 +00:00
semantic-release-bot 83aff86dd7 🔖 chore(release): v2.0.0-next.113 [skip ci]
## [Version&nbsp;2.0.0-next.113](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.112...v2.0.0-next.113)
<sup>Released on **2025-11-25**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed when desktop userId was change manytimes the aimodel not right.

<br/>

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

#### What's fixed

* **misc**: Fixed when desktop userId was change manytimes the aimodel not right, closes [#10389](https://github.com/lobehub/lobe-chat/issues/10389) ([3ed8153](https://github.com/lobehub/lobe-chat/commit/3ed8153))

</details>

<div align="right">

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

</div>
2025-11-25 03:11:31 +00:00
Shinji-Li 3ed81539d0 🐛 fix: fixed when desktop userId was change manytimes the aimodel not right (#10389)
* fix: fixed when desktop userId was change manytimes the ai model catch not right

* feat: change the isSyncActive as second params
2025-11-25 10:58:34 +08:00
lobehubbot 021f955aeb 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-24 15:16:25 +00:00
semantic-release-bot 1d59c27aa6 🔖 chore(release): v2.0.0-next.112 [skip ci]
## [Version&nbsp;2.0.0-next.112](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.111...v2.0.0-next.112)
<sup>Released on **2025-11-24**</sup>

#### ♻ Code Refactoring

- **misc**: Optimize files schema definition.

#### 💄 Styles

- **misc**: Add Kimi K2 Thinking to Qwen Provider.

<br/>

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

#### Code refactoring

* **misc**: Optimize files schema definition, closes [#10403](https://github.com/lobehub/lobe-chat/issues/10403) ([cf28c87](https://github.com/lobehub/lobe-chat/commit/cf28c87))

#### Styles

* **misc**: Add Kimi K2 Thinking to Qwen Provider, closes [#10287](https://github.com/lobehub/lobe-chat/issues/10287) ([bd2e838](https://github.com/lobehub/lobe-chat/commit/bd2e838))

</details>

<div align="right">

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

</div>
2025-11-24 15:15:10 +00:00
YuTengjing cf28c87d3e ♻️ refactor: optimize files schema definition (#10403) 2025-11-24 23:03:09 +08:00
bbbugg bd2e8387dc 💄 style: add Kimi K2 Thinking to Qwen Provider (#10287)
* 💄 style: add GLM-4.6 and Kimi K2 Thinking to Qwen

* 💄 style: update Qwen model configurations and extend reasoning capabilities
2025-11-24 22:55:58 +08:00
lobehubbot 57208ee8a5 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-24 13:29:13 +00:00
semantic-release-bot 9383d42a81 🔖 chore(release): v2.0.0-next.111 [skip ci]
## [Version&nbsp;2.0.0-next.111](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.110...v2.0.0-next.111)
<sup>Released on **2025-11-24**</sup>

#### 🐛 Bug Fixes

- **misc**: Fix db migration snapshot not align with db schema, Separate agent file injection from knowledge base RAG search.

<br/>

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

#### What's fixed

* **misc**: Fix db migration snapshot not align with db schema, closes [#10399](https://github.com/lobehub/lobe-chat/issues/10399) ([760105a](https://github.com/lobehub/lobe-chat/commit/760105a))
* **misc**: Separate agent file injection from knowledge base RAG search, closes [#10398](https://github.com/lobehub/lobe-chat/issues/10398) ([e1c813a](https://github.com/lobehub/lobe-chat/commit/e1c813a))

</details>

<div align="right">

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

</div>
2025-11-24 13:27:50 +00:00
Arvin Xu 760105adb2 🐛 fix: fix db migration snapshot not align with db schema (#10399)
* fix db sql

* clean
2025-11-24 21:15:25 +08:00
Arvin Xu e1c813a301 🐛 fix: Separate agent file injection from knowledge base RAG search (#10398)
* only search kb

* support inject files

* support files

* fix search

* fix kb search

* clean console.log

* add tests
2025-11-24 21:14:21 +08:00
Neko 9caacde1c1 🔨 chore(database): added user memory db model (#10062)
* feat(database): added user memory db model

* fix: types, omit vector columsn

* test: adding more tests

* test: missing tests

* chore: circular dependency

* test: missing tests

* test: missing tests

* chore: use merge(...) for merging fields & properties, added tests
2025-11-24 19:30:05 +08:00
lobehubbot 2711450436 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-24 07:34:59 +00:00
semantic-release-bot da9ca7e921 🔖 chore(release): v2.0.0-next.110 [skip ci]
## [Version&nbsp;2.0.0-next.110](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.109...v2.0.0-next.110)
<sup>Released on **2025-11-24**</sup>

#### 💄 Styles

- **misc**: Add hyperlink to each topic & pinned agent, support ContextMenu on ChatItem.

<br/>

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

#### Styles

* **misc**: Add hyperlink to each topic & pinned agent, closes [#10367](https://github.com/lobehub/lobe-chat/issues/10367) ([63e4b3d](https://github.com/lobehub/lobe-chat/commit/63e4b3d))
* **misc**: Support ContextMenu on ChatItem, closes [#9034](https://github.com/lobehub/lobe-chat/issues/9034) ([27c1154](https://github.com/lobehub/lobe-chat/commit/27c1154))

</details>

<div align="right">

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

</div>
2025-11-24 07:33:41 +00:00
sxjeru 63e4b3d731 💄 style: Add hyperlink to each topic & pinned agent (#10367)
*  feat: refactor TopicItem to use Link for navigation and improve URL handling

* 🐛 fix: remove enabled property from Gemini 3 Pro model definition

*  feat: add link to session chat in pinned agent list
2025-11-24 15:20:24 +08:00
Shinji-Li 27c1154210 💄 style: support ContextMenu on ChatItem (#9034)
* feat: add chatitem right click contextMenu

* fix: soft key fixed

* feat: add contextMenu used box

* feat: add commons contextMenuMode settings config

* feat: add i18n

* feat: update contextmenu use

* fix: add lost merge files

* fix: add lost className

* fix: lint fixed

* feat: add expand & collapse fc in contextMenu

* fix: delete the onShare callback

* fix: refactor contextMenu

* feat: update i18n
2025-11-24 15:19:15 +08:00
Arvin Xu 1fb7b292ca ️ perf: move settings into one page (#10229)
* move settings into one page

* fix: change the jump link to react-router-dom

---------

Co-authored-by: ONLY-yours <1349021570@qq.com>
2025-11-24 15:10:41 +08:00
lobehubbot 3e820fd6b7 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-24 05:57:26 +00:00
semantic-release-bot 9d6a8faaa1 🔖 chore(release): v2.0.0-next.109 [skip ci]
## [Version&nbsp;2.0.0-next.109](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.108...v2.0.0-next.109)
<sup>Released on **2025-11-24**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the knowledge files cant open error.

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### What's fixed

* **misc**: Fixed the knowledge files cant open error, closes [#10386](https://github.com/lobehub/lobe-chat/issues/10386) ([8104c77](https://github.com/lobehub/lobe-chat/commit/8104c77))

#### Styles

* **misc**: Update i18n, closes [#10368](https://github.com/lobehub/lobe-chat/issues/10368) ([ed707af](https://github.com/lobehub/lobe-chat/commit/ed707af))

</details>

<div align="right">

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

</div>
2025-11-24 05:56:09 +00:00
LobeHub Bot ed707af91c 🤖 style: update i18n (#10368)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-24 13:42:35 +08:00
LobeHub Bot 5bfe36d28f 🌐 chore: translate non-English comments to English in src/server/globalConfig (#10382)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-24 13:39:40 +08:00
Shinji-Li 8104c774d5 🐛 fix: fixed the knowledge files cant open error (#10386)
fix: fixed the knowledge files cant open error
2025-11-24 13:38:03 +08:00
lobehubbot c5fb6c8288 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-24 02:59:52 +00:00
semantic-release-bot 5b235891f3 🔖 chore(release): v2.0.0-next.108 [skip ci]
## [Version&nbsp;2.0.0-next.108](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.107...v2.0.0-next.108)
<sup>Released on **2025-11-24**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the pinned session not work.

<br/>

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

#### What's fixed

* **misc**: Fixed the pinned session not work, closes [#10323](https://github.com/lobehub/lobe-chat/issues/10323) ([224f999](https://github.com/lobehub/lobe-chat/commit/224f999))

</details>

<div align="right">

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

</div>
2025-11-24 02:58:37 +00:00
Shinji-Li 224f9998df 🐛 fix: fixed the pinned session not work (#10323)
* fix: fixed the pinned session not work

* feat: add urlHydration store to slove the url sync problem
2025-11-24 10:46:10 +08:00
LobeHub Bot f8a24d22e3 🌐 chore: translate non-English comments to English in packages/model-bank (#10373)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-23 22:09:49 +08:00
lobehubbot f32b0d9ff8 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-23 14:05:11 +00:00
semantic-release-bot 7645475640 🔖 chore(release): v2.0.0-next.107 [skip ci]
## [Version&nbsp;2.0.0-next.107](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.106...v2.0.0-next.107)
<sup>Released on **2025-11-23**</sup>

#### 💄 Styles

- **misc**: Optimize nana banana pro error message.

<br/>

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

#### Styles

* **misc**: Optimize nana banana pro error message, closes [#10378](https://github.com/lobehub/lobe-chat/issues/10378) ([cb34757](https://github.com/lobehub/lobe-chat/commit/cb34757))

</details>

<div align="right">

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

</div>
2025-11-23 14:03:57 +00:00
YuTengjing cb34757743 💄 style: optimize nana banana pro error message (#10378) 2025-11-23 21:51:00 +08:00
lobehubbot cdc71b26c6 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-23 12:33:33 +00:00
semantic-release-bot 3aa39a651e 🔖 chore(release): v2.0.0-next.106 [skip ci]
## [Version&nbsp;2.0.0-next.106](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.105...v2.0.0-next.106)
<sup>Released on **2025-11-23**</sup>

####  Features

- **misc**: Add nano-banana-pro model support and optimization.

<br/>

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

#### What's improved

* **misc**: Add nano-banana-pro model support and optimization, closes [#10376](https://github.com/lobehub/lobe-chat/issues/10376) ([5349bdc](https://github.com/lobehub/lobe-chat/commit/5349bdc))

</details>

<div align="right">

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

</div>
2025-11-23 12:32:24 +00:00
YuTengjing 5349bdcabf feat: Add nano-banana-pro model support and optimization (#10376) 2025-11-23 20:19:51 +08:00
lobehubbot 5bbb303806 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-23 11:38:03 +00:00
semantic-release-bot 29f19637d3 🔖 chore(release): v2.0.0-next.105 [skip ci]
## [Version&nbsp;2.0.0-next.105](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.104...v2.0.0-next.105)
<sup>Released on **2025-11-23**</sup>

#### 🐛 Bug Fixes

- **operation**: Isolate loading state to current active topic.

<br/>

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

#### What's fixed

* **operation**: Isolate loading state to current active topic, closes [#10360](https://github.com/lobehub/lobe-chat/issues/10360) ([c568369](https://github.com/lobehub/lobe-chat/commit/c568369))

</details>

<div align="right">

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

</div>
2025-11-23 11:36:36 +00:00
Arvin Xu c568369c69 🐛 fix(operation): isolate loading state to current active topic (#10360)
* fix(operation): isolate loading state to current active topic

- Modified isMainWindowAgentRuntimeRunning to only check operations in current active topic
- Prevents loading state from other topics affecting the send button
- Added comprehensive test case to verify topic isolation
- Fixes issue where switching topics would still show loading state from previous topic

* test: fix isMainWindowAgentRuntimeRunning tests to set active context

- Added activeId and activeTopicId setup in test cases
- Ensured operation context matches active context for proper filtering
- Fixed tests to align with new getCurrentContextOperations-based implementation

* fix: change activeTopicId from null to undefined in tests

- Fixed TypeScript type error where null is not assignable to string | undefined
- Changed all activeTopicId: null to activeTopicId: undefined

* fix: check if operation's message is in current displayed messages

- Changed from using getCurrentContextOperations to checking message presence
- Prevents loading state from showing when switching back to default topic
- Operation's context topicId is captured at creation time and doesn't update
- Now checks if operation's message is in activeDisplayMessages instead

* refactor

* refactor to fix

* try to fix stylelint ci issue

* fix tests

* fix tests
2025-11-23 19:24:40 +08:00
renovate[bot] 19f7d74652 Update dependency electron-vite to v4 (#9007)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-23 15:41:12 +08:00
renovate[bot] ee6b2ea3b9 Update dependency uuid to v13 (#9983)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-23 15:40:37 +08:00
renovate[bot] 5518b822ca Update dependency vite to v7 (#10328)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-23 15:39:15 +08:00
sxjeru 9f20ec4135 🔨 chore: Support Interleaved thinking in kimi-k2-thinking (#10256)
 feat(moonshot): 添加 Kimi K2 思考模型及其高速版本,增强聊天模型功能
2025-11-23 00:16:52 +08:00
LobeHub Bot 89a0fa5337 🌐 chore: translate non-English comments to English in packages/utils (#10351)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-22 23:18:55 +08:00
lobehubbot 1cb9c5a3f2 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-22 11:29:10 +00:00
semantic-release-bot 5cb0c2a2d0 🔖 chore(release): v2.0.0-next.104 [skip ci]
## [Version&nbsp;2.0.0-next.104](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.103...v2.0.0-next.104)
<sup>Released on **2025-11-22**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10349](https://github.com/lobehub/lobe-chat/issues/10349) ([3482d38](https://github.com/lobehub/lobe-chat/commit/3482d38))

</details>

<div align="right">

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

</div>
2025-11-22 11:28:04 +00:00
LobeHub Bot 3482d38ae5 🤖 style: update i18n (#10349)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-22 19:15:14 +08:00
lobehubbot 12d29d9a4d 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-22 10:43:48 +00:00
semantic-release-bot 530c328816 🔖 chore(release): v2.0.0-next.103 [skip ci]
## [Version&nbsp;2.0.0-next.103](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.102...v2.0.0-next.103)
<sup>Released on **2025-11-22**</sup>

#### 🐛 Bug Fixes

- **misc**: Hide ai image config item in settings category.

<br/>

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

#### What's fixed

* **misc**: Hide ai image config item in settings category, closes [#10066](https://github.com/lobehub/lobe-chat/issues/10066) ([90354eb](https://github.com/lobehub/lobe-chat/commit/90354eb))

</details>

<div align="right">

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

</div>
2025-11-22 10:42:32 +00:00
wenhua 90354ebde3 🐛 fix: hide ai image config item in settings category (#10066)
* fix(settings): hide ai image config item in settings category

* fix(settings): Add `showAiImage` to the useMemo dependency array

So the menu re-renders when that flag changes.
2025-11-22 18:30:23 +08:00
YuTengjing 40751393d1 feat: add release date for multiple AI chat models (#10357) 2025-11-22 17:42:30 +08:00
YuTengjing 5b1a9340fa chore: add new badge for image model list (#10356) 2025-11-22 14:40:12 +08:00
lobehubbot 1f00351815 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-22 05:49:01 +00:00
semantic-release-bot 7afbf36f9d 🔖 chore(release): v2.0.0-next.102 [skip ci]
## [Version&nbsp;2.0.0-next.102](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.101...v2.0.0-next.102)
<sup>Released on **2025-11-22**</sup>

####  Features

- **misc**: Add new provider ZenMux & Gemini 3 Pro Image Preview.

<br/>

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

#### What's improved

* **misc**: Add new provider ZenMux & Gemini 3 Pro Image Preview, closes [#10310](https://github.com/lobehub/lobe-chat/issues/10310) ([f2291e4](https://github.com/lobehub/lobe-chat/commit/f2291e4))

</details>

<div align="right">

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

</div>
2025-11-22 05:47:45 +00:00
sxjeru f2291e4fc8 feat: Add new provider ZenMux & Gemini 3 Pro Image Preview (#10310)
Co-authored-by: YuTengjing <ytj2713151713@gmail.com>
2025-11-22 13:36:05 +08:00
lobehubbot ac4d102bef 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-22 05:22:40 +00:00
semantic-release-bot b0f71e774b 🔖 chore(release): v2.0.0-next.101 [skip ci]
## [Version&nbsp;2.0.0-next.101](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.100...v2.0.0-next.101)
<sup>Released on **2025-11-22**</sup>

####  Features

- **misc**: Support bedrok prompt cache and usage compute.

<br/>

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

#### What's improved

* **misc**: Support bedrok prompt cache and usage compute, closes [#10337](https://github.com/lobehub/lobe-chat/issues/10337) ([beb9471](https://github.com/lobehub/lobe-chat/commit/beb9471))

</details>

<div align="right">

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

</div>
2025-11-22 05:21:30 +00:00
YuTengjing beb9471e15 feat: support bedrok prompt cache and usage compute (#10337) 2025-11-22 13:09:07 +08:00
lobehubbot 8b63246491 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 16:16:08 +00:00
semantic-release-bot 9195ba922a 🔖 chore(release): v2.0.0-next.100 [skip ci]
## [Version&nbsp;2.0.0-next.100](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.99...v2.0.0-next.100)
<sup>Released on **2025-11-21**</sup>

#### 🐛 Bug Fixes

- **misc**: Gemini 3 Pro does not display thought summaries.

<br/>

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

#### What's fixed

* **misc**: Gemini 3 Pro does not display thought summaries, closes [#10345](https://github.com/lobehub/lobe-chat/issues/10345) ([89e296a](https://github.com/lobehub/lobe-chat/commit/89e296a))

</details>

<div align="right">

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

</div>
2025-11-21 16:14:53 +00:00
sxjeru 89e296a1c3 🐛 fix: Gemini 3 Pro does not display thought summaries (#10345)
* 💄 style: update filter logic to retain thoughtSignature metadata in Google stream processing

* add tests
2025-11-22 00:02:23 +08:00
lobehubbot 9a799ec6a8 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 14:21:26 +00:00
semantic-release-bot ef7b5b6730 🔖 chore(release): v2.0.0-next.99 [skip ci]
## [Version&nbsp;2.0.0-next.99](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.98...v2.0.0-next.99)
<sup>Released on **2025-11-21**</sup>

####  Features

- **misc**: Refactor to use kb search tool.

<br/>

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

#### What's improved

* **misc**: Refactor to use kb search tool, closes [#10340](https://github.com/lobehub/lobe-chat/issues/10340) ([291ff3c](https://github.com/lobehub/lobe-chat/commit/291ff3c))

</details>

<div align="right">

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

</div>
2025-11-21 14:20:03 +00:00
Arvin Xu 291ff3cc42 feat: refactor to use kb search tool (#10340)
* fix all render

* add kb builtin tool

* 完成知识库搜索功能

* 初步完成知识库读取实现

* finish display

* fix

* fix

* fix

* fix server api mode

* update i18n
2025-11-21 22:05:41 +08:00
Neko 0286d1e15a 🔨 chore: relax codecov with 1% diff threshold (#10326)
* chore: relax codecov with 1% diff threshold

* Update codecov.yml
2025-11-21 21:03:52 +08:00
LobeHub Bot c316414277 test: add unit tests for FileService (#10341)
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-21 21:03:05 +08:00
lobehubbot 3bfc1d2dcf 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 10:11:59 +00:00
semantic-release-bot e600d471b2 🔖 chore(release): v2.0.0-next.98 [skip ci]
## [Version&nbsp;2.0.0-next.98](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.97...v2.0.0-next.98)
<sup>Released on **2025-11-21**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed  changelog pages and open again.

#### 💄 Styles

- **misc**: Fix some translations.

<br/>

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

#### What's fixed

* **misc**: Fixed  changelog pages and open again, closes [#10285](https://github.com/lobehub/lobe-chat/issues/10285) ([871d141](https://github.com/lobehub/lobe-chat/commit/871d141))

#### Styles

* **misc**: Fix some translations, closes [#10343](https://github.com/lobehub/lobe-chat/issues/10343) ([ed193e0](https://github.com/lobehub/lobe-chat/commit/ed193e0))

</details>

<div align="right">

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

</div>
2025-11-21 10:10:33 +00:00
René Wang ed193e096b 💄 style: Fix some translations (#10343)
* fix: Add missing i18n

* fix: Add missing translation

* fix: Fix wrong translation

* fix: translation

* fix: Address wrong translation
2025-11-21 17:56:57 +08:00
René Wang eea41dcb82 👷 build: Add slug to documents table (#10299)
* feat: Add SLUG

* fix: CI

* feat: Update constairnt

* fix: Remove slug from files

* fix: Test error
2025-11-21 17:56:08 +08:00
Shinji-Li 871d1416cc 🐛 fix: fixed changelog pages and open again (#10285)
* feat: fixed  changelog pages and open again

* fix: add discover use dynamic import

* fix: update the routers

* fix: change the pre build mts
2025-11-21 17:47:13 +08:00
renovate[bot] 6d96dec672 Update opentelemetry-js-contrib monorepo (#10254)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 14:20:04 +08:00
renovate[bot] fd93f6d0c7 Update dependency node to v24.11.1 (#10327)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-21 14:18:45 +08:00
René Wang c0542e80a3 🔨 chore: Add CI to Check console.log (#10333)
* lint: Clean breakpoints

* build: Add CI to check

* build: Add `next` branch

* build: Remove markdown files

* fix: CI hang out

* fix: Show warning on GitHub

* feat: Send comment

* fix: CI error

* fix: show file list
2025-11-21 14:18:10 +08:00
lobehubbot 4c7ebd5b39 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-21 04:08:06 +00:00
semantic-release-bot e893886082 🔖 chore(release): v2.0.0-next.97 [skip ci]
## [Version&nbsp;2.0.0-next.97](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.96...v2.0.0-next.97)
<sup>Released on **2025-11-21**</sup>

#### ♻ Code Refactoring

- **misc**: Refactor Conversation to ChatList.

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Code refactoring

* **misc**: Refactor Conversation to ChatList, closes [#10330](https://github.com/lobehub/lobe-chat/issues/10330) ([bca70e2](https://github.com/lobehub/lobe-chat/commit/bca70e2))

#### Styles

* **misc**: Update i18n, closes [#10338](https://github.com/lobehub/lobe-chat/issues/10338) ([9c8cf81](https://github.com/lobehub/lobe-chat/commit/9c8cf81))

</details>

<div align="right">

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

</div>
2025-11-21 04:06:49 +00:00
Arvin Xu bca70e2057 ♻️ refactor: refactor Conversation to ChatList (#10330)
* update

* update

* update

* update

* 🐛 fix(test): update test mocks to use ChatList instead of Conversation

- Update AssistantMessageExtra test mocks from @/features/Conversation/components/Extras/* to @/features/ChatList/components/Extras/*
- Update ComfyUIForm test mock from @/features/Conversation/Error/style to @/features/ChatList/Error/style

Fixes module resolution errors after Conversation -> ChatList refactor

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

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-21 11:52:50 +08:00
LobeHub Bot 1ed9424166 🌐 chore: translate non-English comments to English in services and desktop modules (#10339)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-21 11:43:09 +08:00
LobeHub Bot 9c8cf81759 🤖 style: update i18n (#10338)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-21 11:42:30 +08:00
lobehubbot e7657cf5bc 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 15:41:37 +00:00
semantic-release-bot e83561dffa 🔖 chore(release): v2.0.0-next.96 [skip ci]
## [Version&nbsp;2.0.0-next.96](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.95...v2.0.0-next.96)
<sup>Released on **2025-11-20**</sup>

####  Features

- **misc**: Support Command Menu (CMD + J).

<br/>

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

#### What's improved

* **misc**: Support Command Menu (CMD + J), closes [#10271](https://github.com/lobehub/lobe-chat/issues/10271) ([a9aed0b](https://github.com/lobehub/lobe-chat/commit/a9aed0b))

</details>

<div align="right">

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

</div>
2025-11-20 15:40:17 +00:00
René Wang a9aed0bc44 feat: support Command Menu (CMD + J) (#10271)
* feat: Init

* feat: Add more commands

* opti: Use lazy load

* feat: More command

* fix: CMDK position

* style: Add shortkey hint

* feat: Add entry

* feat: Add About entries

* feat: Add shortcut hint

* feat: Create agent in CMDK

* feat: Ues cmd + J temproraily

* fix: Add missing translation
2025-11-20 23:27:08 +08:00
LobeHub Bot 9472001461 test: add unit tests for conversation-flow indexing and structuring (#10322)
Add comprehensive unit tests for the core parsing phases:
- indexing.ts: Phase 1 helper map building
- structuring.ts: Phase 2 tree construction

Tests cover:
- messageMap, childrenMap, threadMap, messageGroupMap building
- Tree building with branches, threads, and edge cases
- Performance testing for large datasets
- Integration scenarios

32 new test cases added, all passing.

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

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 22:29:02 +08:00
lobehubbot c8c28f2f1a 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 13:40:44 +00:00
Shinji-Li 5777977ff1 chore: update the settings/model pages change model error (#10324)
* chore: update the settings/model the change model error

* fix: add first common active tab
2025-11-20 19:59:03 +08:00
lobehubbot 4ae407844e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 10:11:19 +00:00
semantic-release-bot ba3c7e6068 🔖 chore(release): v2.0.0-next.95 [skip ci]
## [Version&nbsp;2.0.0-next.95](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.94...v2.0.0-next.95)
<sup>Released on **2025-11-20**</sup>

####  Features

- **misc**: Add Security Blacklist for agent runtime.

<br/>

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

#### What's improved

* **misc**: Add Security Blacklist for agent runtime, closes [#10325](https://github.com/lobehub/lobe-chat/issues/10325) ([deab4d0](https://github.com/lobehub/lobe-chat/commit/deab4d0))

</details>

<div align="right">

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

</div>
2025-11-20 10:10:06 +00:00
Arvin Xu deab4d0386 feat: add Security Blacklist for agent runtime (#10325) 2025-11-20 17:57:45 +08:00
lobehubbot a41230ea11 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 05:21:35 +00:00
semantic-release-bot f6dbc1eb2f 🔖 chore(release): v2.0.0-next.94 [skip ci]
## [Version&nbsp;2.0.0-next.94](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.93...v2.0.0-next.94)
<sup>Released on **2025-11-20**</sup>

#### 🐛 Bug Fixes

- **misc**: Provider settings button unable to redirect.

<br/>

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

#### What's fixed

* **misc**: Provider settings button unable to redirect, closes [#10319](https://github.com/lobehub/lobe-chat/issues/10319) ([e025fec](https://github.com/lobehub/lobe-chat/commit/e025fec))

</details>

<div align="right">

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

</div>
2025-11-20 05:20:21 +00:00
sxjeru e025fec9f0 🐛 fix: provider settings button unable to redirect (#10319)
* 🔧 refactor: replace Next.js router with React Router for navigation in ModelSwitchPanel

* 🔧 feat: 添加新多模态模型 Grok 4.1 Fast 和 Grok 4.1 Fast (Non-Reasoning) 到 xai.ts
2025-11-20 13:08:09 +08:00
lobehubbot 4d64d9d045 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-20 03:50:35 +00:00
semantic-release-bot 3730b89f7d 🔖 chore(release): v2.0.0-next.93 [skip ci]
## [Version&nbsp;2.0.0-next.93](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.92...v2.0.0-next.93)
<sup>Released on **2025-11-20**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10317](https://github.com/lobehub/lobe-chat/issues/10317) ([8fb9890](https://github.com/lobehub/lobe-chat/commit/8fb9890))

</details>

<div align="right">

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

</div>
2025-11-20 03:49:19 +00:00
LobeHub Bot 8fb9890737 🤖 style: update i18n (#10317)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-20 11:35:17 +08:00
LobeHub Bot 02d2121355 🌐 chore: translate non-English comments to English in packages/database (#10318)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-20 11:34:31 +08:00
Shinji-Li fe352ff330 ️ perf: delete profiles slug page & settings page (#10316)
* fix: delete profiles slug pages

* fix: delete settings
2025-11-20 11:33:53 +08:00
lobehubbot c7f0a38b57 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 16:51:01 +00:00
semantic-release-bot 5d8648c7d6 🔖 chore(release): v2.0.0-next.92 [skip ci]
## [Version&nbsp;2.0.0-next.92](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.91...v2.0.0-next.92)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Remove debug console logs and add loading state.

<br/>

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

#### Styles

* **misc**: Remove debug console logs and add loading state, closes [#10314](https://github.com/lobehub/lobe-chat/issues/10314) ([094cdff](https://github.com/lobehub/lobe-chat/commit/094cdff))

</details>

<div align="right">

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

</div>
2025-11-19 16:49:55 +00:00
Arvin Xu 094cdff097 💄 style: remove debug console logs and add loading state (#10314)
perf
2025-11-20 00:32:33 +08:00
lobehubbot 83e0cea322 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 16:17:38 +00:00
semantic-release-bot 21c67d6700 🔖 chore(release): v2.0.0-next.91 [skip ci]
## [Version&nbsp;2.0.0-next.91](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.90...v2.0.0-next.91)
<sup>Released on **2025-11-19**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the hydrated false problem.

<br/>

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

#### What's fixed

* **misc**: Fixed the hydrated false problem, closes [#10308](https://github.com/lobehub/lobe-chat/issues/10308) ([340aa2a](https://github.com/lobehub/lobe-chat/commit/340aa2a))

</details>

<div align="right">

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

</div>
2025-11-19 16:16:27 +00:00
Shinji-Li 340aa2a9e9 🐛 fix: fixed the hydrated false problem (#10308)
* fix: fixed the hydrated error problem

* fix: use next/dynamic to replace react-router-dom lazy import

* fix: add registor NavigatorRegistrar back

* fix: add dynamic loading components

* fix: change the dynamic config

* fix: add losting loading layout

* fix: delete useless memo

* fix: add  ErrorBoundary in some layout
2025-11-20 00:04:04 +08:00
lobehubbot a7d1878630 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 14:38:29 +00:00
semantic-release-bot 6a2d439f5c 🔖 chore(release): v2.0.0-next.90 [skip ci]
## [Version&nbsp;2.0.0-next.90](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.89...v2.0.0-next.90)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Extract StatusIndicator component and improve tools display.

<br/>

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

#### Styles

* **misc**: Extract StatusIndicator component and improve tools display, closes [#10311](https://github.com/lobehub/lobe-chat/issues/10311) ([b5ae53a](https://github.com/lobehub/lobe-chat/commit/b5ae53a))

</details>

<div align="right">

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

</div>
2025-11-19 14:37:18 +00:00
Arvin Xu b5ae53ab30 💄 style: extract StatusIndicator component and improve tools display (#10311)
improve
2025-11-19 22:24:01 +08:00
YuTengjing 474af231b5 🔧 chore: sync cloud changes (#10307) 2025-11-19 19:05:38 +08:00
lobehubbot 7ec5594e1c 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 09:38:11 +00:00
semantic-release-bot ffff700c6c 🔖 chore(release): v2.0.0-next.89 [skip ci]
## [Version&nbsp;2.0.0-next.89](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.88...v2.0.0-next.89)
<sup>Released on **2025-11-19**</sup>

####  Features

- **misc**: Support gemini 3.0 tools calling.

<br/>

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

#### What's improved

* **misc**: Support gemini 3.0 tools calling, closes [#10301](https://github.com/lobehub/lobe-chat/issues/10301) ([7114fc1](https://github.com/lobehub/lobe-chat/commit/7114fc1))

</details>

<div align="right">

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

</div>
2025-11-19 09:37:02 +00:00
Arvin Xu 7114fc10c4 feat: support gemini 3.0 tools calling (#10301)
* fix error display

* 完整支持 gemini 的 Function calling 机制

* add fetchsse

* fix continue mode

* improve

* refactor

* fix
2025-11-19 17:24:46 +08:00
lobehubbot 973367c7ac 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 06:11:56 +00:00
semantic-release-bot d1c57a1f97 🔖 chore(release): v2.0.0-next.88 [skip ci]
## [Version&nbsp;2.0.0-next.88](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.87...v2.0.0-next.88)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Fully support Gemini 3.0 model.

<br/>

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

#### Styles

* **misc**: Fully support Gemini 3.0 model, closes [#10292](https://github.com/lobehub/lobe-chat/issues/10292) ([6545ef8](https://github.com/lobehub/lobe-chat/commit/6545ef8))

</details>

<div align="right">

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

</div>
2025-11-19 06:10:46 +00:00
sxjeru 6545ef863c 💄 style: Fully support Gemini 3.0 model (#10292)
* feat: 添加 Gemini 3 Pro 模型并移除 Gemini 2.0 Flash 预览模型

* feat: 添加思考水平功能,更新相关模型和配置

* feat: 添加 Gemini 3 Pro 模型并移除旧版 Gemini 2.5 Flash 和 Flash-Lite 模型

* feat: 添加 Gemini 3 Pro 预览模型及其相关配置

* fix: 调整 ThinkingLevelSlider 组件的最小宽度为 130

* fix: 修正对 3.0 模型的思考级别判断条件
2025-11-19 13:57:52 +08:00
lobehubbot de60a6732e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 05:14:48 +00:00
semantic-release-bot d178d4f931 🔖 chore(release): v2.0.0-next.87 [skip ci]
## [Version&nbsp;2.0.0-next.87](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.86...v2.0.0-next.87)
<sup>Released on **2025-11-19**</sup>

#### ♻ Code Refactoring

- **misc**: Refactor chat selectors.

<br/>

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

#### Code refactoring

* **misc**: Refactor chat selectors, closes [#10274](https://github.com/lobehub/lobe-chat/issues/10274) ([0a056f3](https://github.com/lobehub/lobe-chat/commit/0a056f3))

</details>

<div align="right">

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

</div>
2025-11-19 05:13:36 +00:00
Arvin Xu 0a056f3f0b ♻️ refactor: refactor chat selectors (#10274)
refactor chat selectors to displayMessageSelectors
2025-11-19 13:00:03 +08:00
lobehubbot c5d71fe165 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 04:02:23 +00:00
semantic-release-bot 741f588cae 🔖 chore(release): v2.0.0-next.86 [skip ci]
## [Version&nbsp;2.0.0-next.86](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.85...v2.0.0-next.86)
<sup>Released on **2025-11-19**</sup>

####  Features

- **misc**: Support user abort in the agent runtime.

<br/>

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

#### What's improved

* **misc**: Support user abort in the agent runtime, closes [#10289](https://github.com/lobehub/lobe-chat/issues/10289) ([0925069](https://github.com/lobehub/lobe-chat/commit/0925069))

</details>

<div align="right">

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

</div>
2025-11-19 04:01:07 +00:00
Arvin Xu 092506906a feat: support user abort in the agent runtime (#10289)
* use operation

* add integration tests

* refactor context to operation id

* refactor to support cancel ai streaming

* refactor to support to cancel tools calling

* add finish type

* 初步实现 agent runtime 的中断逻辑

* refactor agent runtime config

* debug cancel

* 完成 tool operation 调用重构

* add tests

* fix tests

* fix tests

* refactor state to isAgentRuntimeRunning

* fix loading state

* add more tests

*  test: add test for human_abort extractAbortInfo path

- Add test for unified abort check with human_abort phase
- Covers extractAbortInfo lines 140-145
- Improves GeneralChatAgent coverage to 100% statements

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix

* auto clean up

* 🐛 fix: prevent showing success status when tool execution is cancelled

- Add abort check after tool execution completes
- Skip completion and success logging if operation was cancelled during execution
- Prevents race condition where success message shows before abort status
- Add test for tool execution cancelled during execution scenario

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix thread send

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-19 11:48:51 +08:00
LobeHub Bot e8c7d1c568 🌐 chore: translate non-English comments to English in networkProxy (#10293)
🌐 chore: translate non-English comments to English in networkProxy module

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

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-19 11:42:31 +08:00
lobehubbot 61bb8aeaf2 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 03:13:14 +00:00
semantic-release-bot caaa331002 🔖 chore(release): v2.0.0-next.85 [skip ci]
## [Version&nbsp;2.0.0-next.85](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.84...v2.0.0-next.85)
<sup>Released on **2025-11-19**</sup>

#### 🐛 Bug Fixes

- **misc**: Slove discover pagination router.

<br/>

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

#### What's fixed

* **misc**: Slove discover pagination router, closes [#10294](https://github.com/lobehub/lobe-chat/issues/10294) ([fcda0b5](https://github.com/lobehub/lobe-chat/commit/fcda0b5))

</details>

<div align="right">

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

</div>
2025-11-19 03:12:04 +00:00
Shinji-Li fcda0b50f1 🐛 fix: slove discover pagination router (#10294)
fix: slove discover pagination router
2025-11-19 10:58:31 +08:00
lobehubbot 53a2c30a75 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 02:15:09 +00:00
semantic-release-bot 203fdc4b22 🔖 chore(release): v2.0.0-next.84 [skip ci]
## [Version&nbsp;2.0.0-next.84](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.83...v2.0.0-next.84)
<sup>Released on **2025-11-19**</sup>

#### 💄 Styles

- **misc**: Add Gemini 3.0 Pro Preview to Google Provider.

<br/>

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

#### Styles

* **misc**: Add Gemini 3.0 Pro Preview to Google Provider, closes [#10290](https://github.com/lobehub/lobe-chat/issues/10290) ([25c4358](https://github.com/lobehub/lobe-chat/commit/25c4358))

</details>

<div align="right">

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

</div>
2025-11-19 02:14:01 +00:00
泠音 25c43587de 💄 style: add Gemini 3.0 Pro Preview to Google Provider (#10290)
* 💄 style: add Gemini 3.0 Pro Preview Thinking to Google Provider

* Update google.ts

* fix model id
2025-11-19 09:59:36 +08:00
lobehubbot 2cd2ca9a23 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-19 01:36:26 +00:00
semantic-release-bot 7636344e07 🔖 chore(release): v2.0.0-next.83 [skip ci]
## [Version&nbsp;2.0.0-next.83](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.82...v2.0.0-next.83)
<sup>Released on **2025-11-19**</sup>

####  Features

- **misc**: New API support switch Responses API mode.

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### What's improved

* **misc**: New API support switch Responses API mode, closes [#9776](https://github.com/lobehub/lobe-chat/issues/9776) [#9916](https://github.com/lobehub/lobe-chat/issues/9916) [#9997](https://github.com/lobehub/lobe-chat/issues/9997) [#9916](https://github.com/lobehub/lobe-chat/issues/9916) ([d0ee3df](https://github.com/lobehub/lobe-chat/commit/d0ee3df))

#### Styles

* **misc**: Update i18n, closes [#10291](https://github.com/lobehub/lobe-chat/issues/10291) ([1c9f0d9](https://github.com/lobehub/lobe-chat/commit/1c9f0d9))

</details>

<div align="right">

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

</div>
2025-11-19 01:35:16 +00:00
LobeHub Bot 1c9f0d9b72 🤖 style: update i18n (#10291)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-19 09:22:50 +08:00
sxjeru d0ee3df579 feat: New API support switch Responses API mode (#9776)
*  feat: 添加对新API和路由类型的支持,更新相关配置以启用Responses API

* fix: 更新测试文件中的console.error和console.debug实现,确保输出格式一致;在CreateNewProvider组件中调整provider图标映射逻辑

*  feat: 更新novita和qwen模型,调整定价策略,添加新模型及其功能

* 🐛 fix: OIDC error when connecting to self-host instance (#9916)

fix: oidc/consent redirect header

*  feat: 添加 MiniMax M2 和 Qwen3 VL 235B Instruct 模型,更新模型属性
🔧 fix: 修复免费标识逻辑,确保正确判断模型是否免费

*  feat: 添加 MiniMax-M2 模型,更新 SiliconCloud 和 Vercel AI Gateway 模型信息,调整 Kimi K2 的上下文窗口大小

* fix test

* 📝 docs: update ComfyUI documentation cover image URL (#9997)

* 🔖 chore(release): v1.142.9 [skip ci]

### [Version&nbsp;1.142.9](https://github.com/lobehub/lobe-chat/compare/v1.142.8...v1.142.9)
<sup>Released on **2025-11-02**</sup>

#### 🐛 Bug Fixes

- **misc**: OIDC error when connecting to self-host instance.

<br/>

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

#### What's fixed

* **misc**: OIDC error when connecting to self-host instance, closes [#9916](https://github.com/lobehub/lobe-chat/issues/9916) ([2e2b9c4](https://github.com/lobehub/lobe-chat/commit/2e2b9c4))

</details>

<div align="right">

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

</div>

* 📝 docs(bot): Auto sync agents & plugin to readme

* 优化 Responses API 处理逻辑,优化错误处理和流数据转换

---------

Co-authored-by: Aloxaf <bailong104@gmail.com>
2025-11-19 00:53:18 +08:00
lobehubbot 3ad336fa28 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 16:51:14 +00:00
semantic-release-bot 92b65f7b7a 🔖 chore(release): v2.0.0-next.82 [skip ci]
## [Version&nbsp;2.0.0-next.82](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.81...v2.0.0-next.82)
<sup>Released on **2025-11-18**</sup>

#### 🐛 Bug Fixes

- **misc**: Fix noisy error notification.

<br/>

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

#### What's fixed

* **misc**: Fix noisy error notification, closes [#10286](https://github.com/lobehub/lobe-chat/issues/10286) ([9ea680c](https://github.com/lobehub/lobe-chat/commit/9ea680c))

</details>

<div align="right">

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

</div>
2025-11-18 16:50:01 +00:00
Arvin Xu 9ea680c96d 🐛 fix: fix noisy error notification (#10286)
fix error notifcation
2025-11-19 00:38:11 +08:00
lobehubbot 457e7c130d 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 09:22:34 +00:00
semantic-release-bot 4d8053bebe 🔖 chore(release): v2.0.0-next.81 [skip ci]
## [Version&nbsp;2.0.0-next.81](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.80...v2.0.0-next.81)
<sup>Released on **2025-11-18**</sup>

#### 🐛 Bug Fixes

- **misc**: Slove when logout always show loading.

<br/>

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

#### What's fixed

* **misc**: Slove when logout always show loading, closes [#10284](https://github.com/lobehub/lobe-chat/issues/10284) ([d91fb73](https://github.com/lobehub/lobe-chat/commit/d91fb73))

</details>

<div align="right">

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

</div>
2025-11-18 09:21:22 +00:00
Shinji-Li d91fb73f68 🐛 fix: slove when logout always show loading (#10284)
fix: slove when logout always show loading
2025-11-18 17:06:59 +08:00
lobehubbot 14fe7c5736 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 08:54:56 +00:00
semantic-release-bot 4c68fc3e3a 🔖 chore(release): v2.0.0-next.80 [skip ci]
## [Version&nbsp;2.0.0-next.80](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.79...v2.0.0-next.80)
<sup>Released on **2025-11-18**</sup>

<br/>

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

</details>

<div align="right">

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

</div>
2025-11-18 08:53:45 +00:00
René Wang 10e44dfb6b 👷 build: Update schema for incoming folder (#10217)
* feat: Update schema

* fix: Circular deps

* feat: Add more validate

* fix: Vercel build error

* fix: Duplicated import

* fix: Circular deps

* feat: Set varchar from 30 to 255

* feat: Regenerate migration file

* feat: Regenerate migration

* feat: Regenerate migration
2025-11-18 16:42:13 +08:00
lobehubbot 5889e8e85c 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 07:05:16 +00:00
semantic-release-bot 5e41d9a39c 🔖 chore(release): v2.0.0-next.79 [skip ci]
## [Version&nbsp;2.0.0-next.79](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.78...v2.0.0-next.79)
<sup>Released on **2025-11-18**</sup>

#### 🐛 Bug Fixes

- **misc**: Fixed the discover page categray sider link error.

<br/>

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

#### What's fixed

* **misc**: Fixed the discover page categray sider link error, closes [#10282](https://github.com/lobehub/lobe-chat/issues/10282) ([39e8819](https://github.com/lobehub/lobe-chat/commit/39e8819))

</details>

<div align="right">

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

</div>
2025-11-18 07:03:59 +00:00
LobeHub Bot be096eb9ff test: add unit tests for genWhere utilities (#10281)
Added comprehensive unit tests for database query builder utilities in src/utils/genWhere.ts covering:
- genWhere: SQL condition combination logic
- genStartDateWhere: Start date filtering with validation
- genEndDateWhere: End date filtering with date increment
- genRangeWhere: Date range filtering with edge cases

All 32 test cases pass successfully.

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

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 14:51:43 +08:00
Shinji-Li 39e88196d7 🐛 fix: fixed the discover page categray sider link error (#10282)
fix: fixed the discover page categray sider link error
2025-11-18 14:48:52 +08:00
lobehubbot ceadd61ce3 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 05:13:13 +00:00
Arvin Xu c5e0ecd31e 🔨 chore: implement unified operation state management (#10275)
*  feat: implement unified operation state management (Phase 1)

Implement RFC-Operation-Runtime-Integration Phase 1:
- Add Operation type system with 17 operation types
- Implement Operation CRUD actions (start, complete, cancel, fail)
- Add Operation selectors for querying and status checks
- Integrate Operation state into ChatStore
- Add comprehensive unit tests (22 tests, 100% pass)
- Update AgentRuntimeContext to include operationId

This provides foundation for eliminating redundant context passing
and achieving zero-redundancy operation management.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor

* fix test

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 13:01:20 +08:00
lobehubbot 21c6eb015f 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 04:44:02 +00:00
semantic-release-bot 031d6f44dc 🔖 chore(release): v2.0.0-next.78 [skip ci]
## [Version&nbsp;2.0.0-next.78](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.77...v2.0.0-next.78)
<sup>Released on **2025-11-18**</sup>

<br/>

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

</details>

<div align="right">

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

</div>
2025-11-18 04:42:48 +00:00
Arvin Xu 5ce5532a0e ️ perf: revert dropdown prefetch (#10279)
fix dropdown render
2025-11-18 12:31:04 +08:00
lobehubbot a53b3a5ca1 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 04:05:29 +00:00
semantic-release-bot 9c5341e098 🔖 chore(release): v2.0.0-next.77 [skip ci]
## [Version&nbsp;2.0.0-next.77](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.76...v2.0.0-next.77)
<sup>Released on **2025-11-18**</sup>

#### ♻ Code Refactoring

- **misc**: Delete /settings/newapi pages in nextjs build.

<br/>

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

#### Code refactoring

* **misc**: Delete /settings/newapi pages in nextjs build, closes [#10278](https://github.com/lobehub/lobe-chat/issues/10278) ([9d06753](https://github.com/lobehub/lobe-chat/commit/9d06753))

</details>

<div align="right">

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

</div>
2025-11-18 04:04:16 +00:00
Shinji-Li 9d067534ae ♻️ refactor: delete /settings/newapi pages in nextjs build (#10278)
refactor: delete /settings/newapi pages in nextjs build
2025-11-18 11:52:50 +08:00
lobehubbot 6c095a6652 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 03:32:23 +00:00
semantic-release-bot d74f424518 🔖 chore(release): v2.0.0-next.76 [skip ci]
## [Version&nbsp;2.0.0-next.76](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.75...v2.0.0-next.76)
<sup>Released on **2025-11-18**</sup>

####  Features

- **misc**: Support Interleaved thinking in MiniMax.

<br/>

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

#### What's improved

* **misc**: Support Interleaved thinking in MiniMax, closes [#10255](https://github.com/lobehub/lobe-chat/issues/10255) ([13ca8e1](https://github.com/lobehub/lobe-chat/commit/13ca8e1))

</details>

<div align="right">

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

</div>
2025-11-18 03:31:09 +00:00
LobeHub Bot 992f4e5ad7 test: add unit tests for colorUtils (#10268)
Added comprehensive unit tests for convertAlphaToSolid function covering:
- Fully opaque and transparent colors
- Various opacity levels (25%, 50%, 75%, 99%)
- Different color formats (hex, rgba, named colors)
- Complex color blending scenarios
- Edge cases with very low/high alpha values
- Complementary colors blending
- Grayscale blending
- Input format consistency

Total: 21 test cases, all passing

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

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-18 11:20:11 +08:00
sxjeru 13ca8e18c8 feat: Support Interleaved thinking in MiniMax (#10255)
feat: Enhance LobeMinimaxAI with interleaved thinking and message processing

- Updated LobeMinimaxAI to handle new message structure including reasoning details.
- Added logic to process messages for reasoning content and signatures.
- Resolved parameters with constraints and included reasoning_split in the payload.

test: Update snapshots for NovitaAI, OpenAI, and PPIO models

- Added new models and updated existing model descriptions in snapshots for NovitaAI.
- Updated OpenAI model snapshots to reflect new model additions and descriptions.
- Included new DeepSeek models in PPIO snapshots with detailed descriptions.

fix: Improve error messages for quota and permission issues

- Enhanced error messages for quota limits and permissions to improve clarity and user experience.
2025-11-18 11:19:53 +08:00
lobehubbot fbcd04696e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-18 01:49:45 +00:00
semantic-release-bot 037c8b5fae 🔖 chore(release): v2.0.0-next.75 [skip ci]
## [Version&nbsp;2.0.0-next.75](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.74...v2.0.0-next.75)
<sup>Released on **2025-11-18**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10277](https://github.com/lobehub/lobe-chat/issues/10277) ([7563b62](https://github.com/lobehub/lobe-chat/commit/7563b62))

</details>

<div align="right">

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

</div>
2025-11-18 01:48:39 +00:00
LobeHub Bot 7563b62b80 🤖 style: update i18n (#10277) 2025-11-18 09:37:27 +08:00
lobehubbot 3edeb21bb7 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 18:23:17 +00:00
semantic-release-bot 9c4780c82e 🔖 chore(release): v2.0.0-next.74 [skip ci]
## [Version&nbsp;2.0.0-next.74](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.73...v2.0.0-next.74)
<sup>Released on **2025-11-17**</sup>

####  Features

- **misc**: Edit local file render & intervention.

<br/>

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

#### What's improved

* **misc**: Edit local file render & intervention, closes [#10269](https://github.com/lobehub/lobe-chat/issues/10269) ([3785a71](https://github.com/lobehub/lobe-chat/commit/3785a71))

</details>

<div align="right">

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

</div>
2025-11-17 18:22:01 +00:00
Arvin Xu 3785a7109a feat: edit local file render & intervention (#10269)
* support editFile render

* clean and add tests

* improve hover state

* support edit local file

* fix tests

* fix desktop build

* fix desktop build

* Revert "fix desktop build"

This reverts commit 6ce58b2eeb.
2025-11-18 02:07:58 +08:00
Arvin Xu 3f4313095f 🔨 chore: update desktop build workflow (#10276)
* fix desktop build

* Revert "fix desktop build"

This reverts commit 455996af6b.

* fix desktop build
2025-11-18 01:20:28 +08:00
lobehubbot 05aeae1b14 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 16:13:10 +00:00
semantic-release-bot 2cedca58fe 🔖 chore(release): v2.0.0-next.73 [skip ci]
## [Version&nbsp;2.0.0-next.73](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.72...v2.0.0-next.73)
<sup>Released on **2025-11-17**</sup>

####  Features

- **misc**: Support parallel topic agent runtime.

<br/>

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

#### What's improved

* **misc**: Support parallel topic agent runtime, closes [#10273](https://github.com/lobehub/lobe-chat/issues/10273) ([02eba3c](https://github.com/lobehub/lobe-chat/commit/02eba3c))

</details>

<div align="right">

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

</div>
2025-11-17 16:11:54 +00:00
Arvin Xu 02eba3ce64 feat: support parallel topic agent runtime (#10273)
* add

* refactor to support split topic running

* refactor to support split topic running

* support loading

* fix tests

* fix tests

* fix tests

* fix getDbMessageById
2025-11-18 00:00:17 +08:00
lobehubbot 7461d4e486 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 13:06:05 +00:00
Shinji-Li f445ab013c ♻️ refactor: refactor the root from nextjs router to react-router-dom (#10094)
* feat: change the root path to react-router-dom to render spa

* feat: disable / to /chat rewrite

* feat: change /settings labs image profile changelog to spa mode

* feat: use loading to dynamic loading

* fix: change the goback & knowledge/base url

* feat: change some nextjs router to react-router-dom use

* feat: link replace to react-router-dom

* fix: delete useless code

* feat: fix mobile agent settings page not work problem

* fix: fix the test

* fix: slove the router back

* fix: slove ts problem

* fix: change the router judge by servers

* feat: change AppRouter to Desktop Router & mobile Router to dynamic import

* fix: refactor the memory router to browser router

* feat: /chat delete pages & layouts dir

* feat: change all discover page to the spa

* feat: discover pages layout & pages routers get done

* feat: change all routes to outer routes

* feat: change the :slug to react-router loader to get

* feat: change NextJs Link useRouter useSearchParams change to react-router way

* fix: delete some layout tsx & update the ts

* feat: change local params get use ReactRouter Outlet context

* fix: fix hydrateFallback problem

* fix: fix build problem

* fix: change the changelog pages render

* feat: delete all nuqs

* feat: change the mobile me layout back

* chore: add mobile me layout back

* fix: discover find more  link error fixed

* fix: add nuqs back & useQueryState back in oath

* fix: add files back

* fix: add files back

* feat: use starTransition to navigate url

* fix: close the loading in the layout loading

* chore: update test.ts in TopActions.tsx

* fix: delete useless code

* fix: fix mobile router goback fc

* fix: delete the changelog modal page

* feat: fix a lot router problem

* fix: fix useNav in discover page error problem

* feat: rollback some changes about layout

* fix: fixed the desktop knowledge page router

* fix: fixed usage router error

* fix: fixed router link error

* fix: fixed the url & new url not path problem

* fix: fixed the test

* feat: update the useQueryParams throttleMs params

* feat: use more simple way to update session hydration

* fix: delete useless code

* fix: delete uesless code

* fix: mobile chat settings go back

* fix: fix the reload was loading page problem

* fix: fixed the test error

* fix: add router ErrorBoundary

* test: test the loading error

* fix: try to fixed

* fix: test mobile

* feat: add loading back
2025-11-17 20:54:37 +08:00
lobehubbot f88e01e59b 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 11:56:28 +00:00
semantic-release-bot 8b5fc3656b 🔖 chore(release): v2.0.0-next.72 [skip ci]
## [Version&nbsp;2.0.0-next.72](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.71...v2.0.0-next.72)
<sup>Released on **2025-11-17**</sup>

#### 💄 Styles

- **misc**: Add model information for the Qiniu provider.

<br/>

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

#### Styles

* **misc**: Add model information for the Qiniu provider, closes [#10270](https://github.com/lobehub/lobe-chat/issues/10270) ([06af793](https://github.com/lobehub/lobe-chat/commit/06af793))

</details>

<div align="right">

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

</div>
2025-11-17 11:55:22 +00:00
yliu7949 06af7939e4 💄 style: Add model information for the Qiniu provider (#10270)
style(): update qiniu.ts
2025-11-17 19:43:13 +08:00
lobehubbot e12965c7df 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 10:26:09 +00:00
semantic-release-bot 7afd1318db 🔖 chore(release): v2.0.0-next.71 [skip ci]
## [Version&nbsp;2.0.0-next.71](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.70...v2.0.0-next.71)
<sup>Released on **2025-11-17**</sup>

#### 🐛 Bug Fixes

- **misc**: Fix desktop user panel.

<br/>

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

#### What's fixed

* **misc**: Fix desktop user panel, closes [#10272](https://github.com/lobehub/lobe-chat/issues/10272) ([6a374d2](https://github.com/lobehub/lobe-chat/commit/6a374d2))

</details>

<div align="right">

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

</div>
2025-11-17 10:24:55 +00:00
Arvin Xu 6a374d2f32 🐛 fix: fix desktop user panel (#10272)
fix desktop
2025-11-17 18:13:34 +08:00
renovate[bot] cec034721f Update opentelemetry-js monorepo to ^0.208.0 (#10253)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-17 13:08:48 +08:00
lobehubbot 2d70632d3e 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 04:14:39 +00:00
semantic-release-bot 41c554d748 🔖 chore(release): v2.0.0-next.70 [skip ci]
## [Version&nbsp;2.0.0-next.70](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.69...v2.0.0-next.70)
<sup>Released on **2025-11-17**</sup>

<br/>

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

</details>

<div align="right">

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

</div>
2025-11-17 04:13:23 +00:00
LobeHub Bot 4e4933d861 🌐 chore: translate non-English comments to English in packages/types and packages/web-crawler (#10267)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-17 12:01:06 +08:00
René Wang a5bb31b844 ️ perf: improve Chat Screenshot and fix image geneartion (#10261)
* feat: Support narrow mode export

* feat: Replace `modern-screenshot` with `snapDom`

* feat: Add CORS proxy
2025-11-17 12:00:44 +08:00
renovate[bot] b76e3c85b9 Update all non-major dependencies (#10177)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-17 09:56:56 +08:00
lobehubbot 29ce0225b2 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-17 01:49:09 +00:00
semantic-release-bot 06878829c9 🔖 chore(release): v2.0.0-next.69 [skip ci]
## [Version&nbsp;2.0.0-next.69](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.68...v2.0.0-next.69)
<sup>Released on **2025-11-17**</sup>

#### ♻ Code Refactoring

- **misc**: Remove `language_model_settings` and remove isDeprecatedEdition.

<br/>

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

#### Code refactoring

* **misc**: Remove `language_model_settings` and remove isDeprecatedEdition, closes [#10264](https://github.com/lobehub/lobe-chat/issues/10264) ([ae613c7](https://github.com/lobehub/lobe-chat/commit/ae613c7))

</details>

<div align="right">

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

</div>
2025-11-17 01:47:59 +00:00
Arvin Xu ae613c7c35 ♻️ refactor: remove language_model_settings and remove isDeprecatedEdition (#10264) 2025-11-17 09:35:49 +08:00
lobehubbot 8184f9d097 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-16 15:20:51 +00:00
semantic-release-bot 7fac37b983 🔖 chore(release): v2.0.0-next.68 [skip ci]
## [Version&nbsp;2.0.0-next.68](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.67...v2.0.0-next.68)
<sup>Released on **2025-11-16**</sup>

#### 🐛 Bug Fixes

- **misc**: The tool to fail execution on ollama when a message contains b….

<br/>

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

#### What's fixed

* **misc**: The tool to fail execution on ollama when a message contains b…, closes [#10259](https://github.com/lobehub/lobe-chat/issues/10259) ([1ad8080](https://github.com/lobehub/lobe-chat/commit/1ad8080))

</details>

<div align="right">

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

</div>
2025-11-16 15:19:33 +00:00
Arvin Xu d3570879da 🔨 chore: unpin eta (#10260) 2025-11-16 23:07:44 +08:00
Hypo 1ad80809cf 🐛 fix: the tool to fail execution on ollama when a message contains b… (#10259) 2025-11-16 23:06:33 +08:00
lobehubbot 2c97a9e920 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-16 11:59:30 +00:00
semantic-release-bot 246cce28db 🔖 chore(release): v2.0.0-next.67 [skip ci]
## [Version&nbsp;2.0.0-next.67](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.66...v2.0.0-next.67)
<sup>Released on **2025-11-16**</sup>

#### ♻ Code Refactoring

- **misc**: Refactor to virtua.

<br/>

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

#### Code refactoring

* **misc**: Refactor to virtua, closes [#10151](https://github.com/lobehub/lobe-chat/issues/10151) ([9ffb689](https://github.com/lobehub/lobe-chat/commit/9ffb689))

</details>

<div align="right">

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

</div>
2025-11-16 11:58:19 +00:00
Arvin Xu 9ffb6891e4 ♻️ refactor: refactor to virtua (#10151)
* refactor to virtua

* try virtua

* 默认滚动到底部

* fix
2025-11-16 19:46:41 +08:00
lobehubbot 766ca942b3 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-16 07:02:41 +00:00
semantic-release-bot 147975ae46 🔖 chore(release): v2.0.0-next.66 [skip ci]
## [Version&nbsp;2.0.0-next.66](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.65...v2.0.0-next.66)
<sup>Released on **2025-11-16**</sup>

####  Features

- **misc**: Support to collapse message.

<br/>

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

#### What's improved

* **misc**: Support to collapse message, closes [#10234](https://github.com/lobehub/lobe-chat/issues/10234) ([4cd6347](https://github.com/lobehub/lobe-chat/commit/4cd6347))

</details>

<div align="right">

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

</div>
2025-11-16 07:01:10 +00:00
renovate[bot] a6c3317192 Update dependency lucide-react to ^0.553.0 (#10250)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 14:48:08 +08:00
Arvin Xu 4cd6347d7e feat: support to collapse message (#10234)
*  feat: add message collapse functionality

- Add collapsed field to MessageMetadata type and schema
- Add isMessageCollapsed selector to check message collapse state
- Add toggleMessageCollapsed action with optimistic update
- Export getDisplayMessageById for internal use
- Collapse state persists to database via metadata field

* 💄 ui: add collapse UI for assistant messages

- Add collapse/expand action icons to action bar
- Add collapsed message style with 200px max height and gradient overlay
- Add collapse/expand translations (zh-CN)
- Integrate with toggleMessageCollapsed store action
- Show appropriate icon based on collapsed state

* support CollapsedMessage

* update

* improve test time

* refactor fixtures

* fix tests

* improve i18n
2025-11-16 14:46:27 +08:00
Shinji-Li cd7d955e3d 🔨 chore: change the market base url to online market.lobehub.com (#10247)
* fix: change the market base url to online market.lobehub.com

* feat: update the market callback layout
2025-11-16 12:14:27 +08:00
renovate[bot] 61901ddb07 Update dependency ollama to ^0.6.3 (#10244)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 11:34:45 +08:00
renovate[bot] 77ed938cfb Update dependency @vercel/otel to v2 (#9969)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 11:34:36 +08:00
renovate[bot] 4c3ac3bce7 Update dependency dayjs to >=1.11.19 (#10241)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 11:33:22 +08:00
renovate[bot] a142b3384f Update aws-sdk-js-v3 monorepo to ~3.932.0 (#10119)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 11:31:49 +08:00
renovate[bot] ee80f613df Update dependency nanoid to >=5.1.6 (#10243)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-16 11:24:48 +08:00
lobehubbot 7d05d0270c 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-16 02:12:14 +00:00
semantic-release-bot acd5954f15 🔖 chore(release): v2.0.0-next.65 [skip ci]
## [Version&nbsp;2.0.0-next.65](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.64...v2.0.0-next.65)
<sup>Released on **2025-11-16**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10235](https://github.com/lobehub/lobe-chat/issues/10235) ([a52c9e5](https://github.com/lobehub/lobe-chat/commit/a52c9e5))

</details>

<div align="right">

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

</div>
2025-11-16 02:11:08 +00:00
LobeHub Bot a52c9e5f24 🤖 style: update i18n (#10235) 2025-11-16 09:58:21 +08:00
lobehubbot bcb998d767 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-15 16:51:17 +00:00
semantic-release-bot c6410b29c5 🔖 chore(release): v2.0.0-next.64 [skip ci]
## [Version&nbsp;2.0.0-next.64](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.63...v2.0.0-next.64)
<sup>Released on **2025-11-15**</sup>

#### ♻ Code Refactoring

- **misc**: Refactor package types.

<br/>

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

#### Code refactoring

* **misc**: Refactor package types, closes [#10233](https://github.com/lobehub/lobe-chat/issues/10233) ([9872409](https://github.com/lobehub/lobe-chat/commit/9872409))

</details>

<div align="right">

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

</div>
2025-11-15 16:50:03 +00:00
Arvin Xu 9872409d98 ♻️ refactor: refactor package types (#10233)
* refactor packages types

* remove lite mode
2025-11-16 00:37:55 +08:00
lobehubbot 319a622778 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-15 16:08:24 +00:00
semantic-release-bot 85153f2464 🔖 chore(release): v2.0.0-next.63 [skip ci]
## [Version&nbsp;2.0.0-next.63](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.62...v2.0.0-next.63)
<sup>Released on **2025-11-15**</sup>

####  Features

- **misc**: Show orphaned tool message and support delete tool message.

<br/>

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

#### What's improved

* **misc**: Show orphaned tool message and support delete tool message, closes [#10232](https://github.com/lobehub/lobe-chat/issues/10232) ([38cfd26](https://github.com/lobehub/lobe-chat/commit/38cfd26))

</details>

<div align="right">

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

</div>
2025-11-15 16:07:14 +00:00
Arvin Xu 38cfd266f4 feat: show orphaned tool message and support delete tool message (#10232)
* show  orphaned tool message

* support delete messages

* update i18n

* clean console.log

* improve system role

* fix
2025-11-15 23:55:13 +08:00
lobehubbot 2c93d9bb1a 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-15 06:46:35 +00:00
semantic-release-bot a2c3b9e375 🔖 chore(release): v2.0.0-next.62 [skip ci]
## [Version&nbsp;2.0.0-next.62](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.61...v2.0.0-next.62)
<sup>Released on **2025-11-15**</sup>

#### 🐛 Bug Fixes

- **next16**: Resolve 'Response body object should not be disturbed or locked' error.

<br/>

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

#### What's fixed

* **next16**: Resolve 'Response body object should not be disturbed or locked' error, closes [#10226](https://github.com/lobehub/lobe-chat/issues/10226) ([caa9c78](https://github.com/lobehub/lobe-chat/commit/caa9c78))

</details>

<div align="right">

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

</div>
2025-11-15 06:45:30 +00:00
Arvin Xu caa9c78623 🐛 fix(next16): resolve 'Response body object should not be disturbed or locked' error (#10226)
- Add prepareRequestForTRPC utility to clone Request objects for tRPC handlers
- Update all tRPC route handlers (lambda, async, desktop, mobile, tools) to use cloned requests
- Update checkAuth middleware to clone requests before passing to handlers
- This fixes the issue where Next.js 16 internal mechanisms disturb the request body stream
- Resolves: https://github.com/vercel/next.js/issues/83453
2025-11-15 14:33:28 +08:00
lobehubbot 2072b56708 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-15 04:11:38 +00:00
semantic-release-bot f95aeb2ca6 🔖 chore(release): v2.0.0-next.61 [skip ci]
## [Version&nbsp;2.0.0-next.61](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.60...v2.0.0-next.61)
<sup>Released on **2025-11-15**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10224](https://github.com/lobehub/lobe-chat/issues/10224) ([ca7551f](https://github.com/lobehub/lobe-chat/commit/ca7551f))

</details>

<div align="right">

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

</div>
2025-11-15 04:10:28 +00:00
LobeHub Bot ca7551fb40 🤖 style: update i18n (#10224) 2025-11-15 11:58:40 +08:00
LobeHub Bot 0d6cb06d59 🌐 chore: translate non-English comments to English in database models (#10225) 2025-11-15 11:58:00 +08:00
lobehubbot 23a7c00181 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 16:50:11 +00:00
semantic-release-bot 51dbf94576 🔖 chore(release): v2.0.0-next.60 [skip ci]
## [Version&nbsp;2.0.0-next.60](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.59...v2.0.0-next.60)
<sup>Released on **2025-11-14**</sup>

#### 🐛 Bug Fixes

- **misc**: Reduce threshold.

<br/>

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

#### What's fixed

* **misc**: Reduce threshold, closes [#10222](https://github.com/lobehub/lobe-chat/issues/10222) ([abdfd06](https://github.com/lobehub/lobe-chat/commit/abdfd06))

</details>

<div align="right">

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

</div>
2025-11-14 16:49:01 +00:00
René Wang abdfd064e7 🐛 fix: Reduce threshold (#10222) 2025-11-15 00:37:11 +08:00
Arvin Xu fe1d05a547 test: fix upload service tests after removing ClientS3 (#10220)
- Removed references to deleted clientS3Storage
- Updated tests to match current server/desktop upload flow
- Fixed XMLHttpRequest mocking for server upload tests
- Updated filename assertions to match UUID generation behavior

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-14 20:14:14 +08:00
lobehubbot 1c15ea5907 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 11:42:55 +00:00
semantic-release-bot 9bb03bcb96 🔖 chore(release): v2.0.0-next.59 [skip ci]
## [Version&nbsp;2.0.0-next.59](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.58...v2.0.0-next.59)
<sup>Released on **2025-11-14**</sup>

#### 💄 Styles

- **misc**: Update i18n.

<br/>

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

#### Styles

* **misc**: Update i18n, closes [#10205](https://github.com/lobehub/lobe-chat/issues/10205) ([fc57d2a](https://github.com/lobehub/lobe-chat/commit/fc57d2a))

</details>

<div align="right">

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

</div>
2025-11-14 11:41:51 +00:00
LobeHub Bot fc57d2a28c 🤖 style: update i18n (#10205)
💄 style: update i18n

Co-authored-by: canisminor1990 <17870709+canisminor1990@users.noreply.github.com>
2025-11-14 19:28:45 +08:00
lobehubbot d7ceee2cdb 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 11:19:01 +00:00
semantic-release-bot e033931d4e 🔖 chore(release): v2.0.0-next.58 [skip ci]
## [Version&nbsp;2.0.0-next.58](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.57...v2.0.0-next.58)
<sup>Released on **2025-11-14**</sup>

####  Features

- **misc**: Support DeepSeek Interleaved thinking.

<br/>

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

#### What's improved

* **misc**: Support DeepSeek Interleaved thinking, closes [#10219](https://github.com/lobehub/lobe-chat/issues/10219) ([3736a85](https://github.com/lobehub/lobe-chat/commit/3736a85))

</details>

<div align="right">

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

</div>
2025-11-14 11:17:53 +00:00
Arvin Xu 3736a85473 feat: support DeepSeek Interleaved thinking (#10219)
fix tests
2025-11-14 19:06:28 +08:00
lobehubbot ca348ec0df 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 10:22:47 +00:00
semantic-release-bot d262fdbeaf 🔖 chore(release): v2.0.0-next.57 [skip ci]
## [Version&nbsp;2.0.0-next.57](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.56...v2.0.0-next.57)
<sup>Released on **2025-11-14**</sup>

#### 💄 Styles

- **misc**: Revert background style.

<br/>

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

#### Styles

* **misc**: Revert background style, closes [#10218](https://github.com/lobehub/lobe-chat/issues/10218) ([97b0413](https://github.com/lobehub/lobe-chat/commit/97b0413))

</details>

<div align="right">

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

</div>
2025-11-14 10:21:35 +00:00
Arvin Xu 97b0413020 💄 style: revert background style (#10218)
revert style
2025-11-14 18:09:16 +08:00
lobehubbot 52280da8bc 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 08:51:07 +00:00
semantic-release-bot c23d908b3b 🔖 chore(release): v2.0.0-next.56 [skip ci]
## [Version&nbsp;2.0.0-next.56](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.55...v2.0.0-next.56)
<sup>Released on **2025-11-14**</sup>

####  Features

- **misc**: Add folder creation UI and clean up debug code.

<br/>

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

#### What's improved

* **misc**: Add folder creation UI and clean up debug code ([d5ecd0a](https://github.com/lobehub/lobe-chat/commit/d5ecd0a))

</details>

<div align="right">

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

</div>
2025-11-14 08:49:56 +00:00
Rene Wang 85e2572d26 Merge branch 'next' of github.com:lobehub/lobe-chat into feat/folder-manager 2025-11-14 16:37:59 +08:00
lobehubbot 2e8031f865 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 08:31:24 +00:00
semantic-release-bot 9c3ddcc99b 🔖 chore(release): v2.0.0-next.55 [skip ci]
## [Version&nbsp;2.0.0-next.55](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.54...v2.0.0-next.55)
<sup>Released on **2025-11-14**</sup>

####  Features

- **image**: Image model show price.
- **misc**: Create Pages in Knowledge Base.

<br/>

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

#### What's improved

* **image**: Image model show price, closes [#10198](https://github.com/lobehub/lobe-chat/issues/10198) ([b87e0e4](https://github.com/lobehub/lobe-chat/commit/b87e0e4))
* **misc**: Create Pages in Knowledge Base, closes [#9895](https://github.com/lobehub/lobe-chat/issues/9895) ([f46edeb](https://github.com/lobehub/lobe-chat/commit/f46edeb))

</details>

<div align="right">

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

</div>
2025-11-14 08:30:09 +00:00
Rene Wang d5ecd0a17c feat: Add folder creation UI and clean up debug code
- Add "New Folder" option in KnowledgeManager add button dropdown
- Remove debug logging from FileExplorer component
- Add i18n keys for folder management actions (newFolder, newPage, uploadFile, uploadFolder)
- Prepare UI for folder creation functionality

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-14 16:23:17 +08:00
YuTengjing b87e0e422e feat(image): image model show price (#10198) 2025-11-14 16:10:22 +08:00
René Wang f46edeb2d1 feat: Create Pages in Knowledge Base (#9895)
* feat: New note entry

* feat: save

* feat: custom note

* feat: save

* feat: editor

* feat: editor

* feat: editor

* lint: Regroup files

* fix: Image border

* feat: editor

* feat: masonry view in chat

* style: column

* 🐛 fix: Fix editor in modal

* fix: Mansory stuck

* feat: New note view

* feat: New note view

* fix: New note draft

* fix: New note draft

* style: New sidebar

* style: Remove icon

* style: Add skeleton

* style: button style

* fix: Lint error

* fix: Preview not updating

* style: Collection style

* fix: Cannot query other data

* style: New header style

* feat: Empty placeholder

* style: Adjust padding

* feat: Upload markdown

* fix: Tab active status

* style: image placeholder

* fix: Cannot delete note

* feat: Emoji picker

* style: Move icon to leading position

* style: Fix input color

* fix: Icon not saved

* style: leading icon

* style: Adjust skelton shape

* feat: Auto save

* feat: Upgrade file

* feat: Knowlwdge home

* feat: Knowlwdge home

* feat: Knowlwdge home

* feat: Knowlwdge home

* feat: Rename files

* fix: Knowledge base not working

* fix: Knowledge base home

* fix: Knowledge base home

* feat: Three dot menu

* fix: New knowledge base modal not working

* feat: Cannot use upload

* fix: documents not aloding

* feat: Route for document

* fix: Test error

* fix: Lint

* fix: Type error

* refac: Rename symbol

* fix: Cannot save icon

* fix: Add missing translations

* feat: Use virtualso for the list

* fix: Hover style

* fix: Cannot open documents

* feat: Bump Editor version

* fix: Editor blur

* feat: Hide preview for selected item

* style: Limit max width

* feat: Auto save hint

* style: New doc list style

* style: New header

* feat: Heade tyle

* style: Adjust padding

* feat: Duplicate document

* fix: Add missing i18n

* fix: Add missing translation

* fix: Test error

* lint: Seperate code

* fix: Style pollution

* feat: Share state

* fix: Word count

* fix: Navigation

* feat: Add heading option

* fix: Add missing translation

* feat: Delete confirm

* feat: Collpased by default

* fix: Editor hot area

* fix: Add missing translation

* style: Adjust file list density

* fix: Remove website for now

* feat: Use masonry by default

* feat: Collapse switch

* fix: Remove useless query

* feat: Remove unused features

* feat: Immeditaely create knowledge base

* feat: Immedately create the document

* feat: Add missing translation

* feat: Open emoji pciker by default

* fix: Emoji picker

* feat: Rename

* feat: Rename

* fix: Emoji picker disappear

* fix: Route flickering

* feat: Refactor document

* fix: Address ts error

* feat: Reduce delay

* feat: Document -> Page

* fix: Add missing translation

* fix: URL

* fix: add missing translation

* fix: editor blurred

* fix: No skelton after successfuly deletion

* fix: Filter

* build: Add test

* fix: Test

* fix: Test coverage drop

---------

Co-authored-by: canisminor1990 <i@canisminor.cc>
2025-11-14 16:05:19 +08:00
lobehubbot 9250263fd7 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 06:27:53 +00:00
semantic-release-bot c782d091dd 🔖 chore(release): v2.0.0-next.54 [skip ci]
## [Version&nbsp;2.0.0-next.54](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.53...v2.0.0-next.54)
<sup>Released on **2025-11-14**</sup>

#### 💄 Styles

- **misc**: Refactor and support move locale file intervention.

<br/>

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

#### Styles

* **misc**: Refactor and support move locale file intervention, closes [#10213](https://github.com/lobehub/lobe-chat/issues/10213) ([63cac81](https://github.com/lobehub/lobe-chat/commit/63cac81))

</details>

<div align="right">

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

</div>
2025-11-14 06:26:44 +00:00
Arvin Xu 63cac811cd 💄 style: refactor and support move locale file intervention (#10213)
refactor and support move locale file
2025-11-14 14:15:25 +08:00
lobehubbot 0eca6f9f4a 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 05:12:53 +00:00
semantic-release-bot d62733adcc 🔖 chore(release): v2.0.0-next.53 [skip ci]
## [Version&nbsp;2.0.0-next.53](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.52...v2.0.0-next.53)
<sup>Released on **2025-11-14**</sup>

####  Features

- **misc**: Add GPT-5.1 models.

#### 💄 Styles

- **misc**: Fix approving render and improve Conversation style.

<br/>

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

#### What's improved

* **misc**: Add GPT-5.1 models, closes [#10206](https://github.com/lobehub/lobe-chat/issues/10206) ([afd3a47](https://github.com/lobehub/lobe-chat/commit/afd3a47))

#### Styles

* **misc**: Fix approving render and improve Conversation style, closes [#10210](https://github.com/lobehub/lobe-chat/issues/10210) ([841b7f1](https://github.com/lobehub/lobe-chat/commit/841b7f1))

</details>

<div align="right">

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

</div>
2025-11-14 05:11:29 +00:00
Arvin Xu 841b7f1c37 💄 style: fix approving render and improve Conversation style (#10210)
fix approving render and improve chat layout style
2025-11-14 12:57:28 +08:00
sxjeru afd3a47e3d feat: Add GPT-5.1 models (#10206) 2025-11-14 12:53:09 +08:00
LobeHub Bot 14dd288d50 🌐 chore: translate non-English comments to English in electron-server-ipc (#10207)
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-14 12:52:38 +08:00
lobehubbot 799395d982 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-14 03:59:54 +00:00
Arvin Xu 6868d78adb test: fix tests (#10209)
fix tests
2025-11-14 11:48:09 +08:00
Arvin Xu 4388270cf4 📌 chore: pin electron to 38.x (#10204)
Downgrade electron from 39.x to 38.x for stability

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

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-14 10:14:39 +08:00
lobehubbot ac4993a769 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-13 18:55:54 +00:00
semantic-release-bot f1db5e1f11 🔖 chore(release): v2.0.0-next.52 [skip ci]
## [Version&nbsp;2.0.0-next.52](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.51...v2.0.0-next.52)
<sup>Released on **2025-11-13**</sup>

#### 🐛 Bug Fixes

- **misc**: Filter out reasoning fields from messages in ChatCompletion API.

<br/>

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

#### What's fixed

* **misc**: Filter out reasoning fields from messages in ChatCompletion API, closes [#10203](https://github.com/lobehub/lobe-chat/issues/10203) [#10193](https://github.com/lobehub/lobe-chat/issues/10193) ([5f28b2c](https://github.com/lobehub/lobe-chat/commit/5f28b2c))

</details>

<div align="right">

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

</div>
2025-11-13 18:54:38 +00:00
Arvin Xu 5f28b2c59e 🐛 fix: filter out reasoning fields from messages in ChatCompletion API (#10203)
* fix max tokens issue

* 🐛 fix: filter out reasoning fields from messages in ChatCompletion API

Explicitly map only valid ChatCompletionMessageParam fields and exclude reasoning/reasoning_content to prevent JSON unmarshaling errors when conversation history contains reasoning objects.

Fixes #10193

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

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-11-14 02:42:36 +08:00
Arvin Xu 428f05ac8a 💄 style: make OpenAI Response API by default (#10202)
* update i18n

* 修正测试

* fix macOS impl

* fix directory params

* refactor the builtin render implement

* remove unused sql

* fix tests
2025-11-14 02:13:39 +08:00
lobehubbot ca2a7d43e9 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-13 15:14:51 +00:00
semantic-release-bot bf2f6daa1b 🔖 chore(release): v2.0.0-next.51 [skip ci]
## [Version&nbsp;2.0.0-next.51](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.50...v2.0.0-next.51)
<sup>Released on **2025-11-13**</sup>

#### 💄 Styles

- **misc**: Update ERNIE-5.0-Thinking-Preview model.

<br/>

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

#### Styles

* **misc**: Update ERNIE-5.0-Thinking-Preview model, closes [#10196](https://github.com/lobehub/lobe-chat/issues/10196) ([89f3eed](https://github.com/lobehub/lobe-chat/commit/89f3eed))

</details>

<div align="right">

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

</div>
2025-11-13 15:13:37 +00:00
sxjeru 89f3eed4c1 💄 style: Update ERNIE-5.0-Thinking-Preview model (#10196)
* feat(wenxin): add model listing and parsing for Wenxin models

- Implemented model retrieval in Wenxin provider with async models function.
- Introduced WenxinModelCard interface to define model structure.
- Updated modelParse utility to include keywords specific to Wenxin models.
- Enhanced model owner detection to recognize Wenxin models.

* feat(wenxin): add reasoning parameters to chat model settings and update payload handling

* feat(wenxin): update checkModel and modelsUrl for improved model access

* feat(wenxin): add search ability and update settings for chat models

* feat(wenxin): refine thinking budget handling in chat completion payload

* feat(wenxin): remove enableReasoning from extendParams in chat model settings
2025-11-13 23:01:55 +08:00
Arvin Xu 39cdb2057e feat: support bash tools in local system (#9676)
* wip for bash system

* refactor

* fix remark issue

* 完成批准实现

* refactor toolIntervention

* refactor toolIntervention

* use user tool config

* show InterventionModeSelector

* finish local file mode

* fix error

* update

* update i18n

* revert

* fix bug
2025-11-13 22:18:05 +08:00
lobehubbot bb33feb0f4 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-13 13:10:31 +00:00
semantic-release-bot 72afed9546 🔖 chore(release): v2.0.0-next.50 [skip ci]
## [Version&nbsp;2.0.0-next.50](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.49...v2.0.0-next.50)
<sup>Released on **2025-11-13**</sup>

#### 🐛 Bug Fixes

- **misc**: Fix oidc accountId mismatch.

<br/>

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

#### What's fixed

* **misc**: Fix oidc accountId mismatch, closes [#10058](https://github.com/lobehub/lobe-chat/issues/10058) ([0692ba7](https://github.com/lobehub/lobe-chat/commit/0692ba7))

</details>

<div align="right">

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

</div>
2025-11-13 13:09:16 +00:00
Rdmclin2 0692ba7406 🐛 fix: fix oidc accountId mismatch (#10058)
* chore: adjust oidc login and consent page mobile style

* fix: acccount mismatch error

* test: add oidc service test case
2025-11-13 20:55:03 +08:00
LobeHub Bot 39d91a86c0 test: add unit tests for validateRedirectHost (#10173)
Added comprehensive unit tests for the validateRedirectHost security function covering:
- Invalid input validation
- Exact host matching
- Localhost environment handling
- Subdomain validation
- Open redirect attack prevention
- Port handling with standard and custom ports
- Edge cases (IPv4, case sensitivity, malformed inputs)
- Real-world deployment scenarios

All 52 test cases pass successfully.
2025-11-13 20:05:50 +08:00
LobeHub Bot 331af68b73 🌐 chore: translate non-English comments to English in context-engine (#10180)
* 🌐 chore: translate non-English comments to English in context-engine


* 🌐 fix: complete comment translation in MessageContent.ts

- Translated remaining 3 Chinese comments to English
- Ensures all comments in context-engine package are properly translated
- Maintains code functionality while improving readability for international developers

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

Co-Authored-By: Arvin Xu <arvinxx@users.noreply.github.com>

* 🧪 test: update error message expectations to English in BaseProcessor tests

Updated test assertions to match English error messages ('Invalid context' and 'Invalid output context') instead of Chinese ones.
2025-11-13 17:15:22 +08:00
lobehubbot 4ea759af29 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-13 07:38:20 +00:00
semantic-release-bot c73e1e2bfc 🔖 chore(release): v2.0.0-next.49 [skip ci]
## [Version&nbsp;2.0.0-next.49](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.48...v2.0.0-next.49)
<sup>Released on **2025-11-13**</sup>

####  Features

- **misc**: Support tool invention.

#### 🐛 Bug Fixes

- **misc**: Update lost i18n files.

<br/>

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

#### What's improved

* **misc**: Support tool invention, closes [#10182](https://github.com/lobehub/lobe-chat/issues/10182) ([4dca708](https://github.com/lobehub/lobe-chat/commit/4dca708))

#### What's fixed

* **misc**: Update lost i18n files, closes [#10179](https://github.com/lobehub/lobe-chat/issues/10179) ([b69c7ff](https://github.com/lobehub/lobe-chat/commit/b69c7ff))

</details>

<div align="right">

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

</div>
2025-11-13 07:36:55 +00:00
Shinji-Li b69c7ff83e 🐛 fix: update lost i18n files (#10179)
chore: update i18n
2025-11-13 15:22:32 +08:00
Arvin Xu 4dca708d2c feat: support tool invention (#10182)
* finish intervention backend

* add Intervention

* fix tests

* finish action mode

* 初步完成 reject 逻辑

* 初步完成 reject 逻辑

* wip approve tool calling

* 初步完成 approve 流程

* Update index.ts

* 完成 approve 流程

* fix tests

* fix tests
2025-11-13 15:11:28 +08:00
lobehubbot 9b9df57c59 📝 docs(bot): Auto sync agents & plugin to readme 2025-11-13 06:18:25 +00:00
Arvin Xu 8bc15893b8 📌 chore: pin eta to 4.0.1 to fix ERR_PACKAGE_PATH_NOT_EXPORTED error (#10190)
* 📌 chore: pin eta to 4.0.1 to fix ERR_PACKAGE_PATH_NOT_EXPORTED error

* 🔨 chore: add overrides for bun compatibility
2025-11-13 14:07:25 +08:00
Shinji-Li bab0054557 🔨 chore: update market-sdk (#10171)
chore: update market-sdk
2025-11-13 10:13:08 +08:00
Neko 0baacf7301 👷 chore: improve renovate config to support grouping in the same way of npm does (#10176)
chore(ci): improve renovate config to support grouping in the same way of npm does
2025-11-12 22:34:28 +08:00
Neko 0c11d5fcee 🔨 chore(observability-otel): interval of metrics not small enough (#10175)
fix(observability-otel): interval of metrics not small enough
2025-11-12 21:05:26 +08:00
2133 changed files with 155187 additions and 25293 deletions
+14
View File
@@ -0,0 +1,14 @@
{
"files": ["drizzle.config.ts"],
"patterns": [
"scripts/**",
"**/*.test.ts",
"**/*.test.tsx",
"**/*.spec.ts",
"**/*.spec.tsx",
"**/examples/**",
"e2e/**",
".github/scripts/**",
"apps/desktop/**"
]
}
+16 -1
View File
@@ -5,7 +5,22 @@ alwaysApply: false
# Database Migrations Guide
## Defensive Programming - Use Idempotent Clauses
## Step1: Generate migrations:
```bash
bun run db:generate
```
this step will generate or update the following files:
- packages/database/migrations/0046_xxx.sql
- packages/database/migrations/meta/\_journal.json
## Step2: optimize the migration sql fileName
the migration sql file name is randomly generated, we need to optimize the file name to make it more readable and meaningful. For example, `0046_xxx.sql` -> `0046_better_auth.sql`
## Step3: Defensive Programming - Use Idempotent Clauses
Always use defensive clauses to make migrations idempotent:
+1 -1
View File
@@ -16,7 +16,7 @@ logo emoji: 🤯
## Project Technologies Stack
- Next.js 15
- Next.js 16
- react 19
- TypeScript
- `@lobehub/ui`, antd for component framework
+20 -2
View File
@@ -16,17 +16,28 @@ lobe-chat/
├── apps/
│ └── desktop/
├── docs/
│ ├── changelog/
│ ├── development/
│ ├── self-hosting/
│ └── usage/
├── locales/
│ ├── en-US/
│ └── zh-CN/
├── packages/
│ ├── agent-runtime/
│ ├── const/
│ ├── context-engine/
│ ├── conversation-flow/
│ ├── database/
│ │ ├── src/
│ │ │ ├── models/
│ │ │ ├── schemas/
│ │ │ └── repositories/
│ ├── electron-client-ipc/
│ ├── electron-server-ipc/
│ ├── fetch-sse/
│ ├── file-loaders/
│ ├── memory-extract/
│ ├── model-bank/
│ │ └── src/
│ │ └── aiModels/
@@ -34,11 +45,16 @@ lobe-chat/
│ │ └── src/
│ │ ├── core/
│ │ └── providers/
│ ├── obervability-otel/
│ ├── prompts/
│ ├── python-interpreter/
│ ├── ssrf-safe-fetch/
│ ├── types/
│ │ └── src/
│ │ ├── message/
│ │ └── user/
── utils/
── utils/
│ └── web-crawler/
├── public/
├── scripts/
├── src/
@@ -68,7 +84,9 @@ lobe-chat/
│ │ ├── AuthProvider/
│ │ └── GlobalProvider/
│ ├── libs/
│ │ ── oidc-provider/
│ │ ── better-auth/
│ │ ├── oidc-provider/
│ │ └── trpc/
│ ├── locales/
│ │ └── default/
│ ├── server/
+165 -62
View File
@@ -4,9 +4,9 @@
# Specify your API Key selection method, currently supporting `random` and `turn`.
# API_KEY_SELECT_MODE=random
########################################
########### Security Settings ###########
########################################
# #######################################
# ########## Security Settings ###########
# #######################################
# Control Content Security Policy headers
# Set to '1' to enable X-Frame-Options and Content-Security-Policy headers
@@ -24,11 +24,31 @@
# Example: Allow specific internal servers while keeping SSRF protection
# SSRF_ALLOW_IP_ADDRESS_LIST=192.168.1.100,10.0.0.50
########################################
############ Redis Settings ############
########################################
# Connection string for self-hosted Redis (Docker/K8s/managed). Use container hostname when running via docker-compose.
# REDIS_URL=redis://localhost:6379
# Optional database index.
# REDIS_DATABASE=0
# Optional authentication for managed Redis.
# REDIS_USERNAME=default
# REDIS_PASSWORD=yourpassword
# Set to '1' to enforce TLS when connecting to managed Redis or rediss:// endpoints.
# REDIS_TLS=0
# Namespace prefix for cache/queue keys.
# REDIS_PREFIX=lobechat
########################################
########## AI Provider Service #########
########################################
### OpenAI ###
# ## OpenAI ###
# you openai api key
OPENAI_API_KEY=sk-xxxxxxxxx
@@ -40,7 +60,7 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# OPENAI_MODEL_LIST=gpt-3.5-turbo
### Azure OpenAI ###
# ## Azure OpenAI ###
# you can learn azure OpenAI Service on https://learn.microsoft.com/en-us/azure/ai-services/openai/overview
# use Azure OpenAI Service by uncomment the following line
@@ -55,7 +75,7 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# AZURE_API_VERSION=2024-10-21
### Anthropic Service ####
# ## Anthropic Service ####
# ANTHROPIC_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
@@ -63,19 +83,19 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# ANTHROPIC_PROXY_URL=https://api.anthropic.com
### Google AI ####
# ## Google AI ####
# GOOGLE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### AWS Bedrock ###
# ## AWS Bedrock ###
# AWS_REGION=us-east-1
# AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxx
# AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Ollama AI ####
# ## Ollama AI ####
# You can use ollama to get and run LLM locally, learn more about it via https://github.com/ollama/ollama
@@ -85,132 +105,132 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# OLLAMA_MODEL_LIST=your_ollama_model_names
### OpenRouter Service ###
# ## OpenRouter Service ###
# OPENROUTER_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# OPENROUTER_MODEL_LIST=model1,model2,model3
### Mistral AI ###
# ## Mistral AI ###
# MISTRAL_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Perplexity Service ###
# ## Perplexity Service ###
# PERPLEXITY_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Groq Service ####
# ## Groq Service ####
# GROQ_API_KEY=gsk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#### 01.AI Service ####
# ### 01.AI Service ####
# ZEROONE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### TogetherAI Service ###
# ## TogetherAI Service ###
# TOGETHERAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### ZhiPu AI ###
# ## ZhiPu AI ###
# ZHIPU_API_KEY=xxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxx
### Moonshot AI ####
# ## Moonshot AI ####
# MOONSHOT_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Minimax AI ####
# ## Minimax AI ####
# MINIMAX_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### DeepSeek AI ####
# ## DeepSeek AI ####
# DEEPSEEK_PROXY_URL=https://api.deepseek.com/v1
# DEEPSEEK_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Qiniu AI ####
# ## Qiniu AI ####
# QINIU_PROXY_URL=https://api.qnaigc.com/v1
# QINIU_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Qwen AI ####
# ## Qwen AI ####
# QWEN_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### Cloudflare Workers AI ####
# ## Cloudflare Workers AI ####
# CLOUDFLARE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### SiliconCloud AI ####
# ## SiliconCloud AI ####
# SILICONCLOUD_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### TencentCloud AI ####
# ## TencentCloud AI ####
# TENCENT_CLOUD_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### PPIO ####
# ## PPIO ####
# PPIO_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### INFINI-AI ###
# ## INFINI-AI ###
# INFINIAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### 302.AI ###
# ## 302.AI ###
# AI302_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### ModelScope ###
# ## ModelScope ###
# MODELSCOPE_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### AiHubMix ###
# ## AiHubMix ###
# AIHUBMIX_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### BFL ###
# ## BFL ###
# BFL_API_KEY=bfl-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### FAL ###
# ## FAL ###
# FAL_API_KEY=fal-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
########################################
######### AI Image Settings ############
########################################
# #######################################
# ######## AI Image Settings ############
# #######################################
# Default image generation count (range: 1-20, default: 4)
# AI_IMAGE_DEFAULT_IMAGE_NUM=4
### Nebius ###
# ## Nebius ###
# NEBIUS_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
### NewAPI Service ###
# ## NewAPI Service ###
# NEWAPI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# NEWAPI_PROXY_URL=https://your-newapi-server.com
### Vercel AI Gateway ###
# ## Vercel AI Gateway ###
# VERCELAIGATEWAY_API_KEY=your_vercel_ai_gateway_api_key
########################################
############ Market Service ############
########################################
# #######################################
# ########### Market Service ############
# #######################################
# The LobeChat agents market index url
# AGENTS_INDEX_URL=https://chat-agents.lobehub.com
########################################
############ Plugin Service ############
########################################
# #######################################
# ########### Plugin Service ############
# #######################################
# The LobeChat plugins store index url
# PLUGINS_INDEX_URL=https://chat-plugins.lobehub.com
@@ -219,9 +239,9 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# the format is `plugin-identifier:key1=value1;key2=value2`, multiple settings fields are separated by semicolons `;`, multiple plugin settings are separated by commas `,`.
# PLUGIN_SETTINGS=search-engine:SERPAPI_API_KEY=xxxxx
########################################
####### Doc / Changelog Service ########
########################################
# #######################################
# ###### Doc / Changelog Service ########
# #######################################
# Use in Changelog / Document service cdn url prefix
# DOC_S3_PUBLIC_DOMAIN=https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
@@ -231,9 +251,9 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# DOC_S3_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
########################################
##### S3 Object Storage Service ########
########################################
# #######################################
# #### S3 Object Storage Service ########
# #######################################
# S3 keys
# S3_ACCESS_KEY_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
@@ -253,19 +273,19 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# S3_REGION=us-west-1
########################################
############ Auth Service ##############
########################################
# #######################################
# ########### Auth Service ##############
# #######################################
# Clerk related configurations
# Clerk public key and secret key
#NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxx
#CLERK_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxxxxxx
# NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxx
# CLERK_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxxxxxxxx
# you need to config the clerk webhook secret key if you want to use the clerk with database
#CLERK_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxx
# CLERK_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxxxxxxxx
# Clear allow origin https://clerk.com/docs/guides/dashboard/dns-domains/satellite-domains
# Authentication across different domains , use,to splite different origin
@@ -280,23 +300,106 @@ OPENAI_API_KEY=sk-xxxxxxxxx
# AUTH_AUTH0_SECRET=
# AUTH_AUTH0_ISSUER=https://your-domain.auth0.com
########################################
########## Server Database #############
########################################
# Better-Auth related configurations
# NEXT_PUBLIC_ENABLE_BETTER_AUTH=1
# Auth Secret (use `openssl rand -base64 32` to generate)
# Shared between Better-Auth and Next-Auth
# AUTH_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Auth URL (accessible from browser, optional if same domain)
# NEXT_PUBLIC_AUTH_URL=http://localhost:3210
# Require email verification before allowing users to sign in (default: false)
# Set to '1' to force users to verify their email before signing in
# NEXT_PUBLIC_AUTH_EMAIL_VERIFICATION=0
# SSO Providers Configuration (for Better-Auth)
# Comma-separated list of enabled OAuth providers
# Supported providers: auth0, authelia, authentik, casdoor, cloudflare-zero-trust, cognito, generic-oidc, github, google, keycloak, logto, microsoft, microsoft-entra-id, okta, zitadel
# Example: AUTH_SSO_PROVIDERS=google,github,auth0,microsoft-entra-id
# AUTH_SSO_PROVIDERS=
# Google OAuth Configuration (for Better-Auth)
# Get credentials from: https://console.cloud.google.com/apis/credentials
# Authorized redirect URIs:
# - Development: http://localhost:3210/api/auth/callback/google
# - Production: https://yourdomain.com/api/auth/callback/google
# GOOGLE_CLIENT_ID=xxxxx.apps.googleusercontent.com
# GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxxxx
# GitHub OAuth Configuration (for Better-Auth)
# Get credentials from: https://github.com/settings/developers
# Create a new OAuth App with:
# Authorized callback URL:
# - Development: http://localhost:3210/api/auth/callback/github
# - Production: https://yourdomain.com/api/auth/callback/github
# GITHUB_CLIENT_ID=Ov23xxxxxxxxxxxxx
# GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# AWS Cognito OAuth Configuration (for Better-Auth)
# Get credentials from: https://console.aws.amazon.com/cognito
# Setup steps:
# 1. Create a User Pool with App Client
# 2. Configure Hosted UI domain
# 3. Enable "Authorization code grant" OAuth flow
# 4. Set OAuth scopes: openid, profile, email
# Authorized callback URL:
# - Development: http://localhost:3210/api/auth/callback/cognito
# - Production: https://yourdomain.com/api/auth/callback/cognito
# COGNITO_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxx
# COGNITO_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# COGNITO_DOMAIN=your-app.auth.us-east-1.amazoncognito.com
# COGNITO_REGION=us-east-1
# COGNITO_USERPOOL_ID=us-east-1_xxxxxxxxx
# Microsoft OAuth Configuration (for Better-Auth)
# Get credentials from: https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
# Create a new App Registration in Microsoft Entra ID (Azure AD)
# Authorized redirect URL:
# - Development: http://localhost:3210/api/auth/callback/microsoft
# - Production: https://yourdomain.com/api/auth/callback/microsoft
# MICROSOFT_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# MICROSOFT_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# #######################################
# ########## Email Service ##############
# #######################################
# SMTP Server Configuration (required for email verification with Better-Auth)
# SMTP server hostname (e.g., smtp.gmail.com, smtp.office365.com)
# SMTP_HOST=smtp.example.com
# SMTP server port (usually 587 for TLS, or 465 for SSL)
# SMTP_PORT=587
# Use secure connection (set to 'true' for port 465, 'false' for port 587)
# SMTP_SECURE=false
# SMTP authentication username (usually your email address)
# SMTP_USER=your-email@example.com
# SMTP authentication password (use app-specific password for Gmail)
# SMTP_PASS=your-password-or-app-specific-password
# #######################################
# ######### Server Database #############
# #######################################
# Postgres database URL
# DATABASE_URL=postgres://username:password@host:port/database
# use `openssl rand -base64 32` to generate a key for the encryption of the database
# we use this key to encrypt the user api key and proxy url
#KEY_VAULTS_SECRET=xxxxx/xxxxxxxxxxxxxx=
# KEY_VAULTS_SECRET=xxxxx/xxxxxxxxxxxxxx=
# Specify the Embedding model and Reranker model(unImplemented)
# DEFAULT_FILES_CONFIG="embedding_model=openai/embedding-text-3-small,reranker_model=cohere/rerank-english-v3.0,query_mode=full_text"
########################################
########## MCP Service Config ##########
########################################
# #######################################
# ######### MCP Service Config ##########
# #######################################
# MCP tool call timeout (milliseconds)
# MCP_TOOL_TIMEOUT=60000
+11 -8
View File
@@ -31,20 +31,23 @@ DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@localhost:5432/${LOBE_DB
# Database driver type
DATABASE_DRIVER=node
# Redis Cache/Queue Configuration
REDIS_URL=redis://localhost:6379
REDIS_PREFIX=lobechat
REDIS_TLS=0
# Authentication Configuration
# Enable NextAuth authentication
NEXT_PUBLIC_ENABLE_NEXT_AUTH=1
# Enable Better Auth authentication
NEXT_PUBLIC_ENABLE_BETTER_AUTH=1
# NextAuth secret for JWT signing (generate with: openssl rand -base64 32)
NEXT_AUTH_SECRET=${UNSAFE_SECRET}
NEXTAUTH_URL=${APP_URL}
# Better Auth secret for JWT signing (generate with: openssl rand -base64 32)
AUTH_SECRET=${UNSAFE_SECRET}
# Authentication URL
AUTH_URL=${APP_URL}/api/auth
NEXT_PUBLIC_AUTH_URL=${APP_URL}
# SSO providers configuration - using Casdoor for development
NEXT_AUTH_SSO_PROVIDERS=casdoor
AUTH_SSO_PROVIDERS=casdoor
# Casdoor Configuration
# Casdoor service port
+1
View File
@@ -21,6 +21,7 @@ jobs:
(github.event_name == 'pull_request_review' && github.event.sender.type != 'Bot') ||
(github.event_name == 'pull_request_review_comment' && github.event.sender.type != 'Bot')
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
# update issues/comments
-19
View File
@@ -20,15 +20,6 @@ jobs:
pull-requests: write # for actions-cool/issues-helper to update PRs
runs-on: ubuntu-latest
steps:
- name: Auto Comment on Issues Opened
uses: wow-actions/auto-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
issuesOpened: |
👀 @{{ author }}
Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible.
Please make sure you have given us as much context as possible.
- name: Auto Comment on Issues Closed
uses: wow-actions/auto-comment@v1
with:
@@ -37,16 +28,6 @@ jobs:
✅ @{{ author }}
This issue is closed, If you have any questions, you can comment and reply.
- name: Auto Comment on Pull Request Opened
uses: wow-actions/auto-comment@v1
with:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
pullRequestOpened: |
👍 @{{ author }}
Thank you for raising your pull request and contributing to our Community
Please make sure you have followed our contributing guidelines. We will review it as soon as possible.
If you encounter any problems, please feel free to connect with us.
- name: Auto Comment on Pull Request Merged
uses: actions-cool/pr-welcome@main
if: github.event.pull_request.merged == true
@@ -1,7 +1,7 @@
name: Desktop PR Build
on:
pull_request_target:
pull_request:
types: [synchronize, labeled, unlabeled] # PR 更新或标签变化时触发
# 确保同一 PR 同一时间只运行一个相同的 workflow,取消正在进行的旧的运行
@@ -32,7 +32,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -66,7 +66,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# 主要逻辑:确定构建版本号
@@ -111,7 +111,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# node-linker=hoisted 模式将可以确保 asar 压缩可用
@@ -126,6 +126,7 @@ jobs:
run: npm run workflow:set-desktop-version ${{ needs.version.outputs.version }} nightly
# macOS 构建处理
# 注意:fork 的 PR 无法访问 secrets,会构建未签名版本
- name: Build artifact on macOS
if: runner.os == 'macOS'
run: npm run desktop:build
@@ -136,7 +137,7 @@ jobs:
DATABASE_URL: "postgresql://postgres@localhost:5432/postgres"
# 默认添加一个加密 SECRET
KEY_VAULTS_SECRET: "oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE="
# macOS 签名和公证配置
# macOS 签名和公证配置fork 的 PR 访问不到 secrets,会跳过签名)
CSC_LINK: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ secrets.UMAMI_NIGHTLY_DESKTOP_PROJECT_ID }}
@@ -148,7 +149,8 @@ jobs:
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# Windows 平台构建处理
# Windows 平台构建处理
# 注意:fork 的 PR 无法访问 secrets,会构建未签名版本
- name: Build artifact on Windows
if: runner.os == 'Windows'
run: npm run desktop:build
@@ -230,7 +232,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -275,6 +277,8 @@ jobs:
publish-pr:
needs: [merge-mac-files, version]
name: Publish PR Build
# 只为非 fork 的 PR 发布(fork 的 PR 没有写权限)
if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
# Grant write permissions for creating release and commenting on PR
permissions:
@@ -1,33 +1,28 @@
name: Publish Docker Image
name: Docker PR Build
on:
pull_request:
types: [synchronize, labeled, unlabeled] # PR 更新或标签变化时触发
# 确保同一 PR 同一时间只运行一个相同的 workflow,取消正在进行的旧的运行
concurrency:
group: pr-${{ github.event.pull_request.number }}-${{ github.workflow }}
cancel-in-progress: true
# Add default permissions
permissions:
contents: read
pull-requests: write
on:
workflow_dispatch:
release:
types: [published]
pull_request_target:
types: [synchronize, labeled, unlabeled]
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
# PR 构建时取消旧的运行,但 release 构建不取消
cancel-in-progress: ${{ github.event_name != 'release' }}
env:
REGISTRY_IMAGE: lobehub/lobehub
PR_TAG_PREFIX: pr-
jobs:
build:
# 添加 PR label 触发条件
if: |
github.event_name == 'release' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request_target' &&
contains(github.event.pull_request.labels.*.name, 'trigger:build-docker'))
name: Build ${{ matrix.platform }} Docker Image
# 添加 PR label 触发条件,只有添加了 trigger:build-docker 标签的 PR 才会触发构建
if: contains(github.event.pull_request.labels.*.name, 'trigger:build-docker')
strategy:
matrix:
include:
@@ -36,14 +31,13 @@ jobs:
- platform: linux/arm64
os: ubuntu-24.04-arm
runs-on: ${{ matrix.os }}
name: Build ${{ matrix.platform }} Image
steps:
- name: Prepare
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Checkout base
- name: Checkout PR branch
uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -51,15 +45,17 @@ jobs:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
# 为 PR 生成特殊的 tag
# 为 PR 生成特殊的 tag,使用 PR 的实际 commit SHA
- name: Generate PR metadata
if: github.event_name == 'pull_request_target'
id: pr_meta
env:
BRANCH_NAME: ${{ github.head_ref }}
run: |
sanitized_branch=$(echo "${BRANCH_NAME}" | sed -E 's/[^a-zA-Z0-9_.-]+/-/g')
echo "pr_tag=${sanitized_branch}-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
commit_sha=$(git rev-parse --short HEAD)
echo "pr_tag=${sanitized_branch}-${commit_sha}" >> $GITHUB_OUTPUT
echo "commit_sha=${commit_sha}" >> $GITHUB_OUTPUT
echo "📦 Docker Tag: ${sanitized_branch}-${commit_sha}"
- name: Docker meta
id: meta
@@ -67,11 +63,7 @@ jobs:
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
# PR 构建使用特殊的 tag
type=raw,value=${{ env.PR_TAG_PREFIX }}${{ steps.pr_meta.outputs.pr_tag }},enable=${{ github.event_name == 'pull_request_target' }}
# release 构建使用版本号
type=semver,pattern={{version}},enable=${{ github.event_name != 'pull_request_target' }}
type=raw,value=latest,enable=${{ github.event_name != 'pull_request_target' }}
type=raw,value=${{ env.PR_TAG_PREFIX }}${{ steps.pr_meta.outputs.pr_tag }}
- name: Docker login
uses: docker/login-action@v3
@@ -79,11 +71,6 @@ jobs:
username: ${{ secrets.DOCKER_REGISTRY_USER }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Get commit SHA
if: github.ref == 'refs/heads/main'
id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Build and export
id: build
uses: docker/build-push-action@v6
@@ -93,7 +80,7 @@ jobs:
file: ./Dockerfile
labels: ${{ steps.meta.outputs.labels }}
build-args: |
SHA=${{ steps.vars.outputs.sha_short }}
SHA=${{ steps.pr_meta.outputs.commit_sha }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
- name: Export digest
@@ -112,11 +99,13 @@ jobs:
retention-days: 1
merge:
name: Merge
name: Merge and Publish
needs: build
runs-on: ubuntu-latest
# 只为非 fork 的 PR 发布(fork 的 PR 没有写权限)
if: github.event.pull_request.head.repo.full_name == github.repository
steps:
- name: Checkout base
- name: Checkout PR branch
uses: actions/checkout@v5
with:
fetch-depth: 0
@@ -133,13 +122,14 @@ jobs:
# 为 merge job 添加 PR metadata 生成
- name: Generate PR metadata
if: github.event_name == 'pull_request_target'
id: pr_meta
env:
BRANCH_NAME: ${{ github.head_ref }}
run: |
sanitized_branch=$(echo "${BRANCH_NAME}" | sed -E 's/[^a-zA-Z0-9_.-]+/-/g')
echo "pr_tag=${sanitized_branch}-$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
commit_sha=$(git rev-parse --short HEAD)
echo "pr_tag=${sanitized_branch}-${commit_sha}" >> $GITHUB_OUTPUT
echo "commit_sha=${commit_sha}" >> $GITHUB_OUTPUT
- name: Docker meta
id: meta
@@ -147,9 +137,7 @@ jobs:
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=raw,value=${{ env.PR_TAG_PREFIX }}${{ steps.pr_meta.outputs.pr_tag }},enable=${{ github.event_name == 'pull_request_target' }}
type=semver,pattern={{version}},enable=${{ github.event_name != 'pull_request_target' }}
type=raw,value=latest,enable=${{ github.event_name != 'pull_request_target' }}
type=raw,value=${{ env.PR_TAG_PREFIX }}${{ steps.pr_meta.outputs.pr_tag }}
- name: Docker login
uses: docker/login-action@v3
@@ -168,7 +156,6 @@ jobs:
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
- name: Comment on PR with Docker build info
if: github.event_name == 'pull_request_target'
uses: actions/github-script@v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
+4 -4
View File
@@ -26,7 +26,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -55,7 +55,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# 主要逻辑:确定构建版本号
@@ -96,7 +96,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
# node-linker=hoisted 模式将可以确保 asar 压缩可用
@@ -210,7 +210,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
+133
View File
@@ -0,0 +1,133 @@
name: Publish Docker Image
permissions:
contents: read
on:
workflow_dispatch:
release:
types: [published]
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: false
env:
REGISTRY_IMAGE: lobehub/lobehub
jobs:
build:
strategy:
matrix:
include:
- platform: linux/amd64
os: ubuntu-latest
- platform: linux/arm64
os: ubuntu-24.04-arm
runs-on: ${{ matrix.os }}
name: Build ${{ matrix.platform }} Image
steps:
- name: Prepare
run: |
platform=${{ matrix.platform }}
echo "PLATFORM_PAIR=${platform//\//-}" >> $GITHUB_ENV
- name: Checkout base
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=semver,pattern={{version}}
type=raw,value=latest
- name: Docker login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_REGISTRY_USER }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Get commit SHA
if: github.ref == 'refs/heads/main'
id: vars
run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Build and export
id: build
uses: docker/build-push-action@v6
with:
platforms: ${{ matrix.platform }}
context: .
file: ./Dockerfile
labels: ${{ steps.meta.outputs.labels }}
build-args: |
SHA=${{ steps.vars.outputs.sha_short }}
outputs: type=image,name=${{ env.REGISTRY_IMAGE }},push-by-digest=true,name-canonical=true,push=true
- name: Export digest
run: |
rm -rf /tmp/digests
mkdir -p /tmp/digests
digest="${{ steps.build.outputs.digest }}"
touch "/tmp/digests/${digest#sha256:}"
- name: Upload artifact
uses: actions/upload-artifact@v5
with:
name: digest-${{ env.PLATFORM_PAIR }}
path: /tmp/digests/*
if-no-files-found: error
retention-days: 1
merge:
name: Merge
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout base
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Download digests
uses: actions/download-artifact@v6
with:
path: /tmp/digests
pattern: digest-*
merge-multiple: true
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY_IMAGE }}
tags: |
type=semver,pattern={{version}}
type=raw,value=latest
- name: Docker login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_REGISTRY_USER }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Create manifest list and push
working-directory: /tmp/digests
run: |
docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
$(printf '${{ env.REGISTRY_IMAGE }}@sha256:%s ' *)
- name: Inspect image
run: |
docker buildx imagetools inspect ${{ env.REGISTRY_IMAGE }}:${{ steps.meta.outputs.version }}
+1 -1
View File
@@ -35,7 +35,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
+2 -2
View File
@@ -30,8 +30,8 @@ jobs:
uses: aormsby/Fork-Sync-With-Upstream-action@v3.4
with:
upstream_sync_repo: lobehub/lobe-chat
upstream_sync_branch: main
target_sync_branch: main
upstream_sync_branch: next
target_sync_branch: next
target_repo_token: ${{ secrets.GITHUB_TOKEN }} # automatically generated, no need to set
test_mode: false
+5 -5
View File
@@ -31,7 +31,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -66,7 +66,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -99,7 +99,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install bun
@@ -131,7 +131,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Setup pnpm
@@ -179,7 +179,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
node-version: 24.11.1
package-manager-cache: false
- name: Install pnpm
+2 -4
View File
@@ -24,7 +24,7 @@ Desktop.ini
.windsurfrules
*.code-workspace
.vscode/sessions.json
prd
# Temporary files
.temp/
temp/
@@ -103,8 +103,8 @@ vertex-ai-key.json
.local/
.claude/
.mcp.json
CLAUDE.local.md
.agent/
# MCP tools
.serena/**
@@ -115,6 +115,4 @@ CLAUDE.local.md
*.doc*
*.xls*
prd
GEMINI.md
e2e/reports
+2 -3
View File
@@ -6,13 +6,12 @@ This document serves as a comprehensive guide for all team members when developi
Built with modern technologies:
- **Frontend**: Next.js 15, React 19, TypeScript
- **Frontend**: Next.js 16, React 19, TypeScript
- **UI Components**: Ant Design, @lobehub/ui, antd-style
- **State Management**: Zustand, SWR
- **Database**: PostgreSQL, PGLite, Drizzle ORM
- **Testing**: Vitest, Testing Library
- **Package Manager**: pnpm (monorepo structure)
- **Build Tools**: Next.js (Turbopack in dev, Webpack in prod)
## Directory Structure
@@ -28,6 +27,7 @@ The project follows a well-organized monorepo structure:
### Git Workflow
- The current release branch is `next` instead of `main` until v2.0.0 is officially released
- Use rebase for git pull
- Git commit messages should prefix with gitmoji
- Git branch name format: `username/feat/feature-name`
@@ -38,7 +38,6 @@ The project follows a well-organized monorepo structure:
- Use `pnpm` as the primary package manager
- Use `bun` to run npm scripts
- Use `bunx` to run executable npm packages
- Navigate to specific packages using `cd packages/<package-name>`
### Code Style Guidelines
+2112
View File
File diff suppressed because it is too large Load Diff
+39
View File
@@ -14,6 +14,7 @@ read @.cursor/rules/project-structure.mdc
### Git Workflow
- The current release branch is `next` instead of `main` until v2.0.0 is officially released
- use rebase for git pull
- git commit message should prefix with gitmoji
- git branch name format example: tj/feat/feature-name
@@ -54,6 +55,44 @@ see @.cursor/rules/typescript.mdc
- **Dev**: Translate `locales/zh-CN/namespace.json` and `locales/en-US/namespace.json` locales file only for dev preview
- DON'T run `pnpm i18n`, let CI auto handle it
## Linear Issue Management
When working with Linear issues:
1. **Retrieve issue details** before starting work using `mcp__linear-server__get_issue`
2. **Check for sub-issues**: If the issue has sub-issues, retrieve and review ALL sub-issues using `mcp__linear-server__list_issues` with `parentId` filter before starting work
3. **Update issue status** when completing tasks using `mcp__linear-server__update_issue`
4. **MUST add completion comment** using `mcp__linear-server__create_comment`
### Completion Comment (REQUIRED)
**Every time you complete an issue, you MUST add a comment summarizing the work done.** This is critical for:
- Team visibility and knowledge sharing
- Code review context
- Future reference and debugging
### IMPORTANT: Per-Issue Completion Rule
**When working on multiple issues (e.g., parent issue with sub-issues), you MUST update status and add comment for EACH issue IMMEDIATELY after completing it.** Do NOT wait until all issues are done to update them in batch.
**Workflow for EACH individual issue:**
1. Complete the implementation for this specific issue
2. Run type check: `bun run type-check`
3. Run related tests if applicable
4. **IMMEDIATELY** update issue status to "Done": `mcp__linear-server__update_issue`
5. **IMMEDIATELY** add completion comment: `mcp__linear-server__create_comment`
6. Only then move on to the next issue
**❌ Wrong approach:**
- Complete Issue A → Complete Issue B → Complete Issue C → Update all statuses → Add all comments
**✅ Correct approach:**
- Complete Issue A → Update A status → Add A comment → Complete Issue B → Update B status → Add B comment → ...
## Rules Index
Some useful project rules are listed in @.cursor/rules/rules-index.mdc
+7 -5
View File
@@ -37,6 +37,7 @@ FROM base AS builder
ARG USE_CN_MIRROR
ARG NEXT_PUBLIC_BASE_PATH
ARG NEXT_PUBLIC_ENABLE_BETTER_AUTH
ARG NEXT_PUBLIC_ENABLE_NEXT_AUTH
ARG NEXT_PUBLIC_ENABLE_CLERK_AUTH
ARG NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
@@ -52,7 +53,8 @@ ARG FEATURE_FLAGS
ENV NEXT_PUBLIC_BASE_PATH="${NEXT_PUBLIC_BASE_PATH}" \
FEATURE_FLAGS="${FEATURE_FLAGS}"
ENV NEXT_PUBLIC_ENABLE_NEXT_AUTH="${NEXT_PUBLIC_ENABLE_NEXT_AUTH:-1}" \
ENV NEXT_PUBLIC_ENABLE_BETTER_AUTH="${NEXT_PUBLIC_ENABLE_BETTER_AUTH:-0}" \
NEXT_PUBLIC_ENABLE_NEXT_AUTH="${NEXT_PUBLIC_ENABLE_NEXT_AUTH:-1}" \
NEXT_PUBLIC_ENABLE_CLERK_AUTH="${NEXT_PUBLIC_ENABLE_CLERK_AUTH:-0}" \
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY="${NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY}" \
CLERK_WEBHOOK_SECRET="whsec_xxx" \
@@ -177,10 +179,10 @@ ENV KEY_VAULTS_SECRET="" \
DATABASE_DRIVER="node" \
DATABASE_URL=""
# Next Auth
ENV NEXT_AUTH_SECRET="" \
NEXT_AUTH_SSO_PROVIDERS="" \
NEXTAUTH_URL=""
# Better Auth
ENV AUTH_SECRET="" \
AUTH_SSO_PROVIDERS="" \
NEXT_PUBLIC_AUTH_URL=""
# Clerk
ENV CLERK_SECRET_KEY="" \
-272
View File
@@ -1,272 +0,0 @@
## Set global build ENV
ARG NODEJS_VERSION="24"
## Base image for all building stages
FROM node:${NODEJS_VERSION}-slim AS base
ARG USE_CN_MIRROR
ENV DEBIAN_FRONTEND="noninteractive"
RUN \
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
sed -i "s/deb.debian.org/mirrors.ustc.edu.cn/g" "/etc/apt/sources.list.d/debian.sources"; \
fi \
# Add required package
&& apt update \
&& apt install ca-certificates proxychains-ng -qy \
# Prepare required package to distroless
&& mkdir -p /distroless/bin /distroless/etc /distroless/etc/ssl/certs /distroless/lib \
# Copy proxychains to distroless
&& cp /usr/lib/$(arch)-linux-gnu/libproxychains.so.4 /distroless/lib/libproxychains.so.4 \
&& cp /usr/lib/$(arch)-linux-gnu/libdl.so.2 /distroless/lib/libdl.so.2 \
&& cp /usr/bin/proxychains4 /distroless/bin/proxychains \
&& cp /etc/proxychains4.conf /distroless/etc/proxychains4.conf \
# Copy node to distroless
&& cp /usr/lib/$(arch)-linux-gnu/libstdc++.so.6 /distroless/lib/libstdc++.so.6 \
&& cp /usr/lib/$(arch)-linux-gnu/libgcc_s.so.1 /distroless/lib/libgcc_s.so.1 \
&& cp /usr/local/bin/node /distroless/bin/node \
# Copy CA certificates to distroless
&& cp /etc/ssl/certs/ca-certificates.crt /distroless/etc/ssl/certs/ca-certificates.crt \
# Cleanup temp files
&& rm -rf /tmp/* /var/lib/apt/lists/* /var/tmp/*
## Builder image, install all the dependencies and build the app
FROM base AS builder
ARG USE_CN_MIRROR
ARG NEXT_PUBLIC_BASE_PATH
ARG NEXT_PUBLIC_SENTRY_DSN
ARG NEXT_PUBLIC_ANALYTICS_POSTHOG
ARG NEXT_PUBLIC_POSTHOG_HOST
ARG NEXT_PUBLIC_POSTHOG_KEY
ARG NEXT_PUBLIC_ANALYTICS_UMAMI
ARG NEXT_PUBLIC_UMAMI_SCRIPT_URL
ARG NEXT_PUBLIC_UMAMI_WEBSITE_ID
ARG FEATURE_FLAGS
ENV NEXT_PUBLIC_CLIENT_DB="pglite"
ENV NEXT_PUBLIC_BASE_PATH="${NEXT_PUBLIC_BASE_PATH}" \
FEATURE_FLAGS="${FEATURE_FLAGS}"
# Sentry
ENV NEXT_PUBLIC_SENTRY_DSN="${NEXT_PUBLIC_SENTRY_DSN}" \
SENTRY_ORG="" \
SENTRY_PROJECT=""
ENV APP_URL="http://app.com"
# Posthog
ENV NEXT_PUBLIC_ANALYTICS_POSTHOG="${NEXT_PUBLIC_ANALYTICS_POSTHOG}" \
NEXT_PUBLIC_POSTHOG_HOST="${NEXT_PUBLIC_POSTHOG_HOST}" \
NEXT_PUBLIC_POSTHOG_KEY="${NEXT_PUBLIC_POSTHOG_KEY}"
# Umami
ENV NEXT_PUBLIC_ANALYTICS_UMAMI="${NEXT_PUBLIC_ANALYTICS_UMAMI}" \
NEXT_PUBLIC_UMAMI_SCRIPT_URL="${NEXT_PUBLIC_UMAMI_SCRIPT_URL}" \
NEXT_PUBLIC_UMAMI_WEBSITE_ID="${NEXT_PUBLIC_UMAMI_WEBSITE_ID}"
# Node
ENV NODE_OPTIONS="--max-old-space-size=6144"
WORKDIR /app
COPY package.json pnpm-workspace.yaml ./
COPY .npmrc ./
COPY packages ./packages
RUN \
# If you want to build docker in China, build with --build-arg USE_CN_MIRROR=true
if [ "${USE_CN_MIRROR:-false}" = "true" ]; then \
export SENTRYCLI_CDNURL="https://npmmirror.com/mirrors/sentry-cli"; \
npm config set registry "https://registry.npmmirror.com/"; \
echo 'canvas_binary_host_mirror=https://npmmirror.com/mirrors/canvas' >> .npmrc; \
fi \
# Set the registry for corepack
&& export COREPACK_NPM_REGISTRY=$(npm config get registry | sed 's/\/$//') \
# Update corepack to latest (nodejs/corepack#612)
&& npm i -g corepack@latest \
# Enable corepack
&& corepack enable \
# Use pnpm for corepack
&& corepack use $(sed -n 's/.*"packageManager": "\(.*\)".*/\1/p' package.json) \
# Install the dependencies
&& pnpm i
COPY . .
# run build standalone for docker version
RUN npm run build:docker
## Application image, copy all the files for production
FROM busybox:latest AS app
COPY --from=base /distroless/ /
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder /app/.next/standalone /app/
# Copy server launcher
COPY --from=builder /app/scripts/serverLauncher/startServer.js /app/startServer.js
RUN \
# Add nextjs:nodejs to run the app
addgroup -S -g 1001 nodejs \
&& adduser -D -G nodejs -H -S -h /app -u 1001 nextjs \
# Set permission for nextjs:nodejs
&& chown -R nextjs:nodejs /app /etc/proxychains4.conf
## Production image, copy all the files and run next
FROM scratch
# Copy all the files from app, set the correct permission for prerender cache
COPY --from=app / /
ENV NODE_ENV="production" \
NODE_OPTIONS="--dns-result-order=ipv4first --use-openssl-ca" \
NODE_EXTRA_CA_CERTS="" \
NODE_TLS_REJECT_UNAUTHORIZED="" \
SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt"
# Make the middleware rewrite through local as default
# refs: https://github.com/lobehub/lobe-chat/issues/5876
ENV MIDDLEWARE_REWRITE_THROUGH_LOCAL="1"
# set hostname to localhost
ENV HOSTNAME="0.0.0.0" \
PORT="3210"
# General Variables
ENV ACCESS_CODE="" \
API_KEY_SELECT_MODE="" \
DEFAULT_AGENT_CONFIG="" \
SYSTEM_AGENT="" \
FEATURE_FLAGS="" \
PROXY_URL="" \
ENABLE_AUTH_PROTECTION=""
# Model Variables
ENV \
# AI21
AI21_API_KEY="" AI21_MODEL_LIST="" \
# Ai360
AI360_API_KEY="" AI360_MODEL_LIST="" \
# AiHubMix
AIHUBMIX_API_KEY="" AIHUBMIX_MODEL_LIST="" \
# Anthropic
ANTHROPIC_API_KEY="" ANTHROPIC_MODEL_LIST="" ANTHROPIC_PROXY_URL="" \
# Amazon Bedrock
ENABLED_AWS_BEDROCK="" AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_REGION="" AWS_BEDROCK_MODEL_LIST="" \
# Azure OpenAI
AZURE_API_KEY="" AZURE_API_VERSION="" AZURE_ENDPOINT="" AZURE_MODEL_LIST="" \
# Baichuan
BAICHUAN_API_KEY="" BAICHUAN_MODEL_LIST="" \
# Cloudflare
CLOUDFLARE_API_KEY="" CLOUDFLARE_BASE_URL_OR_ACCOUNT_ID="" CLOUDFLARE_MODEL_LIST="" \
# Cohere
COHERE_API_KEY="" COHERE_MODEL_LIST="" COHERE_PROXY_URL="" \
# ComfyUI
ENABLED_COMFYUI="" COMFYUI_BASE_URL="" COMFYUI_AUTH_TYPE="" \
COMFYUI_API_KEY="" COMFYUI_USERNAME="" COMFYUI_PASSWORD="" COMFYUI_CUSTOM_HEADERS="" \
# DeepSeek
DEEPSEEK_API_KEY="" DEEPSEEK_MODEL_LIST="" \
# Fireworks AI
FIREWORKSAI_API_KEY="" FIREWORKSAI_MODEL_LIST="" \
# Gitee AI
GITEE_AI_API_KEY="" GITEE_AI_MODEL_LIST="" \
# GitHub
GITHUB_TOKEN="" GITHUB_MODEL_LIST="" \
# Google
GOOGLE_API_KEY="" GOOGLE_MODEL_LIST="" GOOGLE_PROXY_URL="" \
# Groq
GROQ_API_KEY="" GROQ_MODEL_LIST="" GROQ_PROXY_URL="" \
# Higress
HIGRESS_API_KEY="" HIGRESS_MODEL_LIST="" HIGRESS_PROXY_URL="" \
# HuggingFace
HUGGINGFACE_API_KEY="" HUGGINGFACE_MODEL_LIST="" HUGGINGFACE_PROXY_URL="" \
# Hunyuan
HUNYUAN_API_KEY="" HUNYUAN_MODEL_LIST="" \
# InternLM
INTERNLM_API_KEY="" INTERNLM_MODEL_LIST="" \
# Jina
JINA_API_KEY="" JINA_MODEL_LIST="" JINA_PROXY_URL="" \
# Minimax
MINIMAX_API_KEY="" MINIMAX_MODEL_LIST="" \
# Mistral
MISTRAL_API_KEY="" MISTRAL_MODEL_LIST="" \
# ModelScope
MODELSCOPE_API_KEY="" MODELSCOPE_MODEL_LIST="" MODELSCOPE_PROXY_URL="" \
# Moonshot
MOONSHOT_API_KEY="" MOONSHOT_MODEL_LIST="" MOONSHOT_PROXY_URL="" \
# Nebius
NEBIUS_API_KEY="" NEBIUS_MODEL_LIST="" NEBIUS_PROXY_URL="" \
# NewAPI
NEWAPI_API_KEY="" NEWAPI_PROXY_URL="" \
# Novita
NOVITA_API_KEY="" NOVITA_MODEL_LIST="" \
# Nvidia NIM
NVIDIA_API_KEY="" NVIDIA_MODEL_LIST="" NVIDIA_PROXY_URL="" \
# Ollama
ENABLED_OLLAMA="" OLLAMA_MODEL_LIST="" OLLAMA_PROXY_URL="" \
# OpenAI
ENABLED_OPENAI="" OPENAI_API_KEY="" OPENAI_MODEL_LIST="" OPENAI_PROXY_URL="" \
# OpenRouter
OPENROUTER_API_KEY="" OPENROUTER_MODEL_LIST="" \
# Perplexity
PERPLEXITY_API_KEY="" PERPLEXITY_MODEL_LIST="" PERPLEXITY_PROXY_URL="" \
# Qiniu
QINIU_API_KEY="" QINIU_MODEL_LIST="" QINIU_PROXY_URL="" \
# Qwen
QWEN_API_KEY="" QWEN_MODEL_LIST="" QWEN_PROXY_URL="" \
# SambaNova
SAMBANOVA_API_KEY="" SAMBANOVA_MODEL_LIST="" \
# SenseNova
SENSENOVA_API_KEY="" SENSENOVA_MODEL_LIST="" \
# SiliconCloud
SILICONCLOUD_API_KEY="" SILICONCLOUD_MODEL_LIST="" SILICONCLOUD_PROXY_URL="" \
# Spark
SPARK_API_KEY="" SPARK_MODEL_LIST="" SPARK_PROXY_URL="" SPARK_SEARCH_MODE="" \
# Stepfun
STEPFUN_API_KEY="" STEPFUN_MODEL_LIST="" \
# Taichu
TAICHU_API_KEY="" TAICHU_MODEL_LIST="" \
# TogetherAI
TOGETHERAI_API_KEY="" TOGETHERAI_MODEL_LIST="" \
# Upstage
UPSTAGE_API_KEY="" UPSTAGE_MODEL_LIST="" \
# v0 (Vercel)
V0_API_KEY="" V0_MODEL_LIST="" \
# vLLM
VLLM_API_KEY="" VLLM_MODEL_LIST="" VLLM_PROXY_URL="" \
# Wenxin
WENXIN_API_KEY="" WENXIN_MODEL_LIST="" \
# xAI
XAI_API_KEY="" XAI_MODEL_LIST="" XAI_PROXY_URL="" \
# Xinference
XINFERENCE_API_KEY="" XINFERENCE_MODEL_LIST="" XINFERENCE_PROXY_URL="" \
# 01.AI
ZEROONE_API_KEY="" ZEROONE_MODEL_LIST="" \
# Zhipu
ZHIPU_API_KEY="" ZHIPU_MODEL_LIST="" \
# Tencent Cloud
TENCENT_CLOUD_API_KEY="" TENCENT_CLOUD_MODEL_LIST="" \
# Infini-AI
INFINIAI_API_KEY="" INFINIAI_MODEL_LIST="" \
# 302.AI
AI302_API_KEY="" AI302_MODEL_LIST="" \
# FAL
ENABLED_FAL="" FAL_API_KEY="" FAL_MODEL_LIST="" \
# BFL
BFL_API_KEY="" BFL_MODEL_LIST="" \
# Vercel AI Gateway
VERCELAIGATEWAY_API_KEY="" VERCELAIGATEWAY_MODEL_LIST=""
USER nextjs
EXPOSE 3210/tcp
ENTRYPOINT ["/bin/node"]
CMD ["/app/startServer.js"]
+63
View File
@@ -0,0 +1,63 @@
# GEMINI.md
This document serves as a shared guideline for all team members when using Gemini CLI in this repository.
## Tech Stack
read @.cursor/rules/project-introduce.mdc
## Directory Structure
read @.cursor/rules/project-structure.mdc
## Development
### Git Workflow
- use rebase for git pull
- git commit message should prefix with gitmoji
- git branch name format example: tj/feat/feature-name
- use .github/PULL_REQUEST_TEMPLATE.md to generate pull request description
### Package Management
This repository adopts a monorepo structure.
- Use `pnpm` as the primary package manager for dependency management
- Use `bun` to run npm scripts
- Use `bunx` to run executable npm packages
### TypeScript Code Style Guide
see @.cursor/rules/typescript.mdc
### Testing
- **Required Rule**: read `@.cursor/rules/testing-guide/testing-guide.mdc` before writing tests
- **Command**:
- web: `bunx vitest run --silent='passed-only' '[file-path-pattern]'`
- packages(eg: database): `cd packages/database && bunx vitest run --silent='passed-only' '[file-path-pattern]'`
**Important**:
- wrap the file path in single quotes to avoid shell expansion
- Never run `bun run test` etc to run tests, this will run all tests and cost about 10mins
- If trying to fix the same test twice, but still failed, stop and ask for help.
### Typecheck
- use `bun run type-check` to check type errors.
### i18n
- **Keys**: Add to `src/locales/default/namespace.ts`
- **Dev**: Translate `locales/zh-CN/namespace.json` and `locales/en-US/namespace.json` locales file only for dev preview
- DON'T run `pnpm i18n`, let CI auto handle it
## 🚨 Quality Checks
**MANDATORY**: After completing code changes, always run `mcp__vscode-mcp__get_diagnostics` on the modified files to identify any errors introduced by your changes and fix them.
## Rules Index
Some useful project rules are listed in @.cursor/rules/rules-index.mdc
+7 -7
View File
@@ -345,14 +345,14 @@ In addition, these plugins are not limited to news aggregation, but can also ext
<!-- PLUGIN LIST -->
| Recent Submits | Description |
| ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| [Shopping tools](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | Search for products on eBay & AliExpress, find eBay events & coupons. Get prompt examples.<br/>`shopping` `e-bay` `ali-express` `coupons` |
| [PortfolioMeta](https://lobechat.com/discover/plugin/StockData)<br/><sup>By **portfoliometa** on **2025-09-27**</sup> | Analyze stocks and get comprehensive real-time investment data and analytics.<br/>`stock` |
| [Web](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | Smart web search that reads and analyzes pages to deliver comprehensive answers from Google results.<br/>`web` `search` |
| [Bing_websearch](https://lobechat.com/discover/plugin/Bingsearch-identifier)<br/><sup>By **FineHow** on **2024-12-22**</sup> | Search for information from the internet base BingApi<br/>`bingsearch` |
| Recent Submits | Description |
| -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| [PortfolioMeta](https://lobechat.com/discover/plugin/StockData)<br/><sup>By **portfoliometa** on **2025-11-28**</sup> | Analyze stocks and get comprehensive real-time investment data and analytics.<br/>`stock` |
| [SEO](https://lobechat.com/discover/plugin/SEO)<br/><sup>By **orrenprunckun** on **2025-11-14**</sup> | Enter any URL and keyword and get an On-Page SEO analysis & insights!<br/>`seo` |
| [Shopping tools](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | Search for products on eBay & AliExpress, find eBay events & coupons. Get prompt examples.<br/>`shopping` `e-bay` `ali-express` `coupons` |
| [Web](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | Smart web search that reads and analyzes pages to deliver comprehensive answers from Google results.<br/>`web` `search` |
> 📊 Total plugins: [<kbd>**42**</kbd>](https://lobechat.com/discover/plugins)
> 📊 Total plugins: [<kbd>**41**</kbd>](https://lobechat.com/discover/plugins)
<!-- PLUGIN LIST -->
+7 -7
View File
@@ -338,14 +338,14 @@ LobeChat 的插件生态系统是其核心功能的重要扩展,它极大地
<!-- PLUGIN LIST -->
| 最近新增 | 描述 |
| -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| [购物工具](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | 在 eBay 和 AliExpress 上搜索产品,查找 eBay 活动和优惠券。获取快速示例。<br/>`购物` `e-bay` `ali-express` `优惠券` |
| [PortfolioMeta](https://lobechat.com/discover/plugin/StockData)<br/><sup>By **portfoliometa** on **2025-09-27**</sup> | 分析股票并获取全面的实时投资数据和分析。<br/>`股票` |
| [网页](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | 智能网页搜索,读取和分析页面,以提供来自 Google 结果的全面答案。<br/>`网页` `搜索` |
| [必应网页搜索](https://lobechat.com/discover/plugin/Bingsearch-identifier)<br/><sup>By **FineHow** on **2024-12-22**</sup> | 通过 BingApi 搜索互联网上的信息<br/>`bingsearch` |
| 最近新增 | 描述 |
| --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| [PortfolioMeta](https://lobechat.com/discover/plugin/StockData)<br/><sup>By **portfoliometa** on **2025-11-28**</sup> | 分析股票并获取全面的实时投资数据和分析。<br/>`股票` |
| [SEO](https://lobechat.com/discover/plugin/SEO)<br/><sup>By **orrenprunckun** on **2025-11-14**</sup> | 输入任何 URL 和关键词,获取页面 SEO 分析和见解!<br/>`seo` |
| [购物工具](https://lobechat.com/discover/plugin/ShoppingTools)<br/><sup>By **shoppingtools** on **2025-10-27**</sup> | 在 eBay 和 AliExpress 上搜索产品,查找 eBay 活动和优惠券。获取快速示例。<br/>`购物` `e-bay` `ali-express` `优惠券` |
| [网页](https://lobechat.com/discover/plugin/web)<br/><sup>By **Proghit** on **2025-01-24**</sup> | 智能网页搜索,读取和分析页面,以提供来自 Google 结果的全面答案。<br/>`网页` `搜索` |
> 📊 Total plugins: [<kbd>**42**</kbd>](https://lobechat.com/discover/plugins)
> 📊 Total plugins: [<kbd>**41**</kbd>](https://lobechat.com/discover/plugins)
<!-- PLUGIN LIST -->
+19 -18
View File
@@ -32,33 +32,34 @@
"electron-updater": "^6.6.2",
"electron-window-state": "^5.0.3",
"fetch-socks": "^1.3.2",
"get-port-please": "^3.1.2",
"get-port-please": "^3.2.0",
"pdfjs-dist": "4.10.38"
},
"devDependencies": {
"@electron-toolkit/eslint-config-prettier": "^3.0.0",
"@electron-toolkit/eslint-config-ts": "^3.0.0",
"@electron-toolkit/preload": "^3.0.1",
"@electron-toolkit/eslint-config-ts": "^3.1.0",
"@electron-toolkit/preload": "^3.0.2",
"@electron-toolkit/tsconfig": "^2.0.0",
"@electron-toolkit/utils": "^4.0.0",
"@lobechat/electron-client-ipc": "workspace:*",
"@lobechat/electron-server-ipc": "workspace:*",
"@lobechat/file-loaders": "workspace:*",
"@lobehub/i18n-cli": "^1.20.3",
"@types/lodash": "^4.17.0",
"@lobehub/i18n-cli": "^1.25.1",
"@types/lodash": "^4.17.20",
"@types/resolve": "^1.20.6",
"@types/semver": "^7.7.0",
"@types/semver": "^7.7.1",
"@types/set-cookie-parser": "^2.4.10",
"@typescript/native-preview": "7.0.0-dev.20250711.1",
"consola": "^3.1.0",
"consola": "^3.4.2",
"cookie": "^1.0.2",
"electron": "^39.1.0",
"diff": "^8.0.2",
"electron": "^38.7.0",
"electron-builder": "^26.0.12",
"electron-is": "^3.0.0",
"electron-log": "^5.3.3",
"electron-log": "^5.4.3",
"electron-store": "^8.2.0",
"electron-vite": "^3.0.0",
"execa": "^9.5.2",
"electron-vite": "^4.0.1",
"execa": "^9.6.0",
"fast-glob": "^3.3.3",
"fix-path": "^5.0.0",
"http-proxy-agent": "^7.0.2",
@@ -66,13 +67,13 @@
"just-diff": "^6.0.2",
"lodash": "^4.17.21",
"lodash-es": "^4.17.21",
"resolve": "^1.22.8",
"semver": "^7.5.4",
"set-cookie-parser": "^2.7.1",
"tsx": "^4.19.3",
"typescript": "^5.7.3",
"undici": "^7.9.0",
"vite": "^6.3.5",
"resolve": "^1.22.11",
"semver": "^7.7.3",
"set-cookie-parser": "^2.7.2",
"tsx": "^4.20.6",
"typescript": "^5.9.3",
"undici": "^7.16.0",
"vite": "^7.2.4",
"vitest": "^3.2.4"
},
"pnpm": {
-6
View File
@@ -33,12 +33,6 @@ export interface RouteInterceptConfig {
* 定义了所有需要特殊处理的路由
*/
export const interceptRoutes: RouteInterceptConfig[] = [
{
description: '设置页面',
enabled: true,
pathPrefix: '/settings',
targetWindow: 'settings',
},
{
description: '开发者工具',
enabled: true,
+2 -15
View File
@@ -3,7 +3,6 @@ import type { BrowserWindowOpts } from './core/browser/Browser';
export const BrowsersIdentifiers = {
chat: 'chat',
devtools: 'devtools',
settings: 'settings',
};
export const appBrowsers = {
@@ -13,7 +12,7 @@ export const appBrowsers = {
identifier: 'chat',
keepAlive: true,
minWidth: 400,
path: '/chat',
path: '/agent',
showOnInit: true,
titleBarStyle: 'hidden',
vibrancy: 'under-window',
@@ -32,18 +31,6 @@ export const appBrowsers = {
vibrancy: 'under-window',
width: 1000,
},
settings: {
autoHideMenuBar: true,
height: 800,
identifier: 'settings',
keepAlive: true,
minWidth: 600,
parentIdentifier: 'chat',
path: '/settings',
titleBarStyle: 'hidden',
vibrancy: 'under-window',
width: 1000,
},
} satisfies Record<string, BrowserWindowOpts>;
// Window templates for multi-instance windows
@@ -85,7 +72,7 @@ export const windowTemplates = {
allowMultipleInstances: true,
autoHideMenuBar: true,
baseIdentifier: 'chatSingle',
basePath: '/chat',
basePath: '/agent',
height: 600,
keepAlive: false, // Multi-instance windows don't need to stay alive
minWidth: 400,
@@ -1,9 +1,8 @@
import { InterceptRouteParams, OpenSettingsWindowOptions } from '@lobechat/electron-client-ipc';
import { extractSubPath, findMatchingRoute } from '~common/routes';
import { findMatchingRoute } from '~common/routes';
import {
AppBrowsersIdentifiers,
BrowsersIdentifiers,
WindowTemplateIdentifiers,
} from '@/appBrowsers';
import { IpcClientEventSender } from '@/types/ipcClientEvent';
@@ -24,14 +23,32 @@ export default class BrowserWindowsCtr extends ControllerModule {
? { tab: typeof options === 'string' ? options : undefined }
: options;
console.log('[BrowserWindowsCtr] Received request to open settings window', normalizedOptions);
console.log('[BrowserWindowsCtr] Received request to open settings', normalizedOptions);
try {
await this.app.browserManager.showSettingsWindowWithTab(normalizedOptions);
const query = new URLSearchParams();
if (normalizedOptions.searchParams) {
Object.entries(normalizedOptions.searchParams).forEach(([key, value]) => {
if (value !== undefined) query.set(key, value);
});
}
const tab = normalizedOptions.tab;
if (tab && tab !== 'common' && !query.has('active')) {
query.set('active', tab);
}
const queryString = query.toString();
const subPath = tab && !queryString ? `/${tab}` : '';
const fullPath = `/settings${subPath}${queryString ? `?${queryString}` : ''}`;
const mainWindow = this.app.browserManager.getMainWindow();
await mainWindow.loadUrl(fullPath);
mainWindow.show();
return { success: true };
} catch (error) {
console.error('[BrowserWindowsCtr] Failed to open settings window:', error);
console.error('[BrowserWindowsCtr] Failed to open settings:', error);
return { error: error.message, success: false };
}
}
@@ -76,50 +93,14 @@ export default class BrowserWindowsCtr extends ControllerModule {
);
try {
if (matchedRoute.targetWindow === BrowsersIdentifiers.settings) {
const extractedSubPath = extractSubPath(path, matchedRoute.pathPrefix);
const sanitizedSubPath =
extractedSubPath && !extractedSubPath.startsWith('?') ? extractedSubPath : undefined;
let searchParams: Record<string, string> | undefined;
try {
const url = new URL(params.url);
const entries = Array.from(url.searchParams.entries());
if (entries.length > 0) {
searchParams = entries.reduce<Record<string, string>>((acc, [key, value]) => {
acc[key] = value;
return acc;
}, {});
}
} catch (error) {
console.warn(
'[BrowserWindowsCtr] Failed to parse URL for settings route interception:',
params.url,
error,
);
}
await this.openTargetWindow(matchedRoute.targetWindow as AppBrowsersIdentifiers);
await this.app.browserManager.showSettingsWindowWithTab({
searchParams,
tab: sanitizedSubPath,
});
return {
intercepted: true,
path,
source,
subPath: sanitizedSubPath,
targetWindow: matchedRoute.targetWindow,
};
} else {
await this.openTargetWindow(matchedRoute.targetWindow as AppBrowsersIdentifiers);
return {
intercepted: true,
path,
source,
targetWindow: matchedRoute.targetWindow,
};
}
return {
intercepted: true,
path,
source,
targetWindow: matchedRoute.targetWindow,
};
} catch (error) {
console.error('[BrowserWindowsCtr] Error while processing route interception:', error);
return {
@@ -18,6 +18,7 @@ import {
WriteLocalFileParams,
} from '@lobechat/electron-client-ipc';
import { SYSTEM_FILES_TO_IGNORE, loadFile } from '@lobechat/file-loaders';
import { createPatch } from 'diff';
import { shell } from 'electron';
import fg from 'fast-glob';
import { Stats, constants } from 'node:fs';
@@ -94,26 +95,45 @@ export default class LocalFileCtr extends ControllerModule {
}
@ipcClientEvent('readLocalFile')
async readFile({ path: filePath, loc }: LocalReadFileParams): Promise<LocalReadFileResult> {
const effectiveLoc = loc ?? [0, 200];
logger.debug('Starting to read file:', { filePath, loc: effectiveLoc });
async readFile({
path: filePath,
loc,
fullContent,
}: LocalReadFileParams): Promise<LocalReadFileResult> {
const effectiveLoc = fullContent ? undefined : (loc ?? [0, 200]);
logger.debug('Starting to read file:', { filePath, fullContent, loc: effectiveLoc });
try {
const fileDocument = await loadFile(filePath);
const [startLine, endLine] = effectiveLoc;
const lines = fileDocument.content.split('\n');
const totalLineCount = lines.length;
const totalCharCount = fileDocument.content.length;
// Adjust slice indices to be 0-based and inclusive/exclusive
const selectedLines = lines.slice(startLine, endLine);
const content = selectedLines.join('\n');
const charCount = content.length;
const lineCount = selectedLines.length;
let content: string;
let charCount: number;
let lineCount: number;
let actualLoc: [number, number];
if (effectiveLoc === undefined) {
// Return full content
content = fileDocument.content;
charCount = totalCharCount;
lineCount = totalLineCount;
actualLoc = [0, totalLineCount];
} else {
// Return specified range
const [startLine, endLine] = effectiveLoc;
const selectedLines = lines.slice(startLine, endLine);
content = selectedLines.join('\n');
charCount = content.length;
lineCount = selectedLines.length;
actualLoc = effectiveLoc;
}
logger.debug('File read successfully:', {
filePath,
fullContent,
selectedLineCount: lineCount,
totalCharCount,
totalLineCount,
@@ -128,7 +148,7 @@ export default class LocalFileCtr extends ControllerModule {
fileType: fileDocument.fileType,
filename: fileDocument.filename,
lineCount,
loc: effectiveLoc,
loc: actualLoc,
// Line count for the selected range
modifiedTime: fileDocument.modifiedTime,
@@ -467,15 +487,35 @@ export default class LocalFileCtr extends ControllerModule {
*/
@ipcClientEvent('searchLocalFiles')
async handleLocalFilesSearch(params: LocalSearchFilesParams): Promise<FileResult[]> {
logger.debug('Received file search request:', { keywords: params.keywords });
logger.debug('Received file search request:', {
directory: params.directory,
keywords: params.keywords,
});
const options: Omit<SearchOptions, 'keywords'> = {
limit: 30,
// Build search options from params, mapping directory to onlyIn
const options: SearchOptions = {
contentContains: params.contentContains,
createdAfter: params.createdAfter ? new Date(params.createdAfter) : undefined,
createdBefore: params.createdBefore ? new Date(params.createdBefore) : undefined,
detailed: params.detailed,
exclude: params.exclude,
fileTypes: params.fileTypes,
keywords: params.keywords,
limit: params.limit || 30,
liveUpdate: params.liveUpdate,
modifiedAfter: params.modifiedAfter ? new Date(params.modifiedAfter) : undefined,
modifiedBefore: params.modifiedBefore ? new Date(params.modifiedBefore) : undefined,
onlyIn: params.directory, // Map directory param to onlyIn option
sortBy: params.sortBy,
sortDirection: params.sortDirection,
};
try {
const results = await this.searchService.search(params.keywords, options);
logger.debug('File search completed', { count: results.length });
const results = await this.searchService.search(options.keywords, options);
logger.debug('File search completed', {
count: results.length,
directory: params.directory,
});
return results;
} catch (error) {
logger.error('File search failed:', error);
@@ -691,8 +731,32 @@ export default class LocalFileCtr extends ControllerModule {
// Write back to file
await writeFile(filePath, newContent, 'utf8');
logger.info(`${logPrefix} File edited successfully`, { replacements });
// Generate diff for UI display
const patch = createPatch(filePath, content, newContent, '', '');
const diffText = `diff --git a${filePath} b${filePath}\n${patch}`;
// Calculate lines added and deleted from patch
const patchLines = patch.split('\n');
let linesAdded = 0;
let linesDeleted = 0;
for (const line of patchLines) {
if (line.startsWith('+') && !line.startsWith('+++')) {
linesAdded++;
} else if (line.startsWith('-') && !line.startsWith('---')) {
linesDeleted++;
}
}
logger.info(`${logPrefix} File edited successfully`, {
linesAdded,
linesDeleted,
replacements,
});
return {
diffText,
linesAdded,
linesDeleted,
replacements,
success: true,
};
@@ -0,0 +1,242 @@
import {
GetCommandOutputParams,
GetCommandOutputResult,
KillCommandParams,
KillCommandResult,
RunCommandParams,
RunCommandResult,
} from '@lobechat/electron-client-ipc';
import { ChildProcess, spawn } from 'node:child_process';
import { randomUUID } from 'node:crypto';
import { createLogger } from '@/utils/logger';
import { ControllerModule, ipcClientEvent } from './index';
const logger = createLogger('controllers:ShellCommandCtr');
interface ShellProcess {
lastReadStderr: number;
lastReadStdout: number;
process: ChildProcess;
stderr: string[];
stdout: string[];
}
export default class ShellCommandCtr extends ControllerModule {
// Shell process management
private shellProcesses = new Map<string, ShellProcess>();
@ipcClientEvent('runCommand')
async handleRunCommand({
command,
description,
run_in_background,
timeout = 120_000,
}: RunCommandParams): Promise<RunCommandResult> {
const logPrefix = `[runCommand: ${description || command.slice(0, 50)}]`;
logger.debug(`${logPrefix} Starting command execution`, {
background: run_in_background,
timeout,
});
// Validate timeout
const effectiveTimeout = Math.min(Math.max(timeout, 1000), 600_000);
// Cross-platform shell selection
const shellConfig =
process.platform === 'win32'
? { args: ['/c', command], cmd: 'cmd.exe' }
: { args: ['-c', command], cmd: '/bin/sh' };
try {
if (run_in_background) {
// Background execution
const shellId = randomUUID();
const childProcess = spawn(shellConfig.cmd, shellConfig.args, {
env: process.env,
shell: false,
});
const shellProcess: ShellProcess = {
lastReadStderr: 0,
lastReadStdout: 0,
process: childProcess,
stderr: [],
stdout: [],
};
// Capture output
childProcess.stdout?.on('data', (data) => {
shellProcess.stdout.push(data.toString());
});
childProcess.stderr?.on('data', (data) => {
shellProcess.stderr.push(data.toString());
});
childProcess.on('exit', (code) => {
logger.debug(`${logPrefix} Background process exited`, { code, shellId });
});
this.shellProcesses.set(shellId, shellProcess);
logger.info(`${logPrefix} Started background execution`, { shellId });
return {
shell_id: shellId,
success: true,
};
} else {
// Synchronous execution with timeout
return new Promise((resolve) => {
const childProcess = spawn(shellConfig.cmd, shellConfig.args, {
env: process.env,
shell: false,
});
let stdout = '';
let stderr = '';
let killed = false;
const timeoutHandle = setTimeout(() => {
killed = true;
childProcess.kill();
resolve({
error: `Command timed out after ${effectiveTimeout}ms`,
stderr,
stdout,
success: false,
});
}, effectiveTimeout);
childProcess.stdout?.on('data', (data) => {
stdout += data.toString();
});
childProcess.stderr?.on('data', (data) => {
stderr += data.toString();
});
childProcess.on('exit', (code) => {
if (!killed) {
clearTimeout(timeoutHandle);
const success = code === 0;
logger.info(`${logPrefix} Command completed`, { code, success });
resolve({
exit_code: code || 0,
output: stdout + stderr,
stderr,
stdout,
success,
});
}
});
childProcess.on('error', (error) => {
clearTimeout(timeoutHandle);
logger.error(`${logPrefix} Command failed:`, error);
resolve({
error: error.message,
stderr,
stdout,
success: false,
});
});
});
}
} catch (error) {
logger.error(`${logPrefix} Failed to execute command:`, error);
return {
error: (error as Error).message,
success: false,
};
}
}
@ipcClientEvent('getCommandOutput')
async handleGetCommandOutput({
filter,
shell_id,
}: GetCommandOutputParams): Promise<GetCommandOutputResult> {
const logPrefix = `[getCommandOutput: ${shell_id}]`;
logger.debug(`${logPrefix} Retrieving output`);
const shellProcess = this.shellProcesses.get(shell_id);
if (!shellProcess) {
logger.error(`${logPrefix} Shell process not found`);
return {
error: `Shell ID ${shell_id} not found`,
output: '',
running: false,
stderr: '',
stdout: '',
success: false,
};
}
const { lastReadStderr, lastReadStdout, process: childProcess, stderr, stdout } = shellProcess;
// Get new output since last read
const newStdout = stdout.slice(lastReadStdout).join('');
const newStderr = stderr.slice(lastReadStderr).join('');
let output = newStdout + newStderr;
// Apply filter if provided
if (filter) {
try {
const regex = new RegExp(filter, 'gm');
const lines = output.split('\n');
output = lines.filter((line) => regex.test(line)).join('\n');
} catch (error) {
logger.error(`${logPrefix} Invalid filter regex:`, error);
}
}
// Update last read positions separately
shellProcess.lastReadStdout = stdout.length;
shellProcess.lastReadStderr = stderr.length;
const running = childProcess.exitCode === null;
logger.debug(`${logPrefix} Output retrieved`, {
outputLength: output.length,
running,
});
return {
output,
running,
stderr: newStderr,
stdout: newStdout,
success: true,
};
}
@ipcClientEvent('killCommand')
async handleKillCommand({ shell_id }: KillCommandParams): Promise<KillCommandResult> {
const logPrefix = `[killCommand: ${shell_id}]`;
logger.debug(`${logPrefix} Attempting to kill shell`);
const shellProcess = this.shellProcesses.get(shell_id);
if (!shellProcess) {
logger.error(`${logPrefix} Shell process not found`);
return {
error: `Shell ID ${shell_id} not found`,
success: false,
};
}
try {
shellProcess.process.kill();
this.shellProcesses.delete(shell_id);
logger.info(`${logPrefix} Shell killed successfully`);
return { success: true };
} catch (error) {
logger.error(`${logPrefix} Failed to kill shell:`, error);
return {
error: (error as Error).message,
success: false,
};
}
}
}
@@ -9,36 +9,40 @@ import BrowserWindowsCtr from '../BrowserWindowsCtr';
// 模拟 App 及其依赖项
const mockToggleVisible = vi.fn();
const mockShowSettingsWindowWithTab = vi.fn();
const mockLoadUrl = vi.fn();
const mockShow = vi.fn();
const mockRedirectToPage = vi.fn();
const mockCloseWindow = vi.fn();
const mockMinimizeWindow = vi.fn();
const mockMaximizeWindow = vi.fn();
const mockRetrieveByIdentifier = vi.fn();
const mockGetMainWindow = vi.fn(() => ({
toggleVisible: mockToggleVisible,
loadUrl: mockLoadUrl,
show: mockShow,
}));
const mockShow = vi.fn();
const mockShowOther = vi.fn();
// mock findMatchingRoute and extractSubPath
vi.mock('~common/routes', async () => ({
findMatchingRoute: vi.fn(),
extractSubPath: vi.fn(),
}));
const { findMatchingRoute, extractSubPath } = await import('~common/routes');
const { findMatchingRoute } = await import('~common/routes');
const mockApp = {
browserManager: {
getMainWindow: mockGetMainWindow,
showSettingsWindowWithTab: mockShowSettingsWindowWithTab,
redirectToPage: mockRedirectToPage,
closeWindow: mockCloseWindow,
minimizeWindow: mockMinimizeWindow,
maximizeWindow: mockMaximizeWindow,
retrieveByIdentifier: mockRetrieveByIdentifier.mockImplementation(
(identifier: AppBrowsersIdentifiers | string) => {
if (identifier === BrowsersIdentifiers.settings || identifier === 'some-other-window') {
return { show: mockShow };
if (identifier === 'some-other-window') {
return { show: mockShowOther };
}
return { show: mockShow }; // Default mock for other identifiers
return { show: mockShowOther }; // Default mock for other identifiers
},
),
},
@@ -61,16 +65,18 @@ describe('BrowserWindowsCtr', () => {
});
describe('openSettingsWindow', () => {
it('should show the settings window with the specified tab', async () => {
it('should navigate to settings in main window with the specified tab', async () => {
const tab = 'appearance';
const result = await browserWindowsCtr.openSettingsWindow(tab);
expect(mockShowSettingsWindowWithTab).toHaveBeenCalledWith({ tab });
expect(mockGetMainWindow).toHaveBeenCalled();
expect(mockLoadUrl).toHaveBeenCalledWith('/settings?active=appearance');
expect(mockShow).toHaveBeenCalled();
expect(result).toEqual({ success: true });
});
it('should return error if showing settings window fails', async () => {
const errorMessage = 'Failed to show';
mockShowSettingsWindowWithTab.mockRejectedValueOnce(new Error(errorMessage));
it('should return error if navigation fails', async () => {
const errorMessage = 'Failed to navigate';
mockLoadUrl.mockRejectedValueOnce(new Error(errorMessage));
const result = await browserWindowsCtr.openSettingsWindow('display');
expect(result).toEqual({ error: errorMessage, success: false });
});
@@ -117,36 +123,7 @@ describe('BrowserWindowsCtr', () => {
expect(result).toEqual({ intercepted: false, path: params.path, source: params.source });
});
it('should show settings window if matched route target is settings', async () => {
const params: InterceptRouteParams = {
...baseParams,
path: '/settings/provider',
url: 'app://host/settings/provider?active=provider&provider=ollama',
};
const matchedRoute = { targetWindow: BrowsersIdentifiers.settings, pathPrefix: '/settings' };
const subPath = 'provider';
(findMatchingRoute as Mock).mockReturnValue(matchedRoute);
(extractSubPath as Mock).mockReturnValue(subPath);
const result = await browserWindowsCtr.interceptRoute(params);
expect(findMatchingRoute).toHaveBeenCalledWith(params.path);
expect(extractSubPath).toHaveBeenCalledWith(params.path, matchedRoute.pathPrefix);
expect(mockShowSettingsWindowWithTab).toHaveBeenCalledWith({
searchParams: { active: 'provider', provider: 'ollama' },
tab: subPath,
});
expect(result).toEqual({
intercepted: true,
path: params.path,
source: params.source,
subPath,
targetWindow: matchedRoute.targetWindow,
});
expect(mockShow).not.toHaveBeenCalled();
});
it('should open target window if matched route target is not settings', async () => {
it('should open target window if matched route is found', async () => {
const params: InterceptRouteParams = {
...baseParams,
path: '/other/page',
@@ -160,44 +137,16 @@ describe('BrowserWindowsCtr', () => {
expect(findMatchingRoute).toHaveBeenCalledWith(params.path);
expect(mockRetrieveByIdentifier).toHaveBeenCalledWith(targetWindowIdentifier);
expect(mockShow).toHaveBeenCalled();
expect(mockShowOther).toHaveBeenCalled();
expect(result).toEqual({
intercepted: true,
path: params.path,
source: params.source,
targetWindow: matchedRoute.targetWindow,
});
expect(mockShowSettingsWindowWithTab).not.toHaveBeenCalled();
});
it('should return error if processing route interception fails for settings', async () => {
const params: InterceptRouteParams = {
...baseParams,
path: '/settings',
url: 'app://host/settings?active=general',
};
const matchedRoute = { targetWindow: BrowsersIdentifiers.settings, pathPrefix: '/settings' };
const subPath = undefined;
const errorMessage = 'Processing error for settings';
(findMatchingRoute as Mock).mockReturnValue(matchedRoute);
(extractSubPath as Mock).mockReturnValue(subPath);
mockShowSettingsWindowWithTab.mockRejectedValueOnce(new Error(errorMessage));
const result = await browserWindowsCtr.interceptRoute(params);
expect(mockShowSettingsWindowWithTab).toHaveBeenCalledWith({
searchParams: { active: 'general' },
tab: subPath,
});
expect(result).toEqual({
error: errorMessage,
intercepted: false,
path: params.path,
source: params.source,
});
});
it('should return error if processing route interception fails for other window', async () => {
it('should return error if processing route interception fails', async () => {
const params: InterceptRouteParams = {
...baseParams,
path: '/another/custom',
@@ -183,6 +183,26 @@ describe('LocalFileCtr', () => {
expect(result.totalLineCount).toBe(5);
});
it('should read full file content when fullContent is true', async () => {
const mockFileContent = 'line1\nline2\nline3\nline4\nline5';
vi.mocked(mockLoadFile).mockResolvedValue({
content: mockFileContent,
filename: 'test.txt',
fileType: 'txt',
createdTime: new Date('2024-01-01'),
modifiedTime: new Date('2024-01-02'),
});
const result = await localFileCtr.readFile({ path: '/test/file.txt', fullContent: true });
expect(result.content).toBe(mockFileContent);
expect(result.lineCount).toBe(5);
expect(result.charCount).toBe(mockFileContent.length);
expect(result.totalLineCount).toBe(5);
expect(result.totalCharCount).toBe(mockFileContent.length);
expect(result.loc).toEqual([0, 5]);
});
it('should handle file read error', async () => {
vi.mocked(mockLoadFile).mockRejectedValue(new Error('File not found'));
@@ -345,7 +365,10 @@ describe('LocalFileCtr', () => {
const result = await localFileCtr.handleLocalFilesSearch({ keywords: 'test' });
expect(result).toEqual(mockResults);
expect(mockSearchService.search).toHaveBeenCalledWith('test', { limit: 30 });
expect(mockSearchService.search).toHaveBeenCalledWith('test', {
keywords: 'test',
limit: 30,
});
});
it('should return empty array on search error', async () => {
@@ -389,4 +412,137 @@ describe('LocalFileCtr', () => {
});
});
});
describe('handleEditFile', () => {
it('should replace first occurrence successfully', async () => {
const originalContent = 'Hello world\nHello again\nGoodbye world';
vi.mocked(mockFsPromises.readFile).mockResolvedValue(originalContent);
vi.mocked(mockFsPromises.writeFile).mockResolvedValue(undefined);
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.txt',
old_string: 'Hello',
new_string: 'Hi',
replace_all: false,
});
expect(result.success).toBe(true);
expect(result.replacements).toBe(1);
expect(result.linesAdded).toBe(1);
expect(result.linesDeleted).toBe(1);
expect(result.diffText).toContain('diff --git a/test/file.txt b/test/file.txt');
expect(mockFsPromises.writeFile).toHaveBeenCalledWith(
'/test/file.txt',
'Hi world\nHello again\nGoodbye world',
'utf8',
);
});
it('should replace all occurrences when replace_all is true', async () => {
const originalContent = 'Hello world\nHello again\nHello there';
vi.mocked(mockFsPromises.readFile).mockResolvedValue(originalContent);
vi.mocked(mockFsPromises.writeFile).mockResolvedValue(undefined);
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.txt',
old_string: 'Hello',
new_string: 'Hi',
replace_all: true,
});
expect(result.success).toBe(true);
expect(result.replacements).toBe(3);
expect(result.linesAdded).toBe(3);
expect(result.linesDeleted).toBe(3);
expect(mockFsPromises.writeFile).toHaveBeenCalledWith(
'/test/file.txt',
'Hi world\nHi again\nHi there',
'utf8',
);
});
it('should handle multiline replacement correctly', async () => {
const originalContent = 'function test() {\n console.log("old");\n}';
vi.mocked(mockFsPromises.readFile).mockResolvedValue(originalContent);
vi.mocked(mockFsPromises.writeFile).mockResolvedValue(undefined);
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.js',
old_string: 'console.log("old");',
new_string: 'console.log("new");\n console.log("added");',
replace_all: false,
});
expect(result.success).toBe(true);
expect(result.replacements).toBe(1);
expect(result.linesAdded).toBe(2);
expect(result.linesDeleted).toBe(1);
});
it('should return error when old_string is not found', async () => {
const originalContent = 'Hello world';
vi.mocked(mockFsPromises.readFile).mockResolvedValue(originalContent);
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.txt',
old_string: 'NonExistent',
new_string: 'New',
replace_all: false,
});
expect(result.success).toBe(false);
expect(result.error).toBe('The specified old_string was not found in the file');
expect(result.replacements).toBe(0);
expect(mockFsPromises.writeFile).not.toHaveBeenCalled();
});
it('should handle file read error', async () => {
vi.mocked(mockFsPromises.readFile).mockRejectedValue(new Error('Permission denied'));
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.txt',
old_string: 'Hello',
new_string: 'Hi',
replace_all: false,
});
expect(result.success).toBe(false);
expect(result.error).toBe('Permission denied');
expect(result.replacements).toBe(0);
});
it('should handle file write error', async () => {
const originalContent = 'Hello world';
vi.mocked(mockFsPromises.readFile).mockResolvedValue(originalContent);
vi.mocked(mockFsPromises.writeFile).mockRejectedValue(new Error('Disk full'));
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.txt',
old_string: 'Hello',
new_string: 'Hi',
replace_all: false,
});
expect(result.success).toBe(false);
expect(result.error).toBe('Disk full');
});
it('should generate correct diff format', async () => {
const originalContent = 'line 1\nline 2\nline 3';
vi.mocked(mockFsPromises.readFile).mockResolvedValue(originalContent);
vi.mocked(mockFsPromises.writeFile).mockResolvedValue(undefined);
const result = await localFileCtr.handleEditFile({
file_path: '/test/file.txt',
old_string: 'line 2',
new_string: 'modified line 2',
replace_all: false,
});
expect(result.success).toBe(true);
expect(result.diffText).toContain('diff --git a/test/file.txt b/test/file.txt');
expect(result.diffText).toContain('-line 2');
expect(result.diffText).toContain('+modified line 2');
});
});
});
@@ -0,0 +1,499 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { App } from '@/core/App';
import ShellCommandCtr from '../ShellCommandCtr';
// Mock logger
vi.mock('@/utils/logger', () => ({
createLogger: () => ({
debug: vi.fn(),
info: vi.fn(),
warn: vi.fn(),
error: vi.fn(),
}),
}));
// Mock child_process
vi.mock('node:child_process', () => ({
spawn: vi.fn(),
}));
// Mock crypto
vi.mock('node:crypto', () => ({
randomUUID: vi.fn(() => 'test-uuid-123'),
}));
const mockApp = {} as unknown as App;
describe('ShellCommandCtr', () => {
let shellCommandCtr: ShellCommandCtr;
let mockSpawn: any;
let mockChildProcess: any;
beforeEach(async () => {
vi.clearAllMocks();
// Import mocks
const childProcessModule = await import('node:child_process');
mockSpawn = vi.mocked(childProcessModule.spawn);
// Create mock child process
mockChildProcess = {
stdout: {
on: vi.fn(),
},
stderr: {
on: vi.fn(),
},
on: vi.fn(),
kill: vi.fn(),
exitCode: null,
};
mockSpawn.mockReturnValue(mockChildProcess);
shellCommandCtr = new ShellCommandCtr(mockApp);
});
describe('handleRunCommand', () => {
describe('synchronous mode', () => {
it('should execute command successfully', async () => {
let exitCallback: (code: number) => void;
let stdoutCallback: (data: Buffer) => void;
mockChildProcess.on.mockImplementation((event: string, callback: any) => {
if (event === 'exit') {
exitCallback = callback;
// Simulate successful exit
setTimeout(() => exitCallback(0), 10);
}
return mockChildProcess;
});
mockChildProcess.stdout.on.mockImplementation((event: string, callback: any) => {
if (event === 'data') {
stdoutCallback = callback;
// Simulate output
setTimeout(() => stdoutCallback(Buffer.from('test output\n')), 5);
}
return mockChildProcess.stdout;
});
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
const result = await shellCommandCtr.handleRunCommand({
command: 'echo "test"',
description: 'test command',
});
expect(result.success).toBe(true);
expect(result.stdout).toBe('test output\n');
expect(result.exit_code).toBe(0);
});
it('should handle command timeout', async () => {
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
const result = await shellCommandCtr.handleRunCommand({
command: 'sleep 10',
description: 'long running command',
timeout: 100,
});
expect(result.success).toBe(false);
expect(result.error).toContain('timed out');
expect(mockChildProcess.kill).toHaveBeenCalled();
});
it('should handle command execution error', async () => {
let errorCallback: (error: Error) => void;
mockChildProcess.on.mockImplementation((event: string, callback: any) => {
if (event === 'error') {
errorCallback = callback;
setTimeout(() => errorCallback(new Error('Command not found')), 10);
}
return mockChildProcess;
});
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
const result = await shellCommandCtr.handleRunCommand({
command: 'invalid-command',
description: 'invalid command',
});
expect(result.success).toBe(false);
expect(result.error).toBe('Command not found');
});
it('should handle non-zero exit code', async () => {
let exitCallback: (code: number) => void;
mockChildProcess.on.mockImplementation((event: string, callback: any) => {
if (event === 'exit') {
exitCallback = callback;
setTimeout(() => exitCallback(1), 10);
}
return mockChildProcess;
});
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
const result = await shellCommandCtr.handleRunCommand({
command: 'exit 1',
description: 'failing command',
});
expect(result.success).toBe(false);
expect(result.exit_code).toBe(1);
});
it('should capture stderr output', async () => {
let exitCallback: (code: number) => void;
let stderrCallback: (data: Buffer) => void;
mockChildProcess.on.mockImplementation((event: string, callback: any) => {
if (event === 'exit') {
exitCallback = callback;
setTimeout(() => exitCallback(1), 10);
}
return mockChildProcess;
});
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation((event: string, callback: any) => {
if (event === 'data') {
stderrCallback = callback;
setTimeout(() => stderrCallback(Buffer.from('error message\n')), 5);
}
return mockChildProcess.stderr;
});
const result = await shellCommandCtr.handleRunCommand({
command: 'command-with-error',
description: 'command with stderr',
});
expect(result.stderr).toBe('error message\n');
});
it('should enforce timeout limits', async () => {
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
// Test minimum timeout
const minResult = await shellCommandCtr.handleRunCommand({
command: 'sleep 5',
timeout: 500, // Below 1000ms minimum
});
expect(minResult.success).toBe(false);
expect(minResult.error).toContain('1000ms'); // Should use 1000ms minimum
});
});
describe('background mode', () => {
it('should start command in background', async () => {
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
const result = await shellCommandCtr.handleRunCommand({
command: 'long-running-task',
description: 'background task',
run_in_background: true,
});
expect(result.success).toBe(true);
expect(result.shell_id).toBe('test-uuid-123');
});
it('should use correct shell on Windows', async () => {
const originalPlatform = process.platform;
Object.defineProperty(process, 'platform', { value: 'win32' });
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
await shellCommandCtr.handleRunCommand({
command: 'dir',
description: 'windows command',
run_in_background: true,
});
expect(mockSpawn).toHaveBeenCalledWith('cmd.exe', ['/c', 'dir'], expect.any(Object));
Object.defineProperty(process, 'platform', { value: originalPlatform });
});
it('should use correct shell on Unix', async () => {
const originalPlatform = process.platform;
Object.defineProperty(process, 'platform', { value: 'darwin' });
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
await shellCommandCtr.handleRunCommand({
command: 'ls',
description: 'unix command',
run_in_background: true,
});
expect(mockSpawn).toHaveBeenCalledWith('/bin/sh', ['-c', 'ls'], expect.any(Object));
Object.defineProperty(process, 'platform', { value: originalPlatform });
});
});
});
describe('handleGetCommandOutput', () => {
beforeEach(async () => {
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation((event: string, callback: any) => {
if (event === 'data') {
// Simulate some output
setTimeout(() => callback(Buffer.from('line 1\n')), 5);
setTimeout(() => callback(Buffer.from('line 2\n')), 10);
}
return mockChildProcess.stdout;
});
mockChildProcess.stderr.on.mockImplementation((event: string, callback: any) => {
if (event === 'data') {
setTimeout(() => callback(Buffer.from('error line\n')), 7);
}
return mockChildProcess.stderr;
});
// Start a background process first
await shellCommandCtr.handleRunCommand({
command: 'test-command',
run_in_background: true,
});
});
it('should retrieve command output', async () => {
// Wait for output to be captured
await new Promise((resolve) => setTimeout(resolve, 20));
const result = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(result.success).toBe(true);
expect(result.stdout).toContain('line 1');
expect(result.stderr).toContain('error line');
});
it('should return error for non-existent shell_id', async () => {
const result = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'non-existent-id',
});
expect(result.success).toBe(false);
expect(result.error).toContain('not found');
});
it('should filter output with regex', async () => {
// Wait for output to be captured
await new Promise((resolve) => setTimeout(resolve, 20));
const result = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
filter: 'line 1',
});
expect(result.success).toBe(true);
expect(result.output).toContain('line 1');
expect(result.output).not.toContain('line 2');
});
it('should only return new output since last read', async () => {
// Wait for initial output
await new Promise((resolve) => setTimeout(resolve, 20));
// First read
const firstResult = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(firstResult.stdout).toContain('line 1');
// Second read should return empty (no new output)
const secondResult = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(secondResult.stdout).toBe('');
expect(secondResult.stderr).toBe('');
});
it('should handle invalid regex filter gracefully', async () => {
await new Promise((resolve) => setTimeout(resolve, 20));
const result = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
filter: '[invalid(regex',
});
expect(result.success).toBe(true);
// Should return unfiltered output when filter is invalid
});
it('should report running status correctly', async () => {
mockChildProcess.exitCode = null;
const runningResult = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(runningResult.running).toBe(true);
// Simulate process exit
mockChildProcess.exitCode = 0;
const exitedResult = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(exitedResult.running).toBe(false);
});
it('should track stdout and stderr offsets separately when streaming output', async () => {
// Create a new background process with manual control over stdout/stderr
let stdoutCallback: (data: Buffer) => void;
let stderrCallback: (data: Buffer) => void;
mockChildProcess.stdout.on.mockImplementation((event: string, callback: any) => {
if (event === 'data') {
stdoutCallback = callback;
}
return mockChildProcess.stdout;
});
mockChildProcess.stderr.on.mockImplementation((event: string, callback: any) => {
if (event === 'data') {
stderrCallback = callback;
}
return mockChildProcess.stderr;
});
// Start a new background process
await shellCommandCtr.handleRunCommand({
command: 'test-interleaved',
run_in_background: true,
});
// Simulate stderr output first
stderrCallback(Buffer.from('error 1\n'));
await new Promise((resolve) => setTimeout(resolve, 5));
// First read - should get stderr
const firstRead = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(firstRead.stderr).toBe('error 1\n');
expect(firstRead.stdout).toBe('');
// Simulate stdout output after stderr
stdoutCallback(Buffer.from('output 1\n'));
await new Promise((resolve) => setTimeout(resolve, 5));
// Second read - should get stdout without losing data
const secondRead = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(secondRead.stdout).toBe('output 1\n');
expect(secondRead.stderr).toBe('');
// Simulate more stderr
stderrCallback(Buffer.from('error 2\n'));
await new Promise((resolve) => setTimeout(resolve, 5));
// Third read - should get new stderr
const thirdRead = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(thirdRead.stderr).toBe('error 2\n');
expect(thirdRead.stdout).toBe('');
// Simulate more stdout
stdoutCallback(Buffer.from('output 2\n'));
await new Promise((resolve) => setTimeout(resolve, 5));
// Fourth read - should get new stdout
const fourthRead = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(fourthRead.stdout).toBe('output 2\n');
expect(fourthRead.stderr).toBe('');
});
});
describe('handleKillCommand', () => {
beforeEach(async () => {
mockChildProcess.on.mockImplementation(() => mockChildProcess);
mockChildProcess.stdout.on.mockImplementation(() => mockChildProcess.stdout);
mockChildProcess.stderr.on.mockImplementation(() => mockChildProcess.stderr);
// Start a background process
await shellCommandCtr.handleRunCommand({
command: 'test-command',
run_in_background: true,
});
});
it('should kill command successfully', async () => {
const result = await shellCommandCtr.handleKillCommand({
shell_id: 'test-uuid-123',
});
expect(result.success).toBe(true);
expect(mockChildProcess.kill).toHaveBeenCalled();
});
it('should return error for non-existent shell_id', async () => {
const result = await shellCommandCtr.handleKillCommand({
shell_id: 'non-existent-id',
});
expect(result.success).toBe(false);
expect(result.error).toContain('not found');
});
it('should remove process from map after killing', async () => {
await shellCommandCtr.handleKillCommand({
shell_id: 'test-uuid-123',
});
// Try to get output from killed process
const outputResult = await shellCommandCtr.handleGetCommandOutput({
shell_id: 'test-uuid-123',
});
expect(outputResult.success).toBe(false);
expect(outputResult.error).toContain('not found');
});
it('should handle kill error gracefully', async () => {
mockChildProcess.kill.mockImplementation(() => {
throw new Error('Kill failed');
});
const result = await shellCommandCtr.handleKillCommand({
shell_id: 'test-uuid-123',
});
expect(result.success).toBe(false);
expect(result.error).toBe('Kill failed');
});
});
});
@@ -336,6 +336,7 @@ export default class Browser {
vibrancy: 'sidebar',
visualEffectState: 'active',
webPreferences: {
backgroundThrottling: false,
contextIsolation: true,
preload: join(preloadDir, 'index.js'),
},
@@ -1,8 +1,4 @@
import {
MainBroadcastEventKey,
MainBroadcastParams,
OpenSettingsWindowOptions,
} from '@lobechat/electron-client-ipc';
import { MainBroadcastEventKey, MainBroadcastParams } from '@lobechat/electron-client-ipc';
import { WebContents } from 'electron';
import { createLogger } from '@/utils/logger';
@@ -42,13 +38,6 @@ export class BrowserManager {
window.show();
}
showSettingsWindow() {
logger.debug('Showing settings window');
const window = this.retrieveByIdentifier('settings');
window.show();
return window;
}
broadcastToAllWindows = <T extends MainBroadcastEventKey>(
event: T,
data: MainBroadcastParams<T>,
@@ -68,50 +57,6 @@ export class BrowserManager {
this.browsers.get(identifier)?.broadcast(event, data);
};
/**
* Display the settings window and navigate to a specific tab
* @param tab Settings window sub-path tab
*/
async showSettingsWindowWithTab(options?: OpenSettingsWindowOptions) {
const tab = options?.tab;
const searchParams = options?.searchParams;
const query = new URLSearchParams();
if (searchParams) {
Object.entries(searchParams).forEach(([key, value]) => {
if (value !== undefined) query.set(key, value);
});
}
if (tab && tab !== 'common' && !query.has('active')) {
query.set('active', tab);
}
const queryString = query.toString();
const activeTab = query.get('active') ?? tab;
logger.debug(
`Showing settings window with navigation: active=${activeTab || 'default'}, query=${
queryString || 'none'
}`,
);
if (queryString) {
const browser = await this.redirectToPage('settings', undefined, queryString);
// make provider page more large
if (activeTab?.startsWith('provider')) {
logger.debug('Resizing window for provider settings');
browser.setWindowSize({ height: 1000, width: 1400 });
browser.moveToCenter();
}
return browser;
} else {
return this.showSettingsWindow();
}
}
/**
* Navigate window to specific sub-path
* @param identifier Window identifier
+9 -3
View File
@@ -81,8 +81,10 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
{ type: 'separator' },
{
accelerator: 'Command+,',
click: () => {
this.app.browserManager.showSettingsWindow();
click: async () => {
const mainWindow = this.app.browserManager.getMainWindow();
await mainWindow.loadUrl('/settings');
mainWindow.show();
},
label: t('macOS.preferences'),
},
@@ -337,7 +339,11 @@ export class MacOSMenu extends BaseMenuPlatform implements IMenuPlatform {
label: t('tray.show', { appName }),
},
{
click: () => this.app.browserManager.retrieveByIdentifier('settings').show(),
click: async () => {
const mainWindow = this.app.browserManager.getMainWindow();
await mainWindow.loadUrl('/settings');
mainWindow.show();
},
label: t('file.preferences'),
},
{ type: 'separator' },
@@ -0,0 +1,357 @@
import path from 'node:path';
import { describe, expect, it } from 'vitest';
import { MacOSSearchServiceImpl } from '../impl/macOS';
/**
* macOS File Search Integration Tests
*
* These tests run against the real macOS Spotlight service
* using files in the current repository.
*
* Run with: bunx vitest run 'macOS.integration.test'
*/
// Get repository root path (assumes test runs from apps/desktop)
const repoRoot = path.resolve(__dirname, '../../../../..');
describe.skipIf(process.platform !== 'darwin')('MacOSSearchServiceImpl Integration', () => {
const searchService = new MacOSSearchServiceImpl();
describe('checkSearchServiceStatus', () => {
it('should verify Spotlight is available on macOS', async () => {
const isAvailable = await searchService.checkSearchServiceStatus();
expect(isAvailable).toBe(true);
});
});
describe('search for known repository files', () => {
it('should find package.json in repo root', async () => {
const results = await searchService.search({
keywords: 'package.json',
limit: 10,
onlyIn: repoRoot,
});
expect(results.length).toBeGreaterThan(0);
// Should find at least one package.json
const packageJson = results.find((r) => r.name === 'package.json');
expect(packageJson).toBeDefined();
expect(packageJson!.type).toBe('json');
expect(packageJson!.path).toContain(repoRoot);
});
it('should find README files', async () => {
const results = await searchService.search({
keywords: 'README',
limit: 10,
onlyIn: repoRoot,
});
expect(results.length).toBeGreaterThan(0);
// Should contain markdown files
const mdFile = results.find((r) => r.type === 'md');
expect(mdFile).toBeDefined();
expect(mdFile!.name).toMatch(/README/i);
});
it('should find TypeScript files', async () => {
const results = await searchService.search({
keywords: 'macOS',
limit: 10,
onlyIn: repoRoot,
});
expect(results.length).toBeGreaterThan(0);
// Should find the macOS.ts implementation file
const macOSFile = results.find((r) => r.name.includes('macOS') && r.type === 'ts');
expect(macOSFile).toBeDefined();
expect(macOSFile!.contentType).toBe('code');
});
it('should find files in apps/desktop directory', async () => {
const desktopPath = path.join(repoRoot, 'apps/desktop');
const results = await searchService.search({
keywords: 'src',
limit: 20,
onlyIn: desktopPath,
});
// Spotlight indexing may not be complete for this directory
// so we make the test lenient
if (results.length > 0) {
// All results should be within apps/desktop
results.forEach((result) => {
expect(result.path).toContain('apps/desktop');
});
} else {
// eslint-disable-next-line no-console
console.warn(
'⚠️ No results found in apps/desktop - Spotlight indexing may not be complete',
);
}
// At minimum, verify the search completed without error
expect(Array.isArray(results)).toBe(true);
});
it('should find test files', async () => {
const results = await searchService.search({
keywords: 'test.ts',
limit: 10,
onlyIn: repoRoot,
});
expect(results.length).toBeGreaterThan(0);
// Should find test files
const testFile = results.find((r) => r.name.endsWith('.test.ts'));
expect(testFile).toBeDefined();
expect(testFile!.path).toContain('__tests__');
});
});
describe('search with filters', () => {
it('should respect limit parameter', async () => {
const limit = 3;
const results = await searchService.search({
keywords: 'src',
limit,
onlyIn: repoRoot,
});
expect(results.length).toBeLessThanOrEqual(limit);
});
it('should search in specific subdirectory only', async () => {
const srcPath = path.join(repoRoot, 'apps/desktop/src');
const results = await searchService.search({
keywords: 'index',
limit: 10,
onlyIn: srcPath,
});
// All results should be within the specified directory
results.forEach((result) => {
expect(result.path).toContain('apps/desktop/src');
});
});
it('should return empty array for non-existent keywords', async () => {
const results = await searchService.search({
keywords: 'xyzabc123unlikely-keyword-that-does-not-exist-12345',
limit: 5,
onlyIn: repoRoot,
});
expect(results).toEqual([]);
});
});
describe('file type detection', () => {
it('should correctly identify TypeScript files', async () => {
const results = await searchService.search({
keywords: 'LocalFileCtr',
limit: 5,
onlyIn: repoRoot,
});
const tsFile = results.find((r) => r.name === 'LocalFileCtr.ts');
if (tsFile) {
expect(tsFile.type).toBe('ts');
expect(tsFile.contentType).toBe('code');
expect(tsFile.isDirectory).toBe(false);
}
});
it('should correctly identify JSON files', async () => {
const results = await searchService.search({
keywords: 'tsconfig',
limit: 5,
onlyIn: repoRoot,
});
const jsonFile = results.find((r) => r.name.includes('tsconfig') && r.type === 'json');
if (jsonFile) {
expect(jsonFile.type).toBe('json');
expect(jsonFile.contentType).toBe('code');
expect(jsonFile.size).toBeGreaterThan(0);
}
});
it('should correctly identify directories', async () => {
const results = await searchService.search({
keywords: '__tests__',
limit: 10,
onlyIn: repoRoot,
});
const testDir = results.find((r) => r.name === '__tests__' && r.isDirectory);
if (testDir) {
expect(testDir.isDirectory).toBe(true);
expect(testDir.type).toBe('');
}
});
it('should correctly identify markdown files', async () => {
const results = await searchService.search({
keywords: 'CLAUDE.md',
limit: 5,
onlyIn: repoRoot,
});
const mdFile = results.find((r) => r.name === 'CLAUDE.md');
if (mdFile) {
expect(mdFile.type).toBe('md');
expect(mdFile.contentType).toBe('text');
}
});
});
describe('file metadata', () => {
it('should return valid file metadata', async () => {
const results = await searchService.search({
keywords: 'package.json',
limit: 1,
onlyIn: repoRoot,
});
expect(results.length).toBeGreaterThan(0);
const file = results[0];
// Verify all metadata fields are present
expect(file.path).toBeTruthy();
expect(file.name).toBeTruthy();
expect(typeof file.isDirectory).toBe('boolean');
expect(typeof file.size).toBe('number');
expect(file.size).toBeGreaterThanOrEqual(0);
expect(file.type).toBeDefined();
expect(file.contentType).toBeDefined();
expect(file.modifiedTime).toBeInstanceOf(Date);
expect(file.createdTime).toBeInstanceOf(Date);
expect(file.lastAccessTime).toBeInstanceOf(Date);
// Dates should be valid
expect(file.modifiedTime.getTime()).toBeGreaterThan(0);
expect(file.createdTime.getTime()).toBeGreaterThan(0);
});
it('should handle files with different extensions', async () => {
const testCases = [
{ keyword: '.ts', expectedType: 'ts', expectedContentType: 'code' },
{ keyword: '.json', expectedType: 'json', expectedContentType: 'code' },
{ keyword: '.txt', expectedType: 'txt', expectedContentType: 'text' },
];
for (const { keyword, expectedType, expectedContentType } of testCases) {
const results = await searchService.search({
keywords: keyword,
limit: 5,
onlyIn: repoRoot,
});
if (results.length > 0) {
const file = results.find((r) => r.type === expectedType);
if (file) {
expect(file.type).toBe(expectedType);
expect(file.contentType).toBe(expectedContentType);
}
}
}
});
});
describe('search accuracy after fix', () => {
it('should use fuzzy matching instead of exact phrase', async () => {
// Test the fix: keywords should do fuzzy matching, not exact phrase
// Before fix: "local file" would only match exact phrase "local file"
// After fix: "local file" should match "LocalFileCtr" (contains "local" and "file")
const results = await searchService.search({
keywords: 'LocalFile',
limit: 10,
onlyIn: repoRoot,
});
expect(results.length).toBeGreaterThan(0);
// Should find LocalFileCtr.ts or similar files
const found = results.some(
(r) => r.name.includes('LocalFile') || r.name.includes('localFile'),
);
expect(found).toBe(true);
});
it('should handle paths with spaces correctly', async () => {
// Test the fix: command args should be properly split
// This test verifies spawn receives correct arguments array
const pathWithSpaces = repoRoot; // May contain spaces in CI or certain setups
const results = await searchService.search({
keywords: 'test',
limit: 5,
onlyIn: pathWithSpaces,
});
// Should not throw error even if path contains spaces
expect(Array.isArray(results)).toBe(true);
});
it('should search case-insensitively', async () => {
// The "cd" flag in kMDItemFSName makes it case-insensitive
const lowerResults = await searchService.search({
keywords: 'readme',
limit: 5,
onlyIn: repoRoot,
});
const upperResults = await searchService.search({
keywords: 'README',
limit: 5,
onlyIn: repoRoot,
});
// Both searches should find similar files
expect(lowerResults.length).toBeGreaterThan(0);
expect(upperResults.length).toBeGreaterThan(0);
});
});
describe('error handling', () => {
it('should handle non-existent directory gracefully', async () => {
const nonExistentPath = path.join(repoRoot, 'this-directory-does-not-exist-12345');
const results = await searchService.search({
keywords: 'test',
limit: 5,
onlyIn: nonExistentPath,
});
// Should return empty array instead of throwing
expect(results).toEqual([]);
});
});
describe('updateSearchIndex', () => {
it.skip('should handle index update request', async () => {
// Index update requires elevated permissions, may fail in restricted environments
const result = await searchService.updateSearchIndex(repoRoot);
// Should return boolean (true if succeeded, false if failed)
expect(typeof result).toBe('boolean');
}, 15000); // Index update can take time
});
});
// Skip message for non-macOS platforms
if (process.platform !== 'darwin') {
// eslint-disable-next-line no-console
console.log('⏭️ Skipping macOS integration tests on', process.platform, '(only runs on darwin)');
}
@@ -23,12 +23,11 @@ export class MacOSSearchServiceImpl extends FileSearchImpl {
*/
async search(options: SearchOptions): Promise<FileResult[]> {
// Build the command first, regardless of execution method
const command = this.buildSearchCommand(options);
logger.debug(`Executing command: ${command}`);
const { cmd, args, commandString } = this.buildSearchCommand(options);
logger.debug(`Executing command: ${commandString}`);
// Use spawn for both live and non-live updates to handle large outputs
return new Promise((resolve, reject) => {
const [cmd, ...args] = command.split(' ');
const childProcess = spawn(cmd, args);
let results: string[] = []; // Store raw file paths
@@ -137,31 +136,39 @@ export class MacOSSearchServiceImpl extends FileSearchImpl {
/**
* Build mdfind command string
* @param options Search options
* @returns Complete command string
* @returns Command components (cmd, args array, and command string for logging)
*/
private buildSearchCommand(options: SearchOptions): string {
// Basic command
let command = 'mdfind';
// Add options
const mdFindOptions: string[] = [];
private buildSearchCommand(options: SearchOptions): {
args: string[];
cmd: string;
commandString: string;
} {
// Command and arguments array
const cmd = 'mdfind';
const args: string[] = [];
// macOS mdfind doesn't support -limit parameter, we'll limit results in post-processing
// Search in specific directory
if (options.onlyIn) {
mdFindOptions.push(`-onlyin "${options.onlyIn}"`);
args.push('-onlyin', options.onlyIn);
}
// Live update
if (options.liveUpdate) {
mdFindOptions.push('-live');
args.push('-live');
}
// Detailed metadata
if (options.detailed) {
mdFindOptions.push(
'-attr kMDItemDisplayName kMDItemContentType kMDItemKind kMDItemFSSize kMDItemFSCreationDate kMDItemFSContentChangeDate',
args.push(
'-attr',
'kMDItemDisplayName',
'kMDItemContentType',
'kMDItemKind',
'kMDItemFSSize',
'kMDItemFSCreationDate',
'kMDItemFSContentChangeDate',
);
}
@@ -171,9 +178,10 @@ export class MacOSSearchServiceImpl extends FileSearchImpl {
// Basic query
if (options.keywords) {
// If the query string doesn't use Spotlight query syntax (doesn't contain kMDItem properties),
// treat it as plain text search
// treat it as a flexible name search rather than exact phrase match
if (!options.keywords.includes('kMDItem')) {
queryExpression = `"${options.keywords.replaceAll('"', '\\"')}"`;
// Use kMDItemFSName for filename matching with wildcards for better flexibility
queryExpression = `kMDItemFSName == "*${options.keywords.replaceAll('"', '\\"')}*"cd`;
} else {
queryExpression = options.keywords;
}
@@ -244,15 +252,15 @@ export class MacOSSearchServiceImpl extends FileSearchImpl {
}
}
// Combine complete command
if (mdFindOptions.length > 0) {
command += ' ' + mdFindOptions.join(' ');
// Add query expression to args
if (queryExpression) {
args.push(queryExpression);
}
// Finally add query expression
command += ` ${queryExpression}`;
// Build command string for logging
const commandString = `${cmd} ${args.map((arg) => (arg.includes(' ') || arg.includes('*') ? `"${arg}"` : arg)).join(' ')}`;
return command;
return { args, cmd, commandString };
}
/**
@@ -10,14 +10,14 @@ import { ProxyUrlBuilder } from './urlBuilder';
const logger = createLogger('modules:networkProxy:dispatcher');
/**
* 代理管理器
* Proxy dispatcher manager
*/
export class ProxyDispatcherManager {
private static isChanging = false;
private static changeQueue: Array<() => Promise<void>> = [];
/**
* 应用代理设置(带并发控制)
* Apply proxy settings (with concurrency control)
*/
static async applyProxySettings(config: NetworkProxySettings): Promise<void> {
return new Promise((resolve, reject) => {
@@ -31,17 +31,17 @@ export class ProxyDispatcherManager {
};
if (this.isChanging) {
// 如果正在切换,加入队列
// If currently switching, add to queue
this.changeQueue.push(operation);
} else {
// 立即执行
// Execute immediately
operation();
}
});
}
/**
* 执行代理设置应用
* Execute proxy settings application
*/
private static async doApplyProxySettings(config: NetworkProxySettings): Promise<void> {
this.isChanging = true;
@@ -49,22 +49,22 @@ export class ProxyDispatcherManager {
try {
const currentDispatcher = getGlobalDispatcher();
// 禁用代理,恢复默认连接
// Disable proxy, restore default connection
if (!config.enableProxy) {
await this.safeDestroyDispatcher(currentDispatcher);
// 创建一个新的默认 Agent 来替代代理
// Create a new default Agent to replace the proxy
setGlobalDispatcher(new Agent());
logger.debug('Proxy disabled, reset to direct connection mode');
return;
}
// 构建代理 URL
// Build proxy URL
const proxyUrl = ProxyUrlBuilder.build(config);
// 创建代理 agent
// Create proxy agent
const agent = this.createProxyAgent(config.proxyType, proxyUrl);
// 切换代理前销毁旧 dispatcher
// Destroy old dispatcher before switching proxy
await this.safeDestroyDispatcher(currentDispatcher);
setGlobalDispatcher(agent);
@@ -77,7 +77,7 @@ export class ProxyDispatcherManager {
} finally {
this.isChanging = false;
// 处理队列中的下一个操作
// Process next operation in queue
if (this.changeQueue.length > 0) {
const nextOperation = this.changeQueue.shift();
if (nextOperation) {
@@ -88,12 +88,12 @@ export class ProxyDispatcherManager {
}
/**
* 创建代理 agent
* Create proxy agent
*/
static createProxyAgent(proxyType: string, proxyUrl: string) {
try {
if (proxyType === 'socks5') {
// 解析 SOCKS5 代理 URL
// Parse SOCKS5 proxy URL
const url = new URL(proxyUrl);
const socksProxies: SocksProxies = [
{
@@ -109,10 +109,10 @@ export class ProxyDispatcherManager {
},
];
// 使用 fetch-socks 处理 SOCKS5 代理
// Use fetch-socks to handle SOCKS5 proxy
return socksDispatcher(socksProxies);
} else {
// undici ProxyAgent 支持 http, https
// undici's ProxyAgent supports http, https
return new ProxyAgent({ uri: proxyUrl });
}
} catch (error) {
@@ -124,7 +124,7 @@ export class ProxyDispatcherManager {
}
/**
* 安全销毁 dispatcher
* Safely destroy dispatcher
*/
private static async safeDestroyDispatcher(dispatcher: any): Promise<void> {
try {
@@ -11,7 +11,7 @@ import { ProxyConfigValidator } from './validator';
const logger = createLogger('modules:networkProxy:tester');
/**
* 代理连接测试结果
* Proxy connection test result
*/
export interface ProxyTestResult {
message?: string;
@@ -20,14 +20,14 @@ export interface ProxyTestResult {
}
/**
* 代理连接测试器
* Proxy connection tester
*/
export class ProxyConnectionTester {
private static readonly DEFAULT_TIMEOUT = 10_000; // 10秒超时
private static readonly DEFAULT_TIMEOUT = 10_000; // 10 seconds timeout
private static readonly DEFAULT_TEST_URL = 'https://www.google.com';
/**
* 测试代理连接
* Test proxy connection
*/
static async testConnection(
url: string = this.DEFAULT_TEST_URL,
@@ -77,13 +77,13 @@ export class ProxyConnectionTester {
}
/**
* 测试指定代理配置的连接
* Test connection with specified proxy configuration
*/
static async testProxyConfig(
config: NetworkProxySettings,
testUrl: string = this.DEFAULT_TEST_URL,
): Promise<ProxyTestResult> {
// 验证配置
// Validate configuration
const validation = ProxyConfigValidator.validate(config);
if (!validation.isValid) {
return {
@@ -92,12 +92,12 @@ export class ProxyConnectionTester {
};
}
// 如果未启用代理,直接测试
// If proxy is not enabled, test directly
if (!config.enableProxy) {
return this.testConnection(testUrl);
}
// 创建临时代理 agent 进行测试
// Create temporary proxy agent for testing
try {
const proxyUrl = ProxyUrlBuilder.build(config);
logger.debug(`Testing proxy with URL: ${proxyUrl}`);
@@ -108,7 +108,7 @@ export class ProxyConnectionTester {
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), this.DEFAULT_TIMEOUT);
// 临时设置代理进行测试
// Temporarily set proxy for testing
const originalDispatcher = getGlobalDispatcher();
setGlobalDispatcher(agent);
@@ -138,9 +138,9 @@ export class ProxyConnectionTester {
clearTimeout(timeoutId);
throw fetchError;
} finally {
// 恢复原来的 dispatcher
// Restore original dispatcher
setGlobalDispatcher(originalDispatcher);
// 清理临时创建的代理 agent
// Clean up temporary proxy agent
if (agent && typeof agent.destroy === 'function') {
try {
await agent.destroy();
@@ -1,11 +1,11 @@
import { NetworkProxySettings } from '@lobechat/electron-client-ipc';
/**
* 代理 URL 构建器
* Proxy URL builder
*/
export const ProxyUrlBuilder = {
/**
* 构建代理 URL
* Build proxy URL
*/
build(config: NetworkProxySettings): string {
const { proxyType, proxyServer, proxyPort, proxyRequireAuth, proxyUsername, proxyPassword } =
@@ -13,7 +13,7 @@ export const ProxyUrlBuilder = {
let proxyUrl = `${proxyType}://${proxyServer}:${proxyPort}`;
// 添加认证信息
// Add authentication information
if (proxyRequireAuth && proxyUsername && proxyPassword) {
const encodedUsername = encodeURIComponent(proxyUsername);
const encodedPassword = encodeURIComponent(proxyPassword);
@@ -1,7 +1,7 @@
import { NetworkProxySettings } from '@lobechat/electron-client-ipc';
/**
* 代理配置验证结果
* Proxy configuration validation result
*/
export interface ProxyValidationResult {
errors: string[];
@@ -9,38 +9,38 @@ export interface ProxyValidationResult {
}
/**
* 代理配置验证器
* Proxy configuration validator
*/
export class ProxyConfigValidator {
private static readonly SUPPORTED_TYPES = ['http', 'https', 'socks5'] as const;
private static readonly DEFAULT_BYPASS = 'localhost,127.0.0.1,::1';
/**
* 验证代理配置
* Validate proxy configuration
*/
static validate(config: NetworkProxySettings): ProxyValidationResult {
const errors: string[] = [];
// 如果未启用代理,跳过验证
// If proxy is not enabled, skip validation
if (!config.enableProxy) {
return { errors: [], isValid: true };
}
// 验证代理类型
// Validate proxy type
if (!this.SUPPORTED_TYPES.includes(config.proxyType as any)) {
errors.push(
`Unsupported proxy type: ${config.proxyType}. Supported types: ${this.SUPPORTED_TYPES.join(', ')}`,
);
}
// 验证代理服务器
// Validate proxy server
if (!config.proxyServer?.trim()) {
errors.push('Proxy server is required when proxy is enabled');
} else if (!this.isValidHost(config.proxyServer)) {
errors.push('Invalid proxy server format');
}
// 验证代理端口
// Validate proxy port
if (!config.proxyPort?.trim()) {
errors.push('Proxy port is required when proxy is enabled');
} else {
@@ -50,7 +50,7 @@ export class ProxyConfigValidator {
}
}
// 验证认证信息
// Validate authentication information
if (config.proxyRequireAuth) {
if (!config.proxyUsername?.trim()) {
errors.push('Proxy username is required when authentication is enabled');
@@ -67,10 +67,10 @@ export class ProxyConfigValidator {
}
/**
* 验证主机名格式
* Validate host format
*/
private static isValidHost(host: string): boolean {
// 简单的主机名验证(IP 地址或域名)
// Simple host validation (IP address or domain name)
const ipRegex = /^(\d{1,3}\.){3}\d{1,3}$/;
const domainRegex =
/^[\dA-Za-z]([\dA-Za-z-]*[\dA-Za-z])?(\.[\dA-Za-z]([\dA-Za-z-]*[\dA-Za-z])?)*$/;
@@ -0,0 +1,603 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import type { App } from '@/core/App';
import FileService, { FileNotFoundError } from '../fileSrv';
// Mock electron
vi.mock('electron', () => ({
app: {
getAppPath: vi.fn(() => '/mock/app/path'),
getPath: vi.fn(() => '/mock/user/data'),
},
}));
// Mock constants that depend on electron
vi.mock('@/const/dir', () => ({
FILE_STORAGE_DIR: 'file-storage',
LOCAL_STORAGE_URL_PREFIX: '/lobe-desktop-file',
}));
// Mock logger
vi.mock('@/utils/logger', () => ({
createLogger: () => ({
debug: vi.fn(),
info: vi.fn(),
warn: vi.fn(),
error: vi.fn(),
}),
}));
// Mock file-system utilities
vi.mock('@/utils/file-system', () => ({
makeSureDirExist: vi.fn(),
}));
// Mock node:fs/promises
vi.mock('node:fs/promises', () => ({
writeFile: vi.fn(),
readFile: vi.fn(),
access: vi.fn(),
}));
// Mock node:fs
vi.mock('node:fs', () => ({
default: {
constants: { F_OK: 0 },
promises: { access: vi.fn() },
readFile: vi.fn(),
unlink: vi.fn(),
},
constants: { F_OK: 0 },
promises: { access: vi.fn() },
readFile: vi.fn(),
unlink: vi.fn(),
}));
// Mock node:util promisify
vi.mock('node:util', () => ({
promisify: vi.fn((fn: any) => {
return vi.fn(async (...args: any[]) => {
return new Promise((resolve, reject) => {
fn(...args, (err: any, data: any) => {
if (err) reject(err);
else resolve(data);
});
});
});
}),
}));
describe('FileService', () => {
let fileService: FileService;
let mockApp: App;
let mockMakeSureDirExist: any;
let mockWriteFile: any;
let mockReadFile: any;
let mockAccess: any;
let mockFsReadFile: any;
let mockFsUnlink: any;
beforeEach(async () => {
vi.clearAllMocks();
// Setup mock app
mockApp = {
appStoragePath: '/mock/app/storage',
staticFileServerManager: {
getFileServerDomain: vi.fn().mockReturnValue('http://localhost:3000'),
},
} as unknown as App;
// Import mocks
mockMakeSureDirExist = (await import('@/utils/file-system')).makeSureDirExist;
const fsPromises = await import('node:fs/promises');
mockWriteFile = fsPromises.writeFile;
mockReadFile = fsPromises.readFile;
mockAccess = fsPromises.access;
const fs = await import('node:fs');
mockFsReadFile = fs.readFile;
mockFsUnlink = fs.unlink;
fileService = new FileService(mockApp);
});
describe('uploadFile', () => {
it('should upload file with ArrayBuffer content successfully', async () => {
const content = new ArrayBuffer(10);
const params = {
content,
filename: 'test.png',
hash: 'abc123',
path: 'user_uploads/images/test.png',
type: 'image/png',
};
mockWriteFile.mockResolvedValue(undefined);
const result = await fileService.uploadFile(params);
expect(result.success).toBe(true);
expect(result.metadata.filename).toBe('test.png');
expect(result.metadata.dirname).toBe('user_uploads/images');
expect(result.metadata.path).toBe('desktop://user_uploads/images/test.png');
expect(mockMakeSureDirExist).toHaveBeenCalled();
expect(mockWriteFile).toHaveBeenCalledTimes(2); // file + metadata
});
it('should upload file with Base64 string content successfully', async () => {
const base64Content = Buffer.from('test content').toString('base64');
const params = {
content: base64Content,
filename: 'test.txt',
hash: 'def456',
path: 'documents/test.txt',
type: 'text/plain',
};
mockWriteFile.mockResolvedValue(undefined);
const result = await fileService.uploadFile(params);
expect(result.success).toBe(true);
expect(result.metadata.filename).toBe('test.txt');
expect(result.metadata.path).toBe('desktop://documents/test.txt');
});
it('should create metadata file with correct structure', async () => {
const content = new ArrayBuffer(100);
const params = {
content,
filename: 'image.jpg',
hash: 'xyz789',
path: 'photos/image.jpg',
type: 'image/jpeg',
};
let metadataContent: string = '';
mockWriteFile.mockImplementation(async (path: any, data: any) => {
if (path.toString().endsWith('.meta')) {
metadataContent = data;
}
});
await fileService.uploadFile(params);
expect(metadataContent).toBeTruthy();
const metadata = JSON.parse(metadataContent);
expect(metadata.filename).toBe('image.jpg');
expect(metadata.hash).toBe('xyz789');
expect(metadata.type).toBe('image/jpeg');
expect(metadata.size).toBe(100);
expect(metadata.createdAt).toBeDefined();
});
it('should handle upload failure and throw error', async () => {
const params = {
content: new ArrayBuffer(10),
filename: 'test.png',
hash: 'abc123',
path: 'uploads/test.png',
type: 'image/png',
};
mockWriteFile.mockRejectedValue(new Error('Disk full'));
await expect(fileService.uploadFile(params)).rejects.toThrow('File upload failed: Disk full');
});
it('should handle file path with no directory', async () => {
const params = {
content: new ArrayBuffer(10),
filename: 'test.txt',
hash: 'abc',
path: 'test.txt',
type: 'text/plain',
};
mockWriteFile.mockResolvedValue(undefined);
const result = await fileService.uploadFile(params);
expect(result.success).toBe(true);
expect(result.metadata.dirname).toBe('');
expect(result.metadata.filename).toBe('test.txt');
});
});
describe('getFile', () => {
it('should get file from new path format successfully', async () => {
const mockContent = Buffer.from('test content');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
// Mock metadata read failure, will infer from extension
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile('desktop://documents/test.txt');
// Since metadata fails, it will use default or infer from extension
expect(result.mimeType).toBeDefined();
expect(result.content).toBeDefined();
});
it('should get file from legacy path format (timestamp directory)', async () => {
const mockContent = Buffer.from('legacy content');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
// Mock metadata read to succeed this time
mockReadFile.mockResolvedValue(JSON.stringify({ type: 'image/png' }));
const result = await fileService.getFile('desktop://1234567890/abc123.png');
// Check that result is returned
expect(result.mimeType).toBeDefined();
expect(result.content).toBeDefined();
});
it('should fallback from legacy to new path on failure', async () => {
const mockContent = Buffer.from('fallback content');
let callCount = 0;
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callCount++;
if (callCount === 1) {
// First read (legacy) fails
const error: any = new Error('ENOENT');
error.code = 'ENOENT';
callback(error, null);
} else {
// Second read (fallback) succeeds
callback(null, mockContent);
}
});
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile('desktop://1234567890/fallback.jpg');
// Check that fallback worked and result is returned
expect(result.content).toBeDefined();
expect(result.mimeType).toBeDefined();
});
it('should infer MIME type from file extension when metadata missing', async () => {
const mockContent = Buffer.from('image data');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
mockReadFile.mockRejectedValue(new Error('Metadata not found'));
const result = await fileService.getFile('desktop://images/photo.png');
expect(result.mimeType).toBe('image/png');
});
it('should infer correct MIME types for various image formats', async () => {
const mockContent = Buffer.from('image');
const testCases = [
{ path: 'desktop://test.jpg', expected: 'image/jpeg' },
{ path: 'desktop://test.jpeg', expected: 'image/jpeg' },
{ path: 'desktop://test.gif', expected: 'image/gif' },
{ path: 'desktop://test.webp', expected: 'image/webp' },
{ path: 'desktop://test.svg', expected: 'image/svg+xml' },
{ path: 'desktop://test.pdf', expected: 'application/pdf' },
];
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
for (const testCase of testCases) {
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile(testCase.path);
expect(result.mimeType).toBe(testCase.expected);
}
});
it('should use default MIME type for unknown extensions', async () => {
const mockContent = Buffer.from('unknown');
mockFsReadFile.mockImplementation((path: any, callback: any) => {
callback(null, mockContent);
});
mockReadFile.mockRejectedValue(new Error('No metadata'));
const result = await fileService.getFile('desktop://file.unknown');
expect(result.mimeType).toBe('application/octet-stream');
});
it('should throw FileNotFoundError when file does not exist', async () => {
mockFsReadFile.mockImplementation((path: any, callback: any) => {
const error: any = new Error('ENOENT: no such file');
error.code = 'ENOENT';
error.message = 'ENOENT: no such file';
callback(error, null);
});
await expect(fileService.getFile('desktop://missing/file.txt')).rejects.toThrow(
FileNotFoundError,
);
});
it('should throw error for invalid path without desktop:// prefix', async () => {
await expect(fileService.getFile('/invalid/path.txt')).rejects.toThrow(
'Invalid desktop file path',
);
});
});
describe('deleteFile', () => {
it('should delete file from new path format successfully', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(null);
});
const result = await fileService.deleteFile('desktop://documents/test.txt');
expect(result.success).toBe(true);
});
it('should delete file from legacy path format', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(null);
});
const result = await fileService.deleteFile('desktop://1234567890/file.png');
expect(result.success).toBe(true);
});
it('should fallback from legacy to new path on deletion failure', async () => {
let callCount = 0;
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callCount++;
if (callCount === 1) {
// First attempt (legacy file) fails
callback(new Error('ENOENT'));
} else {
// All subsequent attempts succeed
callback(null);
}
});
const result = await fileService.deleteFile('desktop://1234567890/fallback.txt');
expect(result.success).toBe(true);
});
it('should handle metadata deletion failure gracefully', async () => {
let callCount = 0;
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callCount++;
if (callCount === 1) {
// File deletion succeeds
callback(null);
} else {
// Metadata deletion fails (but doesn't throw)
callback(new Error('Metadata not found'));
}
});
const result = await fileService.deleteFile('desktop://files/test.txt');
expect(result.success).toBe(true);
});
it('should throw error when file deletion fails', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(new Error('Permission denied'));
});
await expect(fileService.deleteFile('desktop://protected/file.txt')).rejects.toThrow(
'File deletion failed: Permission denied',
);
});
it('should throw error for invalid path without desktop:// prefix', async () => {
await expect(fileService.deleteFile('/invalid/path.txt')).rejects.toThrow(
'Invalid desktop file path',
);
});
});
describe('deleteFiles', () => {
it('should delete multiple files successfully', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callback(null);
});
const paths = [
'desktop://files/file1.txt',
'desktop://files/file2.txt',
'desktop://files/file3.txt',
];
const result = await fileService.deleteFiles(paths);
expect(result.success).toBe(true);
expect(result.errors).toBeUndefined();
});
it('should handle partial failures in batch deletion', async () => {
let callCount = 0;
mockFsUnlink.mockImplementation((path: any, callback: any) => {
callCount++;
// Fail on a specific file
if (path.includes('file2.txt') && !path.includes('.meta')) {
callback(new Error('Permission denied'));
} else {
callback(null);
}
});
const paths = [
'desktop://files/file1.txt',
'desktop://files/file2.txt',
'desktop://files/file3.txt',
];
const result = await fileService.deleteFiles(paths);
expect(result.success).toBe(false);
expect(result.errors).toBeDefined();
expect(result.errors?.length).toBeGreaterThan(0);
});
it('should return errors array with failed file paths', async () => {
mockFsUnlink.mockImplementation((path: any, callback: any) => {
if (path.includes('file2') && !path.includes('.meta')) {
callback(new Error('Access denied'));
} else {
callback(null);
}
});
const paths = ['desktop://files/file1.txt', 'desktop://files/file2.txt'];
const result = await fileService.deleteFiles(paths);
expect(result.success).toBe(false);
expect(result.errors).toHaveLength(1);
expect(result.errors?.[0].path).toBe('desktop://files/file2.txt');
expect(result.errors?.[0].message).toContain('Access denied');
});
it('should handle empty paths array', async () => {
const result = await fileService.deleteFiles([]);
expect(result.success).toBe(true);
expect(result.errors).toBeUndefined();
});
});
describe('getFilePath', () => {
it('should return correct path for new format', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://documents/test.txt');
expect(result).toBe('/mock/app/storage/file-storage/documents/test.txt');
});
it('should return legacy path when file exists in uploads directory', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://1234567890/legacy.png');
expect(result).toBe('/mock/app/storage/file-storage/uploads/1234567890/legacy.png');
});
it('should fallback to new path when legacy path does not exist', async () => {
mockAccess
.mockRejectedValueOnce(new Error('Not found')) // legacy fails
.mockResolvedValueOnce(undefined); // fallback succeeds
const result = await fileService.getFilePath('desktop://1234567890/migrated.png');
// When legacy path doesn't exist and fallback exists, it returns the fallback path
// But since isLegacyPath returns true for timestamps, and the fallback succeeds,
// it should update to the fallback path
expect(result).toContain('1234567890/migrated.png');
});
it('should return legacy path when both paths do not exist', async () => {
mockAccess
.mockRejectedValueOnce(new Error('Not found'))
.mockRejectedValueOnce(new Error('Not found'));
const result = await fileService.getFilePath('desktop://1234567890/missing.png');
expect(result).toBe('/mock/app/storage/file-storage/uploads/1234567890/missing.png');
});
it('should throw error for invalid path', async () => {
await expect(fileService.getFilePath('/invalid/path')).rejects.toThrow(
'Invalid desktop file path',
);
});
});
describe('getFileHTTPURL', () => {
it('should generate correct HTTP URL for new format', async () => {
const result = await fileService.getFileHTTPURL('desktop://documents/photo.jpg');
expect(result).toBe('http://localhost:3000/lobe-desktop-file/documents/photo.jpg');
});
it('should generate correct HTTP URL for legacy format', async () => {
const result = await fileService.getFileHTTPURL('desktop://1234567890/image.png');
expect(result).toBe('http://localhost:3000/lobe-desktop-file/1234567890/image.png');
});
it('should throw error for invalid path', async () => {
await expect(fileService.getFileHTTPURL('/invalid/path')).rejects.toThrow(
'Invalid desktop file path',
);
});
it('should handle paths with special characters', async () => {
const result = await fileService.getFileHTTPURL('desktop://user/my%20file.txt');
expect(result).toBe('http://localhost:3000/lobe-desktop-file/user/my%20file.txt');
});
});
describe('isLegacyPath (via behavior testing)', () => {
it('should treat timestamp-based paths as legacy', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://1234567890/file.txt');
// Legacy paths go to uploads directory
expect(result).toContain('uploads/1234567890/file.txt');
});
it('should treat custom paths as new format', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://custom/path/file.txt');
expect(result).toContain('file-storage/custom/path/file.txt');
expect(result).not.toContain('uploads');
});
it('should handle single-level paths correctly', async () => {
mockAccess.mockResolvedValue(undefined);
const result = await fileService.getFilePath('desktop://file.txt');
expect(result).toContain('file-storage/file.txt');
});
});
describe('UPLOADS_DIR getter', () => {
it('should return correct uploads directory path', () => {
expect(fileService.UPLOADS_DIR).toBe('/mock/app/storage/file-storage/uploads');
});
});
describe('FileNotFoundError', () => {
it('should create error with correct properties', () => {
const error = new FileNotFoundError('File not found', 'desktop://missing.txt');
expect(error.name).toBe('FileNotFoundError');
expect(error.message).toBe('File not found');
expect(error.path).toBe('desktop://missing.txt');
expect(error instanceof Error).toBe(true);
});
});
});
+2 -2
View File
@@ -4,9 +4,9 @@ import { setupRouteInterceptors } from './routeInterceptor';
const setupPreload = () => {
setupElectronApi();
// 设置路由拦截逻辑
// Setup route interception logic
window.addEventListener('DOMContentLoaded', () => {
// 设置客户端路由拦截器
// Setup client-side route interceptor
setupRouteInterceptors();
});
};
+1 -1
View File
@@ -2,7 +2,7 @@ import { ClientDispatchEventKey, DispatchInvoke } from '@lobechat/electron-clien
import { ipcRenderer } from 'electron';
/**
* client 端请求 electron main 端方法
* Client-side method to invoke electron main process
*/
export const invoke: DispatchInvoke = async <T extends ClientDispatchEventKey>(
event: T,
+41 -41
View File
@@ -9,7 +9,7 @@ const interceptRoute = async (
) => {
console.log(`[preload] Intercepted ${source} and prevented default behavior:`, path);
// 使用electron-client-ipcdispatch方法
// Use electron-client-ipc's dispatch method
try {
await invoke('interceptRoute', { path, source, url });
} catch (e) {
@@ -17,15 +17,15 @@ const interceptRoute = async (
}
};
/**
* 路由拦截器 - 负责捕获和拦截客户端路由导航
* Route interceptor - Responsible for capturing and intercepting client-side route navigation
*/
export const setupRouteInterceptors = function () {
console.log('[preload] Setting up route interceptors');
// 存储被阻止的路径,避免pushState重复触发
// Store prevented paths to avoid pushState duplicate triggers
const preventedPaths = new Set<string>();
// 重写 window.open 方法来拦截 JavaScript 调用
// Override window.open method to intercept JavaScript calls
const originalWindowOpen = window.open;
window.open = function (url?: string | URL, target?: string, features?: string) {
if (url) {
@@ -33,15 +33,15 @@ export const setupRouteInterceptors = function () {
const urlString = typeof url === 'string' ? url : url.toString();
const urlObj = new URL(urlString, window.location.href);
// 检查是否为外部链接
// Check if it's an external link
if (urlObj.origin !== window.location.origin) {
console.log(`[preload] Intercepted window.open for external URL:`, urlString);
// 调用主进程处理外部链接
// Call main process to handle external link
invoke('openExternalLink', urlString);
return null; // 返回 null 表示没有打开新窗口
return null; // Return null to indicate no window was opened
}
} catch (error) {
// 处理无效 URL 或特殊协议
// Handle invalid URL or special protocol
console.error(`[preload] Intercepted window.open for special protocol:`, url);
console.error(error);
invoke('openExternalLink', typeof url === 'string' ? url : url.toString());
@@ -49,11 +49,11 @@ export const setupRouteInterceptors = function () {
}
}
// 对于内部链接,调用原始的 window.open
// For internal links, call original window.open
return originalWindowOpen.call(window, url, target, features);
};
// 拦截所有a标签的点击事件 - 针对Next.jsLink组件
// Intercept all a tag click events - For Next.js Link component
document.addEventListener(
'click',
async (e) => {
@@ -62,30 +62,30 @@ export const setupRouteInterceptors = function () {
try {
const url = new URL(link.href);
// 检查是否为外部链接
// Check if it's an external link
if (url.origin !== window.location.origin) {
console.log(`[preload] Intercepted external link click:`, url.href);
// 阻止默认的链接跳转行为
// Prevent default link navigation behavior
e.preventDefault();
e.stopPropagation();
// 调用主进程处理外部链接
// Call main process to handle external link
await invoke('openExternalLink', url.href);
return false; // 明确阻止后续处理
return false; // Explicitly prevent subsequent processing
}
// 如果不是外部链接,则继续处理内部路由拦截逻辑
// 使用共享配置检查是否需要拦截
// If not external link, continue with internal route interception logic
// Use shared config to check if interception is needed
const matchedRoute = findMatchingRoute(url.pathname);
// 如果是需要拦截的路径
// If it's a path that needs interception
if (matchedRoute) {
const currentPath = window.location.pathname;
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
// 如果已经在目标页面下,则不拦截,让默认导航继续
// If already in target page, don't intercept, let default navigation continue
if (isAlreadyInTargetPage) return;
// 立即阻止默认行为,避免Next.js接管路由
// Immediately prevent default behavior to avoid Next.js taking over routing
e.preventDefault();
e.stopPropagation();
@@ -94,15 +94,15 @@ export const setupRouteInterceptors = function () {
return false;
}
} catch (err) {
// 处理可能的 URL 解析错误或其他问题
// 例如 mailto:, tel: 等协议会导致 new URL() 抛出错误
// Handle possible URL parsing errors or other issues
// For example mailto:, tel: protocols will cause new URL() to throw error
if (err instanceof TypeError && err.message.includes('Invalid URL')) {
console.log(
'[preload] Non-HTTP link clicked, allowing default browser behavior:',
link.href,
);
// 对于非 HTTP/HTTPS 链接,允许浏览器默认处理
// 不需要 e.preventDefault() invoke
// For non-HTTP/HTTPS links, allow browser default handling
// No need for e.preventDefault() or invoke
} else {
console.error('[preload] Link interception error:', err);
}
@@ -112,28 +112,28 @@ export const setupRouteInterceptors = function () {
true,
);
// 拦截 history API (用于捕获Next.jsuseRouter().push/replace)
// Intercept history API (for capturing Next.js useRouter().push/replace etc.)
const originalPushState = history.pushState;
const originalReplaceState = history.replaceState;
// 重写pushState
// Override pushState
history.pushState = function () {
const url = arguments[2];
if (typeof url === 'string') {
try {
// 只处理相对路径或当前域的URL
// Only handle relative paths or current domain URLs
const parsedUrl = new URL(url, window.location.origin);
// 使用共享配置检查是否需要拦截
// Use shared config to check if interception is needed
const matchedRoute = findMatchingRoute(parsedUrl.pathname);
// 检查是否需要拦截这个导航
// Check if this navigation needs interception
if (matchedRoute) {
// 检查当前页面是否已经在目标路径下,如果是则不拦截
// Check if current page is already under target path, if so don't intercept
const currentPath = window.location.pathname;
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
// 如果已经在目标页面下,则不拦截,让默认导航继续
// If already in target page, don't intercept, let default navigation continue
if (isAlreadyInTargetPage) {
console.log(
`[preload] Skip pushState interception for ${parsedUrl.pathname} because already in target page ${matchedRoute.pathPrefix}`,
@@ -141,13 +141,13 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalPushState, this, arguments);
}
// 将此路径添加到已阻止集合中
// Add this path to prevented set
preventedPaths.add(parsedUrl.pathname);
interceptRoute(parsedUrl.pathname, 'push-state', parsedUrl.href);
// 不执行原始的pushState操作,阻止导航发生
// 但返回undefined以避免错误
// Don't execute original pushState operation, prevent navigation
// But return undefined to avoid errors
return;
}
} catch (err) {
@@ -157,23 +157,23 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalPushState, this, arguments);
};
// 重写replaceState
// Override replaceState
history.replaceState = function () {
const url = arguments[2];
if (typeof url === 'string') {
try {
const parsedUrl = new URL(url, window.location.origin);
// 使用共享配置检查是否需要拦截
// Use shared config to check if interception is needed
const matchedRoute = findMatchingRoute(parsedUrl.pathname);
// 检查是否需要拦截这个导航
// Check if this navigation needs interception
if (matchedRoute) {
// 检查当前页面是否已经在目标路径下,如果是则不拦截
// Check if current page is already under target path, if so don't intercept
const currentPath = window.location.pathname;
const isAlreadyInTargetPage = currentPath.startsWith(matchedRoute.pathPrefix);
// 如果已经在目标页面下,则不拦截,让默认导航继续
// If already in target page, don't intercept, let default navigation continue
if (isAlreadyInTargetPage) {
console.log(
`[preload] Skip replaceState interception for ${parsedUrl.pathname} because already in target page ${matchedRoute.pathPrefix}`,
@@ -181,12 +181,12 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalReplaceState, this, arguments);
}
// 添加到已阻止集合
// Add to prevented set
preventedPaths.add(parsedUrl.pathname);
interceptRoute(parsedUrl.pathname, 'replace-state', parsedUrl.href);
// 阻止导航
// Prevent navigation
return;
}
} catch (err) {
@@ -196,7 +196,7 @@ export const setupRouteInterceptors = function () {
return Reflect.apply(originalReplaceState, this, arguments);
};
// 监听并拦截路由错误 - 有时Next.js会在路由错误时尝试恢复导航
// Listen and intercept routing errors - Sometimes Next.js tries to recover navigation on routing errors
window.addEventListener(
'error',
function (e) {
+582
View File
@@ -1,4 +1,586 @@
[
{
"children": {
"fixes": ["Implement uniform callback URL for SSO providers."]
},
"date": "2025-11-28",
"version": "2.0.0-next.131"
},
{
"children": {
"fixes": ["Add handling for content_part and reasoning_part events in fetchSSE."]
},
"date": "2025-11-28",
"version": "2.0.0-next.130"
},
{
"children": {
"fixes": ["Filter out file with sourceType = file."]
},
"date": "2025-11-28",
"version": "2.0.0-next.129"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-28",
"version": "2.0.0-next.128"
},
{
"children": {
"fixes": ["Better-auth fallback next-auth providers env."]
},
"date": "2025-11-27",
"version": "2.0.0-next.127"
},
{
"children": {
"fixes": ["Align docker auth defaults and better-auth docs."]
},
"date": "2025-11-27",
"version": "2.0.0-next.126"
},
{
"children": {
"features": ["Support better-auth."]
},
"date": "2025-11-27",
"version": "2.0.0-next.125"
},
{
"children": {
"fixes": [
"Fixed the agent settings plugins pages error problem, improve topic item interaction and editing behavior."
]
},
"date": "2025-11-27",
"version": "2.0.0-next.124"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-27",
"version": "2.0.0-next.123"
},
{
"children": {
"fixes": ["Slove the publish to market the agent config error."]
},
"date": "2025-11-26",
"version": "2.0.0-next.122"
},
{
"children": {
"improvements": ["Add image aspect ratio and resolution settings for Nano Banana Pro."]
},
"date": "2025-11-26",
"version": "2.0.0-next.121"
},
{
"children": {
"fixes": ["Try to fix “TypeError: Response body object should not be disturbed or locked”."]
},
"date": "2025-11-26",
"version": "2.0.0-next.120"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-26",
"version": "2.0.0-next.119"
},
{
"children": {
"fixes": ["Showing compatibility with both new and old versions of Plugins."]
},
"date": "2025-11-26",
"version": "2.0.0-next.118"
},
{
"children": {
"features": ["Bedrock claude model thinking support."]
},
"date": "2025-11-25",
"version": "2.0.0-next.117"
},
{
"children": {
"features": ["Support nano banana pro."]
},
"date": "2025-11-25",
"version": "2.0.0-next.116"
},
{
"children": {
"features": ["Add Claude Opus 4.5 model."]
},
"date": "2025-11-25",
"version": "2.0.0-next.115"
},
{
"children": {
"fixes": ["Fixed the topic link dropdown error."]
},
"date": "2025-11-25",
"version": "2.0.0-next.114"
},
{
"children": {
"fixes": ["Fixed when desktop userId was change manytimes the aimodel not right."]
},
"date": "2025-11-25",
"version": "2.0.0-next.113"
},
{
"children": {
"improvements": ["Add Kimi K2 Thinking to Qwen Provider."]
},
"date": "2025-11-24",
"version": "2.0.0-next.112"
},
{
"children": {
"fixes": [
"Fix db migration snapshot not align with db schema, Separate agent file injection from knowledge base RAG search."
]
},
"date": "2025-11-24",
"version": "2.0.0-next.111"
},
{
"children": {
"improvements": [
"Add hyperlink to each topic & pinned agent, support ContextMenu on ChatItem."
]
},
"date": "2025-11-24",
"version": "2.0.0-next.110"
},
{
"children": {
"fixes": ["Fixed the knowledge files cant open error."],
"improvements": ["Update i18n."]
},
"date": "2025-11-24",
"version": "2.0.0-next.109"
},
{
"children": {
"fixes": ["Fixed the pinned session not work."]
},
"date": "2025-11-24",
"version": "2.0.0-next.108"
},
{
"children": {
"improvements": ["Optimize nana banana pro error message."]
},
"date": "2025-11-23",
"version": "2.0.0-next.107"
},
{
"children": {
"features": ["Add nano-banana-pro model support and optimization."]
},
"date": "2025-11-23",
"version": "2.0.0-next.106"
},
{
"children": {},
"date": "2025-11-23",
"version": "2.0.0-next.105"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-22",
"version": "2.0.0-next.104"
},
{
"children": {
"fixes": ["Hide ai image config item in settings category."]
},
"date": "2025-11-22",
"version": "2.0.0-next.103"
},
{
"children": {
"features": ["Add new provider ZenMux & Gemini 3 Pro Image Preview."]
},
"date": "2025-11-22",
"version": "2.0.0-next.102"
},
{
"children": {
"features": ["Support bedrok prompt cache and usage compute."]
},
"date": "2025-11-22",
"version": "2.0.0-next.101"
},
{
"children": {
"fixes": ["Gemini 3 Pro does not display thought summaries."]
},
"date": "2025-11-21",
"version": "2.0.0-next.100"
},
{
"children": {
"features": ["Refactor to use kb search tool."]
},
"date": "2025-11-21",
"version": "2.0.0-next.99"
},
{
"children": {
"fixes": ["Fixed changelog pages and open again."],
"improvements": ["Fix some translations."]
},
"date": "2025-11-21",
"version": "2.0.0-next.98"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-21",
"version": "2.0.0-next.97"
},
{
"children": {
"features": ["Support Command Menu (CMD + J)."]
},
"date": "2025-11-20",
"version": "2.0.0-next.96"
},
{
"children": {
"features": ["Add Security Blacklist for agent runtime."]
},
"date": "2025-11-20",
"version": "2.0.0-next.95"
},
{
"children": {
"fixes": ["Provider settings button unable to redirect."]
},
"date": "2025-11-20",
"version": "2.0.0-next.94"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-20",
"version": "2.0.0-next.93"
},
{
"children": {
"improvements": ["Remove debug console logs and add loading state."]
},
"date": "2025-11-19",
"version": "2.0.0-next.92"
},
{
"children": {
"fixes": ["Fixed the hydrated false problem."]
},
"date": "2025-11-19",
"version": "2.0.0-next.91"
},
{
"children": {
"improvements": ["Extract StatusIndicator component and improve tools display."]
},
"date": "2025-11-19",
"version": "2.0.0-next.90"
},
{
"children": {
"features": ["Support gemini 3.0 tools calling."]
},
"date": "2025-11-19",
"version": "2.0.0-next.89"
},
{
"children": {
"improvements": ["Fully support Gemini 3.0 model."]
},
"date": "2025-11-19",
"version": "2.0.0-next.88"
},
{
"children": {
"improvements": ["Refactor chat selectors."]
},
"date": "2025-11-19",
"version": "2.0.0-next.87"
},
{
"children": {
"features": ["Support user abort in the agent runtime."]
},
"date": "2025-11-19",
"version": "2.0.0-next.86"
},
{
"children": {
"fixes": ["Slove discover pagination router."]
},
"date": "2025-11-19",
"version": "2.0.0-next.85"
},
{
"children": {
"improvements": ["Add Gemini 3.0 Pro Preview to Google Provider."]
},
"date": "2025-11-19",
"version": "2.0.0-next.84"
},
{
"children": {
"features": ["New API support switch Responses API mode."],
"improvements": ["Update i18n."]
},
"date": "2025-11-19",
"version": "2.0.0-next.83"
},
{
"children": {
"fixes": ["Fix noisy error notification."]
},
"date": "2025-11-18",
"version": "2.0.0-next.82"
},
{
"children": {
"fixes": ["Slove when logout always show loading."]
},
"date": "2025-11-18",
"version": "2.0.0-next.81"
},
{
"children": {},
"date": "2025-11-18",
"version": "2.0.0-next.80"
},
{
"children": {
"fixes": ["Fixed the discover page categray sider link error."]
},
"date": "2025-11-18",
"version": "2.0.0-next.79"
},
{
"children": {},
"date": "2025-11-18",
"version": "2.0.0-next.78"
},
{
"children": {
"improvements": ["Delete /settings/newapi pages in nextjs build."]
},
"date": "2025-11-18",
"version": "2.0.0-next.77"
},
{
"children": {
"features": ["Support Interleaved thinking in MiniMax."]
},
"date": "2025-11-18",
"version": "2.0.0-next.76"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-18",
"version": "2.0.0-next.75"
},
{
"children": {
"features": ["Edit local file render & intervention."]
},
"date": "2025-11-17",
"version": "2.0.0-next.74"
},
{
"children": {
"features": ["Support parallel topic agent runtime."]
},
"date": "2025-11-17",
"version": "2.0.0-next.73"
},
{
"children": {
"improvements": ["Add model information for the Qiniu provider."]
},
"date": "2025-11-17",
"version": "2.0.0-next.72"
},
{
"children": {
"fixes": ["Fix desktop user panel."]
},
"date": "2025-11-17",
"version": "2.0.0-next.71"
},
{
"children": {},
"date": "2025-11-17",
"version": "2.0.0-next.70"
},
{
"children": {
"improvements": ["Remove language_model_settings and remove isDeprecatedEdition."]
},
"date": "2025-11-17",
"version": "2.0.0-next.69"
},
{
"children": {
"fixes": ["The tool to fail execution on ollama when a message contains b…."]
},
"date": "2025-11-16",
"version": "2.0.0-next.68"
},
{
"children": {
"improvements": ["Refactor to virtua."]
},
"date": "2025-11-16",
"version": "2.0.0-next.67"
},
{
"children": {
"features": ["Support to collapse message."]
},
"date": "2025-11-16",
"version": "2.0.0-next.66"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-16",
"version": "2.0.0-next.65"
},
{
"children": {
"improvements": ["Refactor package types."]
},
"date": "2025-11-15",
"version": "2.0.0-next.64"
},
{
"children": {
"features": ["Show orphaned tool message and support delete tool message."]
},
"date": "2025-11-15",
"version": "2.0.0-next.63"
},
{
"children": {},
"date": "2025-11-15",
"version": "2.0.0-next.62"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-15",
"version": "2.0.0-next.61"
},
{
"children": {
"fixes": ["Reduce threshold."]
},
"date": "2025-11-14",
"version": "2.0.0-next.60"
},
{
"children": {
"improvements": ["Update i18n."]
},
"date": "2025-11-14",
"version": "2.0.0-next.59"
},
{
"children": {
"features": ["Support DeepSeek Interleaved thinking."]
},
"date": "2025-11-14",
"version": "2.0.0-next.58"
},
{
"children": {
"improvements": ["Revert background style."]
},
"date": "2025-11-14",
"version": "2.0.0-next.57"
},
{
"children": {
"features": ["Add folder creation UI and clean up debug code."]
},
"date": "2025-11-14",
"version": "2.0.0-next.56"
},
{
"children": {
"features": ["Create Pages in Knowledge Base."]
},
"date": "2025-11-14",
"version": "2.0.0-next.55"
},
{
"children": {
"improvements": ["Refactor and support move locale file intervention."]
},
"date": "2025-11-14",
"version": "2.0.0-next.54"
},
{
"children": {
"features": ["Add GPT-5.1 models."],
"improvements": ["Fix approving render and improve Conversation style."]
},
"date": "2025-11-14",
"version": "2.0.0-next.53"
},
{
"children": {
"fixes": ["Filter out reasoning fields from messages in ChatCompletion API."]
},
"date": "2025-11-13",
"version": "2.0.0-next.52"
},
{
"children": {
"improvements": ["Update ERNIE-5.0-Thinking-Preview model."]
},
"date": "2025-11-13",
"version": "2.0.0-next.51"
},
{
"children": {
"fixes": ["Fix oidc accountId mismatch."]
},
"date": "2025-11-13",
"version": "2.0.0-next.50"
},
{
"children": {
"features": ["Support tool invention."],
"fixes": ["Update lost i18n files."]
},
"date": "2025-11-13",
"version": "2.0.0-next.49"
},
{
"children": {},
"date": "2025-11-12",
+1
View File
@@ -32,6 +32,7 @@ coverage:
app:
flags:
- app
threshold: 0.5
patch: off
+6
View File
@@ -19,6 +19,10 @@ services:
extends:
file: docker-compose/local/docker-compose.yml
service: postgresql
redis:
extends:
file: docker-compose/local/docker-compose.yml
service: redis
minio:
extends:
file: docker-compose/local/docker-compose.yml
@@ -78,6 +82,8 @@ volumes:
driver: local
prometheus_data:
driver: local
redis_data:
driver: local
networks:
lobe-network:
+24 -1
View File
@@ -35,6 +35,23 @@ services:
networks:
- lobe-network
redis:
image: redis:7-alpine
container_name: lobe-redis
ports:
- '6379:6379'
command: redis-server --save 60 1000 --appendonly yes
volumes:
- 'redis_data:/data'
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 3s
retries: 5
restart: always
networks:
- lobe-network
minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: lobe-minio
@@ -107,6 +124,8 @@ services:
condition: service_started
casdoor:
condition: service_started
redis:
condition: service_healthy
environment:
- 'NEXT_AUTH_SSO_PROVIDERS=casdoor'
@@ -121,6 +140,9 @@ services:
- 'LLM_VISION_IMAGE_USE_BASE64=1'
- 'S3_SET_ACL=0'
- 'SEARXNG_URL=http://searxng:8080'
- 'REDIS_URL=redis://redis:6379'
- 'REDIS_PREFIX=lobechat'
- 'REDIS_TLS=0'
env_file:
- .env
restart: always
@@ -248,7 +270,8 @@ volumes:
driver: local
prometheus_data:
driver: local
redis_data:
driver: local
networks:
lobe-network:
+25 -2
View File
@@ -32,10 +32,27 @@ services:
networks:
- lobe-network
redis:
image: redis:7-alpine
container_name: lobe-redis
ports:
- '6379:6379'
command: redis-server --save 60 1000 --appendonly yes
volumes:
- 'redis_data:/data'
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 3s
retries: 5
restart: always
networks:
- lobe-network
minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: lobe-minio
network_mode: 'service:network-service'
network_mode: "service:network-service"
volumes:
- './s3_data:/etc/minio/data'
environment:
@@ -46,7 +63,6 @@ services:
command: >
server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001"
logto:
image: svhd/logto
container_name: lobe-logto
@@ -75,6 +91,8 @@ services:
condition: service_started
logto:
condition: service_started
redis:
condition: service_healthy
environment:
- 'APP_URL=http://localhost:3210'
@@ -88,6 +106,9 @@ services:
- 'S3_BUCKET=${MINIO_LOBE_BUCKET}'
- 'S3_PUBLIC_DOMAIN=http://localhost:${MINIO_PORT}'
- 'S3_ENABLE_PATH_STYLE=1'
- 'REDIS_URL=redis://redis:6379'
- 'REDIS_PREFIX=lobechat'
- 'REDIS_TLS=0'
env_file:
- .env
restart: always
@@ -97,6 +118,8 @@ volumes:
driver: local
s3_data:
driver: local
redis_data:
driver: local
networks:
lobe-network:
+65 -19
View File
@@ -4,6 +4,7 @@ table agents {
title varchar(255)
description varchar(1000)
tags jsonb [default: `[]`]
editor_data jsonb
avatar text
background_color text
market_identifier text
@@ -136,6 +137,42 @@ table async_tasks {
updated_at "timestamp with time zone" [not null, default: `now()`]
}
table accounts {
access_token text
access_token_expires_at timestamp
account_id text [not null]
created_at timestamp [not null, default: `now()`]
id text [pk, not null]
id_token text
password text
provider_id text [not null]
refresh_token text
refresh_token_expires_at timestamp
scope text
updated_at timestamp [not null]
user_id text [not null]
}
table auth_sessions {
created_at timestamp [not null, default: `now()`]
expires_at timestamp [not null]
id text [pk, not null]
ip_address text
token text [not null, unique]
updated_at timestamp [not null]
user_agent text
user_id text [not null]
}
table verifications {
created_at timestamp [not null, default: `now()`]
expires_at timestamp [not null]
id text [pk, not null]
identifier text [not null]
updated_at timestamp [not null, default: `now()`]
value text [not null]
}
table chat_groups {
id text [pk, not null]
title text
@@ -170,20 +207,8 @@ table chat_groups_agents {
}
}
table document_chunks {
document_id varchar(30) [not null]
chunk_id uuid [not null]
page_index integer
user_id text [not null]
created_at "timestamp with time zone" [not null, default: `now()`]
indexes {
(document_id, chunk_id) [pk]
}
}
table documents {
id varchar(30) [pk, not null]
id varchar(255) [pk, not null]
title text
content text
file_type varchar(255) [not null]
@@ -195,9 +220,11 @@ table documents {
source_type text [not null]
source text [not null]
file_id text
parent_id varchar(255)
user_id text [not null]
client_id text
editor_data jsonb
slug varchar(255)
accessed_at "timestamp with time zone" [not null, default: `now()`]
created_at "timestamp with time zone" [not null, default: `now()`]
updated_at "timestamp with time zone" [not null, default: `now()`]
@@ -206,7 +233,9 @@ table documents {
source [name: 'documents_source_idx']
file_type [name: 'documents_file_type_idx']
file_id [name: 'documents_file_id_idx']
parent_id [name: 'documents_parent_id_idx']
(client_id, user_id) [name: 'documents_client_id_user_id_unique', unique]
(slug, user_id) [name: 'documents_slug_user_id_unique', unique]
}
}
@@ -219,6 +248,7 @@ table files {
size integer [not null]
url text [not null]
source text
parent_id varchar(255)
client_id text
metadata jsonb
chunk_task_id uuid
@@ -229,6 +259,7 @@ table files {
indexes {
file_hash [name: 'file_hash_idx']
parent_id [name: 'files_parent_id_idx']
(client_id, user_id) [name: 'files_client_id_user_id_unique', unique]
}
}
@@ -475,7 +506,7 @@ table nextauth_accounts {
session_state text
token_type text
type text [not null]
userId text [not null]
user_id text [not null]
indexes {
(provider, providerAccountId) [pk]
@@ -490,17 +521,17 @@ table nextauth_authenticators {
credentialPublicKey text [not null]
providerAccountId text [not null]
transports text
userId text [not null]
user_id text [not null]
indexes {
(userId, credentialID) [pk]
(user_id, credentialID) [pk]
}
}
table nextauth_sessions {
expires timestamp [not null]
sessionToken text [pk, not null]
userId text [not null]
user_id text [not null]
}
table nextauth_verificationtokens {
@@ -660,6 +691,18 @@ table chunks {
}
}
table document_chunks {
document_id varchar(30) [not null]
chunk_id uuid [not null]
page_index integer
user_id text [not null]
created_at "timestamp with time zone" [not null, default: `now()`]
indexes {
(document_id, chunk_id) [pk]
}
}
table embeddings {
id uuid [pk, not null, default: `gen_random_uuid()`]
chunk_id uuid [unique]
@@ -882,10 +925,12 @@ table sessions {
table threads {
id text [pk, not null]
title text
content text
editor_data jsonb
type text [not null]
status text [default: 'active']
status text
topic_id text [not null]
source_message_id text [not null]
source_message_id text
parent_thread_id text
client_id text
user_id text [not null]
@@ -974,6 +1019,7 @@ table users {
full_name text
is_onboarded boolean [default: false]
clerk_created_at "timestamp with time zone"
email_verified boolean [not null, default: false]
email_verified_at "timestamp with time zone"
preference jsonb
accessed_at "timestamp with time zone" [not null, default: `now()`]
+82 -2
View File
@@ -1,10 +1,11 @@
---
title: LobeChat Authentication Service Configuration
description: >-
Learn how to configure external authentication services using Clerk or Next Auth for centralized user authorization management. Supported authentication services include Auth0, Azure ID, etc.
Learn how to configure external authentication services using Better Auth, Clerk, or Next Auth for centralized user authorization management. Supported authentication services include Auth0, Azure ID, etc.
tags:
- Authentication Service
- Better Auth
- Next Auth
- SSO
- Clerk
@@ -12,7 +13,7 @@ tags:
# Authentication Service
LobeChat supports the configuration of external authentication services using Clerk or Next Auth for internal use within enterprises/organizations to centrally manage user authorization.
LobeChat supports the configuration of external authentication services using Better Auth, Clerk, or Next Auth for internal use within enterprises/organizations to centrally manage user authorization.
## Clerk
@@ -22,6 +23,85 @@ LobeChat has deeply integrated with Clerk to provide users with a more secure an
By setting the environment variables `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` and `CLERK_SECRET_KEY` in LobeChat's environment, you can enable and use Clerk.
## Better Auth
[Better Auth](https://www.better-auth.com) is a modern, framework-agnostic authentication library designed to provide comprehensive, secure, and flexible authentication solutions. It supports various authentication methods including email/password, magic links, and multiple OAuth/SSO providers.
### Key Features
- **Email/Password Authentication**: Built-in support for traditional email and password login with secure password hashing
- **Email Verification**: Optional email verification flow with customizable email templates
- **Magic Link Login**: Passwordless authentication via email magic links
- **OAuth/SSO Support**: Integration with popular identity providers including Google, GitHub, Microsoft, AWS Cognito, and more
- **Generic OIDC/OAuth**: Support for any OpenID Connect or OAuth 2.0 compliant provider
### Getting Started
To enable Better Auth in LobeChat, set the following environment variables:
| Environment Variable | Type | Description |
| -------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| `NEXT_PUBLIC_ENABLE_BETTER_AUTH` | Required | Set to `1` to enable Better Auth service |
| `AUTH_SECRET` | Required | Key used to encrypt session tokens. Generate using: `openssl rand -base64 32` |
| `NEXT_PUBLIC_AUTH_URL` | Optional | The URL accessible from the browser for Better Auth callbacks. Only set this if the default generated URL is incorrect |
| `AUTH_SSO_PROVIDERS` | Optional | Comma-separated list of enabled SSO providers, e.g., `google,github,microsoft` |
<Callout type={'warning'}>
If you build/deploy with the official Docker image, the defaults keep **NextAuth enabled** and **Better
Auth disabled** (`NEXT_PUBLIC_ENABLE_NEXT_AUTH=1`, `NEXT_PUBLIC_ENABLE_BETTER_AUTH=0`) to avoid unexpected
login redirects. To switch to Better Auth, set both build args and runtime envs explicitly:
`NEXT_PUBLIC_ENABLE_BETTER_AUTH=1` and `NEXT_PUBLIC_ENABLE_NEXT_AUTH=0`, then rebuild the image.
</Callout>
### Supported SSO Providers
| Provider | Value | Environment Variables |
| --------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------- |
| Google | `google` | `AUTH_GOOGLE_ID`, `AUTH_GOOGLE_SECRET` |
| GitHub | `github` | `AUTH_GITHUB_ID`, `AUTH_GITHUB_SECRET` |
| Microsoft | `microsoft` | `AUTH_MICROSOFT_ID`, `AUTH_MICROSOFT_SECRET` |
| AWS Cognito | `cognito` | `AUTH_COGNITO_ID`, `AUTH_COGNITO_SECRET`, `AUTH_COGNITO_ISSUER` |
| Auth0 | `auth0` | `AUTH_AUTH0_ID`, `AUTH_AUTH0_SECRET`, `AUTH_AUTH0_ISSUER` |
| Authelia | `authelia` | `AUTH_AUTHELIA_ID`, `AUTH_AUTHELIA_SECRET`, `AUTH_AUTHELIA_ISSUER` |
| Authentik | `authentik` | `AUTH_AUTHENTIK_ID`, `AUTH_AUTHENTIK_SECRET`, `AUTH_AUTHENTIK_ISSUER` |
| Casdoor | `casdoor` | `AUTH_CASDOOR_ID`, `AUTH_CASDOOR_SECRET`, `AUTH_CASDOOR_ISSUER` |
| Cloudflare Zero Trust | `cloudflare-zero-trust` | `AUTH_CLOUDFLARE_ZERO_TRUST_ID`, `AUTH_CLOUDFLARE_ZERO_TRUST_SECRET`, `AUTH_CLOUDFLARE_ZERO_TRUST_ISSUER` |
| Keycloak | `keycloak` | `AUTH_KEYCLOAK_ID`, `AUTH_KEYCLOAK_SECRET`, `AUTH_KEYCLOAK_ISSUER` |
| Logto | `logto` | `AUTH_LOGTO_ID`, `AUTH_LOGTO_SECRET`, `AUTH_LOGTO_ISSUER` |
| Okta | `okta` | `AUTH_OKTA_ID`, `AUTH_OKTA_SECRET`, `AUTH_OKTA_ISSUER` |
| ZITADEL | `zitadel` | `AUTH_ZITADEL_ID`, `AUTH_ZITADEL_SECRET`, `AUTH_ZITADEL_ISSUER` |
| Generic OIDC | `generic-oidc` | `AUTH_GENERIC_OIDC_ID`, `AUTH_GENERIC_OIDC_SECRET`, `AUTH_GENERIC_OIDC_ISSUER` |
| Feishu | `feishu` | `AUTH_FEISHU_APP_ID`, `AUTH_FEISHU_APP_SECRET` |
| WeChat | `wechat` | `AUTH_WECHAT_ID`, `AUTH_WECHAT_SECRET` |
### Callback URL Format
When configuring OAuth providers, use the following callback URL format:
- **Development**: `http://localhost:3210/api/auth/callback/{provider}`
- **Production**: `https://yourdomain.com/api/auth/callback/{provider}`
### Email Service Configuration
If you want to enable email verification or password reset features, you need to configure SMTP settings:
| Environment Variable | Type | Description |
| ------------------------------------- | -------- | ----------------------------------------------------------------- |
| `NEXT_PUBLIC_AUTH_EMAIL_VERIFICATION` | Optional | Set to `1` to require email verification before users can sign in |
| `SMTP_HOST` | Required | SMTP server hostname (e.g., `smtp.gmail.com`) |
| `SMTP_PORT` | Required | SMTP server port (usually `587` for TLS, `465` for SSL) |
| `SMTP_SECURE` | Optional | Set to `true` for SSL (port 465), `false` for TLS (port 587) |
| `SMTP_USER` | Required | SMTP authentication username |
| `SMTP_PASS` | Required | SMTP authentication password |
<Callout type={'tip'}>
For detailed provider configuration, refer to the [Next Auth provider documentation](/docs/self-hosting/advanced/auth/next-auth) as most configurations are compatible, or visit the official [Better Auth documentation](https://www.better-auth.com/docs/introduction).
</Callout>
<Callout type={'tip'}>
Go to [📘 Environment Variables](/docs/self-hosting/environment-variables/auth#better-auth) for detailed information on all Better Auth variables.
</Callout>
## Next Auth
Before using NextAuth, please set the following variables in LobeChat's environment variables:
+82 -2
View File
@@ -1,8 +1,9 @@
---
title: LobeChat 身份验证服务配置
description: 了解如何使用 Clerk 或 Next Auth 配置外部身份验证服务,以统一管理用户授权。支持的身份验证服务包括 Auth0、 Azure ID 等。
description: 了解如何使用 Better Auth、Clerk 或 Next Auth 配置外部身份验证服务,以统一管理用户授权。支持的身份验证服务包括 Auth0、 Azure ID 等。
tags:
- 身份验证服务
- Better Auth
- LobeChat
- SSO
- Clerk
@@ -10,7 +11,7 @@ tags:
# 身份验证服务
LobeChat 支持使用 Clerk 或者 Next Auth 配置外部身份验证服务,供企业 / 组织内部使用,统一管理用户授权。
LobeChat 支持使用 Better Auth、Clerk 或者 Next Auth 配置外部身份验证服务,供企业 / 组织内部使用,统一管理用户授权。
## Clerk
@@ -20,6 +21,85 @@ LobeChat 与 Clerk 做了深度集成,能够为用户提供一个更加安全
在 LobeChat 的环境变量中设置 `NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY` 和 `CLERK_SECRET_KEY`,即可开启和使用 Clerk。
## Better Auth
[Better Auth](https://www.better-auth.com) 是一个现代化、框架无关的身份验证库,旨在提供全面、安全、灵活的身份验证解决方案。它支持多种认证方式,包括邮箱 / 密码登录、魔法链接登录以及多种 OAuth/SSO 提供商。
### 主要特性
- **邮箱 / 密码认证**:内置支持传统的邮箱和密码登录,采用安全的密码哈希算法
- **邮箱验证**:可选的邮箱验证流程,支持自定义邮件模板
- **魔法链接登录**:通过邮件魔法链接实现无密码认证
- **OAuth/SSO 支持**:集成 Google、GitHub、Microsoft、AWS Cognito 等主流身份提供商
- **通用 OIDC/OAuth**:支持任何符合 OpenID Connect 或 OAuth 2.0 标准的提供商
### 快速开始
要在 LobeChat 中启用 Better Auth,请设置以下环境变量:
| 环境变量 | 类型 | 描述 |
| -------------------------------- | -- | ------------------------------------------------ |
| `NEXT_PUBLIC_ENABLE_BETTER_AUTH` | 必选 | 设置为 `1` 以启用 Better Auth 服务 |
| `AUTH_SECRET` | 必选 | 用于加密会话令牌的密钥。使用以下命令生成:`openssl rand -base64 32` |
| `NEXT_PUBLIC_AUTH_URL` | 可选 | 浏览器可访问的 Better Auth 回调 URL。仅在默认生成的 URL 不正确时设置 |
| `AUTH_SSO_PROVIDERS` | 可选 | 启用的 SSO 提供商列表,以逗号分隔,例如 `google,github,microsoft` |
<Callout type={'warning'}>
若使用官方 Docker 镜像构建 / 部署,默认是 **开启 NextAuth、关闭 Better Auth**
`NEXT_PUBLIC_ENABLE_NEXT_AUTH=1`、`NEXT_PUBLIC_ENABLE_BETTER_AUTH=0`),以避免意外跳转到新版登录页。
如果要切换到 Better Auth,请同时显式设置构建参数和运行时环境变量:
`NEXT_PUBLIC_ENABLE_BETTER_AUTH=1`、`NEXT_PUBLIC_ENABLE_NEXT_AUTH=0`,并重新构建镜像。
</Callout>
### 支持的 SSO 提供商
| 提供商 | 值 | 环境变量 |
| --------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------- |
| Google | `google` | `AUTH_GOOGLE_ID`, `AUTH_GOOGLE_SECRET` |
| GitHub | `github` | `AUTH_GITHUB_ID`, `AUTH_GITHUB_SECRET` |
| Microsoft | `microsoft` | `AUTH_MICROSOFT_ID`, `AUTH_MICROSOFT_SECRET` |
| AWS Cognito | `cognito` | `AUTH_COGNITO_ID`, `AUTH_COGNITO_SECRET`, `AUTH_COGNITO_ISSUER` |
| Auth0 | `auth0` | `AUTH_AUTH0_ID`, `AUTH_AUTH0_SECRET`, `AUTH_AUTH0_ISSUER` |
| Authelia | `authelia` | `AUTH_AUTHELIA_ID`, `AUTH_AUTHELIA_SECRET`, `AUTH_AUTHELIA_ISSUER` |
| Authentik | `authentik` | `AUTH_AUTHENTIK_ID`, `AUTH_AUTHENTIK_SECRET`, `AUTH_AUTHENTIK_ISSUER` |
| Casdoor | `casdoor` | `AUTH_CASDOOR_ID`, `AUTH_CASDOOR_SECRET`, `AUTH_CASDOOR_ISSUER` |
| Cloudflare Zero Trust | `cloudflare-zero-trust` | `AUTH_CLOUDFLARE_ZERO_TRUST_ID`, `AUTH_CLOUDFLARE_ZERO_TRUST_SECRET`, `AUTH_CLOUDFLARE_ZERO_TRUST_ISSUER` |
| Keycloak | `keycloak` | `AUTH_KEYCLOAK_ID`, `AUTH_KEYCLOAK_SECRET`, `AUTH_KEYCLOAK_ISSUER` |
| Logto | `logto` | `AUTH_LOGTO_ID`, `AUTH_LOGTO_SECRET`, `AUTH_LOGTO_ISSUER` |
| Okta | `okta` | `AUTH_OKTA_ID`, `AUTH_OKTA_SECRET`, `AUTH_OKTA_ISSUER` |
| ZITADEL | `zitadel` | `AUTH_ZITADEL_ID`, `AUTH_ZITADEL_SECRET`, `AUTH_ZITADEL_ISSUER` |
| Generic OIDC | `generic-oidc` | `AUTH_GENERIC_OIDC_ID`, `AUTH_GENERIC_OIDC_SECRET`, `AUTH_GENERIC_OIDC_ISSUER` |
| 飞书 | `feishu` | `AUTH_FEISHU_APP_ID`, `AUTH_FEISHU_APP_SECRET` |
| 微信 | `wechat` | `AUTH_WECHAT_ID`, `AUTH_WECHAT_SECRET` |
### 回调 URL 格式
配置 OAuth 提供商时,请使用以下回调 URL 格式:
- **开发环境**`http://localhost:3210/api/auth/callback/{provider}`
- **生产环境**`https://yourdomain.com/api/auth/callback/{provider}`
### 邮件服务配置
如果需要启用邮箱验证或密码重置功能,需要配置 SMTP 设置:
| 环境变量 | 类型 | 描述 |
| ------------------------------------- | -- | ---------------------------------------------- |
| `NEXT_PUBLIC_AUTH_EMAIL_VERIFICATION` | 可选 | 设置为 `1` 以要求用户在登录前验证邮箱 |
| `SMTP_HOST` | 必选 | SMTP 服务器主机名(例如 `smtp.gmail.com` |
| `SMTP_PORT` | 必选 | SMTP 服务器端口(TLS 通常为 `587`SSL 为 `465` |
| `SMTP_SECURE` | 可选 | SSL 设置为 `true`(端口 465),TLS 设置为 `false`(端口 587 |
| `SMTP_USER` | 必选 | SMTP 认证用户名 |
| `SMTP_PASS` | 必选 | SMTP 认证密码 |
<Callout type={'tip'}>
详细的提供商配置可参考 [Next Auth 提供商文档](/zh/docs/self-hosting/advanced/auth/next-auth)(大部分配置兼容),或访问官方 [Better Auth 文档](https://www.better-auth.com/docs/introduction)。
</Callout>
<Callout type={'tip'}>
前往 [📘 环境变量](/zh/docs/self-hosting/environment-variables/auth#better-auth) 可查阅所有 Better Auth 相关变量详情。
</Callout>
## Next Auth
在使用 NextAuth 之前,请先在 LobeChat 的环境变量中设置以下变量:
@@ -1,11 +1,12 @@
---
title: LobeChat Authentication Service Environment Variables
description: >-
Explore the essential environment variables for configuring authentication services in LobeChat, including OAuth SSO, NextAuth settings, and provider-specific details.
Explore the essential environment variables for configuring authentication services in LobeChat, including Better Auth, OAuth SSO, NextAuth settings, and provider-specific details.
tags:
- Authentication Service
- Better Auth
- OAuth SSO
- Clerk
- NextAuth
@@ -15,6 +16,191 @@ tags:
LobeChat provides a complete authentication service capability when deployed. The following are the relevant environment variables. You can use these environment variables to easily define the identity verification services that need to be enabled in LobeChat.
## Better Auth
### General Settings
#### `NEXT_PUBLIC_ENABLE_BETTER_AUTH`
- Type: Required
- Description: Set to `1` to enable Better Auth service. When enabled, Better Auth will be used for authentication instead of Next Auth or Clerk.
- Default: `-`
- Example: `1`
#### `AUTH_SECRET`
- Type: Required
- Description: Key used to encrypt session tokens. Shared between Better Auth and Next Auth. You can generate the key using the command: `openssl rand -base64 32`.
- Default: `-`
- Example: `Tfhi2t2pelSMEA8eaV61KaqPNEndFFdMIxDaJnS1CUI=`
#### `NEXT_PUBLIC_AUTH_URL`
- Type: Optional
- Description: The URL accessible from the browser for Better Auth callbacks. Only set this if the default generated URL is incorrect.
- Default: `-`
- Example: `https://example.com`
#### `NEXT_PUBLIC_AUTH_EMAIL_VERIFICATION`
- Type: Optional
- Description: Set to `1` to require email verification before users can sign in. Users must verify their email address after registration.
- Default: `0`
- Example: `1`
#### `AUTH_SSO_PROVIDERS`
- Type: Optional
- Description: Comma-separated list of enabled SSO providers. The order determines the display order of providers on the login page.
- Default: `-`
- Example: `google,github,microsoft,cognito`
### Email Service (SMTP)
These settings are required for email verification and password reset features.
#### `SMTP_HOST`
- Type: Required (for email features)
- Description: SMTP server hostname.
- Default: `-`
- Example: `smtp.gmail.com`
#### `SMTP_PORT`
- Type: Required (for email features)
- Description: SMTP server port. Usually `587` for TLS or `465` for SSL.
- Default: `-`
- Example: `587`
#### `SMTP_SECURE`
- Type: Optional
- Description: Use secure connection. Set to `true` for port 465 (SSL), `false` for port 587 (TLS).
- Default: `false`
- Example: `false`
#### `SMTP_USER`
- Type: Required (for email features)
- Description: SMTP authentication username, usually your email address.
- Default: `-`
- Example: `your-email@example.com`
#### `SMTP_PASS`
- Type: Required (for email features)
- Description: SMTP authentication password. For Gmail, use an app-specific password.
- Default: `-`
- Example: `your-app-specific-password`
### Google
#### `AUTH_GOOGLE_ID`
- Type: Required
- Description: Client ID of the Google OAuth application. Get it from [Google Cloud Console](https://console.cloud.google.com/apis/credentials).
- Default: `-`
- Example: `123456789.apps.googleusercontent.com`
#### `AUTH_GOOGLE_SECRET`
- Type: Required
- Description: Client Secret of the Google OAuth application.
- Default: `-`
- Example: `GOCSPX-xxxxxxxxxxxxxxxxxxxx`
### GitHub
#### `AUTH_GITHUB_ID`
- Type: Required
- Description: Client ID of the GitHub OAuth application. Get it from [GitHub Developer Settings](https://github.com/settings/developers).
- Default: `-`
- Example: `Ov23xxxxxxxxxxxxx`
#### `AUTH_GITHUB_SECRET`
- Type: Required
- Description: Client Secret of the GitHub OAuth application.
- Default: `-`
- Example: `xxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### Microsoft
#### `AUTH_MICROSOFT_ID`
- Type: Required
- Description: Client ID of the Microsoft Entra ID (Azure AD) application. Get it from [Azure Portal](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade).
- Default: `-`
- Example: `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
#### `AUTH_MICROSOFT_SECRET`
- Type: Required
- Description: Client Secret of the Microsoft Entra ID application.
- Default: `-`
- Example: `xxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### AWS Cognito
#### `AUTH_COGNITO_ID`
- Type: Required
- Description: Client ID of the AWS Cognito User Pool App Client. Get it from [AWS Cognito Console](https://console.aws.amazon.com/cognito).
- Default: `-`
- Example: `xxxxxxxxxxxxxxxxxxxxx`
#### `AUTH_COGNITO_SECRET`
- Type: Required
- Description: Client Secret of the AWS Cognito App Client.
- Default: `-`
- Example: `xxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
#### `AUTH_COGNITO_ISSUER`
- Type: Required
- Description: The Cognito User Pool issuer URL. Format: `https://cognito-idp.{region}.amazonaws.com/{userPoolId}`
- Default: `-`
- Example: `https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx`
### Feishu
#### `AUTH_FEISHU_APP_ID`
- Type: Required
- Description: App ID of the Feishu application. Get it from [Feishu Open Platform](https://open.feishu.cn/app).
- Default: `-`
- Example: `cli_xxxxxxxxxxxxxxxx`
#### `AUTH_FEISHU_APP_SECRET`
- Type: Required
- Description: App Secret of the Feishu application.
- Default: `-`
- Example: `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### WeChat
#### `AUTH_WECHAT_ID`
- Type: Required
- Description: App ID of the WeChat Open Platform application. Get it from [WeChat Open Platform](https://open.weixin.qq.com/).
- Default: `-`
- Example: `wxxxxxxxxxxxxxxxxxxx`
#### `AUTH_WECHAT_SECRET`
- Type: Required
- Description: App Secret of the WeChat application.
- Default: `-`
- Example: `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
<Callout type={'info'}>
For other OIDC-based providers (Auth0, Authelia, Authentik, Casdoor, Cloudflare Zero Trust, Keycloak, Logto, Okta, ZITADEL, Generic OIDC), the environment variables follow the same pattern as Next Auth. See the [Next Auth section](#next-auth) below for details.
</Callout>
## Next Auth
### General Settings
@@ -1,9 +1,10 @@
---
title: LobeChat 身份验证服务设置
description: 了解如何配置 LobeChat 的身份验证服务环境变量。
description: 了解如何配置 LobeChat 的身份验证服务环境变量,包括 Better Auth、OAuth SSO、NextAuth 设置等
tags:
- LobeChat
- 身份验证服务
- Better Auth
- 单点登录
- Next Auth
- Clerk
@@ -13,6 +14,191 @@ tags:
LobeChat 在部署时提供了完善的身份验证服务能力,以下是相关的环境变量,你可以使用这些环境变量轻松定义需要在 LobeChat 中开启的身份验证服务。
## Better Auth
### 通用设置
#### `NEXT_PUBLIC_ENABLE_BETTER_AUTH`
- 类型:必选
- 描述:设置为 `1` 以启用 Better Auth 服务。启用后,将使用 Better Auth 进行身份验证,而非 Next Auth 或 Clerk。
- 默认值:`-`
- 示例:`1`
#### `AUTH_SECRET`
- 类型:必选
- 描述:用于加密会话令牌的密钥,Better Auth 和 Next Auth 共享。使用以下命令生成:`openssl rand -base64 32`
- 默认值:`-`
- 示例:`Tfhi2t2pelSMEA8eaV61KaqPNEndFFdMIxDaJnS1CUI=`
#### `NEXT_PUBLIC_AUTH_URL`
- 类型:可选
- 描述:浏览器可访问的 Better Auth 回调 URL。仅在默认生成的 URL 不正确时设置。
- 默认值:`-`
- 示例:`https://example.com`
#### `NEXT_PUBLIC_AUTH_EMAIL_VERIFICATION`
- 类型:可选
- 描述:设置为 `1` 以要求用户在登录前验证邮箱。用户注册后必须验证邮箱地址。
- 默认值:`0`
- 示例:`1`
#### `AUTH_SSO_PROVIDERS`
- 类型:可选
- 描述:启用的 SSO 提供商列表,以逗号分隔。顺序决定了登录页面上提供商的显示顺序。
- 默认值:`-`
- 示例:`google,github,microsoft,cognito`
### 邮件服务(SMTP
启用邮箱验证和密码重置功能需要配置以下设置。
#### `SMTP_HOST`
- 类型:必选(用于邮件功能)
- 描述:SMTP 服务器主机名。
- 默认值:`-`
- 示例:`smtp.gmail.com`
#### `SMTP_PORT`
- 类型:必选(用于邮件功能)
- 描述:SMTP 服务器端口。TLS 通常为 `587`SSL 为 `465`。
- 默认值:`-`
- 示例:`587`
#### `SMTP_SECURE`
- 类型:可选
- 描述:是否使用安全连接。端口 465(SSL)设置为 `true`,端口 587TLS)设置为 `false`。
- 默认值:`false`
- 示例:`false`
#### `SMTP_USER`
- 类型:必选(用于邮件功能)
- 描述:SMTP 认证用户名,通常是您的邮箱地址。
- 默认值:`-`
- 示例:`your-email@example.com`
#### `SMTP_PASS`
- 类型:必选(用于邮件功能)
- 描述:SMTP 认证密码。Gmail 需使用应用专用密码。
- 默认值:`-`
- 示例:`your-app-specific-password`
### Google
#### `AUTH_GOOGLE_ID`
- 类型:必选
- 描述:Google OAuth 应用的 Client ID。在 [Google Cloud Console](https://console.cloud.google.com/apis/credentials) 获取。
- 默认值:`-`
- 示例:`123456789.apps.googleusercontent.com`
#### `AUTH_GOOGLE_SECRET`
- 类型:必选
- 描述:Google OAuth 应用的 Client Secret。
- 默认值:`-`
- 示例:`GOCSPX-xxxxxxxxxxxxxxxxxxxx`
### GitHub
#### `AUTH_GITHUB_ID`
- 类型:必选
- 描述:GitHub OAuth 应用的 Client ID。在 [GitHub Developer Settings](https://github.com/settings/developers) 获取。
- 默认值:`-`
- 示例:`Ov23xxxxxxxxxxxxx`
#### `AUTH_GITHUB_SECRET`
- 类型:必选
- 描述:GitHub OAuth 应用的 Client Secret。
- 默认值:`-`
- 示例:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### Microsoft
#### `AUTH_MICROSOFT_ID`
- 类型:必选
- 描述:Microsoft Entra IDAzure AD)应用的 Client ID。在 [Azure 门户](https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationsListBlade) 获取。
- 默认值:`-`
- 示例:`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
#### `AUTH_MICROSOFT_SECRET`
- 类型:必选
- 描述:Microsoft Entra ID 应用的 Client Secret。
- 默认值:`-`
- 示例:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### AWS Cognito
#### `AUTH_COGNITO_ID`
- 类型:必选
- 描述:AWS Cognito 用户池应用客户端的 Client ID。在 [AWS Cognito 控制台](https://console.aws.amazon.com/cognito) 获取。
- 默认值:`-`
- 示例:`xxxxxxxxxxxxxxxxxxxxx`
#### `AUTH_COGNITO_SECRET`
- 类型:必选
- 描述:AWS Cognito 应用客户端的 Client Secret。
- 默认值:`-`
- 示例:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
#### `AUTH_COGNITO_ISSUER`
- 类型:必选
- 描述:Cognito 用户池的颁发者 URL。格式:`https://cognito-idp.{region}.amazonaws.com/{userPoolId}`
- 默认值:`-`
- 示例:`https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxxxxx`
### 飞书
#### `AUTH_FEISHU_APP_ID`
- 类型:必选
- 描述:飞书应用的 App ID。在 [飞书开放平台](https://open.feishu.cn/app) 获取。
- 默认值:`-`
- 示例:`cli_xxxxxxxxxxxxxxxx`
#### `AUTH_FEISHU_APP_SECRET`
- 类型:必选
- 描述:飞书应用的 App Secret。
- 默认值:`-`
- 示例:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
### 微信
#### `AUTH_WECHAT_ID`
- 类型:必选
- 描述:微信开放平台应用的 App ID。在 [微信开放平台](https://open.weixin.qq.com/) 获取。
- 默认值:`-`
- 示例:`wxxxxxxxxxxxxxxxxxxx`
#### `AUTH_WECHAT_SECRET`
- 类型:必选
- 描述:微信应用的 App Secret。
- 默认值:`-`
- 示例:`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`
<Callout type={'info'}>
其他基于 OIDC 的提供商(Auth0、Authelia、Authentik、Casdoor、Cloudflare Zero Trust、Keycloak、Logto、Okta、ZITADEL、Generic OIDC)的环境变量配置与 Next Auth 相同。详情请参阅下方的 [Next Auth 章节](#next-auth)。
</Callout>
## Next Auth
### 通用设置
+1 -1
View File
@@ -11,7 +11,7 @@ tags:
# Using ComfyUI in LobeChat
<Image alt={'Using ComfyUI in LobeChat'} cover src={'https://github.com/lobehub/lobe-chat/assets/17870709/c9e5eafc-ca22-496b-a88d-cc0ae53bf720'} />
<Image alt={'Using ComfyUI in LobeChat'} cover src={'https://hub-apac-1.lobeobjects.space/docs/e9b811f248a1db2bd1be1af888cf9b9d.png'} />
This documentation will guide you on how to use [ComfyUI](https://github.com/comfyanonymous/ComfyUI) in LobeChat for high-quality AI image generation and editing.
+1 -1
View File
@@ -11,7 +11,7 @@ tags:
# 在 LobeChat 中使用 ComfyUI
<Image alt={'在 LobeChat 中使用 ComfyUI'} cover src={'https://github.com/lobehub/lobe-chat/assets/17870709/c9e5eafc-ca22-496b-a88d-cc0ae53bf720'} />
<Image alt={'在 LobeChat 中使用 ComfyUI'} cover src={'https://hub-apac-1.lobeobjects.space/docs/e9b811f248a1db2bd1be1af888cf9b9d.png'} />
本文档将指导你如何在 LobeChat 中使用 [ComfyUI](https://github.com/comfyanonymous/ComfyUI) 进行高质量的 AI 图像生成和编辑。
+2 -2
View File
@@ -17,8 +17,8 @@
"playwright": "^1.56.1"
},
"devDependencies": {
"@types/node": "^22.10.5",
"@types/node": "^24.10.1",
"tsx": "^4.20.6",
"typescript": "^5.7.3"
"typescript": "^5.9.3"
}
}
+114 -1
View File
@@ -52,6 +52,104 @@
"required": "لا يمكن أن يكون المحتوى فارغًا"
}
},
"betterAuth": {
"errors": {
"emailInvalid": "يرجى إدخال عنوان بريد إلكتروني صالح",
"emailNotRegistered": "هذا البريد الإلكتروني غير مسجل",
"emailNotVerified": "لم يتم التحقق من البريد الإلكتروني، يرجى التحقق أولاً",
"emailRequired": "يرجى إدخال عنوان البريد الإلكتروني",
"firstNameRequired": "يرجى إدخال الاسم الأول",
"lastNameRequired": "يرجى إدخال اسم العائلة",
"loginFailed": "فشل تسجيل الدخول، يرجى التحقق من البريد الإلكتروني وكلمة المرور",
"passwordFormat": "يجب أن تحتوي كلمة المرور على أحرف وأرقام",
"passwordMaxLength": "يجب ألا تتجاوز كلمة المرور 64 حرفًا",
"passwordMinLength": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل",
"passwordRequired": "يرجى إدخال كلمة المرور",
"usernameRequired": "يرجى إدخال اسم المستخدم"
},
"resetPassword": {
"backToSignIn": "العودة إلى تسجيل الدخول",
"confirmPasswordPlaceholder": "تأكيد كلمة المرور الجديدة",
"confirmPasswordRequired": "يرجى تأكيد كلمة المرور الجديدة",
"description": "يرجى إدخال كلمة المرور الجديدة",
"error": "فشل إعادة تعيين كلمة المرور، يرجى المحاولة مرة أخرى",
"invalidToken": "رابط إعادة التعيين غير صالح أو منتهي الصلاحية",
"newPasswordPlaceholder": "أدخل كلمة المرور الجديدة",
"passwordMismatch": "كلمتا المرور غير متطابقتين",
"submit": "إعادة تعيين كلمة المرور",
"success": "تمت إعادة تعيين كلمة المرور بنجاح، يرجى تسجيل الدخول باستخدام كلمة المرور الجديدة",
"title": "إعادة تعيين كلمة المرور"
},
"signin": {
"backToEmail": "العودة لتعديل البريد الإلكتروني",
"continueWithAuth0": "تسجيل الدخول باستخدام Auth0",
"continueWithAuthelia": "تسجيل الدخول باستخدام Authelia",
"continueWithAuthentik": "تسجيل الدخول باستخدام Authentik",
"continueWithCasdoor": "تسجيل الدخول باستخدام Casdoor",
"continueWithCloudflareZeroTrust": "تسجيل الدخول باستخدام Cloudflare Zero Trust",
"continueWithCognito": "تسجيل الدخول باستخدام AWS Cognito",
"continueWithFeishu": "تسجيل الدخول باستخدام Feishu",
"continueWithGithub": "تسجيل الدخول باستخدام GitHub",
"continueWithGoogle": "تسجيل الدخول باستخدام Google",
"continueWithKeycloak": "تسجيل الدخول باستخدام Keycloak",
"continueWithLogto": "تسجيل الدخول باستخدام Logto",
"continueWithMicrosoft": "تسجيل الدخول باستخدام Microsoft",
"continueWithOIDC": "تسجيل الدخول باستخدام OIDC",
"continueWithOkta": "تسجيل الدخول باستخدام Okta",
"continueWithWechat": "تسجيل الدخول باستخدام WeChat",
"continueWithZitadel": "تسجيل الدخول باستخدام Zitadel",
"emailPlaceholder": "يرجى إدخال عنوان البريد الإلكتروني",
"emailStep": {
"subtitle": "يرجى إدخال بريدك الإلكتروني للمتابعة",
"title": "تسجيل الدخول"
},
"error": "فشل تسجيل الدخول، يرجى التحقق من البريد الإلكتروني وكلمة المرور",
"forgotPassword": "هل نسيت كلمة المرور؟",
"forgotPasswordError": "فشل إرسال رابط إعادة تعيين كلمة المرور",
"forgotPasswordSent": "تم إرسال رابط إعادة تعيين كلمة المرور، يرجى التحقق من بريدك الإلكتروني",
"magicLinkButton": "إرسال رابط تسجيل الدخول",
"magicLinkError": "فشل إرسال رابط تسجيل الدخول، يرجى المحاولة لاحقًا",
"magicLinkSent": "تم إرسال رابط تسجيل الدخول، يرجى التحقق من بريدك الإلكتروني",
"nextStep": "الخطوة التالية",
"noAccount": "ليس لديك حساب؟",
"orContinueWith": "أو المتابعة باستخدام",
"passwordPlaceholder": "يرجى إدخال كلمة المرور",
"passwordStep": {
"subtitle": "يرجى إدخال كلمة المرور للمتابعة"
},
"signupLink": "سجّل الآن",
"socialError": "فشل تسجيل الدخول عبر الشبكات الاجتماعية، يرجى المحاولة مرة أخرى",
"socialOnlyHint": "تم تسجيل هذا البريد الإلكتروني باستخدام حساب اجتماعي، يرجى تسجيل الدخول باستخدامه",
"submit": "تسجيل الدخول"
},
"signup": {
"emailPlaceholder": "يرجى إدخال عنوان البريد الإلكتروني",
"error": "فشل التسجيل، يرجى المحاولة مرة أخرى",
"firstNamePlaceholder": "الاسم الأول",
"hasAccount": "هل لديك حساب؟",
"lastNamePlaceholder": "اسم العائلة",
"passwordPlaceholder": "يرجى إدخال كلمة المرور",
"signinLink": "تسجيل الدخول الآن",
"submit": "تسجيل",
"subtitle": "انضم إلى مجتمع LobeChat",
"success": "تم التسجيل بنجاح! يرجى التحقق من بريدك الإلكتروني لتأكيد الحساب",
"title": "إنشاء حساب",
"usernamePlaceholder": "يرجى إدخال اسم المستخدم"
},
"verifyEmail": {
"backToSignIn": "العودة إلى تسجيل الدخول",
"checkSpam": "إذا لم تتلقَ البريد الإلكتروني، يرجى التحقق من مجلد الرسائل غير المرغوب فيها",
"descriptionPrefix": "لقد أرسلنا رسالة تحقق إلى",
"descriptionSuffix": "",
"resend": {
"button": "إعادة إرسال رسالة التحقق",
"error": "فشل الإرسال، يرجى المحاولة لاحقًا",
"noEmail": "عنوان البريد الإلكتروني مفقود",
"success": "تمت إعادة إرسال رسالة التحقق، يرجى التحقق من بريدك الإلكتروني"
},
"title": "تحقق من بريدك الإلكتروني"
}
},
"date": {
"prevMonth": "الشهر الماضي",
"recent30Days": "آخر 30 يومًا"
@@ -86,16 +184,31 @@
"loginOrSignup": "تسجيل الدخول / الاشتراك",
"profile": {
"avatar": "الصورة الشخصية",
"cancel": "إلغاء",
"changePassword": "إعادة تعيين كلمة المرور",
"email": "عنوان البريد الإلكتروني",
"fullName": "الاسم الكامل",
"fullNameInputHint": "يرجى إدخال الاسم الكامل الجديد",
"password": "كلمة المرور",
"resetPasswordError": "فشل إرسال رابط إعادة تعيين كلمة المرور",
"resetPasswordSent": "تم إرسال رابط إعادة تعيين كلمة المرور، يرجى التحقق من بريدك الإلكتروني",
"save": "حفظ",
"sso": {
"link": {
"button": "ربط الحساب",
"success": "تم ربط الحساب بنجاح"
},
"loading": "جارٍ تحميل الحسابات المرتبطة من طرف ثالث",
"providers": "الحسابات المتصلة",
"unlink": {
"description": "بعد unlink ، لن تتمكن من تسجيل الدخول باستخدام حساب {{provider}} \"{{providerAccountId}}\". إذا كنت بحاجة إلى إعادة ربط حساب {{provider}} بالحساب الحالي، يرجى التأكد من أن عنوان البريد الإلكتروني لحساب {{provider}} هو {{email}}، وسنقوم بربطه تلقائيًا بالحساب المسجل الدخول عند تسجيل الدخول.",
"description": "بعد إلغاء الربط، لن تتمكن من تسجيل الدخول باستخدام حساب {{provider}} \"{{providerAccountId}}\". إذا كنت ترغب في ربط حساب {{provider}} بهذا الحساب مرة أخرى، يرجى التأكد من أن عنوان البريد الإلكتروني لحساب {{provider}} هو {{email}}، وسنقوم بربطه تلقائيًا عند تسجيل الدخول.",
"forbidden": "يجب أن تحتفظ بحساب طرف ثالث واحد على الأقل مرتبطًا.",
"title": "هل تريد فصل حساب الطرف الثالث {{provider}}؟"
}
},
"title": "تفاصيل الملف الشخصي",
"updateAvatar": "تحديث الصورة الشخصية",
"updateFullName": "تحديث الاسم الكامل",
"username": "اسم المستخدم"
},
"signout": "تسجيل الخروج",
+41
View File
@@ -17,6 +17,7 @@
"availableAgents": "المساعدون المتاحون",
"backToBottom": "العودة إلى الأسفل",
"chatList": {
"expandMessage": "عرض الرسائل",
"longMessageDetail": "عرض التفاصيل"
},
"clearCurrentMessages": "مسح رسائل الجلسة الحالية",
@@ -52,6 +53,12 @@
"desc": "استنادًا إلى آلية تفكير كلود (Claude Thinking) المحدودة (<1>اعرف المزيد</1>)، عند التفعيل، سيتم تعطيل حد عدد الرسائل التاريخية تلقائيًا",
"title": "تفعيل التفكير العميق"
},
"imageAspectRatio": {
"title": "نسبة العرض إلى الارتفاع للصورة"
},
"imageResolution": {
"title": "دقة الصورة"
},
"reasoningBudgetToken": {
"title": "استهلاك توكن التفكير"
},
@@ -64,6 +71,9 @@
"thinking": {
"title": "مفتاح التفكير العميق"
},
"thinkingLevel": {
"title": "مستوى التفكير"
},
"title": "وظائف توسيع النموذج",
"urlContext": {
"desc": "عند التفعيل، سيتم تحليل روابط الويب تلقائيًا للحصول على محتوى السياق الفعلي للصفحة",
@@ -173,9 +183,11 @@
"title": "الإشارة إلى الأعضاء"
},
"messageAction": {
"collapse": "إخفاء الرسائل",
"continueGeneration": "متابعة التوليد",
"delAndRegenerate": "حذف وإعادة الإنشاء",
"deleteDisabledByThreads": "يوجد موضوعات فرعية، لا يمكن الحذف",
"expand": "عرض الرسائل",
"regenerate": "إعادة الإنشاء"
},
"messages": {
@@ -240,6 +252,7 @@
"noMatchingAgents": "لا يوجد أعضاء مطابقون",
"noMembersYet": "لا يوجد أعضاء في هذه المجموعة بعد. انقر على زر + لدعوة المساعدين.",
"noSelectedAgents": "لم يتم اختيار أي أعضاء بعد",
"openInNewWindow": "افتح الصفحة في نافذة جديدة",
"owner": "مالك المجموعة",
"pin": "تثبيت",
"pinOff": "إلغاء التثبيت",
@@ -326,6 +339,11 @@
"screenshot": "لقطة شاشة",
"settings": "إعدادات التصدير",
"text": "نص",
"widthMode": {
"label": "وضع العرض",
"narrow": "وضع الشاشة الضيقة",
"wide": "وضع الشاشة الواسعة"
},
"withBackground": "تضمين صورة الخلفية",
"withFooter": "تضمين تذييل",
"withPluginInfo": "تضمين معلومات البرنامج المساعد",
@@ -368,6 +386,29 @@
"remained": "متبقي",
"used": "مستخدم"
},
"tool": {
"intervention": {
"approve": "الموافقة",
"approveAndRemember": "الموافقة والتذكر",
"approveOnce": "الموافقة لمرة واحدة فقط",
"mode": {
"allowList": "قائمة السماح",
"allowListDesc": "تنفيذ الأدوات المعتمدة فقط تلقائيًا",
"autoRun": "الموافقة التلقائية",
"autoRunDesc": "الموافقة تلقائيًا على تنفيذ جميع الأدوات",
"manual": "يدوي",
"manualDesc": "يتطلب الموافقة اليدوية في كل مرة يتم فيها الاستدعاء"
},
"reject": "رفض",
"rejectAndContinue": "رفض ثم إعادة المحاولة",
"rejectOnly": "رفض",
"rejectReasonPlaceholder": "إدخال سبب الرفض سيساعد الوكيل على الفهم وتحسين الإجراءات المستقبلية",
"rejectTitle": "رفض استدعاء الأداة هذه المرة",
"rejectedWithReason": "تم رفض استدعاء الأداة هذه المرة بشكل يدوي: {{reason}}",
"toolAbort": "تم إلغاء استدعاء الأداة من قبل المستخدم",
"toolRejected": "تم رفض استدعاء الأداة هذه المرة بشكل يدوي"
}
},
"topic": {
"checkOpenNewTopic": "هل ترغب في فتح موضوع جديد؟",
"checkSaveCurrentMessages": "هل ترغب في حفظ الدردشة الحالية كموضوع؟",
+24
View File
@@ -135,6 +135,28 @@
}
},
"close": "إغلاق",
"cmdk": {
"about": "حول",
"communitySupport": "دعم المجتمع",
"discover": "استكشاف",
"knowledgeBase": "قاعدة المعرفة",
"navigate": "التنقل",
"newAgent": "إنشاء مساعد جديد",
"noResults": "لم يتم العثور على نتائج",
"openSettings": "فتح الإعدادات",
"painting": "الرسم بالذكاء الاصطناعي",
"searchPlaceholder": "أدخل أمرًا أو ابحث...",
"settings": "الإعدادات",
"starOnGitHub": "قيّمنا على GitHub",
"submitIssue": "إرسال مشكلة",
"theme": "السمة",
"themeAuto": "اتباع النظام",
"themeDark": "الوضع الداكن",
"themeLight": "الوضع الفاتح",
"toOpen": "فتح",
"toSelect": "تحديد"
},
"confirm": "تأكيد",
"contact": "اتصل بنا",
"copy": "نسخ",
"copyFail": "فشل في النسخ",
@@ -282,9 +304,11 @@
"business": "شراكات تجارية",
"support": "الدعم عبر البريد الإلكتروني"
},
"new": "جديد",
"oauth": "تسجيل الدخول SSO",
"officialSite": "الموقع الرسمي",
"ok": "موافق",
"or": "أو",
"password": "كلمة المرور",
"pin": "تثبيت في الأعلى",
"pinOff": "إلغاء التثبيت",
+20
View File
@@ -26,6 +26,14 @@
"createChunkingTask": "جارٍ التحضير...",
"deleteSuccess": "تم حذف الملف بنجاح",
"downloading": "جارٍ تحميل الملف...",
"goBack": "العودة إلى الصفحة السابقة",
"goForward": "الانتقال إلى الصفحة التالية",
"goToParent": "الانتقال إلى المجلد الرئيسي",
"moveError": "فشل في نقل الملف",
"moveHere": "نقل إلى هنا",
"moveSuccess": "تم نقل الملف بنجاح",
"moveToFolder": "نقل إلى...",
"moveToRoot": "نقل إلى الدليل الجذري",
"removeFromKnowledgeBase": "إزالة من قاعدة المعرفة",
"removeFromKnowledgeBaseSuccess": "تمت إزالة الملف بنجاح"
},
@@ -42,6 +50,12 @@
"or": "أو",
"title": "قم بسحب الملف أو المجلد هنا"
},
"noFolders": "لا توجد مجلدات حالياً",
"sort": {
"dateAdded": "تاريخ الإضافة",
"name": "الاسم",
"size": "الحجم"
},
"title": {
"createdAt": "تاريخ الإنشاء",
"size": "الحجم",
@@ -106,6 +120,12 @@
"keyPlaceholder": "المفتاح",
"valuePlaceholder": "القيمة"
},
"LocalFile": {
"action": {
"open": "فتح",
"showInFolder": "عرض في المجلد"
}
},
"MaxTokenSlider": {
"unlimited": "غير محدود"
},
+2 -2
View File
@@ -102,7 +102,7 @@
"SPII": "قد يحتوي المحتوى على معلومات شخصية حساسة. لحماية الخصوصية، يرجى إزالة المعلومات الحساسة ثم المحاولة مرة أخرى.",
"default": "تم حظر المحتوى: {{blockReason}}. يرجى تعديل طلبك ثم المحاولة مرة أخرى."
},
"InsufficientQuota": "عذرًا، لقد reached الحد الأقصى للحصة (quota) لهذه المفتاح، يرجى التحقق من رصيد الحساب الخاص بك أو زيادة حصة المفتاح ثم المحاولة مرة أخرى",
"InsufficientQuota": "عذرًا، لقد تم الوصول إلى الحد الأقصى لحصة المفتاح (quota). يرجى التحقق من رصيد الحساب أو زيادة حصة المفتاح ثم المحاولة مرة أخرى.",
"InvalidAccessCode": "كلمة المرور غير صحيحة أو فارغة، يرجى إدخال كلمة مرور الوصول الصحيحة أو إضافة مفتاح API مخصص",
"InvalidBedrockCredentials": "فشلت مصادقة Bedrock، يرجى التحقق من AccessKeyId/SecretAccessKey وإعادة المحاولة",
"InvalidClerkUser": "عذرًا، لم تقم بتسجيل الدخول بعد، يرجى تسجيل الدخول أو التسجيل للمتابعة",
@@ -131,7 +131,7 @@
"PluginServerError": "خطأ في استجابة الخادم لطلب الإضافة، يرجى التحقق من ملف وصف الإضافة وتكوين الإضافة وتنفيذ الخادم وفقًا لمعلومات الخطأ أدناه",
"PluginSettingsInvalid": "تحتاج هذه الإضافة إلى تكوين صحيح قبل الاستخدام، يرجى التحقق من صحة تكوينك",
"ProviderBizError": "طلب خدمة {{provider}} خاطئ، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
"QuotaLimitReached": "عذرًا، لقد reached الحد الأقصى من استخدام الرموز أو عدد الطلبات لهذا المفتاح. يرجى زيادة حصة هذا المفتاح أو المحاولة لاحقًا.",
"QuotaLimitReached": "عذرًا، لقد تم الوصول إلى الحد الأقصى لاستخدام الرموز (Token) أو عدد الطلبات لهذا المفتاح. يرجى زيادة حصة المفتاح أو المحاولة لاحقًا.",
"StreamChunkError": "خطأ في تحليل كتلة الرسالة لطلب التدفق، يرجى التحقق مما إذا كانت واجهة برمجة التطبيقات الحالية تتوافق مع المعايير، أو الاتصال بمزود واجهة برمجة التطبيقات الخاصة بك للاستفسار.",
"SubscriptionKeyMismatch": "نعتذر، بسبب عطل عرضي في النظام، فإن استخدام الاشتراك الحالي غير فعال مؤقتًا. يرجى النقر على الزر أدناه لاستعادة الاشتراك، أو مراسلتنا عبر البريد الإلكتروني للحصول على الدعم.",
"SubscriptionPlanLimit": "لقد استنفدت نقاط اشتراكك، ولا يمكنك استخدام هذه الميزة. يرجى الترقية إلى خطة أعلى، أو تكوين واجهة برمجة التطبيقات للنموذج المخصص للاستمرار في الاستخدام",
+95 -12
View File
@@ -1,5 +1,8 @@
{
"desc": "إدارة معرفتك",
"addFolder": "إنشاء مجلد",
"addKnowledge": "إضافة معرفة",
"addPage": "إنشاء مستند",
"desc": "نظّم معرفتك في العمل، الدراسة والحياة.",
"detail": {
"basic": {
"createdAt": "تاريخ الإنشاء",
@@ -21,22 +24,92 @@
"embeddingStatus": "تحويل إلى متجهات"
}
},
"documentEditor": {
"addIcon": "إضافة أيقونة",
"autoSaveMessage": "يتم حفظ المستند تلقائيًا، لا حاجة للحفظ اليدوي",
"chooseIcon": "اختر أيقونة",
"deleteConfirm": {
"content": "سيتم حذف هذا المستند، ولا يمكن استعادته بعد الحذف. يرجى توخي الحذر.",
"title": "حذف المستند"
},
"deleteError": "فشل في حذف المستند",
"deleteSuccess": "تم حذف المستند بنجاح",
"editedAt": "آخر تعديل في {{time}}",
"editedBy": "آخر من عدّل: {{name}}",
"editorPlaceholder": "أدخل محتوى المستند، اضغط / لفتح قائمة الأوامر",
"empty": {
"createNewDocument": "إنشاء مستند جديد",
"title": "اختر مستندًا للبدء",
"uploadMarkdown": "رفع ملف Markdown"
},
"linkCopied": "تم نسخ الرابط",
"menu": {
"copyLink": "نسخ الرابط",
"exportDocument": "تصدير المستند",
"importDocument": "استيراد مستند",
"pin": "تثبيت المستند"
},
"saving": "جارٍ الحفظ...",
"titlePlaceholder": "بدون عنوان",
"wordCount": "{{wordCount}} كلمة"
},
"documentList": {
"copyContent": "نسخ المحتوى الكامل",
"duplicate": "إنشاء نسخة",
"empty": "لا توجد مستندات حالياً، انقر على الزر أعلاه لإنشاء أول مستند لك",
"noResults": "لم يتم العثور على مستندات مطابقة",
"pageCount": "إجمالي {{count}} مستند",
"selectNote": "اختر مستندًا لبدء التحرير",
"untitled": "بدون عنوان"
},
"empty": "لا توجد ملفات/مجلدات تم تحميلها بعد",
"header": {
"actions": {
"newFolder": "إنشاء مجلد جديد",
"newPage": "مستند جديد",
"uploadFile": "رفع ملف",
"uploadFolder": "رفع مجلد"
},
"newNoteDialog": {
"cancel": "إلغاء",
"editTitle": "تحرير المستند",
"emptyContent": "لا يمكن أن يكون محتوى المستند فارغًا",
"loadError": "فشل في تحميل المستند، يرجى المحاولة مرة أخرى",
"loading": "جارٍ التحميل...",
"save": "حفظ",
"saveError": "فشل في حفظ المستند، يرجى المحاولة مرة أخرى",
"saveSuccess": "تم حفظ المستند بنجاح",
"title": "مستند جديد",
"updateSuccess": "تم تحديث المستند بنجاح"
},
"newPageButton": "إنشاء مستند جديد",
"uploadButton": "رفع"
},
"knowledgeBase": {
"list": {
"confirmRemoveKnowledgeBase": "سيتم حذف هذه المكتبة المعرفية، ولن يتم حذف الملفات الموجودة بها، بل ستنتقل إلى جميع الملفات. بعد حذف المكتبة المعرفية، لن يمكن استعادتها، يرجى توخي الحذر.",
"empty": "انقر على <1>+</1> لبدء إنشاء مكتبة معرفية"
},
"new": "إنشاء مكتبة معرفية جديدة",
"title": "المكتبة المعرفية"
"home": {
"getStarted": "ابدأ الآن",
"greeting": "ابدأ",
"quickActions": "إجراءات سريعة",
"recentFiles": "الملفات الأخيرة",
"recentPages": "الصفحات الأخيرة",
"subtitle": "مرحبًا بك في قاعدة المعرفة، ابدأ من هنا لإدارة مستنداتك وملاحظاتك",
"uploadEntries": {
"files": {
"title": "رفع ملفات"
},
"folder": {
"title": "رفع مجلد"
},
"knowledgeBase": {
"title": "قاعدة معرفة جديدة"
},
"newPage": {
"title": "إنشاء مستند جديد"
}
}
},
"menu": {
"allFiles": "جميع الملفات",
"allPages": "جميع المستندات"
},
"networkError": "فشل في الحصول على قاعدة المعرفة، يرجى التحقق من اتصال الشبكة ثم إعادة المحاولة",
"notSupportGuide": {
@@ -61,19 +134,29 @@
"downloadFile": "تحميل الملف",
"unsupportedFileAndContact": "هذا التنسيق من الملفات غير مدعوم للمعاينة عبر الإنترنت، إذا كان لديك طلب للمعاينة، فلا تتردد في <1>إبلاغنا</1>"
},
"repo": {
"list": {
"confirmRemoveRepo": "سيتم حذف هذا المستودع، لكن الملفات الموجودة فيه لن تُحذف، بل سيتم نقلها إلى جميع الملفات. لا يمكن استعادة المستودع بعد حذفه، يرجى توخي الحذر.",
"empty": "انقر <1>+</1> لبدء إنشاء مستودع"
},
"new": "إنشاء مستودع جديد",
"title": "المستودع"
},
"searchFilePlaceholder": "بحث عن ملف",
"searchPagePlaceholder": "ابحث في المستندات",
"tab": {
"all": "جميع الملفات",
"all": "الكل",
"audios": "الصوتيات",
"documents": "المستندات",
"home": "الرئيسية",
"images": "الصور",
"moreTypes": "أنواع أخرى",
"pages": "المستندات",
"videos": "الفيديوهات",
"websites": "المواقع"
},
"title": "قاعدة المعرفة",
"toggleLeftPanel": {
"title": "عرض/إخفاء اللوحة الجانبية اليسرى"
},
"toggleLeftPanel": "إظهار/إخفاء اللوحة الجانبية اليسرى",
"uploadDock": {
"body": {
"collapse": "طي",
+4
View File
@@ -7,6 +7,10 @@
"desc": "مسح الرسائل والملفات المرفوعة في المحادثة الحالية",
"title": "مسح رسائل المحادثة"
},
"commandPalette": {
"desc": "افتح لوحة الأوامر العامة للوصول السريع إلى الميزات",
"title": "لوحة الأوامر"
},
"deleteAndRegenerateMessage": {
"desc": "حذف الرسالة الأخيرة وإعادة إنشائها",
"title": "حذف وإعادة إنشاء"
+8
View File
@@ -37,6 +37,14 @@
"standard": "عادي"
}
},
"resolution": {
"label": "الدقة",
"options": {
"1K": "1K",
"2K": "2K",
"4K": "4K"
}
},
"seed": {
"label": "البذرة",
"random": "بذرة عشوائية"
+1 -1
View File
@@ -295,7 +295,7 @@
},
"helpDoc": "دليل التكوين",
"responsesApi": {
"desc": "استخدام معيار طلبات الجيل الجديد من OpenAI، لفتح ميزات متقدمة مثل سلسلة التفكير",
"desc": "يعتمد تنسيق طلب الجيل الجديد من OpenAI، لتمكين ميزات متقدمة مثل سلسلة التفكير (مدعومة فقط من نماذج OpenAI)",
"title": "استخدام معيار Responses API"
},
"waitingForMore": "المزيد من النماذج قيد <1>التخطيط للإدماج</1>، يرجى الانتظار"
+407 -122
View File
@@ -236,6 +236,9 @@
"MiniMaxAI/MiniMax-M1-80k": {
"description": "MiniMax-M1 هو نموذج استدلال كبير الحجم مفتوح المصدر يعتمد على الانتباه المختلط، يحتوي على 456 مليار معلمة، حيث يمكن لكل رمز تفعيل حوالي 45.9 مليار معلمة. يدعم النموذج أصلاً سياقًا فائق الطول يصل إلى مليون رمز، ومن خلال آلية الانتباه السريع، يوفر 75% من العمليات الحسابية العائمة في مهام التوليد التي تصل إلى 100 ألف رمز مقارنة بـ DeepSeek R1. بالإضافة إلى ذلك، يعتمد MiniMax-M1 على بنية MoE (الخبراء المختلطون)، ويجمع بين خوارزمية CISPO وتصميم الانتباه المختلط لتدريب تعلم معزز فعال، محققًا أداءً رائدًا في الصناعة في استدلال الإدخالات الطويلة وسيناريوهات هندسة البرمجيات الحقيقية."
},
"MiniMaxAI/MiniMax-M2": {
"description": "MiniMax-M2 يعيد تعريف الكفاءة للوكيل الذكي. إنه نموذج MoE مدمج وسريع وفعّال من حيث التكلفة، يحتوي على 230 مليار معلمة إجمالية و10 مليارات معلمة نشطة، وقد صُمم لتحقيق أداء رفيع المستوى في مهام الترميز والوكالة، مع الحفاظ على ذكاء عام قوي. بفضل 10 مليارات معلمة نشطة فقط، يقدم MiniMax-M2 أداءً يُضاهي النماذج الضخمة، مما يجعله خيارًا مثاليًا للتطبيقات عالية الكفاءة."
},
"Moonshot-Kimi-K2-Instruct": {
"description": "يحتوي على 1 تريليون معلمة و32 مليار معلمة مفعلة. من بين النماذج غير المعتمدة على التفكير، يحقق مستويات متقدمة في المعرفة الحديثة، الرياضيات والبرمجة، ويتفوق في مهام الوكيل العامة. تم تحسينه بعناية لمهام الوكيل، لا يجيب فقط على الأسئلة بل يتخذ إجراءات. مثالي للدردشة العفوية، التجارب العامة والوكيل، وهو نموذج سريع الاستجابة لا يتطلب تفكيرًا طويلًا."
},
@@ -717,25 +720,31 @@
"description": "Claude 3 Opus هو أذكى نموذج من Anthropic، يقدم أداءً رائدًا في السوق للمهام المعقدة للغاية. يتميز بسلاسة استثنائية وفهم شبيه بالبشر للتعامل مع المطالبات المفتوحة والسيناريوهات غير المسبوقة."
},
"anthropic/claude-3.5-haiku": {
"description": "Claude 3.5 Haiku هو الجيل التالي من أسرع نماذجنا. يتمتع بسرعة مماثلة لـ Claude 3 Haiku، مع تحسينات في كل مجموعة مهارات، وتفوق في العديد من اختبارات الذكاء على أكبر نموذج لدينا من الجيل السابق Claude 3 Opus."
"description": "يتميز Claude 3.5 Haiku بقدرات محسّنة في السرعة ودقة البرمجة واستخدام الأدوات. مناسب للسيناريوهات التي تتطلب سرعة عالية وتفاعلًا فعالًا مع الأدوات."
},
"anthropic/claude-3.5-sonnet": {
"description": "Claude 3.5 Sonnet يحقق توازنًا مثاليًا بين الذكاء والسرعة، خاصة لأعباء العمل المؤسسية. يقدم أداءً قويًا بتكلفة أقل مقارنة بالمنافسين، ومصمم لتحمل عالي في نشرات الذكاء الاصطناعي على نطاق واسع."
"description": "Claude 3.5 Sonnet هو نموذج سريع وفعّال من عائلة Sonnet، يوفر أداءً أفضل في البرمجة والاستدلال، وسيتم استبدال بعض نسخه تدريجيًا بـ Sonnet 3.7 وما بعده."
},
"anthropic/claude-3.7-sonnet": {
"description": "Claude 3.7 Sonnet هو أول نموذج استدلال مختلط، وأذكى نموذج حتى الآن من Anthropic. يقدم أداءً متقدمًا في الترميز، وتوليد المحتوى، وتحليل البيانات، ومهام التخطيط، مبنيًا على قدرات الهندسة البرمجية واستخدام الحاسوب في سلفه Claude 3.5 Sonnet."
"description": "Claude 3.7 Sonnet هو إصدار مطوّر من سلسلة Sonnet، يتمتع بقدرات استدلال وبرمجة أقوى، ومناسب للمهام المعقدة على مستوى المؤسسات."
},
"anthropic/claude-haiku-4.5": {
"description": "Claude Haiku 4.5 هو نموذج عالي الأداء من Anthropic يتميز بزمن استجابة منخفض جدًا مع الحفاظ على دقة عالية."
},
"anthropic/claude-opus-4": {
"description": "Claude Opus 4 هو أقوى نموذج حتى الآن من Anthropic، وأفضل نموذج ترميز في العالم، متصدرًا في اختبارات SWE-bench (72.5%) وTerminal-bench (43.2%). يوفر أداءً مستمرًا للمهام الطويلة التي تتطلب تركيزًا وجهدًا وآلاف الخطوات، قادرًا على العمل لساعات متواصلة، مما يوسع بشكل كبير قدرات وكلاء الذكاء الاصطناعي."
"description": "Opus 4 هو النموذج الرائد من Anthropic، مصمم خصيصًا للمهام المعقدة والتطبيقات المؤسسية."
},
"anthropic/claude-opus-4.1": {
"description": "Claude Opus 4.1 هو بديل جاهز للاستخدام لـ Opus 4، يقدم أداءً ودقة ممتازة في مهام الترميز والوكالة العملية. يرفع أداء الترميز المتقدم إلى 74.5% في SWE-bench Verified، ويتعامل مع المشكلات المعقدة متعددة الخطوات بدقة واهتمام أكبر بالتفاصيل."
"description": "Opus 4.1 هو نموذج متقدم من Anthropic، محسن للبرمجة، الاستدلال المعقد، والمهام المستمرة."
},
"anthropic/claude-opus-4.5": {
"description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الفائق والأداء القابل للتوسع، مما يجعله مناسبًا للمهام المعقدة التي تتطلب أعلى مستويات الجودة في الاستجابة والقدرة على الاستدلال."
},
"anthropic/claude-sonnet-4": {
"description": "Claude Sonnet 4 يحسن بشكل كبير على قدرات Sonnet 3.7 الرائدة في الصناعة، ويظهر أداءً ممتازًا في الترميز، محققًا 72.7% في SWE-bench. يوازن النموذج بين الأداء والكفاءة، مناسب للحالات الداخلية والخارجية، ويحقق تحكمًا أكبر في التنفيذ من خلال قابلية تحكم محسنة."
"description": "Claude Sonnet 4 هو إصدار الاستدلال الهجين من Anthropic، يجمع بين قدرات التفكير وغير التفكير."
},
"anthropic/claude-sonnet-4.5": {
"description": "كلود سونيت 4.5 هو أذكى نموذج قدمته شركة أنثروبيك حتى الآن."
"description": "Claude Sonnet 4.5 هو أحدث نموذج استدلال هجين من Anthropic، محسن للاستدلال المعقد والبرمجة."
},
"ascend-tribe/pangu-pro-moe": {
"description": "Pangu-Pro-MoE 72B-A16B هو نموذج لغة ضخم نادر التنشيط يحتوي على 72 مليار معلمة و16 مليار معلمة نشطة، يعتمد على بنية الخبراء المختلطين المجمعة (MoGE). في مرحلة اختيار الخبراء، يتم تجميع الخبراء وتقيد تنشيط عدد متساوٍ من الخبراء داخل كل مجموعة لكل رمز، مما يحقق توازنًا في تحميل الخبراء ويعزز بشكل كبير كفاءة نشر النموذج على منصة Ascend."
@@ -758,6 +767,9 @@
"baidu/ERNIE-4.5-300B-A47B": {
"description": "ERNIE-4.5-300B-A47B هو نموذج لغة ضخم يعتمد على بنية الخبراء المختلطين (MoE) تم تطويره بواسطة شركة بايدو. يحتوي النموذج على 300 مليار معلمة إجمالاً، لكنه ينشط فقط 47 مليار معلمة لكل رمز أثناء الاستدلال، مما يوازن بين الأداء القوي والكفاءة الحسابية. كأحد النماذج الأساسية في سلسلة ERNIE 4.5، يظهر أداءً متميزًا في مهام فهم النصوص، التوليد، الاستدلال، والبرمجة. يستخدم النموذج طريقة تدريب مسبق مبتكرة متعددة الوسائط ومتغايرة تعتمد على MoE، من خلال التدريب المشترك للنصوص والوسائط البصرية، مما يعزز قدراته الشاملة، خاصة في الالتزام بالتعليمات وتذكر المعرفة العالمية."
},
"baidu/ernie-5.0-thinking-preview": {
"description": "ERNIE 5.0 Thinking Preview هو نموذج Wenxin متعدد الوسائط من الجيل الجديد من Baidu، بارع في الفهم متعدد الوسائط، اتباع التعليمات، الإبداع، الأسئلة والأجوبة الواقعية، واستخدام الأدوات."
},
"c4ai-aya-expanse-32b": {
"description": "Aya Expanse هو نموذج متعدد اللغات عالي الأداء بسعة 32B، يهدف إلى تحدي أداء النماذج أحادية اللغة من خلال تحسين التعليمات، وتداول البيانات، وتدريب التفضيلات، وابتكارات دمج النماذج. يدعم 23 لغة."
},
@@ -818,6 +830,9 @@
"claude-opus-4-20250514": {
"description": "Claude Opus 4 هو أقوى نموذج من Anthropic لمعالجة المهام المعقدة للغاية. إنه يتفوق في الأداء والذكاء والسلاسة والفهم."
},
"claude-opus-4-5-20251101": {
"description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الفائق والأداء القابل للتوسع، مما يجعله مناسبًا للمهام المعقدة التي تتطلب أعلى مستويات الجودة في الاستجابة والقدرة على الاستدلال."
},
"claude-sonnet-4-20250514": {
"description": "كلود سونيت 4 يمكنه إنتاج استجابات شبه فورية أو تفكير تدريجي مطول، حيث يمكن للمستخدم رؤية هذه العمليات بوضوح."
},
@@ -866,6 +881,9 @@
"codex-mini-latest": {
"description": "codex-mini-latest هو نسخة محسنة من o4-mini، مخصصة لـ Codex CLI. بالنسبة للاستخدام المباشر عبر API، نوصي بالبدء من gpt-4.1."
},
"cogito-2.1:671b": {
"description": "Cogito v2.1 671B هو نموذج لغة مفتوح المصدر من الولايات المتحدة ومتاح للاستخدام التجاري المجاني، يتميز بأداء يقارن بأفضل النماذج، وكفاءة استدلال أعلى، وسياق طويل يصل إلى 128k، وقدرات شاملة قوية."
},
"cogview-4": {
"description": "CogView-4 هو أول نموذج مفتوح المصدر من Zhipu يدعم توليد الحروف الصينية، مع تحسينات شاملة في فهم المعاني، وجودة توليد الصور، وقدرات توليد النصوص باللغتين الصينية والإنجليزية، ويدعم إدخال ثنائي اللغة بأي طول، وقادر على توليد صور بأي دقة ضمن النطاق المحدد."
},
@@ -1049,6 +1067,9 @@
"deepseek-r1-0528": {
"description": "نموذج كامل القوة بحجم 685 مليار، صدر في 28 مايو 2025. استخدم DeepSeek-R1 تقنيات التعلم المعزز على نطاق واسع في مرحلة ما بعد التدريب، مما عزز بشكل كبير قدرات الاستدلال للنموذج مع وجود بيانات تعليمية قليلة جدًا. يتمتع بأداء عالي وقدرات قوية في المهام المتعلقة بالرياضيات، البرمجة، والاستدلال اللغوي الطبيعي."
},
"deepseek-r1-250528": {
"description": "DeepSeek R1 250528، النسخة الكاملة من نموذج الاستدلال DeepSeek-R1، مناسب للمهام الرياضية والمنطقية المعقدة."
},
"deepseek-r1-70b-fast-online": {
"description": "DeepSeek R1 70B النسخة السريعة، تدعم البحث المتصل في الوقت الحقيقي، وتوفر سرعة استجابة أسرع مع الحفاظ على أداء النموذج."
},
@@ -1059,31 +1080,34 @@
"description": "deepseek-r1-distill-llama هو نموذج مستخلص من DeepSeek-R1 بناءً على Llama."
},
"deepseek-r1-distill-llama-70b": {
"description": "DeepSeek R1 - النموذج الأكبر والأذكى في مجموعة DeepSeek - تم تقطيره إلى بنية Llama 70B. بناءً على اختبارات المعايير والتقييمات البشرية، يظهر هذا النموذج ذكاءً أكبر من Llama 70B الأصلي، خاصة في المهام التي تتطلب دقة رياضية وحقائق."
"description": "DeepSeek R1 Distill Llama 70B، نموذج تقطير يجمع بين قدرات الاستدلال العامة لـ R1 ونظام Llama البيئي."
},
"deepseek-r1-distill-llama-8b": {
"description": "نموذج DeepSeek-R1-Distill تم تطويره من خلال تقنية تقطير المعرفة، حيث تم تعديل عينات تم إنشاؤها بواسطة DeepSeek-R1 على نماذج مفتوحة المصدر مثل Qwen وLlama."
"description": "DeepSeek-R1-Distill-Llama-8B هو نموذج لغوي كبير مقطر مبني على Llama-3.1-8B، يستخدم مخرجات DeepSeek R1."
},
"deepseek-r1-distill-qianfan-70b": {
"description": "DeepSeek R1 Distill Qianfan 70B، نموذج تقطير R1 مبني على Qianfan-70B، يتميز بكفاءة عالية من حيث التكلفة."
},
"deepseek-r1-distill-qianfan-8b": {
"description": "DeepSeek R1 Distill Qianfan 8B، نموذج تقطير R1 مبني على Qianfan-8B، مناسب للتطبيقات المتوسطة والصغيرة."
},
"deepseek-r1-distill-qianfan-llama-70b": {
"description": "تم إصداره لأول مرة في 14 فبراير 2025، تم استخلاصه بواسطة فريق تطوير نموذج Qianfan باستخدام Llama3_70B كنموذج أساسي (مبني على Meta Llama)، وتم إضافة نصوص Qianfan إلى بيانات الاستخلاص."
},
"deepseek-r1-distill-qianfan-llama-8b": {
"description": "تم إصداره لأول مرة في 14 فبراير 2025، تم استخلاصه بواسطة فريق تطوير نموذج Qianfan باستخدام Llama3_8B كنموذج أساسي (مبني على Meta Llama)، وتم إضافة نصوص Qianfan إلى بيانات الاستخلاص."
"description": "DeepSeek R1 Distill Qianfan Llama 70B، نموذج تقطير R1 مبني على Llama-70B."
},
"deepseek-r1-distill-qwen": {
"description": "deepseek-r1-distill-qwen هو نموذج مستخلص من DeepSeek-R1 بناءً على Qwen."
},
"deepseek-r1-distill-qwen-1.5b": {
"description": "نموذج DeepSeek-R1-Distill تم تطويره من خلال تقنية تقطير المعرفة، حيث تم تعديل عينات تم إنشاؤها بواسطة DeepSeek-R1 على نماذج مفتوحة المصدر مثل Qwen وLlama."
"description": "DeepSeek R1 Distill Qwen 1.5B، نموذج تقطير R1 فائق الخفة، مناسب للبيئات ذات الموارد المحدودة جداً."
},
"deepseek-r1-distill-qwen-14b": {
"description": "نموذج DeepSeek-R1-Distill تم تطويره من خلال تقنية تقطير المعرفة، حيث تم تعديل عينات تم إنشاؤها بواسطة DeepSeek-R1 على نماذج مفتوحة المصدر مثل Qwen وLlama."
"description": "DeepSeek R1 Distill Qwen 14B، نموذج تقطير R1 متوسط الحجم، مناسب للنشر في سيناريوهات متعددة."
},
"deepseek-r1-distill-qwen-32b": {
"description": "نموذج DeepSeek-R1-Distill تم تطويره من خلال تقنية تقطير المعرفة، حيث تم تعديل عينات تم إنشاؤها بواسطة DeepSeek-R1 على نماذج مفتوحة المصدر مثل Qwen وLlama."
"description": "DeepSeek R1 Distill Qwen 32B، نموذج تقطير R1 مبني على Qwen-32B، يوازن بين الأداء والتكلفة."
},
"deepseek-r1-distill-qwen-7b": {
"description": "نموذج DeepSeek-R1-Distill تم تطويره من خلال تقنية تقطير المعرفة، حيث تم تعديل عينات تم إنشاؤها بواسطة DeepSeek-R1 على نماذج مفتوحة المصدر مثل Qwen وLlama."
"description": "DeepSeek R1 Distill Qwen 7B، نموذج تقطير R1 خفيف الوزن، مناسب للبيئات الطرفية والخاصة بالمؤسسات."
},
"deepseek-r1-fast-online": {
"description": "DeepSeek R1 النسخة السريعة الكاملة، تدعم البحث المتصل في الوقت الحقيقي، تجمع بين القدرات القوية لـ 671 مليار معلمة وسرعة استجابة أسرع."
@@ -1112,12 +1136,27 @@
"deepseek-v3.1-terminus": {
"description": "DeepSeek-V3.1-Terminus هو إصدار محسن من نموذج اللغة الكبير أطلقته DeepSeek، ومُصمم خصيصًا للأجهزة الطرفية."
},
"deepseek-v3.1-think-250821": {
"description": "DeepSeek V3.1 Think 250821، نموذج تفكير عميق بإصدار Terminus، مناسب لسيناريوهات الاستدلال عالية الأداء."
},
"deepseek-v3.1:671b": {
"description": "DeepSeek V3.1: نموذج استدلال من الجيل التالي يعزز القدرات على الاستدلال المعقد والتفكير التسلسلي، مناسب للمهام التي تتطلب تحليلاً عميقًا."
},
"deepseek-v3.2-exp": {
"description": "deepseek-v3.2-exp يُدخل آلية الانتباه المتفرق، بهدف تحسين كفاءة التدريب والاستدلال عند معالجة النصوص الطويلة، بسعر أقل من deepseek-v3.1."
},
"deepseek-v3.2-think": {
"description": "DeepSeek V3.2 Think، النسخة الكاملة من نموذج التفكير العميق، معزّز بقدرات استدلال طويلة السلسلة."
},
"deepseek-vl2": {
"description": "DeepSeek VL2، نموذج متعدد الوسائط يدعم فهم الصور والنصوص والإجابات البصرية الدقيقة."
},
"deepseek-vl2-small": {
"description": "DeepSeek VL2 Small، نسخة خفيفة متعددة الوسائط، مناسبة للبيئات ذات الموارد المحدودة وسيناريوهات الحمل العالي."
},
"deepseek/deepseek-chat": {
"description": "DeepSeek-V3 هو نموذج استدلال هجين عالي الأداء من فريق DeepSeek، مناسب للمهام المعقدة وتكامل الأدوات."
},
"deepseek/deepseek-chat-v3-0324": {
"description": "DeepSeek V3 هو نموذج مختلط خبير يحتوي على 685B من المعلمات، وهو أحدث إصدار من سلسلة نماذج الدردشة الرائدة لفريق DeepSeek.\n\nيستفيد من نموذج [DeepSeek V3](/deepseek/deepseek-chat-v3) ويظهر أداءً ممتازًا في مجموعة متنوعة من المهام."
},
@@ -1125,19 +1164,19 @@
"description": "DeepSeek V3 هو نموذج مختلط خبير يحتوي على 685B من المعلمات، وهو أحدث إصدار من سلسلة نماذج الدردشة الرائدة لفريق DeepSeek.\n\nيستفيد من نموذج [DeepSeek V3](/deepseek/deepseek-chat-v3) ويظهر أداءً ممتازًا في مجموعة متنوعة من المهام."
},
"deepseek/deepseek-chat-v3.1": {
"description": "DeepSeek-V3.1 هو نموذج استدلال هجين كبير يدعم سياق طويل يصل إلى 128K وتبديل أوضاع فعال، ويحقق أداءً وسرعة ممتازة في استدعاء الأدوات، وتوليد الأكواد، والمهام الاستدلالية المعقدة."
"description": "DeepSeek-V3.1 هو نموذج استدلال هجين طويل السياق من DeepSeek، يدعم أوضاع التفكير وغير التفكير وتكامل الأدوات."
},
"deepseek/deepseek-r1": {
"description": "تم ترقية نموذج DeepSeek R1 إلى إصدار صغير جديد، الإصدار الحالي هو DeepSeek-R1-0528. في التحديث الأخير، حسّن DeepSeek R1 عمق الاستدلال وقدرته بشكل ملحوظ من خلال استغلال موارد حسابية متزايدة وإدخال آليات تحسين خوارزمية بعد التدريب. النموذج يحقق أداءً ممتازًا في تقييمات معيارية متعددة مثل الرياضيات، والبرمجة، والمنطق العام، وأداؤه العام يقترب الآن من النماذج الرائدة مثل O3 وGemini 2.5 Pro."
},
"deepseek/deepseek-r1-0528": {
"description": "DeepSeek-R1 يعزز بشكل كبير قدرة الاستدلال للنموذج حتى مع وجود بيانات تعليمية قليلة جدًا. قبل إخراج الإجابة النهائية، يقوم النموذج أولاً بإخراج سلسلة من التفكير لتحسين دقة الإجابة النهائية."
"description": "DeepSeek R1 0528 هو إصدار محدث من DeepSeek، يركز على المصدر المفتوح وعمق الاستدلال."
},
"deepseek/deepseek-r1-0528:free": {
"description": "DeepSeek-R1 يعزز بشكل كبير قدرة الاستدلال للنموذج حتى مع وجود بيانات تعليمية قليلة جدًا. قبل إخراج الإجابة النهائية، يقوم النموذج أولاً بإخراج سلسلة من التفكير لتحسين دقة الإجابة النهائية."
},
"deepseek/deepseek-r1-distill-llama-70b": {
"description": "DeepSeek-R1-Distill-Llama-70B هو نسخة مكثفة وأكثر كفاءة من نموذج Llama 70B. يحافظ على أداء قوي في مهام توليد النصوص مع تقليل استهلاك الحوسبة لتسهيل النشر والبحث. يتم تشغيله بواسطة Groq باستخدام وحدة معالجة اللغة المخصصة (LPU) لتوفير استدلال سريع وفعال."
"description": "DeepSeek R1 Distill Llama 70B هو نموذج لغوي ضخم مبني على Llama3.3 70B، وقد تم تحسينه باستخدام نتائج DeepSeek R1، ليحقق أداءً تنافسيًا يعادل النماذج الرائدة الكبيرة."
},
"deepseek/deepseek-r1-distill-llama-8b": {
"description": "DeepSeek R1 Distill Llama 8B هو نموذج لغوي كبير مكرر يعتمد على Llama-3.1-8B-Instruct، تم تدريبه باستخدام مخرجات DeepSeek R1."
@@ -1154,6 +1193,9 @@
"deepseek/deepseek-r1:free": {
"description": "DeepSeek-R1 يعزز بشكل كبير من قدرة النموذج على الاستدلال في ظل وجود بيانات محدودة جدًا. قبل تقديم الإجابة النهائية، يقوم النموذج أولاً بإخراج سلسلة من التفكير لتحسين دقة الإجابة النهائية."
},
"deepseek/deepseek-reasoner": {
"description": "DeepSeek-V3 Thinking (reasoner) هو نموذج استدلال تجريبي من DeepSeek، مناسب للمهام الاستدلالية عالية التعقيد."
},
"deepseek/deepseek-v3": {
"description": "نموذج لغة كبير عام سريع مع قدرات استدلال محسنة."
},
@@ -1253,83 +1295,89 @@
"emohaa": {
"description": "Emohaa هو نموذج نفسي، يتمتع بقدرات استشارية متخصصة، يساعد المستخدمين في فهم القضايا العاطفية."
},
"ernie-3.5-128k": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، يغطي كمية هائلة من البيانات باللغة الصينية والإنجليزية، ويتميز بقدرات عامة قوية، تلبي متطلبات معظم حالات الحوار، والإجابة، والتوليد، وتطبيقات المكونات الإضافية؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة."
},
"ernie-3.5-8k": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، يغطي كمية هائلة من البيانات باللغة الصينية والإنجليزية، ويتميز بقدرات عامة قوية، تلبي متطلبات معظم حالات الحوار، والإجابة، والتوليد، وتطبيقات المكونات الإضافية؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة."
},
"ernie-3.5-8k-preview": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، يغطي كمية هائلة من البيانات باللغة الصينية والإنجليزية، ويتميز بقدرات عامة قوية، تلبي متطلبات معظم حالات الحوار، والإجابة، والتوليد، وتطبيقات المكونات الإضافية؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة."
},
"ernie-4.0-8k-latest": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، والذي حقق ترقية شاملة في القدرات مقارنةً بـ ERNIE 3.5، ويستخدم على نطاق واسع في مشاهد المهام المعقدة في مختلف المجالات؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة."
},
"ernie-4.0-8k-preview": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، والذي حقق ترقية شاملة في القدرات مقارنةً بـ ERNIE 3.5، ويستخدم على نطاق واسع في مشاهد المهام المعقدة في مختلف المجالات؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة."
},
"ernie-4.0-turbo-128k": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، والذي يظهر أداءً ممتازًا بشكل شامل، ويستخدم على نطاق واسع في مشاهد المهام المعقدة في مختلف المجالات؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة. مقارنةً بـ ERNIE 4.0، يظهر أداءً أفضل."
},
"ernie-4.0-turbo-8k-latest": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، والذي يظهر أداءً ممتازًا بشكل شامل، ويستخدم على نطاق واسع في مشاهد المهام المعقدة في مختلف المجالات؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة. مقارنةً بـ ERNIE 4.0، يظهر أداءً أفضل."
},
"ernie-4.0-turbo-8k-preview": {
"description": "نموذج اللغة الكبير الرائد الذي طورته بايدو، والذي يظهر أداءً ممتازًا بشكل شامل، ويستخدم على نطاق واسع في مشاهد المهام المعقدة في مختلف المجالات؛ يدعم الاتصال التلقائي بمكونات البحث من بايدو، مما يضمن تحديث معلومات الإجابة. مقارنةً بـ ERNIE 4.0، يظهر أداءً أفضل."
"ernie-4.5-0.3b": {
"description": "ERNIE 4.5 0.3B، نموذج مفتوح المصدر وخفيف الوزن، مناسب للنشر المحلي والمخصص."
},
"ernie-4.5-21b-a3b": {
"description": "ERNIE 4.5 21B A3B هو نموذج خبراء هجين أطلقته Baidu Wenxin، يتمتع بقدرات قوية في الاستدلال ودعم متعدد اللغات."
"description": "ERNIE 4.5 21B A3B، نموذج كبير مفتوح المصدر، يتميز بأداء قوي في مهام الفهم والتوليد."
},
"ernie-4.5-300b-a47b": {
"description": "ERNIE 4.5 300B A47B هو نموذج خبراء هجين فائق الحجم أطلقته Baidu Wenxin، يتميز بقدرات استدلال فائقة."
},
"ernie-4.5-8k-preview": {
"description": "نموذج ونسين 4.5 هو نموذج أساسي جديد متعدد الوسائط تم تطويره ذاتيًا بواسطة بايدو، من خلال نمذجة متعددة الوسائط لتحقيق تحسين متزامن، ويظهر قدرة ممتازة على الفهم متعدد الوسائط؛ يتمتع بقدرات لغوية متقدمة، مع تحسين شامل في الفهم، والتوليد، والمنطق، والذاكرة، مع تحسين كبير في إزالة الأوهام، والاستدلال المنطقي، وقدرات البرمجة."
"description": "ERNIE 4.5 8K Preview، نموذج معاينة بسياق 8K، مخصص لتجربة واختبار قدرات Wenxin 4.5."
},
"ernie-4.5-turbo-128k": {
"description": "تم تعزيز Wenxin 4.5 Turbo بشكل ملحوظ في مجالات مثل تقليل الهلوسة، والاستدلال المنطقي، وقدرات البرمجة. مقارنةً بـ Wenxin 4.5، فهو أسرع وأقل تكلفة. تم تحسين قدرات النموذج بشكل شامل لتلبية احتياجات معالجة المحادثات الطويلة متعددة الجولات، ومهام فهم الأسئلة والأجوبة للنصوص الطويلة."
"description": "ERNIE 4.5 Turbo 128K، نموذج عام عالي الأداء، يدعم البحث المعزز واستدعاء الأدوات، مناسب لمهام مثل الأسئلة والأجوبة، البرمجة، والوكلاء الذكيين."
},
"ernie-4.5-turbo-128k-preview": {
"description": "ERNIE 4.5 Turbo 128K Preview، نسخة معاينة توفر تجربة مماثلة للنسخة الرسمية، مناسبة للاختبار والتكامل المرحلي."
},
"ernie-4.5-turbo-32k": {
"description": "تم تعزيز Wenxin 4.5 Turbo بشكل ملحوظ في مجالات مثل تقليل الهلوسة، والاستدلال المنطقي، وقدرات البرمجة. مقارنةً بـ Wenxin 4.5، فهو أسرع وأقل تكلفة. تم تحسين قدرات الإبداع النصي، والأسئلة والأجوبة بشكل ملحوظ. زادت مدة الإخراج وتأخير الجمل الكاملة مقارنةً بـ ERNIE 4.5."
"description": "ERNIE 4.5 Turbo 32K، نسخة بسياق متوسط إلى طويل، مناسبة للأسئلة والأجوبة، استرجاع المعرفة، والحوار متعدد الجولات."
},
"ernie-4.5-turbo-latest": {
"description": "ERNIE 4.5 Turbo Latest، نسخة محسّنة شاملة، مناسبة كنموذج رئيسي عام في بيئات الإنتاج."
},
"ernie-4.5-turbo-vl": {
"description": "ERNIE 4.5 Turbo VL، نموذج متعدد الوسائط ناضج، مناسب لمهام فهم الصور والنصوص في بيئات الإنتاج."
},
"ernie-4.5-turbo-vl-32k": {
"description": "إصدار جديد من نموذج Wenxin Yiyan، مع تحسينات ملحوظة في فهم الصور، والإبداع، والترجمة، والبرمجة، ويدعم لأول مرة طول سياق يصل إلى 32K، مع تقليل ملحوظ في تأخير أول توكن."
"description": "ERNIE 4.5 Turbo VL 32K، نسخة متعددة الوسائط بسياق متوسط إلى طويل، مناسبة لفهم مشترك للوثائق الطويلة والصور."
},
"ernie-4.5-turbo-vl-32k-preview": {
"description": "ERNIE 4.5 Turbo VL 32K Preview، نسخة معاينة متعددة الوسائط بسياق 32K، لتقييم قدرات الفهم البصري في السياقات الطويلة."
},
"ernie-4.5-turbo-vl-latest": {
"description": "ERNIE 4.5 Turbo VL Latest، أحدث نسخة متعددة الوسائط، تقدم أداءً محسّناً في فهم الصور والنصوص والاستدلال."
},
"ernie-4.5-turbo-vl-preview": {
"description": "ERNIE 4.5 Turbo VL Preview، نموذج معاينة متعدد الوسائط، يدعم فهم وتوليد الصور والنصوص، مناسب لتجربة الأسئلة البصرية وفهم المحتوى."
},
"ernie-4.5-vl-28b-a3b": {
"description": "ERNIE 4.5 VL 28B A3B، نموذج متعدد الوسائط مفتوح المصدر، يدعم مهام الفهم والاستدلال بين الصور والنصوص."
},
"ernie-5.0-thinking-preview": {
"description": "Wenxin 5.0 Thinking Preview، نموذج رائد شامل متعدد الوسائط، يدعم النصوص، الصور، الصوت، والفيديو، مع قدرات متقدمة مناسبة للأسئلة المعقدة، الإبداع، والوكلاء الذكيين."
},
"ernie-char-8k": {
"description": "نموذج اللغة الكبير المخصص الذي طورته بايدو، مناسب لتطبيقات مثل NPC في الألعاب، محادثات خدمة العملاء، وأدوار الحوار، حيث يتميز بأسلوب شخصيات واضح ومتسق، وقدرة قوية على اتباع التعليمات، وأداء استدلال ممتاز."
"description": "ERNIE Character 8K، نموذج حواري بشخصيات، مناسب لبناء شخصيات IP وحوارات طويلة الأمد."
},
"ernie-char-fiction-8k": {
"description": "نموذج اللغة الكبير المخصص الذي طورته بايدو، مناسب لتطبيقات مثل NPC في الألعاب، محادثات خدمة العملاء، وأدوار الحوار، حيث يتميز بأسلوب شخصيات واضح ومتسق، وقدرة قوية على اتباع التعليمات، وأداء استدلال ممتاز."
"description": "ERNIE Character Fiction 8K، نموذج شخصيات مخصص لكتابة الروايات والقصص، مناسب لتوليد نصوص طويلة."
},
"ernie-char-fiction-8k-preview": {
"description": "ERNIE Character Fiction 8K Preview، نسخة معاينة لنموذج الشخصيات والقصص، مخصصة لتجربة الوظائف والاختبار."
},
"ernie-irag-edit": {
"description": "نموذج تحرير الصور ERNIE iRAG المطور ذاتيًا من Baidu يدعم عمليات مثل المسح (إزالة الكائنات)، إعادة الرسم (إعادة رسم الكائنات)، والتنوع (توليد متغيرات) بناءً على الصور."
"description": "ERNIE iRAG Edit، نموذج تحرير الصور يدعم المسح، إعادة الرسم، وتوليد المتغيرات."
},
"ernie-lite-8k": {
"description": "ERNIE Lite هو نموذج اللغة الكبير الخفيف الذي طورته بايدو، يجمع بين أداء النموذج الممتاز وأداء الاستدلال، مناسب للاستخدام مع بطاقات تسريع الذكاء الاصطناعي ذات القدرة الحاسوبية المنخفضة."
"description": "ERNIE Lite 8K، نموذج عام خفيف الوزن، مناسب للأسئلة اليومية وتوليد المحتوى بتكلفة منخفضة."
},
"ernie-lite-pro-128k": {
"description": "نموذج اللغة الكبير الخفيف الذي طورته بايدو، يجمع بين أداء النموذج الممتاز وأداء الاستدلال، ويظهر أداءً أفضل من ERNIE Lite، مناسب للاستخدام مع بطاقات تسريع الذكاء الاصطناعي ذات القدرة الحاسوبية المنخفضة."
"description": "ERNIE Lite Pro 128K، نموذج خفيف عالي الأداء، مناسب للمهام الحساسة من حيث التأخير والتكلفة."
},
"ernie-novel-8k": {
"description": "نموذج اللغة الكبير العام الذي طورته بايدو، يظهر مزايا واضحة في القدرة على كتابة روايات، ويمكن استخدامه أيضًا في مشاهد مثل المسرحيات القصيرة والأفلام."
"description": "ERNIE Novel 8K، نموذج مخصص لكتابة الروايات الطويلة وسيناريوهات IP، بارع في السرد متعدد الشخصيات والخطوط."
},
"ernie-speed-128k": {
"description": "نموذج اللغة الكبير عالي الأداء الذي طورته بايدو، والذي تم إصداره في عام 2024، يتمتع بقدرات عامة ممتازة، مناسب كنموذج أساسي للتعديل، مما يساعد على معالجة مشكلات المشاهد المحددة بشكل أفضل، ويظهر أداءً ممتازًا في الاستدلال."
"description": "ERNIE Speed 128K، نموذج كبير بدون تكلفة إدخال/إخراج، مناسب لفهم النصوص الطويلة والتجارب واسعة النطاق."
},
"ernie-speed-8k": {
"description": "ERNIE Speed 8K، نموذج مجاني وسريع، مناسب للحوار اليومي والمهام النصية الخفيفة."
},
"ernie-speed-pro-128k": {
"description": "نموذج اللغة الكبير عالي الأداء الذي طورته بايدو، والذي تم إصداره في عام 2024، يتمتع بقدرات عامة ممتازة، ويظهر أداءً أفضل من ERNIE Speed، مناسب كنموذج أساسي للتعديل، مما يساعد على معالجة مشكلات المشاهد المحددة بشكل أفضل، ويظهر أداءً ممتازًا في الاستدلال."
"description": "ERNIE Speed Pro 128K، نموذج عالي التوافر وكفاءة التكلفة، مناسب للخدمات عبر الإنترنت واسعة النطاق وتطبيقات المؤسسات."
},
"ernie-tiny-8k": {
"description": "ERNIE Tiny هو نموذج اللغة الكبير عالي الأداء الذي طورته بايدو، وتكاليف النشر والتعديل هي الأدنى بين نماذج سلسلة Wenxin."
},
"ernie-x1-32k": {
"description": "يمتلك قدرة أقوى على الفهم والتخطيط والتفكير والتطور. كنموذج تفكير عميق شامل، يتميز Wenxin X1 بالدقة والإبداع والبلاغة، ويظهر أداءً متميزًا في مجالات مثل الأسئلة والأجوبة باللغة الصينية، والإبداع الأدبي، وكتابة النصوص، والحوار اليومي، والاستدلال المنطقي، والحسابات المعقدة، واستخدام الأدوات."
},
"ernie-x1-32k-preview": {
"description": "نموذج Ernie X1 الكبير يتمتع بقدرات أقوى في الفهم، التخطيط، التفكير النقدي، والتطور. كنموذج تفكير عميق أكثر شمولاً، يجمع Ernie X1 بين الدقة، الإبداع، والبلاغة، ويتميز بشكل خاص في أسئلة المعرفة باللغة الصينية، الإبداع الأدبي، كتابة النصوص، المحادثات اليومية، الاستدلال المنطقي، الحسابات المعقدة، واستدعاء الأدوات."
"description": "ERNIE Tiny 8K، نموذج فائق الخفة، مناسب للأسئلة البسيطة، التصنيف، وسيناريوهات الاستدلال منخفضة التكلفة."
},
"ernie-x1-turbo-32k": {
"description": "يتميز هذا النموذج بأداء أفضل مقارنةً بـ ERNIE-X1-32K."
"description": "ERNIE X1 Turbo 32K، نموذج تفكير سريع بسياق طويل 32K، مناسب للاستدلال المعقد والحوار متعدد الجولات."
},
"ernie-x1.1-preview": {
"description": "ERNIE X1.1 Preview، نسخة معاينة من نموذج التفكير ERNIE X1.1، مناسبة لاختبار القدرات والتحقق منها."
},
"fal-ai/bytedance/seedream/v4": {
"description": "نموذج توليد الصور Seedream 4.0 من فريق Seed في ByteDance، يدعم إدخال النص والصورة، ويوفر تجربة توليد صور عالية الجودة وقابلة للتحكم بدرجة كبيرة. يعتمد على أوامر نصية لتوليد الصور."
@@ -1389,7 +1437,7 @@
"description": "FLUX.1 [schnell] هو النموذج المفتوح المصدر الأكثر تقدمًا حاليًا في فئة النماذج قليلة الخطوات، متفوقًا على المنافسين وحتى على نماذج غير مكررة قوية مثل Midjourney v6.0 وDALL·E 3 (HD). تم ضبط النموذج خصيصًا للحفاظ على تنوع المخرجات الكامل من مرحلة ما قبل التدريب، ويحقق تحسينات ملحوظة في جودة الصورة، الالتزام بالتعليمات، التغيرات في الحجم/النسبة، معالجة الخطوط وتنوع المخرجات مقارنة بأحدث النماذج في السوق، مما يوفر تجربة توليد صور إبداعية أكثر ثراءً وتنوعًا للمستخدمين."
},
"flux.1-schnell": {
"description": "محول تدفق مصحح يحتوي على 12 مليار معلمة، قادر على توليد الصور بناءً على الوصف النصي."
"description": "FLUX.1-schnell، نموذج توليد صور عالي الأداء، مناسب لإنشاء صور متعددة الأنماط بسرعة."
},
"gemini-1.0-pro-001": {
"description": "Gemini 1.0 Pro 001 (تعديل) يوفر أداءً مستقرًا وقابلًا للتعديل، وهو الخيار المثالي لحلول المهام المعقدة."
@@ -1454,9 +1502,6 @@
"gemini-2.0-flash-lite-001": {
"description": "نموذج جمنّي 2.0 فلاش هو نسخة معدلة، تم تحسينها لتحقيق الكفاءة من حيث التكلفة والحد من التأخير."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "نموذج معاينة Gemini 2.0 Flash، يدعم توليد الصور"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash هو نموذج Google الأكثر فعالية من حيث التكلفة، ويوفر وظائف شاملة."
},
@@ -1484,9 +1529,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "معاينة فلاش جمنّي 2.5 هي النموذج الأكثر كفاءة من جوجل، حيث تقدم مجموعة شاملة من الميزات."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview هو نموذج Google الأكثر فعالية من حيث التكلفة، يقدم وظائف شاملة."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "إصدار معاينة (25 سبتمبر 2025) من Gemini 2.5 Flash"
},
@@ -1502,6 +1544,15 @@
"gemini-2.5-pro-preview-06-05": {
"description": "جيميني 2.5 برو بريڤيو هو أحدث نموذج تفكيري من جوجل، قادر على استنتاج حلول للمشكلات المعقدة في مجالات البرمجة، الرياضيات، والعلوم والتكنولوجيا والهندسة والرياضيات (STEM)، بالإضافة إلى تحليل مجموعات بيانات كبيرة، قواعد بيانات البرمجة، والوثائق باستخدام سياق طويل."
},
"gemini-3-pro-image-preview": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد صور من Google، يدعم أيضًا المحادثات متعددة الوسائط."
},
"gemini-3-pro-image-preview:image": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد صور من Google، يدعم أيضًا المحادثات متعددة الوسائط."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro هو أفضل نموذج لفهم الوسائط المتعددة عالميًا، وأقوى نموذج ذكي من Google حتى الآن، يوفر تأثيرات بصرية غنية وتفاعلية عميقة، وكل ذلك مبني على قدرات استدلال متقدمة."
},
"gemini-flash-latest": {
"description": "أحدث إصدار من Gemini Flash"
},
@@ -1538,6 +1589,9 @@
"glm-4-0520": {
"description": "GLM-4-0520 هو أحدث إصدار من النموذج، مصمم للمهام المعقدة والمتنوعة، ويظهر أداءً ممتازًا."
},
"glm-4-32b-0414": {
"description": "GLM-4 32B 0414، إصدار من سلسلة GLM للنماذج العامة الكبيرة، يدعم توليد النصوص وفهمها في مهام متعددة."
},
"glm-4-9b-chat": {
"description": "يُظهر GLM-4-9B-Chat أداءً عاليًا في مجالات الدلالة، والرياضيات، والاستدلال، والبرمجة، والمعرفة. كما يدعم تصفح الويب، وتنفيذ الأكواد، واستدعاء الأدوات المخصصة، والاستدلال على النصوص الطويلة. يدعم 26 لغة من بينها اليابانية والكورية والألمانية."
},
@@ -1622,8 +1676,11 @@
"glm-zero-preview": {
"description": "يمتلك GLM-Zero-Preview قدرة قوية على الاستدلال المعقد، ويظهر أداءً ممتازًا في مجالات الاستدلال المنطقي، والرياضيات، والبرمجة."
},
"global.anthropic.claude-opus-4-5-20251101-v1:0": {
"description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الفائق والأداء القابل للتوسع، مما يجعله مناسبًا للمهام المعقدة التي تتطلب أعلى مستويات الجودة في الاستجابة والقدرة على الاستدلال."
},
"google/gemini-2.0-flash": {
"description": "Gemini 2.0 Flash يقدم ميزات الجيل التالي وتحسينات تشمل سرعة فائقة، استخدام أدوات مدمجة، توليد متعدد الوسائط، ونافذة سياق تصل إلى مليون رمز."
"description": "Gemini 2.0 Flash هو نموذج استدلال عالي الأداء من Google، مناسب للمهام متعددة الوسائط الممتدة."
},
"google/gemini-2.0-flash-001": {
"description": "Gemini 2.0 Flash يقدم ميزات وتحسينات من الجيل التالي، بما في ذلك سرعة فائقة، واستخدام أدوات أصلية، وتوليد متعدد الوسائط، ونافذة سياق تصل إلى 1M توكن."
@@ -1634,14 +1691,23 @@
"google/gemini-2.0-flash-lite": {
"description": "Gemini 2.0 Flash Lite يقدم ميزات الجيل التالي وتحسينات تشمل سرعة فائقة، استخدام أدوات مدمجة، توليد متعدد الوسائط، ونافذة سياق تصل إلى مليون رمز."
},
"google/gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash Lite هو إصدار خفيف من عائلة Gemini، لا يفعل وضع التفكير افتراضيًا لتحسين الأداء من حيث التأخير والتكلفة، ويمكن تفعيله عبر المعلمات."
},
"google/gemini-2.5-flash": {
"description": "Gemini 2.5 Flash هو نموذج تفكيري يقدم قدرات شاملة ممتازة. مصمم لتحقيق توازن بين السعر والأداء، ويدعم متعدد الوسائط ونافذة سياق تصل إلى مليون رمز."
"description": "سلسلة Gemini 2.5 Flash (Lite/Pro/Flash) هي نماذج استدلال من Google تتراوح من تأخير منخفض إلى أداء عالٍ."
},
"google/gemini-2.5-flash-image": {
"description": "Gemini 2.5 Flash Image (Nano Banana) هو نموذج توليد صور من Google، يدعم أيضًا المحادثات متعددة الوسائط."
},
"google/gemini-2.5-flash-image-free": {
"description": "الإصدار المجاني من Gemini 2.5 Flash Image، يدعم توليد الوسائط المتعددة بحدود استخدام معينة."
},
"google/gemini-2.5-flash-image-preview": {
"description": "نموذج تجريبي Gemini 2.5 Flash، يدعم توليد الصور."
},
"google/gemini-2.5-flash-lite": {
"description": "Gemini 2.5 Flash-Lite هو نموذج متوازن ومنخفض التأخير مع ميزانية تفكير قابلة للتكوين واتصال بالأدوات (مثل البحث في Google والتنفيذ البرمجي). يدعم مدخلات متعددة الوسائط ويوفر نافذة سياق تصل إلى مليون رمز."
"description": "Gemini 2.5 Flash Lite هو إصدار خفيف من Gemini 2.5، محسن من حيث التأخير والتكلفة، مناسب للسيناريوهات ذات الإنتاجية العالية."
},
"google/gemini-2.5-flash-preview": {
"description": "Gemini 2.5 Flash هو النموذج الرائد الأكثر تقدمًا من Google، مصمم للاستدلال المتقدم، الترميز، المهام الرياضية والعلمية. يحتوي على قدرة \"التفكير\" المدمجة، مما يمكّنه من تقديم استجابات بدقة أعلى ومعالجة سياقات أكثر تفصيلاً.\n\nملاحظة: يحتوي هذا النموذج على نوعين: التفكير وغير التفكير. تختلف تسعير الإخراج بشكل ملحوظ بناءً على ما إذا كانت قدرة التفكير مفعلة. إذا اخترت النوع القياسي (بدون لاحقة \" :thinking \")، سيتجنب النموذج بشكل صريح توليد رموز التفكير.\n\nلاستغلال قدرة التفكير واستقبال رموز التفكير، يجب عليك اختيار النوع \" :thinking \"، مما سيؤدي إلى تسعير إخراج تفكير أعلى.\n\nبالإضافة إلى ذلك، يمكن تكوين Gemini 2.5 Flash من خلال معلمة \"الحد الأقصى لعدد رموز الاستدلال\"، كما هو موضح في الوثائق (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)."
@@ -1650,11 +1716,26 @@
"description": "Gemini 2.5 Flash هو النموذج الرائد الأكثر تقدمًا من Google، مصمم للاستدلال المتقدم، الترميز، المهام الرياضية والعلمية. يحتوي على قدرة \"التفكير\" المدمجة، مما يمكّنه من تقديم استجابات بدقة أعلى ومعالجة سياقات أكثر تفصيلاً.\n\nملاحظة: يحتوي هذا النموذج على نوعين: التفكير وغير التفكير. تختلف تسعير الإخراج بشكل ملحوظ بناءً على ما إذا كانت قدرة التفكير مفعلة. إذا اخترت النوع القياسي (بدون لاحقة \" :thinking \")، سيتجنب النموذج بشكل صريح توليد رموز التفكير.\n\nلاستغلال قدرة التفكير واستقبال رموز التفكير، يجب عليك اختيار النوع \" :thinking \"، مما سيؤدي إلى تسعير إخراج تفكير أعلى.\n\nبالإضافة إلى ذلك، يمكن تكوين Gemini 2.5 Flash من خلال معلمة \"الحد الأقصى لعدد رموز الاستدلال\"، كما هو موضح في الوثائق (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)."
},
"google/gemini-2.5-pro": {
"description": "Gemini 2.5 Pro هو نموذج Gemini المتقدم للاستدلال، قادر على حل المشكلات المعقدة. يحتوي على نافذة سياق تصل إلى مليوني رمز، ويدعم مدخلات متعددة الوسائط تشمل النصوص، الصور، الصوت، الفيديو، ومستندات PDF."
"description": "Gemini 2.5 Pro هو نموذج استدلال رائد من Google، يدعم السياق الطويل والمهام المعقدة."
},
"google/gemini-2.5-pro-free": {
"description": "الإصدار المجاني من Gemini 2.5 Pro، يدعم سياق طويل متعدد الوسائط بحدود استخدام معينة، مناسب للتجربة وسير العمل الخفيف."
},
"google/gemini-2.5-pro-preview": {
"description": "معاينة Gemini 2.5 Pro هي أحدث نموذج تفكيري من Google، قادر على استنتاج المشكلات المعقدة في مجالات البرمجة والرياضيات والعلوم والتكنولوجيا والهندسة والرياضيات (STEM)، بالإضافة إلى استخدام سياق طويل لتحليل مجموعات البيانات الكبيرة، وقواعد الشيفرة، والوثائق."
},
"google/gemini-3-pro-image-preview": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google، ويدعم المحادثات متعددة الوسائط."
},
"google/gemini-3-pro-image-preview-free": {
"description": "الإصدار المجاني من Gemini 3 Pro Image، يدعم توليد الوسائط المتعددة بحدود استخدام معينة."
},
"google/gemini-3-pro-preview": {
"description": "Gemini 3 Pro هو الجيل التالي من نماذج الاستدلال متعددة الوسائط من سلسلة Gemini، قادر على فهم النصوص، الصوت، الصور، الفيديو وغيرها، ويعالج المهام المعقدة ومستودعات الشيفرة الكبيرة."
},
"google/gemini-3-pro-preview-free": {
"description": "الإصدار المجاني من Gemini 3 Pro Preview، يتمتع بنفس قدرات الفهم والاستدلال متعددة الوسائط مثل الإصدار القياسي، لكنه يخضع لقيود الاستخدام المجاني ومعدل الاستجابة، مما يجعله مناسبًا للتجربة والاستخدام منخفض التكرار."
},
"google/gemini-embedding-001": {
"description": "نموذج تضمين متقدم يقدم أداءً ممتازًا في مهام اللغة الإنجليزية، متعددة اللغات، والبرمجة."
},
@@ -1826,6 +1907,18 @@
"gpt-5-pro": {
"description": "يستخدم GPT-5 pro قدرة حسابية أكبر للتفكير بشكل أعمق، ويواصل تقديم إجابات أفضل باستمرار."
},
"gpt-5.1": {
"description": "GPT-5.1 — نموذج رائد مُحسَّن لمهام البرمجة والوكلاء، يدعم قوة استدلال قابلة للتخصيص وسياقًا أطول."
},
"gpt-5.1-chat-latest": {
"description": "GPT-5.1 Chat: إصدار GPT-5.1 مخصص لـ ChatGPT، مثالي لسيناريوهات المحادثة."
},
"gpt-5.1-codex": {
"description": "GPT-5.1 Codex: إصدار من GPT-5.1 مُحسَّن لمهام البرمجة القائمة على الوكلاء، يمكن استخدامه في واجهة Responses API لتدفقات عمل أكثر تعقيدًا في البرمجة والوكلاء."
},
"gpt-5.1-codex-mini": {
"description": "GPT-5.1 Codex mini: إصدار مصغر ومنخفض التكلفة من Codex، مُحسَّن لمهام البرمجة القائمة على الوكلاء."
},
"gpt-audio": {
"description": "GPT Audio هو نموذج دردشة عام موجه لإدخال وإخراج الصوت، ويدعم استخدام الصوت في واجهة برمجة تطبيقات Chat Completions."
},
@@ -1868,6 +1961,12 @@
"grok-4-0709": {
"description": "Grok 4 من xAI، يتمتع بقدرات استدلال قوية."
},
"grok-4-1-fast-non-reasoning": {
"description": "نموذج متعدد الوسائط متقدم، مُحسَّن خصيصًا لاستدعاء أدوات الوكلاء عالية الأداء."
},
"grok-4-1-fast-reasoning": {
"description": "نموذج متعدد الوسائط متقدم، مُحسَّن خصيصًا لاستدعاء أدوات الوكلاء عالية الأداء."
},
"grok-4-fast-non-reasoning": {
"description": "نحن سعداء بإصدار Grok 4 Fast، وهو أحدث تقدم لدينا في نماذج الاستدلال ذات التكلفة الفعالة."
},
@@ -2001,32 +2100,47 @@
"description": "سلسلة نماذج Imagen لتحويل النص إلى صورة من الجيل الرابع"
},
"imagen-4.0-generate-preview-06-06": {
"description": "سلسلة نموذج Imagen للجيل الرابع لتحويل النص إلى صورة"
"description": "سلسلة نماذج Imagen من الجيل الرابع لتحويل النص إلى صورة"
},
"imagen-4.0-ultra-generate-001": {
"description": "سلسلة نماذج Imagen لتحويل النص إلى صورة من الجيل الرابع — إصدار Ultra"
},
"imagen-4.0-ultra-generate-preview-06-06": {
"description": "نسخة ألترا من سلسلة نموذج Imagen للجيل الرابع لتحويل النص إلى صورة"
"description": "النسخة Ultra من سلسلة نماذج Imagen من الجيل الرابع لتحويل النص إلى صورة"
},
"inception/mercury-coder-small": {
"description": "Mercury Coder Small هو الخيار المثالي لمهام توليد الكود، وتصحيح الأخطاء، وإعادة الهيكلة، مع أدنى تأخير."
},
"inclusionAI/Ling-1T": {
"description": "Ling-1T هو أول نموذج رائد من سلسلة \"Ling 2.0\" غير المعتمد على التفكير، يحتوي على تريليون معلمة إجمالية و50 مليار معلمة نشطة لكل رمز. تم بناؤه على بنية Ling 2.0، ويهدف إلى تجاوز حدود الاستدلال الفعال والإدراك القابل للتوسع. تم تدريب Ling-1T-base على أكثر من 200 تريليون رمز عالي الجودة وغني بالاستدلال."
},
"inclusionAI/Ling-flash-2.0": {
"description": "Ling-flash-2.0 هو النموذج الثالث في سلسلة بنية Ling 2.0 التي أصدرها فريق Bailing في مجموعة Ant. هو نموذج خبراء مختلط (MoE) بحجم إجمالي 100 مليار معلمة، لكنه ينشط فقط 6.1 مليار معلمة لكل رمز (غير متضمنة تمثيلات الكلمات 4.8 مليار). كنموذج خفيف الوزن، أظهر Ling-flash-2.0 أداءً يضاهي أو يتفوق على نماذج كثيفة بحجم 40 مليار معلمة ونماذج MoE أكبر في عدة تقييمات موثوقة. يهدف النموذج إلى استكشاف مسارات عالية الكفاءة من خلال تصميم معماري واستراتيجيات تدريب متقدمة، في ظل القناعة بأن \"النموذج الكبير يعني معلمات كثيرة\"."
},
"inclusionAI/Ling-mini-2.0": {
"description": "Ling-mini-2.0 هو نموذج لغة كبير صغير الحجم وعالي الأداء مبني على بنية MoE. يحتوي على 16 مليار معلمة إجمالية، لكنه ينشط فقط 1.4 مليار معلمة لكل رمز (غير متضمنة التضمين 789 مليون)، مما يحقق سرعة توليد عالية جدًا. بفضل تصميم MoE الفعال وبيانات تدريب ضخمة وعالية الجودة، رغم تنشيط معلمات قليلة، يظهر Ling-mini-2.0 أداءً متقدمًا في المهام اللاحقة يضاهي نماذج LLM كثيفة أقل من 10 مليارات معلمة ونماذج MoE أكبر."
},
"inclusionAI/Ring-1T": {
"description": "Ring-1T هو نموذج تفكير مفتوح المصدر بحجم تريليون معلمة، أطلقه فريق Bailing. يعتمد على بنية Ling 2.0 ونموذج Ling-1T-base، ويحتوي على تريليون معلمة إجمالية و50 مليار معلمة نشطة، ويدعم نافذة سياق تصل إلى 128 ألف. تم تحسينه من خلال تعلم التعزيز القابل للتحقق على نطاق واسع."
},
"inclusionAI/Ring-flash-2.0": {
"description": "Ring-flash-2.0 هو نموذج تفكير عالي الأداء محسّن بعمق بناءً على Ling-flash-2.0-base. يستخدم بنية خبراء مختلط (MoE) بحجم إجمالي 100 مليار معلمة، لكنه ينشط فقط 6.1 مليار معلمة في كل استدلال. يحل النموذج من خلال خوارزمية icepop المبتكرة مشكلة عدم استقرار نماذج MoE الكبيرة في تدريب التعلم المعزز (RL)، مما يسمح بتحسين مستمر لقدرات الاستدلال المعقدة خلال التدريب طويل الأمد. حقق Ring-flash-2.0 تقدمًا ملحوظًا في مسابقات الرياضيات، توليد الشيفرة، والاستدلال المنطقي، متفوقًا على أفضل النماذج الكثيفة التي تقل عن 40 مليار معلمة، وقريبًا من نماذج MoE مفتوحة المصدر الأكبر ونماذج التفكير عالية الأداء المغلقة المصدر. رغم تركيزه على الاستدلال المعقد، يظهر أداءً ممتازًا في مهام الكتابة الإبداعية. بالإضافة إلى ذلك، وبفضل تصميمه المعماري الفعال، يوفر Ring-flash-2.0 أداءً قويًا مع استدلال عالي السرعة، مما يقلل بشكل كبير من تكلفة نشر نماذج التفكير في بيئات ذات حمل عالٍ."
},
"inclusionai/ling-1t": {
"description": "Ling-1T هو نموذج MoE بسعة 1 تريليون من inclusionAI، محسن للمهام الاستدلالية المكثفة والسياقات الواسعة."
},
"inclusionai/ling-flash-2.0": {
"description": "Ling-flash-2.0 هو نموذج MoE من inclusionAI، محسن من حيث الكفاءة وأداء الاستدلال، مناسب للمهام المتوسطة إلى الكبيرة."
},
"inclusionai/ling-mini-2.0": {
"description": "Ling-mini-2.0 هو نموذج MoE خفيف الوزن من inclusionAI، يقلل التكاليف بشكل كبير مع الحفاظ على قدرات الاستدلال."
},
"inclusionai/ming-flash-omini-preview": {
"description": "Ming-flash-omni Preview هو نموذج متعدد الوسائط من inclusionAI، يدعم إدخال الصوت، الصور والفيديو، مع تحسينات في عرض الصور والتعرف على الصوت."
},
"inclusionai/ring-1t": {
"description": "Ring-1T هو نموذج MoE بسعة تريليون من inclusionAI، مصمم للمهام الاستدلالية واسعة النطاق والبحثية."
},
"inclusionai/ring-flash-2.0": {
"description": "Ring-flash-2.0 هو إصدار من نموذج Ring من inclusionAI موجه لسيناريوهات الإنتاجية العالية، يركز على السرعة وكفاءة التكلفة."
},
"inclusionai/ring-mini-2.0": {
"description": "Ring-mini-2.0 هو إصدار خفيف الوزن عالي الإنتاجية من نموذج MoE من inclusionAI، مخصص لسيناريوهات التوازي العالي."
},
"internlm/internlm2_5-7b-chat": {
"description": "InternLM2.5 يوفر حلول حوار ذكية في عدة سيناريوهات."
},
@@ -2036,14 +2150,26 @@
"internlm3-latest": {
"description": "سلسلة نماذجنا الأحدث، تتمتع بأداء استدلال ممتاز، تتصدر نماذج المصدر المفتوح من نفس الفئة. تشير بشكل افتراضي إلى أحدث نماذج سلسلة InternLM3 التي تم إصدارها."
},
"internvl2.5-38b-mpo": {
"description": "InternVL2.5 38B MPO، نموذج ما قبل التدريب متعدد الوسائط، يدعم مهام الاستدلال المعقدة بين الصور والنصوص."
},
"internvl2.5-latest": {
"description": "نحن لا نزال ندعم إصدار InternVL2.5، الذي يتمتع بأداء ممتاز ومستقر. يشير بشكل افتراضي إلى أحدث نموذج من سلسلة InternVL2.5، الحالي هو internvl2.5-78b."
},
"internvl3-14b": {
"description": "InternVL3 14B، نموذج متعدد الوسائط متوسط الحجم، يوازن بين الأداء والتكلفة."
},
"internvl3-1b": {
"description": "InternVL3 1B، نموذج متعدد الوسائط خفيف الوزن، مناسب للنشر في البيئات ذات الموارد المحدودة."
},
"internvl3-38b": {
"description": "InternVL3 38B، نموذج مفتوح المصدر كبير متعدد الوسائط، مناسب لمهام فهم الصور والنصوص عالية الدقة."
},
"internvl3-latest": {
"description": "أحدث نموذج متعدد الوسائط تم إصداره، يتمتع بقدرات فهم أقوى للنصوص والصور، وفهم الصور على المدى الطويل، وأدائه يتساوى مع النماذج المغلقة الرائدة. يشير بشكل افتراضي إلى أحدث نموذج من سلسلة InternVL، الحالي هو internvl3-78b."
},
"irag-1.0": {
"description": "نموذج iRAG (استرجاع معزز بالصور) المطور ذاتيًا من Baidu، يجمع بين موارد صور بحث Baidu الضخمة وقدرات النموذج الأساسي القوية لتوليد صور فائقة الواقعية، متفوقًا بشكل كبير على أنظمة توليد الصور النصية الأصلية، مع إزالة الطابع الاصطناعي وتقليل التكلفة. يتميز iRAG بعدم وجود هلوسة، واقعية فائقة، وسرعة في الحصول على النتائج."
"description": "ERNIE iRAG، نموذج توليد معزز باسترجاع الصور، يدعم البحث بالصور، استرجاع الصور والنصوص، وتوليد المحتوى."
},
"jamba-large": {
"description": "أقوى وأحدث نموذج لدينا، مصمم لمعالجة المهام المعقدة على مستوى المؤسسات، ويتميز بأداء استثنائي."
@@ -2064,7 +2190,13 @@
"description": "نموذج kimi-k2-0905-preview يدعم طول سياق 256k، يتمتع بقدرات ترميز وكيل أقوى، وجمالية وعملية أفضل في الشيفرة الأمامية، وفهم سياق محسن."
},
"kimi-k2-instruct": {
"description": "Kimi K2 Instruct هو نموذج لغة كبير أطلقته Moonshot AI، يتمتع بقدرة فائقة على معالجة السياقات الطويلة."
"description": "Kimi K2 Instruct، نموذج الاستدلال الرسمي من Kimi، يدعم السياق الطويل، البرمجة، الأسئلة والأجوبة، وغيرها من السيناريوهات."
},
"kimi-k2-thinking": {
"description": "نموذج kimi-k2-thinking من تطوير Moonshot AI، يتمتع بقدرات عامة في التفكير والاستدلال، ويتقن الاستدلال العميق ويمكنه استخدام الأدوات عبر خطوات متعددة لحل مختلف المشكلات المعقدة."
},
"kimi-k2-thinking-turbo": {
"description": "الإصدار السريع من نموذج التفكير طويل المدى K2، يدعم سياق 256k، بارع في الاستدلال العميق، وسرعة إخراج تصل إلى 60-100 رمز في الثانية."
},
"kimi-k2-turbo-preview": {
"description": "kimi-k2 هو نموذج أساسي بمعمارية MoE يتمتع بقدرات قوية للغاية في البرمجة وقدرات الوكيل (Agent)، بإجمالي معلمات يبلغ 1 تريليون والمعلمات المُفعَّلة 32 مليار. في اختبارات الأداء المعيارية للفئات الرئيسية مثل الاستدلال المعرفي العام والبرمجة والرياضيات والوكلاء (Agent)، تفوق أداء نموذج K2 على النماذج المفتوحة المصدر السائدة الأخرى."
@@ -2078,6 +2210,9 @@
"kimi-thinking-preview": {
"description": "نموذج kimi-thinking-preview هو نموذج تفكير متعدد الوسائط يتمتع بقدرات استدلال متعددة الوسائط وعامة، مقدم من الجانب المظلم للقمر، يتقن الاستدلال العميق ويساعد في حل المزيد من المسائل الصعبة."
},
"kuaishou/kat-coder-pro-v1": {
"description": "KAT-Coder-Pro-V1 (مجاني لفترة محدودة) يركز على فهم الشيفرة والبرمجة التلقائية، مخصص لمهام البرمجة الفعالة."
},
"learnlm-1.5-pro-experimental": {
"description": "LearnLM هو نموذج لغوي تجريبي محدد المهام، تم تدريبه ليتماشى مع مبادئ علوم التعلم، يمكنه اتباع التعليمات النظامية في سيناريوهات التعليم والتعلم، ويعمل كمدرب خبير."
},
@@ -2174,6 +2309,9 @@
"megrez-3b-instruct": {
"description": "Megrez 3B Instruct هو نموذج صغير الحجم وعالي الكفاءة أطلقته شركة Wuwen Xinqiong."
},
"meituan/longcat-flash-chat": {
"description": "نموذج أساسي غير تأملي مفتوح المصدر من Meituan، مُحسَّن للتفاعل الحواري ومهام الوكلاء الذكيين، ويتميز في استدعاء الأدوات وسيناريوهات التفاعل المعقدة متعددة الجولات."
},
"meta-llama-3-70b-instruct": {
"description": "نموذج قوي بحجم 70 مليار معلمة يتفوق في التفكير، والترميز، وتطبيقات اللغة الواسعة."
},
@@ -2405,6 +2543,12 @@
"minimax-m2": {
"description": "MiniMax M2 هو نموذج لغوي كبير وفعّال، تم تطويره خصيصًا لتلبية احتياجات الترميز وتدفقات عمل الوكلاء."
},
"minimax/minimax-m2": {
"description": "MiniMax-M2 هو نموذج عالي الكفاءة في البرمجة ومهام الوكلاء، مناسب لمجموعة متنوعة من السيناريوهات الهندسية."
},
"minimaxai/minimax-m2": {
"description": "MiniMax-M2 هو نموذج خبراء مختلط (MoE) مدمج وسريع وفعّال من حيث التكلفة، يحتوي على 230 مليار معلمة إجمالية و10 مليارات معلمة نشطة، صُمم لتحقيق أداء فائق في مهام الترميز والوكالة، مع الحفاظ على ذكاء عام قوي. يتميز هذا النموذج بأداء ممتاز في تحرير الملفات المتعددة، ودورة الترميز-التنفيذ-الإصلاح، والتحقق من الاختبارات والإصلاح، وسلاسل الأدوات المعقدة ذات الروابط الطويلة، مما يجعله خيارًا مثاليًا لسير عمل المطورين."
},
"ministral-3b-latest": {
"description": "Ministral 3B هو نموذج حافة عالمي المستوى من Mistral."
},
@@ -2549,12 +2693,21 @@
"moonshotai/kimi-k2": {
"description": "Kimi K2 هو نموذج لغة كبير مختلط الخبراء (MoE) ضخم طورته Moonshot AI، يحتوي على تريليون معلمة إجمالية و32 مليار معلمة نشطة في كل تمرير أمامي. مُحسّن لقدرات الوكيل، بما في ذلك استخدام الأدوات المتقدمة، الاستدلال، وتركيب الكود."
},
"moonshotai/kimi-k2-0711": {
"description": "Kimi K2 0711 هو إصدار Instruct من سلسلة Kimi، مناسب لسيناريوهات الشيفرة عالية الجودة واستدعاء الأدوات."
},
"moonshotai/kimi-k2-0905": {
"description": "نموذج kimi-k2-0905-preview يدعم طول سياق 256k، يتمتع بقدرات ترميز وكيل أقوى، وجمالية وعملية أفضل في الشيفرة الأمامية، وفهم سياق محسن."
"description": "Kimi K2 0905 هو تحديث لسلسلة Kimi، يعزز السياق وقدرات الاستدلال، ومحسن لسيناريوهات البرمجة."
},
"moonshotai/kimi-k2-instruct-0905": {
"description": "نموذج kimi-k2-0905-preview يدعم طول سياق 256k، يتمتع بقدرات ترميز وكيل أقوى، وجمالية وعملية أفضل في الشيفرة الأمامية، وفهم سياق محسن."
},
"moonshotai/kimi-k2-thinking": {
"description": "Kimi K2 Thinking هو نموذج تفكير من Moonshot محسن لمهام الاستدلال العميق، يتمتع بقدرات وكيل عامة."
},
"moonshotai/kimi-k2-thinking-turbo": {
"description": "Kimi K2 Thinking Turbo هو الإصدار السريع من Kimi K2 Thinking، يقلل بشكل كبير من زمن الاستجابة مع الحفاظ على قدرات الاستدلال العميق."
},
"morph/morph-v3-fast": {
"description": "Morph يقدم نموذج ذكاء اصطناعي مخصص يطبق تغييرات الكود المقترحة من نماذج متقدمة مثل Claude أو GPT-4o على ملفات الكود الحالية بسرعة فائقة - أكثر من 4500 رمز في الثانية. يعمل كخطوة نهائية في سير عمل الترميز بالذكاء الاصطناعي. يدعم 16k رمز إدخال و16k رمز إخراج."
},
@@ -2637,28 +2790,49 @@
"description": "gpt-4-turbo من OpenAI يمتلك معرفة عامة واسعة وخبرة ميدانية، مما يمكنه من اتباع تعليمات اللغة الطبيعية المعقدة وحل المشكلات بدقة. تاريخ المعرفة حتى أبريل 2023، ونافذة سياق تصل إلى 128,000 رمز."
},
"openai/gpt-4.1": {
"description": "GPT 4.1 هو النموذج الرائد من OpenAI، مناسب للمهام المعقدة. مثالي لحل المشكلات متعددة المجالات."
"description": "سلسلة GPT-4.1 توفر سياقًا أوسع وقدرات أقوى في الهندسة والاستدلال."
},
"openai/gpt-4.1-mini": {
"description": "GPT 4.1 mini يوازن بين الذكاء والسرعة والتكلفة، مما يجعله نموذجًا جذابًا للعديد من حالات الاستخدام."
"description": "GPT-4.1 Mini يقدم زمن استجابة أقل وتكلفة أفضل، مناسب للمهام ذات السياق المتوسط."
},
"openai/gpt-4.1-nano": {
"description": "GPT-4.1 nano هو أسرع وأكفأ نموذج GPT 4.1 من حيث التكلفة."
"description": "GPT-4.1 Nano هو خيار منخفض التكلفة وزمن استجابة منخفض جدًا، مناسب للمحادثات القصيرة المتكررة أو سيناريوهات التصنيف."
},
"openai/gpt-4o": {
"description": "GPT-4o من OpenAI يمتلك معرفة عامة واسعة وخبرة ميدانية، قادر على اتباع تعليمات اللغة الطبيعية المعقدة وحل المشكلات بدقة. يقدم أداءً مماثلًا لـ GPT-4 Turbo عبر API أسرع وأرخص."
"description": "سلسلة GPT-4o هي نموذج Omni من OpenAI، يدعم إدخال نصوص + صور وإخراج نصي."
},
"openai/gpt-4o-mini": {
"description": "GPT-4o mini من OpenAI هو أصغر نموذج متقدم وأكثر كفاءة من حيث التكلفة. متعدد الوسائط (يقبل نصوصًا أو صورًا ويخرج نصًا)، وأكثر ذكاءً من gpt-3.5-turbo، مع سرعة مماثلة."
"description": "GPT-4o-mini هو النسخة الصغيرة والسريعة من GPT-4o، مناسب لسيناريوهات الوسائط المختلطة منخفضة التأخير."
},
"openai/gpt-5": {
"description": "GPT-5 هو النموذج الرائد من OpenAI، يتفوق في الاستدلال المعقد، المعرفة الواقعية الواسعة، المهام المكثفة للكود، والوكالة متعددة الخطوات."
"description": "GPT-5 هو نموذج عالي الأداء من OpenAI، مناسب لمجموعة واسعة من مهام الإنتاج والبحث."
},
"openai/gpt-5-chat": {
"description": "GPT-5 Chat هو إصدار فرعي من GPT-5 مُحسَّن لسيناريوهات المحادثة، يقلل من التأخير لتحسين تجربة التفاعل."
},
"openai/gpt-5-codex": {
"description": "GPT-5-Codex هو إصدار مُحسَّن من GPT-5 مخصص لسيناريوهات البرمجة، مناسب لسير عمل البرمجة على نطاق واسع."
},
"openai/gpt-5-mini": {
"description": "GPT-5 mini هو نموذج محسّن من حيث التكلفة، يقدم أداءً ممتازًا في مهام الاستدلال والدردشة. يوفر توازنًا مثاليًا بين السرعة والتكلفة والقدرة."
"description": "GPT-5 Mini هو النسخة المصغرة من عائلة GPT-5، مناسب للسيناريوهات منخفضة التكلفة وزمن الاستجابة."
},
"openai/gpt-5-nano": {
"description": "GPT-5 nano هو نموذج عالي الإنتاجية، يتفوق في المهام البسيطة مثل التعليمات أو التصنيف."
"description": "GPT-5 Nano هو النسخة فائقة الصغر من العائلة، مناسب للسيناريوهات التي تتطلب تكلفة وزمن استجابة منخفضين للغاية."
},
"openai/gpt-5-pro": {
"description": "GPT-5 Pro هو النموذج الرائد من OpenAI، يوفر قدرات استدلال وتوليد أكواد متقدمة ووظائف على مستوى المؤسسات، ويدعم التوجيه أثناء الاختبار واستراتيجيات أمان أكثر صرامة."
},
"openai/gpt-5.1": {
"description": "GPT-5.1 هو أحدث نموذج رائد في سلسلة GPT-5، يتميز بتحسينات ملحوظة في الاستدلال العام، اتباع التعليمات، وطبيعية الحوار، ومناسب لمجموعة واسعة من المهام."
},
"openai/gpt-5.1-chat": {
"description": "GPT-5.1 Chat هو عضو خفيف من عائلة GPT-5.1، مُحسَّن للمحادثات منخفضة التأخير مع الحفاظ على قدرات استدلال وتنفيذ تعليمات قوية."
},
"openai/gpt-5.1-codex": {
"description": "GPT-5.1-Codex هو إصدار مُحسَّن من GPT-5.1 مخصص لهندسة البرمجيات وسير عمل البرمجة، مناسب لإعادة هيكلة واسعة النطاق، تصحيح الأخطاء المعقدة، ومهام البرمجة الذاتية طويلة الأمد."
},
"openai/gpt-5.1-codex-mini": {
"description": "GPT-5.1-Codex-Mini هو النسخة الصغيرة والمعجلة من GPT-5.1-Codex، أكثر ملاءمة لسيناريوهات البرمجة الحساسة للتكلفة والتأخير."
},
"openai/gpt-oss-120b": {
"description": "نموذج لغة كبير عام عالي الكفاءة، يتمتع بقدرات استدلال قوية وقابلة للتحكم."
@@ -2685,7 +2859,7 @@
"description": "o3-mini عالي المستوى من حيث الاستدلال، يقدم ذكاءً عاليًا بنفس تكلفة وأهداف التأخير مثل o1-mini."
},
"openai/o4-mini": {
"description": "o4-mini من OpenAI يقدم استدلالًا سريعًا وفعالًا من حيث التكلفة، مع أداء ممتاز بالنسبة لحجمه، خاصة في الرياضيات (الأفضل في اختبار AIME)، الترميز، والمهام البصرية."
"description": "OpenAI o4-mini هو نموذج استدلال صغير وفعال من OpenAI، مناسب لسيناريوهات منخفضة التأخير."
},
"openai/o4-mini-high": {
"description": "o4-mini إصدار عالي من حيث مستوى الاستدلال، تم تحسينه للاستدلال السريع والفعال، ويظهر كفاءة وأداء عاليين في المهام البرمجية والرؤية."
@@ -2735,6 +2909,54 @@
"pro-deepseek-v3": {
"description": "نموذج مخصص لخدمات المؤسسات، يشمل خدمات متزامنة."
},
"qianfan-70b": {
"description": "Qianfan 70B، نموذج صيني كبير المعلمات، مناسب لإنشاء محتوى عالي الجودة ومهام الاستدلال المعقدة."
},
"qianfan-8b": {
"description": "Qianfan 8B، نموذج عام متوسط الحجم، مناسب لتوليد النصوص والإجابة على الأسئلة بتوازن بين التكلفة والأداء."
},
"qianfan-agent-intent-32k": {
"description": "Qianfan Agent Intent 32K، نموذج مخصص للتعرف على النوايا وتنسيق الوكلاء، يدعم السياقات الطويلة."
},
"qianfan-agent-lite-8k": {
"description": "Qianfan Agent Lite 8K، نموذج وكيل خفيف الوزن، مناسب للحوارات متعددة الجولات منخفضة التكلفة وتنسيق الأعمال."
},
"qianfan-agent-speed-32k": {
"description": "Qianfan Agent Speed 32K، نموذج وكيل عالي التحكم في التدفق، مناسب لتطبيقات الوكلاء واسعة النطاق ومتعددة المهام."
},
"qianfan-agent-speed-8k": {
"description": "Qianfan Agent Speed 8K، نموذج وكيل عالي التوازي مخصص للحوارات القصيرة والمتوسطة والاستجابة السريعة."
},
"qianfan-check-vl": {
"description": "Qianfan Check VL، نموذج مراجعة واكتشاف متعدد الوسائط، يدعم التحقق من توافق الصور والنصوص والتعرف عليها."
},
"qianfan-composition": {
"description": "Qianfan Composition، نموذج إبداعي متعدد الوسائط، يدعم الفهم والتوليد المدمج للنصوص والصور."
},
"qianfan-engcard-vl": {
"description": "Qianfan EngCard VL، نموذج تعرف متعدد الوسائط مخصص للسيناريوهات الإنجليزية."
},
"qianfan-lightning-128b-a19b": {
"description": "Qianfan Lightning 128B A19B، نموذج صيني عام عالي الأداء، مناسب للأسئلة المعقدة ومهام الاستدلال واسعة النطاق."
},
"qianfan-llama-vl-8b": {
"description": "Qianfan Llama VL 8B، نموذج متعدد الوسائط مبني على Llama، مخصص لمهام الفهم العام للنصوص والصور."
},
"qianfan-multipicocr": {
"description": "Qianfan MultiPicOCR، نموذج OCR متعدد الصور، يدعم اكتشاف وتعرف النصوص في صور متعددة."
},
"qianfan-qi-vl": {
"description": "Qianfan QI VL، نموذج سؤال وجواب متعدد الوسائط، يدعم الاسترجاع الدقيق والإجابة في سيناريوهات الصور والنصوص المعقدة."
},
"qianfan-singlepicocr": {
"description": "Qianfan SinglePicOCR، نموذج OCR لصورة واحدة، يدعم التعرف عالي الدقة على الأحرف."
},
"qianfan-vl-70b": {
"description": "Qianfan VL 70B، نموذج لغة بصرية كبير المعلمات، مناسب لفهم الصور والنصوص المعقدة."
},
"qianfan-vl-8b": {
"description": "Qianfan VL 8B، نموذج لغة بصرية خفيف الوزن، مناسب للأسئلة اليومية حول الصور والنصوص والتحليل."
},
"qvq-72b-preview": {
"description": "نموذج QVQ هو نموذج بحث تجريبي تم تطويره بواسطة فريق Qwen، يركز على تعزيز قدرات الاستدلال البصري، خاصة في مجال الاستدلال الرياضي."
},
@@ -2841,7 +3063,7 @@
"description": "نموذج قوي للبرمجة متوسطة الحجم، يدعم طول سياق يصل إلى 32K، بارع في البرمجة متعددة اللغات."
},
"qwen/qwen3-14b": {
"description": "Qwen3-14B هو نموذج لغوي سببي مكثف يحتوي على 14.8 مليار معلمة، مصمم للاستدلال المعقد والحوار الفعال. يدعم التبديل بسلاسة بين نمط \"التفكير\" المستخدم في الرياضيات، والبرمجة، والاستدلال المنطقي، ونمط \"غير التفكير\" المستخدم في الحوار العام. تم ضبط هذا النموذج ليكون مناسبًا للامتثال للتعليمات، واستخدام أدوات الوكلاء، والكتابة الإبداعية، واستخدامه عبر أكثر من 100 لغة ولهجة. يدعم بشكل أصلي معالجة 32K رمز، ويمكن توسيعها باستخدام التمديد القائم على YaRN إلى 131K رمز."
"description": "Qwen3-14B هو إصدار 14B من سلسلة Qwen، مناسب للاستدلال العام وسيناريوهات المحادثة."
},
"qwen/qwen3-14b:free": {
"description": "Qwen3-14B هو نموذج لغوي سببي مكثف يحتوي على 14.8 مليار معلمة، مصمم للاستدلال المعقد والحوار الفعال. يدعم التبديل بسلاسة بين نمط \"التفكير\" المستخدم في الرياضيات، والبرمجة، والاستدلال المنطقي، ونمط \"غير التفكير\" المستخدم في الحوار العام. تم ضبط هذا النموذج ليكون مناسبًا للامتثال للتعليمات، واستخدام أدوات الوكلاء، والكتابة الإبداعية، واستخدامه عبر أكثر من 100 لغة ولهجة. يدعم بشكل أصلي معالجة 32K رمز، ويمكن توسيعها باستخدام التمديد القائم على YaRN إلى 131K رمز."
@@ -2849,6 +3071,12 @@
"qwen/qwen3-235b-a22b": {
"description": "Qwen3-235B-A22B هو نموذج مختلط خبير (MoE) يحتوي على 235 مليار معلمة تم تطويره بواسطة Qwen، حيث يتم تنشيط 22 مليار معلمة في كل تمرير للأمام. يدعم التبديل بسلاسة بين نمط \"التفكير\" المستخدم في الاستدلال المعقد، والرياضيات، ومهام البرمجة، ونمط \"غير التفكير\" المستخدم في الحوار العام. يظهر هذا النموذج قدرات استدلال قوية، ودعمًا للغات المتعددة (أكثر من 100 لغة ولهجة)، وقدرات متقدمة في الامتثال للتعليمات واستدعاء أدوات الوكلاء. يدعم بشكل أصلي معالجة نافذة سياق من 32K رمز، ويمكن توسيعها باستخدام التمديد القائم على YaRN إلى 131K رمز."
},
"qwen/qwen3-235b-a22b-2507": {
"description": "Qwen3-235B-A22B-Instruct-2507 هو إصدار Instruct من سلسلة Qwen3، يجمع بين دعم التعليمات متعددة اللغات وسيناريوهات السياق الطويل."
},
"qwen/qwen3-235b-a22b-thinking-2507": {
"description": "Qwen3-235B-A22B-Thinking-2507 هو إصدار Thinking من Qwen3، مُعزز لمهام الرياضيات المعقدة والاستدلال."
},
"qwen/qwen3-235b-a22b:free": {
"description": "Qwen3-235B-A22B هو نموذج مختلط خبير (MoE) يحتوي على 235 مليار معلمة تم تطويره بواسطة Qwen، حيث يتم تنشيط 22 مليار معلمة في كل تمرير للأمام. يدعم التبديل بسلاسة بين نمط \"التفكير\" المستخدم في الاستدلال المعقد، والرياضيات، ومهام البرمجة، ونمط \"غير التفكير\" المستخدم في الحوار العام. يظهر هذا النموذج قدرات استدلال قوية، ودعمًا للغات المتعددة (أكثر من 100 لغة ولهجة)، وقدرات متقدمة في الامتثال للتعليمات واستدعاء أدوات الوكلاء. يدعم بشكل أصلي معالجة نافذة سياق من 32K رمز، ويمكن توسيعها باستخدام التمديد القائم على YaRN إلى 131K رمز."
},
@@ -2867,6 +3095,21 @@
"qwen/qwen3-8b:free": {
"description": "Qwen3-8B هو نموذج لغوي سببي مكثف يحتوي على 8.2 مليار معلمة، مصمم للمهام التي تتطلب استدلالًا مكثفًا والحوار الفعال. يدعم التبديل بسلاسة بين نمط \"التفكير\" المستخدم في الرياضيات والترميز والاستدلال المنطقي، ونمط \"غير التفكير\" المستخدم في الحوار العام. تم ضبط هذا النموذج ليكون مناسبًا للامتثال للتعليمات، ودمج الوكلاء، والكتابة الإبداعية، واستخدامه عبر أكثر من 100 لغة ولهجة. يدعم بشكل أصلي نافذة سياق من 32K رمز، ويمكن توسيعها إلى 131K رمز عبر YaRN."
},
"qwen/qwen3-coder": {
"description": "Qwen3-Coder هو جزء من عائلة مولدات الأكواد في Qwen3، بارع في فهم وتوليد الأكواد داخل المستندات الطويلة."
},
"qwen/qwen3-coder-plus": {
"description": "Qwen3-Coder-Plus هو نموذج وكيل برمجي مُحسَّن خصيصًا من سلسلة Qwen، يدعم استدعاء أدوات أكثر تعقيدًا وجلسات طويلة الأمد."
},
"qwen/qwen3-max": {
"description": "Qwen3 Max هو النموذج المتقدم من سلسلة Qwen3، مناسب للاستدلال متعدد اللغات وتكامل الأدوات."
},
"qwen/qwen3-max-preview": {
"description": "Qwen3 Max (معاينة) هو إصدار Max من سلسلة Qwen، موجه للاستدلال المتقدم وتكامل الأدوات (نسخة تجريبية)."
},
"qwen/qwen3-vl-plus": {
"description": "Qwen3 VL-Plus هو الإصدار المعزز بصريًا من Qwen3، يعزز قدرات الاستدلال متعدد الوسائط ومعالجة الفيديو."
},
"qwen2": {
"description": "Qwen2 هو نموذج لغوي كبير من الجيل الجديد من Alibaba، يدعم أداءً ممتازًا لتلبية احتياجات التطبيقات المتنوعة."
},
@@ -2886,7 +3129,7 @@
"description": "نموذج Qwen 2.5 مفتوح المصدر بحجم 72B."
},
"qwen2.5-7b-instruct": {
"description": "نموذج Qwen 2.5 مفتوح المصدر بحجم 7B."
"description": "Qwen2.5 7B Instruct، نموذج تعليمات مفتوح المصدر ناضج، مناسب للحوار والتوليد في سيناريوهات متعددة."
},
"qwen2.5-coder-1.5b-instruct": {
"description": "نموذج كود تونغي، النسخة مفتوحة المصدر."
@@ -2919,13 +3162,13 @@
"description": "تدعم نماذج سلسلة Qwen-Omni إدخال بيانات متعددة الأنماط، بما في ذلك الفيديو والصوت والصور والنصوص، وتخرج الصوت والنص."
},
"qwen2.5-vl-32b-instruct": {
"description": "سلسلة نماذج Qwen2.5-VL تعزز مستوى الذكاء والفعّالية والملاءمة للنماذج، مما يجعل أداءها أفضل في سيناريوهات مثل المحادثات الطبيعية، وإنشاء المحتوى، وتقديم الخدمات المتخصصة، وتطوير الأكواد. يستخدم الإصدار 32B تقنية التعلم المعزز لتحسين النموذج، مقارنةً بنماذج سلسلة Qwen2.5 VL الأخرى، حيث يقدم أسلوب إخراج أكثر توافقًا مع تفضيلات البشر، وقدرة على استنتاج المسائل الرياضية المعقدة، بالإضافة إلى فهم واستدلال دقيق للصور."
"description": "Qwen2.5 VL 32B Instruct، نموذج متعدد الوسائط مفتوح المصدر، مناسب للنشر الخاص والتطبيقات المتنوعة."
},
"qwen2.5-vl-72b-instruct": {
"description": "تحسين شامل في اتباع التعليمات، الرياضيات، حل المشكلات، والبرمجة، وزيادة قدرة التعرف على العناصر البصرية، يدعم تنسيقات متعددة لتحديد العناصر البصرية بدقة، ويدعم فهم ملفات الفيديو الطويلة (حتى 10 دقائق) وتحديد اللحظات الزمنية بدقة، قادر على فهم التسلسل الزمني والسرعة، يدعم التحكم في أنظمة التشغيل أو الوكلاء المحمولة بناءً على قدرات التحليل والتحديد، قوي في استخراج المعلومات الرئيسية وإخراج البيانات بتنسيق Json، هذه النسخة هي النسخة 72B، وهي الأقوى في هذه السلسلة."
},
"qwen2.5-vl-7b-instruct": {
"description": "تحسين شامل في اتباع التعليمات، الرياضيات، حل المشكلات، والبرمجة، وزيادة قدرة التعرف على العناصر البصرية، يدعم تنسيقات متعددة لتحديد العناصر البصرية بدقة، ويدعم فهم ملفات الفيديو الطويلة (حتى 10 دقائق) وتحديد اللحظات الزمنية بدقة، قادر على فهم التسلسل الزمني والسرعة، يدعم التحكم في أنظمة التشغيل أو الوكلاء المحمولة بناءً على قدرات التحليل والتحديد، قوي في استخراج المعلومات الرئيسية وإخراج البيانات بتنسيق Json، هذه النسخة هي النسخة 72B، وهي الأقوى في هذه السلسلة."
"description": "Qwen2.5 VL 7B Instruct، نموذج متعدد الوسائط خفيف الوزن، يوازن بين تكلفة النشر وقدرات التعرف."
},
"qwen2.5-vl-instruct": {
"description": "Qwen2.5-VL هو أحدث إصدار من نماذج الرؤية واللغة في عائلة نماذج Qwen."
@@ -2952,46 +3195,46 @@
"description": "Qwen3 هو الجيل الجديد من نموذج اللغة واسع النطاق من علي بابا، يدعم مجموعة متنوعة من احتياجات التطبيقات بأداء ممتاز."
},
"qwen3-0.6b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 0.6B، نموذج للمبتدئين، مناسب للاستدلال البسيط والبيئات ذات الموارد المحدودة للغاية."
},
"qwen3-1.7b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 1.7B، نموذج فائق الخفة، سهل النشر على الحواف والأجهزة الطرفية."
},
"qwen3-14b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 14B، نموذج متوسط الحجم، مناسب للأسئلة متعددة اللغات وتوليد النصوص."
},
"qwen3-235b-a22b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 235B A22B، نموذج عام كبير، مخصص لمهام معقدة متعددة."
},
"qwen3-235b-a22b-instruct-2507": {
"description": "نموذج مفتوح المصدر غير تفكيري مبني على Qwen3، مع تحسينات طفيفة في القدرات الإبداعية والسلامة مقارنة بالإصدار السابق (Tongyi Qianwen 3-235B-A22B)."
"description": "Qwen3 235B A22B Instruct 2507، نموذج تعليمات عام رائد، مناسب لمهام التوليد والاستدلال المتنوعة."
},
"qwen3-235b-a22b-thinking-2507": {
"description": "نموذج مفتوح المصدر تفكيري مبني على Qwen3، مع تحسينات كبيرة في القدرات المنطقية، العامة، تعزيز المعرفة والإبداع مقارنة بالإصدار السابق (Tongyi Qianwen 3-235B-A22B)، مناسب للمهام المعقدة التي تتطلب استدلالًا قويًا."
"description": "Qwen3 235B A22B Thinking 2507، نموذج تفكير واسع النطاق، مخصص للاستدلال عالي الصعوبة."
},
"qwen3-30b-a3b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 30B A3B، نموذج عام متوسط إلى كبير الحجم، يوازن بين التكلفة والأداء."
},
"qwen3-30b-a3b-instruct-2507": {
"description": "تحسنت القدرات العامة للنموذج بشكل كبير في اللغتين الصينية والإنجليزية واللغات المتعددة مقارنة بالإصدار السابق (Qwen3-30B-A3B). تم تحسين المهام المفتوحة الذاتية بشكل خاص لتتوافق بشكل أفضل مع تفضيلات المستخدم، مما يمكنه من تقديم ردود أكثر فائدة."
"description": "Qwen3 30B A3B Instruct 2507، نموذج تعليمات متوسط إلى كبير الحجم، مناسب للتوليد عالي الجودة والإجابة على الأسئلة."
},
"qwen3-30b-a3b-thinking-2507": {
"description": "نموذج مفتوح المصدر لوضع التفكير مبني على Qwen3، مع تحسينات كبيرة في القدرات المنطقية، والقدرات العامة، وتعزيز المعرفة، والقدرة الإبداعية مقارنة بالإصدار السابق (Tongyi Qianwen 3-30B-A3B)، مناسب للسيناريوهات التي تتطلب استدلالًا عالي الصعوبة."
"description": "Qwen3 30B A3B Thinking 2507، نموذج تفكير متوسط إلى كبير الحجم، يوازن بين الدقة والتكلفة."
},
"qwen3-32b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 32B، مناسب للمهام العامة التي تتطلب قدرات فهم أقوى."
},
"qwen3-4b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 4B، مناسب للتطبيقات الصغيرة والمتوسطة وسيناريوهات الاستدلال المحلي."
},
"qwen3-8b": {
"description": "Qwen3 هو نموذج جديد من الجيل التالي مع تحسينات كبيرة في القدرات، حيث يصل إلى مستويات رائدة في الصناعة في الاستدلال، والعموم، والوكلاء، واللغات المتعددة، ويدعم التبديل بين أنماط التفكير."
"description": "Qwen3 8B، نموذج خفيف الوزن، مرن في النشر، مناسب للأعمال عالية التوازي."
},
"qwen3-coder-30b-a3b-instruct": {
"description": "النسخة مفتوحة المصدر من نموذج Qwen3 للبرمجة. النموذج الأحدث qwen3-coder-30b-a3b-instruct مبني على Qwen3، ويتميز بقدرات قوية كوكيل برمجي، بارع في استخدام الأدوات والتفاعل مع البيئات، ويجمع بين مهارات البرمجة الذاتية والقدرات العامة."
},
"qwen3-coder-480b-a35b-instruct": {
"description": "نسخة مفتوحة المصدر من نموذج كود Tongyi Qianwen. أحدث نموذج qwen3-coder-480b-a35b-instruct مبني على Qwen3 لتوليد الكود، يتمتع بقدرات قوية كوكيل برمجي، بارع في استدعاء الأدوات والتفاعل مع البيئة، قادر على البرمجة الذاتية مع أداء برمجي ممتاز وقدرات عامة."
"description": "Qwen3 Coder 480B A35B Instruct، نموذج برمجة رائد، يدعم البرمجة متعددة اللغات وفهم الشيفرات المعقدة."
},
"qwen3-coder-flash": {
"description": "نموذج كود Tongyi Qianwen. أحدث سلسلة نماذج Qwen3-Coder مبنية على Qwen3 لتوليد الأكواد، تتمتع بقدرات وكيل ترميز قوية، بارعة في استدعاء الأدوات والتفاعل مع البيئة، قادرة على البرمجة الذاتية، وتجمع بين مهارات برمجية ممتازة وقدرات عامة."
@@ -3005,32 +3248,41 @@
"qwen3-max": {
"description": "سلسلة نماذج Tongyi Qianwen 3 Max، التي تحسنت بشكل كبير مقارنة بسلسلة 2.5 في القدرات العامة، فهم النصوص باللغتين الصينية والإنجليزية، اتباع التعليمات المعقدة، المهام المفتوحة الذاتية، القدرات متعددة اللغات، واستدعاء الأدوات؛ مع تقليل الأوهام المعرفية للنموذج. النسخة الأحدث من qwen3-max: مقارنةً بنسخة qwen3-max-preview، تم ترقية خاصة في برمجة الوكلاء واستدعاء الأدوات. النسخة الرسمية المنشورة وصلت إلى مستوى SOTA في المجال، وتلبي احتياجات الوكلاء في سيناريوهات أكثر تعقيدًا."
},
"qwen3-max-preview": {
"description": "أفضل نموذج في سلسلة Tongyi Qianwen، مناسب للمهام المعقدة ومتعددة الخطوات. يدعم التفكير في الإصدار التجريبي."
},
"qwen3-next-80b-a3b-instruct": {
"description": "نموذج مفتوح المصدر من الجيل الجديد لوضع عدم التفكير مبني على Qwen3، يتميز بفهم أفضل للنصوص الصينية مقارنة بالإصدار السابق (Tongyi Qianwen 3-235B-A22B-Instruct-2507)، مع تعزيز في قدرات الاستدلال المنطقي وأداء أفضل في مهام توليد النصوص."
},
"qwen3-next-80b-a3b-thinking": {
"description": "نموذج مفتوح المصدر من الجيل الجديد لوضع التفكير مبني على Qwen3، يتميز بتحسين في الالتزام بالتعليمات مقارنة بالإصدار السابق (Tongyi Qianwen 3-235B-A22B-Thinking-2507)، مع ردود ملخصة وأكثر إيجازًا من النموذج."
"description": "Qwen3 Next 80B A3B Thinking، إصدار استدلال رائد مخصص للمهام المعقدة."
},
"qwen3-omni-flash": {
"description": "نموذج Qwen-Omni قادر على استقبال مدخلات متعددة الوسائط مثل النصوص، الصور، الصوت، والفيديو، ويولّد ردودًا على شكل نص أو صوت. يوفر أصواتًا بشرية متعددة، ويدعم إخراج الصوت بعدة لغات ولهجات، ويمكن استخدامه في مجالات مثل إنشاء النصوص، التعرف البصري، والمساعدات الصوتية."
},
"qwen3-vl-235b-a22b-instruct": {
"description": "Qwen3 VL 235B A22B في وضع غير التفكير (Instruct)، مصمم لسيناريوهات الأوامر غير المعتمدة على التفكير، مع الحفاظ على قدرات قوية في الفهم البصري."
"description": "Qwen3 VL 235B A22B Instruct، نموذج متعدد الوسائط رائد، مخصص للفهم والإبداع عالي المتطلبات."
},
"qwen3-vl-235b-a22b-thinking": {
"description": "Qwen3 VL 235B A22B في وضع التفكير (نسخة مفتوحة المصدر)، مخصص للمهام المعقدة التي تتطلب استدلالًا عاليًا وفهمًا لمقاطع الفيديو الطويلة، ويقدم قدرات رائدة في الاستدلال البصري والنصي."
"description": "Qwen3 VL 235B A22B Thinking، إصدار تفكير رائد، مخصص للاستدلال والتخطيط متعدد الوسائط المعقد."
},
"qwen3-vl-30b-a3b-instruct": {
"description": "Qwen3 VL 30B في وضع غير التفكير (Instruct)، موجه لسيناريوهات متابعة الأوامر العامة، مع الحفاظ على مستوى عالٍ من الفهم والتوليد متعدد الوسائط."
"description": "Qwen3 VL 30B A3B Instruct، نموذج كبير متعدد الوسائط، يوازن بين الدقة وأداء الاستدلال."
},
"qwen3-vl-30b-a3b-thinking": {
"description": "Qwen-VL (نسخة مفتوحة المصدر) يوفر قدرات في الفهم البصري وتوليد النصوص، ويدعم التفاعل الذكي، الترميز البصري، الإدراك المكاني، فهم الفيديوهات الطويلة والتفكير العميق، مع دعم قوي للتعرف على النصوص المتقدمة وتعدد اللغات في البيئات المعقدة."
"description": "Qwen3 VL 30B A3B Thinking، إصدار تفكير مخصص للمهام متعددة الوسائط المعقدة."
},
"qwen3-vl-32b-instruct": {
"description": "Qwen3 VL 32B Instruct، نموذج تعليمات متعدد الوسائط، مناسب للأسئلة والإبداع عالي الجودة في الصور والنصوص."
},
"qwen3-vl-32b-thinking": {
"description": "Qwen3 VL 32B Thinking، إصدار تفكير متعدد الوسائط، يعزز الاستدلال المعقد والتحليل طويل السلسلة."
},
"qwen3-vl-8b-instruct": {
"description": "Qwen3 VL 8B في وضع غير التفكير (Instruct)، مناسب لمهام التوليد والتعرف متعدد الوسائط الروتينية."
"description": "Qwen3 VL 8B Instruct، نموذج متعدد الوسائط خفيف الوزن، مناسب للأسئلة البصرية اليومية وتكامل التطبيقات."
},
"qwen3-vl-8b-thinking": {
"description": "Qwen3 VL 8B في وضع التفكير، مخصص لسيناريوهات الاستدلال والتفاعل متعدد الوسائط الخفيفة، مع الحفاظ على قدرة فهم السياق الطويل."
"description": "Qwen3 VL 8B Thinking، نموذج سلسلة تفكير متعدد الوسائط، مناسب للاستدلال الدقيق على المعلومات البصرية."
},
"qwen3-vl-flash": {
"description": "Qwen3 VL Flash: نسخة خفيفة وسريعة للاستدلال، مناسبة للسيناريوهات الحساسة للزمن أو التي تتطلب معالجة عدد كبير من الطلبات."
@@ -3152,9 +3404,6 @@
"step-r1-v-mini": {
"description": "هذا النموذج هو نموذج استدلال كبير يتمتع بقدرة قوية على فهم الصور، يمكنه معالجة المعلومات النصية والصورية، ويخرج نصوصًا بعد تفكير عميق. يظهر هذا النموذج أداءً بارزًا في مجال الاستدلال البصري، كما يمتلك قدرات رياضية، برمجية، ونصية من الدرجة الأولى. طول السياق هو 100k."
},
"step3": {
"description": "Step3 هو نموذج متعدد الوسائط أطلقته Jiexue Xingchen، يتمتع بقدرات قوية في الفهم البصري."
},
"stepfun-ai/step3": {
"description": "Step3 هو نموذج استدلال متعدد الوسائط متقدم أصدرته شركة 阶跃星辰 (StepFun). بُني على بنية مزيج الخبراء (MoE) التي تضم 321 مليار معلمة إجمالية و38 مليار معلمة تنشيط. صُمم النموذج بنهج من الطرف إلى الطرف ليقلل تكلفة فك الترميز، مع تقديم أداء رائد في الاستدلال البصري-اللغوي. من خلال التصميم التعاوني لآلية انتباه تفكيك متعدد المصفوفات (MFA) وفصل الانتباه عن شبكة التغذية الأمامية (AFD)، يحافظ Step3 على كفاءة ممتازة على كل من المسرعات الرائدة والمسرعات منخفضة التكلفة. في مرحلة ما قبل التدريب عالج Step3 أكثر من 20 تريليون توكن نصي و4 تريليون توكن مختلط نص-صورة، مغطياً أكثر من عشر لغات. حقق النموذج أداءً متقدماً بين نماذج المصدر المفتوح في عدة معايير قياسية تشمل الرياضيات والبرمجة والمهام متعددة الوسائط."
},
@@ -3218,6 +3467,9 @@
"us.anthropic.claude-haiku-4-5-20251001-v1:0": {
"description": "Claude Haiku 4.5 هو أسرع وأذكى نموذج Haiku من Anthropic، يتميز بسرعة فائقة وقدرة متقدمة على التفكير المتسلسل."
},
"us.anthropic.claude-opus-4-5-20251101-v1:0": {
"description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الفائق والأداء القابل للتوسع، مما يجعله مناسبًا للمهام المعقدة التي تتطلب أعلى مستويات الجودة في الاستجابة والقدرة على الاستدلال."
},
"us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
"description": "Claude Sonnet 4.5 هو النموذج الأذكى الذي طورته Anthropic حتى الآن."
},
@@ -3236,6 +3488,9 @@
"vercel/v0-1.5-md": {
"description": "الوصول إلى النموذج خلف v0 لتوليد، إصلاح، وتحسين تطبيقات الويب الحديثة، مع استدلال مخصص للأطر المعينة ومعرفة حديثة."
},
"volcengine/doubao-seed-code": {
"description": "Doubao-Seed-Code هو نموذج كبير من محرك Byte Volcano مُحسَّن لبرمجة الوكلاء (Agentic Programming)، ويؤدي أداءً ممتازًا في معايير متعددة للبرمجة والوكلاء، ويدعم سياقًا يصل إلى 256K."
},
"wan2.2-t2i-flash": {
"description": "نسخة Wanxiang 2.2 فائقة السرعة، أحدث نموذج حاليًا. تم تحسين الإبداع، الاستقرار، والواقعية بشكل شامل، مع سرعة توليد عالية وقيمة ممتازة مقابل التكلفة."
},
@@ -3263,6 +3518,24 @@
"wizardlm2:8x22b": {
"description": "WizardLM 2 هو نموذج لغوي تقدمه Microsoft AI، يتميز بأداء ممتاز في الحوار المعقد، واللغات المتعددة، والاستدلال، والمساعدين الذكيين."
},
"x-ai/grok-4": {
"description": "Grok 4 هو النموذج الرائد من xAI، يوفر قدرات استدلال قوية ودعمًا متعدد الوسائط."
},
"x-ai/grok-4-fast": {
"description": "Grok 4 Fast هو نموذج عالي الإنتاجية ومنخفض التكلفة من xAI (يدعم نافذة سياق 2M)، مناسب للسيناريوهات التي تتطلب تزامنًا عاليًا وسياقًا طويلًا."
},
"x-ai/grok-4-fast-non-reasoning": {
"description": "Grok 4 Fast (بدون استدلال) هو نموذج متعدد الوسائط عالي الإنتاجية ومنخفض التكلفة من xAI (يدعم نافذة سياق 2M)، موجه للسيناريوهات الحساسة للتأخير والتكلفة والتي لا تتطلب تفعيل الاستدلال داخل النموذج. يتوفر بجانب إصدار Grok 4 Fast مع الاستدلال، ويمكن تفعيل الاستدلال عند الحاجة عبر معامل reasoning enable في واجهة API. قد يتم استخدام المطالبات والإكمالات من قبل xAI أو OpenRouter لتحسين النماذج المستقبلية."
},
"x-ai/grok-4.1-fast": {
"description": "Grok 4.1 Fast هو نموذج عالي الإنتاجية ومنخفض التكلفة من xAI (يدعم نافذة سياق 2M)، مناسب للسيناريوهات التي تتطلب تزامنًا عاليًا وسياقًا طويلًا."
},
"x-ai/grok-4.1-fast-non-reasoning": {
"description": "Grok 4.1 Fast (بدون استدلال) هو نموذج متعدد الوسائط عالي الإنتاجية ومنخفض التكلفة من xAI (يدعم نافذة سياق 2M)، موجه للسيناريوهات الحساسة للتأخير والتكلفة والتي لا تتطلب تفعيل الاستدلال داخل النموذج. يتوفر بجانب إصدار Grok 4.1 Fast مع الاستدلال، ويمكن تفعيل الاستدلال عند الحاجة عبر معامل reasoning enable في واجهة API. قد يتم استخدام المطالبات والإكمالات من قبل xAI أو OpenRouter لتحسين النماذج المستقبلية."
},
"x-ai/grok-code-fast-1": {
"description": "Grok Code Fast 1 هو نموذج سريع للبرمجة من xAI، ينتج أكواد قابلة للقراءة ومتوافقة مع متطلبات الهندسة."
},
"x1": {
"description": "سيتم ترقية نموذج Spark X1 بشكل أكبر، حيث ستحقق المهام العامة مثل الاستدلال، وتوليد النصوص، وفهم اللغة نتائج تتماشى مع OpenAI o1 و DeepSeek R1."
},
@@ -3323,6 +3596,15 @@
"yi-vision-v2": {
"description": "نموذج مهام بصرية معقدة، يوفر فهمًا عالي الأداء وقدرات تحليلية بناءً على صور متعددة."
},
"z-ai/glm-4.5": {
"description": "GLM 4.5 هو النموذج الرائد من Z.AI، يدعم أوضاع استدلال هجينة ومُحسَّن للمهام الهندسية وسياقات طويلة."
},
"z-ai/glm-4.5-air": {
"description": "GLM 4.5 Air هو النسخة الخفيفة من GLM 4.5، مناسب للسيناريوهات الحساسة للتكلفة مع الحفاظ على قدرات استدلال قوية."
},
"z-ai/glm-4.6": {
"description": "GLM 4.6 هو النموذج الرائد من Z.AI، يعزز طول السياق وقدرات الترميز."
},
"zai-org/GLM-4.5": {
"description": "GLM-4.5 هو نموذج أساسي مصمم لتطبيقات الوكلاء الذكية، يستخدم بنية Mixture-of-Experts (MoE). تم تحسينه بعمق في مجالات استدعاء الأدوات، تصفح الويب، هندسة البرمجيات، وبرمجة الواجهة الأمامية، ويدعم التكامل السلس مع وكلاء الكود مثل Claude Code وRoo Code. يستخدم وضع استدلال مختلط ليتكيف مع سيناريوهات الاستدلال المعقدة والاستخدام اليومي."
},
@@ -3343,5 +3625,8 @@
},
"zai/glm-4.5v": {
"description": "GLM-4.5V مبني على نموذج GLM-4.5-Air الأساسي، يرث التقنيات المثبتة من GLM-4.1V-Thinking، ويوسعها بفعالية من خلال بنية MoE القوية التي تضم 106 مليار معلمة."
},
"zenmux/auto": {
"description": "ميزة التوجيه التلقائي من ZenMux تختار تلقائيًا أفضل نموذج من حيث الأداء والتكلفة من بين النماذج المدعومة بناءً على محتوى طلبك."
}
}
+36 -16
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "قراءة محتوى قاعدة المعرفة",
"searchKnowledgeBase": "البحث في قاعدة المعرفة"
},
"title": "قاعدة المعرفة"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "تحرير الملف",
"getCommandOutput": "الحصول على مخرجات الكود",
"globLocalFiles": "البحث عن الملفات",
"grepContent": "البحث في المحتوى",
"killCommand": "إيقاف تنفيذ الكود",
"listLocalFiles": "عرض قائمة الملفات",
"moveLocalFiles": "نقل الملفات",
"readLocalFile": "قراءة محتوى الملف",
"renameLocalFile": "إعادة تسمية",
"runCommand": "تنفيذ الكود",
"searchLocalFiles": "البحث في الملفات",
"writeLocalFile": "كتابة إلى الملف"
},
"title": "النظام المحلي"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "قراءة محتوى عدة صفحات",
"crawlSinglePage": "قراءة محتوى الصفحة",
"search": "البحث في الصفحات"
},
"title": "البحث عبر الإنترنت"
}
},
"confirm": "تأكيد",
"debug": {
"arguments": "معلمات الاستدعاء",
@@ -236,6 +270,8 @@
},
"inspector": {
"args": "عرض قائمة المعلمات",
"delete": "حذف استدعاء الأداة",
"orphanedToolCall": "قد تكون رسالة استدعاء الأداة هذه معزولة بسبب ظروف غير طبيعية، مما قد يؤثر على تنفيذ الوكيل بشكل صحيح. يُرجى إزالتها.",
"pluginRender": "عرض واجهة الإضافة"
},
"list": {
@@ -249,17 +285,6 @@
"content": "جارٍ استدعاء الإضافة...",
"plugin": "تشغيل الإضافة..."
},
"localSystem": {
"apiName": {
"listLocalFiles": "عرض قائمة الملفات",
"moveLocalFiles": "نقل الملفات",
"readLocalFile": "قراءة محتوى الملف",
"renameLocalFile": "إعادة تسمية",
"searchLocalFiles": "بحث في الملفات",
"writeLocalFile": "كتابة في الملف"
},
"title": "الملفات المحلية"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "جارٍ فحص بيئة التثبيت...",
"COMPLETED": "اكتمل التثبيت",
@@ -367,11 +392,6 @@
"warning": "⚠️ يرجى التأكد من ثقتك بمصدر هذه الإضافة، الإضافات الخبيثة قد تضر بأمان نظامك."
},
"search": {
"apiName": {
"crawlMultiPages": "قراءة محتوى عدة صفحات",
"crawlSinglePage": "قراءة محتوى الصفحة",
"search": "البحث في الصفحة"
},
"config": {
"addKey": "إضافة مفتاح",
"close": "حذف",
+3
View File
@@ -191,6 +191,9 @@
"xinference": {
"description": "Xorbits Inference (Xinference) هو منصة مفتوحة المصدر مصممة لتبسيط تشغيل ودمج نماذج الذكاء الاصطناعي المتنوعة. باستخدام Xinference، يمكنك تشغيل الاستدلال على نماذج LLM مفتوحة المصدر، ونماذج التضمين، والنماذج متعددة الوسائط سواء في السحابة أو في البيئات المحلية، وإنشاء تطبيقات ذكاء اصطناعي قوية."
},
"zenmux": {
"description": "ZenMux هو منصة موحدة لتجميع خدمات الذكاء الاصطناعي، تدعم العديد من واجهات خدمات الذكاء الاصطناعي الرائدة مثل OpenAI وAnthropic وGoogle VertexAI. توفر قدرة توجيه مرنة تتيح لك التبديل وإدارة نماذج الذكاء الاصطناعي المختلفة بسهولة."
},
"zeroone": {
"description": "01.AI تركز على تقنيات الذكاء الاصطناعي في عصر الذكاء الاصطناعي 2.0، وتعزز الابتكار والتطبيقات \"الإنسان + الذكاء الاصطناعي\"، باستخدام نماذج قوية وتقنيات ذكاء اصطناعي متقدمة لتعزيز إنتاجية البشر وتحقيق تمكين التكنولوجيا."
},
+6
View File
@@ -293,6 +293,12 @@
"elegant": "أنيق",
"title": "حركة الاستجابة"
},
"contextMenuMode": {
"default": "افتراضي",
"desc": "اختر طريقة عرض قائمة النقر بزر الماوس الأيمن لرسائل الدردشة",
"disabled": "عدم الاستخدام",
"title": "خطة قائمة النقر بزر الماوس الأيمن"
},
"neutralColor": {
"desc": "تخصيص تدرجات الرمادي ذات الاتجاهات اللونية المختلفة",
"title": "لون محايد"
+28 -1
View File
@@ -14,9 +14,31 @@
"images": "الصور:",
"prompt": "كلمة تلميح"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "عدد الأحرف",
"lines": "عدد السطور"
}
}
},
"localFiles": {
"editFile": {
"newString": "استبدال بـ",
"oldString": "البحث عن",
"replaceAll": "استبدال جميع المطابقات",
"replaceFirst": "استبدال أول مطابقة فقط"
},
"file": "ملف",
"folder": "مجلد",
"moveFiles": {
"itemsMoved": "تم نقل {{count}} عنصر:",
"itemsMoved_one": "تم نقل {{count}} عنصر:",
"itemsMoved_other": "تم نقل {{count}} عنصر:",
"itemsToMove": "{{count}} عنصر في انتظار النقل:",
"itemsToMove_one": "{{count}} عنصر في انتظار النقل:",
"itemsToMove_other": "{{count}} عنصر في انتظار النقل:"
},
"open": "فتح",
"openFile": "فتح ملف",
"openFolder": "فتح مجلد",
@@ -26,7 +48,12 @@
"readFile": "قراءة الملف",
"readFileError": "فشل في قراءة الملف، يرجى التحقق من صحة مسار الملف",
"readFiles": "قراءة الملفات",
"readFilesError": "فشل في قراءة الملفات، يرجى التحقق من صحة مسار الملف"
"readFilesError": "فشل في قراءة الملفات، يرجى التحقق من صحة مسار الملف",
"writeFile": {
"characters": "أحرف",
"preview": "معاينة المحتوى",
"truncated": "تم الاقتطاع"
}
},
"search": {
"createNewSearch": "إنشاء سجل بحث جديد",
+1
View File
@@ -6,6 +6,7 @@
"confirmRemoveUnstarred": "سيتم حذف المواضيع غير المفضلة، ولن يمكن استعادتها بعد الحذف، يرجى توخي الحذر.",
"duplicate": "إنشاء نسخة",
"export": "تصدير الموضوع",
"openInNewWindow": "افتح الصفحة في نافذة جديدة",
"removeAll": "حذف جميع المواضيع",
"removeUnstarred": "حذف المواضيع غير المفضلة"
},
+114 -1
View File
@@ -52,6 +52,104 @@
"required": "Полето не може да бъде празно"
}
},
"betterAuth": {
"errors": {
"emailInvalid": "Моля, въведете валиден имейл адрес",
"emailNotRegistered": "Този имейл все още не е регистриран",
"emailNotVerified": "Имейлът не е потвърден, моля първо го потвърдете",
"emailRequired": "Моля, въведете имейл адрес",
"firstNameRequired": "Моля, въведете собствено име",
"lastNameRequired": "Моля, въведете фамилно име",
"loginFailed": "Входът не бе успешен, моля проверете имейла и паролата",
"passwordFormat": "Паролата трябва да съдържа както букви, така и цифри",
"passwordMaxLength": "Паролата не може да надвишава 64 знака",
"passwordMinLength": "Паролата трябва да бъде поне 8 знака",
"passwordRequired": "Моля, въведете парола",
"usernameRequired": "Моля, въведете потребителско име"
},
"resetPassword": {
"backToSignIn": "Обратно към вход",
"confirmPasswordPlaceholder": "Потвърдете новата парола",
"confirmPasswordRequired": "Моля, потвърдете новата парола",
"description": "Моля, въведете новата си парола",
"error": "Неуспешно нулиране на паролата, моля опитайте отново",
"invalidToken": "Невалиден или изтекъл линк за нулиране",
"newPasswordPlaceholder": "Въведете нова парола",
"passwordMismatch": "Двете пароли не съвпадат",
"submit": "Нулирай паролата",
"success": "Паролата е успешно нулирана, моля влезте с новата парола",
"title": "Нулиране на парола"
},
"signin": {
"backToEmail": "Обратно към редактиране на имейл",
"continueWithAuth0": "Вход с Auth0",
"continueWithAuthelia": "Вход с Authelia",
"continueWithAuthentik": "Вход с Authentik",
"continueWithCasdoor": "Вход с Casdoor",
"continueWithCloudflareZeroTrust": "Вход с Cloudflare Zero Trust",
"continueWithCognito": "Вход с AWS Cognito",
"continueWithFeishu": "Вход с Feishu",
"continueWithGithub": "Вход с GitHub",
"continueWithGoogle": "Вход с Google",
"continueWithKeycloak": "Вход с Keycloak",
"continueWithLogto": "Вход с Logto",
"continueWithMicrosoft": "Вход с Microsoft",
"continueWithOIDC": "Вход с OIDC",
"continueWithOkta": "Вход с Okta",
"continueWithWechat": "Вход с WeChat",
"continueWithZitadel": "Вход с Zitadel",
"emailPlaceholder": "Моля, въведете имейл адрес",
"emailStep": {
"subtitle": "Моля, въведете имейл адреса си, за да продължите",
"title": "Вход"
},
"error": "Входът не бе успешен, моля проверете имейла и паролата",
"forgotPassword": "Забравена парола?",
"forgotPasswordError": "Неуспешно изпращане на линк за нулиране на парола",
"forgotPasswordSent": "Линк за нулиране на парола е изпратен, моля проверете имейла си",
"magicLinkButton": "Изпрати линк за вход",
"magicLinkError": "Неуспешно изпращане на линк за вход, моля опитайте по-късно",
"magicLinkSent": "Линк за вход е изпратен, моля проверете имейла си",
"nextStep": "Следваща стъпка",
"noAccount": "Нямате акаунт?",
"orContinueWith": "или",
"passwordPlaceholder": "Моля, въведете парола",
"passwordStep": {
"subtitle": "Моля, въведете паролата си, за да продължите"
},
"signupLink": "Регистрирайте се сега",
"socialError": "Неуспешен социален вход, моля опитайте отново",
"socialOnlyHint": "Този имейл е регистриран чрез социален акаунт, моля влезте чрез него",
"submit": "Вход"
},
"signup": {
"emailPlaceholder": "Моля, въведете имейл адрес",
"error": "Регистрацията не бе успешна, моля опитайте отново",
"firstNamePlaceholder": "Собствено име",
"hasAccount": "Вече имате акаунт?",
"lastNamePlaceholder": "Фамилно име",
"passwordPlaceholder": "Моля, въведете парола",
"signinLink": "Влезте сега",
"submit": "Регистрация",
"subtitle": "Присъединете се към общността на LobeChat",
"success": "Регистрацията е успешна! Моля, проверете имейла си за потвърждение",
"title": "Създаване на акаунт",
"usernamePlaceholder": "Моля, въведете потребителско име"
},
"verifyEmail": {
"backToSignIn": "Обратно към вход",
"checkSpam": "Ако не сте получили имейл, моля проверете папката със спам",
"descriptionPrefix": "Изпратихме имейл за потвърждение на",
"descriptionSuffix": "",
"resend": {
"button": "Изпрати отново имейл за потвърждение",
"error": "Изпращането не бе успешно, моля опитайте по-късно",
"noEmail": "Липсва имейл адрес",
"success": "Имейлът за потвърждение е изпратен отново, моля проверете пощата си"
},
"title": "Потвърдете имейла си"
}
},
"date": {
"prevMonth": "Миналия месец",
"recent30Days": "Последните 30 дни"
@@ -86,16 +184,31 @@
"loginOrSignup": "Вход / Регистрация",
"profile": {
"avatar": "Аватар",
"cancel": "Отказ",
"changePassword": "Нулиране на парола",
"email": "Имейл адрес",
"fullName": "Пълно име",
"fullNameInputHint": "Моля, въведете новото си пълно име",
"password": "Парола",
"resetPasswordError": "Неуспешно изпращане на линк за нулиране на парола",
"resetPasswordSent": "Линк за нулиране на парола е изпратен, моля проверете имейла си",
"save": "Запази",
"sso": {
"link": {
"button": "Свържи акаунт",
"success": "Акаунтът е успешно свързан"
},
"loading": "Зареждане на свързаните трети страни акаунти",
"providers": "Свързани акаунти",
"unlink": {
"description": "След като свържете, няма да можете да използвате акаунта на {{provider}} {{providerAccountId}}“ за вход. Ако искате отново да свържете акаунта на {{provider}} с текущия акаунт, уверете се, че имейл адресът на акаунта на {{provider}} е {{email}}, а ние автоматично ще ви свържем с текущия влезлия акаунт при вход.",
"description": "След като прекъснете връзката, няма да можете да влизате с акаунта {{provider}} \"{{providerAccountId}}\". Ако искате отново да свържете акаунта {{provider}} с текущия акаунт, уверете се, че имейл адресът на акаунта {{provider}} е {{email}}. Ще го свържем автоматично при следващ вход.",
"forbidden": "Трябва да имате поне един свързан акаунт на трета страна.",
"title": "Наистина ли искате да свържете акаунта на трета страна {{provider}}?"
}
},
"title": "Детайли на профила",
"updateAvatar": "Актуализирай аватара",
"updateFullName": "Актуализирай пълното име",
"username": "Потребителско име"
},
"signout": "Изход",
+41
View File
@@ -17,6 +17,7 @@
"availableAgents": "Налични асистенти",
"backToBottom": "Върни се в началото",
"chatList": {
"expandMessage": "Разгъни съобщението",
"longMessageDetail": "Вижте детайлите"
},
"clearCurrentMessages": "Изчисти съобщенията от текущата сесия",
@@ -52,6 +53,12 @@
"desc": "Ограничения на механизма Claude Thinking (<1>Научете повече</1>), при активиране автоматично ще се деактивира ограничението на броя на историческите съобщения",
"title": "Активиране на дълбочинно мислене"
},
"imageAspectRatio": {
"title": "Съотношение на ширина и височина на изображението"
},
"imageResolution": {
"title": "Разделителна способност на изображението"
},
"reasoningBudgetToken": {
"title": "Токени за разходи при мислене"
},
@@ -64,6 +71,9 @@
"thinking": {
"title": "Превключвател за дълбоко мислене"
},
"thinkingLevel": {
"title": "Ниво на мислене"
},
"title": "Разширени функции на модела",
"urlContext": {
"desc": "Когато е включено, автоматично ще се анализират уеб връзки, за да се получи реалното съдържание на уеб страницата",
@@ -173,9 +183,11 @@
"title": "Споменаване на членове"
},
"messageAction": {
"collapse": "Скрий съобщението",
"continueGeneration": "Продължи генерирането",
"delAndRegenerate": "Изтрий и прегенерирай",
"deleteDisabledByThreads": "Съществуват подтеми, не можете да изтриете.",
"expand": "Разгъни съобщението",
"regenerate": "Прегенерирай"
},
"messages": {
@@ -240,6 +252,7 @@
"noMatchingAgents": "Няма съвпадащи членове",
"noMembersYet": "В тази група все още няма членове. Щракнете върху бутона +, за да поканите асистенти.",
"noSelectedAgents": "Все още не са избрани членове",
"openInNewWindow": "Отвори в нов прозорец",
"owner": "Собственик на групата",
"pin": "Закачи",
"pinOff": "Откачи",
@@ -326,6 +339,11 @@
"screenshot": "Екранна снимка",
"settings": "Настройки за експортиране",
"text": "Текст",
"widthMode": {
"label": "Режим на ширина",
"narrow": "Режим за тесен екран",
"wide": "Режим за широк екран"
},
"withBackground": "Включи фоново изображение",
"withFooter": "Включи долен колонтитул",
"withPluginInfo": "Включи информация за плъгина",
@@ -368,6 +386,29 @@
"remained": "Оставащи",
"used": "Използвани"
},
"tool": {
"intervention": {
"approve": "Одобряване",
"approveAndRemember": "Одобряване и запомняне",
"approveOnce": "Одобряване само този път",
"mode": {
"allowList": "Бял списък",
"allowListDesc": "Автоматично се изпълняват само одобрените инструменти",
"autoRun": "Автоматично одобрение",
"autoRunDesc": "Автоматично одобряване на всички изпълнения на инструменти",
"manual": "Ръчно",
"manualDesc": "Необходимо е ръчно одобрение при всяко извикване"
},
"reject": "Отхвърляне",
"rejectAndContinue": "Откажи и опитай отново",
"rejectOnly": "Откажи",
"rejectReasonPlaceholder": "Въведете причина за отхвърляне, за да помогнете на агента да разбере и подобри бъдещите действия",
"rejectTitle": "Отхвърляне на това извикване на инструмент",
"rejectedWithReason": "Това извикване на инструмент беше умишлено отхвърлено: {{reason}}",
"toolAbort": "Този инструмент беше отменен от потребителя",
"toolRejected": "Това извикване на инструмент беше умишлено отхвърлено"
}
},
"topic": {
"checkOpenNewTopic": "Да се отвори ли нова тема?",
"checkSaveCurrentMessages": "Искате ли да запазите текущата сесия като тема?",
+24
View File
@@ -135,6 +135,28 @@
}
},
"close": "Затвори",
"cmdk": {
"about": "Относно",
"communitySupport": "Общностна поддръжка",
"discover": "Открий",
"knowledgeBase": "База знания",
"navigate": "Навигация",
"newAgent": "Създай агент",
"noResults": "Няма намерени резултати",
"openSettings": "Отвори настройките",
"painting": "AI Рисуване",
"searchPlaceholder": "Въведете команда или търсене...",
"settings": "Настройки",
"starOnGitHub": "Дайте ни звезда в GitHub",
"submitIssue": "Подайте проблем",
"theme": "Тема",
"themeAuto": "Следвай системата",
"themeDark": "Тъмен режим",
"themeLight": "Светъл режим",
"toOpen": "Отвори",
"toSelect": "Избери"
},
"confirm": "Потвърди",
"contact": "Свържете се с нас",
"copy": "Копирай",
"copyFail": "Копирането не е успешно",
@@ -282,9 +304,11 @@
"business": "Бизнес сътрудничество",
"support": "Поддръжка по имейл"
},
"new": "Нов",
"oauth": "SSO Вход",
"officialSite": "Официален сайт",
"ok": "Добре",
"or": "или",
"password": "Парола",
"pin": "Закачи",
"pinOff": "Откачи",
+20
View File
@@ -26,6 +26,14 @@
"createChunkingTask": "Подготовка...",
"deleteSuccess": "Файлът е изтрит успешно",
"downloading": "Изтегляне на файла...",
"goBack": "Назад към предишната страница",
"goForward": "Напред към следващата страница",
"goToParent": "Влизане в родителската папка",
"moveError": "Неуспешно преместване на файла",
"moveHere": "Премести тук",
"moveSuccess": "Файлът беше преместен успешно",
"moveToFolder": "Премести в...",
"moveToRoot": "Премести в основната директория",
"removeFromKnowledgeBase": "Премахни от базата знания",
"removeFromKnowledgeBaseSuccess": "Файлът е премахнат успешно"
},
@@ -42,6 +50,12 @@
"or": "или",
"title": "Плъзнете файл или папка тук"
},
"noFolders": "Няма налични папки",
"sort": {
"dateAdded": "Дата на добавяне",
"name": "Име",
"size": "Размер"
},
"title": {
"createdAt": "Дата на създаване",
"size": "Размер",
@@ -106,6 +120,12 @@
"keyPlaceholder": "Ключ",
"valuePlaceholder": "Стойност"
},
"LocalFile": {
"action": {
"open": "Отвори",
"showInFolder": "Показване в папката"
}
},
"MaxTokenSlider": {
"unlimited": "Неограничено"
},
+2 -2
View File
@@ -102,7 +102,7 @@
"SPII": "Вашето съдържание може да съдържа чувствителна лична информация. За да защитите поверителността, моля, премахнете съответната чувствителна информация и опитайте отново.",
"default": "Съдържанието е блокирано: {{blockReason}}。请调整您的请求内容后重试。"
},
"InsufficientQuota": "Съжаляваме, квотата за този ключ е достигнала лимита. Моля, проверете баланса на акаунта си или увеличете квотата на ключа и опитайте отново.",
"InsufficientQuota": "Съжаляваме, но квотата за този ключ е изчерпана. Моля, проверете дали имате достатъчен баланс в акаунта си или увеличете квотата на ключа и опитайте отново.",
"InvalidAccessCode": "Невалиден или празен код за достъп. Моля, въведете правилния код за достъп или добавете персонализиран API ключ.",
"InvalidBedrockCredentials": "Удостоверяването на Bedrock е неуспешно. Моля, проверете AccessKeyId/SecretAccessKey и опитайте отново.",
"InvalidClerkUser": "很抱歉,你当前尚未登录,请先登录或注册账号后继续操作",
@@ -131,7 +131,7 @@
"PluginServerError": "Заявката към сървъра на плъгина върна грешка. Моля, проверете файла на манифеста на плъгина, конфигурацията на плъгина или изпълнението на сървъра въз основа на информацията за грешката по-долу",
"PluginSettingsInvalid": "Този плъгин трябва да бъде конфигуриран правилно, преди да може да се използва. Моля, проверете дали конфигурацията ви е правилна",
"ProviderBizError": "Грешка в услугата на {{provider}}, моля проверете следната информация или опитайте отново",
"QuotaLimitReached": "Съжаляваме, но текущото използване на токени или брой на заявките е достигнало лимита на квотата за този ключ. Моля, увеличете квотата на ключа или опитайте отново по-късно.",
"QuotaLimitReached": "Съжаляваме, но текущото използване на токени или броят на заявките е достигнало лимита на квотата за този ключ. Моля, увеличете квотата на ключа или опитайте отново по-късно.",
"StreamChunkError": "Грешка при парсирането на съобщение от потокова заявка. Моля, проверете дали текущият API интерфейс отговаря на стандартите или се свържете с вашия доставчик на API за консултация.",
"SubscriptionKeyMismatch": "Съжаляваме, но поради случайна системна грешка, текущото използване на абонамента временно е невалидно. Моля, кликнете върху бутона по-долу, за да възстановите абонамента, или се свържете с нас по имейл за поддръжка.",
"SubscriptionPlanLimit": "Вашият абонаментен план е изчерпан, не можете да използвате тази функция. Моля, надстройте до по-висок план или конфигурирайте персонализиран модел API, за да продължите да използвате.",
+95 -12
View File
@@ -1,5 +1,8 @@
{
"desc": "Управлявайте своите знания",
"addFolder": "Създаване на папка",
"addKnowledge": "Добавяне на знание",
"addPage": "Създаване на документ",
"desc": "Управлявайте знанията си за работа, учене и живот.",
"detail": {
"basic": {
"createdAt": "Дата на създаване",
@@ -21,22 +24,92 @@
"embeddingStatus": "Векторизация"
}
},
"documentEditor": {
"addIcon": "Добавяне на икона",
"autoSaveMessage": "Документът се запазва автоматично, не е необходимо ръчно запазване",
"chooseIcon": "Избор на икона",
"deleteConfirm": {
"content": "Документът ще бъде изтрит и няма да може да бъде възстановен. Моля, бъдете внимателни.",
"title": "Изтриване на документ"
},
"deleteError": "Неуспешно изтриване на документа",
"deleteSuccess": "Документът беше изтрит успешно",
"editedAt": "Последна редакция на {{time}}",
"editedBy": "Последно редактиран от {{name}}",
"editorPlaceholder": "Въведете съдържанието на документа, натиснете / за меню с команди",
"empty": {
"createNewDocument": "Създаване на нов документ",
"title": "Изберете документ, за да започнете",
"uploadMarkdown": "Качване на Markdown файл"
},
"linkCopied": "Връзката е копирана",
"menu": {
"copyLink": "Копиране на връзка",
"exportDocument": "Експортиране на документ",
"importDocument": "Импортиране на документ",
"pin": "Закачане на документа"
},
"saving": "Запазване...",
"titlePlaceholder": "Без заглавие",
"wordCount": "{{wordCount}} думи"
},
"documentList": {
"copyContent": "Копиране на цялото съдържание",
"duplicate": "Създаване на копие",
"empty": "Все още няма документи. Щракнете върху бутона по-горе, за да създадете първия си документ.",
"noResults": "Няма намерени съвпадащи документи",
"pageCount": "Общо {{count}} документа",
"selectNote": "Изберете документ, за да започнете редактиране",
"untitled": "Без заглавие"
},
"empty": "Няма качени файлове/папки",
"header": {
"actions": {
"newFolder": "Нова папка",
"newPage": "Създаване на нов документ",
"uploadFile": "Качване на файл",
"uploadFolder": "Качване на папка"
},
"newNoteDialog": {
"cancel": "Отказ",
"editTitle": "Редактиране на документ",
"emptyContent": "Съдържанието на документа не може да бъде празно",
"loadError": "Неуспешно зареждане на документа, моля опитайте отново",
"loading": "Зареждане...",
"save": "Запази",
"saveError": "Неуспешно запазване на документа, моля опитайте отново",
"saveSuccess": "Документът беше запазен успешно",
"title": "Нов документ",
"updateSuccess": "Документът беше обновен успешно"
},
"newPageButton": "Създай нов документ",
"uploadButton": "Качване"
},
"knowledgeBase": {
"list": {
"confirmRemoveKnowledgeBase": "Сигурни ли сте, че искате да изтриете тази база знания? Файловете в нея няма да бъдат изтрити, а ще бъдат преместени в общите файлове. След изтриването на базата знания, тя не може да бъде възстановена, моля, действайте внимателно.",
"empty": "Кликнете <1>+</1>, за да започнете създаването на база знания"
},
"new": "Нова база знания",
"title": "База знания"
"home": {
"getStarted": "Започнете",
"greeting": "Начало",
"quickActions": "Бързи действия",
"recentFiles": "Скорошни файлове",
"recentPages": "Скорошни документи",
"subtitle": "Добре дошли в базата знания. Започнете да управлявате вашите документи оттук",
"uploadEntries": {
"files": {
"title": "Качване на файлове"
},
"folder": {
"title": "Качване на папка"
},
"knowledgeBase": {
"title": "Създай база знания"
},
"newPage": {
"title": "Създаване на нов документ"
}
}
},
"menu": {
"allFiles": "Всички файлове",
"allPages": "Всички документи"
},
"networkError": "Неуспешно получаване на базата от знания, моля, проверете интернет връзката и опитайте отново",
"notSupportGuide": {
@@ -61,19 +134,29 @@
"downloadFile": "Изтеглете файла",
"unsupportedFileAndContact": "Този формат на файла не поддържа онлайн преглед. Ако имате нужда от преглед, моля, <1>свържете се с нас</1>."
},
"repo": {
"list": {
"confirmRemoveRepo": "Този хранилище ще бъде изтрито. Файловете в него няма да бъдат изтрити, а ще бъдат преместени в раздела с всички файлове. След изтриване на хранилището, то не може да бъде възстановено. Моля, действайте внимателно.",
"empty": "Кликнете <1>+</1>, за да създадете ново хранилище"
},
"new": "Създай хранилище",
"title": "Хранилище"
},
"searchFilePlaceholder": "Търсене на файл",
"searchPagePlaceholder": "Търсене на документи",
"tab": {
"all": "Всички файлове",
"all": "Всички",
"audios": "Аудио",
"documents": "Документи",
"home": "Начало",
"images": "Снимки",
"moreTypes": "Още типове",
"pages": "Документи",
"videos": "Видеа",
"websites": "Уебсайтове"
},
"title": "База знания",
"toggleLeftPanel": {
"title": "Покажи/Скрий лявото панел"
},
"toggleLeftPanel": "Показване/скриване на лявия панел",
"uploadDock": {
"body": {
"collapse": "Скрий",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Изтриване на текущите съобщения и качените файлове в сесията",
"title": "Изтриване на съобщенията в сесията"
},
"commandPalette": {
"desc": "Отворете глобалния панел с команди за бърз достъп до функции",
"title": "Панел с команди"
},
"deleteAndRegenerateMessage": {
"desc": "Изтриване на последното съобщение и повторно генериране",
"title": "Изтрий и генерирай отново"
+8
View File
@@ -37,6 +37,14 @@
"standard": "Стандартно"
}
},
"resolution": {
"label": "Резолюция",
"options": {
"1K": "1K",
"2K": "2K",
"4K": "4K"
}
},
"seed": {
"label": "Семена",
"random": "Случаен семенен код"
+1 -1
View File
@@ -295,7 +295,7 @@
},
"helpDoc": "Ръководство за конфигуриране",
"responsesApi": {
"desc": "Използва новия формат на заявките на OpenAI, отключващ функции като вериги на мислене и други усъвършенствани възможности",
"desc": "Използва новия формат за заявки на OpenAI, отключвайки разширени функции като вериги на мисълта (поддържа се само от моделите на OpenAI)",
"title": "Използване на Responses API стандарта"
},
"waitingForMore": "Още модели са в <1>планиране</1>, моля, очаквайте"
+404 -122
View File
@@ -236,6 +236,9 @@
"MiniMaxAI/MiniMax-M1-80k": {
"description": "MiniMax-M1 е мащабен модел за разсъждение с отворени тегла и смесено внимание, с 456 милиарда параметри, като всеки токен активира около 45.9 милиарда параметри. Моделът поддържа естествено контекст с дължина до 1 милион токена и чрез механизма за светкавично внимание спестява 75% от изчисленията при задачи с генериране на 100 хиляди токена в сравнение с DeepSeek R1. Освен това MiniMax-M1 използва MoE (смесен експертен) архитектура, комбинирайки CISPO алгоритъм и ефективно обучение с подсилване с дизайн на смесено внимание, постигащи водещи в индустрията резултати при дълги входни разсъждения и реални софтуерни инженерни сценарии."
},
"MiniMaxAI/MiniMax-M2": {
"description": "MiniMax-M2 преосмисля ефективността на интелигентните агенти. Това е компактен, бърз и икономичен MoE модел с общо 230 милиарда параметъра и 10 милиарда активни параметъра, създаден за постигане на върхова производителност при кодиране и задачи, свързани с интелигентни агенти, като същевременно поддържа силен общ интелект. Със само 10 милиарда активни параметъра, MiniMax-M2 предлага производителност, сравнима с тази на мащабни модели, което го прави идеален избор за приложения с висока ефективност."
},
"Moonshot-Kimi-K2-Instruct": {
"description": "Общ брой параметри 1 трилион, активирани параметри 32 милиарда. Сред немисловните модели постига водещи резултати в областта на актуални знания, математика и кодиране, с по-добри възможности за универсални агентски задачи. Специално оптимизиран за агентски задачи, не само отговаря на въпроси, но и може да предприема действия. Най-подходящ за импровизирани, универсални разговори и агентски преживявания, модел с рефлексна скорост без нужда от дълго мислене."
},
@@ -717,25 +720,31 @@
"description": "Claude 3 Opus е най-интелигентният модел на Anthropic с водещи на пазара резултати при изключително сложни задачи. Той се справя с отворени подсказки и непознати сценарии с изключителна плавност и човешко разбиране."
},
"anthropic/claude-3.5-haiku": {
"description": "Claude 3.5 Haiku е следващото поколение на нашия най-бърз модел. Със скорост, подобна на Claude 3 Haiku, той подобрява всяка компетентност и надминава предишния ни най-голям модел Claude 3 Opus в много интелигентни бенчмаркове."
"description": "Claude 3.5 Haiku предлага подобрени възможности за скорост, точност при програмиране и използване на инструменти. Подходящ за сценарии с високи изисквания към бързодействие и взаимодействие с инструменти."
},
"anthropic/claude-3.5-sonnet": {
"description": "Claude 3.5 Sonnet постига идеален баланс между интелигентност и скорост — особено за корпоративни натоварвания. Той предлага мощна производителност на по-ниска цена в сравнение с конкурентите и е проектиран за висока издръжливост при мащабни AI внедрявания."
"description": "Claude 3.5 Sonnet е бърз и ефективен модел от семейството Sonnet, предлагащ по-добра производителност при програмиране и логическо разсъждение. Някои версии постепенно ще бъдат заменени от Sonnet 3.7 и други."
},
"anthropic/claude-3.7-sonnet": {
"description": "Claude 3.7 Sonnet е първият хибриден разсъдъчен модел и най-интелигентният модел на Anthropic досега. Той предлага водещи резултати в кодиране, генериране на съдържание, анализ на данни и планиране, изграждайки се върху софтуерните инженерни и компютърни умения на предшественика си Claude 3.5 Sonnet."
"description": "Claude 3.7 Sonnet е надградена версия от серията Sonnet, предлагаща по-силни възможности за логическо разсъждение и програмиране, подходяща за сложни корпоративни задачи."
},
"anthropic/claude-haiku-4.5": {
"description": "Claude Haiku 4.5 е високопроизводителен и бърз модел на Anthropic, който съчетава висока точност с изключително ниска латентност."
},
"anthropic/claude-opus-4": {
"description": "Claude Opus 4 е най-мощният модел на Anthropic досега и най-добрият кодов модел в света, водещ в SWE-bench (72.5%) и Terminal-bench (43.2%). Той осигурява устойчива производителност за дългосрочни задачи, изискващи фокус и хиляди стъпки, като може да работи непрекъснато часове — значително разширявайки възможностите на AI агентите."
"description": "Opus 4 е флагманският модел на Anthropic, проектиран за сложни задачи и корпоративни приложения."
},
"anthropic/claude-opus-4.1": {
"description": "Claude Opus 4.1 е plug-and-play алтернатива на Opus 4, осигуряваща изключителна производителност и точност за реални кодови и агентски задачи. Opus 4.1 повишава водещата кодова производителност до 74.5% в SWE-bench Verified и обработва сложни многостъпкови проблеми с по-голяма прецизност и внимание към детайлите."
"description": "Opus 4.1 е висок клас модел на Anthropic, оптимизиран за програмиране, сложни логически задачи и продължителни процеси."
},
"anthropic/claude-opus-4.5": {
"description": "Claude Opus 4.5 е флагманският модел на Anthropic, който съчетава изключителен интелект и мащабируема производителност, подходящ за сложни задачи, изискващи най-високо качество на отговорите и способност за разсъждение."
},
"anthropic/claude-sonnet-4": {
"description": "Claude Sonnet 4 значително подобрява водещите в индустрията възможности на Sonnet 3.7, с отлични резултати в кодиране и постига водещи 72.7% в SWE-bench. Моделът балансира производителност и ефективност, подходящ е за вътрешни и външни случаи и предлага по-голям контрол чрез подобрена управляемост."
"description": "Claude Sonnet 4 е хибриден модел за разсъждение от Anthropic, предлагащ комбинирани възможности за мисловни и немисловни задачи."
},
"anthropic/claude-sonnet-4.5": {
"description": "Claude Sonnet 4.5 е най-интелигентният модел на Anthropic досега."
"description": "Claude Sonnet 4.5 е най-новият хибриден модел за разсъждение на Anthropic, оптимизиран за сложни логически задачи и програмиране."
},
"ascend-tribe/pangu-pro-moe": {
"description": "Pangu-Pro-MoE 72B-A16B е голям езиков модел с 72 милиарда параметри и 16 милиарда активирани параметри, базиран на архитектурата с групирани смесени експерти (MoGE). Той групира експертите по време на избора им и ограничава активацията на токените да активират равен брой експерти във всяка група, което осигурява балансирано натоварване на експертите и значително подобрява ефективността на разгръщане на модела на платформата Ascend."
@@ -758,6 +767,9 @@
"baidu/ERNIE-4.5-300B-A47B": {
"description": "ERNIE-4.5-300B-A47B е голям езиков модел, разработен от Baidu, базиран на архитектурата с хибридни експерти (MoE). Моделът има общо 300 милиарда параметри, но при инференция активира само 47 милиарда параметри на токен, което осигурява висока производителност и изчислителна ефективност. Като един от основните модели в серията ERNIE 4.5, той демонстрира изключителни способности в задачи като разбиране на текст, генериране, разсъждение и програмиране. Моделът използва иновативен мултимодален хетерогенен MoE метод за предварително обучение, който чрез съвместно обучение на текстови и визуални модалности значително подобрява цялостните му възможности, особено в следването на инструкции и запаметяването на световни знания."
},
"baidu/ernie-5.0-thinking-preview": {
"description": "ERNIE 5.0 Thinking Preview е ново поколение мултимодален модел на Baidu, способен на разбиране на различни модалности, следване на инструкции, творчество, отговаряне на фактически въпроси и използване на инструменти."
},
"c4ai-aya-expanse-32b": {
"description": "Aya Expanse е високопроизводителен многоезичен модел с 32B, проектиран да предизвика представянето на едноезични модели чрез иновации в настройката на инструкции, арбитраж на данни, обучение на предпочитания и комбиниране на модели. Той поддържа 23 езика."
},
@@ -818,6 +830,9 @@
"claude-opus-4-20250514": {
"description": "Claude Opus 4 е най-мощният модел на Anthropic, предназначен за обработка на изключително сложни задачи. Той се отличава с изключителна производителност, интелигентност, плавност и разбиране."
},
"claude-opus-4-5-20251101": {
"description": "Claude Opus 4.5 е флагманският модел на Anthropic, който съчетава изключителен интелект и мащабируема производителност, подходящ за сложни задачи, изискващи най-високо качество на отговорите и способност за разсъждение."
},
"claude-sonnet-4-20250514": {
"description": "Claude Sonnet 4 може да генерира почти мигновени отговори или удължено стъпково мислене, като потребителите могат ясно да проследят тези процеси."
},
@@ -866,6 +881,9 @@
"codex-mini-latest": {
"description": "codex-mini-latest е фина настройка на o4-mini, специално предназначена за Codex CLI. За директна употреба чрез API препоръчваме да започнете с gpt-4.1."
},
"cogito-2.1:671b": {
"description": "Cogito v2.1 671B е американски отворен езиков модел с безплатна търговска употреба, отличаващ се с производителност, съпоставима с водещите модели, по-висока ефективност при обработка на токени, 128k дълъг контекст и мощни общи способности."
},
"cogview-4": {
"description": "CogView-4 е първият отворен модел за генериране на изображения с текст на китайски, разработен от Zhipu, който значително подобрява разбирането на семантиката, качеството на генериране на изображения и способността за генериране на текст на китайски и английски език. Поддържа двуезичен вход на произволна дължина на китайски и английски и може да генерира изображения с произволна резолюция в зададения диапазон."
},
@@ -1049,6 +1067,9 @@
"deepseek-r1-0528": {
"description": "Пълноценен модел с 685 милиарда параметри, пуснат на 28 май 2025 г. DeepSeek-R1 използва мащабно обучение с подсилване в последващия етап на обучение, значително подобрявайки способността за разсъждение с минимални анотирани данни. Отличава се с висока производителност и способности в задачи по математика, кодиране и естествен езиков разсъждения."
},
"deepseek-r1-250528": {
"description": "DeepSeek R1 250528, пълнофункционален модел за дедукция DeepSeek-R1, подходящ за сложни математически и логически задачи."
},
"deepseek-r1-70b-fast-online": {
"description": "DeepSeek R1 70B бърза версия, поддържаща търсене в реално време, предлагаща по-бърза скорост на отговор, без да компрометира производителността на модела."
},
@@ -1059,31 +1080,34 @@
"description": "deepseek-r1-distill-llama е модел, дестилиран от DeepSeek-R1 на базата на Llama."
},
"deepseek-r1-distill-llama-70b": {
"description": "DeepSeek R1 - по-голям и по-интелигентен модел в комплекта DeepSeek - е дестилиран в архитектурата Llama 70B. На базата на бенчмаркове и човешка оценка, този модел е по-интелигентен от оригиналния Llama 70B, особено в задачи, изискващи математическа и фактическа точност."
"description": "DeepSeek R1 Distill Llama 70B, дистилиран модел, съчетаващ универсалните дедуктивни способности на R1 с екосистемата на Llama."
},
"deepseek-r1-distill-llama-8b": {
"description": "Моделите от серията DeepSeek-R1-Distill са получени чрез техника на знание дестилация, като се фино настройват образците, генерирани от DeepSeek-R1, спрямо отворени модели като Qwen и Llama."
"description": "DeepSeek-R1-Distill-Llama-8B е дистилиран голям езиков модел, базиран на Llama-3.1-8B, използващ изхода на DeepSeek R1."
},
"deepseek-r1-distill-qianfan-70b": {
"description": "DeepSeek R1 Distill Qianfan 70B, дистилиран модел R1, базиран на Qianfan-70B, с високо съотношение цена/качество."
},
"deepseek-r1-distill-qianfan-8b": {
"description": "DeepSeek R1 Distill Qianfan 8B, дистилиран модел R1, базиран на Qianfan-8B, подходящ за малки и средни приложения."
},
"deepseek-r1-distill-qianfan-llama-70b": {
"description": "Първоначално пуснат на 14 февруари 2025 г., дестилиран от екипа за разработка на модела Qianfan с базов модел Llama3_70B (създаден с Meta Llama), в дестилираните данни също е добавен корпус от Qianfan."
},
"deepseek-r1-distill-qianfan-llama-8b": {
"description": "Първоначално пуснат на 14 февруари 2025 г., дестилиран от екипа за разработка на модела Qianfan с базов модел Llama3_8B (създаден с Meta Llama), в дестилираните данни също е добавен корпус от Qianfan."
"description": "DeepSeek R1 Distill Qianfan Llama 70B, дистилиран модел R1, базиран на Llama-70B."
},
"deepseek-r1-distill-qwen": {
"description": "deepseek-r1-distill-qwen е модел, базиран на Qwen, дестилиран от DeepSeek-R1."
},
"deepseek-r1-distill-qwen-1.5b": {
"description": "Моделите от серията DeepSeek-R1-Distill са получени чрез техника на знание дестилация, като се фино настройват образците, генерирани от DeepSeek-R1, спрямо отворени модели като Qwen и Llama."
"description": "DeepSeek R1 Distill Qwen 1.5B, ултралек дистилиран модел R1, подходящ за среди с изключително ограничени ресурси."
},
"deepseek-r1-distill-qwen-14b": {
"description": "Моделите от серията DeepSeek-R1-Distill са получени чрез техника на знание дестилация, като се фино настройват образците, генерирани от DeepSeek-R1, спрямо отворени модели като Qwen и Llama."
"description": "DeepSeek R1 Distill Qwen 14B, дистилиран модел R1 със среден мащаб, подходящ за разгръщане в различни сценарии."
},
"deepseek-r1-distill-qwen-32b": {
"description": "Моделите от серията DeepSeek-R1-Distill са получени чрез техника на знание дестилация, като се фино настройват образците, генерирани от DeepSeek-R1, спрямо отворени модели като Qwen и Llama."
"description": "DeepSeek R1 Distill Qwen 32B, дистилиран модел R1, базиран на Qwen-32B, балансиращ между производителност и разходи."
},
"deepseek-r1-distill-qwen-7b": {
"description": "Моделите от серията DeepSeek-R1-Distill са получени чрез техника на знание дестилация, като се фино настройват образците, генерирани от DeepSeek-R1, спрямо отворени модели като Qwen и Llama."
"description": "DeepSeek R1 Distill Qwen 7B, лек дистилиран модел R1, подходящ за edge устройства и частни корпоративни среди."
},
"deepseek-r1-fast-online": {
"description": "DeepSeek R1 пълна бърза версия, поддържаща търсене в реално време, комбинираща мощността на 671B параметри с по-бърза скорост на отговор."
@@ -1112,12 +1136,27 @@
"deepseek-v3.1-terminus": {
"description": "DeepSeek-V3.1-Terminus е оптимизирана версия на голям езиков модел от DeepSeek, създаден специално за крайни устройства."
},
"deepseek-v3.1-think-250821": {
"description": "DeepSeek V3.1 Think 250821, модел за дълбоко мислене, съответстващ на версията Terminus, подходящ за високопроизводителни дедуктивни задачи."
},
"deepseek-v3.1:671b": {
"description": "DeepSeek V3.1: следващо поколение модел за разсъждение, подобряващ способностите за сложни разсъждения и свързано мислене, подходящ за задачи, изискващи задълбочен анализ."
},
"deepseek-v3.2-exp": {
"description": "deepseek-v3.2-exp въвежда механизъм за разредено внимание, с цел подобряване на ефективността при обучение и извод при обработка на дълги текстове, като цената е по-ниска от тази на deepseek-v3.1."
},
"deepseek-v3.2-think": {
"description": "DeepSeek V3.2 Think, пълнофункционален модел за дълбоко мислене, с подсилени способности за дълговерижна дедукция."
},
"deepseek-vl2": {
"description": "DeepSeek VL2, мултимодален модел, поддържащ разбиране на изображения и текст, както и фино визуално въпроси-отговори."
},
"deepseek-vl2-small": {
"description": "DeepSeek VL2 Small, олекотена мултимодална версия, подходяща за среди с ограничени ресурси и висока едновременност."
},
"deepseek/deepseek-chat": {
"description": "DeepSeek-V3 е високопроизводителен хибриден модел за разсъждение от екипа на DeepSeek, подходящ за сложни задачи и интеграция с инструменти."
},
"deepseek/deepseek-chat-v3-0324": {
"description": "DeepSeek V3 е експертен смесен модел с 685B параметри, последната итерация на флагманската серия чат модели на екипа DeepSeek.\n\nТой наследява модела [DeepSeek V3](/deepseek/deepseek-chat-v3) и показва отлични резултати в различни задачи."
},
@@ -1125,19 +1164,19 @@
"description": "DeepSeek V3 е експертен смесен модел с 685B параметри, последната итерация на флагманската серия чат модели на екипа DeepSeek.\n\nТой наследява модела [DeepSeek V3](/deepseek/deepseek-chat-v3) и показва отлични резултати в различни задачи."
},
"deepseek/deepseek-chat-v3.1": {
"description": "DeepSeek-V3.1 е голям хибриден модел за разсъждение, който поддържа 128K дълъг контекст и ефективно превключване на режими, постигащ изключителна производителност и скорост при използване на инструменти, генериране на код и сложни задачи за разсъждение."
"description": "DeepSeek-V3.1 е хибриден модел за разсъждение с дълъг контекст от DeepSeek, поддържащ комбинирани мисловни и немисловни режими и интеграция с инструменти."
},
"deepseek/deepseek-r1": {
"description": "DeepSeek R1 моделът е получил малка версия ъпгрейд, текущата версия е DeepSeek-R1-0528. В последната актуализация DeepSeek R1 значително подобри дълбочината и способността за разсъждение чрез използване на увеличени изчислителни ресурси и въвеждане на алгоритмични оптимизации след обучението. Моделът постига отлични резултати в множество бенчмаркове като математика, програмиране и обща логика, като общата му производителност вече се доближава до водещи модели като O3 и Gemini 2.5 Pro."
},
"deepseek/deepseek-r1-0528": {
"description": "DeepSeek-R1 значително подобрява способността за разсъждение на модела дори с много малко анотирани данни. Преди да изведе окончателния отговор, моделът първо генерира мисловна верига, за да повиши точността на крайния отговор."
"description": "DeepSeek R1 0528 е обновен вариант на DeepSeek, фокусиран върху отвореност и дълбочина на разсъждение."
},
"deepseek/deepseek-r1-0528:free": {
"description": "DeepSeek-R1 значително подобрява способността за разсъждение на модела дори с много малко анотирани данни. Преди да изведе окончателния отговор, моделът първо генерира мисловна верига, за да повиши точността на крайния отговор."
},
"deepseek/deepseek-r1-distill-llama-70b": {
"description": "DeepSeek-R1-Distill-Llama-70B е дистилиран и по-ефективен вариант на 70B Llama модела. Той запазва силна производителност при генериране на текст, намалявайки изчислителните разходи за по-лесно внедряване и изследване. Обслужва се от Groq с помощта на техния персонализиран хардуер за езикова обработка (LPU), осигурявайки бързо и ефективно разсъждение."
"description": "DeepSeek R1 Distill Llama 70B е голям езиков модел, базиран на Llama3.3 70B, който използва фино настройване, извлечено от DeepSeek R1, за да постигне конкурентна производителност, съпоставима с водещите мащабни модели."
},
"deepseek/deepseek-r1-distill-llama-8b": {
"description": "DeepSeek R1 Distill Llama 8B е дестилиран голям езиков модел, базиран на Llama-3.1-8B-Instruct, обучен с изхода на DeepSeek R1."
@@ -1154,6 +1193,9 @@
"deepseek/deepseek-r1:free": {
"description": "DeepSeek-R1 значително подобри способността на модела за разсъждение при наличието на много малко маркирани данни. Преди да предостави окончателния отговор, моделът първо ще изведе част от съдържанието на веригата на мислене, за да повиши точността на окончателния отговор."
},
"deepseek/deepseek-reasoner": {
"description": "DeepSeek-V3 Thinking (reasoner) е експериментален модел за разсъждение от DeepSeek, подходящ за задачи с висока сложност."
},
"deepseek/deepseek-v3": {
"description": "Бърз универсален голям езиков модел с подобрени способности за разсъждение."
},
@@ -1253,83 +1295,89 @@
"emohaa": {
"description": "Emohaa е психологически модел с професионални консултантски способности, помагащ на потребителите да разберат емоционалните проблеми."
},
"ernie-3.5-128k": {
"description": "Флагманският голям езиков модел, разработен от Baidu, обхваща огромно количество китайски и английски текстове, притежаващ силни общи способности, способен да отговори на повечето изисквания за диалогови въпроси и отговори, генериране на съдържание и приложения на плъгини; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията."
},
"ernie-3.5-8k": {
"description": "Флагманският голям езиков модел, разработен от Baidu, обхваща огромно количество китайски и английски текстове, притежаващ силни общи способности, способен да отговори на повечето изисквания за диалогови въпроси и отговори, генериране на съдържание и приложения на плъгини; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията."
},
"ernie-3.5-8k-preview": {
"description": "Флагманският голям езиков модел, разработен от Baidu, обхваща огромно количество китайски и английски текстове, притежаващ силни общи способности, способен да отговори на повечето изисквания за диалогови въпроси и отговори, генериране на съдържание и приложения на плъгини; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията."
},
"ernie-4.0-8k-latest": {
"description": "Флагманският голям езиков модел, разработен от Baidu, с изключителни подобрения в сравнение с ERNIE 3.5, широко приложим в сложни задачи в различни области; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията."
},
"ernie-4.0-8k-preview": {
"description": "Флагманският голям езиков модел, разработен от Baidu, с изключителни подобрения в сравнение с ERNIE 3.5, широко приложим в сложни задачи в различни области; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията."
},
"ernie-4.0-turbo-128k": {
"description": "Флагманският голям езиков модел, разработен от Baidu, с отлични общи резултати, широко приложим в сложни задачи в различни области; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията. В сравнение с ERNIE 4.0, показва по-добри резултати."
},
"ernie-4.0-turbo-8k-latest": {
"description": "Флагманският голям езиков модел, разработен от Baidu, с отлични общи резултати, широко приложим в сложни задачи в различни области; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията. В сравнение с ERNIE 4.0, показва по-добри резултати."
},
"ernie-4.0-turbo-8k-preview": {
"description": "Флагманският голям езиков модел, разработен от Baidu, с отлични общи резултати, широко приложим в сложни задачи в различни области; поддържа автоматично свързване с плъгина за търсене на Baidu, осигурявайки актуалност на информацията. В сравнение с ERNIE 4.0, показва по-добри резултати."
"ernie-4.5-0.3b": {
"description": "ERNIE 4.5 0.3B, отворен и лек модел, подходящ за локално и персонализирано внедряване."
},
"ernie-4.5-21b-a3b": {
"description": "ERNIE 4.5 21B A3B е хибриден експертен модел, разработен от Baidu Wenxin, с мощни способности за извеждане на заключения и поддръжка на множество езици."
"description": "ERNIE 4.5 21B A3B, отворен модел с голям брой параметри, с по-добра производителност при задачи за разбиране и генериране."
},
"ernie-4.5-300b-a47b": {
"description": "ERNIE 4.5 300B A47B е мащабен хибриден експертен модел от Baidu Wenxin, отличаващ се с изключителни способности за извеждане на заключения."
},
"ernie-4.5-8k-preview": {
"description": "Моделът Ernie 4.5 е ново поколение оригинален много модален основен модел, разработен от Baidu, който постига съвместна оптимизация чрез многомодално моделиране, с отлични способности за разбиране на много модалности; предлага усъвършенствани езикови способности, с подобрено разбиране, генериране, логика и памет, значително подобрени способности за избягване на халюцинации, логическо разсъждение и код."
"description": "ERNIE 4.5 8K Preview, модел с 8K контекст за предварителен преглед, предназначен за тестване на възможностите на Wenxin 4.5."
},
"ernie-4.5-turbo-128k": {
"description": "Wenxin 4.5 Turbo показва значителни подобрения в областите на елиминиране на илюзии, логическо разсъждение и кодиране. В сравнение с Wenxin 4.5, е по-бърз и по-евтин. Моделът е с цялостно подобрени способности, по-добре отговарящи на задачите за обработка на многократни дълги исторически разговори и разбиране на дълги документи."
"description": "ERNIE 4.5 Turbo 128K, високопроизводителен универсален модел, поддържащ търсене с подобрение и използване на инструменти, подходящ за въпроси-отговори, код, агенти и други бизнес сценарии."
},
"ernie-4.5-turbo-128k-preview": {
"description": "ERNIE 4.5 Turbo 128K Preview, предварителна версия с възможности, идентични на официалната, подходяща за интеграционно тестване и поетапно внедряване."
},
"ernie-4.5-turbo-32k": {
"description": "Wenxin 4.5 Turbo показва значителни подобрения в областите на елиминиране на илюзии, логическо разсъждение и кодиране. В сравнение с Wenxin 4.5, е по-бърз и по-евтин. Способностите за текстово творчество и знания са значително подобрени. Дължината на изхода и времето за забавяне на цялото изречение са увеличени в сравнение с ERNIE 4.5."
"description": "ERNIE 4.5 Turbo 32K, версия с междинен контекст, подходяща за въпроси-отговори, търсене в бази знания и многократни диалози."
},
"ernie-4.5-turbo-latest": {
"description": "ERNIE 4.5 Turbo Latest, оптимизиран за цялостна производителност, подходящ като основен универсален модел за продукционна среда."
},
"ernie-4.5-turbo-vl": {
"description": "ERNIE 4.5 Turbo VL, зрял мултимодален модел, подходящ за задачи по разбиране и разпознаване на изображения и текст в продукционна среда."
},
"ernie-4.5-turbo-vl-32k": {
"description": "Нова версия на големия модел Wenxin, с значително подобрени способности за разбиране на изображения, творчество, превод и кодиране, за първи път поддържа контекстна дължина от 32K, значително намалено забавяне при първия токен."
"description": "ERNIE 4.5 Turbo VL 32K, мултимодална версия с междинен контекст, подходяща за съвместно разбиране на дълги документи и изображения."
},
"ernie-4.5-turbo-vl-32k-preview": {
"description": "ERNIE 4.5 Turbo VL 32K Preview, предварителна мултимодална версия с 32K контекст, улесняваща оценката на визуалните способности при дълъг контекст."
},
"ernie-4.5-turbo-vl-latest": {
"description": "ERNIE 4.5 Turbo VL Latest, най-новата мултимодална версия, предлагаща по-добро разбиране и дедукция на изображения и текст."
},
"ernie-4.5-turbo-vl-preview": {
"description": "ERNIE 4.5 Turbo VL Preview, предварителен мултимодален модел, поддържащ разбиране и генериране на изображения и текст, подходящ за визуални въпроси-отговори и разбиране на съдържание."
},
"ernie-4.5-vl-28b-a3b": {
"description": "ERNIE 4.5 VL 28B A3B, отворен мултимодален модел, поддържащ разбиране и дедукция на изображения и текст."
},
"ernie-5.0-thinking-preview": {
"description": "Wenxin 5.0 Thinking Preview, флагмански модел с пълна мултимодалност, поддържащ унифицирано моделиране на текст, изображения, аудио и видео, с цялостно подобрени способности, подходящ за сложни въпроси, творчество и интелигентни агенти."
},
"ernie-char-8k": {
"description": "Специализиран голям езиков модел, разработен от Baidu, подходящ за приложения като NPC в игри, диалози на клиентска поддръжка и ролеви игри, с по-изразителен и последователен стил на персонажите, по-силна способност за следване на инструкции и по-добра производителност на разсъжденията."
"description": "ERNIE Character 8K, модел за диалог с характер и личност, подходящ за изграждане на IP персонажи и дългосрочни разговори."
},
"ernie-char-fiction-8k": {
"description": "Специализиран голям езиков модел, разработен от Baidu, подходящ за приложения като NPC в игри, диалози на клиентска поддръжка и ролеви игри, с по-изразителен и последователен стил на персонажите, по-силна способност за следване на инструкции и по-добра производителност на разсъжденията."
"description": "ERNIE Character Fiction 8K, персонализиран модел за създаване на романи и сюжетни линии, подходящ за генериране на дълги истории."
},
"ernie-char-fiction-8k-preview": {
"description": "ERNIE Character Fiction 8K Preview, предварителна версия на модел за създаване на персонажи и сюжети, предназначена за тестване и демонстрация."
},
"ernie-irag-edit": {
"description": "Собствен модел за редактиране на изображения ERNIE iRAG на Baidu поддържа операции като изтриване (erase), прерисуване (repaint) и вариации (variation) върху изображения."
"description": "ERNIE iRAG Edit, модел за редактиране на изображения, поддържащ изтриване, прерисуване и генериране на варианти."
},
"ernie-lite-8k": {
"description": "ERNIE Lite е лек голям езиков модел, разработен от Baidu, който съчетава отлични резултати с производителност на разсъжденията, подходящ за използване с AI ускорителни карти с ниска изчислителна мощ."
"description": "ERNIE Lite 8K, лек универсален модел, подходящ за ежедневни въпроси и генериране на съдържание с ограничен бюджет."
},
"ernie-lite-pro-128k": {
"description": "Лек голям езиков модел, разработен от Baidu, който съчетава отлични резултати с производителност на разсъжденията, с по-добри резултати в сравнение с ERNIE Lite, подходящ за използване с AI ускорителни карти с ниска изчислителна мощ."
"description": "ERNIE Lite Pro 128K, лек и високопроизводителен модел, подходящ за бизнес сценарии, чувствителни към закъснение и разходи."
},
"ernie-novel-8k": {
"description": "Общ голям езиков модел, разработен от Baidu, с очевидни предимства в продължаването на разкази, подходящ и за кратки пиеси и филми."
"description": "ERNIE Novel 8K, модел за създаване на дълги романи и IP сюжети, с умения за многоперсонажно и многолинейно повествование."
},
"ernie-speed-128k": {
"description": "Най-новият високопроизводителен голям езиков модел, разработен от Baidu през 2024 г., с отлични общи способности, подходящ за финализиране на специфични проблеми, с отлична производителност на разсъжденията."
"description": "ERNIE Speed 128K, голям модел без разходи за вход/изход, подходящ за разбиране на дълги текстове и мащабно тестване."
},
"ernie-speed-8k": {
"description": "ERNIE Speed 8K, безплатен и бърз модел, подходящ за ежедневни разговори и леки текстови задачи."
},
"ernie-speed-pro-128k": {
"description": "Най-новият високопроизводителен голям езиков модел, разработен от Baidu през 2024 г., с отлични общи способности, с по-добри резултати в сравнение с ERNIE Speed, подходящ за финализиране на специфични проблеми, с отлична производителност на разсъжденията."
"description": "ERNIE Speed Pro 128K, модел с висока едновременност и отлична цена/производителност, подходящ за мащабни онлайн услуги и корпоративни приложения."
},
"ernie-tiny-8k": {
"description": "ERNIE Tiny е модел с изключителна производителност, разработен от Baidu, с най-ниски разходи за внедряване и фина настройка сред моделите от серията Wenxin."
},
"ernie-x1-32k": {
"description": "Разполага с по-силни способности за разбиране, планиране, размисъл и еволюция. Като модел за дълбоко мислене с по-пълни способности, Wenxin X1 съчетава точност, креативност и изящество, и се представя особено добре в области като китайски знания, литературно творчество, писане на документи, ежедневни разговори, логическо разсъждение, сложни изчисления и извикване на инструменти."
},
"ernie-x1-32k-preview": {
"description": "Моделът Wenxin X1 притежава по-силни способности за разбиране, планиране, размисъл и еволюция. Като модел за дълбоко мислене с по-широки възможности, Wenxin X1 съчетава точност, креативност и изящество, особено в области като китайски знания и отговори, литературно творчество, писане на документи, ежедневни разговори, логическо разсъждение, сложни изчисления и извикване на инструменти."
"description": "ERNIE Tiny 8K, ултралек модел, подходящ за прости въпроси, класификация и други нискобюджетни дедуктивни задачи."
},
"ernie-x1-turbo-32k": {
"description": "В сравнение с ERNIE-X1-32K, моделът предлага по-добри резултати и производителност."
"description": "ERNIE X1 Turbo 32K, модел за бързо мислене с 32K дълъг контекст, подходящ за сложна дедукция и многократни диалози."
},
"ernie-x1.1-preview": {
"description": "ERNIE X1.1 Preview, предварителна версия на модела за мислене ERNIE X1.1, подходяща за тестване и валидиране на способности."
},
"fal-ai/bytedance/seedream/v4": {
"description": "Seedream 4.0 е модел за генериране на изображения, разработен от екипа Seed на ByteDance, поддържа вход от текст и изображения, предоставя висококонтролирано и качествено генериране на изображения. Генерира изображения на базата на текстови подсказки."
@@ -1389,7 +1437,7 @@
"description": "FLUX.1 [schnell] е най-напредналият отворен модел с малък брой стъпки, който надминава конкурентите си и дори превъзхожда мощни нефино настроени модели като Midjourney v6.0 и DALL·E 3 (HD). Моделът е специално фино настроен, за да запази пълното разнообразие на изхода от предварителното обучение и значително подобрява визуалното качество, следването на инструкции, промяната на размери/пропорции, обработката на шрифтове и разнообразието на изхода в сравнение с най-съвременните модели на пазара, предоставяйки по-богато и разнообразно творческо генериране на изображения."
},
"flux.1-schnell": {
"description": "Коригиран потоков трансформър с 12 милиарда параметри, способен да генерира изображения въз основа на текстово описание."
"description": "FLUX.1-schnell, високопроизводителен модел за генериране на изображения, подходящ за бързо създаване на изображения в различни стилове."
},
"gemini-1.0-pro-001": {
"description": "Gemini 1.0 Pro 001 (Тунинг) предлага стабилна и настройваема производителност, идеален избор за решения на сложни задачи."
@@ -1454,9 +1502,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash е вариант на модела, оптимизиран за икономичност и ниска латентност."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash предварителен модел, поддържащ генериране на изображения"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash е най-ефективният модел на Google, предлагащ пълна функционалност."
},
@@ -1484,9 +1529,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview е моделът с най-добро съотношение цена-качество на Google, предлагащ пълна функционалност."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview е най-ефективният модел на Google, предлагащ пълна функционалност."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Прегледна версия (25 септември 2025 г.) на Gemini 2.5 Flash"
},
@@ -1502,6 +1544,15 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview е най-напредналият мисловен модел на Google, способен да разсъждава върху сложни проблеми в областта на кодирането, математиката и STEM, както и да анализира големи набори от данни, кодови бази и документи с дълъг контекст."
},
"gemini-3-pro-image-preview": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) е модел за генериране на изображения от Google, който поддържа и мултимодален диалог."
},
"gemini-3-pro-image-preview:image": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) е модел за генериране на изображения от Google, който поддържа и мултимодален диалог."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro е най-добрият в света модел за мултимодално разбиране, както и най-мощният интелигентен агент и модел за програмиране на атмосфера от Google досега. Предлага богати визуални ефекти и дълбока интерактивност, базирани на най-съвременни логически способности."
},
"gemini-flash-latest": {
"description": "Последно издание на Gemini Flash"
},
@@ -1538,6 +1589,9 @@
"glm-4-0520": {
"description": "GLM-4-0520 е най-новата версия на модела, проектирана за високо сложни и разнообразни задачи, с отлични резултати."
},
"glm-4-32b-0414": {
"description": "GLM-4 32B 0414, универсален голям езиков модел от серията GLM, поддържащ многозадачно генериране и разбиране на текст."
},
"glm-4-9b-chat": {
"description": "GLM-4-9B-Chat показва висока производителност в области като семантика, математика, логическо мислене, програмиране и общи знания. Поддържа също така уеб браузване, изпълнение на код, извикване на персонализирани инструменти и извеждане на заключения от дълги текстове. Поддържа 26 езика, включително японски, корейски и немски."
},
@@ -1623,7 +1677,7 @@
"description": "GLM-Zero-Preview притежава мощни способности за сложни разсъждения, показвайки отлични резултати в логическото разсъждение, математиката и програмирането."
},
"google/gemini-2.0-flash": {
"description": "Gemini 2.0 Flash предлага следващо поколение функции и подобрения, включително изключителна скорост, вградена употреба на инструменти, мултимодално генериране и контекстен прозорец от 1 милион токена."
"description": "Gemini 2.0 Flash е високопроизводителен модел за разсъждение от Google, подходящ за разширени мултимодални задачи."
},
"google/gemini-2.0-flash-001": {
"description": "Gemini 2.0 Flash предлага следващо поколение функции и подобрения, включително изключителна скорост, нативна употреба на инструменти, многомодално генериране и контекстен прозорец от 1M токена."
@@ -1634,14 +1688,23 @@
"google/gemini-2.0-flash-lite": {
"description": "Gemini 2.0 Flash Lite предлага следващо поколение функции и подобрения, включително изключителна скорост, вградена употреба на инструменти, мултимодално генериране и контекстен прозорец от 1 милион токена."
},
"google/gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash Lite е олекотена версия от семейството Gemini, по подразбиране без активирано разсъждение за по-ниска латентност и разходи, но може да бъде активирано чрез параметри."
},
"google/gemini-2.5-flash": {
"description": "Gemini 2.5 Flash е мислещ модел, който предлага отлични всеобхватни възможности. Той е проектиран да балансира цена и производителност, поддържайки мултимодалност и контекстен прозорец от 1 милион токена."
"description": "Серията Gemini 2.5 Flash (Lite/Pro/Flash) са модели на Google с ниска до висока латентност и производителност за разсъждение."
},
"google/gemini-2.5-flash-image": {
"description": "Gemini 2.5 Flash Image (Nano Banana) е модел за генериране на изображения от Google, който поддържа и мултимодален диалог."
},
"google/gemini-2.5-flash-image-free": {
"description": "Безплатна версия на Gemini 2.5 Flash Image, поддържа ограничено количество мултимодално генериране."
},
"google/gemini-2.5-flash-image-preview": {
"description": "Gemini 2.5 Flash експериментален модел, поддържащ генериране на изображения."
},
"google/gemini-2.5-flash-lite": {
"description": "Gemini 2.5 Flash-Lite е балансиран, с ниска латентност модел с конфигурируем бюджет за мислене и свързаност с инструменти (например Google Search grounding и изпълнение на код). Поддържа мултимодален вход и предлага контекстен прозорец от 1 милион токена."
"description": "Gemini 2.5 Flash Lite е олекотена версия на Gemini 2.5, оптимизирана за ниска латентност и разходи, подходяща за сценарии с висок трафик."
},
"google/gemini-2.5-flash-preview": {
"description": "Gemini 2.5 Flash е най-напредналият основен модел на Google, проектиран за напреднали разсъждения, кодиране, математика и научни задачи. Той включва вградена способност за \"мислене\", което му позволява да предоставя отговори с по-висока точност и детайлна обработка на контекста.\n\nЗабележка: Този модел има два варианта: с мислене и без мислене. Цените на изхода значително варират в зависимост от активирането на способността за мислене. Ако изберете стандартния вариант (без суфикс \":thinking\"), моделът ще избягва генерирането на токени за мислене.\n\nЗа да се възползвате от способността за мислене и да получите токени за мислене, трябва да изберете варианта \":thinking\", което ще доведе до по-високи цени на изхода за мислене.\n\nОсвен това, Gemini 2.5 Flash може да бъде конфигуриран чрез параметъра \"максимален брой токени за разсъждение\", както е описано в документацията (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)."
@@ -1650,11 +1713,26 @@
"description": "Gemini 2.5 Flash е най-напредналият основен модел на Google, проектиран за напреднали разсъждения, кодиране, математика и научни задачи. Той включва вградена способност за \"мислене\", което му позволява да предоставя отговори с по-висока точност и детайлна обработка на контекста.\n\nЗабележка: Този модел има два варианта: с мислене и без мислене. Цените на изхода значително варират в зависимост от активирането на способността за мислене. Ако изберете стандартния вариант (без суфикс \":thinking\"), моделът ще избягва генерирането на токени за мислене.\n\nЗа да се възползвате от способността за мислене и да получите токени за мислене, трябва да изберете варианта \":thinking\", което ще доведе до по-високи цени на изхода за мислене.\n\nОсвен това, Gemini 2.5 Flash може да бъде конфигуриран чрез параметъра \"максимален брой токени за разсъждение\", както е описано в документацията (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)."
},
"google/gemini-2.5-pro": {
"description": "Gemini 2.5 Pro е нашият най-напреднал разсъдъчен Gemini модел, способен да решава сложни проблеми. Той разполага с контекстен прозорец от 2 милиона токена и поддържа мултимодален вход, включително текст, изображения, аудио, видео и PDF документи."
"description": "Gemini 2.5 Pro е флагманският модел за разсъждение на Google, поддържащ дълъг контекст и сложни задачи."
},
"google/gemini-2.5-pro-free": {
"description": "Безплатна версия на Gemini 2.5 Pro, поддържа ограничен мултимодален дълъг контекст, подходяща за тестване и леки работни потоци."
},
"google/gemini-2.5-pro-preview": {
"description": "Gemini 2.5 Pro Preview е най-усъвършенстваният мисловен модел на Google, способен да извършва разсъждения върху сложни проблеми в областта на кодирането, математиката и STEM, както и да анализира големи набори от данни, кодови бази и документи с дълъг контекст."
},
"google/gemini-3-pro-image-preview": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) е модел на Google за генериране на изображения, който поддържа мултимодален диалог."
},
"google/gemini-3-pro-image-preview-free": {
"description": "Безплатна версия на Gemini 3 Pro Image, поддържа ограничено количество мултимодално генериране."
},
"google/gemini-3-pro-preview": {
"description": "Gemini 3 Pro е следващото поколение мултимодален модел за разсъждение от серията Gemini, способен да разбира текст, аудио, изображения, видео и други входове, и да обработва сложни задачи и големи кодови бази."
},
"google/gemini-3-pro-preview-free": {
"description": "Безплатна предварителна версия на Gemini 3 Pro, предлага същите мултимодални възможности за разбиране и разсъждение като стандартната версия, но с ограничения в безплатния лимит и скорост, по-подходяща за тестване и нискочестотна употреба."
},
"google/gemini-embedding-001": {
"description": "Водещ модел за вграждане с отлична производителност при задачи на английски, многоезични и кодови задачи."
},
@@ -1826,6 +1904,18 @@
"gpt-5-pro": {
"description": "GPT-5 pro използва повече изчислителна мощност за по-задълбочено мислене и постоянно предоставя по-добри отговори."
},
"gpt-5.1": {
"description": "GPT-5.1 — флагмански модел, оптимизиран за кодиране и задачи с агенти, поддържа конфигурируема интензивност на разсъждение и по-дълъг контекст."
},
"gpt-5.1-chat-latest": {
"description": "GPT-5.1 Chat: вариант на GPT-5.1 за ChatGPT, подходящ за чат сценарии."
},
"gpt-5.1-codex": {
"description": "GPT-5.1 Codex: версия на GPT-5.1, оптимизирана за агентски задачи по кодиране, използваема в Responses API за по-сложни работни потоци с код и агенти."
},
"gpt-5.1-codex-mini": {
"description": "GPT-5.1 Codex mini: по-компактен и икономичен вариант на Codex, оптимизиран за агентски задачи по кодиране."
},
"gpt-audio": {
"description": "GPT Audio е универсален чат модел, ориентиран към аудио вход и изход, поддържащ използване на аудио I/O в Chat Completions API."
},
@@ -1868,6 +1958,12 @@
"grok-4-0709": {
"description": "Grok 4 от xAI, с мощни способности за разсъждение."
},
"grok-4-1-fast-non-reasoning": {
"description": "Модерен мултимодален модел, специално оптимизиран за високоефективно използване на агентски инструменти."
},
"grok-4-1-fast-reasoning": {
"description": "Модерен мултимодален модел, специално оптимизиран за високоефективно използване на агентски инструменти."
},
"grok-4-fast-non-reasoning": {
"description": "С удоволствие представяме Grok 4 Fast, нашият най-нов напредък в модели за разсъждение с висока ефективност на разходите."
},
@@ -2001,32 +2097,47 @@
"description": "Imagen: серия от модели от 4-то поколение за генериране на изображения от текст"
},
"imagen-4.0-generate-preview-06-06": {
"description": "Imagen 4-то поколение текст-към-изображение модел серия"
"description": "Четвърто поколение модели Imagen за генериране на изображения от текст."
},
"imagen-4.0-ultra-generate-001": {
"description": "Imagen, 4-то поколение модел за преобразуване на текст в изображение, серия Ultra"
},
"imagen-4.0-ultra-generate-preview-06-06": {
"description": "Imagen 4-то поколение текст-към-изображение модел серия Ултра версия"
"description": "Ultra версия на четвъртото поколение модели Imagen за генериране на изображения от текст."
},
"inception/mercury-coder-small": {
"description": "Mercury Coder Small е идеален за задачи по генериране, отстраняване на грешки и рефакториране на код с минимална латентност."
},
"inclusionAI/Ling-1T": {
"description": "Ling-1T е първият флагмански non-thinking модел от серията „Ling 2.0“, с общо 1 трилион параметри и около 50 милиарда активни параметри на токен. Изграден върху архитектурата Ling 2.0, Ling-1T цели да преодолее границите на ефективното разсъждение и мащабируемото познание. Ling-1T-base е обучен върху над 20 трилиона висококачествени, интензивно логически токени."
},
"inclusionAI/Ling-flash-2.0": {
"description": "Ling-flash-2.0 е третият модел от серията Ling 2.0 архитектури, публикуван от екипа на Ant Group Bailing. Това е модел с хибридни експерти (MoE) с общо 100 милиарда параметри, но при всеки токен активира само 6.1 милиарда параметри (без вграждания – 4.8 милиарда). Като леко конфигуриран модел, Ling-flash-2.0 показва в множество авторитетни оценки производителност, сравнима или дори превъзхождаща плътни (Dense) модели с 40 милиарда параметри и по-големи MoE модели. Моделът е предназначен да изследва пътища за висока ефективност чрез изключителен дизайн на архитектурата и стратегии за обучение, в контекста на общоприетото схващане, че „големият модел е равен на големи параметри“."
},
"inclusionAI/Ling-mini-2.0": {
"description": "Ling-mini-2.0 е малък, но високопроизводителен голям езиков модел, базиран на MoE архитектура. Той има общо 16 милиарда параметри, но при всеки токен активира само 1.4 милиарда (без вграждания – 789 милиона), което осигурява изключително бърза генерация. Благодарение на ефективния MoE дизайн и големия обем висококачествени тренировъчни данни, въпреки че активираните параметри са само 1.4 милиарда, Ling-mini-2.0 демонстрира върхова производителност в downstream задачи, сравнима с плътни LLM под 10 милиарда параметри и по-големи MoE модели."
},
"inclusionAI/Ring-1T": {
"description": "Ring-1T е отворен модел за мислене с трилион параметри, разработен от екипа на Bailing. Базиран е на архитектурата Ling 2.0 и основния модел Ling-1T-base, с общо 1 трилион параметри и 50 милиарда активни параметри, поддържащ контекстуален прозорец до 128K. Моделът е оптимизиран чрез мащабно обучение с проверими награди и подсилено обучение."
},
"inclusionAI/Ring-flash-2.0": {
"description": "Ring-flash-2.0 е високопроизводителен мисловен модел, дълбоко оптимизиран на базата на Ling-flash-2.0-base. Той използва MoE архитектура с общо 100 милиарда параметри, но при всяко извод активира само 6.1 милиарда параметри. Моделът решава нестабилността на големите MoE модели при обучение с подсилено учене (RL) чрез уникалния алгоритъм icepop, което позволява непрекъснато подобряване на сложните разсъждения при дългосрочно обучение. Ring-flash-2.0 постига значителни пробиви в множество трудни бенчмаркове като математически състезания, генериране на код и логически разсъждения. Неговата производителност не само превъзхожда топ плътни модели с по-малко от 40 милиарда параметри, но и се сравнява с по-големи отворени MoE модели и затворени високопроизводителни мисловни модели. Въпреки че е фокусиран върху сложни разсъждения, моделът се представя отлично и в творческо писане. Благодарение на ефективния си архитектурен дизайн, Ring-flash-2.0 осигурява висока производителност и бърз извод, значително намалявайки разходите за внедряване на мисловни модели при висока паралелност."
},
"inclusionai/ling-1t": {
"description": "Ling-1T е MoE модел с 1 трилион параметъра от inclusionAI, оптимизиран за интензивни логически задачи и мащабен контекст."
},
"inclusionai/ling-flash-2.0": {
"description": "Ling-flash-2.0 е MoE модел от inclusionAI, оптимизиран за ефективност и логическа производителност, подходящ за средни и големи задачи."
},
"inclusionai/ling-mini-2.0": {
"description": "Ling-mini-2.0 е олекотен MoE модел от inclusionAI, който значително намалява разходите, като запазва логическите си способности."
},
"inclusionai/ming-flash-omini-preview": {
"description": "Ming-flash-omni Preview е мултимодален модел от inclusionAI, поддържащ вход от глас, изображения и видео, с подобрени възможности за визуализация и разпознаване на реч."
},
"inclusionai/ring-1t": {
"description": "Ring-1T е MoE модел за разсъждение с трилион параметри от inclusionAI, подходящ за мащабни логически и изследователски задачи."
},
"inclusionai/ring-flash-2.0": {
"description": "Ring-flash-2.0 е вариант на модела Ring от inclusionAI, насочен към сценарии с висок трафик, с акцент върху скорост и разходна ефективност."
},
"inclusionai/ring-mini-2.0": {
"description": "Ring-mini-2.0 е олекотена версия на MoE модела от inclusionAI с висока пропускателна способност, предназначена за паралелни сценарии."
},
"internlm/internlm2_5-7b-chat": {
"description": "InternLM2.5 предлага интелигентни решения за диалог в множество сценарии."
},
@@ -2036,14 +2147,26 @@
"internlm3-latest": {
"description": "Нашата най-нова серия модели с изключителна производителност на разсъжденията, водеща в категорията на отворените модели. По подразбиране сочи към най-ново публикуваната серия модели InternLM3."
},
"internvl2.5-38b-mpo": {
"description": "InternVL2.5 38B MPO, мултимодален предварително обучен модел, способен на сложни задачи за визуално-текстово разсъждение."
},
"internvl2.5-latest": {
"description": "Версията InternVL2.5, която все още поддържаме, предлага отлична и стабилна производителност. По подразбиране сочи към нашата най-нова версия на серията InternVL2.5, текущо сочи към internvl2.5-78b."
},
"internvl3-14b": {
"description": "InternVL3 14B, мултимодален модел със среден мащаб, постигащ баланс между производителност и разходи."
},
"internvl3-1b": {
"description": "InternVL3 1B, лек мултимодален модел, подходящ за внедряване в среди с ограничени ресурси."
},
"internvl3-38b": {
"description": "InternVL3 38B, мащабен мултимодален модел с отворен код, предназначен за задачи с висока точност на визуално-текстово разбиране."
},
"internvl3-latest": {
"description": "Нашият най-нов мултимодален голям модел, с по-силни способности за разбиране на текст и изображения, дългосрочно разбиране на изображения, производителност, сравнима с водещи затворени модели. По подразбиране сочи към нашата най-нова версия на серията InternVL, текущо сочи към internvl3-78b."
},
"irag-1.0": {
"description": "Собствената технология iRAG (image based RAG) на Baidu за генериране на изображения с подсилено търсене, комбинираща милиарди изображения от търсачката на Baidu с мощни основни модели, позволява създаването на изключително реалистични изображения, далеч надминаващи родните системи за генериране на изображения от текст, без изкуствен вид и с ниски разходи. iRAG се характеризира с липса на халюцинации, изключителна реалистичност и незабавна готовност."
"description": "ERNIE iRAG, модел за генериране, подсилен с визуално търсене, поддържащ търсене по изображение, визуално-текстово търсене и създаване на съдържание."
},
"jamba-large": {
"description": "Нашият най-мощен и напреднал модел, проектиран за справяне с комплексни задачи на корпоративно ниво, с изключителна производителност."
@@ -2064,7 +2187,13 @@
"description": "Моделът kimi-k2-0905-preview има контекстна дължина от 256k, с по-силни способности за агентно кодиране, по-изразителна естетика и практичност на фронтенд кода, както и по-добро разбиране на контекста."
},
"kimi-k2-instruct": {
"description": "Kimi K2 Instruct е голям езиков модел, разработен от Moonshot AI, с изключителна способност за обработка на дълъг контекст."
"description": "Kimi K2 Instruct, официален модел за извеждане от Kimi, поддържащ дълъг контекст, програмиране, въпроси и отговори и други сценарии."
},
"kimi-k2-thinking": {
"description": "Моделът kimi-k2-thinking, предоставен от Moonshot AI, е мисловен модел с универсални агентни способности и умения за разсъждение. Той е отличен в дълбокото разсъждение и може да използва инструменти на няколко стъпки, за да помага при решаването на различни сложни проблеми."
},
"kimi-k2-thinking-turbo": {
"description": "Ускорена версия на модела K2 за дълбоко разсъждение, поддържа 256k контекст и предлага скорост на изход от 60–100 токена в секунда при запазване на дълбоките логически способности."
},
"kimi-k2-turbo-preview": {
"description": "Kimi-k2 е базов модел с MoE архитектура, който притежава изключителни възможности за работа с код и агентни функции. Общият брой параметри е 1T, а активните параметри са 32B. В бенчмарковете за основни категории като общо знание и разсъждение, програмиране, математика и агентни задачи, моделът K2 превъзхожда другите водещи отворени модели."
@@ -2078,6 +2207,9 @@
"kimi-thinking-preview": {
"description": "Моделът kimi-thinking-preview, предоставен от „Тъмната страна на Луната“, е мултимодален мисловен модел с възможности за мултимодално и общо разсъждение, който е експерт в дълбокото разсъждение и помага за решаването на по-сложни задачи."
},
"kuaishou/kat-coder-pro-v1": {
"description": "KAT-Coder-Pro-V1 (временно безплатен) е фокусиран върху разбиране на код и автоматизирано програмиране, предназначен за ефективни задачи с програмен агент."
},
"learnlm-1.5-pro-experimental": {
"description": "LearnLM е експериментален езиков модел, специфичен за задачи, обучен да отговаря на принципите на научното обучение, способен да следва системни инструкции в учебни и обучителни сценарии, да действа като експертен ментор и др."
},
@@ -2174,6 +2306,9 @@
"megrez-3b-instruct": {
"description": "Megrez 3B Instruct е ефективен модел с малък брой параметри, разработен от Wuwen Xinqiong."
},
"meituan/longcat-flash-chat": {
"description": "Longcat Flash Chat е с отворен код от Meituan и представлява базов модел без мисловни процеси, оптимизиран за диалогови взаимодействия и задачи на интелигентни агенти, с изключителна ефективност при използване на инструменти и в сложни многократни взаимодействия."
},
"meta-llama-3-70b-instruct": {
"description": "Мощен модел с 70 милиарда параметри, отличаващ се в разсъждения, кодиране и широки езикови приложения."
},
@@ -2405,6 +2540,12 @@
"minimax-m2": {
"description": "MiniMax M2 е ефективен голям езиков модел, създаден специално за кодиране и работни процеси с агенти."
},
"minimax/minimax-m2": {
"description": "MiniMax-M2 е високоефективен модел с отлично представяне при кодиране и агентски задачи, подходящ за различни инженерни приложения."
},
"minimaxai/minimax-m2": {
"description": "MiniMax-M2 е компактен, бърз и икономичен хибриден експертен (MoE) модел с общо 230 милиарда параметъра и 10 милиарда активни параметъра, създаден за постигане на върхова производителност при кодиране и задачи, свързани с интелигентни агенти, като същевременно поддържа силен общ интелект. Моделът се отличава с отлична работа при редактиране на множество файлове, затворен цикъл кодиране-изпълнение-поправка, тестване и валидиране на поправки, както и при сложни дълговерижни инструментални процеси, което го прави идеален избор за работния процес на разработчиците."
},
"ministral-3b-latest": {
"description": "Ministral 3B е световен лидер сред моделите на Mistral."
},
@@ -2549,12 +2690,21 @@
"moonshotai/kimi-k2": {
"description": "Kimi K2 е голям смесен експертен (MoE) езиков модел с 1 трилион общи параметри и 32 милиарда активни параметри на преден проход, разработен от Moonshot AI. Оптимизиран е за агентски способности, включително усъвършенствано използване на инструменти, разсъждения и синтез на код."
},
"moonshotai/kimi-k2-0711": {
"description": "Kimi K2 0711 е Instruct версия от серията Kimi, подходяща за висококачествено програмиране и използване на инструменти."
},
"moonshotai/kimi-k2-0905": {
"description": "Моделът kimi-k2-0905-preview има контекстна дължина от 256k, с по-силни способности за агентно кодиране, по-изразителна естетика и практичност на фронтенд кода, както и по-добро разбиране на контекста."
"description": "Kimi K2 0905 е актуализация от серията Kimi, подобряваща контекстуалната обработка и логическите възможности, оптимизирана за кодиране."
},
"moonshotai/kimi-k2-instruct-0905": {
"description": "Моделът kimi-k2-0905-preview има контекстна дължина от 256k, с по-силни способности за агентно кодиране, по-изразителна естетика и практичност на фронтенд кода, както и по-добро разбиране на контекста."
},
"moonshotai/kimi-k2-thinking": {
"description": "Kimi K2 Thinking е модел за дълбоко разсъждение, оптимизиран от Moonshot, с универсални способности на агент."
},
"moonshotai/kimi-k2-thinking-turbo": {
"description": "Kimi K2 Thinking Turbo е ускорена версия на Kimi K2 Thinking, която запазва дълбоките логически възможности при значително по-ниска латентност."
},
"morph/morph-v3-fast": {
"description": "Morph предоставя специализиран AI модел, който прилага препоръчаните от водещи модели (като Claude или GPT-4o) промени в кода към съществуващите ви файлове БЪРЗО - над 4500+ токена в секунда. Той служи като последна стъпка в AI кодовия работен поток. Поддържа 16k входни и 16k изходни токена."
},
@@ -2637,28 +2787,49 @@
"description": "gpt-4-turbo от OpenAI притежава обширни общи знания и експертиза в различни области, което му позволява да следва сложни инструкции на естествен език и да решава точно трудни проблеми. Знанията му са актуални до април 2023 г., а контекстният прозорец е 128 000 токена."
},
"openai/gpt-4.1": {
"description": "GPT 4.1 е водещият модел на OpenAI, подходящ за сложни задачи. Изключително подходящ за решаване на проблеми в различни области."
"description": "Серията GPT-4.1 предлага по-голям контекст и по-силни инженерни и логически способности."
},
"openai/gpt-4.1-mini": {
"description": "GPT 4.1 mini постига баланс между интелигентност, скорост и цена, което го прави привлекателен модел за много случаи на употреба."
"description": "GPT-4.1 Mini предлага по-ниска латентност и по-добро съотношение цена/качество, подходящ за средни по дължина контексти."
},
"openai/gpt-4.1-nano": {
"description": "GPT-4.1 nano е най-бързият и икономичен модел от серията GPT 4.1."
"description": "GPT-4.1 Nano е изключително икономичен и с ниска латентност, подходящ за чести кратки диалози или класификационни задачи."
},
"openai/gpt-4o": {
"description": "GPT-4o от OpenAI притежава обширни общи знания и експертиза в различни области, способен да следва сложни инструкции на естествен език и да решава точно трудни проблеми. Предлага производителност, съпоставима с GPT-4 Turbo, но с по-бърз и по-евтин API."
"description": "Серията GPT-4o е Omni модел на OpenAI, поддържащ вход от текст + изображение и изход в текстов формат."
},
"openai/gpt-4o-mini": {
"description": "GPT-4o mini от OpenAI е техният най-напреднал и икономичен малък модел. Той е мултимодален (приема текст или изображения като вход и генерира текст) и е по-интелигентен от gpt-3.5-turbo, като същевременно е също толкова бърз."
"description": "GPT-4o-mini е бърза и компактна версия на GPT-4o, подходяща за нисколатентни мултимодални сценарии."
},
"openai/gpt-5": {
"description": "GPT-5 е водещият езиков модел на OpenAI, отличаващ се в сложни разсъждения, обширни знания за реалния свят, задачи с интензивен код и многостъпкови агентски задачи."
"description": "GPT-5 е високопроизводителен модел на OpenAI, подходящ за широк спектър от производствени и изследователски задачи."
},
"openai/gpt-5-chat": {
"description": "GPT-5 Chat е подмодел на GPT-5, оптимизиран за диалогови сценарии с по-ниска латентност и по-добро взаимодействие."
},
"openai/gpt-5-codex": {
"description": "GPT-5-Codex е вариант на GPT-5, допълнително оптимизиран за програмиране, подходящ за мащабни работни потоци с код."
},
"openai/gpt-5-mini": {
"description": "GPT-5 mini е оптимизиран по отношение на разходите модел, който се представя отлично при задачи за разсъждение и чат. Предлага най-добрия баланс между скорост, цена и способности."
"description": "GPT-5 Mini е олекотена версия от семейството GPT-5, предназначена за нисколатентни и нискобюджетни приложения."
},
"openai/gpt-5-nano": {
"description": "GPT-5 nano е модел с висок пропускателен капацитет, който се справя отлично с прости инструкции или задачи за класификация."
"description": "GPT-5 Nano е ултракомпактна версия от семейството, подходяща за сценарии с изключително високи изисквания към разходи и латентност."
},
"openai/gpt-5-pro": {
"description": "GPT-5 Pro е флагманският модел на OpenAI, предлагащ усъвършенствано разсъждение, генериране на код и корпоративни функции, с поддръжка на маршрутизиране при тестване и стриктни политики за сигурност."
},
"openai/gpt-5.1": {
"description": "GPT-5.1 е най-новият флагмански модел от серията GPT-5, с значителни подобрения в общото разсъждение, следване на инструкции и естественост на диалога, подходящ за широк спектър от задачи."
},
"openai/gpt-5.1-chat": {
"description": "GPT-5.1 Chat е лек член на семейството GPT-5.1, оптимизиран за диалози с ниска латентност, като същевременно запазва силни логически и изпълнителни способности."
},
"openai/gpt-5.1-codex": {
"description": "GPT-5.1-Codex е вариант на GPT-5.1, оптимизиран за софтуерно инженерство и работни потоци с код, подходящ за мащабни рефакторинги, сложна отстраняване на грешки и дългосрочно автономно кодиране."
},
"openai/gpt-5.1-codex-mini": {
"description": "GPT-5.1-Codex-Mini е компактна и ускорена версия на GPT-5.1-Codex, по-подходяща за кодиране в среди, чувствителни към латентност и разходи."
},
"openai/gpt-oss-120b": {
"description": "Изключително способен универсален голям езиков модел с мощни и контролируеми способности за разсъждение."
@@ -2685,7 +2856,7 @@
"description": "o3-mini high е версия с високо ниво на разсъждение, която предлага висока интелигентност при същите разходи и цели за закъснение като o1-mini."
},
"openai/o4-mini": {
"description": "o4-mini на OpenAI предлага бързо и икономично разсъждение с отлична производителност за своя размер, особено в математика (най-добър в AIME бенчмарка), кодиране и визуални задачи."
"description": "OpenAI o4-mini е компактен и ефективен логически модел, подходящ за нисколатентни приложения."
},
"openai/o4-mini-high": {
"description": "o4-mini версия с високо ниво на извеждане, оптимизирана за бързо и ефективно извеждане, показваща изключителна ефективност и производителност в задачи по кодиране и визуализация."
@@ -2735,6 +2906,54 @@
"pro-deepseek-v3": {
"description": "Специализиран модел за корпоративни услуги, включващ паралелна обработка."
},
"qianfan-70b": {
"description": "Qianfan 70B, голям китайски езиков модел, подходящ за създаване на висококачествено съдържание и сложни разсъждения."
},
"qianfan-8b": {
"description": "Qianfan 8B, универсален модел със среден мащаб, балансиращ между разходи и ефективност за генериране на текст и въпроси и отговори."
},
"qianfan-agent-intent-32k": {
"description": "Qianfan Agent Intent 32K, модел за разпознаване на намерения и оркестрация на интелигентни агенти, поддържащ дълъг контекст."
},
"qianfan-agent-lite-8k": {
"description": "Qianfan Agent Lite 8K, лек модел за интелигентни агенти, подходящ за нискобюджетни многократни диалози и бизнес оркестрация."
},
"qianfan-agent-speed-32k": {
"description": "Qianfan Agent Speed 32K, високопроизводителен модел за интелигентни агенти, подходящ за мащабни и многозадачни приложения."
},
"qianfan-agent-speed-8k": {
"description": "Qianfan Agent Speed 8K, модел за интелигентни агенти с висока едновременност, предназначен за кратки диалози и бързи отговори."
},
"qianfan-check-vl": {
"description": "Qianfan Check VL, мултимодален модел за проверка и откриване на съдържание, поддържащ съответствие и разпознаване на визуално-текстово съдържание."
},
"qianfan-composition": {
"description": "Qianfan Composition, мултимодален творчески модел, поддържащ разбиране и генериране на комбинирано визуално и текстово съдържание."
},
"qianfan-engcard-vl": {
"description": "Qianfan EngCard VL, мултимодален модел, фокусиран върху англоезични сценарии за разпознаване."
},
"qianfan-lightning-128b-a19b": {
"description": "Qianfan Lightning 128B A19B, високопроизводителен универсален китайски езиков модел, подходящ за сложни въпроси и мащабни разсъждения."
},
"qianfan-llama-vl-8b": {
"description": "Qianfan Llama VL 8B, мултимодален модел, базиран на Llama, предназначен за общо визуално-текстово разбиране."
},
"qianfan-multipicocr": {
"description": "Qianfan MultiPicOCR, OCR модел за множество изображения, поддържащ откриване и разпознаване на текст от няколко изображения."
},
"qianfan-qi-vl": {
"description": "Qianfan QI VL, мултимодален въпросно-отговорен модел, поддържащ прецизно търсене и отговори в сложни визуално-текстови сценарии."
},
"qianfan-singlepicocr": {
"description": "Qianfan SinglePicOCR, OCR модел за едно изображение, поддържащ високоточна разпознаваемост на символи."
},
"qianfan-vl-70b": {
"description": "Qianfan VL 70B, голям визуално-езиков модел, подходящ за сложни визуално-текстови задачи."
},
"qianfan-vl-8b": {
"description": "Qianfan VL 8B, лек визуално-езиков модел, подходящ за ежедневни визуално-текстови въпроси и анализи."
},
"qvq-72b-preview": {
"description": "QVQ моделът е експериментален изследователски модел, разработен от екипа на Qwen, фокусиран върху повишаване на визуалните способности за разсъждение, особено в областта на математическото разсъждение."
},
@@ -2841,7 +3060,7 @@
"description": "Мощен среден модел за код, поддържащ 32K дължина на контекста, специализиран в многоезично програмиране."
},
"qwen/qwen3-14b": {
"description": "Qwen3-14B е плътен езиков модел с 14.8 милиарда параметри от серията Qwen3, проектиран за сложни разсъждения и ефективен диалог. Той поддържа безпроблемно преминаване между режим на \"разсъждение\" за математика, програмиране и логическо разсъждение и режим на \"неразсъждение\" за общи разговори. Моделът е фино настроен за следване на инструкции, използване на инструменти за агенти, креативно писане и многоезични задачи на над 100 езика и диалекта. Той нативно обработва контекст от 32K токена и може да бъде разширен до 131K токена с помощта на разширение, базирано на YaRN."
"description": "Qwen3-14B е 14B версия от серията Qwen, подходяща за стандартни логически и диалогови задачи."
},
"qwen/qwen3-14b:free": {
"description": "Qwen3-14B е плътен езиков модел с 14.8 милиарда параметри от серията Qwen3, проектиран за сложни разсъждения и ефективен диалог. Той поддържа безпроблемно преминаване между режим на \"разсъждение\" за математика, програмиране и логическо разсъждение и режим на \"неразсъждение\" за общи разговори. Моделът е фино настроен за следване на инструкции, използване на инструменти за агенти, креативно писане и многоезични задачи на над 100 езика и диалекта. Той нативно обработва контекст от 32K токена и може да бъде разширен до 131K токена с помощта на разширение, базирано на YaRN."
@@ -2849,6 +3068,12 @@
"qwen/qwen3-235b-a22b": {
"description": "Qwen3-235B-A22B е модел с 235B параметри, разработен от Qwen, с експертна смесена (MoE) архитектура, активираща 22B параметри при всяко напредване. Той поддържа безпроблемно преминаване между режим на \"разсъждение\" за сложни разсъждения, математика и кодиране и режим на \"неразсъждение\" за ефективен общ диалог. Моделът демонстрира силни способности за разсъждение, многоезична поддръжка (над 100 езика и диалекта), напреднало следване на инструкции и способности за извикване на инструменти за агенти. Той нативно обработва контекстен прозорец от 32K токена и може да бъде разширен до 131K токена с помощта на разширение, базирано на YaRN."
},
"qwen/qwen3-235b-a22b-2507": {
"description": "Qwen3-235B-A22B-Instruct-2507 е Instruct версия от серията Qwen3, съчетаваща многоезични инструкции и дълъг контекст."
},
"qwen/qwen3-235b-a22b-thinking-2507": {
"description": "Qwen3-235B-A22B-Thinking-2507 е Thinking вариант от Qwen3, подсилен за сложни математически и логически задачи."
},
"qwen/qwen3-235b-a22b:free": {
"description": "Qwen3-235B-A22B е модел с 235B параметри, разработен от Qwen, с експертна смесена (MoE) архитектура, активираща 22B параметри при всяко напредване. Той поддържа безпроблемно преминаване между режим на \"разсъждение\" за сложни разсъждения, математика и кодиране и режим на \"неразсъждение\" за ефективен общ диалог. Моделът демонстрира силни способности за разсъждение, многоезична поддръжка (над 100 езика и диалекта), напреднало следване на инструкции и способности за извикване на инструменти за агенти. Той нативно обработва контекстен прозорец от 32K токена и може да бъде разширен до 131K токена с помощта на разширение, базирано на YaRN."
},
@@ -2867,6 +3092,21 @@
"qwen/qwen3-8b:free": {
"description": "Qwen3-8B е плътен езиков модел с 8.2 милиарда параметри от серията Qwen3, проектиран за задачи с интензивно разсъждение и ефективен диалог. Той поддържа безпроблемно преминаване между режим на \"разсъждение\" за математика, програмиране и логическо разсъждение и режим на \"неразсъждение\" за общи разговори. Моделът е фино настроен за следване на инструкции, интеграция на агенти, креативно писане и многоезично използване на над 100 езика и диалекта. Той нативно поддържа контекстен прозорец от 32K токена и може да бъде разширен до 131K токена чрез YaRN."
},
"qwen/qwen3-coder": {
"description": "Qwen3-Coder е генератор на код от семейството Qwen3, специализиран в разбиране и генериране на код в дълги документи."
},
"qwen/qwen3-coder-plus": {
"description": "Qwen3-Coder-Plus е специално оптимизиран агент за кодиране от серията Qwen, поддържащ по-сложни инструментални операции и дългосрочни сесии."
},
"qwen/qwen3-max": {
"description": "Qwen3 Max е висок клас логически модел от серията Qwen3, подходящ за многоезично разсъждение и интеграция с инструменти."
},
"qwen/qwen3-max-preview": {
"description": "Qwen3 Max (предварителен преглед) е Max версията от серията Qwen, насочена към усъвършенствано разсъждение и интеграция с инструменти."
},
"qwen/qwen3-vl-plus": {
"description": "Qwen3 VL-Plus е визуално подсилена версия от Qwen3, подобряваща мултимодалното разсъждение и обработката на видео."
},
"qwen2": {
"description": "Qwen2 е новото поколение голям езиков модел на Alibaba, предлагащ отлична производителност за разнообразни приложения."
},
@@ -2886,7 +3126,7 @@
"description": "Модел с мащаб 72B, отворен за обществеността от Qwen 2.5."
},
"qwen2.5-7b-instruct": {
"description": "Модел с мащаб 7B, отворен за обществеността от Qwen 2.5."
"description": "Qwen2.5 7B Instruct, зрял отворен модел с инструкции, подходящ за диалози и генериране в различни сценарии."
},
"qwen2.5-coder-1.5b-instruct": {
"description": "通义千问(Qwen) е отворен код модел за програмиране."
@@ -2919,13 +3159,13 @@
"description": "Моделите от серията Qwen-Omni поддържат входни данни от множество модалности, включително видео, аудио, изображения и текст, и изходят аудио и текст."
},
"qwen2.5-vl-32b-instruct": {
"description": "Моделите от серията Qwen2.5-VL подобряват интелигентността, практичността и приложимостта на модела, като ги правят по-ефективни в сценарии като естествени разговори, създаване на съдържание, професионални услуги и разработка на код. Версията 32B използва технологии за обучение с подсилване за оптимизиране на модела, предлагайки в сравнение с другите модели от серията Qwen2.5 VL по-съответстващ на човешките предпочитания стил на изход, способност за разсъждение върху сложни математически проблеми, както и фино разбиране и разсъждение на изображения."
"description": "Qwen2.5 VL 32B Instruct, мултимодален отворен модел, подходящ за частно внедряване и разнообразни приложения."
},
"qwen2.5-vl-72b-instruct": {
"description": "Подобрение на следването на инструкции, математика, решаване на проблеми и код, повишаване на способността за разпознаване на обекти, поддържа директно точно локализиране на визуални елементи в различни формати, поддържа разбиране на дълги видео файлове (до 10 минути) и локализиране на събития в секунда, може да разбира времеви последователности и скорости, базирано на способности за анализ и локализация, поддържа управление на OS или Mobile агенти, силна способност за извличане на ключова информация и изход в JSON формат, тази версия е 72B, най-силната версия в серията."
},
"qwen2.5-vl-7b-instruct": {
"description": "Подобрение на следването на инструкции, математика, решаване на проблеми и код, повишаване на способността за разпознаване на обекти, поддържа директно точно локализиране на визуални елементи в различни формати, поддържа разбиране на дълги видео файлове (до 10 минути) и локализиране на събития в секунда, може да разбира времеви последователности и скорости, базирано на способности за анализ и локализация, поддържа управление на OS или Mobile агенти, силна способност за извличане на ключова информация и изход в JSON формат, тази версия е 72B, най-силната версия в серията."
"description": "Qwen2.5 VL 7B Instruct, лек мултимодален модел, балансиращ между разходи за внедряване и разпознаваемост."
},
"qwen2.5-vl-instruct": {
"description": "Qwen2.5-VL е най-новата версия на визуално-езиковия модел от семейството Qwen."
@@ -2952,46 +3192,46 @@
"description": "Qwen3 е новото поколение на Alibaba голям езиков модел, който предлага отлична производителност, за да отговори на разнообразни приложения."
},
"qwen3-0.6b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 0.6B, начален модел, подходящ за прости разсъждения и среди с изключително ограничени ресурси."
},
"qwen3-1.7b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 1.7B, ултралек модел, удобен за внедряване на крайни и гранични устройства."
},
"qwen3-14b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 14B, модел със среден мащаб, подходящ за многоезични въпроси и генериране на текст."
},
"qwen3-235b-a22b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 235B A22B, универсален голям модел, предназначен за различни сложни задачи."
},
"qwen3-235b-a22b-instruct-2507": {
"description": "Отворен модел в не-мисловен режим, базиран на Qwen3, с леки подобрения в субективните творчески способности и безопасността на модела спрямо предишната версия (Tongyi Qianwen 3-235B-A22B)."
"description": "Qwen3 235B A22B Instruct 2507, флагмански универсален модел с инструкции, подходящ за генериране и разсъждение."
},
"qwen3-235b-a22b-thinking-2507": {
"description": "Отворен модел в мисловен режим, базиран на Qwen3, с големи подобрения в логическите способности, общите умения, обогатяването на знания и творческите способности спрямо предишната версия (Tongyi Qianwen 3-235B-A22B), подходящ за сложни задачи с високи изисквания за разсъждение."
"description": "Qwen3 235B A22B Thinking 2507, ултрамащабен мисловен модел, предназначен за сложни разсъждения."
},
"qwen3-30b-a3b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 30B A3B, универсален модел със средно голям мащаб, балансиращ между разходи и ефективност."
},
"qwen3-30b-a3b-instruct-2507": {
"description": "В сравнение с предишната версия (Qwen3-30B-A3B), общите способности на английски, китайски и многоезични задачи са значително подобрени. Специализирана оптимизация за субективни и отворени задачи, значително по-добре съобразена с предпочитанията на потребителите, което позволява предоставяне на по-полезни отговори."
"description": "Qwen3 30B A3B Instruct 2507, модел със среден мащаб с инструкции, подходящ за висококачествено генериране и въпроси и отговори."
},
"qwen3-30b-a3b-thinking-2507": {
"description": "Базиран на отворения модел в режим мислене на Qwen3, в сравнение с предишната версия (Tongyi Qianwen 3-30B-A3B) логическите способности, общите умения, знанията и творческите способности са значително подобрени, подходящ за сложни сценарии с интензивно разсъждение."
"description": "Qwen3 30B A3B Thinking 2507, мисловен модел със среден мащаб, балансиращ между точност и разходи."
},
"qwen3-32b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 32B, подходящ за универсални задачи, изискващи по-силни способности за разбиране."
},
"qwen3-4b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 4B, подходящ за малки и средни приложения и локални сценарии за извеждане."
},
"qwen3-8b": {
"description": "Qwen3 е ново поколение модел с значително подобрени способности, който достига водещо ниво в индустрията в области като разсъждение, общо използване, агенти и многоезичност, и поддържа превключване на режимите на разсъждение."
"description": "Qwen3 8B, лек модел с гъвкаво внедряване, подходящ за приложения с висока едновременност."
},
"qwen3-coder-30b-a3b-instruct": {
"description": "Откритият кодов модел на Tongyi Qianwen. Най-новият qwen3-coder-30b-a3b-instruct е модел за генериране на код, базиран на Qwen3, с мощни способности като Coding Agent, умело използва инструменти и взаимодейства с околната среда, способен на автономно програмиране и отлични кодови умения, съчетани с общи способности."
},
"qwen3-coder-480b-a35b-instruct": {
"description": "Отворена версия на кодовия модел Tongyi Qianwen. Най-новият qwen3-coder-480b-a35b-instruct е кодов модел, базиран на Qwen3, с мощни Coding Agent способности, умения за използване на инструменти и взаимодействие с околната среда, способен на автономно програмиране с отлични кодови и общи умения."
"description": "Qwen3 Coder 480B A35B Instruct, флагмански модел за програмиране, поддържащ многoезично кодиране и сложен анализ на код."
},
"qwen3-coder-flash": {
"description": "Кодиращ модел на Tongyi Qianwen. Най-новата серия модели Qwen3-Coder е базирана на Qwen3 и е модел за генериране на код с мощни възможности на Coding Agent, умеещ да използва инструменти и да взаимодейства с околната среда, способен на автономно програмиране, с изключителни кодови умения и същевременно общи способности."
@@ -3005,32 +3245,41 @@
"qwen3-max": {
"description": "Серията Max на Tongyi Qianwen 3 предлага значително подобрена обща способност в сравнение с серия 2.5, с подобрено разбиране на текст на китайски и английски, способност за следване на сложни инструкции, умения за субективни отворени задачи, многоезични възможности и повишена способност за извикване на инструменти; моделът демонстрира по-малко халюцинации на знания. Последният модел qwen3-max включва специални подобрения в програмирането на агенти и извикването на инструменти в сравнение с версията qwen3-max-preview. Официалната версия, публикувана сега, достига SOTA ниво в своята област и е адаптирана за по-сложни изисквания на интелигентни агенти."
},
"qwen3-max-preview": {
"description": "Най-ефективният модел от серията Tongyi Qianwen, подходящ за сложни и многоетапни задачи. Прегледната версия вече поддържа разсъждение."
},
"qwen3-next-80b-a3b-instruct": {
"description": "Базирано на Qwen3, ново поколение отворен модел без мисловен режим, който предлага по-добро разбиране на китайски текстове, подобрени логически умения и по-добри резултати при задачи за генериране на текст в сравнение с предишната версия (Tongyi Qianwen 3-235B-A22B-Instruct-2507)."
},
"qwen3-next-80b-a3b-thinking": {
"description": "Базирано на Qwen3, ново поколение отворен модел с мисловен режим, който подобрява спазването на инструкции и предоставя по-кратки и точни обобщения в сравнение с предишната версия (Tongyi Qianwen 3-235B-A22B-Thinking-2507)."
"description": "Qwen3 Next 80B A3B Thinking, флагманска версия за разсъждение, предназначена за сложни задачи."
},
"qwen3-omni-flash": {
"description": "Моделът Qwen-Omni приема комбинирани входове от текст, изображения, аудио и видео, и генерира отговори под формата на текст или реч. Предлага разнообразни хуманизирани гласове, поддържа много езици и диалекти, и е приложим в сценарии като текстово творчество, визуално разпознаване и гласови асистенти."
},
"qwen3-vl-235b-a22b-instruct": {
"description": "Qwen3 VL 235B A22B в non-thinking режим (Instruct), подходящ за инструкции без необходимост от дълбоко разсъждение, като същевременно запазва силни визуални разбирания."
"description": "Qwen3 VL 235B A22B Instruct, флагмански мултимодален модел, предназначен за взискателни задачи по разбиране и творчество."
},
"qwen3-vl-235b-a22b-thinking": {
"description": "Qwen3 VL 235B A22B в мисловен режим (отворен код), предназначен за сложни задачи с интензивно разсъждение и разбиране на дълги видеа, предоставяйки водещи способности за визуално и текстово разсъждение."
"description": "Qwen3 VL 235B A22B Thinking, флагманска мисловна версия, използвана за сложни мултимодални разсъждения и планиране."
},
"qwen3-vl-30b-a3b-instruct": {
"description": "Qwen3 VL 30B в non-thinking режим (Instruct), насочен към обичайни сценарии за следване на инструкции, като същевременно поддържа високо ниво на мултимодално разбиране и генериране."
"description": "Qwen3 VL 30B A3B Instruct, голям мултимодален модел, балансиращ между точност и производителност при разсъждение."
},
"qwen3-vl-30b-a3b-thinking": {
"description": "Qwen-VL (отворен код) предлага способности за визуално разбиране и генериране на текст, поддържа взаимодействие с интелигентни агенти, визуално кодиране, пространствено възприятие, разбиране на дълги видеа и дълбоко мислене, с подобрено разпознаване на текст и многоезична поддръжка в сложни сценарии."
"description": "Qwen3 VL 30B A3B Thinking, дълбока мисловна версия за сложни мултимодални задачи."
},
"qwen3-vl-32b-instruct": {
"description": "Qwen3 VL 32B Instruct, мултимодален модел с фино настройване по инструкции, подходящ за висококачествени визуално-текстови въпроси и творчество."
},
"qwen3-vl-32b-thinking": {
"description": "Qwen3 VL 32B Thinking, мултимодална дълбока мисловна версия, подсилваща сложни разсъждения и анализ на дълги вериги."
},
"qwen3-vl-8b-instruct": {
"description": "Qwen3 VL 8B в non-thinking режим (Instruct), подходящ за стандартни задачи по мултимодално генериране и разпознаване."
"description": "Qwen3 VL 8B Instruct, лек мултимодален модел, подходящ за ежедневни визуални въпроси и интеграция в приложения."
},
"qwen3-vl-8b-thinking": {
"description": "Qwen3 VL 8B в мисловен режим, предназначен за леки мултимодални задачи по разсъждение и взаимодействие, като същевременно запазва способността за разбиране на дълъг контекст."
"description": "Qwen3 VL 8B Thinking, мултимодален модел с мисловна верига, подходящ за детайлно разсъждение върху визуална информация."
},
"qwen3-vl-flash": {
"description": "Qwen3 VL Flash: олекотена версия за високоскоростно разсъждение, подходяща за сценарии, чувствителни към закъснение или с голям обем заявки."
@@ -3152,9 +3401,6 @@
"step-r1-v-mini": {
"description": "Този модел е мощен модел за разсъждение с отлични способности за разбиране на изображения, способен да обработва информация от изображения и текст, и след дълбочинно разсъждение да генерира текстово съдържание. Моделът показва изключителни резултати в областта на визуалните разсъждения, като същевременно притежава първокласни способности в математиката, кода и текстовите разсъждения. Дължината на контекста е 100k."
},
"step3": {
"description": "Step3 е мултимодален модел, разработен от StepStar, с мощни способности за визуално разбиране."
},
"stepfun-ai/step3": {
"description": "Step3 е авангарден мултимодален модел за разсъждение, публикуван от StepFun (阶跃星辰). Той е изграден върху архитектура на смес от експерти (MoE) с общо 321 милиарда параметъра и 38 милиарда активни параметъра. Моделът е с енд-ту-енд дизайн, целящ минимизиране на разходите за декодиране, като същевременно предоставя водещи резултати във визуално-лингвистичното разсъждение. Чрез кооперативния дизайн на многоматрично факторизирано внимание (MFA) и декуплиране на внимание и FFN (AFD), Step3 поддържа отлична ефективност както на флагмански, така и на по-бюджетни ускорители. По време на предварителното обучение Step3 е обработил над 20 трилиона текстови токена и 4 трилиона смесени текстово-изображенчески токена, обхващайки повече от десет езика. Моделът постига водещи резултати сред отворените модели в множество бенчмаркове, включително математика, код и мултимодални задачи."
},
@@ -3218,6 +3464,9 @@
"us.anthropic.claude-haiku-4-5-20251001-v1:0": {
"description": "Claude Haiku 4.5 е най-бързият и интелигентен Haiku модел на Anthropic, отличаващ се със светкавична скорост и разширени способности за мислене."
},
"us.anthropic.claude-opus-4-5-20251101-v1:0": {
"description": "Claude Opus 4.5 е флагманският модел на Anthropic, който съчетава изключителен интелект и мащабируема производителност, подходящ за сложни задачи, изискващи най-високо качество на отговорите и способност за разсъждение."
},
"us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
"description": "Claude Sonnet 4.5 е най-интелигентният модел на Anthropic до момента."
},
@@ -3236,6 +3485,9 @@
"vercel/v0-1.5-md": {
"description": "Достъп до модела зад v0 за генериране, поправка и оптимизация на модерни уеб приложения с разсъждения, специфични за рамки, и актуални знания."
},
"volcengine/doubao-seed-code": {
"description": "Doubao-Seed-Code е голям модел на ByteDance Volcano Engine, оптимизиран за Agentic Programming, с отлично представяне в множество програмни и агентски бенчмаркове и поддръжка на 256K контекст."
},
"wan2.2-t2i-flash": {
"description": "Wanxiang 2.2 експресна версия, най-новият модел към момента. Комплексно подобрение в креативност, стабилност и реализъм, с бърза скорост на генериране и висока цена-ефективност."
},
@@ -3263,6 +3515,24 @@
"wizardlm2:8x22b": {
"description": "WizardLM 2 е езиков модел, предоставен от Microsoft AI, който се отличава в сложни диалози, многоезичност, разсъждение и интелигентни асистенти."
},
"x-ai/grok-4": {
"description": "Grok 4 е флагманският логически модел на xAI, предлагащ мощни логически и мултимодални възможности."
},
"x-ai/grok-4-fast": {
"description": "Grok 4 Fast е високопроизводителен и икономичен модел на xAI (с поддръжка на 2M контекстен прозорец), подходящ за приложения с висока едновременност и дълъг контекст."
},
"x-ai/grok-4-fast-non-reasoning": {
"description": "Grok 4 Fast (Non-Reasoning) е високопроизводителен и икономичен мултимодален модел на xAI (с поддръжка на 2M контекстен прозорец), предназначен за сценарии, чувствителни към латентност и разходи, но без нужда от вътрешно разсъждение. Съществува паралелно с reasoning версията на Grok 4 Fast и позволява активиране на разсъждение чрез параметъра reasoning enable в API. Подадените заявки и отговори може да бъдат използвани от xAI или OpenRouter за подобряване на бъдещи модели."
},
"x-ai/grok-4.1-fast": {
"description": "Grok 4 Fast е високопроизводителен и икономичен модел на xAI (с поддръжка на 2M контекстен прозорец), подходящ за приложения с висока едновременност и дълъг контекст."
},
"x-ai/grok-4.1-fast-non-reasoning": {
"description": "Grok 4 Fast (Non-Reasoning) е високопроизводителен и икономичен мултимодален модел на xAI (с поддръжка на 2M контекстен прозорец), предназначен за сценарии, чувствителни към латентност и разходи, но без нужда от вътрешно разсъждение. Съществува паралелно с reasoning версията на Grok 4 Fast и позволява активиране на разсъждение чрез параметъра reasoning enable в API. Подадените заявки и отговори може да бъдат използвани от xAI или OpenRouter за подобряване на бъдещи модели."
},
"x-ai/grok-code-fast-1": {
"description": "Grok Code Fast 1 е бърз кодов модел на xAI, предлагащ четим и инженерно пригоден изход."
},
"x1": {
"description": "Моделът Spark X1 ще бъде допълнително обновен, като на базата на водещите в страната резултати в математически задачи, ще постигне ефекти в общи задачи като разсъждение, генериране на текст и разбиране на език, сравними с OpenAI o1 и DeepSeek R1."
},
@@ -3323,6 +3593,15 @@
"yi-vision-v2": {
"description": "Модел за сложни визуални задачи, предлагащ висока производителност в разбирането и анализа на базата на множество изображения."
},
"z-ai/glm-4.5": {
"description": "GLM 4.5 е флагманският модел на Z.AI, поддържащ хибриден режим на разсъждение и оптимизиран за инженерни и дългоконтекстови задачи."
},
"z-ai/glm-4.5-air": {
"description": "GLM 4.5 Air е олекотена версия на GLM 4.5, подходяща за сценарии с ограничен бюджет, като същевременно запазва силни логически възможности."
},
"z-ai/glm-4.6": {
"description": "GLM 4.6 е флагманският модел на Z.AI, с разширен контекст и подобрени кодиращи способности."
},
"zai-org/GLM-4.5": {
"description": "GLM-4.5 е базов модел, специално създаден за интелигентни агенти, използващ архитектура с микс от експерти (Mixture-of-Experts). Той е дълбоко оптимизиран за използване на инструменти, уеб браузване, софтуерно инженерство и фронтенд програмиране, и поддържа безпроблемна интеграция с кодови агенти като Claude Code и Roo Code. GLM-4.5 използва смесен режим на разсъждение, подходящ за сложни и ежедневни приложения."
},
@@ -3343,5 +3622,8 @@
},
"zai/glm-4.5v": {
"description": "GLM-4.5V е изграден върху основния модел GLM-4.5-Air, наследявайки проверените технологии на GLM-4.1V-Thinking и постига ефективно мащабиране чрез мощната MoE архитектура с 106 милиарда параметри."
},
"zenmux/auto": {
"description": "Функцията за автоматично маршрутизиране на ZenMux автоматично избира най-добрия модел с най-добро съотношение цена/качество и представяне според съдържанието на вашата заявка от поддържаните модели."
}
}
+36 -16
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Прочети съдържанието на базата знания",
"searchKnowledgeBase": "Търси в базата знания"
},
"title": "База знания"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Редактирай файл",
"getCommandOutput": "Вземи изхода от кода",
"globLocalFiles": "Търси съвпадащи файлове",
"grepContent": "Търси съдържание",
"killCommand": "Прекрати изпълнението на кода",
"listLocalFiles": "Преглед на списъка с файлове",
"moveLocalFiles": "Премести файлове",
"readLocalFile": "Прочети съдържанието на файла",
"renameLocalFile": "Преименувай",
"runCommand": "Изпълни код",
"searchLocalFiles": "Търси файлове",
"writeLocalFile": "Запиши файл"
},
"title": "Локална система"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Прочети съдържание от няколко страници",
"crawlSinglePage": "Прочети съдържание от страница",
"search": "Търси страница"
},
"title": "Търсене в интернет"
}
},
"confirm": "Потвърждавам",
"debug": {
"arguments": "Параметри на извикване",
@@ -236,6 +270,8 @@
},
"inspector": {
"args": "Преглед на списъка с параметри",
"delete": "Изтриване на извикване на инструмент",
"orphanedToolCall": "Това извикване на инструмент може да е станало изолирано поради необичайни причини, което може да повлияе на нормалното изпълнение на агента. Моля, премахнете го.",
"pluginRender": "Преглед на интерфейса на плъгина"
},
"list": {
@@ -249,17 +285,6 @@
"content": "Извикване на плъгина...",
"plugin": "Плъгинът работи..."
},
"localSystem": {
"apiName": {
"listLocalFiles": "Преглед на списък с файлове",
"moveLocalFiles": "Преместване на файлове",
"readLocalFile": "Четене на съдържание на файл",
"renameLocalFile": "Преименуване",
"searchLocalFiles": "Търсене на файлове",
"writeLocalFile": "Запис в файл"
},
"title": "Локални файлове"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Проверка на инсталационната среда...",
"COMPLETED": "Инсталацията е завършена",
@@ -367,11 +392,6 @@
"warning": "⚠️ Моля, уверете се, че имате доверие на източника на този плъгин, злонамерени плъгини могат да застрашат сигурността на вашата система."
},
"search": {
"apiName": {
"crawlMultiPages": "Четене на съдържание от множество страници",
"crawlSinglePage": "Четене на съдържание от страница",
"search": "Търсене на страници"
},
"config": {
"addKey": "Добавяне на ключ",
"close": "Изтриване",
+3
View File
@@ -191,6 +191,9 @@
"xinference": {
"description": "Xorbits Inference (Xinference) е платформа с отворен код, предназначена да опрости изпълнението и интегрирането на различни AI модели. С Xinference можете да използвате всякакви LLM с отворен код, модели за вграждане и мултимодални модели за извършване на изводи в облак или локална среда, както и да създавате мощни AI приложения."
},
"zenmux": {
"description": "ZenMux е унифицирана платформа за агрегиране на AI услуги, поддържаща множество водещи AI интерфейси като OpenAI, Anthropic, Google VertexAI и други. Тя предлага гъвкави възможности за маршрутизиране, които ви позволяват лесно да превключвате и управлявате различни AI модели."
},
"zeroone": {
"description": "01.AI се фокусира върху технологии за изкуствен интелект от ерата на AI 2.0, активно насърчавайки иновации и приложения на \"човек + изкуствен интелект\", използвайки мощни модели и напреднали AI технологии за повишаване на производителността на човека и реализиране на технологично овластяване."
},
+6
View File
@@ -293,6 +293,12 @@
"elegant": "Елегантно",
"title": "Анимация на отговор"
},
"contextMenuMode": {
"default": "По подразбиране",
"desc": "Изберете начина на показване на контекстното меню за чат съобщения",
"disabled": "Не използвай",
"title": "Схема на контекстното меню"
},
"neutralColor": {
"desc": "Персонализиране на сивата скала с различни цветови нюанси",
"title": "Неутрални цветове"
+28 -1
View File
@@ -14,9 +14,31 @@
"images": "Изображения:",
"prompt": "подсказка"
},
"lobe-knowledge-base": {
"readKnowledge": {
"meta": {
"chars": "Брой знаци",
"lines": "Брой редове"
}
}
},
"localFiles": {
"editFile": {
"newString": "Замени с",
"oldString": "Търсене на съдържание",
"replaceAll": "Замени всички съвпадения",
"replaceFirst": "Замени само първото съвпадение"
},
"file": "Файл",
"folder": "Папка",
"moveFiles": {
"itemsMoved": "Преместени {{count}} елемента:",
"itemsMoved_one": "Преместен {{count}} елемент:",
"itemsMoved_other": "Преместени {{count}} елемента:",
"itemsToMove": "{{count}} елемента за преместване:",
"itemsToMove_one": "{{count}} елемент за преместване:",
"itemsToMove_other": "{{count}} елемента за преместване:"
},
"open": "Отвори",
"openFile": "Отвори файл",
"openFolder": "Отвори папка",
@@ -26,7 +48,12 @@
"readFile": "Прочети файл",
"readFileError": "Неуспешно четене на файла, моля, проверете дали пътят към файла е правилен",
"readFiles": "Прочети файлове",
"readFilesError": "Неуспешно четене на файловете, моля, проверете дали пътят към файловете е правилен"
"readFilesError": "Неуспешно четене на файловете, моля, проверете дали пътят към файловете е правилен",
"writeFile": {
"characters": "Знаци",
"preview": "Преглед на съдържанието",
"truncated": "Съкратено"
}
},
"search": {
"createNewSearch": "Създаване на нова търсене",
+1
View File
@@ -6,6 +6,7 @@
"confirmRemoveUnstarred": "Ще бъдат изтрити темите, които не са запазени. След изтриването им не може да се възстановят. Моля, действайте внимателно.",
"duplicate": "Създаване на копие",
"export": "Експортиране на темата",
"openInNewWindow": "Отвори страницата в нов прозорец",
"removeAll": "Изтриване на всички теми",
"removeUnstarred": "Изтриване на незапазените теми"
},
+114 -1
View File
@@ -52,6 +52,104 @@
"required": "Inhalt darf nicht leer sein"
}
},
"betterAuth": {
"errors": {
"emailInvalid": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
"emailNotRegistered": "Diese E-Mail-Adresse ist noch nicht registriert",
"emailNotVerified": "E-Mail-Adresse nicht verifiziert, bitte zuerst verifizieren",
"emailRequired": "Bitte geben Sie eine E-Mail-Adresse ein",
"firstNameRequired": "Bitte geben Sie Ihren Vornamen ein",
"lastNameRequired": "Bitte geben Sie Ihren Nachnamen ein",
"loginFailed": "Anmeldung fehlgeschlagen, bitte überprüfen Sie E-Mail und Passwort",
"passwordFormat": "Das Passwort muss Buchstaben und Zahlen enthalten",
"passwordMaxLength": "Das Passwort darf maximal 64 Zeichen lang sein",
"passwordMinLength": "Das Passwort muss mindestens 8 Zeichen lang sein",
"passwordRequired": "Bitte geben Sie ein Passwort ein",
"usernameRequired": "Bitte geben Sie einen Benutzernamen ein"
},
"resetPassword": {
"backToSignIn": "Zurück zur Anmeldung",
"confirmPasswordPlaceholder": "Neues Passwort bestätigen",
"confirmPasswordRequired": "Bitte bestätigen Sie Ihr neues Passwort",
"description": "Bitte geben Sie Ihr neues Passwort ein",
"error": "Passwort zurücksetzen fehlgeschlagen, bitte versuchen Sie es erneut",
"invalidToken": "Ungültiger oder abgelaufener Zurücksetzungslink",
"newPasswordPlaceholder": "Neues Passwort eingeben",
"passwordMismatch": "Die Passwörter stimmen nicht überein",
"submit": "Passwort zurücksetzen",
"success": "Passwort erfolgreich zurückgesetzt, bitte melden Sie sich mit dem neuen Passwort an",
"title": "Passwort zurücksetzen"
},
"signin": {
"backToEmail": "Zurück zur E-Mail-Adresse",
"continueWithAuth0": "Mit Auth0 anmelden",
"continueWithAuthelia": "Mit Authelia anmelden",
"continueWithAuthentik": "Mit Authentik anmelden",
"continueWithCasdoor": "Mit Casdoor anmelden",
"continueWithCloudflareZeroTrust": "Mit Cloudflare Zero Trust anmelden",
"continueWithCognito": "Mit AWS Cognito anmelden",
"continueWithFeishu": "Mit Feishu anmelden",
"continueWithGithub": "Mit GitHub anmelden",
"continueWithGoogle": "Mit Google anmelden",
"continueWithKeycloak": "Mit Keycloak anmelden",
"continueWithLogto": "Mit Logto anmelden",
"continueWithMicrosoft": "Mit Microsoft anmelden",
"continueWithOIDC": "Mit OIDC anmelden",
"continueWithOkta": "Mit Okta anmelden",
"continueWithWechat": "Mit WeChat anmelden",
"continueWithZitadel": "Mit Zitadel anmelden",
"emailPlaceholder": "Bitte geben Sie Ihre E-Mail-Adresse ein",
"emailStep": {
"subtitle": "Bitte geben Sie Ihre E-Mail-Adresse ein, um fortzufahren",
"title": "Anmelden"
},
"error": "Anmeldung fehlgeschlagen, bitte überprüfen Sie E-Mail und Passwort",
"forgotPassword": "Passwort vergessen?",
"forgotPasswordError": "Link zum Zurücksetzen des Passworts konnte nicht gesendet werden",
"forgotPasswordSent": "Link zum Zurücksetzen des Passworts wurde gesendet, bitte überprüfen Sie Ihre E-Mail",
"magicLinkButton": "Anmeldelink senden",
"magicLinkError": "Anmeldelink konnte nicht gesendet werden, bitte versuchen Sie es später erneut",
"magicLinkSent": "Anmeldelink wurde gesendet, bitte überprüfen Sie Ihre E-Mail",
"nextStep": "Nächster Schritt",
"noAccount": "Noch kein Konto?",
"orContinueWith": "oder",
"passwordPlaceholder": "Bitte geben Sie Ihr Passwort ein",
"passwordStep": {
"subtitle": "Bitte geben Sie Ihr Passwort ein, um fortzufahren"
},
"signupLink": "Jetzt registrieren",
"socialError": "Soziale Anmeldung fehlgeschlagen, bitte versuchen Sie es erneut",
"socialOnlyHint": "Diese E-Mail-Adresse wurde mit einem sozialen Konto registriert. Bitte melden Sie sich mit dem sozialen Konto an",
"submit": "Anmelden"
},
"signup": {
"emailPlaceholder": "Bitte geben Sie Ihre E-Mail-Adresse ein",
"error": "Registrierung fehlgeschlagen, bitte versuchen Sie es erneut",
"firstNamePlaceholder": "Vorname",
"hasAccount": "Bereits ein Konto?",
"lastNamePlaceholder": "Nachname",
"passwordPlaceholder": "Bitte geben Sie ein Passwort ein",
"signinLink": "Jetzt anmelden",
"submit": "Registrieren",
"subtitle": "Treten Sie der LobeChat-Community bei",
"success": "Registrierung erfolgreich! Bitte überprüfen Sie Ihre E-Mail zur Verifizierung",
"title": "Konto erstellen",
"usernamePlaceholder": "Bitte geben Sie einen Benutzernamen ein"
},
"verifyEmail": {
"backToSignIn": "Zurück zur Anmeldung",
"checkSpam": "Wenn Sie keine E-Mail erhalten haben, überprüfen Sie bitte Ihren Spam-Ordner",
"descriptionPrefix": "Wir haben eine Bestätigungs-E-Mail an",
"descriptionSuffix": "gesendet",
"resend": {
"button": "Bestätigungs-E-Mail erneut senden",
"error": "Senden fehlgeschlagen, bitte versuchen Sie es später erneut",
"noEmail": "E-Mail-Adresse fehlt",
"success": "Bestätigungs-E-Mail wurde erneut gesendet, bitte überprüfen Sie Ihre E-Mail"
},
"title": "Bestätigen Sie Ihre E-Mail-Adresse"
}
},
"date": {
"prevMonth": "Letzter Monat",
"recent30Days": "Letzte 30 Tage"
@@ -86,16 +184,31 @@
"loginOrSignup": "Einloggen / Registrieren",
"profile": {
"avatar": "Avatar",
"cancel": "Abbrechen",
"changePassword": "Passwort zurücksetzen",
"email": "E-Mail-Adresse",
"fullName": "Vollständiger Name",
"fullNameInputHint": "Bitte geben Sie einen neuen vollständigen Namen ein",
"password": "Passwort",
"resetPasswordError": "Link zum Zurücksetzen des Passworts konnte nicht gesendet werden",
"resetPasswordSent": "Link zum Zurücksetzen des Passworts wurde gesendet, bitte überprüfen Sie Ihre E-Mail",
"save": "Speichern",
"sso": {
"link": {
"button": "Konto verbinden",
"success": "Konto erfolgreich verbunden"
},
"loading": "Laden der verknüpften Drittanbieter-Konten",
"providers": "Verbundene Konten",
"unlink": {
"description": "Wenn Sie die Verknüpfung aufheben, können Sie sich nicht mehr mit dem {{provider}}-Konto {{providerAccountId}} anmelden. Wenn Sie das {{provider}}-Konto erneut mit dem aktuellen Konto verknüpfen möchten, stellen Sie bitte sicher, dass die E-Mail-Adresse des {{provider}}-Kontos {{email}} ist, und wir werden es Ihnen automatisch bei der Anmeldung mit dem aktuellen Konto zuordnen.",
"description": "Nach dem Trennen können Sie sich nicht mehr mit dem {{provider}}-Konto \"{{providerAccountId}}\" anmelden. Wenn Sie das {{provider}}-Konto erneut mit diesem Konto verbinden möchten, stellen Sie bitte sicher, dass die E-Mail-Adresse des {{provider}}-Kontos {{email}} ist. Wir werden es beim nächsten Login automatisch mit Ihrem aktuellen Konto verknüpfen.",
"forbidden": "Sie müssen mindestens ein Drittanbieter-Konto verbunden behalten.",
"title": "Möchten Sie das Drittanbieter-Konto {{provider}} wirklich trennen?"
}
},
"title": "Profilinformationen",
"updateAvatar": "Avatar aktualisieren",
"updateFullName": "Vollständigen Namen aktualisieren",
"username": "Benutzername"
},
"signout": "Ausloggen",
+41
View File
@@ -17,6 +17,7 @@
"availableAgents": "Verfügbare Assistenten",
"backToBottom": "Zurück zum Ende",
"chatList": {
"expandMessage": "Nachricht anzeigen",
"longMessageDetail": "Details anzeigen"
},
"clearCurrentMessages": "Aktuelle Nachrichten löschen",
@@ -52,6 +53,12 @@
"desc": "Basierend auf den Einschränkungen des Claude Thinking-Mechanismus (<1>Mehr erfahren</1>), wird bei Aktivierung die Begrenzung der Anzahl historischer Nachrichten automatisch deaktiviert.",
"title": "Tiefes Denken aktivieren"
},
"imageAspectRatio": {
"title": "Seitenverhältnis des Bildes"
},
"imageResolution": {
"title": "Bildauflösung"
},
"reasoningBudgetToken": {
"title": "Token für Denkaufwand"
},
@@ -64,6 +71,9 @@
"thinking": {
"title": "Tiefdenk-Schalter"
},
"thinkingLevel": {
"title": "Denkebene"
},
"title": "Modell Erweiterungsfunktionen",
"urlContext": {
"desc": "Wenn aktiviert, werden Webseiten-Links automatisch analysiert, um den tatsächlichen Webseiteninhalt zu erfassen",
@@ -173,9 +183,11 @@
"title": "Mitglieder erwähnen"
},
"messageAction": {
"collapse": "Nachricht ausblenden",
"continueGeneration": "Generierung fortsetzen",
"delAndRegenerate": "Löschen und neu generieren",
"deleteDisabledByThreads": "Es gibt Unterthemen, die Löschung ist nicht möglich.",
"expand": "Nachricht anzeigen",
"regenerate": "Neu generieren"
},
"messages": {
@@ -240,6 +252,7 @@
"noMatchingAgents": "Keine passenden Mitglieder gefunden",
"noMembersYet": "Diese Gruppe hat noch keine Mitglieder. Klicken Sie auf die +-Schaltfläche, um Assistenten einzuladen.",
"noSelectedAgents": "Noch keine Mitglieder ausgewählt",
"openInNewWindow": "In neuem Fenster öffnen",
"owner": "Gruppeninhaber",
"pin": "Anheften",
"pinOff": "Anheften aufheben",
@@ -326,6 +339,11 @@
"screenshot": "Screenshot",
"settings": "Exporteinstellungen",
"text": "Text",
"widthMode": {
"label": "Breitenmodus",
"narrow": "Schmalbildmodus",
"wide": "Breitbildmodus"
},
"withBackground": "Mit Hintergrundbild",
"withFooter": "Mit Fußzeile",
"withPluginInfo": "Mit Plugin-Informationen",
@@ -368,6 +386,29 @@
"remained": "Verbleibend",
"used": "Verwendet"
},
"tool": {
"intervention": {
"approve": "Genehmigen",
"approveAndRemember": "Genehmigen und merken",
"approveOnce": "Nur dieses Mal genehmigen",
"mode": {
"allowList": "Positivliste",
"allowListDesc": "Nur automatisch genehmigte Tools ausführen",
"autoRun": "Automatisch genehmigen",
"autoRunDesc": "Alle Tool-Ausführungen automatisch genehmigen",
"manual": "Manuell",
"manualDesc": "Jede Ausführung muss manuell genehmigt werden"
},
"reject": "Ablehnen",
"rejectAndContinue": "Ablehnen und erneut ausführen",
"rejectOnly": "Ablehnen",
"rejectReasonPlaceholder": "Die Angabe eines Ablehnungsgrundes hilft dem Agenten, zukünftige Aktionen zu verbessern",
"rejectTitle": "Tool-Ausführung ablehnen",
"rejectedWithReason": "Die Tool-Ausführung wurde abgelehnt: {{reason}}",
"toolAbort": "Dieser Werkzeugaufruf wurde vom Benutzer abgebrochen",
"toolRejected": "Die Tool-Ausführung wurde abgelehnt"
}
},
"topic": {
"checkOpenNewTopic": "Soll ein neues Thema eröffnet werden?",
"checkSaveCurrentMessages": "Möchten Sie die aktuelle Konversation als Thema speichern?",
+24
View File
@@ -135,6 +135,28 @@
}
},
"close": "Schließen",
"cmdk": {
"about": "Über",
"communitySupport": "Community-Support",
"discover": "Entdecken",
"knowledgeBase": "Wissensdatenbank",
"navigate": "Navigieren",
"newAgent": "Neuen Assistenten erstellen",
"noResults": "Keine Ergebnisse gefunden",
"openSettings": "Einstellungen öffnen",
"painting": "KI-Malerei",
"searchPlaceholder": "Befehl eingeben oder suchen...",
"settings": "Einstellungen",
"starOnGitHub": "Gib uns einen Stern auf GitHub",
"submitIssue": "Problem melden",
"theme": "Design",
"themeAuto": "Systemeinstellung folgen",
"themeDark": "Dunkles Design",
"themeLight": "Helles Design",
"toOpen": "Öffnen",
"toSelect": "Auswählen"
},
"confirm": "Bestätigen",
"contact": "Kontakt",
"copy": "Kopieren",
"copyFail": "Kopieren fehlgeschlagen",
@@ -282,9 +304,11 @@
"business": "Geschäftliche Zusammenarbeit",
"support": "E-Mail-Support"
},
"new": "Neu",
"oauth": "SSO-Anmeldung",
"officialSite": "Offizielle Website",
"ok": "OK",
"or": "oder",
"password": "Passwort",
"pin": "Anheften",
"pinOff": "Anheften aufheben",
+20
View File
@@ -26,6 +26,14 @@
"createChunkingTask": "Wird vorbereitet...",
"deleteSuccess": "Datei erfolgreich gelöscht",
"downloading": "Datei wird heruntergeladen...",
"goBack": "Zurück zur vorherigen Seite",
"goForward": "Weiter zur nächsten Seite",
"goToParent": "Zum übergeordneten Ordner",
"moveError": "Datei konnte nicht verschoben werden",
"moveHere": "Hierher verschieben",
"moveSuccess": "Datei erfolgreich verschoben",
"moveToFolder": "Verschieben nach...",
"moveToRoot": "In das Stammverzeichnis verschieben",
"removeFromKnowledgeBase": "Aus der Wissensdatenbank entfernen",
"removeFromKnowledgeBaseSuccess": "Datei erfolgreich entfernt"
},
@@ -42,6 +50,12 @@
"or": "oder",
"title": "Ziehen Sie Dateien oder Ordner hierher"
},
"noFolders": "Keine Ordner vorhanden",
"sort": {
"dateAdded": "Hinzugefügt am",
"name": "Name",
"size": "Größe"
},
"title": {
"createdAt": "Erstellungsdatum",
"size": "Größe",
@@ -106,6 +120,12 @@
"keyPlaceholder": "Schlüssel",
"valuePlaceholder": "Wert"
},
"LocalFile": {
"action": {
"open": "Öffnen",
"showInFolder": "Im Ordner anzeigen"
}
},
"MaxTokenSlider": {
"unlimited": "Unbegrenzt"
},
+2 -2
View File
@@ -102,7 +102,7 @@
"SPII": "Ihr Inhalt könnte sensible personenbezogene Daten enthalten. Zum Schutz der Privatsphäre entfernen Sie bitte diese Informationen und versuchen Sie es erneut.",
"default": "Inhalt blockiert: {{blockReason}}. Bitte passen Sie Ihre Anfrage an und versuchen Sie es erneut."
},
"InsufficientQuota": "Es tut uns leid, das Kontingent (Quota) für diesen Schlüssel ist erreicht. Bitte überprüfen Sie Ihr Kontoguthaben oder erhöhen Sie das Kontingent des Schlüssels und versuchen Sie es erneut.",
"InsufficientQuota": "Es tut uns leid, das Kontingent dieses Schlüssels wurde erreicht. Bitte überprüfen Sie, ob Ihr Kontostand ausreichend ist, oder erhöhen Sie das Kontingent des Schlüssels und versuchen Sie es erneut.",
"InvalidAccessCode": "Das Passwort ist ungültig oder leer. Bitte geben Sie das richtige Zugangspasswort ein oder fügen Sie einen benutzerdefinierten API-Schlüssel hinzu.",
"InvalidBedrockCredentials": "Die Bedrock-Authentifizierung ist fehlgeschlagen. Bitte überprüfen Sie AccessKeyId/SecretAccessKey und versuchen Sie es erneut.",
"InvalidClerkUser": "Entschuldigung, du bist derzeit nicht angemeldet. Bitte melde dich an oder registriere ein Konto, um fortzufahren.",
@@ -131,7 +131,7 @@
"PluginServerError": "Fehler bei der Serveranfrage des Plugins. Bitte überprüfen Sie die Fehlerinformationen unten in Ihrer Plugin-Beschreibungsdatei, Plugin-Konfiguration oder Serverimplementierung",
"PluginSettingsInvalid": "Das Plugin muss korrekt konfiguriert werden, um verwendet werden zu können. Bitte überprüfen Sie Ihre Konfiguration auf Richtigkeit",
"ProviderBizError": "Fehler bei der Anforderung des {{provider}}-Dienstes. Bitte überprüfen Sie die folgenden Informationen oder versuchen Sie es erneut.",
"QuotaLimitReached": "Es tut uns leid, die aktuelle Token-Nutzung oder die Anzahl der Anfragen hat das Kontingent (Quota) für diesen Schlüssel erreicht. Bitte erhöhen Sie das Kontingent für diesen Schlüssel oder versuchen Sie es später erneut.",
"QuotaLimitReached": "Es tut uns leid, die Anzahl der Token oder Anfragen hat das Kontingent dieses Schlüssels erreicht. Bitte erhöhen Sie das Kontingent des Schlüssels oder versuchen Sie es später erneut.",
"StreamChunkError": "Fehler beim Parsen des Nachrichtenchunks der Streaming-Anfrage. Bitte überprüfen Sie, ob die aktuelle API-Schnittstelle den Standards entspricht, oder wenden Sie sich an Ihren API-Anbieter.",
"SubscriptionKeyMismatch": "Es tut uns leid, aufgrund eines vorübergehenden Systemfehlers ist das aktuelle Abonnement vorübergehend ungültig. Bitte klicken Sie auf die Schaltfläche unten, um das Abonnement wiederherzustellen, oder kontaktieren Sie uns per E-Mail für Unterstützung.",
"SubscriptionPlanLimit": "Ihr Abonnementspunktestand ist erschöpft, Sie können diese Funktion nicht nutzen. Bitte upgraden Sie auf einen höheren Plan oder konfigurieren Sie die benutzerdefinierte Modell-API, um weiterhin zu verwenden.",
+95 -12
View File
@@ -1,5 +1,8 @@
{
"desc": "Verwalte dein Wissen",
"addFolder": "Ordner erstellen",
"addKnowledge": "Wissen hinzufügen",
"addPage": "Dokument erstellen",
"desc": "Verwalte dein Wissen für Arbeit, Studium und Alltag.",
"detail": {
"basic": {
"createdAt": "Erstellungszeit",
@@ -21,22 +24,92 @@
"embeddingStatus": "Vektorisierung"
}
},
"documentEditor": {
"addIcon": "Symbol hinzufügen",
"autoSaveMessage": "Das Dokument wird automatisch gespeichert, ein manuelles Speichern ist nicht erforderlich.",
"chooseIcon": "Symbol auswählen",
"deleteConfirm": {
"content": "Dieses Dokument wird gelöscht und kann danach nicht wiederhergestellt werden. Bitte seien Sie vorsichtig.",
"title": "Dokument löschen"
},
"deleteError": "Löschen des Dokuments fehlgeschlagen",
"deleteSuccess": "Dokument erfolgreich gelöscht",
"editedAt": "Zuletzt bearbeitet am {{time}}",
"editedBy": "Zuletzt bearbeitet von {{name}}",
"editorPlaceholder": "Geben Sie den Dokumentinhalt ein, drücken Sie / für das Befehlsmenü",
"empty": {
"createNewDocument": "Neues Dokument erstellen",
"title": "Wählen Sie ein Dokument, um zu beginnen",
"uploadMarkdown": "Markdown-Datei hochladen"
},
"linkCopied": "Link wurde kopiert",
"menu": {
"copyLink": "Link kopieren",
"exportDocument": "Dokument exportieren",
"importDocument": "Dokument importieren",
"pin": "Dokument anheften"
},
"saving": "Speichern...",
"titlePlaceholder": "Ohne Titel",
"wordCount": "{{wordCount}} Wörter"
},
"documentList": {
"copyContent": "Gesamten Inhalt kopieren",
"duplicate": "Kopie erstellen",
"empty": "Noch keine Dokumente vorhanden. Klicke auf die Schaltfläche oben, um dein erstes Dokument zu erstellen.",
"noResults": "Keine passenden Dokumente gefunden",
"pageCount": "Insgesamt {{count}} Dokumente",
"selectNote": "Wähle ein Dokument aus, um mit der Bearbeitung zu beginnen",
"untitled": "Ohne Titel"
},
"empty": "Keine hochgeladenen Dateien/Ordner vorhanden",
"header": {
"actions": {
"newFolder": "Neuen Ordner erstellen",
"newPage": "Neues Dokument",
"uploadFile": "Datei hochladen",
"uploadFolder": "Ordner hochladen"
},
"newNoteDialog": {
"cancel": "Abbrechen",
"editTitle": "Dokument bearbeiten",
"emptyContent": "Der Dokumentinhalt darf nicht leer sein",
"loadError": "Fehler beim Laden des Dokuments. Bitte versuchen Sie es erneut.",
"loading": "Wird geladen...",
"save": "Speichern",
"saveError": "Fehler beim Speichern des Dokuments. Bitte versuchen Sie es erneut.",
"saveSuccess": "Dokument erfolgreich gespeichert",
"title": "Neues Dokument",
"updateSuccess": "Dokument erfolgreich aktualisiert"
},
"newPageButton": "Neues Dokument erstellen",
"uploadButton": "Hochladen"
},
"knowledgeBase": {
"list": {
"confirmRemoveKnowledgeBase": "Die Wissensdatenbank wird gelöscht, die darin enthaltenen Dateien werden nicht gelöscht, sondern in den gesamten Dateien verschoben. Nach dem Löschen der Wissensdatenbank kann sie nicht wiederhergestellt werden, bitte vorsichtig vorgehen.",
"empty": "Klicken Sie auf <1>+</1>, um eine Wissensdatenbank zu erstellen"
},
"new": "Neue Wissensdatenbank",
"title": "Wissensdatenbank"
"home": {
"getStarted": "Loslegen",
"greeting": "Loslegen",
"quickActions": "Schnellaktionen",
"recentFiles": "Kürzlich verwendete Dateien",
"recentPages": "Kürzlich geöffnete Dokumente",
"subtitle": "Willkommen im Wissensspeicher. Beginnen Sie hier mit der Verwaltung Ihrer Dokumente.",
"uploadEntries": {
"files": {
"title": "Dateien hochladen"
},
"folder": {
"title": "Ordner hochladen"
},
"knowledgeBase": {
"title": "Neue Wissensdatenbank"
},
"newPage": {
"title": "Neues Dokument erstellen"
}
}
},
"menu": {
"allFiles": "Alle Dateien",
"allPages": "Alle Dokumente"
},
"networkError": "Fehler beim Abrufen der Wissensdatenbank. Bitte überprüfen Sie Ihre Netzwerkverbindung und versuchen Sie es erneut.",
"notSupportGuide": {
@@ -61,19 +134,29 @@
"downloadFile": "Datei herunterladen",
"unsupportedFileAndContact": "Dieses Dateiformat wird derzeit nicht für die Online-Vorschau unterstützt. Wenn Sie eine Vorschau wünschen, können Sie uns gerne <1>Feedback geben</1>."
},
"repo": {
"list": {
"confirmRemoveRepo": "Dieses Repository wird gelöscht. Die darin enthaltenen Dateien bleiben erhalten und werden in 'Alle Dateien' verschoben. Das Repository kann nach dem Löschen nicht wiederhergestellt werden. Bitte gehen Sie vorsichtig vor.",
"empty": "Klicken Sie auf <1>+</1>, um ein neues Repository zu erstellen"
},
"new": "Neues Repository",
"title": "Repository"
},
"searchFilePlaceholder": "Datei suchen",
"searchPagePlaceholder": "Dokumente durchsuchen",
"tab": {
"all": "Alle Dateien",
"all": "Alle",
"audios": "Audio",
"documents": "Dokumente",
"home": "Startseite",
"images": "Bilder",
"moreTypes": "Weitere Typen",
"pages": "Dokumente",
"videos": "Videos",
"websites": "Webseiten"
},
"title": "Wissensdatenbank",
"toggleLeftPanel": {
"title": "Linkes Panel einblenden/ausblenden"
},
"toggleLeftPanel": "Seitenleiste ein-/ausblenden",
"uploadDock": {
"body": {
"collapse": "Einklappen",
+4
View File
@@ -7,6 +7,10 @@
"desc": "Aktuelle Nachrichten und hochgeladene Dateien im Gespräch löschen",
"title": "Gesprächsnachrichten löschen"
},
"commandPalette": {
"desc": "Öffne die globale Befehlspalette für schnellen Zugriff auf Funktionen",
"title": "Befehlspalette"
},
"deleteAndRegenerateMessage": {
"desc": "Letzte Nachricht löschen und neu generieren",
"title": "Löschen und neu generieren"
+8
View File
@@ -37,6 +37,14 @@
"standard": "Standard"
}
},
"resolution": {
"label": "Auflösung",
"options": {
"1K": "1K",
"2K": "2K",
"4K": "4K"
}
},
"seed": {
"label": "Seed",
"random": "Zufälliger Seed"
+1 -1
View File
@@ -295,7 +295,7 @@
},
"helpDoc": "Konfigurationsanleitung",
"responsesApi": {
"desc": "Verwendet das neue Anforderungsformat von OpenAI, um fortgeschrittene Funktionen wie Chain-of-Thought freizuschalten",
"desc": "Verwendet das neue Anforderungsformat von OpenAI, um erweiterte Funktionen wie Chain-of-Thought freizuschalten (nur mit OpenAI-Modellen kompatibel)",
"title": "Verwendung des Responses API-Standards"
},
"waitingForMore": "Weitere Modelle werden <1>geplant</1>, bitte warten Sie"
+404 -122
View File
@@ -236,6 +236,9 @@
"MiniMaxAI/MiniMax-M1-80k": {
"description": "MiniMax-M1 ist ein groß angelegtes hybrides Aufmerksamkeits-Inferenzmodell mit offenen Gewichten, das 456 Milliarden Parameter umfasst und etwa 45,9 Milliarden Parameter pro Token aktiviert. Das Modell unterstützt nativ einen ultralangen Kontext von 1 Million Tokens und spart durch den Blitz-Attention-Mechanismus bei Aufgaben mit 100.000 Tokens im Vergleich zu DeepSeek R1 75 % der Fließkommaoperationen ein. Gleichzeitig verwendet MiniMax-M1 eine MoE-Architektur (Mixture of Experts) und kombiniert den CISPO-Algorithmus mit einem hybriden Aufmerksamkeitsdesign für effizientes verstärkendes Lernen, was in der Langzeiteingabe-Inferenz und realen Software-Engineering-Szenarien branchenführende Leistung erzielt."
},
"MiniMaxAI/MiniMax-M2": {
"description": "MiniMax-M2 definiert Effizienz für Agenten neu. Es handelt sich um ein kompaktes, schnelles und kosteneffizientes MoE-Modell mit insgesamt 230 Milliarden Parametern und 10 Milliarden aktiven Parametern. Es wurde für Spitzenleistungen bei Codierungs- und Agentenaufgaben entwickelt und bewahrt gleichzeitig eine starke allgemeine Intelligenz. Mit nur 10 Milliarden aktiven Parametern bietet MiniMax-M2 eine Leistung, die mit groß angelegten Modellen vergleichbar ist, und ist damit die ideale Wahl für Anwendungen mit hohen Effizienzanforderungen."
},
"Moonshot-Kimi-K2-Instruct": {
"description": "Mit insgesamt 1 Billion Parametern und 32 Milliarden aktivierten Parametern erreicht dieses nicht-denkende Modell Spitzenleistungen in den Bereichen aktuelles Wissen, Mathematik und Programmierung und ist besonders für allgemeine Agentenaufgaben optimiert. Es wurde speziell für Agentenaufgaben verfeinert, kann nicht nur Fragen beantworten, sondern auch Aktionen ausführen. Ideal für spontane, allgemeine Gespräche und Agentenerfahrungen, ist es ein reflexartiges Modell ohne lange Denkzeiten."
},
@@ -717,25 +720,31 @@
"description": "Claude 3 Opus ist das intelligenteste Modell von Anthropic mit marktführender Leistung bei hochkomplexen Aufgaben. Es meistert offene Eingabeaufforderungen und unbekannte Szenarien mit herausragender Flüssigkeit und menschenähnlichem Verständnis."
},
"anthropic/claude-3.5-haiku": {
"description": "Claude 3.5 Haiku ist die nächste Generation unseres schnellsten Modells. Mit ähnlicher Geschwindigkeit wie Claude 3 Haiku wurde Claude 3.5 Haiku in allen Kompetenzbereichen verbessert und übertrifft in vielen Intelligenz-Benchmarks unser bisher größtes Modell Claude 3 Opus."
"description": "Claude 3.5 Haiku bietet verbesserte Geschwindigkeit, höhere Genauigkeit beim Programmieren und effizientere Werkzeugnutzung. Ideal für Szenarien mit hohen Anforderungen an Geschwindigkeit und Tool-Interaktion."
},
"anthropic/claude-3.5-sonnet": {
"description": "Claude 3.5 Sonnet erreicht eine ideale Balance zwischen Intelligenz und Geschwindigkeit besonders für Unternehmens-Workloads. Im Vergleich zu ähnlichen Produkten bietet es starke Leistung zu geringeren Kosten und ist für hohe Belastbarkeit bei großflächigen KI-Einsätzen konzipiert."
"description": "Claude 3.5 Sonnet ist ein schnelles und effizientes Modell der Sonnet-Familie mit verbesserter Programmier- und Schlussfolgerungsleistung. Einige Versionen werden schrittweise durch Sonnet 3.7 ersetzt."
},
"anthropic/claude-3.7-sonnet": {
"description": "Claude 3.7 Sonnet ist das erste hybride Inferenzmodell und das intelligenteste Modell von Anthropic bisher. Es bietet modernste Leistung bei Codierung, Inhaltserstellung, Datenanalyse und Planungsaufgaben und baut auf den Software-Engineering- und Computerfähigkeiten seines Vorgängers Claude 3.5 Sonnet auf."
"description": "Claude 3.7 Sonnet ist die weiterentwickelte Version der Sonnet-Reihe mit leistungsstärkeren Fähigkeiten in den Bereichen Schlussfolgerung und Programmierung ideal für komplexe Unternehmensaufgaben."
},
"anthropic/claude-haiku-4.5": {
"description": "Claude Haiku 4.5 ist ein leistungsstarkes und schnelles Modell von Anthropic mit extrem niedriger Latenz bei gleichzeitig hoher Genauigkeit."
},
"anthropic/claude-opus-4": {
"description": "Claude Opus 4 ist das leistungsstärkste Modell von Anthropic und das weltweit beste Codierungsmodell mit Spitzenwerten bei SWE-bench (72,5 %) und Terminal-bench (43,2 %). Es bietet anhaltende Leistung für langfristige Aufgaben mit tausenden Schritten und kann stundenlang ununterbrochen arbeiten was die Fähigkeiten von KI-Agenten erheblich erweitert."
"description": "Opus 4 ist das Flaggschiffmodell von Anthropic, entwickelt für komplexe Aufgaben und unternehmensweite Anwendungen."
},
"anthropic/claude-opus-4.1": {
"description": "Claude Opus 4.1 ist ein Plug-and-Play-Ersatz für Opus 4 und bietet herausragende Leistung und Präzision für praktische Codierungs- und Agentenaufgaben. Opus 4.1 hebt die modernste Codierungsleistung auf 74,5 % bei SWE-bench Verified und behandelt komplexe mehrstufige Probleme mit höherer Genauigkeit und Detailgenauigkeit."
"description": "Opus 4.1 ist ein High-End-Modell von Anthropic, optimiert für Programmierung, komplexe Schlussfolgerungen und dauerhafte Aufgaben."
},
"anthropic/claude-opus-4.5": {
"description": "Claude Opus 4.5 ist das Flaggschiffmodell von Anthropic. Es vereint herausragende Intelligenz mit skalierbarer Leistung und eignet sich ideal für komplexe Aufgaben, die höchste Qualität bei Antworten und ausgeprägte Fähigkeiten zur Schlussfolgerung erfordern."
},
"anthropic/claude-sonnet-4": {
"description": "Claude Sonnet 4 baut auf den branchenführenden Fähigkeiten von Sonnet 3.7 auf und zeigt herausragende Codierungsleistung mit einem Spitzenwert von 72,7 % bei SWE-bench. Das Modell bietet eine ausgewogene Kombination aus Leistung und Effizienz, geeignet für interne und externe Anwendungsfälle, und ermöglicht durch verbesserte Steuerbarkeit eine größere Kontrolle über die Ergebnisse."
"description": "Claude Sonnet 4 ist eine hybride Schlussfolgerungsversion von Anthropic, die sowohl kognitive als auch nicht-kognitive Fähigkeiten kombiniert."
},
"anthropic/claude-sonnet-4.5": {
"description": "Claude Sonnet 4.5 ist das bisher intelligenteste Modell von Anthropic."
"description": "Claude Sonnet 4.5 ist das neueste hybride Schlussfolgerungsmodell von Anthropic, optimiert für komplexe Logik und Programmierung."
},
"ascend-tribe/pangu-pro-moe": {
"description": "Pangu-Pro-MoE 72B-A16B ist ein spärlich besetztes großes Sprachmodell mit 72 Milliarden Parametern und 16 Milliarden aktivierten Parametern. Es basiert auf der gruppierten Mixture-of-Experts-Architektur (MoGE), bei der Experten in Gruppen eingeteilt werden und Tokens innerhalb jeder Gruppe eine gleiche Anzahl von Experten aktivieren, um eine ausgewogene Expertenauslastung zu gewährleisten. Dies verbessert die Effizienz der Modellausführung auf der Ascend-Plattform erheblich."
@@ -758,6 +767,9 @@
"baidu/ERNIE-4.5-300B-A47B": {
"description": "ERNIE-4.5-300B-A47B ist ein von Baidu entwickeltes großes Sprachmodell, das auf einer Mixture-of-Experts (MoE)-Architektur basiert. Das Modell verfügt über insgesamt 300 Milliarden Parameter, aktiviert jedoch bei der Inferenz nur 47 Milliarden Parameter pro Token, was eine starke Leistung bei gleichzeitig hoher Rechen-effizienz gewährleistet. Als eines der Kernmodelle der ERNIE 4.5-Serie zeigt es herausragende Fähigkeiten in Textverständnis, -generierung, Schlussfolgerung und Programmierung. Das Modell verwendet eine innovative multimodale heterogene MoE-Vortrainingsmethode, die durch gemeinsames Training von Text- und visuellen Modalitäten die Gesamtleistung verbessert, insbesondere bei der Befolgung von Anweisungen und dem Erinnern von Weltwissen."
},
"baidu/ernie-5.0-thinking-preview": {
"description": "ERNIE 5.0 Thinking Preview ist Baidus neue Generation eines nativen multimodalen Wenxin-Modells, spezialisiert auf multimodales Verständnis, Befolgen von Anweisungen, kreative Aufgaben, Faktenfragen und Tool-Nutzung."
},
"c4ai-aya-expanse-32b": {
"description": "Aya Expanse ist ein leistungsstarkes 32B mehrsprachiges Modell, das darauf abzielt, die Leistung von einsprachigen Modellen durch innovative Ansätze wie Anweisungsoptimierung, Datenarbitrage, Präferenztraining und Modellfusion herauszufordern. Es unterstützt 23 Sprachen."
},
@@ -818,6 +830,9 @@
"claude-opus-4-20250514": {
"description": "Claude Opus 4 ist das leistungsstärkste Modell von Anthropic zur Bewältigung hochkomplexer Aufgaben. Es zeichnet sich durch hervorragende Leistung, Intelligenz, Flüssigkeit und Verständnis aus."
},
"claude-opus-4-5-20251101": {
"description": "Claude Opus 4.5 ist das Flaggschiffmodell von Anthropic. Es vereint herausragende Intelligenz mit skalierbarer Leistung und eignet sich ideal für komplexe Aufgaben, die höchste Qualität bei Antworten und ausgeprägte Fähigkeiten zur Schlussfolgerung erfordern."
},
"claude-sonnet-4-20250514": {
"description": "Claude Sonnet 4 kann nahezu sofortige Antworten oder verlängerte schrittweise Überlegungen erzeugen, die für den Nutzer klar nachvollziehbar sind."
},
@@ -866,6 +881,9 @@
"codex-mini-latest": {
"description": "codex-mini-latest ist eine feinabgestimmte Version von o4-mini, speziell für Codex CLI entwickelt. Für die direkte Nutzung über die API empfehlen wir den Start mit gpt-4.1."
},
"cogito-2.1:671b": {
"description": "Cogito v2.1 671B ist ein frei kommerziell nutzbares Open-Source-Sprachmodell aus den USA mit leistungsstarker Performance, hoher Token-Effizienz, 128k Kontextlänge und umfassenden Fähigkeiten."
},
"cogview-4": {
"description": "CogView-4 ist das erste von Zhipu entwickelte Open-Source-Text-zu-Bild-Modell, das die Generierung chinesischer Schriftzeichen unterstützt. Es bietet umfassende Verbesserungen in den Bereichen semantisches Verständnis, Bildgenerierungsqualität und die Fähigkeit, chinesische und englische Schriftzeichen zu erzeugen. Es unterstützt mehrsprachige Eingaben beliebiger Länge in Chinesisch und Englisch und kann Bilder in beliebiger Auflösung innerhalb eines vorgegebenen Bereichs erzeugen."
},
@@ -1049,6 +1067,9 @@
"deepseek-r1-0528": {
"description": "Das voll ausgestattete 685B-Modell, veröffentlicht am 28. Mai 2025. DeepSeek-R1 nutzt im Nachtrainingsprozess umfangreiche Verstärkungslernverfahren und verbessert die Modell-Inferenzfähigkeit erheblich, selbst bei minimalen annotierten Daten. Es zeigt hohe Leistung und starke Fähigkeiten in Mathematik, Programmierung und natürlicher Sprachlogik."
},
"deepseek-r1-250528": {
"description": "DeepSeek R1 250528, die Vollversion des DeepSeek-R1-Inferenzmodells, geeignet für anspruchsvolle Mathematik- und Logikaufgaben."
},
"deepseek-r1-70b-fast-online": {
"description": "DeepSeek R1 70B Schnellversion, die Echtzeit-Online-Suche unterstützt und eine schnellere Reaktionszeit bei gleichbleibender Modellleistung bietet."
},
@@ -1059,31 +1080,34 @@
"description": "deepseek-r1-distill-llama ist ein Modell, das auf der Grundlage von Llama aus DeepSeek-R1 destilliert wurde."
},
"deepseek-r1-distill-llama-70b": {
"description": "DeepSeek R1 das größere und intelligentere Modell im DeepSeek-Paket wurde in die Llama 70B-Architektur destilliert. Basierend auf Benchmark-Tests und menschlicher Bewertung ist dieses Modell intelligenter als das ursprüngliche Llama 70B, insbesondere bei Aufgaben, die mathematische und faktische Genauigkeit erfordern."
"description": "DeepSeek R1 Distill Llama 70B, ein distilliertes Modell, das die allgemeine R1-Inferenzfähigkeit mit dem Llama-Ökosystem kombiniert."
},
"deepseek-r1-distill-llama-8b": {
"description": "Das DeepSeek-R1-Distill Modell wurde durch Wissensdistillationstechniken entwickelt, indem Proben, die von DeepSeek-R1 generiert wurden, auf Qwen, Llama und andere Open-Source-Modelle feinabgestimmt wurden."
"description": "DeepSeek-R1-Distill-Llama-8B ist ein distilliertes großes Sprachmodell auf Basis von Llama-3.1-8B unter Verwendung der Ausgaben von DeepSeek R1."
},
"deepseek-r1-distill-qianfan-70b": {
"description": "DeepSeek R1 Distill Qianfan 70B, ein kosteneffizientes R1-Distillationsmodell basierend auf Qianfan-70B."
},
"deepseek-r1-distill-qianfan-8b": {
"description": "DeepSeek R1 Distill Qianfan 8B, ein R1-Distillationsmodell auf Basis von Qianfan-8B, geeignet für mittelgroße und kleinere Anwendungen."
},
"deepseek-r1-distill-qianfan-llama-70b": {
"description": "Erstmals veröffentlicht am 14. Februar 2025, destilliert vom Qianfan-Modellteam auf Basis des Llama3_70B Modells (gebaut mit Meta Llama), wobei auch die Qianfan-Korpora in die Destillationsdaten aufgenommen wurden."
},
"deepseek-r1-distill-qianfan-llama-8b": {
"description": "Erstmals veröffentlicht am 14. Februar 2025, destilliert vom Qianfan-Modellteam auf Basis des Llama3_8B Modells (gebaut mit Meta Llama), wobei auch die Qianfan-Korpora in die Destillationsdaten aufgenommen wurden."
"description": "DeepSeek R1 Distill Qianfan Llama 70B, ein R1-Distillationsmodell basierend auf Llama-70B."
},
"deepseek-r1-distill-qwen": {
"description": "deepseek-r1-distill-qwen ist ein Modell, das auf der Grundlage von Qwen durch Distillierung aus DeepSeek-R1 erstellt wurde."
},
"deepseek-r1-distill-qwen-1.5b": {
"description": "Das DeepSeek-R1-Distill Modell wurde durch Wissensdistillationstechniken entwickelt, indem Proben, die von DeepSeek-R1 generiert wurden, auf Qwen, Llama und andere Open-Source-Modelle feinabgestimmt wurden."
"description": "DeepSeek R1 Distill Qwen 1.5B, ein ultraleichtes R1-Distillationsmodell, ideal für Umgebungen mit sehr begrenzten Ressourcen."
},
"deepseek-r1-distill-qwen-14b": {
"description": "Das DeepSeek-R1-Distill Modell wurde durch Wissensdistillationstechniken entwickelt, indem Proben, die von DeepSeek-R1 generiert wurden, auf Qwen, Llama und andere Open-Source-Modelle feinabgestimmt wurden."
"description": "DeepSeek R1 Distill Qwen 14B, ein mittelgroßes R1-Distillationsmodell, geeignet für den Einsatz in verschiedenen Szenarien."
},
"deepseek-r1-distill-qwen-32b": {
"description": "Das DeepSeek-R1-Distill Modell wurde durch Wissensdistillationstechniken entwickelt, indem Proben, die von DeepSeek-R1 generiert wurden, auf Qwen, Llama und andere Open-Source-Modelle feinabgestimmt wurden."
"description": "DeepSeek R1 Distill Qwen 32B, ein R1-Distillationsmodell basierend auf Qwen-32B, das Leistung und Kosten ausbalanciert."
},
"deepseek-r1-distill-qwen-7b": {
"description": "Das DeepSeek-R1-Distill Modell wurde durch Wissensdistillationstechniken entwickelt, indem Proben, die von DeepSeek-R1 generiert wurden, auf Qwen, Llama und andere Open-Source-Modelle feinabgestimmt wurden."
"description": "DeepSeek R1 Distill Qwen 7B, ein leichtgewichtiges R1-Distillationsmodell, geeignet für Edge-Computing und unternehmensinterne Umgebungen."
},
"deepseek-r1-fast-online": {
"description": "DeepSeek R1 Vollschnellversion, die Echtzeit-Online-Suche unterstützt und die leistungsstarken Fähigkeiten von 671B Parametern mit einer schnelleren Reaktionszeit kombiniert."
@@ -1112,12 +1136,27 @@
"deepseek-v3.1-terminus": {
"description": "DeepSeek-V3.1-Terminus ist eine optimierte Version des großen Sprachmodells von DeepSeek, speziell für Endgeräte entwickelt."
},
"deepseek-v3.1-think-250821": {
"description": "DeepSeek V3.1 Think 250821, das Deep-Thinking-Modell der Terminus-Version, geeignet für leistungsstarke Inferenzszenarien."
},
"deepseek-v3.1:671b": {
"description": "DeepSeek V3.1: Ein Inferenzmodell der nächsten Generation, das komplexe Schlussfolgerungen und verknüpfte Denkfähigkeiten verbessert und sich für Aufgaben eignet, die tiefgehende Analysen erfordern."
},
"deepseek-v3.2-exp": {
"description": "deepseek-v3.2-exp führt einen sparsamen Aufmerksamkeitsmechanismus ein, um die Effizienz beim Training und der Inferenz bei der Verarbeitung langer Texte zu verbessern. Der Preis liegt unter dem von deepseek-v3.1."
},
"deepseek-v3.2-think": {
"description": "DeepSeek V3.2 Think, die Vollversion des Deep-Thinking-Modells mit verbesserter Fähigkeit zur Langketteninferenz."
},
"deepseek-vl2": {
"description": "DeepSeek VL2, ein multimodales Modell mit Unterstützung für Bild-Text-Verständnis und fein abgestimmte visuelle Fragebeantwortung."
},
"deepseek-vl2-small": {
"description": "DeepSeek VL2 Small, eine leichte multimodale Version, geeignet für ressourcenbeschränkte und hochparallele Szenarien."
},
"deepseek/deepseek-chat": {
"description": "DeepSeek-V3 ist ein leistungsstarkes hybrides Schlussfolgerungsmodell des DeepSeek-Teams, geeignet für komplexe Aufgaben und Tool-Integration."
},
"deepseek/deepseek-chat-v3-0324": {
"description": "DeepSeek V3 ist ein Experten-Mischmodell mit 685B Parametern und die neueste Iteration der Flaggschiff-Chatmodellreihe des DeepSeek-Teams.\n\nEs erbt das [DeepSeek V3](/deepseek/deepseek-chat-v3) Modell und zeigt hervorragende Leistungen in verschiedenen Aufgaben."
},
@@ -1125,19 +1164,19 @@
"description": "DeepSeek V3 ist ein Experten-Mischmodell mit 685B Parametern und die neueste Iteration der Flaggschiff-Chatmodellreihe des DeepSeek-Teams.\n\nEs erbt das [DeepSeek V3](/deepseek/deepseek-chat-v3) Modell und zeigt hervorragende Leistungen in verschiedenen Aufgaben."
},
"deepseek/deepseek-chat-v3.1": {
"description": "DeepSeek-V3.1 ist ein großes hybrides Inferenzmodell, das 128K langen Kontext und effizienten Moduswechsel unterstützt. Es erzielt herausragende Leistung und Geschwindigkeit bei Tool-Aufrufen, Codegenerierung und komplexen Inferenzaufgaben."
"description": "DeepSeek-V3.1 ist ein hybrides Schlussfolgerungsmodell mit langem Kontext von DeepSeek, das sowohl kognitive als auch nicht-kognitive Modi sowie Tool-Integration unterstützt."
},
"deepseek/deepseek-r1": {
"description": "Das DeepSeek R1 Modell wurde in einer kleinen Version aktualisiert, aktuell DeepSeek-R1-0528. Das neueste Update verbessert die Inferenztiefe und -fähigkeit erheblich durch erhöhte Rechenressourcen und nachträgliche algorithmische Optimierungen. Das Modell zeigt hervorragende Leistungen in Mathematik, Programmierung und allgemeiner Logik und nähert sich führenden Modellen wie O3 und Gemini 2.5 Pro an."
},
"deepseek/deepseek-r1-0528": {
"description": "DeepSeek-R1 verbessert die Modellschlussfolgerungsfähigkeit erheblich, selbst bei sehr begrenzten annotierten Daten. Vor der Ausgabe der endgültigen Antwort generiert das Modell eine Denkprozesskette, um die Genauigkeit der Antwort zu erhöhen."
"description": "DeepSeek R1 0528 ist eine aktualisierte Variante von DeepSeek mit Fokus auf Open-Source-Nutzung und tiefgreifender Schlussfolgerung."
},
"deepseek/deepseek-r1-0528:free": {
"description": "DeepSeek-R1 verbessert die Modellschlussfolgerungsfähigkeit erheblich, selbst bei sehr begrenzten annotierten Daten. Vor der Ausgabe der endgültigen Antwort generiert das Modell eine Denkprozesskette, um die Genauigkeit der Antwort zu erhöhen."
},
"deepseek/deepseek-r1-distill-llama-70b": {
"description": "DeepSeek-R1-Distill-Llama-70B ist eine destillierte, effizientere Variante des 70B Llama Modells. Es behält starke Leistung bei Textgenerierungsaufgaben bei und reduziert den Rechenaufwand für einfachere Bereitstellung und Forschung. Betrieben von Groq mit deren maßgeschneiderter Language Processing Unit (LPU) Hardware für schnelle und effiziente Inferenz."
"description": "DeepSeek R1 Distill Llama 70B ist ein großes Sprachmodell auf Basis von Llama3.3 70B. Durch Feintuning mit den Ausgaben von DeepSeek R1 erreicht es eine konkurrenzfähige Leistung, die mit führenden Großmodellen vergleichbar ist."
},
"deepseek/deepseek-r1-distill-llama-8b": {
"description": "DeepSeek R1 Distill Llama 8B ist ein distilliertes großes Sprachmodell, das auf Llama-3.1-8B-Instruct basiert und durch Training mit den Ausgaben von DeepSeek R1 erstellt wurde."
@@ -1154,6 +1193,9 @@
"deepseek/deepseek-r1:free": {
"description": "DeepSeek-R1 hat die Schlussfolgerungsfähigkeiten des Modells erheblich verbessert, selbst bei nur wenigen gekennzeichneten Daten. Bevor das Modell die endgültige Antwort ausgibt, gibt es zunächst eine Denkprozesskette aus, um die Genauigkeit der endgültigen Antwort zu erhöhen."
},
"deepseek/deepseek-reasoner": {
"description": "DeepSeek-V3 Thinking (Reasoner) ist ein experimentelles Modell von DeepSeek für hochkomplexe Schlussfolgerungsaufgaben."
},
"deepseek/deepseek-v3": {
"description": "Schnelles, universelles großes Sprachmodell mit verbesserter Inferenzfähigkeit."
},
@@ -1253,83 +1295,89 @@
"emohaa": {
"description": "Emohaa ist ein psychologisches Modell mit professionellen Beratungsfähigkeiten, das den Nutzern hilft, emotionale Probleme zu verstehen."
},
"ernie-3.5-128k": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle deckt eine riesige Menge an chinesischen und englischen Korpora ab und bietet starke allgemeine Fähigkeiten, die die meisten Anforderungen an Dialogfragen, kreative Generierung und Plugin-Anwendungen erfüllen; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten."
},
"ernie-3.5-8k": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle deckt eine riesige Menge an chinesischen und englischen Korpora ab und bietet starke allgemeine Fähigkeiten, die die meisten Anforderungen an Dialogfragen, kreative Generierung und Plugin-Anwendungen erfüllen; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten."
},
"ernie-3.5-8k-preview": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle deckt eine riesige Menge an chinesischen und englischen Korpora ab und bietet starke allgemeine Fähigkeiten, die die meisten Anforderungen an Dialogfragen, kreative Generierung und Plugin-Anwendungen erfüllen; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten."
},
"ernie-4.0-8k-latest": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle hat im Vergleich zu ERNIE 3.5 eine umfassende Verbesserung der Modellfähigkeiten erreicht und ist weit verbreitet in komplexen Aufgabenbereichen anwendbar; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten."
},
"ernie-4.0-8k-preview": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle hat im Vergleich zu ERNIE 3.5 eine umfassende Verbesserung der Modellfähigkeiten erreicht und ist weit verbreitet in komplexen Aufgabenbereichen anwendbar; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten."
},
"ernie-4.0-turbo-128k": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle zeigt hervorragende Gesamtergebnisse und ist weit verbreitet in komplexen Aufgabenbereichen anwendbar; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten. Im Vergleich zu ERNIE 4.0 bietet es eine bessere Leistung."
},
"ernie-4.0-turbo-8k-latest": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle zeigt hervorragende Gesamtergebnisse und ist weit verbreitet in komplexen Aufgabenbereichen anwendbar; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten. Im Vergleich zu ERNIE 4.0 bietet es eine bessere Leistung."
},
"ernie-4.0-turbo-8k-preview": {
"description": "Das von Baidu entwickelte Flaggschiff-Modell für große Sprachmodelle zeigt hervorragende Gesamtergebnisse und ist weit verbreitet in komplexen Aufgabenbereichen anwendbar; es unterstützt die automatische Anbindung an das Baidu-Suchplugin, um die Aktualität der Antwortinformationen zu gewährleisten. Im Vergleich zu ERNIE 4.0 bietet es eine bessere Leistung."
"ernie-4.5-0.3b": {
"description": "ERNIE 4.5 0.3B, ein leichtgewichtiges Open-Source-Modell, ideal für lokale und maßgeschneiderte Bereitstellungen."
},
"ernie-4.5-21b-a3b": {
"description": "ERNIE 4.5 21B A3B ist ein hybrides Expertenmodell von Baidu Wenxin mit herausragenden Fähigkeiten im logischen Denken und in der Mehrsprachigkeit."
"description": "ERNIE 4.5 21B A3B, ein Open-Source-Modell mit großer Parameteranzahl, leistungsstark bei Verständnis- und Generierungsaufgaben."
},
"ernie-4.5-300b-a47b": {
"description": "ERNIE 4.5 300B A47B ist ein großskaliges hybrides Expertenmodell von Baidu Wenxin mit exzellenten Fähigkeiten im logischen Schlussfolgern."
},
"ernie-4.5-8k-preview": {
"description": "Das ERNIE 4.5 Modell ist ein neu entwickeltes, natives multimodales Basis-Modell von Baidu, das durch die gemeinsame Modellierung mehrerer Modalitäten eine synergistische Optimierung erreicht und über hervorragende multimodale Verständnisfähigkeiten verfügt; es bietet verbesserte Sprachfähigkeiten, umfassende Verbesserungen in Verständnis, Generierung, Logik und Gedächtnis, sowie signifikante Verbesserungen in der Vermeidung von Halluzinationen, logischen Schlussfolgerungen und Programmierfähigkeiten."
"description": "ERNIE 4.5 8K Preview, ein Vorschau-Modell mit 8K-Kontext, zur Erprobung und zum Testen der Fähigkeiten von Wenxin 4.5."
},
"ernie-4.5-turbo-128k": {
"description": "Wenxin 4.5 Turbo hat deutliche Verbesserungen in den Bereichen Halluzinationen reduzieren, logisches Denken und Programmierfähigkeiten. Im Vergleich zu Wenxin 4.5 ist es schneller und kostengünstiger. Die Modellfähigkeiten wurden umfassend verbessert, um besser mit mehrstufigen, langen historischen Dialogen und der Beantwortung von Fragen zu langen Dokumenten umzugehen."
"description": "ERNIE 4.5 Turbo 128K, ein leistungsstarkes Allzweckmodell mit Unterstützung für suchbasierte Erweiterung und Tool-Nutzung, geeignet für QA, Code, Agenten und mehr."
},
"ernie-4.5-turbo-128k-preview": {
"description": "ERNIE 4.5 Turbo 128K Preview, eine Vorschauversion mit denselben Fähigkeiten wie die finale Version, ideal für Integrationstests und schrittweise Einführung."
},
"ernie-4.5-turbo-32k": {
"description": "Wenxin 4.5 Turbo hat deutliche Verbesserungen in den Bereichen Halluzinationen reduzieren, logisches Denken und Programmierfähigkeiten. Im Vergleich zu Wenxin 4.5 ist es schneller und kostengünstiger. Die Fähigkeiten in der Textkreation und Wissensfragen haben sich erheblich verbessert. Die Ausgabelänge und die Verzögerung bei vollständigen Sätzen sind im Vergleich zu ERNIE 4.5 gestiegen."
"description": "ERNIE 4.5 Turbo 32K, eine Version mit mittellangem Kontext, geeignet für QA, Wissensdatenbankabfragen und mehrstufige Dialoge."
},
"ernie-4.5-turbo-latest": {
"description": "ERNIE 4.5 Turbo Latest, die neueste Version mit umfassender Leistungsoptimierung, ideal als Hauptmodell für Produktionsumgebungen."
},
"ernie-4.5-turbo-vl": {
"description": "ERNIE 4.5 Turbo VL, ein ausgereiftes multimodales Modell für Bild-Text-Verständnis und Erkennung in Produktionsumgebungen."
},
"ernie-4.5-turbo-vl-32k": {
"description": "Die neueste Version des Wenxin Yi Yan Modells hat signifikante Verbesserungen in den Bereichen Bildverständnis, Kreation, Übersetzung und Programmierung. Es unterstützt erstmals eine Kontextlänge von 32K, und die Verzögerung beim ersten Token wurde erheblich reduziert."
"description": "ERNIE 4.5 Turbo VL 32K, eine multimodale Version mit mittellangem Textkontext, geeignet für das kombinierte Verständnis von langen Dokumenten und Bildern."
},
"ernie-4.5-turbo-vl-32k-preview": {
"description": "ERNIE 4.5 Turbo VL 32K Preview, eine Vorschauversion des multimodalen 32K-Modells zur Bewertung der Langkontext-Bildverarbeitungsfähigkeiten."
},
"ernie-4.5-turbo-vl-latest": {
"description": "ERNIE 4.5 Turbo VL Latest, die neueste multimodale Version mit verbesserter Bild-Text-Verständnis- und Inferenzleistung."
},
"ernie-4.5-turbo-vl-preview": {
"description": "ERNIE 4.5 Turbo VL Preview, ein multimodales Vorschau-Modell mit Unterstützung für Bild-Text-Verständnis und -Generierung, ideal für visuelle QA und Inhaltsverständnis."
},
"ernie-4.5-vl-28b-a3b": {
"description": "ERNIE 4.5 VL 28B A3B, ein Open-Source-Multimodalmodell für Bild-Text-Verständnis und Inferenzaufgaben."
},
"ernie-5.0-thinking-preview": {
"description": "Wenxin 5.0 Thinking Preview, ein natives, multimodales Flaggschiffmodell mit einheitlicher Modellierung von Text, Bild, Audio und Video. Umfassend verbesserte Fähigkeiten für komplexe QA, kreative Aufgaben und Agentenszenarien."
},
"ernie-char-8k": {
"description": "Das von Baidu entwickelte große Sprachmodell für vertikale Szenarien eignet sich für Anwendungen wie NPCs in Spielen, Kundenservice-Dialoge und Rollenspiele, mit einem klareren und konsistenteren Charakterstil, einer stärkeren Befolgung von Anweisungen und besserer Inferenzleistung."
"description": "ERNIE Character 8K, ein dialogorientiertes Modell mit Charakterpersönlichkeit, ideal für IP-Charakterentwicklung und langfristige Begleitdialoge."
},
"ernie-char-fiction-8k": {
"description": "Das von Baidu entwickelte große Sprachmodell für vertikale Szenarien eignet sich für Anwendungen wie NPCs in Spielen, Kundenservice-Dialoge und Rollenspiele, mit einem klareren und konsistenteren Charakterstil, einer stärkeren Befolgung von Anweisungen und besserer Inferenzleistung."
"description": "ERNIE Character Fiction 8K, ein Persönlichkeitsmodell für Roman- und Storytelling, geeignet für die Generierung langer Geschichten."
},
"ernie-char-fiction-8k-preview": {
"description": "ERNIE Character Fiction 8K Preview, eine Vorschauversion für Charakter- und Storytelling-Modelle zur Funktionsbewertung und zum Testen."
},
"ernie-irag-edit": {
"description": "Das von Baidu entwickelte ERNIE iRAG Edit Bildbearbeitungsmodell unterstützt Operationen wie Löschen (erase), Neumalen (repaint) und Variationserzeugung (variation) basierend auf Bildern."
"description": "ERNIE iRAG Edit, ein Bildbearbeitungsmodell mit Unterstützung für Bildlöschung, Neuzeichnung und Varianten-Generierung."
},
"ernie-lite-8k": {
"description": "ERNIE Lite ist ein leichtgewichtiges großes Sprachmodell, das von Baidu entwickelt wurde und sowohl hervorragende Modellleistung als auch Inferenzleistung bietet, geeignet für die Verwendung mit AI-Beschleunigungskarten mit geringer Rechenleistung."
"description": "ERNIE Lite 8K, ein leichtgewichtiges Allzweckmodell, ideal für kostensensitive Alltags-QA- und Content-Generierungsszenarien."
},
"ernie-lite-pro-128k": {
"description": "Das von Baidu entwickelte leichtgewichtige große Sprachmodell bietet sowohl hervorragende Modellleistung als auch Inferenzleistung, die besser ist als die von ERNIE Lite, und ist geeignet für die Verwendung mit AI-Beschleunigungskarten mit geringer Rechenleistung."
"description": "ERNIE Lite Pro 128K, ein leichtes Hochleistungsmodell, geeignet für latenz- und kostensensitive Geschäftsanwendungen."
},
"ernie-novel-8k": {
"description": "Das von Baidu entwickelte allgemeine große Sprachmodell hat deutliche Vorteile in der Fähigkeit zur Fortsetzung von Romanen und kann auch in Szenarien wie Kurzdramen und Filmen eingesetzt werden."
"description": "ERNIE Novel 8K, ein Modell für Romane und IP-Storytelling, spezialisiert auf Mehrcharakter- und Multistrang-Erzählungen."
},
"ernie-speed-128k": {
"description": "Das neueste hochleistungsfähige große Sprachmodell von Baidu, das 2024 veröffentlicht wurde, bietet hervorragende allgemeine Fähigkeiten und eignet sich gut als Basismodell für Feinabstimmungen, um spezifische Szenarien besser zu bewältigen, während es auch hervorragende Inferenzleistungen bietet."
"description": "ERNIE Speed 128K, ein großes Modell ohne Ein-/Ausgabegebühren, ideal für Langtextverständnis und großflächige Testszenarien."
},
"ernie-speed-8k": {
"description": "ERNIE Speed 8K, ein kostenloses Schnellmodell, geeignet für alltägliche Dialoge und leichte Textaufgaben."
},
"ernie-speed-pro-128k": {
"description": "Das neueste hochleistungsfähige große Sprachmodell von Baidu, das 2024 veröffentlicht wurde, bietet hervorragende allgemeine Fähigkeiten und ist besser als ERNIE Speed, geeignet als Basismodell für Feinabstimmungen, um spezifische Szenarien besser zu bewältigen, während es auch hervorragende Inferenzleistungen bietet."
"description": "ERNIE Speed Pro 128K, ein hochgradig paralleles und kosteneffizientes Modell, ideal für großflächige Online-Dienste und Unternehmensanwendungen."
},
"ernie-tiny-8k": {
"description": "ERNIE Tiny ist ein hochleistungsfähiges großes Sprachmodell, dessen Bereitstellungs- und Feinabstimmungskosten die niedrigsten unter den Wenshin-Modellen sind."
},
"ernie-x1-32k": {
"description": "Verfügt über stärkere Fähigkeiten in Verständnis, Planung, Reflexion und Evolution. Als umfassenderes tiefes Denkmodell kombiniert Wenxin X1 Genauigkeit, Kreativität und Ausdruckskraft und zeigt herausragende Leistungen in den Bereichen chinesische Wissensfragen, literarische Kreation, Textverfassung, alltägliche Gespräche, logisches Denken, komplexe Berechnungen und Werkzeugnutzung."
},
"ernie-x1-32k-preview": {
"description": "Das große Modell ERNIE X1 verfügt über verbesserte Fähigkeiten in Verständnis, Planung, Reflexion und Evolution. Als umfassenderes tiefes Denkmodell kombiniert ERNIE X1 Genauigkeit, Kreativität und Ausdruckskraft und zeigt herausragende Leistungen in den Bereichen chinesische Wissensabfragen, literarisches Schaffen, Textverfassung, alltägliche Gespräche, logisches Denken, komplexe Berechnungen und Werkzeugnutzung."
"description": "ERNIE Tiny 8K, ein extrem leichtes Modell, geeignet für einfache QA-, Klassifizierungs- und kostengünstige Inferenzszenarien."
},
"ernie-x1-turbo-32k": {
"description": "Im Vergleich zu ERNIE-X1-32K bietet dieses Modell bessere Leistung und Effizienz."
"description": "ERNIE X1 Turbo 32K, ein Hochgeschwindigkeits-Denkmodell mit 32K-Kontext, geeignet für komplexe Inferenz und mehrstufige Dialoge."
},
"ernie-x1.1-preview": {
"description": "ERNIE X1.1 Preview, eine Vorschauversion des Denkmodells ERNIE X1.1, geeignet für Fähigkeitsvalidierung und Tests."
},
"fal-ai/bytedance/seedream/v4": {
"description": "Seedream 4.0 Bildgenerierungsmodell vom Seed-Team von ByteDance, unterstützt Texteingaben und Bilder und bietet eine hochgradig kontrollierbare, qualitativ hochwertige Bildgenerierung. Bilder werden basierend auf Textanweisungen erzeugt."
@@ -1389,7 +1437,7 @@
"description": "FLUX.1 [schnell] ist das derzeit fortschrittlichste Open-Source-Modell mit wenigen Schritten, das nicht nur Konkurrenten übertrifft, sondern auch leistungsstärkere nicht-feinabgestimmte Modelle wie Midjourney v6.0 und DALL·E 3 (HD) übertrifft. Das Modell wurde speziell feinabgestimmt, um die gesamte Vielfalt der Vortrainingsausgaben zu bewahren. Im Vergleich zu den aktuell besten Modellen auf dem Markt bietet FLUX.1 [schnell] erhebliche Verbesserungen in visueller Qualität, Instruktionsbefolgung, Größen- und Proportionsänderungen, Schriftartenverarbeitung und Ausgabediversität, was den Nutzern eine reichhaltigere und vielfältigere kreative Bildgenerierung ermöglicht."
},
"flux.1-schnell": {
"description": "Ein Rectified Flow Transformer mit 12 Milliarden Parametern, der Bilder basierend auf Textbeschreibungen generieren kann."
"description": "FLUX.1-schnell, ein leistungsstarkes Bildgenerierungsmodell, ideal für die schnelle Erstellung von Bildern in verschiedenen Stilen."
},
"gemini-1.0-pro-001": {
"description": "Gemini 1.0 Pro 001 (Tuning) bietet stabile und anpassbare Leistung und ist die ideale Wahl für Lösungen komplexer Aufgaben."
@@ -1454,9 +1502,6 @@
"gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash ist eine Modellvariante, die auf Kosteneffizienz und niedrige Latenz optimiert ist."
},
"gemini-2.0-flash-preview-image-generation": {
"description": "Gemini 2.0 Flash Vorschau-Modell, unterstützt die Bildgenerierung"
},
"gemini-2.5-flash": {
"description": "Gemini 2.5 Flash ist Googles kosteneffizientestes Modell und bietet umfassende Funktionen."
},
@@ -1484,9 +1529,6 @@
"gemini-2.5-flash-preview-04-17": {
"description": "Gemini 2.5 Flash Preview ist das kosteneffizienteste Modell von Google und bietet umfassende Funktionen."
},
"gemini-2.5-flash-preview-05-20": {
"description": "Gemini 2.5 Flash Preview ist Googles kosteneffizientestes Modell mit umfassenden Funktionen."
},
"gemini-2.5-flash-preview-09-2025": {
"description": "Vorschauversion (25. September 2025) von Gemini 2.5 Flash"
},
@@ -1502,6 +1544,15 @@
"gemini-2.5-pro-preview-06-05": {
"description": "Gemini 2.5 Pro Preview ist Googles fortschrittlichstes Denkmodell, das komplexe Probleme in den Bereichen Code, Mathematik und MINT-Fächer lösen kann und große Datensätze, Codebasen und Dokumente mit langem Kontext analysiert."
},
"gemini-3-pro-image-preview": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) ist ein Bildgenerierungsmodell von Google mit Unterstützung für multimodale Dialoge."
},
"gemini-3-pro-image-preview:image": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) ist ein Bildgenerierungsmodell von Google mit Unterstützung für multimodale Dialoge."
},
"gemini-3-pro-preview": {
"description": "Gemini 3 Pro ist das weltweit führende Modell für multimodales Verständnis und Googles bisher leistungsstärkstes Agenten- und Ambient-Programming-Modell mit fortschrittlicher Logik, visueller Darstellung und Interaktivität."
},
"gemini-flash-latest": {
"description": "Neueste Version von Gemini Flash"
},
@@ -1538,6 +1589,9 @@
"glm-4-0520": {
"description": "GLM-4-0520 ist die neueste Modellversion, die für hochkomplexe und vielfältige Aufgaben konzipiert wurde und hervorragende Leistungen zeigt."
},
"glm-4-32b-0414": {
"description": "GLM-4 32B 0414, eine Version des allgemeinen GLM-Großmodells mit Unterstützung für Textgenerierung und -verständnis in mehreren Aufgaben."
},
"glm-4-9b-chat": {
"description": "GLM-4-9B-Chat bietet hohe Leistung in Bereichen wie Semantik, Mathematik, logisches Denken, Programmierung und Wissen. Es unterstützt Web-Browsing, Code-Ausführung, benutzerdefinierte Tool-Nutzung und Langtext-Inferenz. Unterstützt 26 Sprachen, darunter Japanisch, Koreanisch und Deutsch."
},
@@ -1623,7 +1677,7 @@
"description": "GLM-Zero-Preview verfügt über starke Fähigkeiten zur komplexen Schlussfolgerung und zeigt hervorragende Leistungen in den Bereichen logisches Denken, Mathematik und Programmierung."
},
"google/gemini-2.0-flash": {
"description": "Gemini 2.0 Flash bietet Funktionen der nächsten Generation und Verbesserungen, darunter herausragende Geschwindigkeit, integrierte Werkzeugnutzung, multimodale Generierung und ein Kontextfenster von 1 Million Tokens."
"description": "Gemini 2.0 Flash ist ein leistungsstarkes Schlussfolgerungsmodell von Google, geeignet für erweiterte multimodale Aufgaben."
},
"google/gemini-2.0-flash-001": {
"description": "Gemini 2.0 Flash bietet nächste Generation Funktionen und Verbesserungen, einschließlich außergewöhnlicher Geschwindigkeit, nativer Werkzeugnutzung, multimodaler Generierung und einem Kontextfenster von 1M Tokens."
@@ -1634,14 +1688,23 @@
"google/gemini-2.0-flash-lite": {
"description": "Gemini 2.0 Flash Lite bietet Funktionen der nächsten Generation und Verbesserungen, darunter herausragende Geschwindigkeit, integrierte Werkzeugnutzung, multimodale Generierung und ein Kontextfenster von 1 Million Tokens."
},
"google/gemini-2.0-flash-lite-001": {
"description": "Gemini 2.0 Flash Lite ist die leichte Version der Gemini-Familie. Standardmäßig ist das Denken deaktiviert, um Latenz und Kosten zu optimieren, kann aber über Parameter aktiviert werden."
},
"google/gemini-2.5-flash": {
"description": "Gemini 2.5 Flash ist ein Denkmodell mit hervorragenden umfassenden Fähigkeiten. Es ist auf ein ausgewogenes Verhältnis von Preis und Leistung ausgelegt und unterstützt multimodale Eingaben sowie ein Kontextfenster von 1 Million Tokens."
"description": "Die Gemini 2.5 Flash-Serie (Lite/Pro/Flash) umfasst Googles Modelle mit niedriger bis hoher Latenz für leistungsstarke Schlussfolgerung."
},
"google/gemini-2.5-flash-image": {
"description": "Gemini 2.5 Flash Image (Nano Banana) ist Googles Bildgenerierungsmodell mit Unterstützung für multimodale Dialoge."
},
"google/gemini-2.5-flash-image-free": {
"description": "Kostenlose Version von Gemini 2.5 Flash Image mit begrenztem Kontingent für multimodale Generierung."
},
"google/gemini-2.5-flash-image-preview": {
"description": "Gemini 2.5 Flash Experimentelles Modell, unterstützt Bildgenerierung"
},
"google/gemini-2.5-flash-lite": {
"description": "Gemini 2.5 Flash-Lite ist ein ausgewogenes, latenzarmes Modell mit konfigurierbarem Denkbudget und Werkzeuganbindung (z. B. Google Search Grounding und Codeausführung). Es unterstützt multimodale Eingaben und bietet ein Kontextfenster von 1 Million Tokens."
"description": "Gemini 2.5 Flash Lite ist die leichte Version von Gemini 2.5, optimiert für niedrige Latenz und Kosten ideal für Szenarien mit hohem Durchsatz."
},
"google/gemini-2.5-flash-preview": {
"description": "Gemini 2.5 Flash ist Googles fortschrittlichstes Hauptmodell, das für fortgeschrittenes Denken, Codierung, Mathematik und wissenschaftliche Aufgaben entwickelt wurde. Es enthält die eingebaute Fähigkeit zu \"denken\", was es ihm ermöglicht, Antworten mit höherer Genauigkeit und detaillierter Kontextverarbeitung zu liefern.\n\nHinweis: Dieses Modell hat zwei Varianten: Denken und Nicht-Denken. Die Ausgabepreise variieren erheblich, je nachdem, ob die Denkfähigkeit aktiviert ist oder nicht. Wenn Sie die Standardvariante (ohne den Suffix \":thinking\") wählen, wird das Modell ausdrücklich vermeiden, Denk-Tokens zu generieren.\n\nUm die Denkfähigkeit zu nutzen und Denk-Tokens zu erhalten, müssen Sie die \":thinking\"-Variante wählen, was zu höheren Preisen für Denk-Ausgaben führt.\n\nDarüber hinaus kann Gemini 2.5 Flash über den Parameter \"maximale Tokenanzahl für das Denken\" konfiguriert werden, wie in der Dokumentation beschrieben (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)."
@@ -1650,11 +1713,26 @@
"description": "Gemini 2.5 Flash ist Googles fortschrittlichstes Hauptmodell, das für fortgeschrittenes Denken, Codierung, Mathematik und wissenschaftliche Aufgaben entwickelt wurde. Es enthält die eingebaute Fähigkeit zu \"denken\", was es ihm ermöglicht, Antworten mit höherer Genauigkeit und detaillierter Kontextverarbeitung zu liefern.\n\nHinweis: Dieses Modell hat zwei Varianten: Denken und Nicht-Denken. Die Ausgabepreise variieren erheblich, je nachdem, ob die Denkfähigkeit aktiviert ist oder nicht. Wenn Sie die Standardvariante (ohne den Suffix \":thinking\") wählen, wird das Modell ausdrücklich vermeiden, Denk-Tokens zu generieren.\n\nUm die Denkfähigkeit zu nutzen und Denk-Tokens zu erhalten, müssen Sie die \":thinking\"-Variante wählen, was zu höheren Preisen für Denk-Ausgaben führt.\n\nDarüber hinaus kann Gemini 2.5 Flash über den Parameter \"maximale Tokenanzahl für das Denken\" konfiguriert werden, wie in der Dokumentation beschrieben (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning)."
},
"google/gemini-2.5-pro": {
"description": "Gemini 2.5 Pro ist unser fortschrittlichstes Inferenz-Gemini-Modell, das komplexe Probleme lösen kann. Es verfügt über ein Kontextfenster von 2 Millionen Tokens und unterstützt multimodale Eingaben, darunter Text, Bilder, Audio, Video und PDF-Dokumente."
"description": "Gemini 2.5 Pro ist Googles Flaggschiffmodell für Schlussfolgerung mit Unterstützung für lange Kontexte und komplexe Aufgaben."
},
"google/gemini-2.5-pro-free": {
"description": "Kostenlose Version von Gemini 2.5 Pro mit begrenztem Kontingent für multimodale Langkontextverarbeitung ideal für Tests und leichte Workflows."
},
"google/gemini-2.5-pro-preview": {
"description": "Gemini 2.5 Pro Preview ist Googles fortschrittlichstes Denkmodell, das in der Lage ist, komplexe Probleme in den Bereichen Code, Mathematik und MINT zu analysieren sowie große Datensätze, Codebasen und Dokumente mit langem Kontext zu untersuchen."
},
"google/gemini-3-pro-image-preview": {
"description": "Gemini 3 Pro Image (Nano Banana Pro) ist ein von Google entwickeltes Bildgenerierungsmodell, das gleichzeitig multimodale Dialoge unterstützt."
},
"google/gemini-3-pro-image-preview-free": {
"description": "Kostenlose Vorschauversion von Gemini 3 Pro Image mit begrenztem Kontingent für multimodale Generierung."
},
"google/gemini-3-pro-preview": {
"description": "Gemini 3 Pro ist das nächste Generation-Modell der Gemini-Reihe für multimodale Schlussfolgerung. Es versteht Text, Audio, Bilder und Videos und bewältigt komplexe Aufgaben und große Codebasen."
},
"google/gemini-3-pro-preview-free": {
"description": "Kostenlose Vorschauversion von Gemini 3 Pro mit denselben multimodalen Fähigkeiten wie die Standardversion, jedoch mit Einschränkungen bei Kontingent und Geschwindigkeit ideal für Tests und gelegentliche Nutzung."
},
"google/gemini-embedding-001": {
"description": "Modernstes Einbettungsmodell mit hervorragender Leistung bei englischen, mehrsprachigen und Code-Aufgaben."
},
@@ -1826,6 +1904,18 @@
"gpt-5-pro": {
"description": "GPT-5 Pro nutzt mehr Rechenleistung für tiefgreifendere Überlegungen und liefert kontinuierlich bessere Antworten."
},
"gpt-5.1": {
"description": "GPT-5.1 Flaggschiffmodell, optimiert für Programmier- und Agentenaufgaben, unterstützt konfigurierbare Rechenintensität und längere Kontexte."
},
"gpt-5.1-chat-latest": {
"description": "GPT-5.1 Chat: Eine Variante von GPT-5.1 für ChatGPT, ideal für Konversationsszenarien."
},
"gpt-5.1-codex": {
"description": "GPT-5.1 Codex: Eine für agentenbasierte Programmieraufgaben optimierte Version von GPT-5.1, geeignet für komplexe Code- und Agenten-Workflows über die Responses API."
},
"gpt-5.1-codex-mini": {
"description": "GPT-5.1 Codex mini: Eine kompaktere und kostengünstigere Codex-Variante, optimiert für agentenbasierte Programmieraufgaben."
},
"gpt-audio": {
"description": "GPT Audio ist ein universelles Chatmodell für Audioeingabe und -ausgabe, das Audio-I/O in der Chat Completions API unterstützt."
},
@@ -1868,6 +1958,12 @@
"grok-4-0709": {
"description": "xAI's Grok 4 mit starker Schlussfolgerungsfähigkeit."
},
"grok-4-1-fast-non-reasoning": {
"description": "Modernes multimodales Modell, speziell optimiert für die Nutzung leistungsstarker Agenten-Tools."
},
"grok-4-1-fast-reasoning": {
"description": "Modernes multimodales Modell, speziell optimiert für die Nutzung leistungsstarker Agenten-Tools."
},
"grok-4-fast-non-reasoning": {
"description": "Wir freuen uns, Grok 4 Fast vorzustellen, unseren neuesten Fortschritt bei kosteneffizienten Inferenzmodellen."
},
@@ -2001,32 +2097,47 @@
"description": "Imagen, Text-zu-Bild-Modellreihe der 4. Generation"
},
"imagen-4.0-generate-preview-06-06": {
"description": "Imagen 4. Generation Text-zu-Bild Modellserie"
"description": "Vierte Generation der Imagen-Modelle zur Text-zu-Bild-Generierung."
},
"imagen-4.0-ultra-generate-001": {
"description": "Imagen, Text-zu-Bild-Modell der 4. Generation (Ultra-Version)"
},
"imagen-4.0-ultra-generate-preview-06-06": {
"description": "Imagen 4. Generation Text-zu-Bild Modellserie Ultra-Version"
"description": "Ultra-Version der vierten Generation der Imagen-Modelle zur Text-zu-Bild-Generierung."
},
"inception/mercury-coder-small": {
"description": "Mercury Coder Small ist ideal für Codegenerierung, Debugging und Refactoring-Aufgaben mit minimaler Latenz."
},
"inclusionAI/Ling-1T": {
"description": "Ling-1T ist das erste Flaggschiffmodell der „Ling 2.0“-Reihe ohne Denkfunktion (non-thinking), mit insgesamt einer Billion Parametern und etwa 50 Milliarden aktiven Parametern pro Token. Es basiert auf der Ling 2.0-Architektur und zielt darauf ab, die Grenzen effizienter Schlussfolgerung und skalierbarer Kognition zu durchbrechen. Ling-1T-base wurde mit über 20 Billionen hochwertigen, reasoning-intensiven Tokens trainiert."
},
"inclusionAI/Ling-flash-2.0": {
"description": "Ling-flash-2.0 ist das dritte Modell der Ling 2.0 Architekturserie, veröffentlicht vom Ant Group Bailing Team. Es handelt sich um ein Mixture-of-Experts (MoE)-Modell mit insgesamt 100 Milliarden Parametern, wobei pro Token nur 6,1 Milliarden Parameter aktiviert werden (ohne Wortvektoren 4,8 Milliarden). Als leichtgewichtige Konfiguration zeigt Ling-flash-2.0 in mehreren renommierten Benchmarks Leistungen, die mit 40-Milliarden-Dense-Modellen und größeren MoE-Modellen vergleichbar oder überlegen sind. Das Modell zielt darauf ab, durch exzellentes Architekturdesign und Trainingsstrategien effiziente Wege zu erforschen, um die gängige Annahme „großes Modell = viele Parameter“ zu hinterfragen."
},
"inclusionAI/Ling-mini-2.0": {
"description": "Ling-mini-2.0 ist ein kleines, leistungsstarkes Sprachmodell basierend auf der MoE-Architektur. Es verfügt über 16 Milliarden Gesamtparameter, aktiviert jedoch pro Token nur 1,4 Milliarden (ohne Einbettungen 789 Millionen), was eine sehr hohe Generierungsgeschwindigkeit ermöglicht. Dank effizientem MoE-Design und großem, hochwertigem Trainingsdatensatz zeigt Ling-mini-2.0 trotz der geringen aktivierten Parameter eine Spitzenleistung, die mit dichten LLMs unter 10 Milliarden und größeren MoE-Modellen in nachgelagerten Aufgaben vergleichbar ist."
},
"inclusionAI/Ring-1T": {
"description": "Ring-1T ist ein Open-Source-Modell für kognitives Denken im Billionen-Parameter-Maßstab, veröffentlicht vom Bailing-Team. Es basiert auf der Ling 2.0-Architektur und dem Ling-1T-base-Modell, mit insgesamt einer Billion Parametern und 50 Milliarden aktiven Parametern. Es unterstützt ein Kontextfenster von bis zu 128K und wurde durch groß angelegtes, verifizierbares, belohnungsbasiertes Reinforcement Learning optimiert."
},
"inclusionAI/Ring-flash-2.0": {
"description": "Ring-flash-2.0 ist ein hochleistungsfähiges Denkmodell, das auf Ling-flash-2.0-base tief optimiert wurde. Es verwendet eine Mixture-of-Experts (MoE)-Architektur mit insgesamt 100 Milliarden Parametern, aktiviert jedoch bei jeder Inferenz nur 6,1 Milliarden Parameter. Durch den innovativen Icepop-Algorithmus löst es die Instabilitätsprobleme großer MoE-Modelle im Reinforcement Learning (RL) Training und verbessert kontinuierlich seine komplexen Inferenzfähigkeiten über lange Trainingszyklen. Ring-flash-2.0 erzielt bedeutende Durchbrüche in anspruchsvollen Benchmarks wie Mathematikwettbewerben, Codegenerierung und logischem Schließen. Seine Leistung übertrifft nicht nur dichte Spitzenmodelle unter 40 Milliarden Parametern, sondern ist auch vergleichbar mit größeren Open-Source-MoE-Modellen und proprietären Hochleistungs-Denkmodellen. Obwohl es auf komplexe Inferenz spezialisiert ist, zeigt es auch bei kreativen Schreibaufgaben hervorragende Ergebnisse. Dank seiner effizienten Architektur bietet Ring-flash-2.0 starke Leistung bei gleichzeitig hoher Inferenzgeschwindigkeit und senkt deutlich die Bereitstellungskosten in hochparallelen Szenarien."
},
"inclusionai/ling-1t": {
"description": "Ling-1T ist das 1T MoE-Modell von inclusionAI, optimiert für hochintensive Schlussfolgerungsaufgaben und große Kontexte."
},
"inclusionai/ling-flash-2.0": {
"description": "Ling-flash-2.0 ist ein MoE-Modell von inclusionAI, das Effizienz und Schlussfolgerungsleistung für mittelgroße bis große Aufgaben optimiert."
},
"inclusionai/ling-mini-2.0": {
"description": "Ling-mini-2.0 ist ein leichtgewichtiges MoE-Modell von inclusionAI, das bei reduzierten Kosten dennoch starke Schlussfolgerungsfähigkeiten bietet."
},
"inclusionai/ming-flash-omini-preview": {
"description": "Ming-flash-omni Preview ist ein multimodales Modell von inclusionAI mit Unterstützung für Sprache, Bilder und Videos optimiert für Bildwiedergabe und Spracherkennung."
},
"inclusionai/ring-1t": {
"description": "Ring-1T ist das trillionenparametrige MoE-Denkmodell von inclusionAI, geeignet für groß angelegte Schlussfolgerung und Forschung."
},
"inclusionai/ring-flash-2.0": {
"description": "Ring-flash-2.0 ist eine Variante des Ring-Modells von inclusionAI für Szenarien mit hohem Durchsatz, mit Fokus auf Geschwindigkeit und Kosteneffizienz."
},
"inclusionai/ring-mini-2.0": {
"description": "Ring-mini-2.0 ist die leichtgewichtige Hochdurchsatzversion des MoE-Modells von inclusionAI, ideal für parallele Nutzungsszenarien."
},
"internlm/internlm2_5-7b-chat": {
"description": "InternLM2.5 bietet intelligente Dialoglösungen in mehreren Szenarien."
},
@@ -2036,14 +2147,26 @@
"internlm3-latest": {
"description": "Unsere neueste Modellreihe bietet herausragende Inferenzleistungen und führt die Open-Source-Modelle in ihrer Gewichtsklasse an. Standardmäßig verweist sie auf unser neuestes veröffentlichtes InternLM3-Modell."
},
"internvl2.5-38b-mpo": {
"description": "InternVL2.5 38B MPO, ein multimodales vortrainiertes Modell, das komplexe Bild-Text-Inferenzaufgaben unterstützt."
},
"internvl2.5-latest": {
"description": "Die von uns weiterhin unterstützte Version InternVL2.5 bietet hervorragende und stabile Leistungen. Standardmäßig verweist es auf unser neuestes veröffentlichtes InternVL2.5-Modell, derzeit auf internvl2.5-78b."
},
"internvl3-14b": {
"description": "InternVL3 14B, ein mittelgroßes multimodales Modell mit ausgewogenem Verhältnis zwischen Leistung und Kosten."
},
"internvl3-1b": {
"description": "InternVL3 1B, ein leichtgewichtiges multimodales Modell, geeignet für den Einsatz in ressourcenbeschränkten Umgebungen."
},
"internvl3-38b": {
"description": "InternVL3 38B, ein großskaliges Open-Source-Multimodalmodell, geeignet für hochpräzises Bild-Text-Verständnis."
},
"internvl3-latest": {
"description": "Unser neuestes multimodales Großmodell bietet verbesserte Fähigkeiten im Verständnis von Text und Bildern sowie im langfristigen Verständnis von Bildern und erreicht eine Leistung, die mit führenden proprietären Modellen vergleichbar ist. Standardmäßig verweist es auf unser neuestes veröffentlichtes InternVL-Modell, derzeit auf internvl3-78b."
},
"irag-1.0": {
"description": "Das von Baidu entwickelte iRAG (image based RAG) ist eine durch Suche verstärkte Text-zu-Bild-Technologie, die Baidus Milliarden von Bildressourcen mit leistungsstarken Basismodellen kombiniert, um ultra-realistische Bilder zu erzeugen. Das Gesamtergebnis übertrifft native Text-zu-Bild-Systeme deutlich, wirkt weniger künstlich und ist kostengünstig. iRAG zeichnet sich durch keine Halluzinationen, hohe Realitätsnähe und sofortige Verfügbarkeit aus."
"description": "ERNIE iRAG, ein bildgestütztes Retrieval-Augmented-Generation-Modell mit Unterstützung für Bildsuche, Bild-Text-Retrieval und Inhaltserzeugung."
},
"jamba-large": {
"description": "Unser leistungsstärkstes und fortschrittlichstes Modell, das speziell für die Bewältigung komplexer Aufgaben auf Unternehmensebene entwickelt wurde und herausragende Leistung bietet."
@@ -2064,7 +2187,13 @@
"description": "Das Modell kimi-k2-0905-preview hat eine Kontextlänge von 256k, verfügt über stärkere Agentic-Coding-Fähigkeiten, eine herausragendere Ästhetik und Praktikabilität von Frontend-Code sowie ein besseres Kontextverständnis."
},
"kimi-k2-instruct": {
"description": "Kimi K2 Instruct ist ein großes Sprachmodell von Moonshot AI mit der Fähigkeit zur Verarbeitung extrem langer Kontexte."
"description": "Kimi K2 Instruct, das offizielle Inferenzmodell von Kimi mit Unterstützung für Langkontext, Code, QA und mehr."
},
"kimi-k2-thinking": {
"description": "Das kimi-k2-thinking-Modell von Moonshot AI ist ein vielseitiges Denkmodell mit agentischen Fähigkeiten und ausgeprägtem logischen Denkvermögen. Es zeichnet sich durch tiefgehende Schlussfolgerungen aus und kann durch mehrstufige Werkzeugnutzung bei der Lösung verschiedenster Probleme unterstützen."
},
"kimi-k2-thinking-turbo": {
"description": "Turbo-Version des K2 Langzeit-Denkmodells mit 256k Kontext, spezialisiert auf tiefgreifende Schlussfolgerung und einer Ausgabegeschwindigkeit von 60100 Tokens pro Sekunde."
},
"kimi-k2-turbo-preview": {
"description": "kimi-k2 ist ein Basis-Modell mit MoE-Architektur und besonders starken Fähigkeiten im Bereich Code und Agenten. Es verfügt über insgesamt 1T Parameter und 32B aktivierte Parameter. In Benchmark-Tests der wichtigsten Kategorien allgemeines Wissens-Reasoning, Programmierung, Mathematik und Agenten übertrifft das K2-Modell die Leistung anderer gängiger OpenSourceModelle."
@@ -2078,6 +2207,9 @@
"kimi-thinking-preview": {
"description": "Das kimi-thinking-preview Modell von Moons Dark Side ist ein multimodales Denkmodell mit Fähigkeiten zu multimodalem und allgemeinem logischem Denken. Es ist spezialisiert auf tiefgehende Schlussfolgerungen und hilft dabei, komplexere und schwierigere Aufgaben zu lösen."
},
"kuaishou/kat-coder-pro-v1": {
"description": "KAT-Coder-Pro-V1 (zeitlich begrenzt kostenlos) ist auf Codeverständnis und automatisierte Programmierung spezialisiert ideal für effiziente Programmieragenten."
},
"learnlm-1.5-pro-experimental": {
"description": "LearnLM ist ein experimentelles, aufgabenorientiertes Sprachmodell, das darauf trainiert wurde, den Prinzipien der Lernwissenschaft zu entsprechen und in Lehr- und Lernszenarien systematische Anweisungen zu befolgen, als Expertenmentor zu fungieren usw."
},
@@ -2174,6 +2306,9 @@
"megrez-3b-instruct": {
"description": "Megrez 3B Instruct ist ein effizientes Modell mit geringer Parameteranzahl, entwickelt von Wuwen Xinqiong."
},
"meituan/longcat-flash-chat": {
"description": "Ein von Meituan entwickeltes Open-Source-Basismodell, das speziell für dialogorientierte Interaktionen und agentenbasierte Aufgaben optimiert wurde und sich besonders bei Werkzeugaufrufen und komplexen mehrstufigen Dialogszenarien auszeichnet."
},
"meta-llama-3-70b-instruct": {
"description": "Ein leistungsstarkes Modell mit 70 Milliarden Parametern, das in den Bereichen Schlussfolgerungen, Programmierung und breiten Sprachanwendungen herausragt."
},
@@ -2405,6 +2540,12 @@
"minimax-m2": {
"description": "MiniMax M2 ist ein leistungsstarkes, effizientes Sprachmodell, das speziell für Programmier- und Agenten-Workflows entwickelt wurde."
},
"minimax/minimax-m2": {
"description": "MiniMax-M2 ist ein kosteneffizientes Modell mit starker Leistung in den Bereichen Programmierung und Agentenaufgaben geeignet für vielfältige technische Szenarien."
},
"minimaxai/minimax-m2": {
"description": "MiniMax-M2 ist ein kompaktes, schnelles und kosteneffizientes Mixture-of-Experts (MoE)-Modell mit 230 Milliarden Gesamtparametern und 10 Milliarden aktiven Parametern. Es wurde für höchste Leistung bei Codierungs- und Agentenaufgaben entwickelt und bietet gleichzeitig eine starke allgemeine Intelligenz. Das Modell überzeugt bei Aufgaben wie der Bearbeitung mehrerer Dateien, dem Code-Ausführen-Fehlerbeheben-Zyklus, Testverifikation und -korrektur sowie bei komplexen, lang verknüpften Toolchains und ist damit die ideale Wahl für Entwickler-Workflows."
},
"ministral-3b-latest": {
"description": "Ministral 3B ist das weltbeste Edge-Modell von Mistral."
},
@@ -2549,12 +2690,21 @@
"moonshotai/kimi-k2": {
"description": "Kimi K2 ist ein von Moonshot AI entwickeltes großes gemischtes Experten (MoE) Sprachmodell mit insgesamt 1 Billion Parametern und 32 Milliarden aktiven Parametern pro Vorwärtsdurchlauf. Es ist auf Agentenfähigkeiten optimiert, einschließlich fortgeschrittener Werkzeugnutzung, Inferenz und Code-Synthese."
},
"moonshotai/kimi-k2-0711": {
"description": "Kimi K2 0711 ist die Instruct-Version der Kimi-Reihe, optimiert für hochwertige Codegenerierung und Tool-Nutzung."
},
"moonshotai/kimi-k2-0905": {
"description": "Das Modell kimi-k2-0905-preview hat eine Kontextlänge von 256k, verfügt über stärkere Agentic-Coding-Fähigkeiten, eine herausragendere Ästhetik und Praktikabilität von Frontend-Code sowie ein besseres Kontextverständnis."
"description": "Kimi K2 0905 ist das Update vom 5. September der Kimi-Reihe mit erweitertem Kontext und verbesserter Schlussfolgerungsleistung ideal für Programmieraufgaben."
},
"moonshotai/kimi-k2-instruct-0905": {
"description": "Das Modell kimi-k2-0905-preview hat eine Kontextlänge von 256k, verfügt über stärkere Agentic-Coding-Fähigkeiten, eine herausragendere Ästhetik und Praktikabilität von Frontend-Code sowie ein besseres Kontextverständnis."
},
"moonshotai/kimi-k2-thinking": {
"description": "Kimi K2 Thinking ist ein Denkmodell von Moonshot, optimiert für tiefgreifende Schlussfolgerung mit allgemeinen Agentenfähigkeiten."
},
"moonshotai/kimi-k2-thinking-turbo": {
"description": "Kimi K2 Thinking Turbo ist die Hochgeschwindigkeitsversion von Kimi K2 Thinking mit reduzierter Antwortlatenz bei gleichbleibender Schlussfolgerungsleistung."
},
"morph/morph-v3-fast": {
"description": "Morph bietet ein spezialisiertes KI-Modell, das von führenden Modellen wie Claude oder GPT-4o vorgeschlagene Codeänderungen schnell auf Ihre bestehenden Code-Dateien anwendet mit über 4500 Tokens pro Sekunde. Es fungiert als letzter Schritt im KI-Codierungsworkflow und unterstützt 16k Eingabe- und 16k Ausgabe-Tokens."
},
@@ -2637,28 +2787,49 @@
"description": "OpenAIs gpt-4-turbo verfügt über umfangreiches Allgemeinwissen und Fachkenntnisse, kann komplexen natürlichen Sprachbefehlen folgen und schwierige Probleme präzise lösen. Wissensstand bis April 2023, Kontextfenster von 128.000 Tokens."
},
"openai/gpt-4.1": {
"description": "GPT 4.1 ist das Flaggschiffmodell von OpenAI, geeignet für komplexe Aufgaben. Es ist hervorragend für interdisziplinäre Problemlösungen."
"description": "Die GPT-4.1-Serie bietet erweiterten Kontext und verbesserte Fähigkeiten in den Bereichen Technik und Schlussfolgerung."
},
"openai/gpt-4.1-mini": {
"description": "GPT 4.1 mini bietet eine ausgewogene Kombination aus Intelligenz, Geschwindigkeit und Kosten und ist damit für viele Anwendungsfälle attraktiv."
"description": "GPT-4.1 Mini bietet geringere Latenz und ein besseres Preis-Leistungs-Verhältnis ideal für mittellange Kontexte."
},
"openai/gpt-4.1-nano": {
"description": "GPT-4.1 nano ist das schnellste und kosteneffizienteste Modell der GPT 4.1 Reihe."
"description": "GPT-4.1 Nano ist eine extrem kostengünstige und latenzarme Option ideal für häufige Kurzdialoge oder Klassifizierungsaufgaben."
},
"openai/gpt-4o": {
"description": "GPT-4o von OpenAI verfügt über umfangreiches Allgemeinwissen und Fachkenntnisse, kann komplexen natürlichen Sprachbefehlen folgen und schwierige Probleme präzise lösen. Es bietet die Leistung von GPT-4 Turbo mit schnellerem und kostengünstigerem API-Zugriff."
"description": "Die GPT-4o-Serie ist OpenAIs Omni-Modell mit Unterstützung für Text- und Bildeingaben sowie Textausgaben."
},
"openai/gpt-4o-mini": {
"description": "GPT-4o mini von OpenAI ist ihr fortschrittlichstes und kosteneffizientestes kleines Modell. Es ist multimodal (akzeptiert Text- oder Bildeingaben und gibt Text aus) und intelligenter als gpt-3.5-turbo, bei gleicher Geschwindigkeit."
"description": "GPT-4o-mini ist die schnelle, kompakte Version von GPT-4o ideal für latenzarme multimodale Szenarien."
},
"openai/gpt-5": {
"description": "GPT-5 ist OpenAIs Flaggschiff-Sprachmodell mit herausragender Leistung bei komplexer Inferenz, umfangreichem Weltwissen, codeintensiven und mehrstufigen Agentenaufgaben."
"description": "GPT-5 ist ein leistungsstarkes Modell von OpenAI, geeignet für eine Vielzahl von Produktions- und Forschungsaufgaben."
},
"openai/gpt-5-chat": {
"description": "GPT-5 Chat ist eine auf Konversation optimierte Variante von GPT-5 mit reduzierter Latenz für bessere Interaktion."
},
"openai/gpt-5-codex": {
"description": "GPT-5-Codex ist eine auf Programmierung spezialisierte Variante von GPT-5 ideal für groß angelegte Code-Workflows."
},
"openai/gpt-5-mini": {
"description": "GPT-5 mini ist ein kostenoptimiertes Modell mit hervorragender Leistung bei Inferenz- und Chat-Aufgaben. Es bietet die beste Balance zwischen Geschwindigkeit, Kosten und Fähigkeiten."
"description": "GPT-5 Mini ist die kompakte Version der GPT-5-Familie ideal für latenz- und kostensensitive Szenarien."
},
"openai/gpt-5-nano": {
"description": "GPT-5 nano ist ein Modell mit hohem Durchsatz, das bei einfachen Anweisungen oder Klassifizierungsaufgaben hervorragende Leistungen zeigt."
"description": "GPT-5 Nano ist die ultrakompakte Version der Familie ideal für Szenarien mit extrem hohen Anforderungen an Kosten und Latenz."
},
"openai/gpt-5-pro": {
"description": "GPT-5 Pro ist das Flaggschiffmodell von OpenAI mit erweiterten Fähigkeiten in Schlussfolgerung, Codegenerierung und Unternehmensfunktionen inklusive Routing und strenger Sicherheitsrichtlinien im Testmodus."
},
"openai/gpt-5.1": {
"description": "GPT-5.1 ist das neueste Flaggschiff der GPT-5-Serie mit deutlichen Verbesserungen in allgemeiner Schlussfolgerung, Befolgen von Anweisungen und natürlicher Konversation geeignet für vielfältige Aufgaben."
},
"openai/gpt-5.1-chat": {
"description": "GPT-5.1 Chat ist das leichte Mitglied der GPT-5.1-Familie, optimiert für latenzarme Konversation bei gleichzeitig starker Schlussfolgerung und Befehlsausführung."
},
"openai/gpt-5.1-codex": {
"description": "GPT-5.1-Codex ist eine auf Softwareentwicklung und Programmier-Workflows spezialisierte Variante von GPT-5.1 ideal für große Refactorings, komplexe Debugging-Aufgaben und langfristige autonome Codierung."
},
"openai/gpt-5.1-codex-mini": {
"description": "GPT-5.1-Codex-Mini ist die kompakte, beschleunigte Version von GPT-5.1-Codex ideal für kostensensitive und latenzarme Programmieraufgaben."
},
"openai/gpt-oss-120b": {
"description": "Extrem leistungsfähiges universelles großes Sprachmodell mit starker, kontrollierbarer Inferenzfähigkeit."
@@ -2685,7 +2856,7 @@
"description": "o3-mini high ist eine hochintelligente Version mit dem gleichen Kosten- und Verzögerungsziel wie o1-mini."
},
"openai/o4-mini": {
"description": "OpenAIs o4-mini bietet schnelle, kosteneffiziente Inferenz mit hervorragender Leistung für seine Größe, insbesondere bei Mathematik (beste Leistung im AIME-Benchmark), Codierung und visuellen Aufgaben."
"description": "OpenAI o4-mini ist ein kleines, effizientes Schlussfolgerungsmodell von OpenAI ideal für latenzarme Szenarien."
},
"openai/o4-mini-high": {
"description": "o4-mini Hochleistungsmodell, optimiert für schnelle und effektive Inferenz, zeigt in Programmier- und visuellen Aufgaben eine hohe Effizienz und Leistung."
@@ -2735,6 +2906,54 @@
"pro-deepseek-v3": {
"description": "Modell für exklusive Unternehmensdienste, inklusive paralleler Serviceunterstützung."
},
"qianfan-70b": {
"description": "Qianfan 70B, ein großparametrisches chinesisches Modell, geeignet für hochwertige Inhaltserstellung und komplexe Schlussfolgerungsaufgaben."
},
"qianfan-8b": {
"description": "Qianfan 8B, ein mittelgroßes Allzweckmodell, ideal für Textgenerierung und Frage-Antwort-Szenarien mit ausgewogenem Kosten-Nutzen-Verhältnis."
},
"qianfan-agent-intent-32k": {
"description": "Qianfan Agent Intent 32K, ein Modell für Absichtserkennung und Agenten-Orchestrierung, unterstützt Szenarien mit langem Kontext."
},
"qianfan-agent-lite-8k": {
"description": "Qianfan Agent Lite 8K, ein leichtgewichtiges Agentenmodell, geeignet für kostengünstige Mehrfachdialoge und Geschäftsprozesse."
},
"qianfan-agent-speed-32k": {
"description": "Qianfan Agent Speed 32K, ein hochperformantes Agentenmodell mit hoher Durchsatzrate, ideal für groß angelegte, mehrfache Aufgabenanwendungen."
},
"qianfan-agent-speed-8k": {
"description": "Qianfan Agent Speed 8K, ein hochgradig paralleles Agentenmodell für mittlere bis kurze Dialoge und schnelle Reaktionen."
},
"qianfan-check-vl": {
"description": "Qianfan Check VL, ein multimodales Modell zur Inhaltsprüfung und -erkennung, unterstützt Aufgaben zur Einhaltung von Bild-Text-Richtlinien."
},
"qianfan-composition": {
"description": "Qianfan Composition, ein multimodales Kreativmodell, unterstützt integriertes Verständnis und Generierung von Bild und Text."
},
"qianfan-engcard-vl": {
"description": "Qianfan EngCard VL, ein multimodales Erkennungsmodell, spezialisiert auf englischsprachige Szenarien."
},
"qianfan-lightning-128b-a19b": {
"description": "Qianfan Lightning 128B A19B, ein leistungsstarkes chinesisches Allzweckmodell, geeignet für komplexe Frage-Antwort- und groß angelegte Schlussfolgerungsaufgaben."
},
"qianfan-llama-vl-8b": {
"description": "Qianfan Llama VL 8B, ein auf Llama basierendes multimodales Modell für allgemeines Bild-Text-Verständnis."
},
"qianfan-multipicocr": {
"description": "Qianfan MultiPicOCR, ein OCR-Modell für mehrere Bilder, unterstützt Texterkennung und -extraktion aus mehreren Bildern."
},
"qianfan-qi-vl": {
"description": "Qianfan QI VL, ein multimodales Frage-Antwort-Modell, ermöglicht präzise Suche und Beantwortung in komplexen Bild-Text-Szenarien."
},
"qianfan-singlepicocr": {
"description": "Qianfan SinglePicOCR, ein OCR-Modell für Einzelbilder, unterstützt hochpräzise Zeichenerkennung."
},
"qianfan-vl-70b": {
"description": "Qianfan VL 70B, ein großparametrisches visuell-sprachliches Modell, geeignet für komplexe Bild-Text-Verständnisaufgaben."
},
"qianfan-vl-8b": {
"description": "Qianfan VL 8B, ein leichtgewichtiges visuell-sprachliches Modell, ideal für alltägliche Bild-Text-Fragen und Analysen."
},
"qvq-72b-preview": {
"description": "Das QVQ-Modell ist ein experimentelles Forschungsmodell, das vom Qwen-Team entwickelt wurde und sich auf die Verbesserung der visuellen Schlussfolgerungsfähigkeiten konzentriert, insbesondere im Bereich der mathematischen Schlussfolgerungen."
},
@@ -2841,7 +3060,7 @@
"description": "Leistungsstarkes, mittelgroßes Codierungsmodell, das 32K Kontextlängen unterstützt und in der mehrsprachigen Programmierung versiert ist."
},
"qwen/qwen3-14b": {
"description": "Qwen3-14B ist ein kompaktes, 14,8 Milliarden Parameter umfassendes kausales Sprachmodell aus der Qwen3-Serie, das speziell für komplexe Inferenz und effiziente Dialoge entwickelt wurde. Es unterstützt den nahtlosen Wechsel zwischen dem \"Denk\"-Modus für Mathematik, Programmierung und logische Inferenz und dem \"Nicht-Denk\"-Modus für allgemeine Gespräche. Dieses Modell wurde feinabgestimmt und kann für die Befolgung von Anweisungen, die Nutzung von Agentenwerkzeugen, kreatives Schreiben sowie mehrsprachige Aufgaben in über 100 Sprachen und Dialekten verwendet werden. Es verarbeitet nativ 32K Token-Kontext und kann mithilfe von YaRN auf 131K Token erweitert werden."
"description": "Qwen3-14B ist die 14B-Version der Qwen-Reihe geeignet für allgemeine Schlussfolgerung und Konversation."
},
"qwen/qwen3-14b:free": {
"description": "Qwen3-14B ist ein kompaktes, 14,8 Milliarden Parameter umfassendes kausales Sprachmodell aus der Qwen3-Serie, das speziell für komplexe Inferenz und effiziente Dialoge entwickelt wurde. Es unterstützt den nahtlosen Wechsel zwischen dem \"Denk\"-Modus für Mathematik, Programmierung und logische Inferenz und dem \"Nicht-Denk\"-Modus für allgemeine Gespräche. Dieses Modell wurde feinabgestimmt und kann für die Befolgung von Anweisungen, die Nutzung von Agentenwerkzeugen, kreatives Schreiben sowie mehrsprachige Aufgaben in über 100 Sprachen und Dialekten verwendet werden. Es verarbeitet nativ 32K Token-Kontext und kann mithilfe von YaRN auf 131K Token erweitert werden."
@@ -2849,6 +3068,12 @@
"qwen/qwen3-235b-a22b": {
"description": "Qwen3-235B-A22B ist ein 235B Parameter Expertenmischungsmodell (MoE), das von Qwen entwickelt wurde und bei jedem Vorwärtsdurchlauf 22B Parameter aktiviert. Es unterstützt den nahtlosen Wechsel zwischen dem \"Denk\"-Modus für komplexe Inferenz, Mathematik und Programmieraufgaben und dem \"Nicht-Denk\"-Modus für allgemeine Gespräche. Dieses Modell zeigt starke Inferenzfähigkeiten, mehrsprachige Unterstützung (über 100 Sprachen und Dialekte), fortgeschrittene Befolgung von Anweisungen und die Nutzung von Agentenwerkzeugen. Es verarbeitet nativ ein Kontextfenster von 32K Token und kann mithilfe von YaRN auf 131K Token erweitert werden."
},
"qwen/qwen3-235b-a22b-2507": {
"description": "Qwen3-235B-A22B-Instruct-2507 ist die Instruct-Version der Qwen3-Reihe geeignet für mehrsprachige Anweisungen und Langkontextverarbeitung."
},
"qwen/qwen3-235b-a22b-thinking-2507": {
"description": "Qwen3-235B-A22B-Thinking-2507 ist die Thinking-Variante von Qwen3 verstärkt für komplexe mathematische und logische Aufgaben."
},
"qwen/qwen3-235b-a22b:free": {
"description": "Qwen3-235B-A22B ist ein 235B Parameter Expertenmischungsmodell (MoE), das von Qwen entwickelt wurde und bei jedem Vorwärtsdurchlauf 22B Parameter aktiviert. Es unterstützt den nahtlosen Wechsel zwischen dem \"Denk\"-Modus für komplexe Inferenz, Mathematik und Programmieraufgaben und dem \"Nicht-Denk\"-Modus für allgemeine Gespräche. Dieses Modell zeigt starke Inferenzfähigkeiten, mehrsprachige Unterstützung (über 100 Sprachen und Dialekte), fortgeschrittene Befolgung von Anweisungen und die Nutzung von Agentenwerkzeugen. Es verarbeitet nativ ein Kontextfenster von 32K Token und kann mithilfe von YaRN auf 131K Token erweitert werden."
},
@@ -2867,6 +3092,21 @@
"qwen/qwen3-8b:free": {
"description": "Qwen3-8B ist ein kompaktes, 8,2 Milliarden Parameter umfassendes kausales Sprachmodell aus der Qwen3-Serie, das speziell für inferenzintensive Aufgaben und effiziente Dialoge entwickelt wurde. Es unterstützt den nahtlosen Wechsel zwischen dem \"Denk\"-Modus für Mathematik, Programmierung und logische Inferenz und dem \"Nicht-Denk\"-Modus für allgemeine Gespräche. Dieses Modell wurde feinabgestimmt und kann für die Befolgung von Anweisungen, die Integration von Agenten, kreatives Schreiben sowie die mehrsprachige Nutzung in über 100 Sprachen und Dialekten verwendet werden. Es unterstützt nativ ein Kontextfenster von 32K Token und kann über YaRN auf 131K Token erweitert werden."
},
"qwen/qwen3-coder": {
"description": "Qwen3-Coder ist die Codegenerierungsfamilie von Qwen3 spezialisiert auf Codeverständnis und -erzeugung in langen Dokumenten."
},
"qwen/qwen3-coder-plus": {
"description": "Qwen3-Coder-Plus ist ein speziell optimiertes Codierungsmodell der Qwen-Reihe unterstützt komplexe Tool-Nutzung und langfristige Sitzungen."
},
"qwen/qwen3-max": {
"description": "Qwen3 Max ist das High-End-Schlussfolgerungsmodell der Qwen3-Reihe geeignet für mehrsprachige Logik und Tool-Integration."
},
"qwen/qwen3-max-preview": {
"description": "Qwen3 Max (Preview) ist die Vorschauversion des Max-Modells der Qwen-Reihe ausgelegt für fortgeschrittene Logik und Tool-Integration."
},
"qwen/qwen3-vl-plus": {
"description": "Qwen3 VL-Plus ist die visuell erweiterte Version von Qwen3 mit verbesserter multimodaler Logik und Videobearbeitungsfähigkeiten."
},
"qwen2": {
"description": "Qwen2 ist das neue große Sprachmodell von Alibaba, das mit hervorragender Leistung eine Vielzahl von Anwendungsanforderungen unterstützt."
},
@@ -2886,7 +3126,7 @@
"description": "Das 72B-Modell von Tongyi Qianwen 2.5 ist öffentlich zugänglich."
},
"qwen2.5-7b-instruct": {
"description": "Das 7B-Modell von Tongyi Qianwen 2.5 ist öffentlich zugänglich."
"description": "Qwen2.5 7B Instruct, ein ausgereiftes Open-Source-Instruktionsmodell, geeignet für Dialoge und Generierung in verschiedenen Szenarien."
},
"qwen2.5-coder-1.5b-instruct": {
"description": "Die Open-Source-Version des Qwen-Codemodells."
@@ -2919,13 +3159,13 @@
"description": "Das Qwen-Omni-Modell der Serie unterstützt die Eingabe verschiedener Modalitäten, einschließlich Video, Audio, Bilder und Text, und gibt Audio und Text aus."
},
"qwen2.5-vl-32b-instruct": {
"description": "Die Qwen2.5-VL-Modellreihe verbessert die Intelligenz, Praktikabilität und Anwendbarkeit des Modells, sodass es in Szenarien wie natürlichen Dialogen, Inhaltserstellung, Fachwissensdiensten und Codeentwicklung besser abschneidet. Die 32B-Version verwendet Techniken des verstärkenden Lernens zur Optimierung des Modells. Im Vergleich zu anderen Modellen der Qwen2.5-VL-Reihe bietet sie einen für Menschen präferierten Ausgabe-Stil, Fähigkeiten zur Inferenz komplexer mathematischer Probleme sowie die Fähigkeit zur feingranularen Bildverarbeitung und -inferenz."
"description": "Qwen2.5 VL 32B Instruct, ein multimodales Open-Source-Modell, ideal für private Bereitstellung und vielseitige Anwendungen."
},
"qwen2.5-vl-72b-instruct": {
"description": "Verbesserte Befolgung von Anweisungen, Mathematik, Problemlösung und Programmierung, gesteigerte Erkennungsfähigkeiten für alle Arten von visuellen Elementen, Unterstützung für die präzise Lokalisierung visueller Elemente in verschiedenen Formaten, Verständnis von langen Videodateien (maximal 10 Minuten) und sekundengenauer Ereigniszeitpunktlokalisierung, Fähigkeit zur zeitlichen Einordnung und Geschwindigkeitsverständnis, Unterstützung für die Steuerung von OS- oder Mobile-Agenten basierend auf Analyse- und Lokalisierungsfähigkeiten, starke Fähigkeit zur Extraktion von Schlüsselinformationen und JSON-Format-Ausgabe. Diese Version ist die leistungsstärkste Version der 72B-Serie."
},
"qwen2.5-vl-7b-instruct": {
"description": "Verbesserte Befolgung von Anweisungen, Mathematik, Problemlösung und Programmierung, gesteigerte Erkennungsfähigkeiten für alle Arten von visuellen Elementen, Unterstützung für die präzise Lokalisierung visueller Elemente in verschiedenen Formaten, Verständnis von langen Videodateien (maximal 10 Minuten) und sekundengenauer Ereigniszeitpunktlokalisierung, Fähigkeit zur zeitlichen Einordnung und Geschwindigkeitsverständnis, Unterstützung für die Steuerung von OS- oder Mobile-Agenten basierend auf Analyse- und Lokalisierungsfähigkeiten, starke Fähigkeit zur Extraktion von Schlüsselinformationen und JSON-Format-Ausgabe. Diese Version ist die leistungsstärkste Version der 72B-Serie."
"description": "Qwen2.5 VL 7B Instruct, ein leichtgewichtiges multimodales Modell, das Kosten und Erkennungsleistung ausbalanciert."
},
"qwen2.5-vl-instruct": {
"description": "Qwen2.5-VL ist die neueste Version des visuellen Sprachmodells in der Qwen-Modellfamilie."
@@ -2952,46 +3192,46 @@
"description": "Qwen3 ist das neue, großangelegte Sprachmodell von Alibaba, das mit hervorragender Leistung vielfältige Anwendungsbedürfnisse unterstützt."
},
"qwen3-0.6b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 0.6B, ein Einstiegsmodell, geeignet für einfache Schlussfolgerungen und stark ressourcenbeschränkte Umgebungen."
},
"qwen3-1.7b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 1.7B, ein ultraleichtes Modell, ideal für Edge- und Endgerätebereitstellung."
},
"qwen3-14b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 14B, ein mittelgroßes Modell, geeignet für mehrsprachige Frage-Antwort- und Textgenerierungsaufgaben."
},
"qwen3-235b-a22b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 235B A22B, ein universelles Großmodell für eine Vielzahl komplexer Aufgaben."
},
"qwen3-235b-a22b-instruct-2507": {
"description": "Open-Source-Modell im nicht-denkenden Modus basierend auf Qwen3, mit leichten Verbesserungen in subjektiver Kreativität und Modellsicherheit gegenüber der Vorgängerversion (Tongyi Qianwen 3-235B-A22B)."
"description": "Qwen3 235B A22B Instruct 2507, ein universelles Flaggschiff-Instruktionsmodell, geeignet für vielfältige Generierungs- und Schlussfolgerungsaufgaben."
},
"qwen3-235b-a22b-thinking-2507": {
"description": "Open-Source-Modell im Denkmodus basierend auf Qwen3, mit erheblichen Verbesserungen in Logik, allgemeinen Fähigkeiten, Wissensabdeckung und Kreativität gegenüber der Vorgängerversion (Tongyi Qianwen 3-235B-A22B). Geeignet für anspruchsvolle und stark schlussfolgernde Szenarien."
"description": "Qwen3 235B A22B Thinking 2507, ein extrem großskaliges Denkmodell, ideal für hochkomplexe Schlussfolgerungen."
},
"qwen3-30b-a3b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 30B A3B, ein mittelgroßes bis großes Allzweckmodell mit ausgewogenem Verhältnis zwischen Kosten und Leistung."
},
"qwen3-30b-a3b-instruct-2507": {
"description": "Im Vergleich zur vorherigen Version (Qwen3-30B-A3B) wurde die allgemeine Leistungsfähigkeit in Chinesisch, Englisch und mehreren Sprachen deutlich verbessert. Spezielle Optimierungen für subjektive und offene Aufgaben führen zu einer deutlich besseren Übereinstimmung mit den Nutzerpräferenzen und ermöglichen hilfreichere Antworten."
"description": "Qwen3 30B A3B Instruct 2507, ein mittelgroßes bis großes Instruktionsmodell, geeignet für hochwertige Generierung und Frage-Antwort-Aufgaben."
},
"qwen3-30b-a3b-thinking-2507": {
"description": "Basierend auf dem Denkmodus-Open-Source-Modell von Qwen3 wurden im Vergleich zur vorherigen Version (Tongyi Qianwen 3-30B-A3B) die logischen Fähigkeiten, die allgemeine Leistungsfähigkeit, das Wissen und die Kreativität erheblich verbessert. Es eignet sich für anspruchsvolle Szenarien mit starker Argumentation."
"description": "Qwen3 30B A3B Thinking 2507, ein mittelgroßes bis großes Denkmodell mit ausgewogener Genauigkeit und Effizienz."
},
"qwen3-32b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 32B, geeignet für allgemeine Aufgaben mit erhöhtem Verständnisbedarf."
},
"qwen3-4b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 4B, ideal für mittelgroße bis kleine Anwendungen und lokale Inferenzszenarien."
},
"qwen3-8b": {
"description": "Qwen3 ist ein neues, leistungsstarkes Modell der nächsten Generation, das in den Bereichen Inferenz, Allgemeinwissen, Agenten und Mehrsprachigkeit erhebliche Fortschritte erzielt hat und den Wechsel zwischen Denkmodi unterstützt."
"description": "Qwen3 8B, ein leichtgewichtiges Modell mit flexibler Bereitstellung, geeignet für hochparallele Anwendungen."
},
"qwen3-coder-30b-a3b-instruct": {
"description": "Open-Source-Version des Qwen-Codegenerierungsmodells. Das neueste qwen3-coder-30b-a3b-instruct basiert auf Qwen3 und bietet leistungsstarke Coding-Agent-Fähigkeiten. Es ist spezialisiert auf Tool-Nutzung und Interaktion mit Umgebungen, ermöglicht autonomes Programmieren und kombiniert herausragende Programmierfähigkeiten mit allgemeinen Fähigkeiten."
},
"qwen3-coder-480b-a35b-instruct": {
"description": "Open-Source-Code-Modell von Tongyi Qianwen. Das neueste qwen3-coder-480b-a35b-instruct basiert auf Qwen3, verfügt über starke Coding-Agent-Fähigkeiten, ist versiert im Werkzeugaufruf und in der Umgebungskommunikation und ermöglicht selbstständiges Programmieren mit hervorragender Codequalität und allgemeinen Fähigkeiten."
"description": "Qwen3 Coder 480B A35B Instruct, ein Flaggschiff-Code-Modell, unterstützt mehrsprachige Programmierung und komplexes Codeverständnis."
},
"qwen3-coder-flash": {
"description": "Tongyi Qianwen Code-Modell. Die neueste Qwen3-Coder Modellreihe basiert auf Qwen3 und ist ein Code-Generierungsmodell mit starker Coding-Agent-Fähigkeit, spezialisiert auf Werkzeugaufrufe und Umgebungsinteraktion, das selbstständiges Programmieren ermöglicht und neben hervorragenden Code-Fähigkeiten auch allgemeine Kompetenzen besitzt."
@@ -3005,32 +3245,41 @@
"qwen3-max": {
"description": "Tongyi Qianwen 3 Max Modellserie, die im Vergleich zur 2.5 Serie eine deutliche Verbesserung der allgemeinen Fähigkeiten bietet, einschließlich verbesserter Textverständnisfähigkeiten in Chinesisch und Englisch, komplexer Befolgung von Anweisungen, subjektiver offener Aufgaben, Mehrsprachigkeit und Tool-Integration; das Modell zeigt weniger Wissenshalluzinationen. Die neueste qwen3-max Version wurde speziell im Bereich Agentenprogrammierung und Tool-Integration weiterentwickelt. Die offizielle Veröffentlichung erreicht SOTA-Niveau in Fachgebieten und ist für komplexere Agentenanforderungen optimiert."
},
"qwen3-max-preview": {
"description": "Das leistungsstärkste Modell der Tongyi Qianwen-Serie, geeignet für komplexe, mehrstufige Aufgaben. Vorschauversion mit Denkfähigkeit."
},
"qwen3-next-80b-a3b-instruct": {
"description": "Ein neues Open-Source-Modell der nächsten Generation im Nicht-Denk-Modus basierend auf Qwen3. Im Vergleich zur vorherigen Version (Tongyi Qianwen 3-235B-A22B-Instruct-2507) bietet es eine verbesserte chinesische Textverständnisfähigkeit, verstärkte logische Schlussfolgerungen und bessere Leistung bei textgenerierenden Aufgaben."
},
"qwen3-next-80b-a3b-thinking": {
"description": "Ein neues Open-Source-Modell der nächsten Generation im Denkmodus basierend auf Qwen3. Im Vergleich zur vorherigen Version (Tongyi Qianwen 3-235B-A22B-Thinking-2507) wurde die Befehlsbefolgung verbessert und die Modellantworten sind prägnanter zusammengefasst."
"description": "Qwen3 Next 80B A3B Thinking, eine Flaggschiff-Version für komplexe Schlussfolgerungsaufgaben."
},
"qwen3-omni-flash": {
"description": "Das Qwen-Omni-Modell kann kombinierte Eingaben aus Text, Bildern, Audio und Video verarbeiten und Antworten in Text- oder Sprachform generieren. Es bietet verschiedene menschenähnliche Sprachstile, unterstützt mehrsprachige und dialektale Sprachausgabe und eignet sich für Anwendungen wie Textgenerierung, visuelle Erkennung und Sprachassistenten."
},
"qwen3-vl-235b-a22b-instruct": {
"description": "Qwen3 VL 235B A22B im Non-Thinking-Modus (Instruct), geeignet für Anwendungsfälle mit einfachen Anweisungen, bei gleichzeitig starker visueller Verständnisfähigkeit."
"description": "Qwen3 VL 235B A22B Instruct, ein Flaggschiff-Multimodalmodell für anspruchsvolle Verständnis- und Kreativaufgaben."
},
"qwen3-vl-235b-a22b-thinking": {
"description": "Qwen3 VL 235B A22B im Thinking-Modus (Open-Source-Version), bietet erstklassige visuelle und textbasierte Schlussfolgerungsfähigkeiten für komplexe Aufgaben mit hoher kognitiver Anforderung und Langvideo-Verständnis."
"description": "Qwen3 VL 235B A22B Thinking, die Denkversion des Flaggschiffs für komplexe multimodale Schlussfolgerungs- und Planungsaufgaben."
},
"qwen3-vl-30b-a3b-instruct": {
"description": "Qwen3 VL 30B im Non-Thinking-Modus (Instruct), konzipiert für allgemeine Anweisungsfolgeszenarien mit starker multimodaler Verständnis- und Generierungsfähigkeit."
"description": "Qwen3 VL 30B A3B Instruct, ein großes multimodales Modell mit ausgewogener Genauigkeit und Schlussfolgerungsleistung."
},
"qwen3-vl-30b-a3b-thinking": {
"description": "Qwen-VL (Open-Source-Version) bietet visuelles Verständnis und Textgenerierung, unterstützt Agenteninteraktion, visuelle Kodierung, räumliches Bewusstsein, Langvideo-Verständnis und tiefes Denken. Es verfügt über starke Texterkennungs- und Mehrsprachenfähigkeiten in komplexen Szenarien."
"description": "Qwen3 VL 30B A3B Thinking, eine tiefgreifende Denkversion für komplexe multimodale Aufgaben."
},
"qwen3-vl-32b-instruct": {
"description": "Qwen3 VL 32B Instruct, ein multimodales Instruktionsmodell, geeignet für hochwertige Bild-Text-Fragen und kreative Aufgaben."
},
"qwen3-vl-32b-thinking": {
"description": "Qwen3 VL 32B Thinking, eine multimodale Denkversion mit Fokus auf komplexe Schlussfolgerungen und Langkettenanalysen."
},
"qwen3-vl-8b-instruct": {
"description": "Qwen3 VL 8B im Non-Thinking-Modus (Instruct), geeignet für Standardaufgaben der multimodalen Generierung und Erkennung."
"description": "Qwen3 VL 8B Instruct, ein leichtgewichtiges multimodales Modell, ideal für alltägliche visuelle Fragen und Anwendungsintegration."
},
"qwen3-vl-8b-thinking": {
"description": "Qwen3 VL 8B im Thinking-Modus, konzipiert für leichte multimodale Schlussfolgerungs- und Interaktionsszenarien, mit erhaltener Fähigkeit zum Verständnis langer Kontexte."
"description": "Qwen3 VL 8B Thinking, ein multimodales Denkmodell, geeignet für detaillierte Schlussfolgerungen aus visuellen Informationen."
},
"qwen3-vl-flash": {
"description": "Qwen3 VL Flash: eine leichtgewichtige, hochperformante Version für schnelle Inferenz, ideal für latenzkritische oder großvolumige Anfragen."
@@ -3152,9 +3401,6 @@
"step-r1-v-mini": {
"description": "Dieses Modell ist ein leistungsstarkes Schlussfolgerungsmodell mit starker Bildverständnisfähigkeit, das in der Lage ist, Bild- und Textinformationen zu verarbeiten und nach tiefem Denken Textinhalte zu generieren. Es zeigt herausragende Leistungen im Bereich der visuellen Schlussfolgerung und verfügt über erstklassige Fähigkeiten in Mathematik, Programmierung und Textschlussfolgerung. Die Kontextlänge beträgt 100k."
},
"step3": {
"description": "Step3 ist ein multimodales Modell von StepStar mit leistungsstarken Fähigkeiten im visuellen Verständnis."
},
"stepfun-ai/step3": {
"description": "Step3 ist ein wegweisendes multimodales Inferenzmodell, veröffentlicht von StepFun (阶跃星辰). Es basiert auf einer Mixture-of-Experts-(MoE)-Architektur mit insgesamt 321 Milliarden Parametern und 38 Milliarden Aktivierungsparametern. Das Modell ist als End-to-End-System konzipiert, um die Decodierungskosten zu minimieren und gleichzeitig erstklassige Leistung bei visuell-sprachlicher Inferenz zu bieten. Durch die synergistische Kombination von Multi-Matrix-Factorization-Attention (MFA) und Attention-FFN-Dekopplung (AFD) erzielt Step3 sowohl auf High-End- als auch auf ressourcenbeschränkten Beschleunigern hohe Effizienz. In der Vortrainingsphase verarbeitete Step3 mehr als 20 Billionen Text-Tokens und 4 Billionen multimodale (BildText) Tokens und deckt dabei über zehn Sprachen ab. Das Modell erzielt in zahlreichen Benchmarks — etwa in Mathematik, Programmierung und Multimodalität — führende Ergebnisse unter den OpenSourceModellen."
},
@@ -3218,6 +3464,9 @@
"us.anthropic.claude-haiku-4-5-20251001-v1:0": {
"description": "Claude Haiku 4.5 ist das schnellste und intelligenteste Haiku-Modell von Anthropic mit blitzschneller Reaktionszeit und erweiterten Denkfähigkeiten."
},
"us.anthropic.claude-opus-4-5-20251101-v1:0": {
"description": "Claude Opus 4.5 ist das Flaggschiffmodell von Anthropic. Es vereint herausragende Intelligenz mit skalierbarer Leistung und eignet sich ideal für komplexe Aufgaben, die höchste Qualität bei Antworten und ausgeprägte Fähigkeiten zur Schlussfolgerung erfordern."
},
"us.anthropic.claude-sonnet-4-5-20250929-v1:0": {
"description": "Claude Sonnet 4.5 ist das bisher intelligenteste Modell von Anthropic."
},
@@ -3236,6 +3485,9 @@
"vercel/v0-1.5-md": {
"description": "Zugriff auf das Modell hinter v0 zur Generierung, Reparatur und Optimierung moderner Webanwendungen mit frameworkspezifischer Inferenz und aktuellem Wissen."
},
"volcengine/doubao-seed-code": {
"description": "Doubao-Seed-Code ist ein großes Modell der Byte Volcano Engine, optimiert für Agentic Programming mit starker Leistung in Programmier- und Agentenbenchmarks und Unterstützung für 256K Kontext."
},
"wan2.2-t2i-flash": {
"description": "Wanxiang 2.2 Turbo-Version, das aktuell neueste Modell. Es bietet umfassende Verbesserungen in Kreativität, Stabilität und realistischer Textur, erzeugt schnell und bietet ein hervorragendes Preis-Leistungs-Verhältnis."
},
@@ -3263,6 +3515,24 @@
"wizardlm2:8x22b": {
"description": "WizardLM 2 ist ein Sprachmodell von Microsoft AI, das in komplexen Dialogen, mehrsprachigen Anwendungen, Schlussfolgerungen und intelligenten Assistenten besonders gut abschneidet."
},
"x-ai/grok-4": {
"description": "Grok 4 ist das Flaggschiffmodell von xAI mit leistungsstarker Logik und multimodalen Fähigkeiten."
},
"x-ai/grok-4-fast": {
"description": "Grok 4 Fast ist ein Modell von xAI mit hohem Durchsatz und niedrigen Kosten (unterstützt 2M Kontextfenster) ideal für hochparallele und langkontextuelle Szenarien."
},
"x-ai/grok-4-fast-non-reasoning": {
"description": "Grok 4 Fast (Non-Reasoning) ist ein multimodales Modell von xAI mit hohem Durchsatz und niedrigen Kosten (unterstützt 2M Kontextfenster), ausgelegt für latenz- und kostensensitive Szenarien ohne interne Schlussfolgerung. Die Reasoning-Funktion kann bei Bedarf über den API-Parameter aktiviert werden. Prompts und Completions können von xAI oder OpenRouter zur Verbesserung zukünftiger Modelle verwendet werden."
},
"x-ai/grok-4.1-fast": {
"description": "Grok 4 Fast ist ein Modell von xAI mit hohem Durchsatz und niedrigen Kosten (unterstützt 2M Kontextfenster) ideal für hochparallele und langkontextuelle Szenarien."
},
"x-ai/grok-4.1-fast-non-reasoning": {
"description": "Grok 4 Fast (Non-Reasoning) ist ein multimodales Modell von xAI mit hohem Durchsatz und niedrigen Kosten (unterstützt 2M Kontextfenster), ausgelegt für latenz- und kostensensitive Szenarien ohne interne Schlussfolgerung. Die Reasoning-Funktion kann bei Bedarf über den API-Parameter aktiviert werden. Prompts und Completions können von xAI oder OpenRouter zur Verbesserung zukünftiger Modelle verwendet werden."
},
"x-ai/grok-code-fast-1": {
"description": "Grok Code Fast 1 ist ein schnelles Codierungsmodell von xAI mit gut lesbarer und engineering-tauglicher Ausgabe."
},
"x1": {
"description": "Das Spark X1 Modell wird weiter verbessert und erreicht in allgemeinen Aufgaben wie Schlussfolgerungen, Textgenerierung und Sprachverständnis Ergebnisse, die mit OpenAI o1 und DeepSeek R1 vergleichbar sind, basierend auf der bereits führenden Leistung in mathematischen Aufgaben."
},
@@ -3323,6 +3593,15 @@
"yi-vision-v2": {
"description": "Ein Modell für komplexe visuelle Aufgaben, das leistungsstarke Verständnis- und Analysefähigkeiten auf der Grundlage mehrerer Bilder bietet."
},
"z-ai/glm-4.5": {
"description": "GLM 4.5 ist das Flaggschiffmodell von Z.AI mit Unterstützung für hybrides Schlussfolgern optimiert für technische und langkontextuelle Aufgaben."
},
"z-ai/glm-4.5-air": {
"description": "GLM 4.5 Air ist die leichte Version von GLM 4.5 ideal für kostensensitive Szenarien bei gleichbleibender Schlussfolgerungsleistung."
},
"z-ai/glm-4.6": {
"description": "GLM 4.6 ist das Flaggschiffmodell von Z.AI mit erweitertem Kontext und verbesserter Codierungsleistung."
},
"zai-org/GLM-4.5": {
"description": "GLM-4.5 ist ein speziell für Agentenanwendungen entwickeltes Basismodell mit Mixture-of-Experts-Architektur. Es ist tief optimiert für Werkzeugaufrufe, Web-Browsing, Softwareentwicklung und Frontend-Programmierung und unterstützt nahtlos die Integration in Code-Agenten wie Claude Code und Roo Code. GLM-4.5 verwendet einen hybriden Inferenzmodus und ist für komplexe Schlussfolgerungen sowie den Alltagsgebrauch geeignet."
},
@@ -3343,5 +3622,8 @@
},
"zai/glm-4.5v": {
"description": "GLM-4.5V basiert auf dem GLM-4.5-Air Basismodell, übernimmt bewährte Techniken von GLM-4.1V-Thinking und skaliert effektiv mit einer leistungsstarken MoE-Architektur mit 106 Milliarden Parametern."
},
"zenmux/auto": {
"description": "Die automatische Routing-Funktion von ZenMux wählt basierend auf deiner Anfrage automatisch das derzeit leistungsstärkste und kosteneffizienteste Modell aus den unterstützten Optionen aus."
}
}
+36 -16
View File
@@ -1,4 +1,38 @@
{
"builtins": {
"lobe-knowledge-base": {
"apiName": {
"readKnowledge": "Wissensdatenbank lesen",
"searchKnowledgeBase": "Wissensdatenbank durchsuchen"
},
"title": "Wissensdatenbank"
},
"lobe-local-system": {
"apiName": {
"editLocalFile": "Datei bearbeiten",
"getCommandOutput": "Codeausgabe abrufen",
"globLocalFiles": "Dateien durchsuchen",
"grepContent": "Inhalt durchsuchen",
"killCommand": "Codeausführung beenden",
"listLocalFiles": "Dateiliste anzeigen",
"moveLocalFiles": "Dateien verschieben",
"readLocalFile": "Dateiinhalt lesen",
"renameLocalFile": "Datei umbenennen",
"runCommand": "Code ausführen",
"searchLocalFiles": "Dateien suchen",
"writeLocalFile": "In Datei schreiben"
},
"title": "Lokales System"
},
"lobe-web-browsing": {
"apiName": {
"crawlMultiPages": "Inhalte mehrerer Seiten lesen",
"crawlSinglePage": "Seiteninhalt lesen",
"search": "Seiten durchsuchen"
},
"title": "Websuche"
}
},
"confirm": "Bestätigen",
"debug": {
"arguments": "Aufrufparameter",
@@ -236,6 +270,8 @@
},
"inspector": {
"args": "Parameterliste anzeigen",
"delete": "Werkzeugaufruf löschen",
"orphanedToolCall": "Dieser Werkzeugaufruf könnte aufgrund eines Fehlers verwaist sein, was den normalen Ablauf des Agenten beeinträchtigen kann. Bitte entfernen Sie ihn.",
"pluginRender": "Plugin-Oberfläche anzeigen"
},
"list": {
@@ -249,17 +285,6 @@
"content": "Plugin wird aufgerufen...",
"plugin": "Plugin läuft..."
},
"localSystem": {
"apiName": {
"listLocalFiles": "Dateiliste anzeigen",
"moveLocalFiles": "Dateien verschieben",
"readLocalFile": "Dateiinhalt lesen",
"renameLocalFile": "Datei umbenennen",
"searchLocalFiles": "Dateien suchen",
"writeLocalFile": "Datei schreiben"
},
"title": "Lokale Dateien"
},
"mcpInstall": {
"CHECKING_INSTALLATION": "Installationsumgebung wird geprüft...",
"COMPLETED": "Installation abgeschlossen",
@@ -367,11 +392,6 @@
"warning": "⚠️ Bitte stellen Sie sicher, dass Sie der Quelle dieses Plugins vertrauen. Bösartige Plugins können die Systemsicherheit gefährden."
},
"search": {
"apiName": {
"crawlMultiPages": "Mehrere Seiteninhalt lesen",
"crawlSinglePage": "Seiteninhalt lesen",
"search": "Seite durchsuchen"
},
"config": {
"addKey": "Schlüssel hinzufügen",
"close": "Löschen",

Some files were not shown because too many files have changed in this diff Show More