mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-14 03:30:19 +00:00
Compare commits
95 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aa77d0677e | |||
| 71a217f188 | |||
| 113b93eb6c | |||
| 4ae407844e | |||
| ba3c7e6068 | |||
| deab4d0386 | |||
| a41230ea11 | |||
| f6dbc1eb2f | |||
| e025fec9f0 | |||
| 4d64d9d045 | |||
| 3730b89f7d | |||
| 8fb9890737 | |||
| 02d2121355 | |||
| fe352ff330 | |||
| c7f0a38b57 | |||
| 5d8648c7d6 | |||
| 094cdff097 | |||
| 83e0cea322 | |||
| 21c67d6700 | |||
| 340aa2a9e9 | |||
| a7d1878630 | |||
| 6a2d439f5c | |||
| b5ae53ab30 | |||
| 474af231b5 | |||
| 7ec5594e1c | |||
| ffff700c6c | |||
| 7114fc10c4 | |||
| 973367c7ac | |||
| d1c57a1f97 | |||
| 6545ef863c | |||
| de60a6732e | |||
| d178d4f931 | |||
| 0a056f3f0b | |||
| c5d71fe165 | |||
| 741f588cae | |||
| 092506906a | |||
| e8c7d1c568 | |||
| 61bb8aeaf2 | |||
| caaa331002 | |||
| fcda0b50f1 | |||
| 53a2c30a75 | |||
| 203fdc4b22 | |||
| 25c43587de | |||
| 2cd2ca9a23 | |||
| 7636344e07 | |||
| 1c9f0d9b72 | |||
| d0ee3df579 | |||
| 3ad336fa28 | |||
| 92b65f7b7a | |||
| 9ea680c96d | |||
| 457e7c130d | |||
| 4d8053bebe | |||
| d91fb73f68 | |||
| 14fe7c5736 | |||
| 4c68fc3e3a | |||
| 10e44dfb6b | |||
| 5889e8e85c | |||
| 5e41d9a39c | |||
| be096eb9ff | |||
| 39e88196d7 | |||
| ceadd61ce3 | |||
| c5e0ecd31e | |||
| 21c6eb015f | |||
| 031d6f44dc | |||
| 5ce5532a0e | |||
| a53b3a5ca1 | |||
| 9c5341e098 | |||
| 9d067534ae | |||
| 6c095a6652 | |||
| d74f424518 | |||
| 992f4e5ad7 | |||
| 13ca8e18c8 | |||
| fbcd04696e | |||
| 037c8b5fae | |||
| 7563b62b80 | |||
| 3edeb21bb7 | |||
| 9c4780c82e | |||
| 3785a7109a | |||
| 3f4313095f | |||
| 05aeae1b14 | |||
| 2cedca58fe | |||
| 02eba3ce64 | |||
| 7461d4e486 | |||
| f445ab013c | |||
| f88e01e59b | |||
| 8b5fc3656b | |||
| 06af7939e4 | |||
| e12965c7df | |||
| 7afd1318db | |||
| 6a374d2f32 | |||
| cec034721f | |||
| 2d70632d3e | |||
| 41c554d748 | |||
| 4e4933d861 | |||
| a5bb31b844 |
@@ -1,7 +1,7 @@
|
||||
name: Desktop PR Build
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
pull_request:
|
||||
types: [synchronize, labeled, unlabeled] # PR 更新或标签变化时触发
|
||||
|
||||
# 确保同一 PR 同一时间只运行一个相同的 workflow,取消正在进行的旧的运行
|
||||
@@ -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
|
||||
@@ -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:
|
||||
|
||||
@@ -47,6 +47,8 @@ jobs:
|
||||
DATABASE_URL: postgresql://postgres:postgres@localhost:5432/postgres
|
||||
DATABASE_DRIVER: node
|
||||
KEY_VAULTS_SECRET: LA7n9k3JdEcbSgml2sxfw+4TV1AzaaFU5+R176aQz4s=
|
||||
ENABLE_MOCK_DEV_USER: 1
|
||||
MOCK_DEV_USER_ID: test_user_id
|
||||
run: bun run e2e
|
||||
|
||||
- name: Upload Cucumber HTML report (on failure)
|
||||
|
||||
@@ -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
-1
@@ -103,8 +103,8 @@ vertex-ai-key.json
|
||||
.local/
|
||||
.claude/
|
||||
.mcp.json
|
||||
|
||||
CLAUDE.local.md
|
||||
.agent/
|
||||
|
||||
# MCP tools
|
||||
.serena/**
|
||||
|
||||
+634
@@ -2,6 +2,640 @@
|
||||
|
||||
# Changelog
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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">
|
||||
|
||||
[](#readme-top)
|
||||
|
||||
</div>
|
||||
|
||||
## [Version 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>
|
||||
|
||||
@@ -52,6 +52,7 @@
|
||||
"@typescript/native-preview": "7.0.0-dev.20250711.1",
|
||||
"consola": "^3.4.2",
|
||||
"cookie": "^1.0.2",
|
||||
"diff": "^8.0.2",
|
||||
"electron": "^38.7.0",
|
||||
"electron-builder": "^26.0.12",
|
||||
"electron-is": "^3.0.0",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -711,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,
|
||||
};
|
||||
|
||||
@@ -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'));
|
||||
|
||||
@@ -392,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');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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])?)*$/;
|
||||
|
||||
@@ -1,4 +1,181 @@
|
||||
[
|
||||
{
|
||||
"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."]
|
||||
|
||||
@@ -170,20 +170,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,6 +183,7 @@ 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
|
||||
@@ -206,6 +195,7 @@ 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]
|
||||
}
|
||||
}
|
||||
@@ -219,6 +209,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 +220,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]
|
||||
}
|
||||
}
|
||||
@@ -660,6 +652,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]
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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 图像生成和编辑。
|
||||
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
# Chat 页面 BDD 测试
|
||||
|
||||
本目录包含 Chat 页面的 BDD(行为驱动开发)测试用例,使用 Gherkin 语法编写,全部采用中文描述。
|
||||
|
||||
## 测试文件结构
|
||||
|
||||
### Feature 文件(测试场景)
|
||||
|
||||
1. **smoke.feature** - 冒烟测试 (P0)
|
||||
- 加载聊天主页
|
||||
- 加载会话列表
|
||||
- 加载输入框
|
||||
- 加载默认助手会话
|
||||
|
||||
2. **session-management.feature** - 会话管理 (P1)
|
||||
- 创建 / 删除 / 重命名 / 复制会话
|
||||
- 会话切换
|
||||
- 会话分组功能
|
||||
- 会话搜索
|
||||
- 置顶 / 取消置顶
|
||||
- 收件箱功能
|
||||
|
||||
3. **message-interactions.feature** - 消息交互 (P0/P1)
|
||||
- 发送 / 接收消息
|
||||
- 重新生成消息
|
||||
- 编辑 / 删除 / 复制消息
|
||||
- 停止生成
|
||||
- 查看消息详情和 Token 统计
|
||||
- 消息跳转和导航
|
||||
|
||||
4. **chat-input.feature** - 输入功能 (P1)
|
||||
- 文本输入和多行输入
|
||||
- 文件上传(图片、PDF 等)
|
||||
- @提及功能
|
||||
- Slash 命令
|
||||
- 语音输入 (STT)
|
||||
- 输入框工具栏操作
|
||||
|
||||
5. **group-chat.feature** - Agent 团队聊天 (P1)
|
||||
- 创建 / 管理 Agent 团队
|
||||
- 成员添加 / 移除
|
||||
- 主持人功能
|
||||
- 群组消息和 @提及
|
||||
- 私信功能
|
||||
|
||||
6. **topic-thread.feature** - 话题 / 子话题 (P1)
|
||||
- 创建 / 切换 / 删除话题
|
||||
- 子话题 (Thread) 功能
|
||||
- 话题列表显示
|
||||
- 话题搜索
|
||||
|
||||
7. **knowledge-base.feature** - 知识库 (P1)
|
||||
- 关联 / 移除知识库
|
||||
- 关联 / 移除文件
|
||||
- 文件上传
|
||||
- 查看 RAG 引用源
|
||||
|
||||
8. **model-settings.feature** - 模型设置 (P1)
|
||||
- 切换模型
|
||||
- 调整模型参数
|
||||
- 开启 / 关闭上下文缓存
|
||||
- 开启 / 关闭深度思考
|
||||
- 历史消息数设置
|
||||
- 查看定价和 Token 详情
|
||||
|
||||
9. **agent-settings.feature** - 助手设置 (P1)
|
||||
- 进入 / 退出设置页面
|
||||
- 修改助手基础信息
|
||||
- 设置系统提示词
|
||||
- 配置模型和参数
|
||||
- 添加工具和插件
|
||||
- 关联知识库
|
||||
- 提交助手到市场
|
||||
|
||||
## Steps 文件(测试步骤实现)
|
||||
|
||||
位于 `e2e/src/steps/chat/` 目录:
|
||||
|
||||
- **common.steps.ts** - 通用步骤定义(导航、断言等)
|
||||
- **smoke.steps.ts** - 冒烟测试步骤实现
|
||||
- **message-interactions.steps.ts** - 消息交互步骤实现(示例)
|
||||
- _其他 steps 文件待补充_
|
||||
|
||||
## 优先级标签
|
||||
|
||||
- `@P0` - 最高优先级,核心功能,必须通过
|
||||
- `@P1` - 高优先级,重要功能
|
||||
- `@P2` - 中等优先级,次要功能
|
||||
|
||||
## 场景 ID 格式
|
||||
|
||||
每个场景都有唯一的 ID,格式为:`@CHAT-<模块>-<序号>`
|
||||
|
||||
例如:
|
||||
|
||||
- `@CHAT-SMOKE-001` - 冒烟测试第 1 个场景
|
||||
- `@CHAT-MESSAGE-001` - 消息交互第 1 个场景
|
||||
- `@CHAT-GROUP-001` - 群组聊天第 1 个场景
|
||||
|
||||
## 运行测试
|
||||
|
||||
```bash
|
||||
# 运行所有 chat 测试
|
||||
npm run test:e2e -- --tags "@chat"
|
||||
|
||||
# 运行特定模块测试
|
||||
npm run test:e2e -- --tags "@chat and @smoke"
|
||||
npm run test:e2e -- --tags "@chat and @message"
|
||||
|
||||
# 运行特定优先级测试
|
||||
npm run test:e2e -- --tags "@chat and @P0"
|
||||
|
||||
# 运行特定场景
|
||||
npm run test:e2e -- --tags "@CHAT-SMOKE-001"
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有场景描述使用中文,便于团队理解
|
||||
2. 遵循 Given-When-Then 格式
|
||||
3. 每个 feature 文件包含相关功能的所有测试场景
|
||||
4. Steps 实现使用 Playwright 的 Page Object 模式
|
||||
5. 超时时间统一设置为 120 秒,适应不同环境
|
||||
6. 优先使用 data-testid 选择器,其次使用语义化选择器
|
||||
7. 部分 steps 文件需要根据实际开发进度补充完善
|
||||
|
||||
## 待补充
|
||||
|
||||
以下 steps 文件需要根据实际测试需求补充:
|
||||
|
||||
- session-management.steps.ts
|
||||
- chat-input.steps.ts
|
||||
- group-chat.steps.ts
|
||||
- topic-thread.steps.ts
|
||||
- knowledge-base.steps.ts
|
||||
- model-settings.steps.ts
|
||||
- agent-settings.steps.ts
|
||||
@@ -0,0 +1,291 @@
|
||||
@chat @agent-settings
|
||||
Feature: 助手设置
|
||||
测试助手配置和设置相关功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 进入设置页面
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-001 @P1
|
||||
Scenario: 从聊天页面进入助手设置
|
||||
Given 我访问 "/chat"
|
||||
When 我点击助手设置按钮
|
||||
Then 应该进入助手设置页面
|
||||
And URL 应该包含 "/chat/settings"
|
||||
And 我应该看到助手配置界面
|
||||
|
||||
@CHAT-AGENT-002 @P1
|
||||
Scenario: 从会话列表进入助手设置
|
||||
Given 我访问 "/chat"
|
||||
When 我右键点击某个会话
|
||||
And 我选择设置选项
|
||||
Then 应该进入该助手的设置页面
|
||||
|
||||
@CHAT-AGENT-003 @P1
|
||||
Scenario: 返回聊天页面
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击返回按钮
|
||||
Then 应该返回到聊天页面
|
||||
And 应该显示该助手的聊天界面
|
||||
|
||||
# ============================================
|
||||
# 基础信息设置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-004 @P1
|
||||
Scenario: 修改助手名称
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我修改助手名称为 "测试助手"
|
||||
And 我保存设置
|
||||
Then 名称应该更新成功
|
||||
And 会话列表应该显示新名称
|
||||
|
||||
@CHAT-AGENT-005 @P1
|
||||
Scenario: 修改助手描述
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我修改助手描述
|
||||
And 我保存设置
|
||||
Then 描述应该更新成功
|
||||
|
||||
@CHAT-AGENT-006 @P1
|
||||
Scenario: 上传助手头像
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击头像上传按钮
|
||||
And 我选择一张图片
|
||||
Then 头像应该上传成功
|
||||
And 应该显示新头像
|
||||
|
||||
@CHAT-AGENT-007 @P1
|
||||
Scenario: 修改助手颜色
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我选择一个新的颜色
|
||||
And 我保存设置
|
||||
Then 助手颜色应该更新
|
||||
And 会话列表应该显示新颜色
|
||||
|
||||
# ============================================
|
||||
# 系统提示词
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-008 @P1
|
||||
Scenario: 设置系统提示词
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我输入系统提示词
|
||||
And 我保存设置
|
||||
Then 系统提示词应该保存成功
|
||||
And 助手应该按照新提示词行为
|
||||
|
||||
@CHAT-AGENT-009 @P1
|
||||
Scenario: 使用提示词模板
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击使用模板按钮
|
||||
And 我选择一个提示词模板
|
||||
Then 模板内容应该填充到系统提示词
|
||||
And 我可以继续编辑
|
||||
|
||||
@CHAT-AGENT-010 @P1
|
||||
Scenario: 清空系统提示词
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 已经设置了系统提示词
|
||||
When 我清空系统提示词
|
||||
And 我保存设置
|
||||
Then 系统提示词应该被清空
|
||||
And 助手应该使用默认行为
|
||||
|
||||
# ============================================
|
||||
# 模型配置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-011 @P1
|
||||
Scenario: 为助手指定模型
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我选择一个特定模型
|
||||
And 我保存设置
|
||||
Then 该助手应该使用指定的模型
|
||||
And 模型设置应该保存
|
||||
|
||||
@CHAT-AGENT-012 @P1
|
||||
Scenario: 配置模型参数
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我调整模型参数
|
||||
And 我保存设置
|
||||
Then 参数应该保存成功
|
||||
And 该助手应该使用新参数
|
||||
|
||||
# ============================================
|
||||
# 工具配置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-013 @P1
|
||||
Scenario: 添加工具
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击添加工具按钮
|
||||
And 我选择一个工具
|
||||
And 我保存设置
|
||||
Then 工具应该被添加
|
||||
And 助手应该能使用该工具
|
||||
|
||||
@CHAT-AGENT-014 @P1
|
||||
Scenario: 移除工具
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 助手已经配置了工具
|
||||
When 我点击移除工具按钮
|
||||
And 我确认移除
|
||||
Then 工具应该被移除
|
||||
And 助手不应该再使用该工具
|
||||
|
||||
@CHAT-AGENT-015 @P1
|
||||
Scenario: 配置工具参数
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 助手已经配置了工具
|
||||
When 我点击工具设置
|
||||
And 我配置工具参数
|
||||
And 我保存设置
|
||||
Then 工具参数应该保存成功
|
||||
|
||||
# ============================================
|
||||
# 插件配置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-016 @P1
|
||||
Scenario: 添加插件
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击添加插件按钮
|
||||
And 我选择一个插件
|
||||
And 我保存设置
|
||||
Then 插件应该被添加
|
||||
And 助手应该能使用该插件
|
||||
|
||||
@CHAT-AGENT-017 @P1
|
||||
Scenario: 移除插件
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 助手已经配置了插件
|
||||
When 我点击移除插件按钮
|
||||
And 我确认移除
|
||||
Then 插件应该被移除
|
||||
|
||||
# ============================================
|
||||
# 知识库配置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-018 @P1
|
||||
Scenario: 关联知识库到助手
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击添加知识库按钮
|
||||
And 我选择一个知识库
|
||||
And 我保存设置
|
||||
Then 知识库应该被关联
|
||||
And 助手应该能访问该知识库
|
||||
|
||||
@CHAT-AGENT-019 @P1
|
||||
Scenario: 移除助手的知识库关联
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 助手已经关联了知识库
|
||||
When 我移除知识库关联
|
||||
And 我保存设置
|
||||
Then 知识库关联应该被移除
|
||||
|
||||
# ============================================
|
||||
# 高级设置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-020 @P1
|
||||
Scenario: 配置助手标签
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我添加标签
|
||||
And 我保存设置
|
||||
Then 标签应该保存成功
|
||||
And 应该在助手信息中显示标签
|
||||
|
||||
@CHAT-AGENT-021 @P2
|
||||
Scenario: 设置助手分类
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我选择助手分类
|
||||
And 我保存设置
|
||||
Then 分类应该保存成功
|
||||
|
||||
# ============================================
|
||||
# 保存和提交
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-022 @P1
|
||||
Scenario: 保存助手配置
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 我已经修改了助手配置
|
||||
When 我点击保存按钮
|
||||
Then 配置应该保存成功
|
||||
And 应该显示保存成功提示
|
||||
|
||||
@CHAT-AGENT-023 @P2
|
||||
Scenario: 提交助手到市场
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 助手配置已完善
|
||||
When 我点击提交助手按钮
|
||||
Then 应该打开提交对话框
|
||||
And 我应该看到提交表单
|
||||
When 我填写提交信息并确认
|
||||
Then 应该提交成功
|
||||
And 应该显示提交成功提示
|
||||
|
||||
# ============================================
|
||||
# 导入导出
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-024 @P2
|
||||
Scenario: 导出助手配置
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击导出按钮
|
||||
Then 应该下载助手配置文件
|
||||
And 文件格式应该是 JSON
|
||||
|
||||
@CHAT-AGENT-025 @P2
|
||||
Scenario: 导入助手配置
|
||||
Given 我访问 "/chat"
|
||||
When 我点击导入助手按钮
|
||||
And 我选择一个配置文件
|
||||
Then 应该导入成功
|
||||
And 应该创建新的助手
|
||||
And 助手配置应该与文件一致
|
||||
|
||||
# ============================================
|
||||
# 团队设置
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-026 @P1
|
||||
Scenario: 配置 Agent 团队主持人
|
||||
Given 我在一个 Agent 团队的设置页面 "/chat/settings"
|
||||
When 我配置主持人系统提示词
|
||||
And 我保存设置
|
||||
Then 主持人配置应该保存成功
|
||||
|
||||
@CHAT-AGENT-027 @P1
|
||||
Scenario: 编辑团队成员角色
|
||||
Given 我在一个 Agent 团队的设置页面 "/chat/settings"
|
||||
When 我点击某个成员
|
||||
And 我编辑成员的角色描述
|
||||
And 我保存设置
|
||||
Then 成员角色应该更新成功
|
||||
|
||||
# ============================================
|
||||
# 重置和删除
|
||||
# ============================================
|
||||
|
||||
@CHAT-AGENT-028 @P2
|
||||
Scenario: 重置助手配置
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
And 我已经修改了助手配置
|
||||
When 我点击重置按钮
|
||||
And 我确认重置
|
||||
Then 配置应该恢复到初始状态
|
||||
|
||||
@CHAT-AGENT-029 @P1
|
||||
Scenario: 从设置页面删除助手
|
||||
Given 我在助手设置页面 "/chat/settings"
|
||||
When 我点击删除助手按钮
|
||||
And 我确认删除
|
||||
Then 助手应该被删除
|
||||
And 应该返回到聊天列表
|
||||
And 该助手不应该再显示在列表中
|
||||
@@ -0,0 +1,221 @@
|
||||
@chat @input
|
||||
Feature: 聊天输入功能
|
||||
测试聊天输入框的各种功能和操作
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 基础输入
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-001 @P1
|
||||
Scenario: 文本输入
|
||||
Given 我访问 "/chat"
|
||||
When 我点击输入框
|
||||
And 我输入 "测试文本"
|
||||
Then 输入框应该显示我输入的文本
|
||||
|
||||
@CHAT-INPUT-002 @P1
|
||||
Scenario: 多行文本输入
|
||||
Given 我访问 "/chat"
|
||||
When 我在输入框中输入多行文本
|
||||
Then 输入框应该自动扩展高度
|
||||
And 所有文本应该可见
|
||||
|
||||
@CHAT-INPUT-003 @P1
|
||||
Scenario: 清空输入框
|
||||
Given 我访问 "/chat"
|
||||
And 输入框中有文本
|
||||
When 我点击清空按钮
|
||||
Then 输入框应该被清空
|
||||
And 发送按钮应该禁用
|
||||
|
||||
# ============================================
|
||||
# 文件上传
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-004 @P1
|
||||
Scenario: 上传图片文件
|
||||
Given 我访问 "/chat"
|
||||
When 我点击上传按钮
|
||||
And 我选择一张图片文件
|
||||
Then 图片应该显示在预览区
|
||||
And 我应该看到图片缩略图
|
||||
And 发送按钮应该可用
|
||||
|
||||
@CHAT-INPUT-005 @P1
|
||||
Scenario: 上传普通文件
|
||||
Given 我访问 "/chat"
|
||||
When 我点击上传按钮
|
||||
And 我选择一个 PDF 文件
|
||||
Then 文件应该显示在预览区
|
||||
And 我应该看到文件信息
|
||||
And 发送按钮应该可用
|
||||
|
||||
@CHAT-INPUT-006 @P1
|
||||
Scenario: 移除上传的文件
|
||||
Given 我访问 "/chat"
|
||||
And 我已经上传了一个文件
|
||||
When 我点击文件预览上的删除按钮
|
||||
Then 文件应该从预览区移除
|
||||
|
||||
@CHAT-INPUT-007 @P1
|
||||
Scenario: 拖拽上传文件
|
||||
Given 我访问 "/chat"
|
||||
When 我拖拽一个文件到输入框区域
|
||||
Then 文件应该被上传
|
||||
And 应该显示在预览区
|
||||
|
||||
@CHAT-INPUT-008 @P1
|
||||
Scenario: 查看上传文件详情
|
||||
Given 我访问 "/chat"
|
||||
And 我已经上传了一个文件
|
||||
When 我点击文件预览
|
||||
Then 应该显示文件详细信息
|
||||
And 我应该看到上传进度或状态
|
||||
|
||||
# ============================================
|
||||
# 提及功能 (@)
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-009 @P1
|
||||
Scenario: 提及助手
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我在输入框中输入 "@"
|
||||
Then 应该显示可提及的助手列表
|
||||
And 我应该看到团队成员
|
||||
|
||||
@CHAT-INPUT-010 @P1
|
||||
Scenario: 选择要提及的助手
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 我已经触发了提及列表
|
||||
When 我点击某个助手
|
||||
Then 助手名称应该插入到输入框
|
||||
And 应该显示提及标记
|
||||
|
||||
@CHAT-INPUT-011 @P1
|
||||
Scenario: 移除提及标记
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 输入框中有提及标记
|
||||
When 我点击提及标记的删除按钮
|
||||
Then 提及标记应该被移除
|
||||
|
||||
# ============================================
|
||||
# Slash 命令
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-012 @P2
|
||||
Scenario: 触发 Slash 命令菜单
|
||||
Given 我访问 "/chat"
|
||||
When 我在输入框中输入 "/"
|
||||
Then 应该显示可用的命令列表
|
||||
And 我应该看到命令提示
|
||||
|
||||
@CHAT-INPUT-013 @P2
|
||||
Scenario: 选择 Slash 命令
|
||||
Given 我访问 "/chat"
|
||||
And 我已经触发了命令列表
|
||||
When 我选择一个命令
|
||||
Then 命令应该被插入到输入框或被执行
|
||||
|
||||
# ============================================
|
||||
# 语音输入
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-014 @P2
|
||||
Scenario: 开启语音输入
|
||||
Given 我访问 "/chat"
|
||||
When 我点击语音输入按钮
|
||||
Then 应该请求麦克风权限
|
||||
And 应该开始语音识别
|
||||
|
||||
@CHAT-INPUT-015 @P2
|
||||
Scenario: 语音转文字
|
||||
Given 我访问 "/chat"
|
||||
And 语音输入已开启
|
||||
When 我说话
|
||||
Then 识别的文字应该显示在输入框
|
||||
And 应该实时更新文字内容
|
||||
|
||||
@CHAT-INPUT-016 @P2
|
||||
Scenario: 停止语音输入
|
||||
Given 我访问 "/chat"
|
||||
And 语音输入已开启
|
||||
When 我点击停止按钮
|
||||
Then 语音识别应该停止
|
||||
And 最终文字应该保留在输入框
|
||||
|
||||
# ============================================
|
||||
# 输入框工具栏
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-017 @P1
|
||||
Scenario: 查看输入框工具栏
|
||||
Given 我访问 "/chat"
|
||||
Then 我应该看到模型选择按钮
|
||||
And 我应该看到工具按钮
|
||||
And 我应该看到上传按钮
|
||||
And 我应该看到更多选项按钮
|
||||
|
||||
@CHAT-INPUT-018 @P1
|
||||
Scenario: 切换模型
|
||||
Given 我访问 "/chat"
|
||||
When 我点击模型选择按钮
|
||||
Then 应该显示可用的模型列表
|
||||
When 我选择另一个模型
|
||||
Then 模型应该切换成功
|
||||
And 应该显示当前选中的模型
|
||||
|
||||
@CHAT-INPUT-019 @P1
|
||||
Scenario: 查看 Token 使用情况
|
||||
Given 我访问 "/chat"
|
||||
And 输入框中有文本
|
||||
Then 我应该看到 Token 计数
|
||||
And 应该显示当前使用量
|
||||
|
||||
@CHAT-INPUT-020 @P1
|
||||
Scenario: 开启工具
|
||||
Given 我访问 "/chat"
|
||||
When 我点击工具按钮
|
||||
Then 应该显示可用的工具列表
|
||||
When 我启用某个工具
|
||||
Then 工具应该被激活
|
||||
And 应该显示工具已启用的状态
|
||||
|
||||
# ============================================
|
||||
# 历史消息限制
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-021 @P1
|
||||
Scenario: 设置历史消息数限制
|
||||
Given 我访问 "/chat"
|
||||
When 我点击历史消息设置按钮
|
||||
And 我设置消息数限制为 10
|
||||
Then 设置应该保存成功
|
||||
And 应该显示"助手将只记住最后10条消息"
|
||||
|
||||
# ============================================
|
||||
# 搜索功能
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-022 @P1
|
||||
Scenario: 开启搜索功能
|
||||
Given 我访问 "/chat"
|
||||
When 我点击搜索按钮
|
||||
Then 搜索功能应该被启用
|
||||
And 应该显示搜索配置选项
|
||||
|
||||
# ============================================
|
||||
# 保存话题
|
||||
# ============================================
|
||||
|
||||
@CHAT-INPUT-023 @P2
|
||||
Scenario: 保存为话题
|
||||
Given 我访问 "/chat"
|
||||
And 当前会话有消息记录
|
||||
When 我点击保存话题按钮
|
||||
Then 应该提示输入话题名称
|
||||
When 我输入话题名称并确认
|
||||
Then 话题应该保存成功
|
||||
And 应该在话题列表中显示
|
||||
@@ -0,0 +1,213 @@
|
||||
@chat @group
|
||||
Feature: Agent 团队聊天
|
||||
测试 Agent 团队的创建、管理和群组聊天功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 创建团队
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-001 @P1
|
||||
Scenario: 创建空的 Agent 团队
|
||||
Given 我访问 "/chat"
|
||||
When 我点击新建 Agent 团队按钮
|
||||
And 我输入团队名称 "测试团队"
|
||||
And 我不选择任何成员
|
||||
And 我点击创建按钮
|
||||
Then 应该创建成功
|
||||
And 我应该看到空团队的欢迎界面
|
||||
And 应该提示添加成员
|
||||
|
||||
@CHAT-GROUP-002 @P1
|
||||
Scenario: 使用模板创建 Agent 团队
|
||||
Given 我访问 "/chat"
|
||||
When 我点击新建 Agent 团队按钮
|
||||
And 我选择使用模板
|
||||
And 我选择一个模板
|
||||
Then 应该显示模板成员
|
||||
When 我点击创建按钮
|
||||
Then 团队应该创建成功
|
||||
And 应该包含模板中的所有成员
|
||||
|
||||
@CHAT-GROUP-003 @P1
|
||||
Scenario: 选择现有助手创建团队
|
||||
Given 我访问 "/chat"
|
||||
And 我已经有多个助手
|
||||
When 我点击新建 Agent 团队按钮
|
||||
And 我从现有助手中选择 2 个成员
|
||||
And 我点击创建按钮
|
||||
Then 团队应该创建成功
|
||||
And 应该包含选中的 2 个成员
|
||||
|
||||
# ============================================
|
||||
# 成员管理
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-004 @P1
|
||||
Scenario: 添加团队成员
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我点击添加成员按钮
|
||||
And 我选择一个助手
|
||||
And 我确认添加
|
||||
Then 该助手应该被添加到团队
|
||||
And 我应该在成员列表中看到该助手
|
||||
|
||||
@CHAT-GROUP-005 @P1
|
||||
Scenario: 移除团队成员
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 团队中有多个成员
|
||||
When 我右键点击某个成员
|
||||
And 我选择移除成员选项
|
||||
And 我确认移除
|
||||
Then 该成员应该被移除
|
||||
And 成员列表中不应该再显示该成员
|
||||
|
||||
@CHAT-GROUP-006 @P1
|
||||
Scenario: 查看成员设置
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我点击某个成员
|
||||
Then 应该打开成员设置页面
|
||||
And 我应该看到成员的详细配置
|
||||
|
||||
# ============================================
|
||||
# 主持人功能
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-007 @P1
|
||||
Scenario: 启用团队主持人
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 主持人功能未启用
|
||||
When 我在团队设置中启用主持人
|
||||
Then 主持人应该被激活
|
||||
And 我应该看到主持人标识
|
||||
|
||||
@CHAT-GROUP-008 @P1
|
||||
Scenario: 主持人开始群聊
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 主持人功能已启用
|
||||
When 我点击开始群聊按钮
|
||||
Then 主持人应该开始思考
|
||||
And 应该显示"主持人正在思考中..."
|
||||
And 主持人应该协调成员回复
|
||||
|
||||
@CHAT-GROUP-009 @P1
|
||||
Scenario: 停止主持人思考
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 主持人正在思考
|
||||
When 我点击停止思考按钮
|
||||
Then 主持人应该停止思考
|
||||
And 思考状态应该消失
|
||||
|
||||
@CHAT-GROUP-010 @P1
|
||||
Scenario: 禁用团队主持人
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 主持人功能已启用
|
||||
When 我在团队设置中禁用主持人
|
||||
Then 主持人应该被禁用
|
||||
And 应该显示手动提及模式提示
|
||||
|
||||
# ============================================
|
||||
# 群组消息
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-011 @P1
|
||||
Scenario: 在群组中发送消息
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我发送消息 "大家好"
|
||||
Then 消息应该发送成功
|
||||
And 应该显示在聊天记录中
|
||||
|
||||
@CHAT-GROUP-012 @P1
|
||||
Scenario: 提及特定成员
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 团队中有多个成员
|
||||
When 我在输入框中输入 "@" 并选择某个成员
|
||||
And 我输入消息内容
|
||||
And 我发送消息
|
||||
Then 被提及的成员应该回复
|
||||
And 消息应该显示提及标记
|
||||
|
||||
@CHAT-GROUP-013 @P1
|
||||
Scenario: 查看所有成员
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我点击成员标签
|
||||
Then 应该显示所有团队成员
|
||||
And 应该显示成员数量
|
||||
And 应该显示主持人标识
|
||||
|
||||
# ============================================
|
||||
# 私信功能
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-014 @P1
|
||||
Scenario: 发送私信给成员
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 团队中有多个成员
|
||||
When 我点击某个成员的私信按钮
|
||||
And 我输入私信内容
|
||||
And 我发送消息
|
||||
Then 私信应该发送成功
|
||||
And 应该显示"仅该成员可见"标记
|
||||
|
||||
@CHAT-GROUP-015 @P1
|
||||
Scenario: 查看私信内容
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 存在私信消息
|
||||
And 显示私信内容已开启
|
||||
Then 我应该能看到私信内容
|
||||
And 应该显示私信标记
|
||||
|
||||
@CHAT-GROUP-016 @P1
|
||||
Scenario: 隐藏私信内容
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
And 存在私信消息
|
||||
And 显示私信内容已关闭
|
||||
Then 私信内容应该被隐藏
|
||||
And 应该显示隐藏提示
|
||||
|
||||
# ============================================
|
||||
# 团队配置
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-017 @P1
|
||||
Scenario: 编辑团队描述
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我打开团队设置
|
||||
And 我编辑团队描述
|
||||
And 我保存更改
|
||||
Then 团队描述应该更新成功
|
||||
|
||||
@CHAT-GROUP-018 @P1
|
||||
Scenario: 查看团队设定
|
||||
Given 我访问一个 Agent 团队的聊天 "/chat"
|
||||
When 我点击设定标签
|
||||
Then 应该显示团队的系统提示词
|
||||
And 应该显示团队配置选项
|
||||
|
||||
# ============================================
|
||||
# 删除团队
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-019 @P1
|
||||
Scenario: 删除 Agent 团队
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个 Agent 团队
|
||||
When 我右键点击该团队
|
||||
And 我选择删除选项
|
||||
And 我确认删除
|
||||
Then 团队应该被删除
|
||||
And 团队成员不应该受影响
|
||||
And 应该显示删除成功提示
|
||||
|
||||
# ============================================
|
||||
# 群组欢迎信息
|
||||
# ============================================
|
||||
|
||||
@CHAT-GROUP-020 @P1
|
||||
Scenario: 查看群组欢迎信息
|
||||
Given 我访问一个空的 Agent 团队的聊天 "/chat"
|
||||
Then 应该显示群组欢迎信息
|
||||
And 应该显示使用建议
|
||||
And 应该显示添加成员按钮
|
||||
@@ -0,0 +1,203 @@
|
||||
@chat @knowledge
|
||||
Feature: 知识库功能
|
||||
测试知识库和文件关联功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 知识库面板
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-001 @P1
|
||||
Scenario: 打开知识库面板
|
||||
Given 我访问 "/chat"
|
||||
When 我点击知识库按钮
|
||||
Then 应该打开知识库面板
|
||||
And 我应该看到文件/知识库选项
|
||||
|
||||
@CHAT-KB-002 @P1
|
||||
Scenario: 查看知识库列表
|
||||
Given 我访问 "/chat"
|
||||
And 我已经打开知识库面板
|
||||
Then 我应该看到所有知识库
|
||||
And 我应该看到所有文件
|
||||
|
||||
# ============================================
|
||||
# 关联知识库
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-003 @P1
|
||||
Scenario: 关联知识库到会话
|
||||
Given 我访问 "/chat"
|
||||
When 我点击知识库按钮
|
||||
And 我选择一个知识库
|
||||
And 我点击添加按钮
|
||||
Then 知识库应该被关联
|
||||
And 我应该看到关联的知识库标记
|
||||
And 聊天应该能访问该知识库内容
|
||||
|
||||
@CHAT-KB-004 @P1
|
||||
Scenario: 关联多个知识库
|
||||
Given 我访问 "/chat"
|
||||
When 我选择多个知识库
|
||||
And 我点击添加按钮
|
||||
Then 所有知识库应该被关联
|
||||
And 我应该看到多个知识库标记
|
||||
|
||||
@CHAT-KB-005 @P1
|
||||
Scenario: 移除知识库关联
|
||||
Given 我访问 "/chat"
|
||||
And 已经关联了一个知识库
|
||||
When 我点击知识库标记的删除按钮
|
||||
And 我确认移除
|
||||
Then 知识库关联应该被移除
|
||||
And 知识库标记应该消失
|
||||
|
||||
# ============================================
|
||||
# 关联文件
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-006 @P1
|
||||
Scenario: 关联文件到会话
|
||||
Given 我访问 "/chat"
|
||||
When 我点击知识库按钮
|
||||
And 我切换到所有文件标签
|
||||
And 我选择一个文件
|
||||
And 我点击添加按钮
|
||||
Then 文件应该被关联
|
||||
And 我应该看到关联的文件标记
|
||||
|
||||
@CHAT-KB-007 @P1
|
||||
Scenario: 关联多个文件
|
||||
Given 我访问 "/chat"
|
||||
When 我选择多个文件
|
||||
And 我点击添加按钮
|
||||
Then 所有文件应该被关联
|
||||
And 我应该看到多个文件标记
|
||||
|
||||
@CHAT-KB-008 @P1
|
||||
Scenario: 移除文件关联
|
||||
Given 我访问 "/chat"
|
||||
And 已经关联了一个文件
|
||||
When 我点击文件标记的删除按钮
|
||||
And 我确认移除
|
||||
Then 文件关联应该被移除
|
||||
And 文件标记应该消失
|
||||
|
||||
# ============================================
|
||||
# 文件上传
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-009 @P1
|
||||
Scenario: 上传文件到知识库
|
||||
Given 我访问 "/chat"
|
||||
When 我通过输入框上传一个文件
|
||||
Then 文件应该上传成功
|
||||
And 应该显示上传成功提示
|
||||
And 我应该看到"上传过的文件可以在「知识库」中查看"提示
|
||||
|
||||
@CHAT-KB-010 @P1
|
||||
Scenario: 查看上传文件的详情
|
||||
Given 我访问 "/chat"
|
||||
And 我已经上传了一个文件
|
||||
When 我点击文件详情按钮
|
||||
Then 应该显示文件详细信息
|
||||
And 我应该看到文件大小、类型等信息
|
||||
|
||||
# ============================================
|
||||
# 查看引用源
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-011 @P1
|
||||
Scenario: 查看 RAG 引用源
|
||||
Given 我访问 "/chat"
|
||||
And 已经关联了知识库
|
||||
And AI 回复使用了知识库内容
|
||||
When 我点击引用源按钮
|
||||
Then 应该显示引用的内容块
|
||||
And 我应该看到引用来源
|
||||
And 应该显示引用的具体文本
|
||||
|
||||
@CHAT-KB-012 @P1
|
||||
Scenario: 查看用户查询重写
|
||||
Given 我访问 "/chat"
|
||||
And 使用了 RAG 搜索
|
||||
When 我展开查询详情
|
||||
Then 我应该看到用户查询重写内容
|
||||
And 应该显示原始查询和优化后的查询
|
||||
|
||||
@CHAT-KB-013 @P1
|
||||
Scenario: 删除查询重写
|
||||
Given 我访问 "/chat"
|
||||
And 存在查询重写记录
|
||||
When 我点击删除 Query 重写按钮
|
||||
And 我确认删除
|
||||
Then 查询重写应该被删除
|
||||
|
||||
# ============================================
|
||||
# 知识库搜索
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-014 @P2
|
||||
Scenario: 搜索知识库
|
||||
Given 我访问 "/chat"
|
||||
And 知识库面板已打开
|
||||
When 我在搜索框中输入关键词
|
||||
Then 应该显示匹配的知识库
|
||||
And 应该显示匹配的文件
|
||||
|
||||
# ============================================
|
||||
# 查看更多
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-015 @P2
|
||||
Scenario: 查看更多知识库
|
||||
Given 我访问 "/chat"
|
||||
And 知识库面板已打开
|
||||
When 我点击查看更多按钮
|
||||
Then 应该跳转到知识库管理页面
|
||||
And 我应该看到所有知识库和文件
|
||||
|
||||
# ============================================
|
||||
# 知识库标记显示
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-016 @P1
|
||||
Scenario: 在聊天头部显示知识库标记
|
||||
Given 我访问 "/chat"
|
||||
And 已经关联了知识库
|
||||
Then 我应该在聊天头部看到知识库标记
|
||||
And 标记应该显示关联的知识库数量
|
||||
|
||||
@CHAT-KB-017 @P1
|
||||
Scenario: 点击知识库标记查看详情
|
||||
Given 我访问 "/chat"
|
||||
And 聊天头部显示知识库标记
|
||||
When 我点击知识库标记
|
||||
Then 应该显示关联的知识库列表
|
||||
And 我应该能查看详情或移除关联
|
||||
|
||||
# ============================================
|
||||
# 部署模式限制
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-018 @P2
|
||||
Scenario: 客户端模式下知识库不可用
|
||||
Given 我访问 "/chat"
|
||||
And 当前是客户端数据库模式
|
||||
When 我点击知识库按钮
|
||||
Then 应该显示不支持提示
|
||||
And 应该提示切换到服务端数据库部署
|
||||
|
||||
# ============================================
|
||||
# 关联文件/知识库显示
|
||||
# ============================================
|
||||
|
||||
@CHAT-KB-019 @P1
|
||||
Scenario: 查看关联的文件和知识库
|
||||
Given 我访问 "/chat"
|
||||
And 已经关联了文件和知识库
|
||||
When 我打开知识库面板
|
||||
Then 关联的项应该显示已添加标记
|
||||
And 我应该能区分已关联和未关联的项
|
||||
@@ -0,0 +1,180 @@
|
||||
@chat @message
|
||||
Feature: 消息交互
|
||||
测试聊天消息的发送、接收和各种操作功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 消息发送
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-001 @P0
|
||||
Scenario: 发送文本消息
|
||||
Given 我访问 "/chat"
|
||||
When 我在输入框中输入 "你好"
|
||||
And 我点击发送按钮
|
||||
Then 消息应该发送成功
|
||||
And 我应该在聊天列表中看到我的消息
|
||||
And AI 应该开始回复
|
||||
|
||||
@CHAT-MESSAGE-002 @P0
|
||||
Scenario: 使用快捷键发送消息
|
||||
Given 我访问 "/chat"
|
||||
When 我在输入框中输入 "测试消息"
|
||||
And 我按下 Enter 键
|
||||
Then 消息应该发送成功
|
||||
And 我应该看到消息已发送
|
||||
|
||||
@CHAT-MESSAGE-003 @P1
|
||||
Scenario: 多行消息输入
|
||||
Given 我访问 "/chat"
|
||||
When 我在输入框中输入 "第一行"
|
||||
And 我按下 Shift+Enter 换行
|
||||
And 我输入 "第二行"
|
||||
And 我点击发送按钮
|
||||
Then 消息应该包含两行内容
|
||||
|
||||
# ============================================
|
||||
# 接收消息
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-004 @P0
|
||||
Scenario: 接收 AI 回复
|
||||
Given 我访问 "/chat"
|
||||
And 我已经发送了一条消息
|
||||
Then 我应该看到 AI 正在思考的状态
|
||||
And 我应该看到 AI 的回复消息流式输出
|
||||
And 消息生成完成后应该显示完整内容
|
||||
|
||||
@CHAT-MESSAGE-005 @P1
|
||||
Scenario: 查看消息详情
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条 AI 回复消息
|
||||
When 我点击消息底部的详情按钮
|
||||
Then 应该展开消息详情
|
||||
And 我应该看到 Token 使用统计
|
||||
And 我应该看到生成速度信息
|
||||
|
||||
# ============================================
|
||||
# 停止生成
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-006 @P1
|
||||
Scenario: 停止消息生成
|
||||
Given 我访问 "/chat"
|
||||
And AI 正在生成回复
|
||||
When 我点击停止按钮
|
||||
Then AI 应该停止生成
|
||||
And 应该显示已生成的部分内容
|
||||
And 发送按钮应该恢复可用状态
|
||||
|
||||
# ============================================
|
||||
# 重新生成
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-007 @P1
|
||||
Scenario: 重新生成 AI 回复
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条 AI 回复消息
|
||||
When 我悬停在消息上
|
||||
And 我点击重新生成按钮
|
||||
Then AI 应该重新生成回复
|
||||
And 旧的回复应该被替换
|
||||
|
||||
@CHAT-MESSAGE-008 @P1
|
||||
Scenario: 删除并重新生成
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条 AI 回复消息
|
||||
When 我悬停在消息上
|
||||
And 我点击删除并重新生成按钮
|
||||
Then 该消息应该被删除
|
||||
And AI 应该重新生成回复
|
||||
|
||||
# ============================================
|
||||
# 编辑消息
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-009 @P1
|
||||
Scenario: 编辑用户消息
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条我发送的消息
|
||||
When 我悬停在消息上
|
||||
And 我点击编辑按钮
|
||||
And 我修改消息内容
|
||||
And 我保存编辑
|
||||
Then 消息内容应该更新
|
||||
And AI 应该根据新内容重新回复
|
||||
|
||||
# ============================================
|
||||
# 删除消息
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-010 @P1
|
||||
Scenario: 删除单条消息
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条消息
|
||||
When 我悬停在消息上
|
||||
And 我点击删除按钮
|
||||
And 我确认删除
|
||||
Then 该消息应该被删除
|
||||
And 消息列表中不应该再显示该消息
|
||||
|
||||
@CHAT-MESSAGE-011 @P1
|
||||
Scenario: 无法删除有子话题的消息
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条有子话题的消息
|
||||
When 我悬停在消息上
|
||||
Then 删除按钮应该被禁用
|
||||
And 应该显示禁用原因提示
|
||||
|
||||
# ============================================
|
||||
# 复制消息
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-012 @P1
|
||||
Scenario: 复制消息内容
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条消息
|
||||
When 我悬停在消息上
|
||||
And 我点击复制按钮
|
||||
Then 消息内容应该被复制到剪贴板
|
||||
And 应该显示复制成功提示
|
||||
|
||||
# ============================================
|
||||
# 清空消息
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-013 @P1
|
||||
Scenario: 清空当前会话消息
|
||||
Given 我访问 "/chat"
|
||||
And 当前会话存在多条消息
|
||||
When 我点击清空消息按钮
|
||||
And 我确认清空
|
||||
Then 所有消息应该被删除
|
||||
And 应该显示清空成功提示
|
||||
|
||||
# ============================================
|
||||
# 消息跳转
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-014 @P2
|
||||
Scenario: 跳转到最新消息
|
||||
Given 我访问 "/chat"
|
||||
And 消息列表很长
|
||||
And 我滚动到历史消息位置
|
||||
When 我点击跳转到当前按钮
|
||||
Then 页面应该滚动到最新消息
|
||||
And 最新消息应该可见
|
||||
|
||||
# ============================================
|
||||
# 消息小地图导航
|
||||
# ============================================
|
||||
|
||||
@CHAT-MESSAGE-015 @P2
|
||||
Scenario: 使用消息小地图导航
|
||||
Given 我访问 "/chat"
|
||||
And 存在多条消息
|
||||
When 我点击小地图上的某个消息点
|
||||
Then 页面应该跳转到对应的消息
|
||||
And 该消息应该高亮显示
|
||||
@@ -0,0 +1,232 @@
|
||||
@chat @model
|
||||
Feature: 模型设置
|
||||
测试聊天模型选择和相关参数配置功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 模型选择
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-001 @P1
|
||||
Scenario: 切换模型
|
||||
Given 我访问 "/chat"
|
||||
When 我点击模型选择按钮
|
||||
Then 应该显示可用的模型列表
|
||||
When 我选择另一个模型
|
||||
Then 模型应该切换成功
|
||||
And 应该显示当前选中的模型名称
|
||||
|
||||
@CHAT-MODEL-002 @P1
|
||||
Scenario: 查看模型详情
|
||||
Given 我访问 "/chat"
|
||||
When 我点击模型选择按钮
|
||||
And 我悬停在某个模型上
|
||||
Then 应该显示模型详细信息
|
||||
And 我应该看到模型参数
|
||||
And 我应该看到定价信息
|
||||
|
||||
@CHAT-MODEL-003 @P1
|
||||
Scenario: 搜索模型
|
||||
Given 我访问 "/chat"
|
||||
And 模型选择面板已打开
|
||||
When 我在搜索框中输入模型名称
|
||||
Then 应该显示匹配的模型
|
||||
And 不匹配的模型应该被隐藏
|
||||
|
||||
# ============================================
|
||||
# 模型扩展功能
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-004 @P1
|
||||
Scenario: 开启上下文缓存
|
||||
Given 我访问 "/chat"
|
||||
And 当前模型支持上下文缓存
|
||||
When 我点击模型设置
|
||||
And 我开启上下文缓存开关
|
||||
Then 上下文缓存应该被启用
|
||||
And 应该显示功能说明
|
||||
And 历史消息数限制应该自动禁用
|
||||
|
||||
@CHAT-MODEL-005 @P1
|
||||
Scenario: 关闭上下文缓存
|
||||
Given 我访问 "/chat"
|
||||
And 上下文缓存已开启
|
||||
When 我关闭上下文缓存开关
|
||||
Then 上下文缓存应该被禁用
|
||||
|
||||
@CHAT-MODEL-006 @P1
|
||||
Scenario: 开启深度思考
|
||||
Given 我访问 "/chat"
|
||||
And 当前模型支持深度思考
|
||||
When 我点击模型设置
|
||||
And 我开启深度思考开关
|
||||
Then 深度思考应该被启用
|
||||
And 应该显示思考相关配置
|
||||
And 历史消息数限制应该自动禁用
|
||||
|
||||
@CHAT-MODEL-007 @P1
|
||||
Scenario: 关闭深度思考
|
||||
Given 我访问 "/chat"
|
||||
And 深度思考已开启
|
||||
When 我关闭深度思考开关
|
||||
Then 深度思考应该被禁用
|
||||
|
||||
# ============================================
|
||||
# 深度思考参数
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-008 @P1
|
||||
Scenario: 调整推理强度
|
||||
Given 我访问 "/chat"
|
||||
And 深度思考已开启
|
||||
And 当前模型支持推理强度
|
||||
When 我调整推理强度滑块
|
||||
Then 推理强度值应该更新
|
||||
And 应该保存设置
|
||||
|
||||
@CHAT-MODEL-009 @P1
|
||||
Scenario: 调整思考消耗 Token
|
||||
Given 我访问 "/chat"
|
||||
And 深度思考已开启
|
||||
And 当前模型支持思考 Token 设置
|
||||
When 我调整思考消耗 Token 滑块
|
||||
Then Token 值应该更新
|
||||
And 应该保存设置
|
||||
|
||||
@CHAT-MODEL-010 @P1
|
||||
Scenario: 调整输出文本详细程度
|
||||
Given 我访问 "/chat"
|
||||
And 当前模型支持文本详细程度设置
|
||||
When 我调整文本详细程度滑块
|
||||
Then 详细程度值应该更新
|
||||
And 应该保存设置
|
||||
|
||||
@CHAT-MODEL-011 @P1
|
||||
Scenario: 调整思考预算
|
||||
Given 我访问 "/chat"
|
||||
And 当前模型支持思考预算
|
||||
When 我调整思考预算滑块
|
||||
Then 预算值应该更新
|
||||
And 应该保存设置
|
||||
|
||||
# ============================================
|
||||
# 历史消息设置
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-012 @P1
|
||||
Scenario: 设置历史消息数限制
|
||||
Given 我访问 "/chat"
|
||||
When 我点击历史消息设置
|
||||
And 我设置限制为 10 条
|
||||
Then 设置应该保存成功
|
||||
And 应该显示"助手将只记住最后10条消息"
|
||||
|
||||
@CHAT-MODEL-013 @P1
|
||||
Scenario: 移除历史消息数限制
|
||||
Given 我访问 "/chat"
|
||||
And 已经设置了历史消息数限制
|
||||
When 我清空历史消息数设置
|
||||
Then 限制应该被移除
|
||||
And 助手应该记住所有消息
|
||||
|
||||
@CHAT-MODEL-014 @P1
|
||||
Scenario: 查看历史范围设置
|
||||
Given 我访问 "/chat"
|
||||
When 我点击历史范围按钮
|
||||
Then 应该显示当前的历史消息设置
|
||||
And 我应该看到历史消息数或"无限制"
|
||||
|
||||
# ============================================
|
||||
# 网页链接提取
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-015 @P1
|
||||
Scenario: 开启提取网页链接内容
|
||||
Given 我访问 "/chat"
|
||||
When 我点击模型设置
|
||||
And 我开启提取网页链接内容开关
|
||||
Then 功能应该被启用
|
||||
And 应该显示功能说明
|
||||
|
||||
@CHAT-MODEL-016 @P1
|
||||
Scenario: 关闭提取网页链接内容
|
||||
Given 我访问 "/chat"
|
||||
And 提取网页链接内容已开启
|
||||
When 我关闭提取网页链接内容开关
|
||||
Then 功能应该被禁用
|
||||
|
||||
# ============================================
|
||||
# 模型参数调整
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-017 @P1
|
||||
Scenario: 打开模型参数面板
|
||||
Given 我访问 "/chat"
|
||||
When 我点击参数按钮
|
||||
Then 应该打开参数配置面板
|
||||
And 我应该看到温度、Top P 等参数
|
||||
|
||||
@CHAT-MODEL-018 @P1
|
||||
Scenario: 调整温度参数
|
||||
Given 我访问 "/chat"
|
||||
And 参数面板已打开
|
||||
When 我调整温度滑块
|
||||
Then 温度值应该更新
|
||||
And 应该保存设置
|
||||
|
||||
@CHAT-MODEL-019 @P1
|
||||
Scenario: 调整 Top P 参数
|
||||
Given 我访问 "/chat"
|
||||
And 参数面板已打开
|
||||
When 我调整 Top P 滑块
|
||||
Then Top P 值应该更新
|
||||
And 应该保存设置
|
||||
|
||||
@CHAT-MODEL-020 @P1
|
||||
Scenario: 调整最大 Token 数
|
||||
Given 我访问 "/chat"
|
||||
And 参数面板已打开
|
||||
When 我设置最大 Token 数
|
||||
Then Token 数应该更新
|
||||
And 应该保存设置
|
||||
|
||||
@CHAT-MODEL-021 @P1
|
||||
Scenario: 重置参数为默认值
|
||||
Given 我访问 "/chat"
|
||||
And 参数面板已打开
|
||||
And 我已经修改了参数
|
||||
When 我点击重置按钮
|
||||
Then 所有参数应该恢复默认值
|
||||
|
||||
# ============================================
|
||||
# 模型定价信息
|
||||
# ============================================
|
||||
|
||||
@CHAT-MODEL-022 @P2
|
||||
Scenario: 查看模型定价
|
||||
Given 我访问 "/chat"
|
||||
When 我查看模型卡片
|
||||
Then 我应该看到定价信息
|
||||
And 应该显示输入和输出 Token 价格
|
||||
And 应该显示缓存价格(如果支持)
|
||||
|
||||
@CHAT-MODEL-023 @P2
|
||||
Scenario: 查看消息 Token 详情
|
||||
Given 我访问 "/chat"
|
||||
And 存在 AI 回复消息
|
||||
When 我点击消息的 Token 详情
|
||||
Then 应该显示详细的 Token 使用情况
|
||||
And 应该显示输入、输出、缓存 Token 数量
|
||||
And 应该显示总计消耗
|
||||
And 应该显示平均单价
|
||||
|
||||
@CHAT-MODEL-024 @P2
|
||||
Scenario: 查看生成速度信息
|
||||
Given 我访问 "/chat"
|
||||
And 存在 AI 回复消息
|
||||
When 我查看消息详情
|
||||
Then 我应该看到 TPS(Tokens Per Second)
|
||||
And 我应该看到 TTFT(Time To First Token)
|
||||
And 应该显示速度提示信息
|
||||
@@ -0,0 +1,158 @@
|
||||
@chat @session
|
||||
Feature: 会话管理
|
||||
测试聊天会话的创建、编辑、删除等管理功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 创建会话
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-001 @P1
|
||||
Scenario: 创建新的助手会话
|
||||
Given 我访问 "/chat"
|
||||
When 我点击新建会话按钮
|
||||
Then 应该创建一个新会话
|
||||
And 我应该看到新会话的聊天界面
|
||||
And URL 应该包含新的会话 ID
|
||||
|
||||
@CHAT-SESSION-002 @P1
|
||||
Scenario: 创建 Agent 团队
|
||||
Given 我访问 "/chat"
|
||||
When 我点击新建 Agent 团队按钮
|
||||
Then 应该打开创建团队的对话框
|
||||
And 我应该看到团队成员选择界面
|
||||
|
||||
# ============================================
|
||||
# 会话切换
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-003 @P1
|
||||
Scenario: 在会话之间切换
|
||||
Given 我访问 "/chat"
|
||||
And 存在多个会话
|
||||
When 我点击另一个会话
|
||||
Then 应该切换到该会话
|
||||
And 应该显示该会话的聊天记录
|
||||
And URL 应该更新为新的会话 ID
|
||||
|
||||
# ============================================
|
||||
# 会话编辑
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-004 @P1
|
||||
Scenario: 重命名会话
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个会话
|
||||
When 我右键点击会话项
|
||||
And 我选择重命名选项
|
||||
And 我输入新的会话名称
|
||||
And 我确认重命名
|
||||
Then 会话名称应该更新
|
||||
|
||||
@CHAT-SESSION-005 @P1
|
||||
Scenario: 复制会话
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个会话
|
||||
When 我右键点击会话项
|
||||
And 我选择复制选项
|
||||
Then 应该创建一个会话副本
|
||||
And 新会话名称应该包含"副本"
|
||||
|
||||
# ============================================
|
||||
# 会话删除
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-006 @P1
|
||||
Scenario: 删除会话
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个会话
|
||||
When 我右键点击会话项
|
||||
And 我选择删除选项
|
||||
And 我确认删除
|
||||
Then 该会话应该被删除
|
||||
And 会话列表中不应该再显示该会话
|
||||
|
||||
# ============================================
|
||||
# 会话置顶
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-007 @P1
|
||||
Scenario: 置顶会话
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个会话
|
||||
When 我右键点击会话项
|
||||
And 我选择置顶选项
|
||||
Then 该会话应该被置顶
|
||||
And 会话应该显示在列表顶部
|
||||
|
||||
@CHAT-SESSION-008 @P1
|
||||
Scenario: 取消置顶会话
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个已置顶的会话
|
||||
When 我右键点击该会话项
|
||||
And 我选择取消置顶选项
|
||||
Then 该会话应该取消置顶
|
||||
And 会话应该回到正常位置
|
||||
|
||||
# ============================================
|
||||
# 会话分组
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-009 @P1
|
||||
Scenario: 创建会话分组
|
||||
Given 我访问 "/chat"
|
||||
When 我点击创建分组按钮
|
||||
And 我输入分组名称
|
||||
And 我确认创建
|
||||
Then 应该创建新的分组
|
||||
And 我应该在会话列表中看到新分组
|
||||
|
||||
@CHAT-SESSION-010 @P1
|
||||
Scenario: 将会话添加到分组
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个会话和一个分组
|
||||
When 我拖拽会话到分组中
|
||||
Then 会话应该被添加到该分组
|
||||
And 会话应该显示在分组下
|
||||
|
||||
@CHAT-SESSION-011 @P1
|
||||
Scenario: 删除分组
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个分组
|
||||
When 我右键点击分组
|
||||
And 我选择删除分组选项
|
||||
And 我确认删除
|
||||
Then 该分组应该被删除
|
||||
And 分组中的会话应该移到默认列表
|
||||
|
||||
# ============================================
|
||||
# 会话搜索
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-012 @P1
|
||||
Scenario: 搜索会话
|
||||
Given 我访问 "/chat"
|
||||
And 存在多个会话
|
||||
When 我在搜索框中输入关键词
|
||||
Then 应该显示匹配的会话
|
||||
And 不匹配的会话应该被隐藏
|
||||
|
||||
@CHAT-SESSION-013 @P1
|
||||
Scenario: 清空搜索
|
||||
Given 我访问 "/chat"
|
||||
And 我已经搜索了会话
|
||||
When 我清空搜索框
|
||||
Then 应该显示所有会话
|
||||
|
||||
# ============================================
|
||||
# 收件箱
|
||||
# ============================================
|
||||
|
||||
@CHAT-SESSION-014 @P1
|
||||
Scenario: 访问收件箱
|
||||
Given 我访问 "/chat"
|
||||
When 我点击收件箱入口
|
||||
Then 应该切换到收件箱会话
|
||||
And 我应该看到收件箱的欢迎信息
|
||||
@@ -0,0 +1,33 @@
|
||||
@chat @smoke
|
||||
Feature: 聊天页面冒烟测试
|
||||
确保聊天模块的关键路径功能正常
|
||||
|
||||
@CHAT-SMOKE-001 @P0
|
||||
Scenario: 加载聊天主页
|
||||
Given 我访问 "/chat"
|
||||
Then 页面应该正常加载
|
||||
And 我应该看到页面主体
|
||||
And 我应该看到会话列表面板
|
||||
And 我应该看到聊天输入框
|
||||
|
||||
@CHAT-SMOKE-002 @P0
|
||||
Scenario: 加载默认会话
|
||||
Given 我访问 "/chat"
|
||||
When 页面完全加载
|
||||
Then 我应该看到默认会话
|
||||
And 我应该看到欢迎消息
|
||||
|
||||
@CHAT-SMOKE-003 @P0
|
||||
Scenario: 会话列表显示
|
||||
Given 我访问 "/chat"
|
||||
Then 我应该看到会话列表
|
||||
And 我应该看到新建会话按钮
|
||||
And 我应该看到收件箱入口
|
||||
|
||||
@CHAT-SMOKE-004 @P0
|
||||
Scenario: 输入框功能可用
|
||||
Given 我访问 "/chat"
|
||||
When 页面完全加载
|
||||
Then 输入框应该可以点击
|
||||
And 我应该看到发送按钮
|
||||
And 我应该看到输入框操作栏
|
||||
@@ -0,0 +1,217 @@
|
||||
@chat @topic
|
||||
Feature: 话题和子话题
|
||||
测试聊天话题(Topic)和子话题(Thread)的管理功能
|
||||
|
||||
Background:
|
||||
Given 应用正在运行
|
||||
|
||||
# ============================================
|
||||
# 话题列表
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-001 @P1
|
||||
Scenario: 查看话题列表
|
||||
Given 我访问 "/chat"
|
||||
And 当前会话有多个话题
|
||||
Then 我应该看到话题面板
|
||||
And 话题列表应该显示所有话题
|
||||
And 应该显示话题标题
|
||||
|
||||
@CHAT-TOPIC-002 @P1
|
||||
Scenario: 切换到话题面板
|
||||
Given 我访问 "/chat"
|
||||
When 我点击话题面板切换按钮
|
||||
Then 话题面板应该展开
|
||||
And 我应该看到话题列表
|
||||
|
||||
# ============================================
|
||||
# 创建话题
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-003 @P1
|
||||
Scenario: 自动创建话题
|
||||
Given 我访问 "/chat"
|
||||
When 我发送第一条消息
|
||||
Then 应该自动创建一个话题
|
||||
And 话题应该有默认标题
|
||||
And 话题应该显示在话题列表中
|
||||
|
||||
@CHAT-TOPIC-004 @P1
|
||||
Scenario: 手动保存为话题
|
||||
Given 我访问 "/chat"
|
||||
And 当前会话有消息记录
|
||||
When 我点击保存话题按钮
|
||||
And 我输入话题名称 "重要讨论"
|
||||
And 我确认保存
|
||||
Then 话题应该保存成功
|
||||
And 话题名称应该是 "重要讨论"
|
||||
And 话题应该显示在话题列表中
|
||||
|
||||
# ============================================
|
||||
# 话题切换
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-005 @P1
|
||||
Scenario: 切换话题
|
||||
Given 我访问 "/chat"
|
||||
And 当前会话有多个话题
|
||||
When 我点击另一个话题
|
||||
Then 应该切换到该话题
|
||||
And 应该显示该话题的消息记录
|
||||
And URL 应该更新包含话题 ID
|
||||
|
||||
@CHAT-TOPIC-006 @P1
|
||||
Scenario: 返回主对话
|
||||
Given 我访问 "/chat"
|
||||
And 我正在查看某个话题
|
||||
When 我点击返回主对话按钮
|
||||
Then 应该返回到主对话区
|
||||
And 应该显示所有消息
|
||||
|
||||
# ============================================
|
||||
# 话题编辑
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-007 @P1
|
||||
Scenario: 重命名话题
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个话题
|
||||
When 我右键点击话题项
|
||||
And 我选择重命名选项
|
||||
And 我输入新的话题名称
|
||||
And 我确认重命名
|
||||
Then 话题名称应该更新
|
||||
|
||||
@CHAT-TOPIC-008 @P1
|
||||
Scenario: 编辑话题详情
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个话题
|
||||
When 我点击话题项进入话题
|
||||
And 我点击编辑按钮
|
||||
Then 应该打开话题编辑界面
|
||||
And 我应该能修改话题信息
|
||||
|
||||
# ============================================
|
||||
# 话题删除
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-009 @P1
|
||||
Scenario: 删除话题
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个话题
|
||||
When 我右键点击话题项
|
||||
And 我选择删除选项
|
||||
And 我确认删除
|
||||
Then 话题应该被删除
|
||||
And 话题列表中不应该再显示该话题
|
||||
And 话题相关的消息应该被删除
|
||||
|
||||
# ============================================
|
||||
# 子话题 (Thread)
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-010 @P1
|
||||
Scenario: 从消息创建子话题
|
||||
Given 我访问 "/chat"
|
||||
And 存在一条消息
|
||||
When 我悬停在消息上
|
||||
And 我点击创建子话题按钮
|
||||
Then 应该创建一个子话题
|
||||
And 应该打开子话题面板
|
||||
And 子话题应该关联到该消息
|
||||
|
||||
@CHAT-TOPIC-011 @P1
|
||||
Scenario: 查看子话题列表
|
||||
Given 我访问 "/chat"
|
||||
And 某条消息有多个子话题
|
||||
When 我点击该消息的子话题按钮
|
||||
Then 应该显示子话题列表
|
||||
And 我应该看到所有子话题
|
||||
|
||||
@CHAT-TOPIC-012 @P1
|
||||
Scenario: 在子话题中对话
|
||||
Given 我访问 "/chat"
|
||||
And 我已经打开一个子话题
|
||||
When 我在子话题输入框中输入消息
|
||||
And 我发送消息
|
||||
Then 消息应该只显示在子话题中
|
||||
And 不应该影响主对话
|
||||
|
||||
@CHAT-TOPIC-013 @P1
|
||||
Scenario: 切换子话题
|
||||
Given 我访问 "/chat"
|
||||
And 某条消息有多个子话题
|
||||
And 我正在查看其中一个子话题
|
||||
When 我选择另一个子话题
|
||||
Then 应该切换到该子话题
|
||||
And 应该显示该子话题的消息
|
||||
|
||||
@CHAT-TOPIC-014 @P1
|
||||
Scenario: 关闭子话题面板
|
||||
Given 我访问 "/chat"
|
||||
And 子话题面板已打开
|
||||
When 我点击关闭子话题按钮
|
||||
Then 子话题面板应该关闭
|
||||
And 应该返回到主对话视图
|
||||
|
||||
@CHAT-TOPIC-015 @P1
|
||||
Scenario: 删除子话题
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个子话题
|
||||
When 我在子话题中点击删除按钮
|
||||
And 我确认删除
|
||||
Then 子话题应该被删除
|
||||
And 子话题的消息应该被删除
|
||||
|
||||
# ============================================
|
||||
# 子话题限制
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-016 @P1
|
||||
Scenario: 子话题中无法查看 Artifact
|
||||
Given 我访问 "/chat"
|
||||
And 我在子话题中
|
||||
And 主对话中有 Artifact
|
||||
Then 应该显示"子话题中无法查看"提示
|
||||
And 应该提示切换到主对话区
|
||||
|
||||
# ============================================
|
||||
# 话题显示
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-017 @P1
|
||||
Scenario: 查看话题消息统计
|
||||
Given 我访问 "/chat"
|
||||
And 存在一个话题
|
||||
Then 我应该看到该话题的消息数量
|
||||
And 应该显示最后更新时间
|
||||
|
||||
@CHAT-TOPIC-018 @P1
|
||||
Scenario: 话题骨架屏加载
|
||||
Given 我访问 "/chat"
|
||||
When 话题列表正在加载
|
||||
Then 应该显示话题骨架屏
|
||||
And 骨架屏应该模拟话题列表布局
|
||||
|
||||
# ============================================
|
||||
# 话题搜索
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-019 @P2
|
||||
Scenario: 搜索话题
|
||||
Given 我访问 "/chat"
|
||||
And 存在多个话题
|
||||
When 我在话题搜索框中输入关键词
|
||||
Then 应该显示匹配的话题
|
||||
And 不匹配的话题应该被隐藏
|
||||
|
||||
# ============================================
|
||||
# 移动端话题
|
||||
# ============================================
|
||||
|
||||
@CHAT-TOPIC-020 @P2
|
||||
Scenario: 移动端打开话题模态框
|
||||
Given 我在移动端访问 "/chat"
|
||||
When 我点击话题按钮
|
||||
Then 应该打开话题模态框
|
||||
And 我应该看到话题列表
|
||||
@@ -0,0 +1,90 @@
|
||||
import { Given, Then, When } from '@cucumber/cucumber';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
import { CustomWorld } from '../../support/world';
|
||||
|
||||
// ============================================
|
||||
// Given Steps (前置条件)
|
||||
// ============================================
|
||||
|
||||
Given('我访问 {string}', async function (this: CustomWorld, path: string) {
|
||||
const response = await this.page.goto(path, { waitUntil: 'commit' });
|
||||
this.testContext.lastResponse = response;
|
||||
await this.page.waitForLoadState('domcontentloaded');
|
||||
});
|
||||
|
||||
Given('应用正在运行', async function (this: CustomWorld) {
|
||||
// This is a placeholder step that can be used for setup
|
||||
// The actual app is already running via the test framework
|
||||
});
|
||||
|
||||
Given('页面完全加载', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
await this.page.waitForTimeout(500);
|
||||
});
|
||||
|
||||
Given('存在多个会话', async function (this: CustomWorld) {
|
||||
// This assumes sessions already exist in the test environment
|
||||
// TODO: Create sessions programmatically if needed
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
});
|
||||
|
||||
Given('存在一个会话', async function (this: CustomWorld) {
|
||||
// This assumes at least one session exists
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// When Steps (操作)
|
||||
// ============================================
|
||||
|
||||
When('我点击 {string}', async function (this: CustomWorld, elementText: string) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
const element = this.page.getByText(elementText).first();
|
||||
await element.waitFor({ state: 'visible', timeout: 120_000 });
|
||||
await element.click();
|
||||
});
|
||||
|
||||
When('我等待 {int} 毫秒', async function (this: CustomWorld, ms: number) {
|
||||
await this.page.waitForTimeout(ms);
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// Then Steps (断言)
|
||||
// ============================================
|
||||
|
||||
Then('页面应该正常加载', async function (this: CustomWorld) {
|
||||
// 检查没有 JavaScript 错误
|
||||
expect(this.testContext.jsErrors).toHaveLength(0);
|
||||
|
||||
// 检查页面没有跳转到错误页面
|
||||
const url = this.page.url();
|
||||
expect(url).not.toMatch(/\/404|\/error|not-found/i);
|
||||
|
||||
// 检查页面标题不包含错误
|
||||
const title = await this.page.title();
|
||||
expect(title).not.toMatch(/not found|error/i);
|
||||
});
|
||||
|
||||
Then('我应该看到页面主体', async function (this: CustomWorld) {
|
||||
const body = this.page.locator('body');
|
||||
await expect(body).toBeVisible();
|
||||
});
|
||||
|
||||
Then('URL 应该包含 {string}', async function (this: CustomWorld, urlPart: string) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
const url = this.page.url();
|
||||
expect(url).toContain(urlPart);
|
||||
});
|
||||
|
||||
Then('应该显示 {string}', async function (this: CustomWorld, text: string) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
const element = this.page.getByText(text);
|
||||
await expect(element.first()).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到 {string}', async function (this: CustomWorld, text: string) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
const element = this.page.getByText(text);
|
||||
await expect(element.first()).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
@@ -0,0 +1,313 @@
|
||||
import { Given, Then, When } from '@cucumber/cucumber';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
import { CustomWorld } from '../../support/world';
|
||||
|
||||
// ============================================
|
||||
// Given Steps (前置条件)
|
||||
// ============================================
|
||||
|
||||
Given('我已经发送了一条消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 输入并发送消息
|
||||
const chatInput = this.page.locator('textarea, [contenteditable="true"]').first();
|
||||
await chatInput.fill('测试消息');
|
||||
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i]')
|
||||
.first();
|
||||
await sendButton.click();
|
||||
|
||||
// 等待消息发送
|
||||
await this.page.waitForTimeout(1000);
|
||||
});
|
||||
|
||||
Given('存在一条 AI 回复消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找 AI 消息
|
||||
const aiMessage = this.page.locator('[data-testid*="message"], [data-role="assistant"]').first();
|
||||
await expect(aiMessage).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Given('AI 正在生成回复', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找生成中的状态指示器
|
||||
const generatingIndicator = this.page
|
||||
.locator('[data-testid="generating"], [class*="loading" i], [class*="thinking" i]')
|
||||
.first();
|
||||
|
||||
const isGenerating = await generatingIndicator.isVisible().catch(() => false);
|
||||
|
||||
if (!isGenerating) {
|
||||
// 如果没有找到指示器,发送一条新消息触发生成
|
||||
const chatInput = this.page.locator('textarea, [contenteditable="true"]').first();
|
||||
await chatInput.fill('请回答这个问题');
|
||||
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i]')
|
||||
.first();
|
||||
await sendButton.click();
|
||||
|
||||
// 等待开始生成
|
||||
await this.page.waitForTimeout(500);
|
||||
}
|
||||
});
|
||||
|
||||
Given('存在一条我发送的消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找用户消息
|
||||
const userMessage = this.page
|
||||
.locator('[data-testid*="user-message"], [data-role="user"]')
|
||||
.first();
|
||||
|
||||
const exists = await userMessage.isVisible().catch(() => false);
|
||||
|
||||
if (!exists) {
|
||||
// 如果不存在,发送一条
|
||||
const chatInput = this.page.locator('textarea, [contenteditable="true"]').first();
|
||||
await chatInput.fill('测试用户消息');
|
||||
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i]')
|
||||
.first();
|
||||
await sendButton.click();
|
||||
|
||||
await this.page.waitForTimeout(1000);
|
||||
}
|
||||
});
|
||||
|
||||
Given('存在一条消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const message = this.page.locator('[data-testid*="message"]').first();
|
||||
const exists = await message.isVisible().catch(() => false);
|
||||
|
||||
if (!exists) {
|
||||
// 创建一条消息
|
||||
const chatInput = this.page.locator('textarea, [contenteditable="true"]').first();
|
||||
await chatInput.fill('测试消息');
|
||||
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i]')
|
||||
.first();
|
||||
await sendButton.click();
|
||||
|
||||
await this.page.waitForTimeout(1000);
|
||||
}
|
||||
});
|
||||
|
||||
Given('当前会话存在多条消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const messages = this.page.locator('[data-testid*="message"]');
|
||||
const count = await messages.count();
|
||||
|
||||
// 如果消息少于 3 条,创建更多
|
||||
if (count < 3) {
|
||||
for (let i = count; i < 3; i++) {
|
||||
const chatInput = this.page.locator('textarea, [contenteditable="true"]').first();
|
||||
await chatInput.fill(`测试消息 ${i + 1}`);
|
||||
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i]')
|
||||
.first();
|
||||
await sendButton.click();
|
||||
|
||||
await this.page.waitForTimeout(1000);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// When Steps (操作)
|
||||
// ============================================
|
||||
|
||||
When('我在输入框中输入 {string}', async function (this: CustomWorld, text: string) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const chatInput = this.page.locator('textarea, [contenteditable="true"]').first();
|
||||
await chatInput.waitFor({ state: 'visible', timeout: 120_000 });
|
||||
await chatInput.fill(text);
|
||||
|
||||
this.testContext.inputText = text;
|
||||
});
|
||||
|
||||
When('我点击发送按钮', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i], button:has-text("发送")')
|
||||
.first();
|
||||
|
||||
await sendButton.waitFor({ state: 'visible', timeout: 120_000 });
|
||||
await sendButton.click();
|
||||
});
|
||||
|
||||
When('我按下 Enter 键', async function (this: CustomWorld) {
|
||||
await this.page.keyboard.press('Enter');
|
||||
});
|
||||
|
||||
When('我按下 Shift+Enter 换行', async function (this: CustomWorld) {
|
||||
await this.page.keyboard.press('Shift+Enter');
|
||||
});
|
||||
|
||||
When('我输入 {string}', async function (this: CustomWorld, text: string) {
|
||||
await this.page.keyboard.type(text);
|
||||
});
|
||||
|
||||
When('我点击停止按钮', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const stopButton = this.page
|
||||
.locator('[data-testid="stop-button"], button[aria-label*="停止" i], button:has-text("停止")')
|
||||
.first();
|
||||
|
||||
await stopButton.waitFor({ state: 'visible', timeout: 120_000 });
|
||||
await stopButton.click();
|
||||
});
|
||||
|
||||
When('我悬停在消息上', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const message = this.page.locator('[data-testid*="message"]').first();
|
||||
await message.hover();
|
||||
|
||||
// 等待悬停菜单出现
|
||||
await this.page.waitForTimeout(300);
|
||||
});
|
||||
|
||||
When('我点击重新生成按钮', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const regenerateButton = this.page
|
||||
.locator('[data-testid="regenerate-button"], button[aria-label*="重新生成" i]')
|
||||
.first();
|
||||
|
||||
await regenerateButton.waitFor({ state: 'visible', timeout: 120_000 });
|
||||
await regenerateButton.click();
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// Then Steps (断言)
|
||||
// ============================================
|
||||
|
||||
Then('消息应该发送成功', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找用户消息
|
||||
const userMessage = this.page.locator('[data-testid*="user-message"], [data-role="user"]').last();
|
||||
await expect(userMessage).toBeVisible({ timeout: 120_000 });
|
||||
|
||||
// 验证消息内容
|
||||
if (this.testContext.inputText) {
|
||||
const messageText = await userMessage.textContent();
|
||||
expect(messageText).toContain(this.testContext.inputText);
|
||||
}
|
||||
});
|
||||
|
||||
Then('我应该在聊天列表中看到我的消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const userMessage = this.page.locator('[data-testid*="user-message"], [data-role="user"]').last();
|
||||
await expect(userMessage).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('AI 应该开始回复', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找 AI 回复或生成指示器
|
||||
const aiResponse = this.page
|
||||
.locator('[data-testid*="assistant-message"], [data-role="assistant"], [class*="generating" i]')
|
||||
.last();
|
||||
|
||||
await expect(aiResponse).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到消息已发送', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const message = this.page.locator('[data-testid*="message"]').last();
|
||||
await expect(message).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('消息应该包含两行内容', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const message = this.page.locator('[data-testid*="user-message"]').last();
|
||||
const messageText = await message.textContent();
|
||||
|
||||
// 验证包含换行或多行内容
|
||||
expect(messageText).toMatch(/第一行.*第二行/s);
|
||||
});
|
||||
|
||||
Then('我应该看到 AI 正在思考的状态', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const thinkingIndicator = this.page
|
||||
.locator('[data-testid="thinking"], [class*="thinking" i], [class*="loading" i]')
|
||||
.first();
|
||||
|
||||
const isVisible = await thinkingIndicator.isVisible().catch(() => false);
|
||||
|
||||
// 思考状态可能很快就消失,所以只检查一次
|
||||
expect(isVisible || true).toBeTruthy();
|
||||
});
|
||||
|
||||
Then('我应该看到 AI 的回复消息流式输出', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 等待 AI 回复出现
|
||||
const aiMessage = this.page
|
||||
.locator('[data-testid*="assistant-message"], [data-role="assistant"]')
|
||||
.last();
|
||||
|
||||
await expect(aiMessage).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('消息生成完成后应该显示完整内容', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const aiMessage = this.page
|
||||
.locator('[data-testid*="assistant-message"], [data-role="assistant"]')
|
||||
.last();
|
||||
|
||||
await expect(aiMessage).toBeVisible({ timeout: 120_000 });
|
||||
|
||||
// 验证消息有内容
|
||||
const messageText = await aiMessage.textContent();
|
||||
expect(messageText?.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
Then('AI 应该停止生成', async function (this: CustomWorld) {
|
||||
await this.page.waitForTimeout(500);
|
||||
|
||||
// 验证生成指示器消失
|
||||
const generatingIndicator = this.page.locator('[class*="generating" i]').first();
|
||||
const isGenerating = await generatingIndicator.isVisible().catch(() => false);
|
||||
|
||||
expect(isGenerating).toBeFalsy();
|
||||
});
|
||||
|
||||
Then('应该显示已生成的部分内容', async function (this: CustomWorld) {
|
||||
const aiMessage = this.page
|
||||
.locator('[data-testid*="assistant-message"], [data-role="assistant"]')
|
||||
.last();
|
||||
|
||||
await expect(aiMessage).toBeVisible({ timeout: 120_000 });
|
||||
|
||||
const messageText = await aiMessage.textContent();
|
||||
expect(messageText?.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
Then('发送按钮应该恢复可用状态', async function (this: CustomWorld) {
|
||||
const sendButton = this.page
|
||||
.locator('[data-testid="send-button"], button[aria-label*="发送" i]')
|
||||
.first();
|
||||
|
||||
await expect(sendButton).toBeVisible({ timeout: 120_000 });
|
||||
await expect(sendButton).toBeEnabled({ timeout: 120_000 });
|
||||
});
|
||||
@@ -0,0 +1,163 @@
|
||||
import { Then } from '@cucumber/cucumber';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
import { CustomWorld } from '../../support/world';
|
||||
|
||||
// ============================================
|
||||
// Then Steps (断言) - 冒烟测试
|
||||
// ============================================
|
||||
|
||||
// 会话列表相关
|
||||
Then('我应该看到会话列表面板', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找会话列表面板
|
||||
const sessionPanel = this.page
|
||||
.locator(
|
||||
'[data-testid="session-panel"], [data-testid="session-list"], aside, nav[aria-label*="session" i]',
|
||||
)
|
||||
.first();
|
||||
|
||||
await expect(sessionPanel).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到聊天输入框', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找聊天输入框
|
||||
const chatInput = this.page
|
||||
.locator(
|
||||
'[data-testid="chat-input"], textarea[placeholder*="消息" i], textarea[placeholder*="message" i], [contenteditable="true"]',
|
||||
)
|
||||
.first();
|
||||
|
||||
await expect(chatInput).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到默认会话', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找会话内容区域
|
||||
const chatContent = this.page
|
||||
.locator('[data-testid="chat-content"], [data-testid="conversation"], main')
|
||||
.first();
|
||||
|
||||
await expect(chatContent).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到欢迎消息', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找欢迎消息,可能包含"你好"、"Hello"等
|
||||
const welcomeMessage = this.page
|
||||
.locator('[data-testid="welcome-message"], .welcome, [class*="welcome" i]')
|
||||
.first();
|
||||
|
||||
// 如果找不到特定的欢迎组件,查找包含欢迎文本的元素
|
||||
const hasWelcome = await welcomeMessage.isVisible().catch(() => false);
|
||||
|
||||
if (!hasWelcome) {
|
||||
const textContent = await this.page.textContent('body');
|
||||
expect(textContent).toMatch(/你好|hello|欢迎|welcome/i);
|
||||
} else {
|
||||
await expect(welcomeMessage).toBeVisible({ timeout: 120_000 });
|
||||
}
|
||||
});
|
||||
|
||||
Then('我应该看到会话列表', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找会话列表
|
||||
const sessionList = this.page.locator('[data-testid="session-list"], [role="list"]').first();
|
||||
|
||||
await expect(sessionList).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到新建会话按钮', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找新建会话按钮
|
||||
const newSessionButton = this.page
|
||||
.locator(
|
||||
'[data-testid="new-session"], button:has-text("新建"), button[aria-label*="新建" i], button[title*="新建" i]',
|
||||
)
|
||||
.first();
|
||||
|
||||
await expect(newSessionButton).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到收件箱入口', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找收件箱入口
|
||||
const inboxEntry = this.page
|
||||
.locator(
|
||||
'[data-testid="inbox"], [href*="inbox" i], button:has-text("收件箱"), a:has-text("收件箱")',
|
||||
)
|
||||
.first();
|
||||
|
||||
const isVisible = await inboxEntry.isVisible().catch(() => false);
|
||||
|
||||
// 收件箱可能是默认选中的,所以也检查文本内容
|
||||
if (!isVisible) {
|
||||
const textContent = await this.page.textContent('body');
|
||||
expect(textContent).toMatch(/收件箱|inbox|随便聊聊/i);
|
||||
} else {
|
||||
await expect(inboxEntry).toBeVisible({ timeout: 120_000 });
|
||||
}
|
||||
});
|
||||
|
||||
Then('输入框应该可以点击', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
const chatInput = this.page
|
||||
.locator('[data-testid="chat-input"], textarea, [contenteditable="true"]')
|
||||
.first();
|
||||
|
||||
await expect(chatInput).toBeVisible({ timeout: 120_000 });
|
||||
await expect(chatInput).toBeEnabled({ timeout: 120_000 });
|
||||
|
||||
// 尝试点击输入框
|
||||
await chatInput.click();
|
||||
|
||||
// 验证输入框获得焦点
|
||||
const isFocused = await chatInput.evaluate((el) => el === document.activeElement);
|
||||
expect(isFocused).toBe(true);
|
||||
});
|
||||
|
||||
Then('我应该看到发送按钮', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找发送按钮
|
||||
const sendButton = this.page
|
||||
.locator(
|
||||
'[data-testid="send-button"], button[aria-label*="发送" i], button[aria-label*="send" i], button:has-text("发送")',
|
||||
)
|
||||
.first();
|
||||
|
||||
await expect(sendButton).toBeVisible({ timeout: 120_000 });
|
||||
});
|
||||
|
||||
Then('我应该看到输入框操作栏', async function (this: CustomWorld) {
|
||||
await this.page.waitForLoadState('networkidle', { timeout: 120_000 });
|
||||
|
||||
// 查找输入框操作栏(包含模型选择、工具等按钮)
|
||||
const actionBar = this.page
|
||||
.locator(
|
||||
'[data-testid="action-bar"], [data-testid="input-actions"], [class*="action" i][class*="bar" i]',
|
||||
)
|
||||
.first();
|
||||
|
||||
const isVisible = await actionBar.isVisible().catch(() => false);
|
||||
|
||||
if (!isVisible) {
|
||||
// 检查是否有模型选择或工具按钮作为替代
|
||||
const modelButton = this.page
|
||||
.locator('button[aria-label*="模型" i], button[aria-label*="model" i]')
|
||||
.first();
|
||||
|
||||
await expect(modelButton).toBeVisible({ timeout: 120_000 });
|
||||
} else {
|
||||
await expect(actionBar).toBeVisible({ timeout: 120_000 });
|
||||
}
|
||||
});
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "مفتاح التفكير العميق"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "مستوى التفكير"
|
||||
},
|
||||
"title": "وظائف توسيع النموذج",
|
||||
"urlContext": {
|
||||
"desc": "عند التفعيل، سيتم تحليل روابط الويب تلقائيًا للحصول على محتوى السياق الفعلي للصفحة",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "لقطة شاشة",
|
||||
"settings": "إعدادات التصدير",
|
||||
"text": "نص",
|
||||
"widthMode": {
|
||||
"label": "وضع العرض",
|
||||
"narrow": "وضع الشاشة الضيقة",
|
||||
"wide": "وضع الشاشة الواسعة"
|
||||
},
|
||||
"withBackground": "تضمين صورة الخلفية",
|
||||
"withFooter": "تضمين تذييل",
|
||||
"withPluginInfo": "تضمين معلومات البرنامج المساعد",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "إدخال سبب الرفض سيساعد الوكيل على الفهم وتحسين الإجراءات المستقبلية",
|
||||
"rejectTitle": "رفض استدعاء الأداة هذه المرة",
|
||||
"rejectedWithReason": "تم رفض استدعاء الأداة هذه المرة بشكل يدوي: {{reason}}",
|
||||
"toolAbort": "تم إلغاء استدعاء الأداة من قبل المستخدم",
|
||||
"toolRejected": "تم رفض استدعاء الأداة هذه المرة بشكل يدوي"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "شراكات تجارية",
|
||||
"support": "الدعم عبر البريد الإلكتروني"
|
||||
},
|
||||
"new": "جديد",
|
||||
"oauth": "تسجيل الدخول SSO",
|
||||
"officialSite": "الموقع الرسمي",
|
||||
"ok": "موافق",
|
||||
|
||||
@@ -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": "لقد استنفدت نقاط اشتراكك، ولا يمكنك استخدام هذه الميزة. يرجى الترقية إلى خطة أعلى، أو تكوين واجهة برمجة التطبيقات للنموذج المخصص للاستمرار في الاستخدام",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "دليل التكوين",
|
||||
"responsesApi": {
|
||||
"desc": "استخدام معيار طلبات الجيل الجديد من OpenAI، لفتح ميزات متقدمة مثل سلسلة التفكير",
|
||||
"desc": "يعتمد تنسيق طلب الجيل الجديد من OpenAI، لتمكين ميزات متقدمة مثل سلسلة التفكير (مدعومة فقط من نماذج OpenAI)",
|
||||
"title": "استخدام معيار Responses API"
|
||||
},
|
||||
"waitingForMore": "المزيد من النماذج قيد <1>التخطيط للإدماج</1>، يرجى الانتظار"
|
||||
|
||||
+25
-7
@@ -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 مليار معلمة مفعلة. من بين النماذج غير المعتمدة على التفكير، يحقق مستويات متقدمة في المعرفة الحديثة، الرياضيات والبرمجة، ويتفوق في مهام الوكيل العامة. تم تحسينه بعناية لمهام الوكيل، لا يجيب فقط على الأسئلة بل يتخذ إجراءات. مثالي للدردشة العفوية، التجارب العامة والوكيل، وهو نموذج سريع الاستجابة لا يتطلب تفكيرًا طويلًا."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"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."
|
||||
@@ -1478,9 +1481,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 الأكثر فعالية من حيث التكلفة، ويوفر وظائف شاملة."
|
||||
},
|
||||
@@ -1508,9 +1508,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"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "جيميني 2.5 برو بريڤيو هو أحدث نموذج تفكيري من جوجل، قادر على استنتاج حلول للمشكلات المعقدة في مجالات البرمجة، الرياضيات، والعلوم والتكنولوجيا والهندسة والرياضيات (STEM)، بالإضافة إلى تحليل مجموعات بيانات كبيرة، قواعد بيانات البرمجة، والوثائق باستخدام سياق طويل."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro هو النموذج الأذكى من Google، يتميز بأحدث تقنيات الاستدلال والفهم متعدد الوسائط، بالإضافة إلى قدرات قوية في التمثيل الذكي وترميز السياق."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "أحدث إصدار من Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct هو نموذج صغير الحجم وعالي الكفاءة أطلقته شركة Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "نموذج أساسي غير تأملي مفتوح المصدر من Meituan، مُحسَّن للتفاعل الحواري ومهام الوكلاء الذكيين، ويتميز في استدعاء الأدوات وسيناريوهات التفاعل المعقدة متعددة الجولات."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "نموذج قوي بحجم 70 مليار معلمة يتفوق في التفكير، والترميز، وتطبيقات اللغة الواسعة."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 هو نموذج لغوي كبير وفعّال، تم تطويره خصيصًا لتلبية احتياجات الترميز وتدفقات عمل الوكلاء."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "مصمم خصيصًا للترميز الفعّال وتدفقات عمل الوكلاء."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 هو نموذج خبراء مختلط (MoE) مدمج وسريع وفعّال من حيث التكلفة، يحتوي على 230 مليار معلمة إجمالية و10 مليارات معلمة نشطة، صُمم لتحقيق أداء فائق في مهام الترميز والوكالة، مع الحفاظ على ذكاء عام قوي. يتميز هذا النموذج بأداء ممتاز في تحرير الملفات المتعددة، ودورة الترميز-التنفيذ-الإصلاح، والتحقق من الاختبارات والإصلاح، وسلاسل الأدوات المعقدة ذات الروابط الطويلة، مما يجعله خيارًا مثاليًا لسير عمل المطورين."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B هو نموذج حافة عالمي المستوى من Mistral."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 هو نموذج لغوي تقدمه Microsoft AI، يتميز بأداء ممتاز في الحوار المعقد، واللغات المتعددة، والاستدلال، والمساعدين الذكيين."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "يسعدنا أن نعلن عن إصدار Grok 4 Fast، وهو أحدث تقدم لنا في نماذج الاستدلال الفعّالة من حيث التكلفة."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "يسعدنا إطلاق grok-code-fast-1، وهو نموذج استدلال سريع وفعّال من حيث التكلفة يتميز في ترميز الوكلاء."
|
||||
},
|
||||
"x1": {
|
||||
"description": "سيتم ترقية نموذج Spark X1 بشكل أكبر، حيث ستحقق المهام العامة مثل الاستدلال، وتوليد النصوص، وفهم اللغة نتائج تتماشى مع OpenAI o1 و DeepSeek R1."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "نموذج مهام بصرية معقدة، يوفر فهمًا عالي الأداء وقدرات تحليلية بناءً على صور متعددة."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6 هو النموذج الرائد الأحدث من Zhipu، ويتفوق على الجيل السابق في الترميز المتقدم، ومعالجة النصوص الطويلة، والاستدلال، وقدرات الوكلاء الذكيين."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 هو نموذج أساسي مصمم لتطبيقات الوكلاء الذكية، يستخدم بنية Mixture-of-Experts (MoE). تم تحسينه بعمق في مجالات استدعاء الأدوات، تصفح الويب، هندسة البرمجيات، وبرمجة الواجهة الأمامية، ويدعم التكامل السلس مع وكلاء الكود مثل Claude Code وRoo Code. يستخدم وضع استدلال مختلط ليتكيف مع سيناريوهات الاستدلال المعقدة والاستخدام اليومي."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "كلمة تلميح"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "استبدال بـ",
|
||||
"oldString": "البحث عن",
|
||||
"replaceAll": "استبدال جميع المطابقات",
|
||||
"replaceFirst": "استبدال أول مطابقة فقط"
|
||||
},
|
||||
"file": "ملف",
|
||||
"folder": "مجلد",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "قراءة الملف",
|
||||
"readFileError": "فشل في قراءة الملف، يرجى التحقق من صحة مسار الملف",
|
||||
"readFiles": "قراءة الملفات",
|
||||
"readFilesError": "فشل في قراءة الملفات، يرجى التحقق من صحة مسار الملف"
|
||||
"readFilesError": "فشل في قراءة الملفات، يرجى التحقق من صحة مسار الملف",
|
||||
"writeFile": {
|
||||
"characters": "أحرف",
|
||||
"preview": "معاينة المحتوى",
|
||||
"truncated": "تم الاقتطاع"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "إنشاء سجل بحث جديد",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Превключвател за дълбоко мислене"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Ниво на мислене"
|
||||
},
|
||||
"title": "Разширени функции на модела",
|
||||
"urlContext": {
|
||||
"desc": "Когато е включено, автоматично ще се анализират уеб връзки, за да се получи реалното съдържание на уеб страницата",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Екранна снимка",
|
||||
"settings": "Настройки за експортиране",
|
||||
"text": "Текст",
|
||||
"widthMode": {
|
||||
"label": "Режим на ширина",
|
||||
"narrow": "Режим за тесен екран",
|
||||
"wide": "Режим за широк екран"
|
||||
},
|
||||
"withBackground": "Включи фоново изображение",
|
||||
"withFooter": "Включи долен колонтитул",
|
||||
"withPluginInfo": "Включи информация за плъгина",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Въведете причина за отхвърляне, за да помогнете на агента да разбере и подобри бъдещите действия",
|
||||
"rejectTitle": "Отхвърляне на това извикване на инструмент",
|
||||
"rejectedWithReason": "Това извикване на инструмент беше умишлено отхвърлено: {{reason}}",
|
||||
"toolAbort": "Този инструмент беше отменен от потребителя",
|
||||
"toolRejected": "Това извикване на инструмент беше умишлено отхвърлено"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Бизнес сътрудничество",
|
||||
"support": "Поддръжка по имейл"
|
||||
},
|
||||
"new": "Нов",
|
||||
"oauth": "SSO Вход",
|
||||
"officialSite": "Официален сайт",
|
||||
"ok": "Добре",
|
||||
|
||||
@@ -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, за да продължите да използвате.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Ръководство за конфигуриране",
|
||||
"responsesApi": {
|
||||
"desc": "Използва новия формат на заявките на OpenAI, отключващ функции като вериги на мислене и други усъвършенствани възможности",
|
||||
"desc": "Използва новия формат за заявки на OpenAI, отключвайки разширени функции като вериги на мисълта (поддържа се само от моделите на OpenAI)",
|
||||
"title": "Използване на Responses API стандарта"
|
||||
},
|
||||
"waitingForMore": "Още модели са в <1>планиране</1>, моля, очаквайте"
|
||||
|
||||
@@ -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 милиарда. Сред немисловните модели постига водещи резултати в областта на актуални знания, математика и кодиране, с по-добри възможности за универсални агентски задачи. Специално оптимизиран за агентски задачи, не само отговаря на въпроси, но и може да предприема действия. Най-подходящ за импровизирани, универсални разговори и агентски преживявания, модел с рефлексна скорост без нужда от дълго мислене."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"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."
|
||||
@@ -1478,9 +1481,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, предлагащ пълна функционалност."
|
||||
},
|
||||
@@ -1508,9 +1508,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"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview е най-напредналият мисловен модел на Google, способен да разсъждава върху сложни проблеми в областта на кодирането, математиката и STEM, както и да анализира големи набори от данни, кодови бази и документи с дълъг контекст."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro е най-интелигентният модел на Google, с най-съвременно извеждане на заключения и мултимодално разбиране, както и с мощни възможности за агентно поведение и кодиране на контекста."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Последно издание на Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,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 милиарда параметри, отличаващ се в разсъждения, кодиране и широки езикови приложения."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 е ефективен голям езиков модел, създаден специално за кодиране и работни процеси с агенти."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Създаден специално за ефективно кодиране и работни потоци с агенти."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 е компактен, бърз и икономичен хибриден експертен (MoE) модел с общо 230 милиарда параметъра и 10 милиарда активни параметъра, създаден за постигане на върхова производителност при кодиране и задачи, свързани с интелигентни агенти, като същевременно поддържа силен общ интелект. Моделът се отличава с отлична работа при редактиране на множество файлове, затворен цикъл кодиране-изпълнение-поправка, тестване и валидиране на поправки, както и при сложни дълговерижни инструментални процеси, което го прави идеален избор за работния процес на разработчиците."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B е световен лидер сред моделите на Mistral."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 е езиков модел, предоставен от Microsoft AI, който се отличава в сложни диалози, многоезичност, разсъждение и интелигентни асистенти."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "С радост представяме Grok 4 Fast — нашият най-нов напредък в модели за ефективно и икономично извеждане."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "С гордост представяме grok-code-fast-1 — бърз и икономичен модел за извеждане, който се отличава в агентно кодиране."
|
||||
},
|
||||
"x1": {
|
||||
"description": "Моделът Spark X1 ще бъде допълнително обновен, като на базата на водещите в страната резултати в математически задачи, ще постигне ефекти в общи задачи като разсъждение, генериране на текст и разбиране на език, сравними с OpenAI o1 и DeepSeek R1."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "Модел за сложни визуални задачи, предлагащ висока производителност в разбирането и анализа на базата на множество изображения."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6 е най-новият флагмански модел на Zhipu, който значително надминава предшествениците си в напреднало кодиране, обработка на дълги текстове, извеждане и способности на интелигентни агенти."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 е базов модел, специално създаден за интелигентни агенти, използващ архитектура с микс от експерти (Mixture-of-Experts). Той е дълбоко оптимизиран за използване на инструменти, уеб браузване, софтуерно инженерство и фронтенд програмиране, и поддържа безпроблемна интеграция с кодови агенти като Claude Code и Roo Code. GLM-4.5 използва смесен режим на разсъждение, подходящ за сложни и ежедневни приложения."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "подсказка"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Замени с",
|
||||
"oldString": "Търсене на съдържание",
|
||||
"replaceAll": "Замени всички съвпадения",
|
||||
"replaceFirst": "Замени само първото съвпадение"
|
||||
},
|
||||
"file": "Файл",
|
||||
"folder": "Папка",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Прочети файл",
|
||||
"readFileError": "Неуспешно четене на файла, моля, проверете дали пътят към файла е правилен",
|
||||
"readFiles": "Прочети файлове",
|
||||
"readFilesError": "Неуспешно четене на файловете, моля, проверете дали пътят към файловете е правилен"
|
||||
"readFilesError": "Неуспешно четене на файловете, моля, проверете дали пътят към файловете е правилен",
|
||||
"writeFile": {
|
||||
"characters": "Знаци",
|
||||
"preview": "Преглед на съдържанието",
|
||||
"truncated": "Съкратено"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Създаване на нова търсене",
|
||||
|
||||
@@ -65,6 +65,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",
|
||||
@@ -330,6 +333,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",
|
||||
@@ -391,6 +399,7 @@
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Geschäftliche Zusammenarbeit",
|
||||
"support": "E-Mail-Support"
|
||||
},
|
||||
"new": "Neu",
|
||||
"oauth": "SSO-Anmeldung",
|
||||
"officialSite": "Offizielle Website",
|
||||
"ok": "OK",
|
||||
|
||||
@@ -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.",
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"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."
|
||||
@@ -1478,9 +1481,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."
|
||||
},
|
||||
@@ -1508,9 +1508,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"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"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-preview": {
|
||||
"description": "Gemini 3 Pro ist das intelligenteste Modell von Google mit modernster Schlussfolgerungsfähigkeit, multimodaler Verarbeitung sowie leistungsstarken Agenten- und Kontextkodierungsfunktionen."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Neueste Version von Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,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."
|
||||
},
|
||||
@@ -2456,6 +2459,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": "Speziell entwickelt für effizientes Codieren und Agenten-Workflows."
|
||||
},
|
||||
"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."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"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-fast": {
|
||||
"description": "Wir freuen uns, Grok 4 Fast vorzustellen – unseren neuesten Fortschritt im Bereich kosteneffizienter Inferenzmodelle."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "Wir freuen uns, grok-code-fast-1 zu präsentieren – ein schnelles und kosteneffizientes Inferenzmodell mit hervorragender Leistung im Bereich Agenten-Codierung."
|
||||
},
|
||||
"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."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"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.6": {
|
||||
"description": "Das neueste Flaggschiffmodell von Zhipu, GLM-4.6, übertrifft seine Vorgänger deutlich in den Bereichen fortgeschrittenes Codieren, Verarbeitung langer Texte, logisches Schließen und agentenbasierte Fähigkeiten."
|
||||
},
|
||||
"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."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "Hinweiswort"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Ersetzen durch",
|
||||
"oldString": "Suchbegriff",
|
||||
"replaceAll": "Alle Vorkommen ersetzen",
|
||||
"replaceFirst": "Nur erstes Vorkommen ersetzen"
|
||||
},
|
||||
"file": "Datei",
|
||||
"folder": "Ordner",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Datei lesen",
|
||||
"readFileError": "Fehler beim Lesen der Datei, bitte überprüfen Sie den Dateipfad",
|
||||
"readFiles": "Dateien lesen",
|
||||
"readFilesError": "Fehler beim Lesen der Dateien, bitte überprüfen Sie den Dateipfad"
|
||||
"readFilesError": "Fehler beim Lesen der Dateien, bitte überprüfen Sie den Dateipfad",
|
||||
"writeFile": {
|
||||
"characters": "Zeichen",
|
||||
"preview": "Vorschau des Inhalts",
|
||||
"truncated": "Abgeschnitten"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Neue Suchanfrage erstellen",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Deep Thinking Switch"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Level of Thinking"
|
||||
},
|
||||
"title": "Model Extension Features",
|
||||
"urlContext": {
|
||||
"desc": "When enabled, web links will be automatically parsed to retrieve the actual webpage context content",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Screenshot",
|
||||
"settings": "Export Settings",
|
||||
"text": "Text",
|
||||
"widthMode": {
|
||||
"label": "Width Mode",
|
||||
"narrow": "Narrow",
|
||||
"wide": "Wide"
|
||||
},
|
||||
"withBackground": "Include Background Image",
|
||||
"withFooter": "Include Footer",
|
||||
"withPluginInfo": "Include Plugin Information",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Providing a reason will help the Agent understand and improve future actions",
|
||||
"rejectTitle": "Reject This Tool Invocation",
|
||||
"rejectedWithReason": "This tool invocation was actively rejected: {{reason}}",
|
||||
"toolAbort": "This tool invocation was canceled by the user",
|
||||
"toolRejected": "This tool invocation was actively rejected"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Business Cooperation",
|
||||
"support": "Email Support"
|
||||
},
|
||||
"new": "NEW",
|
||||
"oauth": "SSO Login",
|
||||
"officialSite": "Official Website",
|
||||
"ok": "OK",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "Your content may contain sensitive personally identifiable information (PII). To protect privacy, please remove any sensitive details and try again.",
|
||||
"default": "Content blocked: {{blockReason}}. Please adjust your request and try again."
|
||||
},
|
||||
"InsufficientQuota": "Sorry, the quota for this key has been reached. Please check your account balance or increase the key quota and try again.",
|
||||
"InsufficientQuota": "Sorry, the quota for this key has been reached. Please check if your account balance is sufficient or try again after increasing the key's quota.",
|
||||
"InvalidAccessCode": "Invalid access code or empty. Please enter the correct access code or add a custom API Key.",
|
||||
"InvalidBedrockCredentials": "Bedrock authentication failed. Please check the AccessKeyId/SecretAccessKey and retry.",
|
||||
"InvalidClerkUser": "Sorry, you are not currently logged in. Please log in or register an account to continue.",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "Plugin server request returned an error. Please check your plugin manifest file, plugin configuration, or server implementation based on the error information below",
|
||||
"PluginSettingsInvalid": "This plugin needs to be correctly configured before it can be used. Please check if your configuration is correct",
|
||||
"ProviderBizError": "Error requesting {{provider}} service, please troubleshoot or retry based on the following information",
|
||||
"QuotaLimitReached": "We apologize, but the current token usage or number of requests has reached the quota limit for this key. Please increase the quota for this key or try again later.",
|
||||
"QuotaLimitReached": "Sorry, the token usage or request count has reached the quota limit for this key. Please increase the key's quota or try again later.",
|
||||
"StreamChunkError": "Error parsing the message chunk of the streaming request. Please check if the current API interface complies with the standard specifications, or contact your API provider for assistance.",
|
||||
"SubscriptionKeyMismatch": "We apologize for the inconvenience. Due to a temporary system malfunction, your current subscription usage is inactive. Please click the button below to restore your subscription, or contact us via email for support.",
|
||||
"SubscriptionPlanLimit": "Your subscription points have been exhausted, and you cannot use this feature. Please upgrade to a higher plan or configure a custom model API to continue using it.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Configuration Guide",
|
||||
"responsesApi": {
|
||||
"desc": "Utilizes OpenAI's next-generation request format specification to unlock advanced features like chain of thought",
|
||||
"desc": "Uses OpenAI's next-generation request format specification to unlock advanced features like chain-of-thought (supported by OpenAI models only)",
|
||||
"title": "Use Responses API Specification"
|
||||
},
|
||||
"waitingForMore": "More models are currently <1>planned for integration</1>, please stay tuned"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 is a large-scale hybrid attention inference model with open-source weights, featuring 456 billion parameters, with approximately 45.9 billion parameters activated per token. The model natively supports ultra-long contexts of up to 1 million tokens and, through lightning attention mechanisms, reduces floating-point operations by 75% compared to DeepSeek R1 in tasks generating 100,000 tokens. Additionally, MiniMax-M1 employs a Mixture of Experts (MoE) architecture, combining the CISPO algorithm with an efficient reinforcement learning training design based on hybrid attention, achieving industry-leading performance in long-input inference and real-world software engineering scenarios."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 redefines efficiency for intelligent agents. It is a compact, fast, and cost-effective Mixture of Experts (MoE) model with 230 billion total parameters and 10 billion active parameters. Designed for top-tier performance in coding and agent tasks, it also maintains strong general intelligence. With only 10 billion active parameters, MiniMax-M2 delivers performance comparable to large-scale models, making it an ideal choice for high-efficiency applications."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "With a total of 1 trillion parameters and 32 billion activated parameters, this non-thinking model achieves top-tier performance in cutting-edge knowledge, mathematics, and coding, excelling in general agent tasks. It is carefully optimized for agent tasks, capable not only of answering questions but also taking actions. Ideal for improvisational, general chat, and agent experiences, it is a reflex-level model requiring no prolonged thinking."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1 greatly improves model reasoning capabilities with minimal labeled data. Before outputting the final answer, the model first generates a chain of thought to enhance answer accuracy."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-70b": {
|
||||
"description": "DeepSeek-R1-Distill-Llama-70B is a distilled, more efficient variant of the 70B Llama model. It maintains strong performance on text generation tasks while reducing computational overhead for easier deployment and research. Served by Groq using its custom Language Processing Unit (LPU) hardware for fast, efficient inference."
|
||||
"description": "DeepSeek R1 Distill Llama 70B is a large language model based on Llama3.3 70B. Fine-tuned using outputs from DeepSeek R1, it achieves competitive performance on par with leading-edge large models."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-8b": {
|
||||
"description": "DeepSeek R1 Distill Llama 8B is a distilled large language model based on Llama-3.1-8B-Instruct, trained using outputs from DeepSeek R1."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Gemini 2.0 Flash is a variant of the model optimized for cost-effectiveness and low latency."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Gemini 2.0 Flash preview model, supports image generation"
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash is Google's most cost-effective model, offering comprehensive capabilities."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "Gemini 2.5 Flash Preview is Google's most cost-effective model, offering a comprehensive set of features."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview is Google's most cost-effective model, offering comprehensive capabilities."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "Preview release (September 25th, 2025) of Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview is Google's most advanced cognitive model, capable of reasoning through complex problems in code, mathematics, and STEM fields, as well as analyzing large datasets, codebases, and documents using long-context understanding."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro is Google's most advanced model, featuring state-of-the-art reasoning, multimodal understanding, and powerful agent capabilities with contextual awareness."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Latest release of Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct is a compact and efficient model developed by Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "An open-source foundational model from Meituan, optimized for conversational interactions and agent-based tasks. Excels in tool usage and complex multi-turn dialogue scenarios."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "A powerful 70-billion parameter model excelling in reasoning, coding, and broad language applications."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 is a high-efficiency large language model built for coding and agent-based workflows."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Purpose-built for efficient coding and agent workflows."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 is a compact, fast, and cost-efficient Mixture of Experts (MoE) model with 230 billion total parameters and 10 billion active parameters. It is engineered for top performance in coding and agent tasks while maintaining robust general intelligence. Excelling in multi-file editing, code-run-debug loops, test validation and repair, and complex long-chain tool integrations, it is an ideal choice for developer workflows."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B is Mistral's top-tier edge model."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 is a language model provided by Microsoft AI, excelling in complex dialogues, multilingual capabilities, reasoning, and intelligent assistant applications."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "We’re excited to introduce Grok 4 Fast, our latest advancement in cost-effective reasoning models."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "We’re proud to launch grok-code-fast-1, a fast and cost-efficient reasoning model that excels in agent-based coding tasks."
|
||||
},
|
||||
"x1": {
|
||||
"description": "The Spark X1 model will undergo further upgrades, achieving results in reasoning, text generation, and language understanding tasks that match OpenAI o1 and DeepSeek R1, building on its leading position in domestic mathematical tasks."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "A complex visual task model that provides high-performance understanding and analysis capabilities based on multiple images."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6, the latest flagship model from Zhipu AI, delivers significant improvements over its predecessor in advanced coding, long-form text processing, reasoning, and agent capabilities."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 is a foundational model designed specifically for agent applications, using a Mixture-of-Experts (MoE) architecture. It is deeply optimized for tool invocation, web browsing, software engineering, and front-end programming, supporting seamless integration with code agents like Claude Code and Roo Code. GLM-4.5 employs a hybrid inference mode, adaptable to complex reasoning and everyday use scenarios."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "Prompt"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Replace with",
|
||||
"oldString": "Find",
|
||||
"replaceAll": "Replace all occurrences",
|
||||
"replaceFirst": "Replace first occurrence only"
|
||||
},
|
||||
"file": "File",
|
||||
"folder": "Folder",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Read File",
|
||||
"readFileError": "Failed to read file, please check if the file path is correct",
|
||||
"readFiles": "Read Files",
|
||||
"readFilesError": "Failed to read files, please check if the file path is correct"
|
||||
"readFilesError": "Failed to read files, please check if the file path is correct",
|
||||
"writeFile": {
|
||||
"characters": "characters",
|
||||
"preview": "Content Preview",
|
||||
"truncated": "truncated"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Create a new search record",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Interruptor de pensamiento profundo"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Nivel de pensamiento"
|
||||
},
|
||||
"title": "Funcionalidad de extensión del modelo",
|
||||
"urlContext": {
|
||||
"desc": "Al activarlo, se analizarán automáticamente los enlaces web para obtener el contenido contextual real de la página",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Captura de pantalla",
|
||||
"settings": "Configuración de exportación",
|
||||
"text": "Texto",
|
||||
"widthMode": {
|
||||
"label": "Modo de ancho",
|
||||
"narrow": "Modo de pantalla estrecha",
|
||||
"wide": "Modo de pantalla ancha"
|
||||
},
|
||||
"withBackground": "Incluir imagen de fondo",
|
||||
"withFooter": "Incluir pie de página",
|
||||
"withPluginInfo": "Incluir información del plugin",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Ingresar una razón ayudará al agente a comprender y mejorar futuras acciones",
|
||||
"rejectTitle": "Rechazar esta ejecución de herramienta",
|
||||
"rejectedWithReason": "Esta ejecución de herramienta fue rechazada: {{reason}}",
|
||||
"toolAbort": "La llamada a la herramienta fue cancelada por el usuario",
|
||||
"toolRejected": "Esta ejecución de herramienta fue rechazada"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Colaboración Comercial",
|
||||
"support": "Soporte por Correo"
|
||||
},
|
||||
"new": "Nuevo",
|
||||
"oauth": "Inicio de sesión SSO",
|
||||
"officialSite": "Sitio oficial",
|
||||
"ok": "Aceptar",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "Su contenido podría contener información personal sensible. Para proteger la privacidad, elimine la información sensible y vuelva a intentarlo.",
|
||||
"default": "Contenido bloqueado: {{blockReason}}. Ajuste su solicitud y vuelva a intentarlo."
|
||||
},
|
||||
"InsufficientQuota": "Lo sentimos, la cuota de esta clave ha alcanzado su límite. Por favor, verifique si el saldo de su cuenta es suficiente o aumente la cuota de la clave y vuelva a intentarlo.",
|
||||
"InsufficientQuota": "Lo sentimos, la cuota de esta clave ha alcanzado su límite. Por favor, verifica si el saldo de tu cuenta es suficiente o aumenta la cuota de la clave antes de intentarlo nuevamente.",
|
||||
"InvalidAccessCode": "La contraseña no es válida o está vacía. Por favor, introduce una contraseña de acceso válida o añade una clave API personalizada",
|
||||
"InvalidBedrockCredentials": "La autenticación de Bedrock no se ha completado con éxito, por favor, verifica AccessKeyId/SecretAccessKey e inténtalo de nuevo",
|
||||
"InvalidClerkUser": "Lo siento mucho, actualmente no has iniciado sesión. Por favor, inicia sesión o regístrate antes de continuar.",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "Error al recibir la respuesta del servidor del complemento. Verifique el archivo de descripción del complemento, la configuración del complemento o la implementación del servidor según la información de error a continuación",
|
||||
"PluginSettingsInvalid": "Este complemento necesita una configuración correcta antes de poder usarse. Verifique si su configuración es correcta",
|
||||
"ProviderBizError": "Se produjo un error al solicitar el servicio de {{provider}}, por favor, revise la siguiente información o inténtelo de nuevo",
|
||||
"QuotaLimitReached": "Lo sentimos, el uso actual de tokens o el número de solicitudes ha alcanzado el límite de cuota de esta clave. Por favor, aumenta la cuota de esta clave o intenta de nuevo más tarde.",
|
||||
"QuotaLimitReached": "Lo sentimos, el uso de tokens o el número de solicitudes ha alcanzado el límite de cuota de esta clave. Por favor, aumenta la cuota de la clave o inténtalo más tarde.",
|
||||
"StreamChunkError": "Error de análisis del bloque de mensajes de la solicitud en streaming. Por favor, verifica si la API actual cumple con las normas estándar o contacta a tu proveedor de API para más información.",
|
||||
"SubscriptionKeyMismatch": "Lo sentimos, debido a un fallo ocasional del sistema, el uso de la suscripción actual ha dejado de ser válido temporalmente. Por favor, haga clic en el botón de abajo para restaurar la suscripción o contáctenos por correo electrónico para obtener soporte.",
|
||||
"SubscriptionPlanLimit": "Se han agotado sus puntos de suscripción, no puede utilizar esta función. Por favor, actualice a un plan superior o configure la API del modelo personalizado para continuar.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Guía de configuración",
|
||||
"responsesApi": {
|
||||
"desc": "Utiliza el nuevo formato de solicitud de OpenAI para desbloquear características avanzadas como cadenas de pensamiento",
|
||||
"desc": "Adopta el nuevo formato de solicitud de OpenAI, desbloqueando funciones avanzadas como la cadena de pensamiento (solo compatible con modelos de OpenAI)",
|
||||
"title": "Uso de la especificación Responses API"
|
||||
},
|
||||
"waitingForMore": "Más modelos están en <1>planificación de integración</1>, por favor, espera"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 es un modelo de inferencia de atención mixta a gran escala con pesos de código abierto, que cuenta con 456 mil millones de parámetros, activando aproximadamente 45.9 mil millones de parámetros por token. El modelo soporta de forma nativa contextos ultra largos de hasta 1 millón de tokens y, gracias a su mecanismo de atención relámpago, reduce en un 75 % las operaciones de punto flotante en tareas de generación de 100 mil tokens en comparación con DeepSeek R1. Además, MiniMax-M1 utiliza una arquitectura MoE (Mezcla de Expertos), combinando el algoritmo CISPO y un diseño de atención mixta para un entrenamiento eficiente mediante aprendizaje reforzado, logrando un rendimiento líder en la industria en inferencia con entradas largas y escenarios reales de ingeniería de software."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 redefine la eficiencia para los agentes inteligentes. Es un modelo MoE compacto, rápido y rentable, con un total de 230 mil millones de parámetros y 10 mil millones de parámetros activos. Está diseñado para ofrecer un rendimiento de primer nivel en tareas de codificación y agentes, manteniendo al mismo tiempo una inteligencia general sólida. Con solo 10 mil millones de parámetros activos, MiniMax-M2 ofrece un rendimiento comparable al de modelos a gran escala, lo que lo convierte en una opción ideal para aplicaciones de alta eficiencia."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "Con un total de 1 billón de parámetros y 32 mil millones de parámetros activados, este modelo no reflexivo alcanza niveles de vanguardia en conocimiento avanzado, matemáticas y codificación, destacando en tareas generales de agentes. Optimizado para tareas de agentes, no solo responde preguntas sino que también puede actuar. Ideal para conversaciones improvisadas, chat general y experiencias de agentes, es un modelo de nivel reflexivo que no requiere largos tiempos de pensamiento."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1 mejora enormemente la capacidad de razonamiento del modelo con muy pocos datos etiquetados. Antes de generar la respuesta final, el modelo produce una cadena de pensamiento para aumentar la precisión de la respuesta."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-70b": {
|
||||
"description": "DeepSeek-R1-Distill-Llama-70B es una variante destilada y más eficiente del modelo Llama de 70B. Mantiene un rendimiento sólido en tareas de generación de texto, reduciendo el costo computacional para facilitar su despliegue e investigación. Operado por Groq con su hardware personalizado de unidad de procesamiento de lenguaje (LPU) para ofrecer inferencia rápida y eficiente."
|
||||
"description": "DeepSeek R1 Distill Llama 70B es un modelo de lenguaje de gran escala basado en Llama3.3 70B. Este modelo ha sido ajustado finamente utilizando las salidas de DeepSeek R1, logrando un rendimiento competitivo comparable al de los modelos más avanzados del mercado."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-8b": {
|
||||
"description": "DeepSeek R1 Distill Llama 8B es un modelo de lenguaje grande destilado basado en Llama-3.1-8B-Instruct, entrenado utilizando la salida de DeepSeek R1."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Variante del modelo Gemini 2.0 Flash, optimizada para objetivos como la rentabilidad y la baja latencia."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Modelo de vista previa Gemini 2.0 Flash, que admite la generación de imágenes"
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash es el modelo de mejor relación calidad-precio de Google, que ofrece funcionalidades completas."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "Gemini 2.5 Flash Preview es el modelo más rentable de Google, que ofrece una funcionalidad completa."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview es el modelo de mejor relación calidad-precio de Google, que ofrece funcionalidades completas."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "Versión preliminar (25 de septiembre de 2025) de Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview es el modelo de pensamiento más avanzado de Google, capaz de razonar sobre problemas complejos en código, matemáticas y áreas STEM, así como analizar grandes conjuntos de datos, bases de código y documentos utilizando contextos extensos."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro es el modelo más inteligente de Google, con razonamiento de última generación, comprensión multimodal y potentes capacidades de agente y codificación contextual."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Última versión de Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct es un modelo eficiente de bajo número de parámetros desarrollado por Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "Modelo base no reflexivo de código abierto de Meituan, optimizado para interacciones conversacionales y tareas de agentes inteligentes, con un rendimiento destacado en llamadas a herramientas y escenarios complejos de múltiples turnos."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "Un poderoso modelo de 70 mil millones de parámetros que sobresale en razonamiento, codificación y amplias aplicaciones de lenguaje."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 es un modelo de lenguaje grande y eficiente, diseñado para flujos de trabajo de codificación y agentes."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Diseñado para una codificación eficiente y flujos de trabajo de agentes."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 es un modelo de expertos mixtos (MoE) compacto, rápido y rentable, con un total de 230 mil millones de parámetros y 10 mil millones de parámetros activos. Está diseñado para ofrecer un rendimiento de primer nivel en tareas de codificación y agentes, manteniendo una inteligencia general robusta. El modelo destaca en edición de múltiples archivos, ciclos cerrados de codificación-ejecución-corrección, verificación y corrección de pruebas, así como en complejas cadenas de herramientas de enlaces largos, lo que lo convierte en una opción ideal para los flujos de trabajo de los desarrolladores."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B es el modelo de borde de primer nivel mundial de Mistral."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 es un modelo de lenguaje proporcionado por Microsoft AI, que destaca en diálogos complejos, multilingües, razonamiento y asistentes inteligentes."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "Nos complace presentar Grok 4 Fast, nuestro último avance en modelos de inferencia rentables."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "Nos complace lanzar grok-code-fast-1, un modelo de inferencia rápido y rentable con un rendimiento sobresaliente en codificación para agentes."
|
||||
},
|
||||
"x1": {
|
||||
"description": "El modelo Spark X1 se actualizará aún más, logrando resultados en tareas generales como razonamiento, generación de texto y comprensión del lenguaje que se comparan con OpenAI o1 y DeepSeek R1, además de liderar en tareas matemáticas en el país."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "Modelo para tareas visuales complejas, que ofrece capacidades de comprensión y análisis de alto rendimiento basadas en múltiples imágenes."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "El nuevo modelo insignia de Zhipu, GLM-4.6, supera ampliamente a su predecesor en codificación avanzada, procesamiento de textos largos, razonamiento y capacidades de agentes inteligentes."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 es un modelo base diseñado para aplicaciones de agentes inteligentes, utilizando arquitectura Mixture-of-Experts (MoE). Está profundamente optimizado para llamadas a herramientas, navegación web, ingeniería de software y programación frontend, soportando integración fluida con agentes de código como Claude Code y Roo Code. GLM-4.5 emplea un modo de inferencia híbrido que se adapta a escenarios de razonamiento complejo y uso cotidiano."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "Palabra de aviso"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Reemplazar con",
|
||||
"oldString": "Buscar",
|
||||
"replaceAll": "Reemplazar todas las coincidencias",
|
||||
"replaceFirst": "Reemplazar solo la primera coincidencia"
|
||||
},
|
||||
"file": "Archivo",
|
||||
"folder": "Carpeta",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Leer archivo",
|
||||
"readFileError": "Error al leer el archivo, por favor verifica si la ruta del archivo es correcta",
|
||||
"readFiles": "Leer archivos",
|
||||
"readFilesError": "Error al leer los archivos, por favor verifica si la ruta del archivo es correcta"
|
||||
"readFilesError": "Error al leer los archivos, por favor verifica si la ruta del archivo es correcta",
|
||||
"writeFile": {
|
||||
"characters": "caracteres",
|
||||
"preview": "Vista previa del contenido",
|
||||
"truncated": "Truncado"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Crear un nuevo registro de búsqueda",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "کلید تفکر عمیق"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "سطح تفکر"
|
||||
},
|
||||
"title": "ویژگیهای گسترش مدل",
|
||||
"urlContext": {
|
||||
"desc": "با فعالسازی، لینکهای وب بهطور خودکار تجزیه میشوند تا محتوای واقعی زمینه وبسایت بهدست آید",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "اسکرینشات",
|
||||
"settings": "تنظیمات خروجی",
|
||||
"text": "متن",
|
||||
"widthMode": {
|
||||
"label": "حالت عرض",
|
||||
"narrow": "حالت صفحه باریک",
|
||||
"wide": "حالت صفحه عریض"
|
||||
},
|
||||
"withBackground": "شامل تصویر پسزمینه",
|
||||
"withFooter": "شامل پاورقی",
|
||||
"withPluginInfo": "شامل اطلاعات افزونه",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "وارد کردن دلیل رد به Agent کمک میکند تا اقدامات بعدی را بهینه کند",
|
||||
"rejectTitle": "رد این فراخوانی ابزار",
|
||||
"rejectedWithReason": "این فراخوانی ابزار با دلیل زیر رد شد:{{reason}}",
|
||||
"toolAbort": "این فراخوانی ابزار توسط کاربر لغو شد",
|
||||
"toolRejected": "این فراخوانی ابزار بهصورت دستی رد شد"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "همکاری تجاری",
|
||||
"support": "پشتیبانی ایمیل"
|
||||
},
|
||||
"new": "جدید",
|
||||
"oauth": "ورود با SSO",
|
||||
"officialSite": "وبسایت رسمی",
|
||||
"ok": "تأیید",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "محتوای شما ممکن است شامل اطلاعات هویتی حساس فردی باشد. برای محافظت از حریم خصوصی، لطفاً اطلاعات حساس را حذف کرده و دوباره تلاش کنید.",
|
||||
"default": "محتوا مسدود شد: {{blockReason}}。لطفاً محتوای درخواست خود را اصلاح کرده و دوباره تلاش کنید."
|
||||
},
|
||||
"InsufficientQuota": "متأسفیم، سهمیه این کلید به حداکثر رسیده است، لطفاً موجودی حساب خود را بررسی کرده یا سهمیه کلید را افزایش دهید و دوباره تلاش کنید",
|
||||
"InsufficientQuota": "متأسفیم، سهمیه این کلید به حداکثر رسیده است. لطفاً موجودی حساب خود را بررسی کرده یا پس از افزایش سهمیه کلید دوباره تلاش کنید.",
|
||||
"InvalidAccessCode": "رمز عبور نادرست یا خالی است، لطفاً رمز عبور صحیح را وارد کنید یا API Key سفارشی اضافه کنید",
|
||||
"InvalidBedrockCredentials": "اعتبارسنجی Bedrock ناموفق بود، لطفاً AccessKeyId/SecretAccessKey را بررسی کرده و دوباره تلاش کنید",
|
||||
"InvalidClerkUser": "متأسفیم، شما هنوز وارد نشدهاید، لطفاً ابتدا وارد شوید یا ثبتنام کنید و سپس ادامه دهید",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "درخواست سرور افزونه با خطا مواجه شد، لطفاً بر اساس اطلاعات زیر فایل توصیف افزونه، پیکربندی افزونه یا پیادهسازی سرور را بررسی کنید",
|
||||
"PluginSettingsInvalid": "این افزونه نیاز به پیکربندی صحیح دارد تا قابل استفاده باشد، لطفاً پیکربندی خود را بررسی کنید",
|
||||
"ProviderBizError": "درخواست به سرویس {{provider}} با خطا مواجه شد، لطفاً بر اساس اطلاعات زیر بررسی کنید یا دوباره تلاش کنید",
|
||||
"QuotaLimitReached": "متأسفیم، میزان استفاده از توکن یا تعداد درخواستهای شما به حد مجاز این کلید رسیده است، لطفاً سهمیه کلید را افزایش دهید یا بعداً دوباره تلاش کنید",
|
||||
"QuotaLimitReached": "متأسفیم، میزان استفاده از توکن یا تعداد درخواستها به حداکثر سهمیه این کلید رسیده است. لطفاً سهمیه کلید را افزایش داده یا بعداً دوباره تلاش کنید.",
|
||||
"StreamChunkError": "خطا در تجزیه بلوک پیام درخواست جریانی، لطفاً بررسی کنید که آیا API فعلی با استانداردها مطابقت دارد یا با ارائهدهنده API خود تماس بگیرید",
|
||||
"SubscriptionKeyMismatch": "متأسفیم، به دلیل یک نقص موقتی در سیستم، مصرف فعلی اشتراک به طور موقت غیر فعال شده است. لطفاً بر روی دکمه زیر کلیک کنید تا اشتراک خود را بازیابی کنید، یا با ما از طریق ایمیل تماس بگیرید تا از ما پشتیبانی دریافت کنید.",
|
||||
"SubscriptionPlanLimit": "نقاط اشتراک شما تمام شده است و نمیتوانید از این ویژگی استفاده کنید. لطفاً به یک طرح بالاتر ارتقا دهید یا پس از پیکربندی API مدل سفارشی، به استفاده ادامه دهید.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "راهنمای پیکربندی",
|
||||
"responsesApi": {
|
||||
"desc": "استفاده از قالب درخواست نسل جدید OpenAI برای باز کردن ویژگیهای پیشرفته مانند زنجیره تفکر",
|
||||
"desc": "با استفاده از قالب جدید درخواست OpenAI، ویژگیهای پیشرفتهای مانند زنجیره تفکر فعال میشود (فقط برای مدلهای OpenAI پشتیبانی میشود)",
|
||||
"title": "استفاده از استاندارد Responses API"
|
||||
},
|
||||
"waitingForMore": "مدلهای بیشتری در حال <1>برنامهریزی برای اتصال</1> هستند، لطفاً منتظر بمانید"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 یک مدل استنتاج بزرگ با وزنهای متنباز و توجه ترکیبی است که دارای ۴۵۶ میلیارد پارامتر است و هر توکن میتواند حدود ۴۵.۹ میلیارد پارامتر را فعال کند. این مدل به طور بومی از زمینه بسیار طولانی ۱ میلیون توکن پشتیبانی میکند و با مکانیزم توجه سریع، در وظایف تولید ۱۰۰ هزار توکن نسبت به DeepSeek R1، ۷۵٪ از محاسبات نقطه شناور را صرفهجویی میکند. همچنین، MiniMax-M1 از معماری MoE (متخصصان ترکیبی) بهره میبرد و با ترکیب الگوریتم CISPO و طراحی توجه ترکیبی در آموزش تقویتی کارآمد، عملکرد پیشرو در صنعت را در استنتاج ورودیهای طولانی و سناریوهای واقعی مهندسی نرمافزار ارائه میدهد."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 بهرهوری را برای عاملهای هوشمند بازتعریف میکند. این یک مدل MoE فشرده، سریع و مقرونبهصرفه است که دارای ۲۳۰ میلیارد پارامتر کلی و ۱۰ میلیارد پارامتر فعال میباشد. این مدل برای ارائه عملکردی در سطح بالا در وظایف کدنویسی و عاملهای هوشمند طراحی شده است، در حالی که هوش عمومی قدرتمندی را نیز حفظ میکند. تنها با ۱۰ میلیارد پارامتر فعال، MiniMax-M2 عملکردی همتراز با مدلهای بسیار بزرگ ارائه میدهد و آن را به گزینهای ایدهآل برای کاربردهای با بهرهوری بالا تبدیل میکند."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "مدل با 1 تریلیون پارامتر کل و 32 میلیارد پارامتر فعال. در میان مدلهای غیرتفکری، در دانش پیشرفته، ریاضیات و برنامهنویسی در سطح برتر قرار دارد و در وظایف عامل عمومی تخصص دارد. به طور ویژه برای وظایف نمایندگی بهینه شده است، نه تنها قادر به پاسخگویی به سوالات بلکه قادر به انجام اقدامات است. بهترین گزینه برای گفتگوهای بداهه، چت عمومی و تجربههای نمایندگی است و یک مدل واکنشی بدون نیاز به تفکر طولانی مدت محسوب میشود."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"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 آموزش دیده است."
|
||||
@@ -1478,9 +1481,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 مدل با بهترین نسبت قیمت به کارایی گوگل است که امکانات جامع را ارائه میدهد."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "پیشنمایش فلش Gemini 2.5 مدل با بهترین قیمت و کیفیت گوگل است که امکانات جامع و کاملی را ارائه میدهد."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview مقرونبهصرفهترین مدل گوگل است که امکانات جامع ارائه میدهد."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "نسخه پیشنمایش (25 سپتامبر 2025) از Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview پیشرفتهترین مدل تفکر گوگل است که قادر به استدلال درباره مسائل پیچیده در حوزه کد، ریاضیات و STEM است و میتواند با استفاده از زمینه طولانی، دادههای بزرگ، مخازن کد و مستندات را تحلیل کند."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro هوشمندترین مدل Google است که دارای استدلال پیشرفته (SOTA)، درک چندوجهی، و همچنین قابلیتهای قدرتمند نمایندگی و رمزگذاری زمینهای میباشد."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "جدیدترین نسخه Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct یک مدل کمپارامتر و کارآمد است که توسط Wuwen Xinqiong ارائه شده است."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "مدل پایه غیرتفکری متنباز Meituan که بهطور ویژه برای تعاملات گفتوگویی و وظایف عاملها بهینهسازی شده است و در فراخوانی ابزارها و سناریوهای پیچیده چندمرحلهای عملکرد برجستهای دارد."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "یک مدل قدرتمند با ۷۰ میلیارد پارامتر که در استدلال، کدنویسی و کاربردهای گسترده زبانی عملکرد برجستهای دارد."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 یک مدل زبانی بزرگ و کارآمد است که بهطور خاص برای کدنویسی و جریانهای کاری عاملمحور طراحی شده است."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "ویژه طراحی شده برای کدنویسی کارآمد و جریانهای کاری عاملها."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 یک مدل فشرده، سریع و مقرونبهصرفه از نوع متخصصان ترکیبی (MoE) است که دارای ۲۳۰ میلیارد پارامتر کلی و ۱۰ میلیارد پارامتر فعال میباشد. این مدل برای ارائه عملکردی عالی در وظایف کدنویسی و عاملهای هوشمند طراحی شده و در عین حال هوش عمومی قدرتمندی را حفظ میکند. این مدل در ویرایش چندفایلی، چرخه کدنویسی-اجرا-اصلاح، آزمون و تصحیح، و زنجیره ابزارهای پیچیده و طولانی عملکردی برجسته دارد و گزینهای ایدهآل برای جریان کاری توسعهدهندگان محسوب میشود."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B مدل پیشرفته و برتر Mistral در سطح جهانی است."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 یک مدل زبانی ارائه شده توسط مایکروسافت AI است که در زمینههای مکالمات پیچیده، چندزبانه، استدلال و دستیارهای هوشمند عملکرد برجستهای دارد."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "ما با خوشحالی Grok 4 Fast را معرفی میکنیم، جدیدترین پیشرفت ما در زمینه مدلهای استنتاجی مقرونبهصرفه."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "ما با افتخار grok-code-fast-1 را معرفی میکنیم، مدلی سریع و اقتصادی برای استنتاج که در کدنویسی عاملها عملکردی عالی دارد."
|
||||
},
|
||||
"x1": {
|
||||
"description": "مدل Spark X1 بهزودی ارتقا خواهد یافت و در زمینه وظایف ریاضی که در کشور پیشرو است، عملکردهای استدلال، تولید متن و درک زبان را با OpenAI o1 و DeepSeek R1 مقایسه خواهد کرد."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "مدلهای پیچیده بصری که قابلیتهای درک و تحلیل با عملکرد بالا را بر اساس چندین تصویر ارائه میدهند."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "جدیدترین مدل پرچمدار Zhipu به نام GLM-4.6 که در کدنویسی پیشرفته، پردازش متون طولانی، استنتاج و تواناییهای عاملها بهطور کامل از نسل قبلی پیشی گرفته است."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 یک مدل پایه طراحی شده برای کاربردهای عامل هوشمند است که از معماری Mixture-of-Experts استفاده میکند. این مدل در زمینههای فراخوانی ابزار، مرور وب، مهندسی نرمافزار و برنامهنویسی فرانتاند بهینهسازی عمیق شده و از ادغام بیوقفه با عاملهای کد مانند Claude Code و Roo Code پشتیبانی میکند. GLM-4.5 از حالت استدلال ترکیبی بهره میبرد و میتواند در سناریوهای استدلال پیچیده و استفاده روزمره به خوبی عمل کند."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "کلمات کلیدی"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "جایگزین با",
|
||||
"oldString": "یافتن محتوا",
|
||||
"replaceAll": "جایگزینی تمام موارد",
|
||||
"replaceFirst": "فقط اولین مورد را جایگزین کن"
|
||||
},
|
||||
"file": "فایل",
|
||||
"folder": "پوشه",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "خواندن فایل",
|
||||
"readFileError": "خطا در خواندن فایل، لطفاً مسیر فایل را بررسی کنید",
|
||||
"readFiles": "خواندن فایلها",
|
||||
"readFilesError": "خطا در خواندن فایلها، لطفاً مسیر فایلها را بررسی کنید"
|
||||
"readFilesError": "خطا در خواندن فایلها، لطفاً مسیر فایلها را بررسی کنید",
|
||||
"writeFile": {
|
||||
"characters": "کاراکتر",
|
||||
"preview": "پیشنمایش محتوا",
|
||||
"truncated": "بریده شده"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "ایجاد جستجوی جدید",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Interrupteur de réflexion approfondie"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Niveau de réflexion"
|
||||
},
|
||||
"title": "Fonctionnalités d'extension du modèle",
|
||||
"urlContext": {
|
||||
"desc": "Une fois activé, il analysera automatiquement les liens web pour obtenir le contenu contextuel réel de la page web",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Capture d'écran",
|
||||
"settings": "Paramètres d'exportation",
|
||||
"text": "Texte",
|
||||
"widthMode": {
|
||||
"label": "Mode de largeur",
|
||||
"narrow": "Mode écran étroit",
|
||||
"wide": "Mode écran large"
|
||||
},
|
||||
"withBackground": "Avec image de fond",
|
||||
"withFooter": "Avec pied de page",
|
||||
"withPluginInfo": "Avec informations sur le plugin",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Saisir une raison de rejet aidera l'agent à comprendre et à améliorer ses actions futures",
|
||||
"rejectTitle": "Rejeter cet appel d'outil",
|
||||
"rejectedWithReason": "Cet appel d'outil a été rejeté volontairement : {{reason}}",
|
||||
"toolAbort": "L'appel de l'outil a été annulé par l'utilisateur",
|
||||
"toolRejected": "Cet appel d'outil a été rejeté volontairement"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Partenariats commerciaux",
|
||||
"support": "Support par e-mail"
|
||||
},
|
||||
"new": "Nouveau",
|
||||
"oauth": "Connexion SSO",
|
||||
"officialSite": "Site officiel",
|
||||
"ok": "OK",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "Votre contenu peut contenir des informations personnelles sensibles. Pour protéger la vie privée, veuillez retirer ces informations sensibles puis réessayer.",
|
||||
"default": "Contenu bloqué : {{blockReason}}. Veuillez modifier votre demande et réessayer."
|
||||
},
|
||||
"InsufficientQuota": "Désolé, le quota de cette clé a atteint sa limite. Veuillez vérifier si le solde de votre compte est suffisant ou augmenter le quota de la clé avant de réessayer.",
|
||||
"InsufficientQuota": "Désolé, le quota associé à cette clé a été atteint. Veuillez vérifier si le solde de votre compte est suffisant ou augmenter le quota de la clé avant de réessayer.",
|
||||
"InvalidAccessCode": "Le mot de passe est incorrect ou vide. Veuillez saisir le mot de passe d'accès correct ou ajouter une clé API personnalisée.",
|
||||
"InvalidBedrockCredentials": "L'authentification Bedrock a échoué, veuillez vérifier AccessKeyId/SecretAccessKey et réessayer",
|
||||
"InvalidClerkUser": "Désolé, vous n'êtes pas actuellement connecté. Veuillez vous connecter ou vous inscrire avant de continuer.",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "Erreur de réponse du serveur du plugin. Veuillez vérifier le fichier de description du plugin, la configuration du plugin ou la mise en œuvre côté serveur en fonction des informations d'erreur ci-dessous",
|
||||
"PluginSettingsInvalid": "Ce plugin doit être correctement configuré avant de pouvoir être utilisé. Veuillez vérifier votre configuration",
|
||||
"ProviderBizError": "Erreur de service {{provider}}. Veuillez vérifier les informations suivantes ou réessayer.",
|
||||
"QuotaLimitReached": "Désolé, l'utilisation actuelle des tokens ou le nombre de requêtes a atteint la limite de quota de cette clé. Veuillez augmenter le quota de cette clé ou réessayer plus tard.",
|
||||
"QuotaLimitReached": "Désolé, la consommation de jetons ou le nombre de requêtes a atteint la limite de quota de cette clé. Veuillez augmenter le quota de la clé ou réessayer plus tard.",
|
||||
"StreamChunkError": "Erreur de parsing du bloc de message de la requête en streaming. Veuillez vérifier si l'API actuelle respecte les normes ou contacter votre fournisseur d'API pour des conseils.",
|
||||
"SubscriptionKeyMismatch": "Nous sommes désolés, en raison d'une défaillance système occasionnelle, l'utilisation actuelle de l'abonnement est temporairement inactive. Veuillez cliquer sur le bouton ci-dessous pour rétablir votre abonnement ou nous contacter par e-mail pour obtenir de l'aide.",
|
||||
"SubscriptionPlanLimit": "Votre quota d'abonnement est épuisé, vous ne pouvez pas utiliser cette fonctionnalité. Veuillez passer à un plan supérieur ou configurer l'API du modèle personnalisé pour continuer à l'utiliser.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Guide de configuration",
|
||||
"responsesApi": {
|
||||
"desc": "Utilise la nouvelle norme de format de requête d'OpenAI, débloquant des fonctionnalités avancées telles que les chaînes de pensée",
|
||||
"desc": "Adopte le nouveau format de requête de dernière génération d'OpenAI, permettant de débloquer des fonctionnalités avancées telles que la chaîne de pensée (pris en charge uniquement par les modèles OpenAI)",
|
||||
"title": "Utiliser la norme Responses API"
|
||||
},
|
||||
"waitingForMore": "D'autres modèles sont en <1>planification d'intégration</1>, restez à l'écoute"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 est un modèle d'inférence à attention mixte à grande échelle avec poids open source, comptant 456 milliards de paramètres, activant environ 45,9 milliards de paramètres par token. Le modèle supporte nativement un contexte ultra-long de 1 million de tokens et, grâce au mécanisme d'attention éclair, réduit de 75 % les opérations en virgule flottante lors de tâches de génération de 100 000 tokens par rapport à DeepSeek R1. Par ailleurs, MiniMax-M1 utilise une architecture MoE (Experts Mixtes), combinant l'algorithme CISPO et une conception d'attention mixte pour un entraînement efficace par apprentissage par renforcement, offrant des performances de pointe dans l'inférence sur longues entrées et les scénarios réels d'ingénierie logicielle."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 redéfinit l'efficacité pour les agents intelligents. Il s'agit d'un modèle MoE compact, rapide et économique, doté de 230 milliards de paramètres totaux et de 10 milliards de paramètres actifs, conçu pour offrir des performances de pointe dans les tâches de codage et d'agents, tout en conservant une intelligence générale puissante. Avec seulement 10 milliards de paramètres actifs, MiniMax-M2 offre des performances comparables à celles des modèles de grande taille, ce qui en fait un choix idéal pour les applications à haute efficacité."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "Avec un total de 1 000 milliards de paramètres et 32 milliards de paramètres activés, ce modèle non cognitif atteint un niveau de pointe en connaissances avancées, mathématiques et codage, excelling dans les tâches d'agents généraux. Optimisé pour les tâches d'agents, il peut non seulement répondre aux questions mais aussi agir. Idéal pour les conversations improvisées, générales et les expériences d'agents, c'est un modèle réflexe ne nécessitant pas de longues réflexions."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1 améliore considérablement les capacités de raisonnement du modèle avec très peu de données annotées. Avant de fournir la réponse finale, le modèle génère une chaîne de pensée pour améliorer la précision de la réponse."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-70b": {
|
||||
"description": "DeepSeek-R1-Distill-Llama-70B est une variante distillée et plus efficace du modèle Llama 70B. Il conserve de solides performances en génération de texte tout en réduisant les coûts de calcul pour faciliter le déploiement et la recherche. Il est servi par Groq avec son matériel personnalisé LPU pour un raisonnement rapide et efficace."
|
||||
"description": "DeepSeek R1 Distill Llama 70B est un grand modèle de langage basé sur Llama3.3 70B. Grâce au fine-tuning réalisé à partir des sorties de DeepSeek R1, il atteint des performances compétitives comparables à celles des modèles de pointe de grande envergure."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-8b": {
|
||||
"description": "DeepSeek R1 Distill Llama 8B est un modèle de langage distillé basé sur Llama-3.1-8B-Instruct, entraîné en utilisant les sorties de DeepSeek R1."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Une variante du modèle Gemini 2.0 Flash, optimisée pour des objectifs tels que le rapport coût-efficacité et la faible latence."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Modèle de prévisualisation Gemini 2.0 Flash, prenant en charge la génération d'images"
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash est le modèle le plus rentable de Google, offrant des fonctionnalités complètes."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "Gemini 2.5 Flash Preview est le modèle le plus rentable de Google, offrant des fonctionnalités complètes."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview est le modèle le plus rentable de Google, offrant des fonctionnalités complètes."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "Version de prévisualisation (25 septembre 2025) de Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview est le modèle de pensée le plus avancé de Google, capable de raisonner sur des problèmes complexes en code, mathématiques et domaines STEM, ainsi que d'analyser de grands ensembles de données, bibliothèques de code et documents avec un contexte étendu."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro est le modèle le plus intelligent de Google, doté d’un raisonnement de pointe, d’une compréhension multimodale, ainsi que de puissantes capacités d’agent et de codage d’ambiance."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Dernière version de Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct est un modèle efficace à faible nombre de paramètres lancé par Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "Modèle de base non réflexif open source de Meituan, optimisé pour les interactions conversationnelles et les tâches d'agents intelligents, offrant d'excellentes performances dans les appels d'outils et les scénarios d'interactions complexes à plusieurs tours."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "Un puissant modèle de 70 milliards de paramètres excelling dans le raisonnement, le codage et les applications linguistiques larges."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 est un modèle de langage de grande taille, efficace et conçu pour les flux de travail en codage et en automatisation."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Conçu pour un codage efficace et des flux de travail d'agents performants."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 est un modèle MoE (Mixture of Experts) compact, rapide et économique, doté de 230 milliards de paramètres totaux et de 10 milliards de paramètres actifs. Il est conçu pour offrir des performances optimales dans les tâches de codage et d'agents, tout en maintenant une intelligence générale robuste. Ce modèle excelle dans l'édition multi-fichiers, les boucles de codage-exécution-correction, la vérification et la correction de tests, ainsi que dans les chaînes d'outils complexes à long terme, ce qui en fait un choix idéal pour les flux de travail des développeurs."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B est le modèle de pointe de Mistral sur le marché."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 est un modèle de langage proposé par Microsoft AI, particulièrement performant dans les domaines des dialogues complexes, du multilinguisme, du raisonnement et des assistants intelligents."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "Nous sommes ravis de présenter Grok 4 Fast, notre dernière avancée en matière de modèles de raisonnement rentables."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "Nous sommes heureux de lancer grok-code-fast-1, un modèle de raisonnement rapide et économique, particulièrement performant pour le codage assisté par agent."
|
||||
},
|
||||
"x1": {
|
||||
"description": "Le modèle Spark X1 sera mis à niveau, et sur la base de ses performances déjà leaders dans les tâches mathématiques, il atteindra des résultats comparables dans des tâches générales telles que le raisonnement, la génération de texte et la compréhension du langage, en se mesurant à OpenAI o1 et DeepSeek R1."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "Modèle pour des tâches visuelles complexes, offrant des capacités de compréhension et d'analyse de haute performance basées sur plusieurs images."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6, le tout dernier modèle phare de Zhipu, surpasse son prédécesseur dans les domaines du codage avancé, du traitement de longs textes, du raisonnement et des capacités d'agents intelligents."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 est un modèle de base conçu pour les applications d'agents intelligents, utilisant une architecture Mixture-of-Experts (MoE). Il est profondément optimisé pour l'appel d'outils, la navigation web, l'ingénierie logicielle et la programmation front-end, supportant une intégration transparente avec des agents de code tels que Claude Code et Roo Code. GLM-4.5 utilise un mode d'inférence hybride, adapté à des scénarios variés allant du raisonnement complexe à l'usage quotidien."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "Mot de rappel"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Remplacer par",
|
||||
"oldString": "Rechercher",
|
||||
"replaceAll": "Remplacer toutes les occurrences",
|
||||
"replaceFirst": "Remplacer uniquement la première occurrence"
|
||||
},
|
||||
"file": "Fichier",
|
||||
"folder": "Dossier",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Lire le fichier",
|
||||
"readFileError": "Échec de la lecture du fichier, veuillez vérifier si le chemin du fichier est correct",
|
||||
"readFiles": "Lire les fichiers",
|
||||
"readFilesError": "Échec de la lecture des fichiers, veuillez vérifier si le chemin du fichier est correct"
|
||||
"readFilesError": "Échec de la lecture des fichiers, veuillez vérifier si le chemin du fichier est correct",
|
||||
"writeFile": {
|
||||
"characters": "caractères",
|
||||
"preview": "Aperçu du contenu",
|
||||
"truncated": "Tronqué"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Créer un nouvel enregistrement de recherche",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Interruttore di pensiero profondo"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Livello di pensiero"
|
||||
},
|
||||
"title": "Funzionalità di estensione del modello",
|
||||
"urlContext": {
|
||||
"desc": "Se abilitato, analizzerà automaticamente i link delle pagine web per ottenere il contenuto contestuale reale della pagina",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Screenshot",
|
||||
"settings": "Impostazioni di esportazione",
|
||||
"text": "Testo",
|
||||
"widthMode": {
|
||||
"label": "Modalità larghezza",
|
||||
"narrow": "Modalità schermo stretto",
|
||||
"wide": "Modalità schermo ampio"
|
||||
},
|
||||
"withBackground": "Con immagine di sfondo",
|
||||
"withFooter": "Con piè di pagina",
|
||||
"withPluginInfo": "Con informazioni sul plugin",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Inserire il motivo del rifiuto aiuterà l'agente a comprendere e ottimizzare le azioni future",
|
||||
"rejectTitle": "Rifiuta questa esecuzione dello strumento",
|
||||
"rejectedWithReason": "Questa esecuzione dello strumento è stata rifiutata: {{reason}}",
|
||||
"toolAbort": "L'utilizzo dello strumento è stato annullato dall'utente",
|
||||
"toolRejected": "Questa esecuzione dello strumento è stata rifiutata"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Collaborazioni commerciali",
|
||||
"support": "Supporto via email"
|
||||
},
|
||||
"new": "Nuovo",
|
||||
"oauth": "Accesso SSO",
|
||||
"officialSite": "Sito ufficiale",
|
||||
"ok": "OK",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "Il tuo contenuto potrebbe contenere informazioni personali sensibili. Per proteggere la privacy, rimuovi tali informazioni e riprova.",
|
||||
"default": "Contenuto bloccato: {{blockReason}}. Modifica la richiesta e riprova."
|
||||
},
|
||||
"InsufficientQuota": "Ci dispiace, la quota per questa chiave ha raggiunto il limite. Si prega di controllare il saldo dell'account o di aumentare la quota della chiave e riprovare.",
|
||||
"InsufficientQuota": "Siamo spiacenti, la quota associata a questa chiave ha raggiunto il limite. Verifica che il saldo del tuo account sia sufficiente oppure aumenta la quota della chiave e riprova.",
|
||||
"InvalidAccessCode": "Password incorrect or empty, please enter the correct access password, or add a custom API Key",
|
||||
"InvalidBedrockCredentials": "Autenticazione Bedrock non riuscita, controlla AccessKeyId/SecretAccessKey e riprova",
|
||||
"InvalidClerkUser": "Spiacenti, al momento non hai effettuato l'accesso. Per favore, effettua l'accesso o registrati prima di continuare.",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "Errore nella risposta del server del plugin. Verifica il file descrittivo del plugin, la configurazione del plugin o l'implementazione del server",
|
||||
"PluginSettingsInvalid": "Il plugin deve essere configurato correttamente prima di poter essere utilizzato. Verifica che la tua configurazione sia corretta",
|
||||
"ProviderBizError": "Errore di business del fornitore {{provider}}. Si prega di controllare le informazioni seguenti o riprovare.",
|
||||
"QuotaLimitReached": "Ci dispiace, l'uso attuale dei token o il numero di richieste ha raggiunto il limite di quota per questa chiave. Si prega di aumentare la quota di questa chiave o riprovare più tardi.",
|
||||
"QuotaLimitReached": "Siamo spiacenti, l'utilizzo dei token o il numero di richieste ha raggiunto il limite della quota per questa chiave. Aumenta la quota della chiave o riprova più tardi.",
|
||||
"StreamChunkError": "Erro di analisi del blocco di messaggi della richiesta in streaming. Controlla se l'interfaccia API attuale è conforme agli standard o contatta il tuo fornitore di API per ulteriori informazioni.",
|
||||
"SubscriptionKeyMismatch": "Ci scusiamo, ma a causa di un'imprevista anomalia di sistema, l'attuale utilizzo dell'abbonamento è temporaneamente non valido. Si prega di fare clic sul pulsante qui sotto per ripristinare l'abbonamento o contattarci via email per ricevere supporto.",
|
||||
"SubscriptionPlanLimit": "I tuoi punti di abbonamento sono esauriti, non puoi utilizzare questa funzione. Ti preghiamo di passare a un piano superiore o di configurare un modello API personalizzato per continuare a utilizzare.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Guida alla configurazione",
|
||||
"responsesApi": {
|
||||
"desc": "Utilizza il nuovo formato di richiesta di OpenAI per sbloccare funzionalità avanzate come la catena di pensiero",
|
||||
"desc": "Utilizza il nuovo formato di richiesta di OpenAI per sbloccare funzionalità avanzate come la catena di pensiero (supportato solo dai modelli OpenAI)",
|
||||
"title": "Utilizza lo standard Responses API"
|
||||
},
|
||||
"waitingForMore": "Altri modelli sono in fase di <1>implementazione</1>, resta sintonizzato"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 è un modello di inferenza a grande scala con pesi open source e attenzione mista, con 456 miliardi di parametri, di cui circa 45,9 miliardi attivati per ogni token. Il modello supporta nativamente un contesto ultra-lungo di 1 milione di token e, grazie al meccanismo di attenzione lampo, riduce del 75% il carico computazionale in operazioni floating point rispetto a DeepSeek R1 in compiti di generazione con 100.000 token. Inoltre, MiniMax-M1 adotta un'architettura MoE (Mixture of Experts), combinando l'algoritmo CISPO e un design di attenzione mista per un addestramento efficiente tramite apprendimento rinforzato, raggiungendo prestazioni leader nel settore per inferenze con input lunghi e scenari reali di ingegneria software."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 ridefinisce l'efficienza per gli agenti intelligenti. È un modello MoE compatto, veloce ed economico, con 230 miliardi di parametri totali e 10 miliardi di parametri attivi, progettato per offrire prestazioni di alto livello nei compiti di codifica e agenti, mantenendo al contempo una solida intelligenza generale. Con soli 10 miliardi di parametri attivi, MiniMax-M2 offre prestazioni paragonabili a quelle dei modelli su larga scala, rendendolo la scelta ideale per applicazioni ad alta efficienza."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "Con un totale di 1 trilione di parametri e 32 miliardi di parametri attivi, questo modello non pensante raggiunge livelli d'eccellenza in conoscenze all'avanguardia, matematica e programmazione, ed è particolarmente adatto a compiti di agenti generici. Ottimizzato per attività di agenti, non solo risponde a domande ma può anche agire. Ideale per chat improvvisate, conversazioni generiche e esperienze di agenti, è un modello riflessivo che non richiede lunghi tempi di elaborazione."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1 migliora notevolmente la capacità di ragionamento del modello anche con pochissimi dati annotati. Prima di fornire la risposta finale, il modello genera una catena di pensieri per aumentare la precisione della risposta."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-70b": {
|
||||
"description": "DeepSeek-R1-Distill-Llama-70B è una variante distillata e più efficiente del modello Llama da 70B. Mantiene prestazioni robuste nelle attività di generazione testuale, riducendo il carico computazionale per facilitare il deployment e la ricerca. Servito da Groq con il suo hardware personalizzato Language Processing Unit (LPU) per inferenze rapide ed efficienti."
|
||||
"description": "DeepSeek R1 Distill Llama 70B è un modello linguistico di grandi dimensioni basato su Llama3.3 70B. Grazie al fine-tuning effettuato con l'output di DeepSeek R1, il modello raggiunge prestazioni competitive paragonabili a quelle dei modelli all'avanguardia di grandi dimensioni."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-8b": {
|
||||
"description": "DeepSeek R1 Distill Llama 8B è un modello di linguaggio distillato basato su Llama-3.1-8B-Instruct, addestrato utilizzando l'output di DeepSeek R1."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Gemini 2.0 Flash è una variante del modello Flash, ottimizzata per obiettivi come il rapporto costo-efficacia e la bassa latenza."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Gemini 2.0 Flash modello di anteprima, supporta la generazione di immagini"
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash è il modello Google con il miglior rapporto qualità-prezzo, offrendo funzionalità complete."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "Gemini 2.5 Flash Preview è il modello più conveniente di Google, che offre funzionalità complete."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview è il modello Google con il miglior rapporto qualità-prezzo, che offre funzionalità complete."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "Versione anteprima (25 settembre 2025) di Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview è il modello di pensiero più avanzato di Google, capace di ragionare su problemi complessi in codice, matematica e ambito STEM, oltre a utilizzare contesti estesi per analizzare grandi dataset, librerie di codice e documenti."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro è il modello più intelligente di Google, con capacità all'avanguardia di ragionamento e comprensione multimodale, oltre a potenti funzionalità di agente e codifica del contesto."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Ultima versione di Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct è un modello efficiente a basso numero di parametri sviluppato da Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "Modello base non riflessivo open source di Meituan, ottimizzato per l'interazione dialogica e i compiti degli agenti intelligenti, eccelle nell'uso di strumenti e in scenari complessi di conversazione multi-turno."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "Un potente modello con 70 miliardi di parametri che eccelle nel ragionamento, nella codifica e nelle ampie applicazioni linguistiche."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 è un modello linguistico di grandi dimensioni, efficiente e progettato per flussi di lavoro di codifica e agenti intelligenti."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Progettato per una codifica efficiente e flussi di lavoro con agenti."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 è un modello MoE (Mixture of Experts) compatto, veloce ed economico, con 230 miliardi di parametri totali e 10 miliardi di parametri attivi, progettato per offrire prestazioni eccellenti nei compiti di codifica e agenti, mantenendo una forte intelligenza generale. Si distingue per le sue prestazioni in attività come l'editing di file multipli, il ciclo chiuso codifica-esecuzione-correzione, la verifica e correzione dei test, e le complesse catene di strumenti a collegamento lungo, rendendolo una scelta ideale per i flussi di lavoro degli sviluppatori."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B è il modello di punta di Mistral per edge computing."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 è un modello di linguaggio fornito da Microsoft AI, particolarmente efficace in dialoghi complessi, multilingue, ragionamento e assistenti intelligenti."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "Siamo lieti di presentare Grok 4 Fast, il nostro ultimo progresso nei modelli di inferenza ad alta efficienza in termini di costi."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "Siamo entusiasti di lanciare grok-code-fast-1, un modello di inferenza rapido ed economico, eccellente nella codifica per agenti."
|
||||
},
|
||||
"x1": {
|
||||
"description": "Il modello Spark X1 sarà ulteriormente aggiornato, raggiungendo risultati in compiti generali come ragionamento, generazione di testo e comprensione del linguaggio, in linea con OpenAI o1 e DeepSeek R1, partendo da una posizione di leadership nei compiti matematici."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "Modello per compiti visivi complessi, che offre capacità di comprensione e analisi ad alte prestazioni basate su più immagini."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6, il nuovo modello di punta di Zhipu, supera ampiamente la generazione precedente in codifica avanzata, gestione di testi lunghi, capacità di ragionamento e competenze degli agenti."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 è un modello base progettato per applicazioni agenti intelligenti, che utilizza un'architettura Mixture-of-Experts (MoE). Ottimizzato profondamente per chiamate a strumenti, navigazione web, ingegneria del software e programmazione frontend, supporta integrazioni fluide con agenti di codice come Claude Code e Roo Code. Adotta una modalità di inferenza ibrida per adattarsi a scenari di ragionamento complessi e uso quotidiano."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "parola chiave"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Sostituisci con",
|
||||
"oldString": "Trova",
|
||||
"replaceAll": "Sostituisci tutte le occorrenze",
|
||||
"replaceFirst": "Sostituisci solo la prima occorrenza"
|
||||
},
|
||||
"file": "File",
|
||||
"folder": "Cartella",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Leggi file",
|
||||
"readFileError": "Impossibile leggere il file, controlla se il percorso del file è corretto",
|
||||
"readFiles": "Leggi file",
|
||||
"readFilesError": "Impossibile leggere i file, controlla se il percorso del file è corretto"
|
||||
"readFilesError": "Impossibile leggere i file, controlla se il percorso del file è corretto",
|
||||
"writeFile": {
|
||||
"characters": "Caratteri",
|
||||
"preview": "Anteprima contenuto",
|
||||
"truncated": "Troncato"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Crea una nuova registrazione di ricerca",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "深い思考のスイッチ"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "思考レベル"
|
||||
},
|
||||
"title": "モデル拡張機能",
|
||||
"urlContext": {
|
||||
"desc": "有効にすると、実際のウェブページのコンテキスト内容を取得するためにウェブリンクを自動的に解析します",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "スクリーンショット",
|
||||
"settings": "エクスポート設定",
|
||||
"text": "テキスト",
|
||||
"widthMode": {
|
||||
"label": "幅のモード",
|
||||
"narrow": "ナローモード",
|
||||
"wide": "ワイドモード"
|
||||
},
|
||||
"withBackground": "背景画像を含む",
|
||||
"withFooter": "フッターを含む",
|
||||
"withPluginInfo": "プラグイン情報を含む",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "拒否理由を入力すると、エージェントが理解し今後の行動を最適化するのに役立ちます",
|
||||
"rejectTitle": "今回のツール呼び出しを拒否",
|
||||
"rejectedWithReason": "今回のツール呼び出しは次の理由で拒否されました:{{reason}}",
|
||||
"toolAbort": "このツールの呼び出しはユーザーによってキャンセルされました",
|
||||
"toolRejected": "今回のツール呼び出しは拒否されました"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "ビジネス提携",
|
||||
"support": "メールサポート"
|
||||
},
|
||||
"new": "新規",
|
||||
"oauth": "SSO ログイン",
|
||||
"officialSite": "公式サイト",
|
||||
"ok": "OK",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "コンテンツに個人の機密情報(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を設定して引き続き使用してください。",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "設定ガイド",
|
||||
"responsesApi": {
|
||||
"desc": "OpenAIの新世代リクエストフォーマット規格を採用し、チェーン思考などの高度な機能を解放します",
|
||||
"desc": "OpenAI の次世代リクエスト形式仕様を採用し、思考チェーンなどの高度な機能を解放します(OpenAI モデルのみ対応)",
|
||||
"title": "Responses API 規格の使用"
|
||||
},
|
||||
"waitingForMore": "さらに多くのモデルが <1>接続予定</1> です。お楽しみに"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1はオープンソースの重みを持つ大規模混合注意力推論モデルで、4560億のパラメータを有し、各トークンで約459億のパラメータが活性化されます。モデルは100万トークンの超長文コンテキストをネイティブにサポートし、ライトニングアテンション機構により10万トークンの生成タスクでDeepSeek R1と比べて75%の浮動小数点演算量を削減します。また、MiniMax-M1はMoE(混合エキスパート)アーキテクチャを採用し、CISPOアルゴリズムと混合注意力設計による効率的な強化学習トレーニングを組み合わせ、長文入力推論および実際のソフトウェア工学シナリオで業界最高の性能を実現しています。"
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 は、エージェントの効率性を再定義するコンパクトで高速かつコスト効率に優れた MoE(Mixture of Experts)モデルです。総パラメータ数は2,300億、アクティブパラメータは100億で、コーディングやエージェントタスクにおいて最高レベルの性能を発揮しつつ、強力な汎用知能を維持します。わずか100億のアクティブパラメータで、大規模モデルに匹敵する性能を実現しており、高効率なアプリケーションに最適な選択肢です。"
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "総パラメータ数1兆、活性化パラメータ320億。非思考モデルの中で、先端知識、数学、コーディングにおいてトップレベルの性能を持ち、汎用エージェントタスクに優れています。エージェントタスクに特化して最適化されており、質問に答えるだけでなく行動も可能です。即興的で汎用的なチャットやエージェント体験に最適で、長時間の思考を必要としない反射的モデルです。"
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"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の出力を使用してトレーニングされています。"
|
||||
@@ -1478,9 +1481,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のコストパフォーマンスに優れたモデルで、包括的な機能を提供します。"
|
||||
},
|
||||
@@ -1508,9 +1508,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": "Gemini 2.5 Flash のプレビューリリース(2025年9月25日)"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview は Google の最先端思考モデルで、コード、数学、STEM 分野の複雑な問題を推論し、長いコンテキストを用いて大規模なデータセット、コードベース、ドキュメントを分析できます。"
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro は、Google で最も高度なモデルであり、最先端の推論能力とマルチモーダルな理解力、さらに強力なエージェント機能とコンテキスト認識機能を備えています。"
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Gemini Flash の最新リリース"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct は WuWenXinQiong によって開発された小規模パラメータの高効率モデルです。"
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "美団がオープンソースで提供する、対話型インタラクションとエージェントタスクに最適化された非推論型基盤モデルであり、ツールの呼び出しや複雑なマルチターン対話シナリオにおいて優れた性能を発揮します。"
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "推論、コーディング、広範な言語アプリケーションに優れた70億パラメータの強力なモデルです。"
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2は、コーディングおよびエージェントワークフローのために構築された高効率な大規模言語モデルです。"
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "効率的なコーディングとエージェントワークフローのために設計されたモデルです。"
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 は、コンパクトで高速、かつコスト効率に優れた混合エキスパート(MoE)モデルで、総パラメータ数は2,300億、アクティブパラメータは100億です。コーディングやエージェントタスクにおいて最高の性能を発揮しながら、強力な汎用知能を維持します。複数ファイルの編集、コードの実行と修正のループ、テストによる検証と修復、複雑な長距離ツールチェーンの処理において優れた性能を示し、開発者のワークフローに最適なモデルです。"
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3BはMistralの世界トップクラスのエッジモデルです。"
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2は、Microsoft AIが提供する言語モデルであり、複雑な対話、多言語、推論、インテリジェントアシスタントの分野で特に優れた性能を発揮します。"
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "Grok 4 Fast をリリースできることを嬉しく思います。これは、コスト効率の高い推論モデルにおける最新の進展です。"
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "grok-code-fast-1 を発表できることを嬉しく思います。これは、高速かつ経済的な推論モデルであり、エージェントによるコーディングにおいて優れた性能を発揮します。"
|
||||
},
|
||||
"x1": {
|
||||
"description": "Spark X1 モデルはさらにアップグレードされ、元の数学タスクで国内のリーダーシップを維持しつつ、推論、テキスト生成、言語理解などの一般的なタスクで OpenAI o1 および DeepSeek R1 に匹敵する効果を実現します。"
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "複雑な視覚タスクモデルで、複数の画像に基づく高性能な理解と分析能力を提供します。"
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "智譜の最新フラッグシップモデル GLM-4.6 は、高度なコーディング、長文処理、推論およびエージェント能力において前世代を大きく上回る性能を実現しています。"
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5はエージェントアプリケーション向けに設計された基盤モデルで、混合専門家(Mixture-of-Experts)アーキテクチャを採用。ツール呼び出し、ウェブブラウジング、ソフトウェア工学、フロントエンドプログラミング分野で深く最適化され、Claude CodeやRoo Codeなどのコードエージェントへのシームレスな統合をサポートします。混合推論モードを採用し、複雑な推論や日常利用など多様なシナリオに適応可能です。"
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "プロンプト"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "置換後の文字列",
|
||||
"oldString": "検索文字列",
|
||||
"replaceAll": "すべて置換",
|
||||
"replaceFirst": "最初の一致のみ置換"
|
||||
},
|
||||
"file": "ファイル",
|
||||
"folder": "フォルダー",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "ファイルを読み込む",
|
||||
"readFileError": "ファイルの読み込みに失敗しました。ファイルパスが正しいか確認してください。",
|
||||
"readFiles": "ファイルを読み込む",
|
||||
"readFilesError": "ファイルの読み込みに失敗しました。ファイルパスが正しいか確認してください。"
|
||||
"readFilesError": "ファイルの読み込みに失敗しました。ファイルパスが正しいか確認してください。",
|
||||
"writeFile": {
|
||||
"characters": "文字数",
|
||||
"preview": "内容プレビュー",
|
||||
"truncated": "切り捨てられました"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "新しい検索記録を作成",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "심층 사고 스위치"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "사고 수준"
|
||||
},
|
||||
"title": "모델 확장 기능",
|
||||
"urlContext": {
|
||||
"desc": "활성화하면 실제 웹페이지 컨텍스트 내용을 얻기 위해 웹 링크를 자동으로 분석합니다",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "스크린샷",
|
||||
"settings": "내보내기 설정",
|
||||
"text": "텍스트",
|
||||
"widthMode": {
|
||||
"label": "너비 모드",
|
||||
"narrow": "좁은 화면 모드",
|
||||
"wide": "넓은 화면 모드"
|
||||
},
|
||||
"withBackground": "배경 이미지 포함",
|
||||
"withFooter": "푸터 포함",
|
||||
"withPluginInfo": "플러그인 정보 포함",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "거부 사유를 입력하면 에이전트가 이해하고 이후 행동을 최적화하는 데 도움이 됩니다",
|
||||
"rejectTitle": "이번 도구 호출 거부",
|
||||
"rejectedWithReason": "이번 도구 호출이 다음 사유로 거부됨: {{reason}}",
|
||||
"toolAbort": "이번 도구 호출이 사용자에 의해 취소되었습니다",
|
||||
"toolRejected": "이번 도구 호출이 거부되었습니다"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "비즈니스 제휴",
|
||||
"support": "이메일 지원"
|
||||
},
|
||||
"new": "새로운",
|
||||
"oauth": "SSO 로그인",
|
||||
"officialSite": "공식 웹사이트",
|
||||
"ok": "확인",
|
||||
|
||||
@@ -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를 구성한 후 계속 사용하십시오.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "설정 가이드",
|
||||
"responsesApi": {
|
||||
"desc": "OpenAI의 차세대 요청 형식 규격을 사용하여 Chain of Thought 등 고급 기능을 활성화합니다",
|
||||
"desc": "OpenAI의 차세대 요청 형식 규격을 사용하여, 사고의 흐름 등 고급 기능을 활성화합니다 (OpenAI 모델에서만 지원됨)",
|
||||
"title": "Responses API 규격 사용"
|
||||
},
|
||||
"waitingForMore": "더 많은 모델이 <1>도입 예정</1>입니다. 기대해 주세요"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1은 오픈 소스 가중치를 가진 대규모 혼합 주의 추론 모델로, 4,560억 개의 파라미터를 보유하고 있으며, 각 토큰당 약 459억 개의 파라미터가 활성화됩니다. 모델은 100만 토큰의 초장기 문맥을 원활히 지원하며, 번개 주의 메커니즘을 통해 10만 토큰 생성 작업에서 DeepSeek R1 대비 75%의 부동 소수점 연산량을 절감합니다. 또한 MiniMax-M1은 MoE(혼합 전문가) 아키텍처를 채택하고, CISPO 알고리즘과 혼합 주의 설계가 결합된 효율적인 강화 학습 훈련을 통해 긴 입력 추론과 실제 소프트웨어 엔지니어링 환경에서 업계 선도적인 성능을 구현합니다."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2는 에이전트를 위한 효율성을 새롭게 정의합니다. 이 모델은 2,300억 개의 총 파라미터와 100억 개의 활성 파라미터를 갖춘 컴팩트하고 빠르며 경제적인 MoE(Mixture of Experts) 모델로, 코딩 및 에이전트 작업에서 최고의 성능을 발휘하도록 설계되었으며, 강력한 범용 인공지능을 유지합니다. 단 100억 개의 활성 파라미터만으로도 대규모 모델에 필적하는 성능을 제공하여, 고효율 애플리케이션에 이상적인 선택이 됩니다."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "총 파라미터 1조, 활성화 파라미터 320억. 비사고 모델 중에서 최첨단 지식, 수학, 코딩 분야에서 최고 수준을 달성했으며, 범용 에이전트 작업에 더 강합니다. 에이전트 작업에 최적화되어 질문에 답변할 뿐만 아니라 행동도 수행할 수 있습니다. 즉흥적이고 범용적인 대화 및 에이전트 경험에 가장 적합하며, 장시간 사고가 필요 없는 반사 수준 모델입니다."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1은 매우 적은 라벨 데이터만으로도 모델 추론 능력을 크게 향상시켰습니다. 최종 답변 출력 전에 모델이 사고 과정(chain-of-thought)을 먼저 출력하여 최종 답변의 정확도를 높입니다."
|
||||
},
|
||||
"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의 출력을 사용하여 훈련되었습니다."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Gemini 2.0 플래시 모델 변형으로, 비용 효율성과 낮은 지연 시간 등의 목표를 위해 최적화되었습니다."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Gemini 2.0 Flash 미리보기 모델로, 이미지 생성을 지원합니다."
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash는 구글에서 가장 가성비가 뛰어난 모델로, 포괄적인 기능을 제공합니다."
|
||||
},
|
||||
@@ -1508,9 +1508,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": "Gemini 2.5 Flash의 미리보기 버전 (2025년 9월 25일)"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview는 구글의 최첨단 사고 모델로, 코드, 수학 및 STEM 분야의 복잡한 문제를 추론할 수 있으며, 긴 문맥을 활용해 대규모 데이터셋, 코드베이스 및 문서를 분석합니다."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro는 Google의 가장 지능적인 모델로, 최첨단 추론 및 멀티모달 이해 능력과 강력한 에이전트 기능 및 분위기 인코딩 기능을 갖추고 있습니다."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Gemini Flash 최신 버전"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct는 Wuwen Xinqiong에서 출시한 소형 파라미터 고효율 모델입니다."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "메이투안이 오픈소스로 공개한 비사고형 기반 모델로, 대화 상호작용과 에이전트 작업에 최적화되어 있으며, 도구 호출 및 복잡한 다중 회화 시나리오에서 뛰어난 성능을 발휘합니다."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "추론, 코딩 및 광범위한 언어 응용 프로그램에서 뛰어난 성능을 발휘하는 강력한 70억 매개변수 모델입니다."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2는 코딩 및 에이전트 워크플로우를 위해 설계된 효율적인 대형 언어 모델입니다."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "효율적인 코딩과 에이전트 워크플로우를 위해 설계되었습니다."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2는 2,300억 개의 총 파라미터와 100억 개의 활성 파라미터를 갖춘 컴팩트하고 빠르며 경제적인 혼합 전문가(MoE) 모델로, 코딩 및 에이전트 작업에서 최고의 성능을 발휘하도록 설계되었으며, 강력한 범용 인공지능을 유지합니다. 이 모델은 다중 파일 편집, 코드 실행-수정의 루프, 테스트 기반 검증 및 수정, 복잡한 장기 연결 툴체인 등에서 뛰어난 성능을 보여주며, 개발자 워크플로우에 이상적인 선택입니다."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B는 Mistral의 세계적 수준의 엣지 모델입니다."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2는 Microsoft AI에서 제공하는 언어 모델로, 복잡한 대화, 다국어, 추론 및 스마트 어시스턴트 분야에서 특히 뛰어난 성능을 발휘합니다."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "Grok 4 Fast를 출시하게 되어 매우 기쁩니다. 이는 비용 효율적인 추론 모델 분야에서 우리의 최신 성과입니다."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "grok-code-fast-1을 출시하게 되어 기쁩니다. 이 모델은 빠르고 경제적인 추론 성능을 제공하며, 에이전트 기반 코딩 작업에서 탁월한 성능을 보입니다."
|
||||
},
|
||||
"x1": {
|
||||
"description": "Spark X1 모델은 추가 업그레이드를 통해 기존의 수학 과제에서 국내 선두를 유지하며, 추론, 텍스트 생성, 언어 이해 등 일반 과제에서 OpenAI o1 및 DeepSeek R1과 동등한 성과를 달성합니다."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "복잡한 시각적 작업 모델로, 여러 이미지를 기반으로 한 고성능 이해 및 분석 능력을 제공합니다."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "Zhipu의 최신 플래그십 모델 GLM-4.6은 고급 코딩, 장문 처리, 추론 및 에이전트 능력에서 전 세대를 뛰어넘는 성능을 자랑합니다."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5는 에이전트 애플리케이션을 위해 설계된 기본 모델로, 혼합 전문가(Mixture-of-Experts) 아키텍처를 사용합니다. 도구 호출, 웹 브라우징, 소프트웨어 엔지니어링, 프론트엔드 프로그래밍 분야에서 깊이 최적화되었으며, Claude Code, Roo Code 등 코드 에이전트에 원활히 통합될 수 있습니다. GLM-4.5는 혼합 추론 모드를 채택하여 복잡한 추론과 일상 사용 등 다양한 응용 시나리오에 적응할 수 있습니다."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "프롬프트"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "다음으로 바꾸기",
|
||||
"oldString": "찾을 내용",
|
||||
"replaceAll": "모든 항목 바꾸기",
|
||||
"replaceFirst": "첫 번째 항목만 바꾸기"
|
||||
},
|
||||
"file": "파일",
|
||||
"folder": "폴더",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "파일 읽기",
|
||||
"readFileError": "파일을 읽는 데 실패했습니다. 파일 경로가 올바른지 확인하세요.",
|
||||
"readFiles": "파일 읽기",
|
||||
"readFilesError": "파일을 읽는 데 실패했습니다. 파일 경로가 올바른지 확인하세요."
|
||||
"readFilesError": "파일을 읽는 데 실패했습니다. 파일 경로가 올바른지 확인하세요.",
|
||||
"writeFile": {
|
||||
"characters": "문자 수",
|
||||
"preview": "내용 미리보기",
|
||||
"truncated": "잘림"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "새 검색 기록 만들기",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Diepdenkschakelaar"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Denkniveau"
|
||||
},
|
||||
"title": "Modeluitbreidingsfunctie",
|
||||
"urlContext": {
|
||||
"desc": "Na inschakeling worden webkoppelingen automatisch geanalyseerd om de daadwerkelijke inhoud van de webpagina te verkrijgen",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Screenshot",
|
||||
"settings": "Exportinstellingen",
|
||||
"text": "Tekst",
|
||||
"widthMode": {
|
||||
"label": "Breedtemodus",
|
||||
"narrow": "Smalle schermmodus",
|
||||
"wide": "Brede schermmodus"
|
||||
},
|
||||
"withBackground": "Met achtergrondafbeelding",
|
||||
"withFooter": "Met voettekst",
|
||||
"withPluginInfo": "Met plug-in informatie",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Het opgeven van een reden helpt de agent om toekomstige acties te verbeteren",
|
||||
"rejectTitle": "Huidige tooloproep weigeren",
|
||||
"rejectedWithReason": "Deze tooloproep is geweigerd met reden: {{reason}}",
|
||||
"toolAbort": "Deze hulpmiddeloproep is door de gebruiker geannuleerd",
|
||||
"toolRejected": "Deze tooloproep is geweigerd"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Zakelijke samenwerking",
|
||||
"support": "E-mailondersteuning"
|
||||
},
|
||||
"new": "Nieuw",
|
||||
"oauth": "SSO inloggen",
|
||||
"officialSite": "Officiële website",
|
||||
"ok": "Oké",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "Uw inhoud kan gevoelige persoonlijke identificatiegegevens bevatten. Verwijder dergelijke gevoelige gegevens om de privacy te beschermen en probeer het opnieuw.",
|
||||
"default": "Inhoud geblokkeerd: {{blockReason}}. Pas uw verzoek aan en probeer het opnieuw."
|
||||
},
|
||||
"InsufficientQuota": "Het spijt ons, de quotum van deze sleutel is bereikt. Controleer of uw account voldoende saldo heeft of vergroot het sleutelquotum en probeer het opnieuw.",
|
||||
"InsufficientQuota": "Het spijt ons, het quotum voor deze sleutel is bereikt. Controleer of het saldo van uw account toereikend is of verhoog het quotum van de sleutel en probeer het opnieuw.",
|
||||
"InvalidAccessCode": "Ongeldige toegangscode: het wachtwoord is onjuist of leeg. Voer de juiste toegangscode in of voeg een aangepaste API-sleutel toe.",
|
||||
"InvalidBedrockCredentials": "Bedrock authentication failed, please check AccessKeyId/SecretAccessKey and retry",
|
||||
"InvalidClerkUser": "Sorry, you are not currently logged in. Please log in or register an account to continue.",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "Fout bij serverrespons voor plug-in. Controleer de foutinformatie hieronder voor uw plug-inbeschrijvingsbestand, plug-inconfiguratie of serverimplementatie",
|
||||
"PluginSettingsInvalid": "Deze plug-in moet correct geconfigureerd zijn voordat deze kan worden gebruikt. Controleer of uw configuratie juist is",
|
||||
"ProviderBizError": "Er is een fout opgetreden bij het aanvragen van de {{provider}}-service. Controleer de volgende informatie of probeer het opnieuw.",
|
||||
"QuotaLimitReached": "Het spijt ons, het huidige tokenverbruik of het aantal verzoeken heeft de quota-limiet van deze sleutel bereikt. Verhoog de quota van deze sleutel of probeer het later opnieuw.",
|
||||
"QuotaLimitReached": "Het spijt ons, het aantal tokens of verzoeken heeft het quotum voor deze sleutel bereikt. Verhoog het quotum van de sleutel of probeer het later opnieuw.",
|
||||
"StreamChunkError": "Fout bij het parseren van het berichtblok van de streamingaanroep. Controleer of de huidige API-interface voldoet aan de standaardnormen, of neem contact op met uw API-leverancier voor advies.",
|
||||
"SubscriptionKeyMismatch": "Het spijt ons, maar door een tijdelijke systeemfout is het huidige abonnement tijdelijk ongeldig. Klik op de onderstaande knop om het abonnement te herstellen, of neem contact met ons op via e-mail voor ondersteuning.",
|
||||
"SubscriptionPlanLimit": "Uw abonnementscredits zijn op, u kunt deze functie niet gebruiken. Upgrade naar een hoger plan of configureer de aangepaste model-API om door te gaan.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Configuratiehandleiding",
|
||||
"responsesApi": {
|
||||
"desc": "Gebruik de nieuwe generatie OpenAI-aanvraagformaatstandaard om geavanceerde functies zoals keten van gedachten te ontgrendelen",
|
||||
"desc": "Maakt gebruik van het nieuwe generatie aanvraagformaat van OpenAI om geavanceerde functies zoals Chain of Thought te ontgrendelen (alleen ondersteund door OpenAI-modellen)",
|
||||
"title": "Gebruik Responses API-standaard"
|
||||
},
|
||||
"waitingForMore": "Meer modellen zijn in <1>planning voor integratie</1>, blijf op de hoogte"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 is een open-source gewichtenschaalmodel met gemengde aandacht, met 456 miljard parameters, waarbij elke token ongeveer 45,9 miljard parameters activeert. Het model ondersteunt native een ultralange context van 1 miljoen tokens en bespaart dankzij het bliksemaandachtmechanisme 75% van de floating-point-bewerkingen bij generatietaken van 100.000 tokens vergeleken met DeepSeek R1. Tegelijkertijd maakt MiniMax-M1 gebruik van een MoE (Mixture of Experts) architectuur, gecombineerd met het CISPO-algoritme en een efficiënt versterkend leermodel met gemengde aandacht, wat leidt tot toonaangevende prestaties bij lange invoerredenering en echte software-engineering scenario's."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 herdefinieert efficiëntie voor agents. Het is een compact, snel en kosteneffectief MoE-model met 230 miljard totale parameters en 10 miljard actieve parameters. Het is ontworpen voor topprestaties bij codering en agenttaken, terwijl het een sterke algemene intelligentie behoudt. Met slechts 10 miljard actieve parameters levert MiniMax-M2 prestaties die vergelijkbaar zijn met grootschalige modellen, waardoor het een ideale keuze is voor toepassingen met hoge efficiëntie."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "Met in totaal 1 biljoen parameters en 32 miljard geactiveerde parameters is dit het toonaangevende niet-denkende model op het gebied van geavanceerde kennis, wiskunde en codering, en is het beter geschikt voor algemene agenttaken. Het is zorgvuldig geoptimaliseerd voor agenttaken, kan niet alleen vragen beantwoorden maar ook acties ondernemen. Ideaal voor improvisatie, algemene chat en agentervaringen, het is een reflexniveau model zonder lange denktijd."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1 verbetert de redeneercapaciteit van het model aanzienlijk, zelfs met zeer weinig gelabelde data. Voor het geven van het uiteindelijke antwoord genereert het model eerst een keten van gedachten om de nauwkeurigheid van het antwoord te verhogen."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-70b": {
|
||||
"description": "DeepSeek-R1-Distill-Llama-70B is een gedistilleerde, efficiëntere variant van het 70B Llama-model. Het behoudt sterke prestaties bij tekstgeneratietaken en vermindert de rekenbelasting voor gemakkelijke implementatie en onderzoek. Gehost door Groq met hun aangepaste Language Processing Unit (LPU) hardware voor snelle en efficiënte inferentie."
|
||||
"description": "DeepSeek R1 Distill Llama 70B is een groot taalmodel gebaseerd op Llama3.3 70B. Het model maakt gebruik van fine-tuning op basis van de output van DeepSeek R1 en behaalt concurrerende prestaties die vergelijkbaar zijn met toonaangevende grote modellen."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-8b": {
|
||||
"description": "DeepSeek R1 Distill Llama 8B is een gedistilleerd groot taalmodel gebaseerd op Llama-3.1-8B-Instruct, dat is getraind met behulp van de output van DeepSeek R1."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Gemini 2.0 Flash is een modelvariant die is geoptimaliseerd voor kosteneffectiviteit en lage latentie."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Gemini 2.0 Flash previewmodel, ondersteunt beeldgeneratie"
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash is het meest kosteneffectieve model van Google en biedt uitgebreide functionaliteiten."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "Gemini 2.5 Flash Preview is het meest kosteneffectieve model van Google, dat uitgebreide functionaliteit biedt."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview is het meest kosteneffectieve model van Google en biedt uitgebreide functionaliteiten."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "Preview release (25 september 2025) van Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview is Google's meest geavanceerde denkwijze-model, in staat om complexe problemen op het gebied van code, wiskunde en STEM te redeneren, en grote datasets, codebases en documenten te analyseren met lange context."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro is het meest geavanceerde model van Google, met state-of-the-art redeneringsvermogen en multimodale interpretatie, evenals krachtige agent- en contextcodering."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Laatste release van Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct is een efficiënt model met een klein aantal parameters, ontwikkeld door Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "Longcat Flash Chat is een open-source basismodel van Meituan, geoptimaliseerd voor dialooginteractie en agent-taken. Het blinkt uit in gereedschapsgebruik en complexe meerstapsgesprekken."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "Een krachtig model met 70 miljard parameters dat uitblinkt in redeneren, coderen en brede taaltoepassingen."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 is een efficiënt groot taalmodel dat speciaal is ontwikkeld voor programmeer- en agentworkflows."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Speciaal ontworpen voor efficiënte codering en agent-workflows."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 is een compact, snel en kosteneffectief Mixture-of-Experts (MoE) model met 230 miljard totale parameters en 10 miljard actieve parameters. Het is ontworpen voor topprestaties bij codering en agenttaken, terwijl het een sterke algemene intelligentie behoudt. Het model blinkt uit in bewerkingen met meerdere bestanden, de code-run-fix-cyclus, testvalidatie en -correctie, en complexe langetermijn toolchains, waardoor het een ideale keuze is voor ontwikkelaarsworkflows."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B is het toonaangevende edge-model van Mistral."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 is een taalmodel van Microsoft AI dat uitblinkt in complexe gesprekken, meertaligheid, inferentie en intelligente assistentie."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "We zijn verheugd om Grok 4 Fast te introduceren, onze nieuwste vooruitgang op het gebied van kostenefficiënte redeneermodellen."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "We zijn trots om grok-code-fast-1 te lanceren, een snel en kostenefficiënt redeneermodel dat uitblinkt in agentgebaseerde codering."
|
||||
},
|
||||
"x1": {
|
||||
"description": "Het Spark X1-model zal verder worden geüpgraded, met verbeterde prestaties in redenering, tekstgeneratie en taalbegrip, ter vergelijking met OpenAI o1 en DeepSeek R1."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "Complex visietakenmodel dat hoge prestaties biedt in begrip en analyse op basis van meerdere afbeeldingen."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6 is het nieuwste vlaggenschipmodel van Zhipu AI en overtreft zijn voorgangers op het gebied van geavanceerde codering, lange tekstverwerking, redeneren en agentcapaciteiten."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 is een basis model speciaal ontworpen voor agenttoepassingen, gebruikmakend van een Mixture-of-Experts (MoE) architectuur. Het is diep geoptimaliseerd voor toolaanroepen, web browsing, software engineering en frontend programmeren, en ondersteunt naadloze integratie met code-agents zoals Claude Code en Roo Code. GLM-4.5 gebruikt een hybride redeneermodus en is geschikt voor complexe redenering en dagelijks gebruik."
|
||||
},
|
||||
|
||||
+12
-1
@@ -15,6 +15,12 @@
|
||||
"prompt": "prompt"
|
||||
},
|
||||
"localFiles": {
|
||||
"editFile": {
|
||||
"newString": "Vervangen door",
|
||||
"oldString": "Zoekterm",
|
||||
"replaceAll": "Alles vervangen",
|
||||
"replaceFirst": "Alleen eerste vervangen"
|
||||
},
|
||||
"file": "Bestand",
|
||||
"folder": "Map",
|
||||
"moveFiles": {
|
||||
@@ -34,7 +40,12 @@
|
||||
"readFile": "Bestand lezen",
|
||||
"readFileError": "Fout bij het lezen van het bestand, controleer of het bestandspad correct is",
|
||||
"readFiles": "Bestanden lezen",
|
||||
"readFilesError": "Fout bij het lezen van bestanden, controleer of het bestandspad correct is"
|
||||
"readFilesError": "Fout bij het lezen van bestanden, controleer of het bestandspad correct is",
|
||||
"writeFile": {
|
||||
"characters": "Tekens",
|
||||
"preview": "Voorbeeld van inhoud",
|
||||
"truncated": "Afgekapt"
|
||||
}
|
||||
},
|
||||
"search": {
|
||||
"createNewSearch": "Maak een nieuwe zoekopdracht",
|
||||
|
||||
@@ -65,6 +65,9 @@
|
||||
"thinking": {
|
||||
"title": "Przełącznik głębokiego myślenia"
|
||||
},
|
||||
"thinkingLevel": {
|
||||
"title": "Poziom myślenia"
|
||||
},
|
||||
"title": "Funkcje rozszerzenia modelu",
|
||||
"urlContext": {
|
||||
"desc": "Po włączeniu automatycznie analizuje linki do stron internetowych, aby uzyskać rzeczywistą zawartość kontekstu strony",
|
||||
@@ -330,6 +333,11 @@
|
||||
"screenshot": "Zrzut ekranu",
|
||||
"settings": "Ustawienia eksportu",
|
||||
"text": "Tekst",
|
||||
"widthMode": {
|
||||
"label": "Tryb szerokości",
|
||||
"narrow": "Tryb wąskiego ekranu",
|
||||
"wide": "Tryb szerokiego ekranu"
|
||||
},
|
||||
"withBackground": "Z tłem",
|
||||
"withFooter": "Z stopką",
|
||||
"withPluginInfo": "Z informacjami o wtyczce",
|
||||
@@ -391,6 +399,7 @@
|
||||
"rejectReasonPlaceholder": "Wprowadzenie powodu odrzucenia pomoże Agentowi zrozumieć i zoptymalizować przyszłe działania",
|
||||
"rejectTitle": "Odrzuć to wywołanie narzędzia",
|
||||
"rejectedWithReason": "To wywołanie narzędzia zostało odrzucone: {{reason}}",
|
||||
"toolAbort": "To wywołanie narzędzia zostało anulowane przez użytkownika",
|
||||
"toolRejected": "To wywołanie narzędzia zostało odrzucone"
|
||||
}
|
||||
},
|
||||
|
||||
@@ -283,6 +283,7 @@
|
||||
"business": "Współpraca biznesowa",
|
||||
"support": "Wsparcie mailowe"
|
||||
},
|
||||
"new": "Nowy",
|
||||
"oauth": "Logowanie SSO",
|
||||
"officialSite": "Oficjalna strona internetowa",
|
||||
"ok": "OK",
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
"SPII": "Twoja treść może zawierać wrażliwe dane osobowe. Aby chronić prywatność, usuń te informacje i spróbuj ponownie.",
|
||||
"default": "Treść została zablokowana: {{blockReason}}. Dostosuj proszę zapytanie i spróbuj ponownie."
|
||||
},
|
||||
"InsufficientQuota": "Przykro nam, limit dla tego klucza został osiągnięty. Proszę sprawdzić saldo konta lub zwiększyć limit klucza i spróbować ponownie.",
|
||||
"InsufficientQuota": "Przepraszamy, limit przydziału (quota) dla tego klucza został osiągnięty. Proszę sprawdzić, czy saldo konta jest wystarczające lub zwiększyć przydział klucza i spróbować ponownie.",
|
||||
"InvalidAccessCode": "Nieprawidłowy kod dostępu: Hasło jest nieprawidłowe lub puste. Proszę wprowadzić poprawne hasło dostępu lub dodać niestandardowy klucz API.",
|
||||
"InvalidBedrockCredentials": "Uwierzytelnienie Bedrock nie powiodło się, prosimy sprawdzić AccessKeyId/SecretAccessKey i spróbować ponownie.",
|
||||
"InvalidClerkUser": "Przepraszamy, nie jesteś obecnie zalogowany. Proszę najpierw zalogować się lub zarejestrować, aby kontynuować.",
|
||||
@@ -131,7 +131,7 @@
|
||||
"PluginServerError": "Błąd zwrócony przez serwer wtyczki. Proszę sprawdź plik opisowy wtyczki, konfigurację wtyczki lub implementację serwera zgodnie z poniższymi informacjami o błędzie",
|
||||
"PluginSettingsInvalid": "Ta wtyczka wymaga poprawnej konfiguracji przed użyciem. Proszę sprawdź, czy Twoja konfiguracja jest poprawna",
|
||||
"ProviderBizError": "Wystąpił błąd usługi {{provider}}, proszę sprawdzić poniższe informacje lub spróbować ponownie",
|
||||
"QuotaLimitReached": "Przykro nam, bieżące zużycie tokenów lub liczba żądań osiągnęła limit kwoty dla tego klucza. Proszę zwiększyć limit kwoty dla tego klucza lub spróbować ponownie później.",
|
||||
"QuotaLimitReached": "Przepraszamy, bieżące zużycie tokenów lub liczba żądań osiągnęły limit przydziału (quota) dla tego klucza. Proszę zwiększyć przydział klucza lub spróbować ponownie później.",
|
||||
"StreamChunkError": "Błąd analizy bloku wiadomości w żądaniu strumieniowym. Proszę sprawdzić, czy aktualny interfejs API jest zgodny z normami, lub skontaktować się z dostawcą API w celu uzyskania informacji.",
|
||||
"SubscriptionKeyMismatch": "Przepraszamy, z powodu sporadycznych awarii systemu, bieżące zużycie subskrypcji jest tymczasowo nieaktywne. Proszę kliknąć przycisk poniżej, aby przywrócić subskrypcję lub skontaktować się z nami drogą mailową w celu uzyskania wsparcia.",
|
||||
"SubscriptionPlanLimit": "Twoje punkty subskrypcyjne zostały wyczerpane, nie możesz korzystać z tej funkcji. Proszę zaktualizować do wyższego planu lub skonfigurować API modelu niestandardowego, aby kontynuować korzystanie.",
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
},
|
||||
"helpDoc": "Dokumentacja konfiguracyjna",
|
||||
"responsesApi": {
|
||||
"desc": "Wykorzystuje nową generację formatu zapytań OpenAI, odblokowując zaawansowane funkcje, takie jak łańcuchy myślowe",
|
||||
"desc": "Zgodne z nowym formatem żądań OpenAI, umożliwia korzystanie z zaawansowanych funkcji, takich jak łańcuchy myślowe (obsługiwane tylko przez modele OpenAI)",
|
||||
"title": "Użyj specyfikacji Responses API"
|
||||
},
|
||||
"waitingForMore": "Więcej modeli jest w <1>planach integracji</1>, proszę czekać"
|
||||
|
||||
@@ -236,6 +236,9 @@
|
||||
"MiniMaxAI/MiniMax-M1-80k": {
|
||||
"description": "MiniMax-M1 to otwartoźródłowy model inferencyjny o dużej skali z mieszanym mechanizmem uwagi, posiadający 456 miliardów parametrów, z których około 45,9 miliarda jest aktywowanych na każdy token. Model natywnie obsługuje ultra-długi kontekst do 1 miliona tokenów i dzięki mechanizmowi błyskawicznej uwagi oszczędza 75% operacji zmiennoprzecinkowych w zadaniach generowania na 100 tysiącach tokenów w porównaniu do DeepSeek R1. Ponadto MiniMax-M1 wykorzystuje architekturę MoE (mieszani eksperci), łącząc algorytm CISPO z efektywnym treningiem wzmacniającym opartym na mieszanej uwadze, osiągając wiodącą w branży wydajność w inferencji długich wejść i rzeczywistych scenariuszach inżynierii oprogramowania."
|
||||
},
|
||||
"MiniMaxAI/MiniMax-M2": {
|
||||
"description": "MiniMax-M2 na nowo definiuje wydajność agentów inteligentnych. To kompaktowy, szybki i ekonomiczny model MoE (Mixture of Experts) z 230 miliardami całkowitych parametrów i 10 miliardami aktywnych parametrów, zaprojektowany z myślą o najwyższej wydajności w zadaniach kodowania i agentowych, przy jednoczesnym zachowaniu silnej inteligencji ogólnej. Dzięki zaledwie 10 miliardom aktywnych parametrów, MiniMax-M2 oferuje wydajność porównywalną z dużymi modelami, co czyni go idealnym wyborem dla zastosowań wymagających wysokiej efektywności."
|
||||
},
|
||||
"Moonshot-Kimi-K2-Instruct": {
|
||||
"description": "Model o łącznej liczbie parametrów 1 biliona i aktywowanych 32 miliardach parametrów. Wśród modeli nie myślących osiąga czołowe wyniki w wiedzy specjalistycznej, matematyce i kodowaniu, lepiej radząc sobie z zadaniami ogólnymi agenta. Model jest starannie zoptymalizowany pod kątem zadań agenta, potrafi nie tylko odpowiadać na pytania, ale także podejmować działania. Idealny do improwizacji, ogólnej rozmowy i doświadczeń agenta, działający na poziomie refleksu bez potrzeby długiego przetwarzania."
|
||||
},
|
||||
@@ -1155,7 +1158,7 @@
|
||||
"description": "DeepSeek-R1 znacząco poprawia zdolność wnioskowania modelu nawet przy minimalnej ilości oznaczonych danych. Przed wygenerowaniem ostatecznej odpowiedzi model najpierw generuje łańcuch myślowy, co zwiększa dokładność końcowej odpowiedzi."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-70b": {
|
||||
"description": "DeepSeek-R1-Distill-Llama-70B to zdystylowana, bardziej wydajna wersja modelu Llama 70B. Utrzymuje silną wydajność w zadaniach generowania tekstu, zmniejszając koszty obliczeniowe dla łatwiejszego wdrożenia i badań. Obsługiwany przez Groq na ich niestandardowym sprzęcie LPU, zapewnia szybkie i efektywne wnioskowanie."
|
||||
"description": "DeepSeek R1 Distill Llama 70B to duży model językowy oparty na Llama3.3 70B, który dzięki dostrojeniu na podstawie wyników DeepSeek R1 osiąga konkurencyjną wydajność porównywalną z czołowymi modelami najnowszej generacji."
|
||||
},
|
||||
"deepseek/deepseek-r1-distill-llama-8b": {
|
||||
"description": "DeepSeek R1 Distill Llama 8B to destylowany duży model językowy oparty na Llama-3.1-8B-Instruct, wytrenowany przy użyciu wyjścia DeepSeek R1."
|
||||
@@ -1478,9 +1481,6 @@
|
||||
"gemini-2.0-flash-lite-001": {
|
||||
"description": "Gemini 2.0 Flash to wariant modelu, zoptymalizowany pod kątem efektywności kosztowej i niskiego opóźnienia."
|
||||
},
|
||||
"gemini-2.0-flash-preview-image-generation": {
|
||||
"description": "Model Gemini 2.0 Flash do generowania obrazów, wspierający generację obrazów"
|
||||
},
|
||||
"gemini-2.5-flash": {
|
||||
"description": "Gemini 2.5 Flash to najbardziej opłacalny model Google, oferujący wszechstronne funkcje."
|
||||
},
|
||||
@@ -1508,9 +1508,6 @@
|
||||
"gemini-2.5-flash-preview-04-17": {
|
||||
"description": "Gemini 2.5 Flash Preview to najbardziej opłacalny model Google, oferujący wszechstronne funkcje."
|
||||
},
|
||||
"gemini-2.5-flash-preview-05-20": {
|
||||
"description": "Gemini 2.5 Flash Preview to najbardziej opłacalny model Google, oferujący wszechstronne funkcje."
|
||||
},
|
||||
"gemini-2.5-flash-preview-09-2025": {
|
||||
"description": "Wersja podglądowa (25 września 2025) Gemini 2.5 Flash"
|
||||
},
|
||||
@@ -1526,6 +1523,9 @@
|
||||
"gemini-2.5-pro-preview-06-05": {
|
||||
"description": "Gemini 2.5 Pro Preview to najnowocześniejszy model myślowy Google, zdolny do rozumowania nad złożonymi problemami w dziedzinach kodowania, matematyki i STEM oraz do analizy dużych zbiorów danych, repozytoriów kodu i dokumentów z wykorzystaniem długich kontekstów."
|
||||
},
|
||||
"gemini-3-pro-preview": {
|
||||
"description": "Gemini 3 Pro to najinteligentniejszy model Google, oferujący najnowocześniejsze wnioskowanie i rozumienie multimodalne, a także zaawansowane funkcje agenta i kodowania kontekstu."
|
||||
},
|
||||
"gemini-flash-latest": {
|
||||
"description": "Najnowsze wydanie Gemini Flash"
|
||||
},
|
||||
@@ -2225,6 +2225,9 @@
|
||||
"megrez-3b-instruct": {
|
||||
"description": "Megrez 3B Instruct to kompaktowy i wydajny model opracowany przez Wuwen Xinqiong."
|
||||
},
|
||||
"meituan/longcat-flash-chat": {
|
||||
"description": "Longcat Flash Chat to otwartoźródłowy model bazowy od Meituan, zoptymalizowany pod kątem interakcji dialogowych i zadań agentowych, wyróżniający się w scenariuszach wymagających użycia narzędzi i złożonych wieloetapowych konwersacji."
|
||||
},
|
||||
"meta-llama-3-70b-instruct": {
|
||||
"description": "Potężny model z 70 miliardami parametrów, doskonały w rozumowaniu, kodowaniu i szerokich zastosowaniach językowych."
|
||||
},
|
||||
@@ -2456,6 +2459,12 @@
|
||||
"minimax-m2": {
|
||||
"description": "MiniMax M2 to wydajny duży model językowy stworzony z myślą o kodowaniu i zautomatyzowanych przepływach pracy."
|
||||
},
|
||||
"minimax/minimax-m2": {
|
||||
"description": "Stworzony z myślą o wydajnym kodowaniu i przepływach pracy agentów."
|
||||
},
|
||||
"minimaxai/minimax-m2": {
|
||||
"description": "MiniMax-M2 to kompaktowy, szybki i ekonomiczny model MoE (Mixture of Experts) z 230 miliardami całkowitych parametrów i 10 miliardami aktywnych parametrów, zaprojektowany z myślą o najwyższej wydajności w zadaniach kodowania i agentowych, przy jednoczesnym zachowaniu silnej inteligencji ogólnej. Model ten doskonale sprawdza się w edycji wielu plików, zamkniętej pętli kodowanie-uruchamianie-naprawa, testowaniu i weryfikacji poprawek oraz w złożonych, długich łańcuchach narzędziowych, co czyni go idealnym wyborem dla przepływów pracy deweloperów."
|
||||
},
|
||||
"ministral-3b-latest": {
|
||||
"description": "Ministral 3B to czołowy model brzegowy Mistrala."
|
||||
},
|
||||
@@ -3371,6 +3380,12 @@
|
||||
"wizardlm2:8x22b": {
|
||||
"description": "WizardLM 2 to model językowy dostarczany przez Microsoft AI, który wyróżnia się w złożonych dialogach, wielojęzyczności, wnioskowaniu i inteligentnych asystentach."
|
||||
},
|
||||
"x-ai/grok-4-fast": {
|
||||
"description": "Z radością przedstawiamy Grok 4 Fast — nasze najnowsze osiągnięcie w dziedzinie modeli wnioskowania zoptymalizowanych pod względem kosztów."
|
||||
},
|
||||
"x-ai/grok-code-fast-1": {
|
||||
"description": "Z dumą prezentujemy grok-code-fast-1 — szybki i ekonomiczny model wnioskowania, który doskonale sprawdza się w kodowaniu przez agentów."
|
||||
},
|
||||
"x1": {
|
||||
"description": "Model Spark X1 zostanie dalej ulepszony, osiągając wyniki w zadaniach ogólnych, takich jak rozumowanie, generowanie tekstu i rozumienie języka, które będą porównywalne z OpenAI o1 i DeepSeek R1."
|
||||
},
|
||||
@@ -3431,6 +3446,9 @@
|
||||
"yi-vision-v2": {
|
||||
"description": "Model do złożonych zadań wizualnych, oferujący wysokowydajną zdolność rozumienia i analizy na podstawie wielu obrazów."
|
||||
},
|
||||
"z-ai/glm-4.6": {
|
||||
"description": "GLM-4.6 to najnowszy flagowy model od Zhipu AI, który znacząco przewyższa poprzednie wersje w zakresie zaawansowanego kodowania, przetwarzania długich tekstów, wnioskowania i zdolności agentowych."
|
||||
},
|
||||
"zai-org/GLM-4.5": {
|
||||
"description": "GLM-4.5 to podstawowy model zaprojektowany specjalnie do zastosowań agentowych, wykorzystujący architekturę mieszanych ekspertów (Mixture-of-Experts). Model jest głęboko zoptymalizowany pod kątem wywoływania narzędzi, przeglądania stron internetowych, inżynierii oprogramowania i programowania frontendowego, wspierając bezproblemową integrację z inteligentnymi agentami kodu takimi jak Claude Code i Roo Code. GLM-4.5 stosuje hybrydowy tryb wnioskowania, dostosowując się do złożonych i codziennych scenariuszy użycia."
|
||||
},
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user