mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-16 20:46:08 +00:00
Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8e96924774 | |||
| 4b9ddc4fc2 | |||
| f0b16a5565 | |||
| 97987229a8 | |||
| 4aa6dcd01a |
@@ -1,218 +0,0 @@
|
||||
---
|
||||
name: cli-backend-testing
|
||||
description: >
|
||||
CLI + Backend integration testing workflow. Use when verifying backend API changes
|
||||
(TRPC routers, services, models) via the LobeHub CLI against a local dev server.
|
||||
Triggers on 'cli test', 'test with cli', 'verify with cli', 'local cli test',
|
||||
'backend test with cli', or when needing to validate server-side changes end-to-end.
|
||||
---
|
||||
|
||||
# CLI + Backend Integration Testing
|
||||
|
||||
Standard workflow for verifying backend changes using the LobeHub CLI (`lh`) against a local dev server.
|
||||
|
||||
## When to Use
|
||||
|
||||
- Verifying TRPC router / service / model changes end-to-end
|
||||
- Testing new API fields or response structure changes
|
||||
- Validating CLI command output after backend modifications
|
||||
- Debugging data flow issues between server and CLI
|
||||
|
||||
## Prerequisites
|
||||
|
||||
| Requirement | Details |
|
||||
| ------------ | ------------------------------------------------------------- |
|
||||
| Dev server | `localhost:3011` (Next.js) |
|
||||
| CLI source | `lobehub/apps/cli/` |
|
||||
| CLI dev mode | Uses `LOBEHUB_CLI_HOME=.lobehub-dev` for isolated credentials |
|
||||
| Auth | Device Code Flow login to local server |
|
||||
|
||||
## Quick Reference
|
||||
|
||||
All CLI dev commands run from `lobehub/apps/cli/`:
|
||||
|
||||
```bash
|
||||
# Shorthand for all commands below
|
||||
CLI="LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts"
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### Step 1: Ensure Dev Server is Running
|
||||
|
||||
Check if the dev server is already running:
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w '%{http_code}' http://localhost:3011/ 2> /dev/null
|
||||
```
|
||||
|
||||
- **If reachable** (returns any HTTP status): server is running. Skip to Step 2.
|
||||
- **If unreachable**: start the server:
|
||||
|
||||
```bash
|
||||
# From cloud repo root
|
||||
pnpm run dev:next
|
||||
```
|
||||
|
||||
To **restart** (pick up server-side code changes):
|
||||
|
||||
```bash
|
||||
lsof -ti:3011 | xargs kill
|
||||
pnpm run dev:next
|
||||
```
|
||||
|
||||
**Important:** Server-side code changes in the submodule (`lobehub/src/server/`, `lobehub/packages/`) require a server restart. Next.js hot-reload may not pick up changes in submodule packages.
|
||||
|
||||
### Step 2: Check CLI Authentication
|
||||
|
||||
Check if dev credentials already exist:
|
||||
|
||||
```bash
|
||||
cat lobehub/apps/cli/.lobehub-dev/settings.json 2> /dev/null
|
||||
```
|
||||
|
||||
- **If file exists and contains `"serverUrl": "http://localhost:3011"`**: already authenticated. Skip to Step 3.
|
||||
- **If file missing or points to wrong server**: login is needed. Ask the user to run:
|
||||
|
||||
```bash
|
||||
! cd lobehub/apps/cli && LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts login --server http://localhost:3011
|
||||
```
|
||||
|
||||
> Login requires interactive browser authorization (OIDC Device Code Flow), so the user must run it themselves via `!` prefix. After login, credentials are saved to `lobehub/apps/cli/.lobehub-dev/` and persist across sessions.
|
||||
|
||||
### Step 3: Test with CLI Commands
|
||||
|
||||
CLI runs from source (`bun src/index.ts`), so CLI-side code changes take effect immediately without rebuilding.
|
||||
|
||||
```bash
|
||||
cd lobehub/apps/cli
|
||||
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts <command>
|
||||
```
|
||||
|
||||
### Step 4: Clean Up Test Data
|
||||
|
||||
Delete any test data created during verification:
|
||||
|
||||
```bash
|
||||
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts task delete < id > -y
|
||||
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts agent delete < id > -y
|
||||
```
|
||||
|
||||
## Common Testing Patterns
|
||||
|
||||
### Task System
|
||||
|
||||
```bash
|
||||
# List tasks
|
||||
$CLI task list
|
||||
|
||||
# Create test data with nesting
|
||||
$CLI task create -n "Root Task" -i "Test instruction"
|
||||
$CLI task create -n "Child Task" -i "Sub instruction" --parent T-1
|
||||
|
||||
# View task detail (tests getTaskDetail service)
|
||||
$CLI task view T-1
|
||||
|
||||
# View task tree
|
||||
$CLI task tree T-1
|
||||
|
||||
# Test lifecycle
|
||||
$CLI task edit T-1 --status running
|
||||
$CLI task comment T-1 -m "Test comment"
|
||||
|
||||
# Clean up
|
||||
$CLI task delete T-1 -y
|
||||
```
|
||||
|
||||
### Agent System
|
||||
|
||||
```bash
|
||||
# List agents
|
||||
$CLI agent list
|
||||
|
||||
# View agent detail
|
||||
$CLI agent view <agent-id>
|
||||
|
||||
# Run agent (tests agent execution pipeline)
|
||||
$CLI agent run <agent-id> -m "Test prompt"
|
||||
```
|
||||
|
||||
### Document & Knowledge Base
|
||||
|
||||
```bash
|
||||
# List documents
|
||||
$CLI doc list
|
||||
|
||||
# Create and view
|
||||
$CLI doc create -t "Test Doc" -c "Content here"
|
||||
$CLI doc view <doc-id>
|
||||
|
||||
# Knowledge base
|
||||
$CLI kb list
|
||||
$CLI kb tree <kb-id>
|
||||
```
|
||||
|
||||
### Model & Provider
|
||||
|
||||
```bash
|
||||
# List models and providers
|
||||
$CLI model list
|
||||
$CLI provider list
|
||||
|
||||
# Test provider connectivity
|
||||
$CLI provider test <provider-id>
|
||||
```
|
||||
|
||||
## Dev-Test Cycle
|
||||
|
||||
The standard cycle for backend development:
|
||||
|
||||
```
|
||||
1. Make code changes (service/model/router/type)
|
||||
|
|
||||
2. Run unit tests (fast feedback)
|
||||
bunx vitest run --silent='passed-only' '<test-file>'
|
||||
|
|
||||
3. Restart dev server (if server-side changes)
|
||||
lsof -ti:3011 | xargs kill && pnpm run dev:next
|
||||
|
|
||||
4. CLI verification (end-to-end)
|
||||
LOBEHUB_CLI_HOME=.lobehub-dev bun src/index.ts <command>
|
||||
|
|
||||
5. Clean up test data
|
||||
```
|
||||
|
||||
### When Server Restart is Needed
|
||||
|
||||
| Change Location | Restart? |
|
||||
| ----------------------------------------- | -------- |
|
||||
| `lobehub/src/server/` (routers, services) | Yes |
|
||||
| `lobehub/packages/database/` (models) | Yes |
|
||||
| `lobehub/packages/types/` | Yes |
|
||||
| `lobehub/packages/prompts/` | Yes |
|
||||
| `lobehub/apps/cli/` (CLI code) | No |
|
||||
| `src/` (cloud overrides) | Yes |
|
||||
|
||||
### When Server Restart is NOT Needed
|
||||
|
||||
CLI runs from source via `bun src/index.ts`, so any changes to `lobehub/apps/cli/src/` take effect immediately on next command invocation.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
| Issue | Solution |
|
||||
| --------------------------- | --------------------------------------------------------------------- |
|
||||
| `No authentication found` | Run `login --server http://localhost:3011` |
|
||||
| `UNAUTHORIZED` on API calls | Token expired; re-run login |
|
||||
| `ECONNREFUSED` | Dev server not running; start with `pnpm run dev:next` |
|
||||
| CLI shows old data/behavior | Server needs restart to pick up code changes |
|
||||
| `EADDRINUSE` on port 3011 | Server already running; kill with `lsof -ti:3011 \| xargs kill` |
|
||||
| Login opens wrong server | Must use `--server http://localhost:3011` flag (env var doesn't work) |
|
||||
|
||||
## Credential Isolation
|
||||
|
||||
| Mode | Credential Dir | Server |
|
||||
| ---------- | -------------------------------- | ----------------- |
|
||||
| Dev | `lobehub/apps/cli/.lobehub-dev/` | `localhost:3011` |
|
||||
| Production | `~/.lobehub/` | `app.lobehub.com` |
|
||||
|
||||
The two environments are completely isolated. Dev mode credentials are gitignored.
|
||||
@@ -20,11 +20,9 @@ This is NON-NEGOTIABLE. Skipping Linear comments is a workflow violation.
|
||||
## Workflow
|
||||
|
||||
1. **Retrieve issue details** before starting: `mcp__linear-server__get_issue`
|
||||
2. **Read images**: If the issue description contains images, MUST use `mcp__linear-server__extract_images` to read image content for full context
|
||||
3. **Check for sub-issues**: Use `mcp__linear-server__list_issues` with `parentId` filter
|
||||
4. **Mark as In Progress**: When starting to plan or implement an issue, immediately update status to **"In Progress"** via `mcp__linear-server__update_issue`
|
||||
5. **Update issue status** when completing: `mcp__linear-server__update_issue`
|
||||
6. **Add completion comment** (REQUIRED): `mcp__linear-server__create_comment`
|
||||
2. **Check for sub-issues**: Use `mcp__linear-server__list_issues` with `parentId` filter
|
||||
3. **Update issue status** when completing: `mcp__linear-server__update_issue`
|
||||
4. **Add completion comment** (REQUIRED): `mcp__linear-server__create_comment`
|
||||
|
||||
## Creating Issues
|
||||
|
||||
|
||||
@@ -24,277 +24,94 @@ Two approaches for local testing on macOS:
|
||||
|
||||
Use `agent-browser` to automate Chromium-based apps via Chrome DevTools Protocol.
|
||||
|
||||
Install via `npm i -g agent-browser`, `brew install agent-browser`, or `cargo install agent-browser`. Run `agent-browser install` to download Chrome. Run `agent-browser upgrade` to update.
|
||||
## Prerequisites
|
||||
|
||||
- `agent-browser` CLI installed globally (`agent-browser --version`)
|
||||
|
||||
## Core Workflow
|
||||
|
||||
Every browser automation follows this pattern:
|
||||
|
||||
1. **Navigate**: `agent-browser open <url>`
|
||||
2. **Snapshot**: `agent-browser snapshot -i` (get element refs like `@e1`, `@e2`)
|
||||
3. **Interact**: Use refs to click, fill, select
|
||||
4. **Re-snapshot**: After navigation or DOM changes, get fresh refs
|
||||
### 1. Snapshot → Find Elements
|
||||
|
||||
```bash
|
||||
agent-browser open https://example.com/form
|
||||
agent-browser snapshot -i
|
||||
# Output: @e1 [input type="email"], @e2 [input type="password"], @e3 [button] "Submit"
|
||||
|
||||
agent-browser fill @e1 "user@example.com"
|
||||
agent-browser fill @e2 "password123"
|
||||
agent-browser click @e3
|
||||
agent-browser wait --load networkidle
|
||||
agent-browser snapshot -i # Check result
|
||||
agent-browser --cdp -i < PORT > snapshot # Interactive elements only
|
||||
agent-browser --cdp -i -C < PORT > snapshot # Include contenteditable elements
|
||||
```
|
||||
|
||||
## Command Chaining
|
||||
Returns element refs like `@e1`, `@e2`. **Refs are ephemeral** — re-snapshot after any page change.
|
||||
|
||||
### 2. Interact
|
||||
|
||||
```bash
|
||||
# Chain open + wait + snapshot in one call
|
||||
agent-browser open https://example.com && agent-browser wait --load networkidle && agent-browser snapshot -i
|
||||
agent-browser --cdp @e5 < PORT > click
|
||||
agent-browser --cdp @e3 "text" < PORT > type # Character by character (contenteditable)
|
||||
agent-browser --cdp @e3 "text" < PORT > fill # Bulk fill (regular inputs)
|
||||
agent-browser --cdp Enter < PORT > press
|
||||
agent-browser --cdp down 500 < PORT > scroll
|
||||
```
|
||||
|
||||
Use `&&` when you don't need to read intermediate output. Run commands separately when you need to parse output first (e.g., snapshot to discover refs, then interact).
|
||||
|
||||
## Essential Commands
|
||||
### 3. Wait
|
||||
|
||||
```bash
|
||||
# Navigation
|
||||
agent-browser open <url> # Navigate (aliases: goto, navigate)
|
||||
agent-browser close # Close browser
|
||||
agent-browser close --all # Close all active sessions
|
||||
|
||||
# Snapshot
|
||||
agent-browser snapshot -i # Interactive elements with refs (recommended)
|
||||
agent-browser snapshot -s "#selector" # Scope to CSS selector
|
||||
|
||||
# Interaction (use @refs from snapshot)
|
||||
agent-browser click @e1 # Click element
|
||||
agent-browser click @e1 --new-tab # Click and open in new tab
|
||||
agent-browser fill @e2 "text" # Clear and type text
|
||||
agent-browser type @e2 "text" # Type without clearing
|
||||
agent-browser select @e1 "option" # Select dropdown option
|
||||
agent-browser check @e1 # Check checkbox
|
||||
agent-browser press Enter # Press key
|
||||
agent-browser keyboard type "text" # Type at current focus (no selector)
|
||||
agent-browser keyboard inserttext "text" # Insert without key events
|
||||
agent-browser scroll down 500 # Scroll page
|
||||
agent-browser scroll down 500 --selector "div.content" # Scroll within container
|
||||
|
||||
# Get information
|
||||
agent-browser get text @e1 # Get element text
|
||||
agent-browser get url # Get current URL
|
||||
agent-browser get title # Get page title
|
||||
agent-browser get cdp-url # Get CDP WebSocket URL
|
||||
|
||||
# Wait
|
||||
agent-browser wait @e1 # Wait for element
|
||||
agent-browser wait --load networkidle # Wait for network idle
|
||||
agent-browser wait --url "**/page" # Wait for URL pattern
|
||||
agent-browser wait 2000 # Wait milliseconds
|
||||
agent-browser wait --text "Welcome" # Wait for text to appear
|
||||
agent-browser wait --fn "!document.body.innerText.includes('Loading...')" # Wait for text to disappear
|
||||
agent-browser wait "#spinner" --state hidden # Wait for element to disappear
|
||||
|
||||
# Downloads
|
||||
agent-browser download @e1 ./file.pdf # Click element to trigger download
|
||||
agent-browser wait --download ./output.zip # Wait for any download to complete
|
||||
|
||||
# Network
|
||||
agent-browser network requests # Inspect tracked requests
|
||||
agent-browser network requests --type xhr,fetch # Filter by resource type
|
||||
agent-browser network requests --method POST # Filter by HTTP method
|
||||
agent-browser network route "**/api/*" --abort # Block matching requests
|
||||
agent-browser network har start # Start HAR recording
|
||||
agent-browser network har stop ./capture.har # Stop and save HAR file
|
||||
|
||||
# Viewport & Device Emulation
|
||||
agent-browser set viewport 1920 1080 # Set viewport size (default: 1280x720)
|
||||
agent-browser set viewport 1920 1080 2 # 2x retina
|
||||
agent-browser set device "iPhone 14" # Emulate device (viewport + user agent)
|
||||
|
||||
# Capture
|
||||
agent-browser screenshot # Screenshot to temp dir
|
||||
agent-browser screenshot --full # Full page screenshot
|
||||
agent-browser screenshot --annotate # Annotated screenshot with numbered element labels
|
||||
agent-browser pdf output.pdf # Save as PDF
|
||||
|
||||
# Clipboard
|
||||
agent-browser clipboard read # Read text from clipboard
|
||||
agent-browser clipboard write "text" # Write text to clipboard
|
||||
agent-browser clipboard copy # Copy current selection
|
||||
agent-browser clipboard paste # Paste from clipboard
|
||||
|
||||
# Dialogs (alert, confirm, prompt, beforeunload)
|
||||
agent-browser dialog accept # Accept dialog
|
||||
agent-browser dialog accept "input" # Accept prompt dialog with text
|
||||
agent-browser dialog dismiss # Dismiss/cancel dialog
|
||||
agent-browser dialog status # Check if dialog is open
|
||||
|
||||
# Diff (compare page states)
|
||||
agent-browser diff snapshot # Compare current vs last snapshot
|
||||
agent-browser diff screenshot --baseline before.png # Visual pixel diff
|
||||
agent-browser diff url <url1> <url2> # Compare two pages
|
||||
|
||||
# Streaming
|
||||
agent-browser stream enable # Start WebSocket streaming
|
||||
agent-browser stream status # Inspect streaming state
|
||||
agent-browser stream disable # Stop streaming
|
||||
agent-browser --cdp 2000 < PORT > wait # Wait ms
|
||||
agent-browser --cdp --load networkidle < PORT > wait # Wait for network
|
||||
```
|
||||
|
||||
## Batch Execution
|
||||
For waits >30s, use `sleep N` in bash instead — `agent-browser wait` blocks the daemon.
|
||||
|
||||
### 4. Screenshot & Verify
|
||||
|
||||
```bash
|
||||
echo '[
|
||||
["open", "https://example.com"],
|
||||
["snapshot", "-i"],
|
||||
["click", "@e1"],
|
||||
["screenshot", "result.png"]
|
||||
]' | agent-browser batch --json
|
||||
agent-browser --cdp < PORT > screenshot # Save to ~/.agent-browser/tmp/screenshots/
|
||||
agent-browser --cdp text @e1 < PORT > get # Get element text
|
||||
agent-browser --cdp url < PORT > get # Get current URL
|
||||
```
|
||||
|
||||
## Authentication
|
||||
Read screenshots with the `Read` tool for visual verification.
|
||||
|
||||
### 5. Evaluate JavaScript
|
||||
|
||||
```bash
|
||||
# Option 1: Auth vault (credentials stored encrypted)
|
||||
echo "$PASSWORD" | agent-browser auth save myapp --url https://app.example.com/login --username user --password-stdin
|
||||
agent-browser auth login myapp
|
||||
|
||||
# Option 2: Session name (auto-save/restore cookies + localStorage)
|
||||
agent-browser --session-name myapp open https://app.example.com/login
|
||||
agent-browser close # State auto-saved
|
||||
agent-browser --session-name myapp open https://app.example.com/dashboard # Auto-restored
|
||||
|
||||
# Option 3: Persistent profile
|
||||
agent-browser --profile ~/.myapp open https://app.example.com/login
|
||||
|
||||
# Option 4: State file
|
||||
agent-browser state save auth.json
|
||||
agent-browser state load auth.json
|
||||
agent-browser --cdp "document.title" < PORT > eval
|
||||
```
|
||||
|
||||
## Semantic Locators (Alternative to Refs)
|
||||
For multi-line JS, use `--stdin`:
|
||||
|
||||
```bash
|
||||
agent-browser find text "Sign In" click
|
||||
agent-browser find label "Email" fill "user@test.com"
|
||||
agent-browser find role button click --name "Submit"
|
||||
agent-browser find placeholder "Search" type "query"
|
||||
agent-browser find testid "submit-btn" click
|
||||
```
|
||||
|
||||
## JavaScript Evaluation (eval)
|
||||
|
||||
```bash
|
||||
# Simple expressions
|
||||
agent-browser eval 'document.title'
|
||||
|
||||
# Complex JS: use --stdin with heredoc (RECOMMENDED)
|
||||
agent-browser eval --stdin << 'EVALEOF'
|
||||
JSON.stringify(
|
||||
Array.from(document.querySelectorAll("img"))
|
||||
.filter(i => !i.alt)
|
||||
.map(i => ({ src: i.src.split("/").pop(), width: i.width }))
|
||||
)
|
||||
agent-browser --cdp --stdin < PORT > eval << 'EVALEOF'
|
||||
(function() {
|
||||
return JSON.stringify({ title: document.title, url: location.href });
|
||||
})()
|
||||
EVALEOF
|
||||
|
||||
# Base64 encoding (avoids all shell escaping issues)
|
||||
agent-browser eval -b "$(echo -n 'document.title' | base64)"
|
||||
```
|
||||
|
||||
## Ref Lifecycle
|
||||
|
||||
Refs (`@e1`, `@e2`, etc.) are invalidated when the page changes. Always re-snapshot after clicking links/buttons that navigate, form submissions, or dynamic content loading.
|
||||
|
||||
## Annotated Screenshots (Vision Mode)
|
||||
|
||||
```bash
|
||||
agent-browser screenshot --annotate
|
||||
# Output includes the image path and a legend:
|
||||
# [1] @e1 button "Submit"
|
||||
# [2] @e2 link "Home"
|
||||
agent-browser click @e2 # Click using ref from annotated screenshot
|
||||
```
|
||||
|
||||
## Parallel Sessions
|
||||
|
||||
```bash
|
||||
agent-browser --session site1 open https://site-a.com
|
||||
agent-browser --session site2 open https://site-b.com
|
||||
agent-browser session list
|
||||
```
|
||||
|
||||
## Connect to Existing Chrome
|
||||
|
||||
```bash
|
||||
agent-browser --auto-connect snapshot # Auto-discover running Chrome
|
||||
agent-browser --cdp 9222 snapshot # Explicit CDP port
|
||||
```
|
||||
|
||||
## iOS Simulator (Mobile Safari)
|
||||
|
||||
```bash
|
||||
agent-browser device list
|
||||
agent-browser -p ios --device "iPhone 16 Pro" open https://example.com
|
||||
agent-browser -p ios snapshot -i
|
||||
agent-browser -p ios tap @e1
|
||||
agent-browser -p ios swipe up
|
||||
agent-browser -p ios screenshot mobile.png
|
||||
agent-browser -p ios close
|
||||
```
|
||||
|
||||
## Observability Dashboard
|
||||
|
||||
```bash
|
||||
agent-browser dashboard install
|
||||
agent-browser dashboard start # Background server on port 4848
|
||||
agent-browser dashboard stop
|
||||
```
|
||||
|
||||
## Cloud Providers
|
||||
|
||||
Use `-p <provider>` to run against cloud browsers: `agentcore`, `browserbase`, `browserless`, `browseruse`, `kernel`.
|
||||
|
||||
## Browser Engine Selection
|
||||
|
||||
```bash
|
||||
agent-browser --engine lightpanda open example.com # 10x faster, 10x less memory
|
||||
```
|
||||
|
||||
## Electron (LobeHub Desktop)
|
||||
|
||||
### Setup / Teardown
|
||||
|
||||
Use the `electron-dev.sh` script to manage the Electron dev environment. It handles process lifecycle, waits for SPA readiness, and reliably kills all child processes (main + helpers + vite).
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
SCRIPT=".agents/skills/local-testing/scripts/electron-dev.sh"
|
||||
# 1. Kill existing instances
|
||||
pkill -f "Electron" 2> /dev/null
|
||||
pkill -f "electron-vite" 2> /dev/null
|
||||
pkill -f "agent-browser" 2> /dev/null
|
||||
sleep 3
|
||||
|
||||
# Start Electron dev with CDP (idempotent — skips if already running)
|
||||
$SCRIPT start
|
||||
# 2. Start Electron with CDP (MUST cd to apps/desktop first)
|
||||
cd apps/desktop && ELECTRON_ENABLE_LOGGING=1 npx electron-vite dev -- --remote-debugging-port=9222 > /tmp/electron-dev.log 2>&1 &
|
||||
|
||||
# Check if Electron is running and CDP is reachable
|
||||
$SCRIPT status
|
||||
# 3. Wait for startup
|
||||
for i in $(seq 1 12); do
|
||||
sleep 5
|
||||
if strings /tmp/electron-dev.log 2> /dev/null | grep -q "starting electron"; then
|
||||
echo "ready"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
# Kill all Electron-related processes (main + helper + vite)
|
||||
$SCRIPT stop
|
||||
|
||||
# Force fresh restart
|
||||
$SCRIPT restart
|
||||
# 4. Wait for renderer, then connect
|
||||
sleep 15 && agent-browser --cdp 9222 wait 3000
|
||||
```
|
||||
|
||||
After `start` succeeds, connect with: `agent-browser --cdp 9222 snapshot -i`
|
||||
|
||||
**Always run `$SCRIPT stop` when done testing** — `pkill -f "Electron"` alone won't catch all helper processes.
|
||||
|
||||
#### Environment Variables
|
||||
|
||||
| Variable | Default | Description |
|
||||
| ----------------- | ----------------------- | ---------------------------------------- |
|
||||
| `CDP_PORT` | `9222` | Chrome DevTools Protocol port |
|
||||
| `ELECTRON_LOG` | `/tmp/electron-dev.log` | Electron process log |
|
||||
| `ELECTRON_WAIT_S` | `60` | Max seconds to wait for Electron process |
|
||||
| `RENDERER_WAIT_S` | `60` | Max seconds to wait for SPA to load |
|
||||
**Critical:** `npx electron-vite dev` MUST run from `apps/desktop/` directory, not project root.
|
||||
|
||||
### LobeHub-Specific Patterns
|
||||
|
||||
@@ -370,9 +187,6 @@ agent-browser --cdp 9222 eval "JSON.stringify(window.__CAPTURED_ERRORS)"
|
||||
"<URL>" &
|
||||
sleep 5
|
||||
agent-browser --cdp 9222 snapshot -i
|
||||
|
||||
# Or auto-discover running Chrome with remote debugging
|
||||
agent-browser --auto-connect snapshot -i
|
||||
```
|
||||
|
||||
---
|
||||
@@ -1001,17 +815,16 @@ echo "Result saved to /tmp/${APP_NAME,,}-bot-test.png"
|
||||
|
||||
Ready-to-use scripts in `.agents/skills/local-testing/scripts/`:
|
||||
|
||||
| Script | Usage |
|
||||
| ------------------------- | --------------------------------------------------- |
|
||||
| `electron-dev.sh` | Manage Electron dev env (start/stop/status/restart) |
|
||||
| `capture-app-window.sh` | Capture screenshot of a specific app window |
|
||||
| `record-electron-demo.sh` | Record Electron app demo with ffmpeg |
|
||||
| `test-discord-bot.sh` | Send message to Discord bot via osascript |
|
||||
| `test-slack-bot.sh` | Send message to Slack bot via osascript |
|
||||
| `test-telegram-bot.sh` | Send message to Telegram bot via osascript |
|
||||
| `test-wechat-bot.sh` | Send message to WeChat bot via osascript |
|
||||
| `test-lark-bot.sh` | Send message to Lark / 飞书 bot via osascript |
|
||||
| `test-qq-bot.sh` | Send message to QQ bot via osascript |
|
||||
| Script | Usage |
|
||||
| ------------------------- | --------------------------------------------- |
|
||||
| `capture-app-window.sh` | Capture screenshot of a specific app window |
|
||||
| `record-electron-demo.sh` | Record Electron app demo with ffmpeg |
|
||||
| `test-discord-bot.sh` | Send message to Discord bot via osascript |
|
||||
| `test-slack-bot.sh` | Send message to Slack bot via osascript |
|
||||
| `test-telegram-bot.sh` | Send message to Telegram bot via osascript |
|
||||
| `test-wechat-bot.sh` | Send message to WeChat bot via osascript |
|
||||
| `test-lark-bot.sh` | Send message to Lark / 飞书 bot via osascript |
|
||||
| `test-qq-bot.sh` | Send message to QQ bot via osascript |
|
||||
|
||||
### Window Screenshot Utility
|
||||
|
||||
@@ -1094,19 +907,16 @@ The script automatically:
|
||||
|
||||
### agent-browser
|
||||
|
||||
- **Daemon can get stuck** — if commands hang, `agent-browser close --all` or `pkill -f agent-browser` to reset
|
||||
- **Daemon can get stuck** — if commands hang, `pkill -f agent-browser` to reset
|
||||
- **`agent-browser wait` blocks the daemon** — for waits >30s, use bash `sleep`
|
||||
- **HMR invalidates everything** — after code changes, refs break. Re-snapshot or restart
|
||||
- **`snapshot -i` doesn't find contenteditable** — use `snapshot -i -C` for rich text editors
|
||||
- **`fill` doesn't work on contenteditable** — use `type` for chat inputs
|
||||
- **Screenshots go to `~/.agent-browser/tmp/screenshots/`** — read them with the `Read` tool
|
||||
- **Dialogs block all commands** — if commands time out, check `agent-browser dialog status`
|
||||
- **Default timeout is 25s** — override with `AGENT_BROWSER_DEFAULT_TIMEOUT` (ms) or use explicit waits
|
||||
- **Shell quoting corrupts eval** — use `eval --stdin <<'EVALEOF'` for complex JS
|
||||
|
||||
### Electron-specific
|
||||
|
||||
- **Always use `electron-dev.sh stop` to clean up** — `pkill -f "Electron"` only kills the main process; helper processes (GPU, renderer, network) survive. The script finds and kills all of them via PID matching against the project's electron binary path.
|
||||
- **`npx electron-vite dev` must run from `apps/desktop/`** — running from project root fails silently. The `electron-dev.sh` script handles this automatically.
|
||||
- **`npx electron-vite dev` must run from `apps/desktop/`** — running from project root fails silently
|
||||
- **Don't resize the Electron window after load** — resizing triggers full SPA reload
|
||||
- **Store is at `window.__LOBE_STORES`** not `window.__ZUSTAND_STORES__`
|
||||
|
||||
|
||||
@@ -1,244 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
#
|
||||
# electron-dev.sh — Manage Electron dev environment for testing
|
||||
#
|
||||
# Usage:
|
||||
# ./electron-dev.sh start # Kill existing, start fresh, wait until ready
|
||||
# ./electron-dev.sh stop # Kill all Electron-related processes
|
||||
# ./electron-dev.sh status # Check if Electron is running and CDP is reachable
|
||||
# ./electron-dev.sh restart # Stop then start
|
||||
#
|
||||
# Environment variables:
|
||||
# CDP_PORT — Chrome DevTools Protocol port (default: 9222)
|
||||
# ELECTRON_LOG — Log file path (default: /tmp/electron-dev.log)
|
||||
# ELECTRON_WAIT_S — Max seconds to wait for Electron process (default: 60)
|
||||
# RENDERER_WAIT_S — Max seconds to wait for renderer/SPA (default: 60)
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
CDP_PORT="${CDP_PORT:-9222}"
|
||||
ELECTRON_LOG="${ELECTRON_LOG:-/tmp/electron-dev.log}"
|
||||
ELECTRON_WAIT_S="${ELECTRON_WAIT_S:-60}"
|
||||
RENDERER_WAIT_S="${RENDERER_WAIT_S:-60}"
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../../.." && pwd)"
|
||||
PIDFILE="/tmp/electron-dev-cdp-${CDP_PORT}.pid"
|
||||
|
||||
# ── Helpers ──────────────────────────────────────────────────────────
|
||||
|
||||
# Get the Electron binary path used by this project
|
||||
electron_bin_pattern() {
|
||||
echo "${PROJECT_ROOT}/apps/desktop/node_modules/.pnpm/electron@*/node_modules/electron/dist/Electron.app"
|
||||
}
|
||||
|
||||
# Find all PIDs related to the project's Electron dev session
|
||||
find_electron_pids() {
|
||||
local pids=""
|
||||
|
||||
# 1. Main Electron process (launched with --remote-debugging-port)
|
||||
local main_pids
|
||||
main_pids=$(pgrep -f "Electron\.app.*--remote-debugging-port=${CDP_PORT}" 2>/dev/null || true)
|
||||
[ -n "$main_pids" ] && pids="$pids $main_pids"
|
||||
|
||||
# 2. Electron Helper processes (gpu, renderer, utility) spawned from the project's electron binary
|
||||
local helper_pids
|
||||
helper_pids=$(pgrep -f "${PROJECT_ROOT}/apps/desktop/node_modules/.*Electron Helper" 2>/dev/null || true)
|
||||
[ -n "$helper_pids" ] && pids="$pids $helper_pids"
|
||||
|
||||
# 3. electron-vite dev server
|
||||
local vite_pids
|
||||
vite_pids=$(pgrep -f "electron-vite.*dev" 2>/dev/null || true)
|
||||
[ -n "$vite_pids" ] && pids="$pids $vite_pids"
|
||||
|
||||
# 4. PID from pidfile (fallback)
|
||||
if [ -f "$PIDFILE" ]; then
|
||||
local saved_pid
|
||||
saved_pid=$(cat "$PIDFILE")
|
||||
if kill -0 "$saved_pid" 2>/dev/null; then
|
||||
pids="$pids $saved_pid"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Deduplicate
|
||||
echo "$pids" | tr ' ' '\n' | sort -u | grep -v '^$' | tr '\n' ' ' || true
|
||||
}
|
||||
|
||||
do_stop() {
|
||||
echo "[electron-dev] Stopping Electron dev environment..."
|
||||
|
||||
local pids
|
||||
pids=$(find_electron_pids)
|
||||
|
||||
if [ -z "$pids" ]; then
|
||||
echo "[electron-dev] No Electron processes found."
|
||||
else
|
||||
echo "[electron-dev] Killing PIDs: $pids"
|
||||
for pid in $pids; do
|
||||
kill "$pid" 2>/dev/null || true
|
||||
done
|
||||
|
||||
# Wait up to 5s for graceful exit, then force-kill survivors
|
||||
local waited=0
|
||||
while [ $waited -lt 5 ]; do
|
||||
local alive=""
|
||||
for pid in $pids; do
|
||||
kill -0 "$pid" 2>/dev/null && alive="$alive $pid"
|
||||
done
|
||||
[ -z "$alive" ] && break
|
||||
sleep 1
|
||||
waited=$((waited + 1))
|
||||
done
|
||||
|
||||
# Force-kill any remaining
|
||||
for pid in $pids; do
|
||||
if kill -0 "$pid" 2>/dev/null; then
|
||||
echo "[electron-dev] Force-killing PID $pid"
|
||||
kill -9 "$pid" 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Also close any agent-browser sessions connected to this port
|
||||
agent-browser --cdp "$CDP_PORT" close --all 2>/dev/null || true
|
||||
|
||||
rm -f "$PIDFILE"
|
||||
echo "[electron-dev] Stopped."
|
||||
}
|
||||
|
||||
do_status() {
|
||||
local pids
|
||||
pids=$(find_electron_pids)
|
||||
|
||||
if [ -z "$pids" ]; then
|
||||
echo "[electron-dev] Electron is NOT running."
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "[electron-dev] Electron is running (PIDs: $pids)"
|
||||
|
||||
# Check CDP connectivity
|
||||
if agent-browser --cdp "$CDP_PORT" get url >/dev/null 2>&1; then
|
||||
local url
|
||||
url=$(agent-browser --cdp "$CDP_PORT" get url 2>&1 | tail -1)
|
||||
echo "[electron-dev] CDP port ${CDP_PORT} is reachable. URL: $url"
|
||||
return 0
|
||||
else
|
||||
echo "[electron-dev] CDP port ${CDP_PORT} is NOT reachable (Electron may still be loading)."
|
||||
return 2
|
||||
fi
|
||||
}
|
||||
|
||||
wait_for_electron() {
|
||||
echo "[electron-dev] Waiting for Electron process (up to ${ELECTRON_WAIT_S}s)..."
|
||||
local elapsed=0
|
||||
local interval=3
|
||||
while [ $elapsed -lt "$ELECTRON_WAIT_S" ]; do
|
||||
if strings "$ELECTRON_LOG" 2>/dev/null | grep -q "starting electron"; then
|
||||
echo "[electron-dev] Electron process started."
|
||||
return 0
|
||||
fi
|
||||
sleep "$interval"
|
||||
elapsed=$((elapsed + interval))
|
||||
echo "[electron-dev] Still waiting... (${elapsed}/${ELECTRON_WAIT_S}s)"
|
||||
done
|
||||
echo "[electron-dev] ERROR: Electron did not start within ${ELECTRON_WAIT_S}s"
|
||||
echo "[electron-dev] Last 20 lines of log:"
|
||||
tail -20 "$ELECTRON_LOG" 2>/dev/null || true
|
||||
return 1
|
||||
}
|
||||
|
||||
wait_for_renderer() {
|
||||
echo "[electron-dev] Waiting for renderer/SPA to load (up to ${RENDERER_WAIT_S}s)..."
|
||||
|
||||
# Initial delay — renderer needs time to bootstrap
|
||||
sleep 10
|
||||
|
||||
local elapsed=10
|
||||
local interval=5
|
||||
while [ $elapsed -lt "$RENDERER_WAIT_S" ]; do
|
||||
if agent-browser --cdp "$CDP_PORT" wait 2000 >/dev/null 2>&1; then
|
||||
# Check if interactive elements are present (SPA loaded)
|
||||
local snap
|
||||
snap=$(agent-browser --cdp "$CDP_PORT" snapshot -i 2>&1 || true)
|
||||
if echo "$snap" | grep -qE 'link |button '; then
|
||||
echo "[electron-dev] Renderer ready (interactive elements found)."
|
||||
return 0
|
||||
fi
|
||||
fi
|
||||
sleep "$interval"
|
||||
elapsed=$((elapsed + interval))
|
||||
echo "[electron-dev] SPA still loading... (${elapsed}/${RENDERER_WAIT_S}s)"
|
||||
done
|
||||
|
||||
echo "[electron-dev] WARNING: Timed out waiting for renderer, proceeding anyway."
|
||||
return 0
|
||||
}
|
||||
|
||||
do_start() {
|
||||
# If already running and healthy, skip
|
||||
local status_ok=0
|
||||
do_status >/dev/null 2>&1 || status_ok=$?
|
||||
if [ "$status_ok" -eq 0 ]; then
|
||||
echo "[electron-dev] Electron is already running and CDP is reachable. Skipping start."
|
||||
echo "[electron-dev] Use 'restart' to force a fresh session, or 'stop' to tear down."
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Clean up any stale processes
|
||||
do_stop
|
||||
|
||||
# Start fresh
|
||||
echo "[electron-dev] Starting Electron dev server..."
|
||||
echo "[electron-dev] Project: $PROJECT_ROOT"
|
||||
echo "[electron-dev] CDP port: $CDP_PORT"
|
||||
echo "[electron-dev] Log: $ELECTRON_LOG"
|
||||
|
||||
: > "$ELECTRON_LOG" # Truncate log
|
||||
|
||||
(
|
||||
cd "$PROJECT_ROOT/apps/desktop" && \
|
||||
ELECTRON_ENABLE_LOGGING=1 npx electron-vite dev -- --remote-debugging-port="$CDP_PORT" \
|
||||
>> "$ELECTRON_LOG" 2>&1
|
||||
) &
|
||||
local bg_pid=$!
|
||||
echo "$bg_pid" > "$PIDFILE"
|
||||
echo "[electron-dev] Background PID: $bg_pid"
|
||||
|
||||
# Wait for Electron process to start
|
||||
if ! wait_for_electron; then
|
||||
echo "[electron-dev] Failed to start. Cleaning up..."
|
||||
do_stop
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Wait for renderer to be interactive
|
||||
if ! wait_for_renderer; then
|
||||
echo "[electron-dev] Renderer not ready, but Electron is running. You may need to wait more."
|
||||
fi
|
||||
|
||||
echo "[electron-dev] Ready! Use: agent-browser --cdp $CDP_PORT snapshot -i"
|
||||
}
|
||||
|
||||
do_restart() {
|
||||
do_stop
|
||||
sleep 2
|
||||
do_start
|
||||
}
|
||||
|
||||
# ── Main ─────────────────────────────────────────────────────────────
|
||||
|
||||
case "${1:-help}" in
|
||||
start) do_start ;;
|
||||
stop) do_stop ;;
|
||||
status) do_status ;;
|
||||
restart) do_restart ;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|status|restart}"
|
||||
echo ""
|
||||
echo " start — Start Electron dev with CDP (idempotent, skips if already running)"
|
||||
echo " stop — Kill all Electron dev processes (main + helpers + vite)"
|
||||
echo " status — Check if Electron is running and CDP is reachable"
|
||||
echo " restart — Stop then start"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -162,15 +162,11 @@ describe('ModuleName', () => {
|
||||
### 5. Create Pull Request
|
||||
|
||||
- Create a new branch: `automatic/add-tests-[module-name]-[date]`
|
||||
|
||||
- Commit changes with message format:
|
||||
|
||||
```
|
||||
✅ test: add unit tests for [module-name]
|
||||
```
|
||||
|
||||
- Push the branch
|
||||
|
||||
- Create a PR with:
|
||||
|
||||
- Title: `✅ test: add unit tests for [module-name]`
|
||||
@@ -202,7 +198,6 @@ describe('ModuleName', () => {
|
||||
- Test approach: [brief description]
|
||||
|
||||
---
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
```
|
||||
|
||||
|
||||
@@ -77,24 +77,20 @@ Create `e2e/src/features/{module-name}/README.md` with:
|
||||
# {Module} 模块 E2E 测试覆盖
|
||||
|
||||
## 模块概述
|
||||
|
||||
**路由**: `/module`, `/module/[id]`
|
||||
|
||||
## 功能清单与测试覆盖
|
||||
|
||||
### 1. 功能分组名称
|
||||
|
||||
| 功能点 | 描述 | 优先级 | 状态 | 测试文件 |
|
||||
| ------ | ---- | ------ | ---- | ------------- |
|
||||
| 功能点 | 描述 | 优先级 | 状态 | 测试文件 |
|
||||
| ------ | ---- | ------ | ---- | -------- |
|
||||
| 功能A | xxx | P0 | ✅ | `xxx.feature` |
|
||||
| 功能B | xxx | P1 | ⏳ | |
|
||||
| 功能B | xxx | P1 | ⏳ | |
|
||||
|
||||
## 测试文件结构
|
||||
|
||||
## 测试执行
|
||||
|
||||
## 已知问题
|
||||
|
||||
## 更新记录
|
||||
```
|
||||
|
||||
@@ -232,7 +228,7 @@ const testId = pickle.tags.find(
|
||||
tag.name.startsWith('@COMMUNITY-') ||
|
||||
tag.name.startsWith('@AGENT-') ||
|
||||
tag.name.startsWith('@HOME-') ||
|
||||
tag.name.startsWith('@PAGE-') || // Add new prefix
|
||||
tag.name.startsWith('@PAGE-') || // Add new prefix
|
||||
tag.name.startsWith('@ROUTES-'),
|
||||
);
|
||||
```
|
||||
@@ -304,15 +300,11 @@ HEADLESS=true BASE_URL=http://localhost:3006 \
|
||||
### 10. Create Pull Request
|
||||
|
||||
- Branch name: `test/e2e-{module-name}`
|
||||
|
||||
- Commit message format:
|
||||
|
||||
```
|
||||
✅ test: add E2E tests for {module-name}
|
||||
```
|
||||
|
||||
- PR title: `✅ test: add E2E tests for {module-name}`
|
||||
|
||||
- PR body template:
|
||||
|
||||
````markdown
|
||||
|
||||
@@ -36,7 +36,6 @@ If you detect any leaked secrets, respond IMMEDIATELY with:
|
||||
⚠️ **Security Warning**: Your comment appears to contain sensitive information (API keys, secrets, or credentials).
|
||||
|
||||
**Please delete your comment immediately** to protect your account security, then:
|
||||
|
||||
1. Rotate/regenerate any exposed credentials
|
||||
2. Re-post your question with secrets redacted (e.g., `AUTH_SECRET=***`)
|
||||
|
||||
@@ -74,17 +73,12 @@ Look for the "Troubleshooting" or "FAQ" section in the migration docs and match
|
||||
## Response Guidelines
|
||||
|
||||
1. **Be helpful and friendly** - Users are often frustrated when migration doesn't work
|
||||
|
||||
2. **Be specific** - Provide exact commands or configuration examples
|
||||
|
||||
3. **Reference documentation** - Point users to relevant docs sections
|
||||
|
||||
4. **Ask for logs** - If the issue is unclear, ask for Docker logs:
|
||||
|
||||
```bash
|
||||
docker logs <container_name> 2>&1 | tail -100
|
||||
```
|
||||
|
||||
5. **One issue at a time** - Focus on solving one problem before moving to the next
|
||||
|
||||
## Response Format
|
||||
@@ -96,7 +90,6 @@ Use this format for your responses:
|
||||
|
||||
[If missing information]
|
||||
To help you effectively, please provide:
|
||||
|
||||
- [List missing items]
|
||||
|
||||
[If you can help]
|
||||
@@ -109,7 +102,6 @@ Based on your description, here's what I suggest:
|
||||
|
||||
[If the issue is complex or unknown]
|
||||
This issue needs further investigation. I've notified the team. In the meantime, please:
|
||||
|
||||
1. [Any immediate steps they can try]
|
||||
2. Share your Docker logs if you haven't already
|
||||
```
|
||||
|
||||
@@ -2,15 +2,15 @@
|
||||
|
||||
## Quick Reference by Name
|
||||
|
||||
- **@arvinxx**: Last resort only, mention for priority:high issues, tool calling, mcp, database
|
||||
- **@arvinxx**: Last resort only, mention for priority:high issues, tool calling , mcp
|
||||
- **@canisminor1990**: Design, UI components, editor, markdown rendering
|
||||
- **@tjx666**: Image/video generation, vision, cloud version, documentation, TTS, auth, login/register, database
|
||||
- **@ONLY-yours**: Performance, streaming, settings, general bugs, web platform, marketplace, agent builder, schedule task
|
||||
- **@Innei**: Knowledge base, files (KB-related), group chat, Electron, desktop client, build system
|
||||
- **@nekomeowww**: Memory, backend, deployment, DevOps, database
|
||||
- **@tjx666**: Image/video generation, vision, cloud version, documentation, TTS, auth, login/register
|
||||
- **@ONLY-yours**: Performance, streaming, settings, general bugs, web platform, marketplace
|
||||
- **@Innei**: Knowledge base, files (KB-related), group chat
|
||||
- **@nekomeowww**: Memory, backend, deployment, DevOps
|
||||
- **@sudongyuer**: Mobile app (React Native)
|
||||
- **@sxjeru**: Model providers and configuration
|
||||
- **@rdmclin2**: Team workspace, IM and bot integration
|
||||
- **@rdmclin2**: Team workspace
|
||||
- **@tcmonster**: Subscription, refund, recharge, business cooperation
|
||||
|
||||
Quick reference for assigning issues based on labels.
|
||||
@@ -28,7 +28,7 @@ Quick reference for assigning issues based on labels.
|
||||
| Label | Owner | Notes |
|
||||
| ------------------ | ----------- | -------------------------------------- |
|
||||
| `platform:mobile` | @sudongyuer | React Native mobile app |
|
||||
| `platform:desktop` | @Innei | Electron desktop client, build system |
|
||||
| `platform:desktop` | @ONLY-yours | Electron desktop client (general) |
|
||||
| `platform:web` | @ONLY-yours | Web platform (unless specific feature) |
|
||||
|
||||
### Feature Labels (feature:\*)
|
||||
@@ -60,9 +60,6 @@ Quick reference for assigning issues based on labels.
|
||||
| `feature:group-chat` | @arvinxx | Group chat functionality |
|
||||
| `feature:memory` | @nekomeowww | Memory feature |
|
||||
| `feature:team-workspace` | @rdmclin2 | Team workspace application |
|
||||
| `feature:im-integration` | @rdmclin2 | IM and bot integration (Slack, Discord, etc.) |
|
||||
| `feature:agent-builder` | @ONLY-yours | Agent builder |
|
||||
| `feature:schedule-task` | @ONLY-yours | Schedule task |
|
||||
| `feature:subscription` | @tcmonster | Subscription and billing |
|
||||
| `feature:refund` | @tcmonster | Refund requests |
|
||||
| `feature:recharge` | @tcmonster | Recharge and payment |
|
||||
@@ -128,18 +125,18 @@ Quick reference for assigning issues based on labels.
|
||||
|
||||
**Single owner:**
|
||||
|
||||
```plaintext
|
||||
```
|
||||
@username - This is a [feature/component] issue. Please take a look.
|
||||
```
|
||||
|
||||
**Multiple owners:**
|
||||
|
||||
```plaintext
|
||||
```
|
||||
@primary @secondary - This involves [features]. Please coordinate.
|
||||
```
|
||||
|
||||
**High priority:**
|
||||
|
||||
```plaintext
|
||||
```
|
||||
@owner @arvinxx - High priority [feature] issue.
|
||||
```
|
||||
|
||||
@@ -72,15 +72,11 @@ Module granularity examples:
|
||||
### 5. Create Pull Request
|
||||
|
||||
- Create a new branch: `automatic/translate-comments-[module-name]-[date]`
|
||||
|
||||
- Commit changes with message format:
|
||||
|
||||
```
|
||||
🌐 chore: translate non-English comments to English in [module-name]
|
||||
```
|
||||
|
||||
- Push the branch
|
||||
|
||||
- Create a PR with:
|
||||
|
||||
- Title: `🌐 chore: translate non-English comments to English in [module-name]`
|
||||
@@ -104,7 +100,6 @@ Module granularity examples:
|
||||
`[module-path]`
|
||||
|
||||
---
|
||||
|
||||
🤖 Generated with [Claude Code](https://claude.com/claude-code)
|
||||
```
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
AmAzing129
|
||||
arvinxx
|
||||
canisminor1990
|
||||
ilimei
|
||||
Innei
|
||||
lobehubbot
|
||||
nekomeowww
|
||||
ONLY-yours
|
||||
rdmclin2
|
||||
rivertwilight
|
||||
sudongyuer
|
||||
tcmonster
|
||||
tjx666
|
||||
@@ -18,16 +18,6 @@ jobs:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Check if author is a team member
|
||||
id: check-team
|
||||
run: |
|
||||
ISSUE_AUTHOR="${{ github.event.issue.user.login }}"
|
||||
if grep -iq "^${ISSUE_AUTHOR}$" .github/maintainers.txt; then
|
||||
echo "is_team=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "is_team=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Copy triage prompts
|
||||
run: |
|
||||
mkdir -p /tmp/claude-prompts
|
||||
@@ -72,7 +62,7 @@ jobs:
|
||||
**IMPORTANT**:
|
||||
- Follow ALL steps in the issue-triage.md guide
|
||||
- Apply labels according to the guide's rules
|
||||
- ${{ steps.check-team.outputs.is_team == 'true' && 'The issue author is a team member. Do NOT post any @mention comment.' || 'Post a mention comment to the appropriate team member(s) based on team-assignment.md' }}
|
||||
- Post a mention comment to the appropriate team member(s) based on team-assignment.md
|
||||
- Replace [ISSUE_NUMBER] with: ${{ github.event.issue.number }}
|
||||
|
||||
**Start the triage process now.**
|
||||
|
||||
@@ -21,18 +21,7 @@ jobs:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Check if author is a team member
|
||||
id: check-team
|
||||
run: |
|
||||
PR_AUTHOR="${{ github.event.pull_request.user.login }}"
|
||||
if grep -iq "^${PR_AUTHOR}$" .github/maintainers.txt; then
|
||||
echo "is_team=true" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "is_team=false" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Copy prompts
|
||||
if: steps.check-team.outputs.is_team == 'false'
|
||||
run: |
|
||||
mkdir -p /tmp/claude-prompts
|
||||
cp .claude/prompts/pr-assign.md /tmp/claude-prompts/
|
||||
@@ -40,7 +29,6 @@ jobs:
|
||||
cp .claude/prompts/security-rules.md /tmp/claude-prompts/
|
||||
|
||||
- name: Run Claude Code for PR Reviewer Assignment
|
||||
if: steps.check-team.outputs.is_team == 'false'
|
||||
uses: anthropics/claude-code-action@v1
|
||||
with:
|
||||
github_token: ${{ secrets.GH_TOKEN }}
|
||||
|
||||
@@ -28,21 +28,9 @@ jobs:
|
||||
✅ @{{ author }}
|
||||
|
||||
This issue is closed, If you have any questions, you can comment and reply.
|
||||
- name: Checkout repository
|
||||
if: github.event_name == 'pull_request_target' && github.event.pull_request.merged == true
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Check if PR author is maintainer
|
||||
if: github.event.pull_request.merged == true
|
||||
id: maintainer-check
|
||||
run: |
|
||||
if [ -f .github/maintainers.txt ] && grep -qx "${{ github.event.pull_request.user.login }}" .github/maintainers.txt; then
|
||||
echo "skip=true" >> $GITHUB_OUTPUT
|
||||
fi
|
||||
|
||||
- name: Auto Comment on Pull Request Merged
|
||||
uses: actions-cool/pr-welcome@main
|
||||
if: github.event.pull_request.merged == true && steps.maintainer-check.outputs.skip != 'true'
|
||||
if: github.event.pull_request.merged == true
|
||||
with:
|
||||
token: ${{ secrets.GH_TOKEN }}
|
||||
comment: |
|
||||
|
||||
@@ -6,10 +6,10 @@ on:
|
||||
channel:
|
||||
description: 'Release channel for desktop build (affects version suffix and workflow:set-desktop-version)'
|
||||
required: true
|
||||
default: canary
|
||||
default: nightly
|
||||
type: choice
|
||||
options:
|
||||
- canary
|
||||
- nightly
|
||||
- beta
|
||||
- stable
|
||||
build_macos:
|
||||
@@ -118,8 +118,8 @@ jobs:
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
CSC_LINK: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
|
||||
CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ inputs.channel == 'stable' && secrets.UMAMI_STABLE_DESKTOP_PROJECT_ID || secrets.UMAMI_BETA_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ inputs.channel == 'stable' && secrets.UMAMI_STABLE_DESKTOP_BASE_URL || secrets.UMAMI_BETA_DESKTOP_BASE_URL }}
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ inputs.channel == 'beta' && secrets.UMAMI_BETA_DESKTOP_PROJECT_ID || secrets.UMAMI_NIGHTLY_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ inputs.channel == 'beta' && secrets.UMAMI_BETA_DESKTOP_BASE_URL || secrets.UMAMI_NIGHTLY_DESKTOP_BASE_URL }}
|
||||
CSC_FOR_PULL_REQUEST: true
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
||||
@@ -184,8 +184,8 @@ jobs:
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ inputs.channel == 'stable' && secrets.UMAMI_STABLE_DESKTOP_PROJECT_ID || secrets.UMAMI_BETA_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ inputs.channel == 'stable' && secrets.UMAMI_STABLE_DESKTOP_BASE_URL || secrets.UMAMI_BETA_DESKTOP_BASE_URL }}
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ inputs.channel == 'beta' && secrets.UMAMI_BETA_DESKTOP_PROJECT_ID || secrets.UMAMI_NIGHTLY_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ inputs.channel == 'beta' && secrets.UMAMI_BETA_DESKTOP_BASE_URL || secrets.UMAMI_NIGHTLY_DESKTOP_BASE_URL }}
|
||||
TEMP: C:\temp
|
||||
TMP: C:\temp
|
||||
|
||||
@@ -228,8 +228,8 @@ jobs:
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ inputs.channel == 'stable' && secrets.UMAMI_STABLE_DESKTOP_PROJECT_ID || secrets.UMAMI_BETA_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ inputs.channel == 'stable' && secrets.UMAMI_STABLE_DESKTOP_BASE_URL || secrets.UMAMI_BETA_DESKTOP_BASE_URL }}
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ inputs.channel == 'beta' && secrets.UMAMI_BETA_DESKTOP_PROJECT_ID || secrets.UMAMI_NIGHTLY_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ inputs.channel == 'beta' && secrets.UMAMI_BETA_DESKTOP_BASE_URL || secrets.UMAMI_NIGHTLY_DESKTOP_BASE_URL }}
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v6
|
||||
|
||||
@@ -7,7 +7,7 @@ name: Release Desktop Beta
|
||||
# 如: v2.0.0-beta.1, v2.0.0-alpha.1, v2.0.0-rc.1
|
||||
#
|
||||
# 注意: Stable 版本 (如 v2.0.0) 由 release-desktop-stable.yml 处理
|
||||
# 注意: Nightly 版本已停用,不再参与 Desktop 发布流程
|
||||
# 注意: Nightly 版本 (如 v2.1.0-nightly.xxx) 由 release-desktop-nightly.yml 处理
|
||||
# ============================================
|
||||
|
||||
on:
|
||||
@@ -41,10 +41,10 @@ jobs:
|
||||
version="${version#v}"
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
|
||||
# Beta 版本包含 beta/alpha/rc;nightly 标签已停用
|
||||
# Beta 版本包含 beta/alpha/rc (nightly 由 release-desktop-nightly.yml 处理)
|
||||
if [[ "$version" == *"nightly"* ]]; then
|
||||
echo "is_beta=false" >> $GITHUB_OUTPUT
|
||||
echo "⏭️ Skipping: $version is a disabled nightly release tag"
|
||||
echo "⏭️ Skipping: $version is a nightly release (handled by release-desktop-nightly.yml)"
|
||||
elif [[ "$version" == *"beta"* ]] || [[ "$version" == *"alpha"* ]] || [[ "$version" == *"rc"* ]]; then
|
||||
echo "is_beta=true" >> $GITHUB_OUTPUT
|
||||
echo "✅ Beta release detected: $version"
|
||||
|
||||
@@ -45,7 +45,6 @@ jobs:
|
||||
name: Calculate Canary Version
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
release_notes: ${{ steps.release-notes.outputs.release_notes }}
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
tag: ${{ steps.version.outputs.tag }}
|
||||
should_build: ${{ steps.check.outputs.should_build }}
|
||||
@@ -122,66 +121,6 @@ jobs:
|
||||
echo "✅ Canary version: ${version}"
|
||||
echo "🏷️ Tag: ${tag}"
|
||||
|
||||
- name: Generate canary release notes
|
||||
if: steps.check.outputs.should_build == 'true'
|
||||
id: release-notes
|
||||
env:
|
||||
TAG: ${{ steps.version.outputs.tag }}
|
||||
run: |
|
||||
previous_canary=$(git tag --sort=-creatordate | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+-canary\.[0-9]+$' | head -n 1)
|
||||
latest_stable=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)
|
||||
|
||||
if [ -n "$previous_canary" ]; then
|
||||
compare_from="$previous_canary"
|
||||
compare_range="${previous_canary}..HEAD"
|
||||
elif [ -n "$latest_stable" ]; then
|
||||
compare_from="$latest_stable"
|
||||
compare_range="${latest_stable}..HEAD"
|
||||
else
|
||||
compare_from="initial commit"
|
||||
compare_range="HEAD"
|
||||
fi
|
||||
|
||||
commit_count=$(git rev-list --count "$compare_range")
|
||||
commits=$(git log --no-merges --pretty='- `%h` %s (%an)' "$compare_range")
|
||||
|
||||
if [ -z "$commits" ]; then
|
||||
commits='- No new commits recorded.'
|
||||
fi
|
||||
|
||||
{
|
||||
echo "release_notes<<EOF"
|
||||
echo "## 🐤 Canary Build — ${TAG}"
|
||||
echo
|
||||
echo "> Automated canary build from \`canary\` branch."
|
||||
echo
|
||||
echo "### Commit Information"
|
||||
echo
|
||||
echo "- Based on changes since \`${compare_from}\`"
|
||||
echo "- Commit count: ${commit_count}"
|
||||
echo
|
||||
printf '%s\n' "$commits"
|
||||
echo
|
||||
echo "### ⚠️ Important Notes"
|
||||
echo
|
||||
echo "- **This is an automated canary build and is NOT intended for production use.**"
|
||||
echo "- Canary builds are triggered by \`build\`/\`fix\`/\`style\` commits on the \`canary\` branch."
|
||||
echo "- May contain **unstable or incomplete changes**. **Use at your own risk.**"
|
||||
echo "- It is strongly recommended to **back up your data** before using a canary build."
|
||||
echo
|
||||
echo "### 📦 Installation"
|
||||
echo
|
||||
echo "Download the appropriate installer for your platform from the assets below."
|
||||
echo
|
||||
echo "| Platform | File |"
|
||||
echo "|----------|------|"
|
||||
echo "| macOS (Apple Silicon) | \`.dmg\` (arm64) |"
|
||||
echo "| macOS (Intel) | \`.dmg\` (x64) |"
|
||||
echo "| Windows | \`.exe\` |"
|
||||
echo "| Linux | \`.AppImage\` / \`.deb\` |"
|
||||
echo "EOF"
|
||||
} >> $GITHUB_OUTPUT
|
||||
|
||||
# ============================================
|
||||
# 代码质量检查
|
||||
# ============================================
|
||||
@@ -243,7 +182,6 @@ jobs:
|
||||
env:
|
||||
UPDATE_CHANNEL: canary
|
||||
UPDATE_SERVER_URL: ${{ secrets.UPDATE_SERVER_URL }}
|
||||
RELEASE_NOTES: ${{ needs.calculate-version.outputs.release_notes }}
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
@@ -263,7 +201,6 @@ jobs:
|
||||
env:
|
||||
UPDATE_CHANNEL: canary
|
||||
UPDATE_SERVER_URL: ${{ secrets.UPDATE_SERVER_URL }}
|
||||
RELEASE_NOTES: ${{ needs.calculate-version.outputs.release_notes }}
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
@@ -279,7 +216,6 @@ jobs:
|
||||
env:
|
||||
UPDATE_CHANNEL: canary
|
||||
UPDATE_SERVER_URL: ${{ secrets.UPDATE_SERVER_URL }}
|
||||
RELEASE_NOTES: ${{ needs.calculate-version.outputs.release_notes }}
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
@@ -363,7 +299,28 @@ jobs:
|
||||
tag_name: ${{ needs.calculate-version.outputs.tag }}
|
||||
name: 'Desktop Canary ${{ needs.calculate-version.outputs.tag }}'
|
||||
prerelease: true
|
||||
body: ${{ needs.calculate-version.outputs.release_notes }}
|
||||
body: |
|
||||
## 🐤 Canary Build — ${{ needs.calculate-version.outputs.tag }}
|
||||
|
||||
> Automated canary build from `canary` branch.
|
||||
|
||||
### ⚠️ Important Notes
|
||||
|
||||
- **This is an automated canary build and is NOT intended for production use.**
|
||||
- Canary builds are triggered by `build`/`fix`/`style` commits on the `canary` branch.
|
||||
- May contain **unstable or incomplete changes**. **Use at your own risk.**
|
||||
- It is strongly recommended to **back up your data** before using a canary build.
|
||||
|
||||
### 📦 Installation
|
||||
|
||||
Download the appropriate installer for your platform from the assets below.
|
||||
|
||||
| Platform | File |
|
||||
|----------|------|
|
||||
| macOS (Apple Silicon) | `.dmg` (arm64) |
|
||||
| macOS (Intel) | `.dmg` (x64) |
|
||||
| Windows | `.exe` |
|
||||
| Linux | `.AppImage` / `.deb` |
|
||||
files: |
|
||||
release/latest*
|
||||
release/*.dmg*
|
||||
|
||||
@@ -0,0 +1,415 @@
|
||||
name: Release Desktop Nightly
|
||||
|
||||
# ============================================
|
||||
# Nightly 自动发版工作流
|
||||
# ============================================
|
||||
# 触发条件:
|
||||
# 1. 定时: 每天 UTC+8 14:00 (UTC 06:00)
|
||||
# 2. 手动触发 (workflow_dispatch)
|
||||
#
|
||||
# 版本策略:
|
||||
# 基于最新 tag 的 minor+1, 格式: X.(Y+1).0-nightly.YYYYMMDDHHMM
|
||||
# 例: 当前 tag v2.0.12 → v2.1.0-nightly.202502091400
|
||||
# 使用精确到分钟的时间戳避免同一天多次触发时 tag 冲突
|
||||
# ============================================
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 6 * * *'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
force:
|
||||
description: 'Force build (skip diff check)'
|
||||
required: false
|
||||
type: boolean
|
||||
default: false
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions: read-all
|
||||
|
||||
env:
|
||||
NODE_VERSION: '24.11.1'
|
||||
|
||||
jobs:
|
||||
# ============================================
|
||||
# 计算 Nightly 版本号
|
||||
# ============================================
|
||||
calculate-version:
|
||||
name: Calculate Nightly Version
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
tag: ${{ steps.version.outputs.tag }}
|
||||
has_changes: ${{ steps.changes.outputs.has_changes }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Check for code changes since last nightly
|
||||
id: changes
|
||||
run: |
|
||||
# 手动触发 + force 时跳过 diff 检查
|
||||
if [ "${{ inputs.force }}" == "true" ]; then
|
||||
echo "has_changes=true" >> $GITHUB_OUTPUT
|
||||
echo "🔧 Force build requested, skipping diff check"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 查找上一个 nightly tag
|
||||
last_nightly=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+-nightly\.' | head -n 1)
|
||||
|
||||
if [ -z "$last_nightly" ]; then
|
||||
echo "has_changes=true" >> $GITHUB_OUTPUT
|
||||
echo "📦 No previous nightly tag found, proceeding with first nightly build"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "📌 Last nightly tag: $last_nightly"
|
||||
|
||||
# 对比指定目录是否有变更
|
||||
changes=$(git diff --name-only "$last_nightly"..HEAD -- package.json src/ packages/ apps/desktop/)
|
||||
|
||||
if [ -z "$changes" ]; then
|
||||
echo "has_changes=false" >> $GITHUB_OUTPUT
|
||||
echo "⏭️ No code changes since $last_nightly, skipping nightly build"
|
||||
else
|
||||
echo "has_changes=true" >> $GITHUB_OUTPUT
|
||||
change_count=$(echo "$changes" | wc -l | tr -d ' ')
|
||||
echo "✅ ${change_count} file(s) changed since $last_nightly:"
|
||||
echo "$changes" | head -20
|
||||
[ "$change_count" -gt 20 ] && echo " ... and $((change_count - 20)) more"
|
||||
fi
|
||||
|
||||
- name: Calculate nightly version
|
||||
if: steps.changes.outputs.has_changes == 'true'
|
||||
id: version
|
||||
run: |
|
||||
# 获取最新的 tag (排除 nightly tag)
|
||||
latest_tag=$(git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)
|
||||
|
||||
if [ -z "$latest_tag" ]; then
|
||||
echo "❌ No stable tag found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "📌 Latest stable tag: $latest_tag"
|
||||
|
||||
# 去掉 v 前缀
|
||||
base_version="${latest_tag#v}"
|
||||
|
||||
# 解析 major.minor.patch
|
||||
IFS='.' read -r major minor patch <<< "$base_version"
|
||||
|
||||
# minor + 1, patch 归零
|
||||
new_minor=$((minor + 1))
|
||||
timestamp=$(date -u +"%Y%m%d%H%M")
|
||||
|
||||
version="${major}.${new_minor}.0-nightly.${timestamp}"
|
||||
tag="v${version}"
|
||||
|
||||
echo "version=${version}" >> $GITHUB_OUTPUT
|
||||
echo "tag=${tag}" >> $GITHUB_OUTPUT
|
||||
echo "✅ Nightly version: ${version}"
|
||||
echo "🏷️ Tag: ${tag}"
|
||||
|
||||
# ============================================
|
||||
# 代码质量检查
|
||||
# ============================================
|
||||
test:
|
||||
name: Code quality check
|
||||
needs: [calculate-version]
|
||||
if: needs.calculate-version.outputs.has_changes == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout base
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Setup environment
|
||||
uses: ./.github/actions/setup-env
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
|
||||
- name: Install deps
|
||||
run: pnpm install
|
||||
|
||||
- name: Lint
|
||||
run: bun run lint
|
||||
|
||||
# ============================================
|
||||
# 多平台构建
|
||||
# ============================================
|
||||
build:
|
||||
needs: [calculate-version, test]
|
||||
if: needs.calculate-version.outputs.has_changes == 'true'
|
||||
name: Build Desktop App
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [macos-15, macos-15-intel, windows-2025, ubuntu-latest]
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Setup build environment
|
||||
uses: ./.github/actions/desktop-build-setup
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
|
||||
- name: Set package version
|
||||
run: npm run workflow:set-desktop-version ${{ needs.calculate-version.outputs.version }} nightly
|
||||
|
||||
# macOS 构建前清理 (修复 hdiutil 问题 https://github.com/electron-userland/electron-builder/issues/8415)
|
||||
- name: Clean previous build artifacts (macOS)
|
||||
if: runner.os == 'macOS'
|
||||
run: |
|
||||
sudo rm -rf apps/desktop/release || true
|
||||
sudo rm -rf apps/desktop/dist || true
|
||||
sudo rm -rf /tmp/electron-builder* || true
|
||||
|
||||
# macOS 构建
|
||||
- name: Build artifact on macOS
|
||||
if: runner.os == 'macOS'
|
||||
run: npm run desktop:package:app
|
||||
env:
|
||||
UPDATE_CHANNEL: nightly
|
||||
UPDATE_SERVER_URL: ${{ secrets.UPDATE_SERVER_URL }}
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
CSC_LINK: ${{ secrets.APPLE_CERTIFICATE_BASE64 }}
|
||||
CSC_KEY_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
|
||||
CSC_FOR_PULL_REQUEST: true
|
||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ secrets.UMAMI_BETA_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ secrets.UMAMI_BETA_DESKTOP_BASE_URL }}
|
||||
|
||||
# Windows 构建
|
||||
- name: Build artifact on Windows
|
||||
if: runner.os == 'Windows'
|
||||
run: npm run desktop:package:app
|
||||
env:
|
||||
UPDATE_CHANNEL: nightly
|
||||
UPDATE_SERVER_URL: ${{ secrets.UPDATE_SERVER_URL }}
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ secrets.UMAMI_BETA_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ secrets.UMAMI_BETA_DESKTOP_BASE_URL }}
|
||||
TEMP: C:\temp
|
||||
TMP: C:\temp
|
||||
|
||||
# Linux 构建
|
||||
- name: Build artifact on Linux
|
||||
if: runner.os == 'Linux'
|
||||
run: npm run desktop:package:app
|
||||
env:
|
||||
UPDATE_CHANNEL: nightly
|
||||
UPDATE_SERVER_URL: ${{ secrets.UPDATE_SERVER_URL }}
|
||||
APP_URL: http://localhost:3015
|
||||
DATABASE_URL: 'postgresql://postgres@localhost:5432/postgres'
|
||||
KEY_VAULTS_SECRET: 'oLXWIiR/AKF+rWaqy9lHkrYgzpATbW3CtJp3UfkVgpE='
|
||||
NEXT_PUBLIC_DESKTOP_PROJECT_ID: ${{ secrets.UMAMI_BETA_DESKTOP_PROJECT_ID }}
|
||||
NEXT_PUBLIC_DESKTOP_UMAMI_BASE_URL: ${{ secrets.UMAMI_BETA_DESKTOP_BASE_URL }}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: ./.github/actions/desktop-upload-artifacts
|
||||
with:
|
||||
artifact-name: release-${{ matrix.os }}
|
||||
retention-days: 3
|
||||
|
||||
# ============================================
|
||||
# 合并 macOS 多架构 latest-mac.yml 文件
|
||||
# ============================================
|
||||
merge-mac-files:
|
||||
needs: [build]
|
||||
name: Merge macOS Release Files
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Setup environment
|
||||
uses: ./.github/actions/setup-env
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
path: release
|
||||
pattern: release-*
|
||||
merge-multiple: true
|
||||
|
||||
- name: List downloaded artifacts
|
||||
run: ls -R release
|
||||
|
||||
- name: Install yaml only for merge step
|
||||
run: |
|
||||
cd scripts/electronWorkflow
|
||||
if [ ! -f package.json ]; then
|
||||
echo '{"name":"merge-mac-release","private":true}' > package.json
|
||||
fi
|
||||
bun add --no-save yaml@2.8.1
|
||||
|
||||
- name: Merge latest-mac.yml files
|
||||
run: bun run scripts/electronWorkflow/mergeMacReleaseFiles.js
|
||||
|
||||
- name: Upload artifacts with merged macOS files
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
name: merged-release
|
||||
path: release/
|
||||
retention-days: 1
|
||||
|
||||
# ============================================
|
||||
# 创建 Nightly Release
|
||||
# ============================================
|
||||
publish-release:
|
||||
needs: [merge-mac-files, calculate-version]
|
||||
name: Publish Nightly Release
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Download merged artifacts
|
||||
uses: actions/download-artifact@v7
|
||||
with:
|
||||
name: merged-release
|
||||
path: release
|
||||
|
||||
- name: List final artifacts
|
||||
run: ls -R release
|
||||
|
||||
- name: Create Nightly Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
tag_name: ${{ needs.calculate-version.outputs.tag }}
|
||||
name: 'Desktop Nightly ${{ needs.calculate-version.outputs.tag }}'
|
||||
prerelease: true
|
||||
body: |
|
||||
## 🌙 Nightly Build — ${{ needs.calculate-version.outputs.tag }}
|
||||
|
||||
> Automated nightly build from `main` branch.
|
||||
|
||||
### ⚠️ Important Notes
|
||||
|
||||
- **This is an automated nightly build and is NOT intended for production use.**
|
||||
- Nightly builds are generated from the latest `main` branch and may contain **unstable, untested, or incomplete features**.
|
||||
- **No guarantees** are made regarding stability, data integrity, or backward compatibility.
|
||||
- Bugs, crashes, and breaking changes are expected. **Use at your own risk.**
|
||||
- **Do NOT report bugs** from nightly builds unless you can reproduce them on the latest beta or stable release.
|
||||
- Nightly builds may have **different update channels** — they will not auto-update to/from stable or beta versions.
|
||||
- It is strongly recommended to **back up your data** before using a nightly build.
|
||||
|
||||
### 📦 Installation
|
||||
|
||||
Download the appropriate installer for your platform from the assets below.
|
||||
|
||||
| Platform | File |
|
||||
|----------|------|
|
||||
| macOS (Apple Silicon) | `.dmg` (arm64) |
|
||||
| macOS (Intel) | `.dmg` (x64) |
|
||||
| Windows | `.exe` |
|
||||
| Linux | `.AppImage` / `.deb` |
|
||||
files: |
|
||||
release/latest*
|
||||
release/*.dmg*
|
||||
release/*.zip*
|
||||
release/*.exe*
|
||||
release/*.AppImage
|
||||
release/*.deb*
|
||||
release/*.snap*
|
||||
release/*.rpm*
|
||||
release/*.tar.gz*
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# ============================================
|
||||
# 发布到 S3 更新服务器
|
||||
# ============================================
|
||||
publish-s3:
|
||||
needs: [merge-mac-files, calculate-version]
|
||||
name: Publish to S3
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: ./.github/actions/desktop-publish-s3
|
||||
with:
|
||||
channel: nightly
|
||||
version: ${{ needs.calculate-version.outputs.version }}
|
||||
aws-access-key-id: ${{ secrets.UPDATE_AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.UPDATE_AWS_SECRET_ACCESS_KEY }}
|
||||
s3-bucket: ${{ secrets.UPDATE_S3_BUCKET }}
|
||||
s3-region: ${{ secrets.UPDATE_S3_REGION }}
|
||||
s3-endpoint: ${{ secrets.UPDATE_S3_ENDPOINT }}
|
||||
|
||||
# ============================================
|
||||
# 清理旧的 Nightly Releases (保留最近 7 个)
|
||||
# ============================================
|
||||
cleanup-old-nightlies:
|
||||
needs: [publish-release, publish-s3]
|
||||
name: Cleanup Old Nightly Releases
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
|
||||
- name: Delete old nightly GitHub releases
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
script: |
|
||||
const { data: releases } = await github.rest.repos.listReleases({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
per_page: 100,
|
||||
});
|
||||
|
||||
const nightlyReleases = releases
|
||||
.filter(r => r.tag_name.includes('-nightly.'))
|
||||
.sort((a, b) => new Date(b.created_at) - new Date(a.created_at));
|
||||
|
||||
const toDelete = nightlyReleases.slice(7);
|
||||
|
||||
for (const release of toDelete) {
|
||||
console.log(`🗑️ Deleting old nightly release: ${release.tag_name}`);
|
||||
|
||||
// Delete the release
|
||||
await github.rest.repos.deleteRelease({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
release_id: release.id,
|
||||
});
|
||||
|
||||
// Delete the tag
|
||||
try {
|
||||
await github.rest.git.deleteRef({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
ref: `tags/${release.tag_name}`,
|
||||
});
|
||||
} catch (e) {
|
||||
console.log(`⚠️ Could not delete tag ${release.tag_name}: ${e.message}`);
|
||||
}
|
||||
}
|
||||
|
||||
console.log(`✅ Cleanup complete. Kept ${Math.min(nightlyReleases.length, 7)} nightly releases, deleted ${toDelete.length}.`);
|
||||
|
||||
- name: Cleanup old S3 versions
|
||||
uses: ./.github/actions/desktop-cleanup-s3
|
||||
with:
|
||||
channel: nightly
|
||||
keep-count: '15'
|
||||
aws-access-key-id: ${{ secrets.UPDATE_AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.UPDATE_AWS_SECRET_ACCESS_KEY }}
|
||||
s3-bucket: ${{ secrets.UPDATE_S3_BUCKET }}
|
||||
s3-region: ${{ secrets.UPDATE_S3_REGION }}
|
||||
s3-endpoint: ${{ secrets.UPDATE_S3_ENDPOINT }}
|
||||
@@ -1,89 +0,0 @@
|
||||
name: Release ModelBank
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
id-token: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- canary
|
||||
paths:
|
||||
- packages/model-bank/**
|
||||
workflow_dispatch: {}
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build ModelBank
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.11.1
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Build package
|
||||
run: pnpm --filter model-bank build
|
||||
|
||||
publish:
|
||||
name: Publish ModelBank
|
||||
if: ${{ github.event_name == 'workflow_dispatch' }}
|
||||
needs: build
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v6
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: 24.11.1
|
||||
registry-url: https://registry.npmjs.org
|
||||
|
||||
- name: Setup pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Bump patch version
|
||||
id: version
|
||||
run: |
|
||||
npm version patch --no-git-tag-version --prefix packages/model-bank
|
||||
echo "version=$(node -p 'require(\"./packages/model-bank/package.json\").version')" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Build package
|
||||
run: pnpm --filter model-bank build
|
||||
|
||||
- name: Publish to npm
|
||||
run: npm publish --provenance
|
||||
working-directory: packages/model-bank
|
||||
env:
|
||||
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
|
||||
- name: Commit version bump
|
||||
env:
|
||||
MODEL_BANK_VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
git config user.name "lobehubbot"
|
||||
git config user.email "i@lobehub.com"
|
||||
git add packages/model-bank/package.json
|
||||
git commit -m "🔖 chore(model-bank): release v${MODEL_BANK_VERSION}"
|
||||
git push
|
||||
+7
-7
@@ -1,8 +1,8 @@
|
||||
# LobeHub - Contributing Guide 🌟
|
||||
# Lobe Chat - Contributing Guide 🌟
|
||||
|
||||
We're thrilled that you want to contribute to LobeHub, the future of communication! 😄
|
||||
We're thrilled that you want to contribute to Lobe Chat, the future of communication! 😄
|
||||
|
||||
LobeHub is an open-source project, and we welcome your collaboration. Before you jump in, let's make sure you're all set to contribute effectively and have loads of fun along the way!
|
||||
Lobe Chat is an open-source project, and we welcome your collaboration. Before you jump in, let's make sure you're all set to contribute effectively and have loads of fun along the way!
|
||||
|
||||
## Table of Contents
|
||||
|
||||
@@ -69,11 +69,11 @@ git fetch upstream
|
||||
git merge upstream/main
|
||||
```
|
||||
|
||||
This ensures you're working on the most current version of LobeHub. Stay fresh! 💨
|
||||
This ensures you're working on the most current version of Lobe Chat. Stay fresh! 💨
|
||||
|
||||
## Open a Pull Request
|
||||
|
||||
🚀 Time to share your contribution! Head over to the original LobeHub repository and open a Pull Request (PR). Our maintainers will review your work.
|
||||
🚀 Time to share your contribution! Head over to the original Lobe Chat repository and open a Pull Request (PR). Our maintainers will review your work.
|
||||
|
||||
## Review and Collaboration
|
||||
|
||||
@@ -81,8 +81,8 @@ This ensures you're working on the most current version of LobeHub. Stay fresh!
|
||||
|
||||
## Celebrate 🎉
|
||||
|
||||
🎈 Congratulations! Your contribution is now part of LobeHub. 🥳
|
||||
🎈 Congratulations! Your contribution is now part of Lobe Chat. 🥳
|
||||
|
||||
Thank you for making LobeHub even more magical. We can't wait to see what you create! 🌠
|
||||
Thank you for making Lobe Chat even more magical. We can't wait to see what you create! 🌠
|
||||
|
||||
Happy Coding! 🚀🦄
|
||||
|
||||
-81
@@ -1,81 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
We only provide security fixes for the **latest 2.x release**. Older versions (including all 1.x releases) are end-of-life and will not receive patches.
|
||||
|
||||
| Version | Supported |
|
||||
| ------------ | --------- |
|
||||
| 2.x (latest) | ✅ |
|
||||
| 1.x | ❌ |
|
||||
| 0.x | ❌ |
|
||||
|
||||
If you are running a 1.x deployment, we strongly recommend upgrading to the latest 2.x release.
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report security vulnerabilities through the GitHub Security Advisory ["Report a Vulnerability"](https://github.com/lobehub/lobehub/security/advisories/new) tab.
|
||||
|
||||
**Please do not report security vulnerabilities through public GitHub issues.**
|
||||
|
||||
### Response Timeline
|
||||
|
||||
- **Acknowledgement**: We aim to respond to all reports within **7 days**.
|
||||
- **Fix**: Confirmed vulnerabilities will be addressed within **30 days**.
|
||||
- **Urgent issues**: If you believe the vulnerability is critical and actively exploitable, you can reach out directly on Discord (`arvinxu`) for faster coordination.
|
||||
|
||||
### What to Include
|
||||
|
||||
A good vulnerability report should include:
|
||||
|
||||
- A clear description of the issue and its potential impact
|
||||
- The affected version (must be the latest 2.x release)
|
||||
- Step-by-step reproduction instructions or a working PoC
|
||||
- Any relevant logs, screenshots, or code references
|
||||
|
||||
## Scope
|
||||
|
||||
### In Scope
|
||||
|
||||
- Security issues affecting the **latest 2.x release** of LobeHub
|
||||
- Vulnerabilities in the **server-side deployment** (LobeHub Cloud or self-hosted server mode)
|
||||
- Issues that can be exploited **without requiring admin/owner access** to the deployment
|
||||
|
||||
### Out of Scope (Not a Vulnerability)
|
||||
|
||||
The following are considered **by design** or **out of scope** and will not be accepted as vulnerability reports:
|
||||
|
||||
#### 1. End-of-Life Versions
|
||||
|
||||
Any issue that only affects 1.x or earlier versions. This includes but is not limited to the `X-lobe-chat-auth` header mechanism, `webapi` route authentication, and other 1.x-specific architectures that have been completely removed in 2.x.
|
||||
|
||||
#### 2. File Proxy Public Access (`/f/:id`)
|
||||
|
||||
The file proxy endpoint `/f/:id` uses randomly generated, non-enumerable IDs as [capability URLs](https://www.w3.org/TR/capability-urls/). This is a deliberate design choice, similar to how S3 presigned URLs or Google Docs sharing links work. Knowing the URL grants access — this is by design, not an authorization bypass.
|
||||
|
||||
#### 3. User Enumeration on Login Flows
|
||||
|
||||
Endpoints such as `check-user` that indicate whether an account exists are part of the standard login UX. This is a common and intentional pattern used by most modern authentication flows.
|
||||
|
||||
#### 4. Self-Hosted Client-Side API Key Storage
|
||||
|
||||
In self-hosted client-side mode, users configure their own API keys which are stored in the browser's local storage. This is the expected behavior for client-side deployments where the user is both the operator and the consumer.
|
||||
|
||||
#### 5. Issues Requiring Admin or Owner Privileges
|
||||
|
||||
Actions that require administrative access to the deployment (e.g., environment variable configuration, server-side settings) are not considered security vulnerabilities, as the admin is already a trusted party.
|
||||
|
||||
#### 6. Theoretical Attacks Without Practical Impact
|
||||
|
||||
Reports based on theoretical attack scenarios without a working proof of concept against a realistic deployment, or issues that require unlikely preconditions (e.g., physical access to the server, pre-existing compromise of the host system).
|
||||
|
||||
## Disclosure Policy
|
||||
|
||||
- We follow [coordinated vulnerability disclosure](https://en.wikipedia.org/wiki/Coordinated_vulnerability_disclosure).
|
||||
- We will credit reporters in the security advisory unless they prefer to remain anonymous.
|
||||
- Please allow us reasonable time to address the issue before any public disclosure.
|
||||
|
||||
## Contact
|
||||
|
||||
- **Primary**: [GitHub Security Advisories](https://github.com/lobehub/lobehub/security/advisories/new)
|
||||
- **Urgent**: Discord — `arvinxu`
|
||||
@@ -1,6 +1,6 @@
|
||||
.\" Code generated by `npm run man:generate`; DO NOT EDIT.
|
||||
.\" Manual command details come from the Commander command tree.
|
||||
.TH LH 1 "" "@lobehub/cli 0.0.3" "User Commands"
|
||||
.TH LH 1 "" "@lobehub/cli 0.0.1\-canary.14" "User Commands"
|
||||
.SH NAME
|
||||
lh \- LobeHub CLI \- manage and connect to LobeHub services
|
||||
.SH SYNOPSIS
|
||||
@@ -83,9 +83,6 @@ Manage agent skills
|
||||
.B session\-group
|
||||
Manage agent session groups
|
||||
.TP
|
||||
.B task
|
||||
Manage agent tasks
|
||||
.TP
|
||||
.B thread
|
||||
Manage message threads
|
||||
.TP
|
||||
@@ -115,9 +112,6 @@ View usage statistics
|
||||
.TP
|
||||
.B eval
|
||||
Manage evaluation workflows
|
||||
.TP
|
||||
.B migrate
|
||||
Migrate data from external tools (OpenClaw, ChatGPT, Claude, etc.)
|
||||
.SH OPTIONS
|
||||
.TP
|
||||
.B \-V, \-\-version
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@lobehub/cli",
|
||||
"version": "0.0.3",
|
||||
"version": "0.0.1-canary.14",
|
||||
"type": "module",
|
||||
"bin": {
|
||||
"lh": "./dist/index.js",
|
||||
@@ -37,7 +37,6 @@
|
||||
"debug": "^4.4.0",
|
||||
"diff": "^8.0.3",
|
||||
"fast-glob": "^3.3.3",
|
||||
"ignore": "^7.0.5",
|
||||
"picocolors": "^1.1.1",
|
||||
"superjson": "^2.2.6",
|
||||
"tsdown": "^0.21.4",
|
||||
|
||||
@@ -39,9 +39,7 @@ async function getAuthAndServer() {
|
||||
|
||||
const result = await getValidToken();
|
||||
if (!result) {
|
||||
log.error(
|
||||
`No authentication found. Run 'lh login' (or 'npx -y @lobehub/cli login') first, or set ${CLI_API_KEY_ENV}.`,
|
||||
);
|
||||
log.error(`No authentication found. Run 'lh login' first, or set ${CLI_API_KEY_ENV}.`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
|
||||
+22
-37
@@ -3,9 +3,29 @@ import { CLI_API_KEY_ENV } from '../constants/auth';
|
||||
import { resolveServerUrl } from '../settings';
|
||||
import { log } from '../utils/logger';
|
||||
|
||||
// Must match the server's SECRET_XOR_KEY (src/envs/auth.ts)
|
||||
const SECRET_XOR_KEY = 'LobeHub · LobeHub';
|
||||
|
||||
/**
|
||||
* XOR-obfuscate a payload and encode as Base64.
|
||||
* The /webapi/* routes require `X-lobe-chat-auth` with this encoding.
|
||||
*/
|
||||
function obfuscatePayloadWithXOR(payload: Record<string, any>): string {
|
||||
const jsonString = JSON.stringify(payload);
|
||||
const dataBytes = new TextEncoder().encode(jsonString);
|
||||
const keyBytes = new TextEncoder().encode(SECRET_XOR_KEY);
|
||||
|
||||
const result = new Uint8Array(dataBytes.length);
|
||||
for (let i = 0; i < dataBytes.length; i++) {
|
||||
result[i] = dataBytes[i] ^ keyBytes[i % keyBytes.length];
|
||||
}
|
||||
|
||||
return btoa(String.fromCharCode(...result));
|
||||
}
|
||||
|
||||
export interface AuthInfo {
|
||||
accessToken: string;
|
||||
/** Headers required for /webapi/* endpoints (Oidc-Auth for authentication) */
|
||||
/** Headers required for /webapi/* endpoints (includes both X-lobe-chat-auth and Oidc-Auth) */
|
||||
headers: Record<string, string>;
|
||||
serverUrl: string;
|
||||
}
|
||||
@@ -32,43 +52,8 @@ export async function getAuthInfo(): Promise<AuthInfo> {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Oidc-Auth': accessToken,
|
||||
'X-lobe-chat-auth': obfuscatePayloadWithXOR({}),
|
||||
},
|
||||
serverUrl,
|
||||
};
|
||||
}
|
||||
|
||||
export async function getAgentStreamAuthInfo(): Promise<Pick<AuthInfo, 'headers' | 'serverUrl'>> {
|
||||
const serverUrl = resolveServerUrl();
|
||||
|
||||
const envJwt = process.env.LOBEHUB_JWT;
|
||||
if (envJwt) {
|
||||
return {
|
||||
headers: { 'Oidc-Auth': envJwt },
|
||||
serverUrl,
|
||||
};
|
||||
}
|
||||
|
||||
const envApiKey = process.env[CLI_API_KEY_ENV];
|
||||
if (envApiKey) {
|
||||
return {
|
||||
headers: { 'X-API-Key': envApiKey },
|
||||
serverUrl,
|
||||
};
|
||||
}
|
||||
|
||||
const result = await getValidToken();
|
||||
if (!result) {
|
||||
log.error(`No authentication found. Run 'lh login' first, or set ${CLI_API_KEY_ENV}.`);
|
||||
process.exit(1);
|
||||
|
||||
return {
|
||||
headers: {},
|
||||
serverUrl,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
headers: { 'Oidc-Auth': result.credentials.accessToken },
|
||||
serverUrl,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -27,9 +27,6 @@ const { mockTrpcClient } = vi.hoisted(() => ({
|
||||
execAgent: { mutate: vi.fn() },
|
||||
getOperationStatus: { query: vi.fn() },
|
||||
},
|
||||
device: {
|
||||
listDevices: { query: vi.fn() },
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
@@ -41,18 +38,13 @@ const { mockStreamAgentEvents } = vi.hoisted(() => ({
|
||||
mockStreamAgentEvents: vi.fn(),
|
||||
}));
|
||||
|
||||
const { mockGetAgentStreamAuthInfo } = vi.hoisted(() => ({
|
||||
mockGetAgentStreamAuthInfo: vi.fn(),
|
||||
}));
|
||||
|
||||
const { mockResolveLocalDeviceId } = vi.hoisted(() => ({
|
||||
mockResolveLocalDeviceId: vi.fn(),
|
||||
const { mockGetAuthInfo } = vi.hoisted(() => ({
|
||||
mockGetAuthInfo: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock('../api/client', () => ({ getTrpcClient: mockGetTrpcClient }));
|
||||
vi.mock('../api/http', () => ({ getAgentStreamAuthInfo: mockGetAgentStreamAuthInfo }));
|
||||
vi.mock('../api/http', () => ({ getAuthInfo: mockGetAuthInfo }));
|
||||
vi.mock('../utils/agentStream', () => ({ streamAgentEvents: mockStreamAgentEvents }));
|
||||
vi.mock('../utils/device', () => ({ resolveLocalDeviceId: mockResolveLocalDeviceId }));
|
||||
vi.mock('../utils/logger', () => ({
|
||||
log: { debug: vi.fn(), error: vi.fn(), heartbeat: vi.fn(), info: vi.fn(), warn: vi.fn() },
|
||||
setVerbose: vi.fn(),
|
||||
@@ -66,12 +58,12 @@ describe('agent command', () => {
|
||||
exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {}) as any);
|
||||
consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
||||
mockGetTrpcClient.mockResolvedValue(mockTrpcClient);
|
||||
mockGetAgentStreamAuthInfo.mockResolvedValue({
|
||||
headers: { 'Oidc-Auth': 'test-token' },
|
||||
mockGetAuthInfo.mockResolvedValue({
|
||||
accessToken: 'test-token',
|
||||
headers: { 'Content-Type': 'application/json', 'Oidc-Auth': 'test-token' },
|
||||
serverUrl: 'https://example.com',
|
||||
});
|
||||
mockStreamAgentEvents.mockResolvedValue(undefined);
|
||||
mockResolveLocalDeviceId.mockReset();
|
||||
for (const method of Object.values(mockTrpcClient.agent)) {
|
||||
for (const fn of Object.values(method)) {
|
||||
(fn as ReturnType<typeof vi.fn>).mockReset();
|
||||
@@ -82,11 +74,6 @@ describe('agent command', () => {
|
||||
(fn as ReturnType<typeof vi.fn>).mockReset();
|
||||
}
|
||||
}
|
||||
for (const method of Object.values(mockTrpcClient.device)) {
|
||||
for (const fn of Object.values(method)) {
|
||||
(fn as ReturnType<typeof vi.fn>).mockReset();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -310,6 +297,7 @@ describe('agent command', () => {
|
||||
expect.objectContaining({ json: undefined, verbose: undefined }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should support --slug option', async () => {
|
||||
mockTrpcClient.aiAgent.execAgent.mutate.mockResolvedValue({
|
||||
operationId: 'op-456',
|
||||
@@ -396,186 +384,6 @@ describe('agent command', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should pass --device local as deviceId', async () => {
|
||||
mockResolveLocalDeviceId.mockReturnValue('local-device-1');
|
||||
mockTrpcClient.device.listDevices.query.mockResolvedValue([
|
||||
{ deviceId: 'local-device-1', online: true },
|
||||
]);
|
||||
mockTrpcClient.aiAgent.execAgent.mutate.mockResolvedValue({
|
||||
operationId: 'op-device',
|
||||
success: true,
|
||||
});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--device',
|
||||
'local',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.aiAgent.execAgent.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ agentId: 'a1', deviceId: 'local-device-1', prompt: 'Hi' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should pass --topic-id and --device local together', async () => {
|
||||
mockResolveLocalDeviceId.mockReturnValue('local-device-1');
|
||||
mockTrpcClient.device.listDevices.query.mockResolvedValue([
|
||||
{ deviceId: 'local-device-1', online: true },
|
||||
]);
|
||||
mockTrpcClient.aiAgent.execAgent.mutate.mockResolvedValue({
|
||||
operationId: 'op-topic-device',
|
||||
success: true,
|
||||
});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--topic-id',
|
||||
't1',
|
||||
'--device',
|
||||
'local',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.aiAgent.execAgent.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ appContext: { topicId: 't1' }, deviceId: 'local-device-1' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should pass explicit --device id as deviceId', async () => {
|
||||
mockTrpcClient.device.listDevices.query.mockResolvedValue([
|
||||
{ deviceId: 'device-remote-1', online: true },
|
||||
]);
|
||||
mockTrpcClient.aiAgent.execAgent.mutate.mockResolvedValue({
|
||||
operationId: 'op-explicit-device',
|
||||
success: true,
|
||||
});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--device',
|
||||
'device-remote-1',
|
||||
]);
|
||||
|
||||
expect(mockResolveLocalDeviceId).not.toHaveBeenCalled();
|
||||
expect(mockTrpcClient.aiAgent.execAgent.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ agentId: 'a1', deviceId: 'device-remote-1', prompt: 'Hi' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should exit when explicit device is not found', async () => {
|
||||
mockTrpcClient.device.listDevices.query.mockResolvedValue([
|
||||
{ deviceId: 'other-device', online: true },
|
||||
]);
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--device',
|
||||
'device-remote-1',
|
||||
]);
|
||||
|
||||
expect(log.error).toHaveBeenCalledWith(expect.stringContaining('was not found'));
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
it('should exit when local device cannot be resolved', async () => {
|
||||
mockResolveLocalDeviceId.mockReturnValue(undefined);
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--device',
|
||||
'local',
|
||||
]);
|
||||
|
||||
expect(log.error).toHaveBeenCalledWith(expect.stringContaining("Run 'lh connect' first"));
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
it('should exit when local device is offline', async () => {
|
||||
mockResolveLocalDeviceId.mockReturnValue('local-device-1');
|
||||
mockTrpcClient.device.listDevices.query.mockResolvedValue([
|
||||
{ deviceId: 'local-device-1', online: false },
|
||||
]);
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--device',
|
||||
'local',
|
||||
]);
|
||||
|
||||
expect(log.error).toHaveBeenCalledWith(expect.stringContaining('is not online'));
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
it('should exit when explicit device is offline', async () => {
|
||||
mockTrpcClient.device.listDevices.query.mockResolvedValue([
|
||||
{ deviceId: 'device-remote-1', online: false },
|
||||
]);
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'agent',
|
||||
'run',
|
||||
'--agent-id',
|
||||
'a1',
|
||||
'--prompt',
|
||||
'Hi',
|
||||
'--device',
|
||||
'device-remote-1',
|
||||
]);
|
||||
|
||||
expect(log.error).toHaveBeenCalledWith(expect.stringContaining('Bring it online'));
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
it('should pass --json to stream options', async () => {
|
||||
mockTrpcClient.aiAgent.execAgent.mutate.mockResolvedValue({
|
||||
operationId: 'op-j',
|
||||
|
||||
@@ -4,14 +4,8 @@ import type { Command } from 'commander';
|
||||
import pc from 'picocolors';
|
||||
|
||||
import { getTrpcClient } from '../api/client';
|
||||
import { getAgentStreamAuthInfo } from '../api/http';
|
||||
import { resolveAgentGatewayUrl } from '../settings';
|
||||
import {
|
||||
replayAgentEvents,
|
||||
streamAgentEvents,
|
||||
streamAgentEventsViaWebSocket,
|
||||
} from '../utils/agentStream';
|
||||
import { resolveLocalDeviceId } from '../utils/device';
|
||||
import { getAuthInfo } from '../api/http';
|
||||
import { replayAgentEvents, streamAgentEvents } from '../utils/agentStream';
|
||||
import { confirm, outputJson, printTable, truncate } from '../utils/format';
|
||||
import { log, setVerbose } from '../utils/logger';
|
||||
|
||||
@@ -254,24 +248,17 @@ export function registerAgentCommand(program: Command) {
|
||||
.option('-p, --prompt <text>', 'User prompt')
|
||||
.option('-t, --topic-id <id>', 'Reuse an existing topic')
|
||||
.option('--no-auto-start', 'Do not auto-start the agent')
|
||||
.option(
|
||||
'--device <target>',
|
||||
'Target device ID, or use "local" for the current connected device',
|
||||
)
|
||||
.option('--json', 'Output full JSON event stream')
|
||||
.option('-v, --verbose', 'Show detailed tool call info')
|
||||
.option('--replay <file>', 'Replay events from a saved JSON file (offline)')
|
||||
.option('--sse', 'Force SSE stream instead of WebSocket gateway')
|
||||
.action(
|
||||
async (options: {
|
||||
agentId?: string;
|
||||
autoStart?: boolean;
|
||||
device?: string;
|
||||
json?: boolean;
|
||||
prompt?: string;
|
||||
replay?: string;
|
||||
slug?: string;
|
||||
sse?: boolean;
|
||||
topicId?: string;
|
||||
verbose?: boolean;
|
||||
}) => {
|
||||
@@ -298,45 +285,9 @@ export function registerAgentCommand(program: Command) {
|
||||
|
||||
const client = await getTrpcClient();
|
||||
|
||||
let deviceId: string | undefined;
|
||||
if (options.device !== undefined) {
|
||||
if (options.device === 'local') {
|
||||
deviceId = resolveLocalDeviceId();
|
||||
if (!deviceId) {
|
||||
log.error(
|
||||
"No local device found. Run 'lh connect' first, then retry with --device local.",
|
||||
);
|
||||
process.exit(1);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
deviceId = options.device;
|
||||
}
|
||||
|
||||
const devices = await client.device.listDevices.query();
|
||||
const matchedDevice = devices.find(
|
||||
(device: { deviceId?: string; online?: boolean }) => device.deviceId === deviceId,
|
||||
);
|
||||
if (!matchedDevice) {
|
||||
log.error(`Device "${deviceId}" was not found. Check 'lh device list' and try again.`);
|
||||
process.exit(1);
|
||||
return;
|
||||
}
|
||||
if (!matchedDevice.online) {
|
||||
log.error(
|
||||
options.device === 'local'
|
||||
? `Local device "${deviceId}" is not online. Reconnect with 'lh connect' and try again.`
|
||||
: `Device "${deviceId}" is not online. Bring it online and try again.`,
|
||||
);
|
||||
process.exit(1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 1. Exec agent to get operationId
|
||||
const input: Record<string, any> = { prompt: options.prompt };
|
||||
if (options.agentId) input.agentId = options.agentId;
|
||||
if (deviceId) input.deviceId = deviceId;
|
||||
if (options.slug) input.slug = options.slug;
|
||||
if (options.topicId) input.appContext = { topicId: options.topicId };
|
||||
if (options.autoStart === false) input.autoStart = false;
|
||||
@@ -354,26 +305,14 @@ export function registerAgentCommand(program: Command) {
|
||||
log.info(`Operation: ${pc.dim(operationId)} · Topic: ${pc.dim(r.topicId || 'n/a')}`);
|
||||
}
|
||||
|
||||
// 2. Connect to stream (WebSocket via Gateway, or fallback to SSE)
|
||||
const { serverUrl, headers } = await getAgentStreamAuthInfo();
|
||||
const agentGatewayUrl = options.sse ? undefined : resolveAgentGatewayUrl();
|
||||
// 2. Connect to SSE stream
|
||||
const { serverUrl, headers } = await getAuthInfo();
|
||||
const streamUrl = `${serverUrl}/api/agent/stream?operationId=${encodeURIComponent(operationId)}`;
|
||||
|
||||
if (agentGatewayUrl) {
|
||||
const token = headers['Oidc-Auth'] || headers['X-API-Key'] || '';
|
||||
await streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: agentGatewayUrl,
|
||||
json: options.json,
|
||||
operationId,
|
||||
token,
|
||||
verbose: options.verbose,
|
||||
});
|
||||
} else {
|
||||
const streamUrl = `${serverUrl}/api/agent/stream?operationId=${encodeURIComponent(operationId)}`;
|
||||
await streamAgentEvents(streamUrl, headers, {
|
||||
json: options.json,
|
||||
verbose: options.verbose,
|
||||
});
|
||||
}
|
||||
await streamAgentEvents(streamUrl, headers, {
|
||||
json: options.json,
|
||||
verbose: options.verbose,
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ vi.mock('@lobechat/device-gateway-client', () => ({
|
||||
// eslint-disable-next-line import-x/first
|
||||
import { resolveToken } from '../auth/resolveToken';
|
||||
// eslint-disable-next-line import-x/first
|
||||
import { removeStatus, spawnDaemon, stopDaemon, writeStatus } from '../daemon/manager';
|
||||
import { spawnDaemon, stopDaemon } from '../daemon/manager';
|
||||
// eslint-disable-next-line import-x/first
|
||||
import { loadSettings, saveSettings } from '../settings';
|
||||
// eslint-disable-next-line import-x/first
|
||||
@@ -130,36 +130,6 @@ describe('connect command', () => {
|
||||
return program;
|
||||
}
|
||||
|
||||
it('should persist deviceId in status for foreground connections', async () => {
|
||||
const program = createProgram();
|
||||
await program.parseAsync(['node', 'test', 'connect']);
|
||||
|
||||
expect(writeStatus).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ connectionStatus: 'connecting', deviceId: 'mock-device-id' }),
|
||||
);
|
||||
|
||||
clientEventHandlers.connected?.();
|
||||
|
||||
expect(writeStatus).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({ connectionStatus: 'connected', deviceId: 'mock-device-id' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should persist deviceId in status for daemon child connections', async () => {
|
||||
const program = createProgram();
|
||||
await program.parseAsync(['node', 'test', 'connect', '--daemon-child']);
|
||||
|
||||
expect(writeStatus).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ connectionStatus: 'connecting', deviceId: 'mock-device-id' }),
|
||||
);
|
||||
|
||||
clientEventHandlers.connected?.();
|
||||
|
||||
expect(writeStatus).toHaveBeenLastCalledWith(
|
||||
expect.objectContaining({ connectionStatus: 'connected', deviceId: 'mock-device-id' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should connect to gateway', async () => {
|
||||
const program = createProgram();
|
||||
await program.parseAsync(['node', 'test', 'connect']);
|
||||
@@ -318,7 +288,6 @@ describe('connect command', () => {
|
||||
}
|
||||
|
||||
expect(cleanupAllProcesses).toHaveBeenCalled();
|
||||
expect(removeStatus).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle auth_expired when refresh fails', async () => {
|
||||
|
||||
@@ -221,15 +221,16 @@ async function runConnect(options: ConnectOptions, isDaemonChild: boolean) {
|
||||
info(` Mode : ${isDaemonChild ? 'daemon' : 'foreground'}`);
|
||||
info('───────────────────');
|
||||
|
||||
// Update local connection status so other CLI commands can resolve the current device
|
||||
// Update status file for daemon mode
|
||||
const updateStatus = (connectionStatus: string) => {
|
||||
writeStatus({
|
||||
connectionStatus,
|
||||
deviceId: client.currentDeviceId,
|
||||
gatewayUrl: resolvedGatewayUrl,
|
||||
pid: process.pid,
|
||||
startedAt: startedAt.toISOString(),
|
||||
});
|
||||
if (isDaemonChild) {
|
||||
writeStatus({
|
||||
connectionStatus,
|
||||
gatewayUrl: resolvedGatewayUrl,
|
||||
pid: process.pid,
|
||||
startedAt: startedAt.toISOString(),
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const startedAt = new Date();
|
||||
@@ -332,8 +333,8 @@ async function runConnect(options: ConnectOptions, isDaemonChild: boolean) {
|
||||
info('Shutting down...');
|
||||
cleanupAllProcesses();
|
||||
client.disconnect();
|
||||
removeStatus();
|
||||
if (isDaemonChild) {
|
||||
removeStatus();
|
||||
removePid();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -61,6 +61,7 @@ describe('generate command', () => {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Oidc-Auth': 'test-token',
|
||||
'X-lobe-chat-auth': 'test-xor-token',
|
||||
},
|
||||
serverUrl: 'https://app.lobehub.com',
|
||||
});
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
import type { Command } from 'commander';
|
||||
|
||||
import { registerOpenClawMigration } from './openclaw';
|
||||
|
||||
export function registerMigrateCommand(program: Command) {
|
||||
const migrate = program
|
||||
.command('migrate')
|
||||
.description('Migrate data from external tools (OpenClaw, ChatGPT, Claude, etc.)');
|
||||
|
||||
registerOpenClawMigration(migrate);
|
||||
}
|
||||
@@ -1,588 +0,0 @@
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
|
||||
import { Command } from 'commander';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
// ── Mocks ──────────────────────────────────────────────
|
||||
|
||||
const { mockTrpcClient } = vi.hoisted(() => ({
|
||||
mockTrpcClient: {
|
||||
agent: {
|
||||
createAgent: { mutate: vi.fn() },
|
||||
getBuiltinAgent: { query: vi.fn() },
|
||||
},
|
||||
agentDocument: {
|
||||
upsertDocument: { mutate: vi.fn() },
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
const { getTrpcClient: mockGetTrpcClient } = vi.hoisted(() => ({
|
||||
getTrpcClient: vi.fn(),
|
||||
}));
|
||||
|
||||
const { mockConfirm } = vi.hoisted(() => ({
|
||||
mockConfirm: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock('../../api/client', () => ({
|
||||
getTrpcClient: mockGetTrpcClient,
|
||||
}));
|
||||
|
||||
vi.mock('../../settings', () => ({
|
||||
resolveServerUrl: () => 'https://app.lobehub.com',
|
||||
}));
|
||||
|
||||
vi.mock('../../utils/format', async (importOriginal) => {
|
||||
const actual = await importOriginal<Record<string, unknown>>();
|
||||
return { ...actual, confirm: mockConfirm };
|
||||
});
|
||||
|
||||
vi.mock('../../utils/logger', () => ({
|
||||
log: {
|
||||
debug: vi.fn(),
|
||||
error: vi.fn(),
|
||||
info: vi.fn(),
|
||||
warn: vi.fn(),
|
||||
},
|
||||
setVerbose: vi.fn(),
|
||||
}));
|
||||
|
||||
// eslint-disable-next-line import-x/first
|
||||
import { log } from '../../utils/logger';
|
||||
// eslint-disable-next-line import-x/first
|
||||
import { registerOpenClawMigration } from './openclaw';
|
||||
|
||||
// ── Helpers ────────────────────────────────────────────
|
||||
|
||||
let tmpDir: string;
|
||||
|
||||
function createProgram() {
|
||||
const program = new Command();
|
||||
program.exitOverride();
|
||||
const migrate = program.command('migrate');
|
||||
registerOpenClawMigration(migrate);
|
||||
return program;
|
||||
}
|
||||
|
||||
function writeFile(relativePath: string, content: string) {
|
||||
const fullPath = path.join(tmpDir, relativePath);
|
||||
fs.mkdirSync(path.dirname(fullPath), { recursive: true });
|
||||
fs.writeFileSync(fullPath, content);
|
||||
}
|
||||
|
||||
// ── Setup / teardown ───────────────────────────────────
|
||||
|
||||
let exitSpy: ReturnType<typeof vi.spyOn>;
|
||||
let consoleSpy: ReturnType<typeof vi.spyOn>;
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'openclaw-test-'));
|
||||
exitSpy = vi.spyOn(process, 'exit').mockImplementation((() => {
|
||||
throw new Error('process.exit');
|
||||
}) as any);
|
||||
consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
||||
mockGetTrpcClient.mockResolvedValue(mockTrpcClient);
|
||||
mockConfirm.mockResolvedValue(true);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
exitSpy.mockRestore();
|
||||
consoleSpy.mockRestore();
|
||||
fs.rmSync(tmpDir, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
// ── Tests ──────────────────────────────────────────────
|
||||
|
||||
describe('migrate openclaw', () => {
|
||||
// ── Profile parsing ────────────────────────────────
|
||||
|
||||
describe('agent profile from workspace', () => {
|
||||
it('should read name, description, and emoji from IDENTITY.md', async () => {
|
||||
writeFile(
|
||||
'IDENTITY.md',
|
||||
['# IDENTITY.md', '- **Name:** 龙虾', '- **Creature:** AI 助手', '- **Emoji:** 🦞'].join(
|
||||
'\n',
|
||||
),
|
||||
);
|
||||
writeFile('hello.md', 'hello');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).toHaveBeenCalledWith({
|
||||
config: {
|
||||
avatar: '🦞',
|
||||
description: 'AI 助手',
|
||||
title: '龙虾',
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('should filter out placeholder emoji like (待定)', async () => {
|
||||
writeFile(
|
||||
'IDENTITY.md',
|
||||
['# IDENTITY.md', '- **Name:** TestBot', '- **Emoji:**', ' _(待定)_'].join('\n'),
|
||||
);
|
||||
writeFile('hello.md', 'hello');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).toHaveBeenCalledWith({
|
||||
config: {
|
||||
avatar: undefined,
|
||||
description: undefined,
|
||||
title: 'TestBot',
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('should fall back to "OpenClaw" when no identity files exist', async () => {
|
||||
writeFile('doc.md', 'content');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).toHaveBeenCalledWith({
|
||||
config: {
|
||||
avatar: undefined,
|
||||
description: undefined,
|
||||
title: 'OpenClaw',
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// ── File filtering ─────────────────────────────────
|
||||
|
||||
describe('file collection and filtering', () => {
|
||||
it('should exclude common directories like node_modules and .git', async () => {
|
||||
writeFile('README.md', 'readme');
|
||||
writeFile('node_modules/pkg/index.js', 'module');
|
||||
writeFile('.git/config', 'git');
|
||||
writeFile('.idea/workspace.xml', 'ide');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledTimes(1);
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ filename: 'README.md' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should exclude files matching glob patterns like *.pyc and *.log', async () => {
|
||||
writeFile('main.py', 'print("hi")');
|
||||
writeFile('main.pyc', 'bytecode');
|
||||
writeFile('app.log', 'log data');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledTimes(1);
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ filename: 'main.py' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should respect workspace .gitignore', async () => {
|
||||
writeFile('.gitignore', 'secret.txt\ndata/\n');
|
||||
writeFile('README.md', 'readme');
|
||||
writeFile('secret.txt', 'password');
|
||||
writeFile('data/dump.sql', 'sql');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
const filenames = mockTrpcClient.agentDocument.upsertDocument.mutate.mock.calls.map(
|
||||
(c: any[]) => c[0].filename,
|
||||
);
|
||||
expect(filenames).toContain('README.md');
|
||||
expect(filenames).not.toContain('secret.txt');
|
||||
expect(filenames).not.toContain('data/dump.sql');
|
||||
});
|
||||
|
||||
it('should skip binary files during import', async () => {
|
||||
writeFile('readme.md', 'text content');
|
||||
// Write a file with null bytes (binary)
|
||||
const binPath = path.join(tmpDir, 'image.dat');
|
||||
fs.writeFileSync(binPath, Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x00, 0x00, 0x01]));
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
// Only the text file should be upserted
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledTimes(1);
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ filename: 'readme.md' }),
|
||||
);
|
||||
// Binary file should show as skipped in output
|
||||
const allOutput = consoleSpy.mock.calls.map((c: any[]) => c[0]).join('\n');
|
||||
expect(allOutput).toContain('skipped');
|
||||
});
|
||||
|
||||
it('should exclude database files by extension', async () => {
|
||||
writeFile('data.md', 'notes');
|
||||
writeFile('local.sqlite', 'fake-sqlite');
|
||||
writeFile('app.db', 'fake-db');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledTimes(1);
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ filename: 'data.md' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should collect files in subdirectories', async () => {
|
||||
writeFile('docs/guide.md', 'guide');
|
||||
writeFile('docs/api.md', 'api');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
const filenames = mockTrpcClient.agentDocument.upsertDocument.mutate.mock.calls
|
||||
.map((c: any[]) => c[0].filename)
|
||||
.sort();
|
||||
expect(filenames).toEqual(['docs/api.md', 'docs/guide.md']);
|
||||
});
|
||||
});
|
||||
|
||||
// ── Dry run ────────────────────────────────────────
|
||||
|
||||
describe('--dry-run', () => {
|
||||
it('should list files without calling API', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--dry-run',
|
||||
]);
|
||||
|
||||
expect(mockGetTrpcClient).not.toHaveBeenCalled();
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).not.toHaveBeenCalled();
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).not.toHaveBeenCalled();
|
||||
expect(log.info).toHaveBeenCalledWith(expect.stringContaining('Dry run'));
|
||||
});
|
||||
});
|
||||
|
||||
// ── Agent resolution ───────────────────────────────
|
||||
|
||||
describe('agent resolution', () => {
|
||||
it('should use --agent-id directly when provided', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--agent-id',
|
||||
'agt_existing',
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).not.toHaveBeenCalled();
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ agentId: 'agt_existing' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should resolve agent by --slug', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockTrpcClient.agent.getBuiltinAgent.query.mockResolvedValue({ id: 'agt_inbox' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--slug',
|
||||
'inbox',
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agent.getBuiltinAgent.query).toHaveBeenCalledWith({ slug: 'inbox' });
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ agentId: 'agt_inbox' }),
|
||||
);
|
||||
});
|
||||
|
||||
it('should create a new agent by default', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_new' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).toHaveBeenCalledTimes(1);
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ agentId: 'agt_new' }),
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// ── Confirmation ───────────────────────────────────
|
||||
|
||||
describe('confirmation', () => {
|
||||
it('should cancel when user declines', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockConfirm.mockResolvedValue(false);
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync(['node', 'test', 'migrate', 'openclaw', '--source', tmpDir]);
|
||||
|
||||
expect(mockTrpcClient.agent.createAgent.mutate).not.toHaveBeenCalled();
|
||||
expect(consoleSpy).toHaveBeenCalledWith('Cancelled.');
|
||||
});
|
||||
|
||||
it('should skip confirmation with --yes', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockConfirm).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
// ── Error handling ─────────────────────────────────
|
||||
|
||||
describe('error handling', () => {
|
||||
it('should exit when source path does not exist', async () => {
|
||||
const program = createProgram();
|
||||
await program
|
||||
.parseAsync(['node', 'test', 'migrate', 'openclaw', '--source', '/nonexistent/path'])
|
||||
.catch(() => {}); // process.exit throws
|
||||
|
||||
expect(exitSpy).toHaveBeenCalledWith(1);
|
||||
expect(log.error).toHaveBeenCalledWith(expect.stringContaining('not found'));
|
||||
});
|
||||
|
||||
it('should report failed files without aborting', async () => {
|
||||
writeFile('a.md', 'ok');
|
||||
writeFile('b.md', 'fail');
|
||||
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
// Files are iterated in readdir order; mock first success then failure
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate
|
||||
.mockResolvedValueOnce({})
|
||||
.mockRejectedValueOnce(new Error('upload error'));
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
expect(mockTrpcClient.agentDocument.upsertDocument.mutate).toHaveBeenCalledTimes(2);
|
||||
const allOutput = consoleSpy.mock.calls.map((c: any[]) => c[0]).join('\n');
|
||||
expect(allOutput).toContain('1 imported');
|
||||
expect(allOutput).toContain('1 failed');
|
||||
});
|
||||
|
||||
it('should show no files message for empty workspace', async () => {
|
||||
// Only excluded items
|
||||
writeFile('.git/config', 'git');
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--dry-run',
|
||||
]);
|
||||
|
||||
expect(log.info).toHaveBeenCalledWith('No files found in workspace.');
|
||||
});
|
||||
});
|
||||
|
||||
// ── Output ─────────────────────────────────────────
|
||||
|
||||
describe('output', () => {
|
||||
it('should print agent URL on completion', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_abc123' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
const allOutput = consoleSpy.mock.calls.map((c: any[]) => c[0]).join('\n');
|
||||
expect(allOutput).toContain('https://app.lobehub.com/agent/agt_abc123');
|
||||
});
|
||||
|
||||
it('should show friendly completion message on success', async () => {
|
||||
writeFile('file.md', 'content');
|
||||
mockTrpcClient.agent.createAgent.mutate.mockResolvedValue({ agentId: 'agt_test' });
|
||||
mockTrpcClient.agentDocument.upsertDocument.mutate.mockResolvedValue({});
|
||||
|
||||
const program = createProgram();
|
||||
await program.parseAsync([
|
||||
'node',
|
||||
'test',
|
||||
'migrate',
|
||||
'openclaw',
|
||||
'--source',
|
||||
tmpDir,
|
||||
'--yes',
|
||||
]);
|
||||
|
||||
const allOutput = consoleSpy.mock.calls.map((c: any[]) => c[0]).join('\n');
|
||||
expect(allOutput).toContain('Migration complete');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1,466 +0,0 @@
|
||||
import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
|
||||
import type { Command } from 'commander';
|
||||
import ignore from 'ignore';
|
||||
import pc from 'picocolors';
|
||||
|
||||
import type { TrpcClient } from '../../api/client';
|
||||
import { getTrpcClient } from '../../api/client';
|
||||
import { resolveServerUrl } from '../../settings';
|
||||
import { confirm } from '../../utils/format';
|
||||
import { log } from '../../utils/logger';
|
||||
|
||||
const DEFAULT_AGENT_NAME = 'OpenClaw';
|
||||
|
||||
// Files to look for agent identity (tried in order)
|
||||
const IDENTITY_FILES = ['IDENTITY.md', 'SOUL.md'];
|
||||
|
||||
// Default ignore rules (gitignore syntax) applied when no .gitignore is found
|
||||
const DEFAULT_IGNORE_RULES = [
|
||||
// VCS
|
||||
'.git',
|
||||
'.svn',
|
||||
'.hg',
|
||||
|
||||
// OpenClaw internal
|
||||
'.openclaw',
|
||||
|
||||
// OS artifacts
|
||||
'.DS_Store',
|
||||
'Thumbs.db',
|
||||
'desktop.ini',
|
||||
|
||||
// IDE / editor
|
||||
'.idea',
|
||||
'.vscode',
|
||||
'.fleet',
|
||||
'.cursor',
|
||||
'.zed',
|
||||
'*.swp',
|
||||
'*.swo',
|
||||
'*~',
|
||||
|
||||
// Dependencies
|
||||
'node_modules',
|
||||
'.pnp',
|
||||
'.yarn',
|
||||
'bower_components',
|
||||
'vendor',
|
||||
'jspm_packages',
|
||||
|
||||
// Python
|
||||
'.venv',
|
||||
'venv',
|
||||
'env',
|
||||
'__pycache__',
|
||||
'*.pyc',
|
||||
'*.pyo',
|
||||
'.mypy_cache',
|
||||
'.ruff_cache',
|
||||
'.pytest_cache',
|
||||
'.tox',
|
||||
'.eggs',
|
||||
'*.egg-info',
|
||||
|
||||
// Ruby
|
||||
'.bundle',
|
||||
|
||||
// Rust
|
||||
'target',
|
||||
|
||||
// Go
|
||||
'go.sum',
|
||||
|
||||
// Java / JVM
|
||||
'.gradle',
|
||||
'.m2',
|
||||
|
||||
// .NET
|
||||
'bin',
|
||||
'obj',
|
||||
'packages',
|
||||
|
||||
// Build / cache / output
|
||||
'.cache',
|
||||
'.parcel-cache',
|
||||
'.next',
|
||||
'.nuxt',
|
||||
'.turbo',
|
||||
'.output',
|
||||
'dist',
|
||||
'build',
|
||||
'out',
|
||||
'.sass-cache',
|
||||
|
||||
// Env / secrets
|
||||
'.env',
|
||||
'.env.*',
|
||||
|
||||
// Test / coverage
|
||||
'coverage',
|
||||
'.nyc_output',
|
||||
|
||||
// Infra
|
||||
'.terraform',
|
||||
|
||||
// Temp
|
||||
'tmp',
|
||||
'.tmp',
|
||||
|
||||
// Logs
|
||||
'*.log',
|
||||
'logs',
|
||||
|
||||
// Databases
|
||||
'*.sqlite',
|
||||
'*.sqlite3',
|
||||
'*.db',
|
||||
'*.db-shm',
|
||||
'*.db-wal',
|
||||
'*.ldb',
|
||||
'*.mdb',
|
||||
'*.accdb',
|
||||
|
||||
// Archives / binaries
|
||||
'*.zip',
|
||||
'*.tar',
|
||||
'*.tar.gz',
|
||||
'*.tgz',
|
||||
'*.gz',
|
||||
'*.bz2',
|
||||
'*.xz',
|
||||
'*.rar',
|
||||
'*.7z',
|
||||
'*.jar',
|
||||
'*.war',
|
||||
'*.dll',
|
||||
'*.so',
|
||||
'*.dylib',
|
||||
'*.exe',
|
||||
'*.bin',
|
||||
'*.o',
|
||||
'*.a',
|
||||
'*.lib',
|
||||
'*.class',
|
||||
|
||||
// Images / media / fonts
|
||||
'*.png',
|
||||
'*.jpg',
|
||||
'*.jpeg',
|
||||
'*.gif',
|
||||
'*.bmp',
|
||||
'*.ico',
|
||||
'*.webp',
|
||||
'*.svg',
|
||||
'*.mp3',
|
||||
'*.mp4',
|
||||
'*.wav',
|
||||
'*.avi',
|
||||
'*.mov',
|
||||
'*.mkv',
|
||||
'*.flac',
|
||||
'*.ogg',
|
||||
'*.pdf',
|
||||
'*.woff',
|
||||
'*.woff2',
|
||||
'*.ttf',
|
||||
'*.otf',
|
||||
'*.eot',
|
||||
|
||||
// Lock files
|
||||
'package-lock.json',
|
||||
'yarn.lock',
|
||||
'pnpm-lock.yaml',
|
||||
'Gemfile.lock',
|
||||
'Cargo.lock',
|
||||
'poetry.lock',
|
||||
'composer.lock',
|
||||
];
|
||||
|
||||
interface AgentProfile {
|
||||
avatar?: string;
|
||||
description?: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to extract the agent name, description, and avatar emoji from
|
||||
* IDENTITY.md or SOUL.md. Falls back to "OpenClaw" if neither file
|
||||
* exists or parsing fails.
|
||||
*/
|
||||
function readAgentProfile(workspacePath: string): AgentProfile {
|
||||
for (const filename of IDENTITY_FILES) {
|
||||
const filePath = path.join(workspacePath, filename);
|
||||
if (!fs.existsSync(filePath)) continue;
|
||||
|
||||
const content = fs.readFileSync(filePath, 'utf8');
|
||||
|
||||
// Try to extract **Name:** value
|
||||
const nameMatch = content.match(/\*{0,2}Name:?\*{0,2}\s*(.+)/i);
|
||||
const title = nameMatch ? nameMatch[1].trim() : DEFAULT_AGENT_NAME;
|
||||
|
||||
// Try to extract **Creature:** or **Vibe:** or **Description:** as description
|
||||
const descMatch = content.match(/\*{0,2}(?:Creature|Vibe|Description):?\*{0,2}\s*(.+)/i);
|
||||
const description = descMatch ? descMatch[1].trim() : undefined;
|
||||
|
||||
// Try to extract **Emoji:** value (single emoji)
|
||||
const emojiMatch = content.match(/\*{0,2}Emoji:?\*{0,2}\s*(.+)/i);
|
||||
const rawAvatar = emojiMatch ? emojiMatch[1].trim() : undefined;
|
||||
// Filter out placeholder text like (待定), _(待定)_, (TBD), N/A, etc.
|
||||
const isPlaceholder =
|
||||
rawAvatar && /^[_*((].*[))_*]$|^(?:tbd|todo|n\/?a|none|待定|未定)$/i.test(rawAvatar);
|
||||
const avatar = rawAvatar && !isPlaceholder ? rawAvatar : undefined;
|
||||
|
||||
return { avatar, description, title };
|
||||
}
|
||||
|
||||
return { title: DEFAULT_AGENT_NAME };
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an ignore filter for the workspace. Uses .gitignore if present,
|
||||
* otherwise falls back to a comprehensive default rule set.
|
||||
*/
|
||||
function buildIgnoreFilter(workspacePath: string) {
|
||||
const ig = ignore();
|
||||
|
||||
const gitignorePath = path.join(workspacePath, '.gitignore');
|
||||
if (fs.existsSync(gitignorePath)) {
|
||||
ig.add(fs.readFileSync(gitignorePath, 'utf8'));
|
||||
}
|
||||
|
||||
// Always apply default rules on top
|
||||
ig.add(DEFAULT_IGNORE_RULES);
|
||||
|
||||
return ig;
|
||||
}
|
||||
|
||||
/**
|
||||
* Recursively collect all files under `dir`, filtered by ignore rules.
|
||||
* Returns paths relative to `baseDir`.
|
||||
*/
|
||||
function collectFiles(dir: string, baseDir: string, ig: ReturnType<typeof ignore>): string[] {
|
||||
const results: string[] = [];
|
||||
|
||||
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
||||
const relativePath = path.relative(baseDir, path.join(dir, entry.name));
|
||||
|
||||
// Directories need a trailing slash for ignore to match correctly
|
||||
const testPath = entry.isDirectory() ? `${relativePath}/` : relativePath;
|
||||
if (ig.ignores(testPath)) continue;
|
||||
|
||||
const fullPath = path.join(dir, entry.name);
|
||||
|
||||
if (entry.isDirectory()) {
|
||||
results.push(...collectFiles(fullPath, baseDir, ig));
|
||||
} else if (entry.isFile()) {
|
||||
results.push(relativePath);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Quick check: read the first 8KB and look for null bytes.
|
||||
* If found, the file is likely binary and should be skipped.
|
||||
*/
|
||||
function isBinaryFile(filePath: string): boolean {
|
||||
const fd = fs.openSync(filePath, 'r');
|
||||
try {
|
||||
const buf = Buffer.alloc(8192);
|
||||
const bytesRead = fs.readSync(fd, buf, 0, 8192, 0);
|
||||
for (let i = 0; i < bytesRead; i++) {
|
||||
if (buf[i] === 0) return true;
|
||||
}
|
||||
return false;
|
||||
} finally {
|
||||
fs.closeSync(fd);
|
||||
}
|
||||
}
|
||||
|
||||
function formatAgentLabel(profile: AgentProfile): string {
|
||||
return profile.avatar ? `${profile.avatar} ${profile.title}` : profile.title;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the target agent ID.
|
||||
* Priority: --agent-id > --slug > create new agent from workspace profile.
|
||||
*/
|
||||
async function resolveAgentId(
|
||||
client: TrpcClient,
|
||||
opts: { agentId?: string; slug?: string },
|
||||
profile: AgentProfile,
|
||||
): Promise<string> {
|
||||
if (opts.agentId) return opts.agentId;
|
||||
|
||||
if (opts.slug) {
|
||||
const agent = await client.agent.getBuiltinAgent.query({ slug: opts.slug });
|
||||
if (!agent) {
|
||||
log.error(`Agent not found for slug: ${opts.slug}`);
|
||||
process.exit(1);
|
||||
}
|
||||
return agent.id;
|
||||
}
|
||||
|
||||
const label = formatAgentLabel(profile);
|
||||
log.info(`Creating new agent ${pc.bold(label)}...`);
|
||||
const result = await client.agent.createAgent.mutate({
|
||||
config: {
|
||||
avatar: profile.avatar,
|
||||
description: profile.description,
|
||||
title: profile.title,
|
||||
},
|
||||
});
|
||||
|
||||
const id = result.agentId;
|
||||
if (!id) {
|
||||
log.error('Failed to create agent — no agentId returned.');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(`${pc.green('✓')} Agent created: ${pc.bold(label)}`);
|
||||
return id;
|
||||
}
|
||||
|
||||
export function registerOpenClawMigration(migrate: Command) {
|
||||
migrate
|
||||
.command('openclaw')
|
||||
.description('Import OpenClaw workspace files as agent documents')
|
||||
.option(
|
||||
'--source <path>',
|
||||
'Path to OpenClaw workspace',
|
||||
path.join(os.homedir(), '.openclaw', 'workspace'),
|
||||
)
|
||||
.option('--agent-id <id>', 'Import into an existing agent by ID')
|
||||
.option('--slug <slug>', 'Import into an existing agent by slug (e.g. "inbox")')
|
||||
.option('--dry-run', 'Preview files without importing')
|
||||
.option('--yes', 'Skip confirmation prompt')
|
||||
.action(
|
||||
async (options: {
|
||||
agentId?: string;
|
||||
dryRun?: boolean;
|
||||
slug?: string;
|
||||
source: string;
|
||||
yes?: boolean;
|
||||
}) => {
|
||||
// Check auth early so users don't scan files only to find out they're not logged in
|
||||
if (!options.dryRun) {
|
||||
await getTrpcClient();
|
||||
}
|
||||
|
||||
const workspacePath = path.resolve(options.source);
|
||||
|
||||
// Validate source directory
|
||||
if (!fs.existsSync(workspacePath)) {
|
||||
log.error(`OpenClaw workspace not found: ${workspacePath}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!fs.statSync(workspacePath).isDirectory()) {
|
||||
log.error(`Not a directory: ${workspacePath}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Read agent profile from workspace identity files
|
||||
const profile = readAgentProfile(workspacePath);
|
||||
const label = formatAgentLabel(profile);
|
||||
|
||||
// Collect files (respects .gitignore + default rules)
|
||||
const ig = buildIgnoreFilter(workspacePath);
|
||||
const files = collectFiles(workspacePath, workspacePath, ig);
|
||||
|
||||
if (files.length === 0) {
|
||||
log.info('No files found in workspace.');
|
||||
return;
|
||||
}
|
||||
|
||||
console.log(
|
||||
`Found ${pc.bold(String(files.length))} file(s) in ${pc.dim(workspacePath)}:\n`,
|
||||
);
|
||||
for (const f of files) {
|
||||
console.log(` ${pc.dim('•')} ${f}`);
|
||||
}
|
||||
console.log();
|
||||
|
||||
if (options.dryRun) {
|
||||
log.info('Dry run — no changes made.');
|
||||
return;
|
||||
}
|
||||
|
||||
// Confirm
|
||||
if (!options.yes) {
|
||||
const target = options.agentId
|
||||
? `agent ${pc.bold(options.agentId)}`
|
||||
: options.slug
|
||||
? `agent slug "${pc.bold(options.slug)}"`
|
||||
: `a new ${pc.bold(label)} agent`;
|
||||
const confirmed = await confirm(
|
||||
`Import ${files.length} file(s) as agent documents into ${target}?`,
|
||||
);
|
||||
if (!confirmed) {
|
||||
console.log('Cancelled.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const client = await getTrpcClient();
|
||||
|
||||
// Create or reuse agent
|
||||
const agentId = await resolveAgentId(client, options, profile);
|
||||
|
||||
console.log(`\nImporting to ${pc.bold(label)}...\n`);
|
||||
|
||||
let success = 0;
|
||||
let failed = 0;
|
||||
|
||||
let skipped = 0;
|
||||
|
||||
for (const relativePath of files) {
|
||||
const fullPath = path.join(workspacePath, relativePath);
|
||||
|
||||
try {
|
||||
// Skip binary files that slipped through the extension filter
|
||||
if (isBinaryFile(fullPath)) {
|
||||
console.log(` ${pc.dim('○')} ${relativePath} ${pc.dim('(binary, skipped)')}`);
|
||||
skipped++;
|
||||
continue;
|
||||
}
|
||||
|
||||
const content = fs.readFileSync(fullPath, 'utf8');
|
||||
const stat = fs.statSync(fullPath);
|
||||
|
||||
await client.agentDocument.upsertDocument.mutate({
|
||||
agentId,
|
||||
content,
|
||||
createdAt: stat.birthtime,
|
||||
filename: relativePath,
|
||||
updatedAt: stat.mtime,
|
||||
});
|
||||
console.log(` ${pc.green('✓')} ${relativePath}`);
|
||||
success++;
|
||||
} catch (err: any) {
|
||||
console.log(` ${pc.red('✗')} ${relativePath} — ${err.message || err}`);
|
||||
failed++;
|
||||
}
|
||||
}
|
||||
|
||||
const agentUrl = `${resolveServerUrl()}/agent/${agentId}`;
|
||||
const skippedInfo = skipped > 0 ? `, ${skipped} skipped` : '';
|
||||
console.log();
|
||||
if (failed === 0) {
|
||||
console.log(
|
||||
`${pc.green('✓')} Migration complete! ${pc.bold(String(success))} file(s) imported to ${pc.bold(label)}.${skippedInfo}`,
|
||||
);
|
||||
} else {
|
||||
console.log(
|
||||
`${pc.yellow('⚠')} Migration finished with issues: ${pc.bold(String(success))} imported, ${pc.red(String(failed))} failed${skippedInfo}.`,
|
||||
);
|
||||
}
|
||||
console.log(`\n ${pc.dim('→')} ${pc.underline(agentUrl)}`);
|
||||
console.log();
|
||||
},
|
||||
);
|
||||
}
|
||||
@@ -2,12 +2,10 @@ import type { Command } from 'commander';
|
||||
import pc from 'picocolors';
|
||||
|
||||
import { getTrpcClient } from '../../api/client';
|
||||
import type { KanbanColumn } from '../../utils/format';
|
||||
import {
|
||||
confirm,
|
||||
displayWidth,
|
||||
outputJson,
|
||||
printKanban,
|
||||
printTable,
|
||||
timeAgo,
|
||||
truncate,
|
||||
@@ -39,12 +37,10 @@ export function registerTaskCommand(program: Command) {
|
||||
.option('-L, --limit <n>', 'Page size', '50')
|
||||
.option('--offset <n>', 'Offset', '0')
|
||||
.option('--tree', 'Display as tree structure')
|
||||
.option('--board', 'Display as kanban board grouped by status')
|
||||
.option('--json [fields]', 'Output JSON')
|
||||
.action(
|
||||
async (options: {
|
||||
agent?: string;
|
||||
board?: boolean;
|
||||
json?: string | boolean;
|
||||
limit?: string;
|
||||
offset?: string;
|
||||
@@ -63,8 +59,8 @@ export function registerTaskCommand(program: Command) {
|
||||
if (options.limit) input.limit = Number.parseInt(options.limit, 10);
|
||||
if (options.offset) input.offset = Number.parseInt(options.offset, 10);
|
||||
|
||||
// For tree/board mode, fetch all tasks (no pagination limit)
|
||||
if (options.tree || options.board) {
|
||||
// For tree mode, fetch all tasks (no pagination limit)
|
||||
if (options.tree) {
|
||||
input.limit = 100;
|
||||
delete input.offset;
|
||||
}
|
||||
@@ -81,58 +77,6 @@ export function registerTaskCommand(program: Command) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (options.board) {
|
||||
// Kanban board grouped by status
|
||||
const statusOrder = [
|
||||
'backlog',
|
||||
'blocked',
|
||||
'running',
|
||||
'paused',
|
||||
'completed',
|
||||
'failed',
|
||||
'timeout',
|
||||
'canceled',
|
||||
];
|
||||
|
||||
const statusColors: Record<string, (s: string) => string> = {
|
||||
backlog: pc.dim,
|
||||
blocked: pc.red,
|
||||
canceled: pc.dim,
|
||||
completed: pc.green,
|
||||
failed: pc.red,
|
||||
paused: pc.yellow,
|
||||
running: pc.blue,
|
||||
timeout: pc.red,
|
||||
};
|
||||
|
||||
// Group tasks by status
|
||||
const grouped = new Map<string, any[]>();
|
||||
for (const t of result.data) {
|
||||
const status = t.status || 'backlog';
|
||||
const list = grouped.get(status) || [];
|
||||
list.push(t);
|
||||
grouped.set(status, list);
|
||||
}
|
||||
|
||||
const kanbanColumns: KanbanColumn[] = statusOrder
|
||||
.filter((s) => grouped.has(s))
|
||||
.map((status) => ({
|
||||
color: statusColors[status],
|
||||
items: grouped.get(status)!.map((t: any) => ({
|
||||
badge: pc.dim(t.identifier),
|
||||
meta: t.assigneeAgentId ? `agent: ${t.assigneeAgentId}` : undefined,
|
||||
title: t.name || t.instruction,
|
||||
})),
|
||||
title: status.toUpperCase(),
|
||||
}));
|
||||
|
||||
console.log();
|
||||
printKanban(kanbanColumns);
|
||||
console.log();
|
||||
log.info(`Total: ${result.total}`);
|
||||
return;
|
||||
}
|
||||
|
||||
if (options.tree) {
|
||||
// Build tree display
|
||||
const taskMap = new Map<string, any>();
|
||||
@@ -296,34 +240,23 @@ export function registerTaskCommand(program: Command) {
|
||||
}
|
||||
if (t.error) console.log(`${pc.red('Error:')} ${t.error}`);
|
||||
|
||||
// ── Subtasks (nested tree) ──
|
||||
// ── Subtasks ──
|
||||
if (t.subtasks && t.subtasks.length > 0) {
|
||||
// Build lookup: which subtasks are completed (flatten tree)
|
||||
const collectCompleted = (nodes: typeof t.subtasks, set: Set<string>): Set<string> => {
|
||||
for (const s of nodes!) {
|
||||
if (s.status === 'completed') set.add(s.identifier);
|
||||
if (s.children) collectCompleted(s.children, set);
|
||||
}
|
||||
return set;
|
||||
};
|
||||
const completedIdentifiers = collectCompleted(t.subtasks, new Set());
|
||||
|
||||
const renderSubtasks = (nodes: typeof t.subtasks, indent: string) => {
|
||||
for (const s of nodes!) {
|
||||
const depInfo = s.blockedBy ? pc.dim(` ← blocks: ${s.blockedBy}`) : '';
|
||||
const isBlocked = s.blockedBy && !completedIdentifiers.has(s.blockedBy);
|
||||
const displayStatus = s.status === 'backlog' && isBlocked ? 'blocked' : s.status;
|
||||
console.log(
|
||||
`${indent}${pc.dim(s.identifier)} ${statusBadge(displayStatus)} ${s.name || '(unnamed)'}${depInfo}`,
|
||||
);
|
||||
if (s.children && s.children.length > 0) {
|
||||
renderSubtasks(s.children, indent + ' ');
|
||||
}
|
||||
}
|
||||
};
|
||||
// Build lookup: which subtasks are completed
|
||||
const completedIdentifiers = new Set(
|
||||
t.subtasks.filter((s) => s.status === 'completed').map((s) => s.identifier),
|
||||
);
|
||||
|
||||
console.log(`\n${pc.bold('Subtasks:')}`);
|
||||
renderSubtasks(t.subtasks, ' ');
|
||||
for (const s of t.subtasks) {
|
||||
const depInfo = s.blockedBy ? pc.dim(` ← blocks: ${s.blockedBy}`) : '';
|
||||
// Show 'blocked' instead of 'backlog' if task has unresolved dependencies
|
||||
const isBlocked = s.blockedBy && !completedIdentifiers.has(s.blockedBy);
|
||||
const displayStatus = s.status === 'backlog' && isBlocked ? 'blocked' : s.status;
|
||||
console.log(
|
||||
` ${pc.dim(s.identifier)} ${statusBadge(displayStatus)} ${s.name || '(unnamed)'}${depInfo}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Dependencies ──
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
export const OFFICIAL_AGENT_GATEWAY_URL = 'https://agent-gateway.lobehub.com';
|
||||
export const OFFICIAL_SERVER_URL = 'https://app.lobehub.com';
|
||||
export const OFFICIAL_GATEWAY_URL = 'https://device-gateway.lobehub.com';
|
||||
|
||||
@@ -23,7 +23,6 @@ function getLogFilePath() {
|
||||
|
||||
export interface DaemonStatus {
|
||||
connectionStatus: string;
|
||||
deviceId?: string;
|
||||
gatewayUrl: string;
|
||||
pid: number;
|
||||
startedAt: string;
|
||||
|
||||
@@ -20,7 +20,6 @@ import { registerLogoutCommand } from './commands/logout';
|
||||
import { registerManCommand } from './commands/man';
|
||||
import { registerMemoryCommand } from './commands/memory';
|
||||
import { registerMessageCommand } from './commands/message';
|
||||
import { registerMigrateCommand } from './commands/migrate';
|
||||
import { registerModelCommand } from './commands/model';
|
||||
import { registerPluginCommand } from './commands/plugin';
|
||||
import { registerProviderCommand } from './commands/provider';
|
||||
@@ -28,7 +27,6 @@ import { registerSearchCommand } from './commands/search';
|
||||
import { registerSessionGroupCommand } from './commands/session-group';
|
||||
import { registerSkillCommand } from './commands/skill';
|
||||
import { registerStatusCommand } from './commands/status';
|
||||
import { registerTaskCommand } from './commands/task';
|
||||
import { registerThreadCommand } from './commands/thread';
|
||||
import { registerTopicCommand } from './commands/topic';
|
||||
import { registerUserCommand } from './commands/user';
|
||||
@@ -63,7 +61,6 @@ export function createProgram() {
|
||||
registerFileCommand(program);
|
||||
registerSkillCommand(program);
|
||||
registerSessionGroupCommand(program);
|
||||
registerTaskCommand(program);
|
||||
registerThreadCommand(program);
|
||||
registerTopicCommand(program);
|
||||
registerMessageCommand(program);
|
||||
@@ -73,7 +70,6 @@ export function createProgram() {
|
||||
registerUserCommand(program);
|
||||
registerConfigCommand(program);
|
||||
registerEvalCommand(program);
|
||||
registerMigrateCommand(program);
|
||||
|
||||
return program;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,10 @@ import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
|
||||
import { OFFICIAL_AGENT_GATEWAY_URL, OFFICIAL_SERVER_URL } from '../constants/urls';
|
||||
import { OFFICIAL_SERVER_URL } from '../constants/urls';
|
||||
import { log } from '../utils/logger';
|
||||
|
||||
export interface StoredSettings {
|
||||
agentGatewayUrl?: string;
|
||||
gatewayUrl?: string;
|
||||
serverUrl?: string;
|
||||
}
|
||||
@@ -26,24 +25,15 @@ export function resolveServerUrl(): string {
|
||||
return envServerUrl || settingsServerUrl || OFFICIAL_SERVER_URL;
|
||||
}
|
||||
|
||||
export function resolveAgentGatewayUrl(): string | undefined {
|
||||
const envUrl = normalizeUrl(process.env.AGENT_GATEWAY_URL);
|
||||
const settingsUrl = normalizeUrl(loadSettings()?.agentGatewayUrl);
|
||||
|
||||
return envUrl || settingsUrl || OFFICIAL_AGENT_GATEWAY_URL;
|
||||
}
|
||||
|
||||
export function saveSettings(settings: StoredSettings): void {
|
||||
const agentGatewayUrl = normalizeUrl(settings.agentGatewayUrl);
|
||||
const gatewayUrl = normalizeUrl(settings.gatewayUrl);
|
||||
const serverUrl = normalizeUrl(settings.serverUrl);
|
||||
const gatewayUrl = normalizeUrl(settings.gatewayUrl);
|
||||
const normalized: StoredSettings = {
|
||||
agentGatewayUrl: agentGatewayUrl === OFFICIAL_AGENT_GATEWAY_URL ? undefined : agentGatewayUrl,
|
||||
gatewayUrl,
|
||||
serverUrl: serverUrl === OFFICIAL_SERVER_URL ? undefined : serverUrl,
|
||||
};
|
||||
|
||||
if (!normalized.serverUrl && !normalized.gatewayUrl && !normalized.agentGatewayUrl) {
|
||||
if (!normalized.serverUrl && !normalized.gatewayUrl) {
|
||||
try {
|
||||
fs.unlinkSync(SETTINGS_FILE);
|
||||
} catch {}
|
||||
@@ -60,16 +50,14 @@ export function loadSettings(): StoredSettings | null {
|
||||
try {
|
||||
const data = fs.readFileSync(SETTINGS_FILE, 'utf8');
|
||||
const parsed = JSON.parse(data) as StoredSettings;
|
||||
const agentGatewayUrl = normalizeUrl(parsed.agentGatewayUrl);
|
||||
const gatewayUrl = normalizeUrl(parsed.gatewayUrl);
|
||||
const serverUrl = normalizeUrl(parsed.serverUrl);
|
||||
const normalized: StoredSettings = {
|
||||
agentGatewayUrl: agentGatewayUrl === OFFICIAL_AGENT_GATEWAY_URL ? undefined : agentGatewayUrl,
|
||||
gatewayUrl,
|
||||
serverUrl: serverUrl === OFFICIAL_SERVER_URL ? undefined : serverUrl,
|
||||
};
|
||||
|
||||
if (!normalized.serverUrl && !normalized.gatewayUrl && !normalized.agentGatewayUrl) return null;
|
||||
if (!normalized.serverUrl && !normalized.gatewayUrl) return null;
|
||||
|
||||
return normalized;
|
||||
} catch {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { streamAgentEvents, streamAgentEventsViaWebSocket } from './agentStream';
|
||||
import { streamAgentEvents } from './agentStream';
|
||||
|
||||
vi.mock('./logger', () => ({
|
||||
log: {
|
||||
debug: vi.fn(),
|
||||
error: vi.fn(),
|
||||
heartbeat: vi.fn(),
|
||||
info: vi.fn(),
|
||||
@@ -194,391 +193,3 @@ describe('streamAgentEvents', () => {
|
||||
exitSpy.mockRestore();
|
||||
});
|
||||
});
|
||||
|
||||
// ── WebSocket stream tests ──────────────────────────────
|
||||
|
||||
let capturedWs: MockWebSocket | undefined;
|
||||
|
||||
class MockWebSocket {
|
||||
static OPEN = 1;
|
||||
static CONNECTING = 0;
|
||||
static CLOSED = 3;
|
||||
|
||||
readyState = MockWebSocket.CONNECTING;
|
||||
onopen: ((ev: any) => void) | null = null;
|
||||
onmessage: ((ev: any) => void) | null = null;
|
||||
onerror: ((ev: any) => void) | null = null;
|
||||
onclose: ((ev: any) => void) | null = null;
|
||||
|
||||
sent: string[] = [];
|
||||
private autoAuthSuccess = true;
|
||||
|
||||
constructor(
|
||||
public url: string,
|
||||
autoAuth = true,
|
||||
) {
|
||||
this.autoAuthSuccess = autoAuth;
|
||||
capturedWs = this; // eslint-disable-line @typescript-eslint/no-this-alias
|
||||
// Trigger onopen on next microtask (after handlers are assigned)
|
||||
queueMicrotask(() => {
|
||||
this.readyState = MockWebSocket.OPEN;
|
||||
this.onopen?.({ type: 'open' });
|
||||
});
|
||||
}
|
||||
|
||||
send(data: string) {
|
||||
this.sent.push(data);
|
||||
const msg = JSON.parse(data);
|
||||
|
||||
if (msg.type === 'auth' && this.autoAuthSuccess) {
|
||||
queueMicrotask(() => {
|
||||
this.onmessage?.({ data: JSON.stringify({ type: 'auth_success' }) });
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
close() {
|
||||
this.readyState = MockWebSocket.CLOSED;
|
||||
// Async like real WebSocket — fires after current microtask
|
||||
queueMicrotask(() => this.onclose?.({ code: 1000, reason: '' }));
|
||||
}
|
||||
|
||||
simulateMessage(msg: Record<string, unknown>) {
|
||||
this.onmessage?.({ data: JSON.stringify(msg) });
|
||||
}
|
||||
}
|
||||
|
||||
describe('streamAgentEventsViaWebSocket', () => {
|
||||
let stdoutSpy: ReturnType<typeof vi.spyOn>;
|
||||
let consoleSpy: ReturnType<typeof vi.spyOn>;
|
||||
const originalWebSocket = globalThis.WebSocket;
|
||||
|
||||
beforeEach(() => {
|
||||
capturedWs = undefined;
|
||||
stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation(() => true);
|
||||
consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
||||
(globalThis as any).WebSocket = MockWebSocket;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
stdoutSpy.mockRestore();
|
||||
consoleSpy.mockRestore();
|
||||
globalThis.WebSocket = originalWebSocket;
|
||||
});
|
||||
|
||||
/** Wait for microtasks + short delay so WS open/auth cycle completes */
|
||||
const flush = () => new Promise((r) => setTimeout(r, 20));
|
||||
|
||||
it('should connect, authenticate, and send resume', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
operationId: 'op-1',
|
||||
token: 'test-token',
|
||||
});
|
||||
|
||||
await flush();
|
||||
|
||||
const ws = capturedWs!;
|
||||
expect(ws.sent.map((s) => JSON.parse(s))).toEqual([
|
||||
{ token: 'test-token', type: 'auth' },
|
||||
{ lastEventId: '', type: 'resume' },
|
||||
]);
|
||||
|
||||
ws.simulateMessage({ id: '1', type: 'session_complete' });
|
||||
await promise;
|
||||
});
|
||||
|
||||
it('should render agent_event messages using existing renderEvent', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
operationId: 'op-1',
|
||||
token: 'test-token',
|
||||
});
|
||||
|
||||
await flush();
|
||||
const ws = capturedWs!;
|
||||
|
||||
ws.simulateMessage({
|
||||
event: { data: null, operationId: 'op-1', stepIndex: 0, timestamp: 1, type: 'step_start' },
|
||||
id: '1',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { chunkType: 'text', content: 'Hello WS!' },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 2,
|
||||
type: 'stream_chunk',
|
||||
},
|
||||
id: '2',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { stepCount: 1 },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 3,
|
||||
type: 'agent_runtime_end',
|
||||
},
|
||||
id: '3',
|
||||
type: 'agent_event',
|
||||
});
|
||||
|
||||
await promise;
|
||||
expect(stdoutSpy).toHaveBeenCalledWith('Hello WS!');
|
||||
});
|
||||
|
||||
it('should output JSON when json option is set', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
json: true,
|
||||
operationId: 'op-1',
|
||||
token: 'test-token',
|
||||
});
|
||||
|
||||
await flush();
|
||||
const ws = capturedWs!;
|
||||
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: null,
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 1,
|
||||
type: 'agent_runtime_init',
|
||||
},
|
||||
id: '1',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { stepCount: 1 },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 2,
|
||||
type: 'agent_runtime_end',
|
||||
},
|
||||
id: '2',
|
||||
type: 'agent_event',
|
||||
});
|
||||
|
||||
await promise;
|
||||
|
||||
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('"agent_runtime_init"'));
|
||||
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('"agent_runtime_end"'));
|
||||
});
|
||||
|
||||
it('should reject on auth failure', async () => {
|
||||
// Override mock to return auth_failed instead of auth_success
|
||||
(globalThis as any).WebSocket = class extends MockWebSocket {
|
||||
constructor(url: string) {
|
||||
super(url, false); // disable auto auth_success
|
||||
capturedWs = this; // eslint-disable-line @typescript-eslint/no-this-alias
|
||||
}
|
||||
|
||||
override send(data: string) {
|
||||
this.sent.push(data);
|
||||
const msg = JSON.parse(data);
|
||||
if (msg.type === 'auth') {
|
||||
queueMicrotask(() => {
|
||||
this.onmessage?.({
|
||||
data: JSON.stringify({ reason: 'invalid token', type: 'auth_failed' }),
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
await expect(
|
||||
streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
operationId: 'op-1',
|
||||
token: 'bad-token',
|
||||
}),
|
||||
).rejects.toThrow('Gateway auth failed');
|
||||
});
|
||||
|
||||
it('should resolve on session_complete', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
operationId: 'op-1',
|
||||
token: 'test-token',
|
||||
});
|
||||
|
||||
await flush();
|
||||
capturedWs!.simulateMessage({ id: '1', summary: 'All done', type: 'session_complete' });
|
||||
|
||||
await expect(promise).resolves.toBeUndefined();
|
||||
});
|
||||
|
||||
it('should ignore heartbeat_ack messages', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
operationId: 'op-1',
|
||||
token: 'test-token',
|
||||
});
|
||||
|
||||
await flush();
|
||||
const ws = capturedWs!;
|
||||
|
||||
ws.simulateMessage({ type: 'heartbeat_ack' });
|
||||
expect(stdoutSpy).not.toHaveBeenCalled();
|
||||
|
||||
ws.simulateMessage({ id: '1', type: 'session_complete' });
|
||||
await promise;
|
||||
});
|
||||
|
||||
it('should construct correct WebSocket URL from HTTPS gateway URL', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://agent-gateway.lobehub.com',
|
||||
operationId: 'op-123',
|
||||
token: 'tok',
|
||||
});
|
||||
|
||||
await flush();
|
||||
expect(capturedWs!.url).toBe('wss://agent-gateway.lobehub.com/ws?operationId=op-123');
|
||||
|
||||
capturedWs!.simulateMessage({ id: '1', type: 'session_complete' });
|
||||
await promise;
|
||||
});
|
||||
|
||||
it('should render a multi-step agent run with tool calls', async () => {
|
||||
const promise = streamAgentEventsViaWebSocket({
|
||||
gatewayUrl: 'https://gw.test.com',
|
||||
operationId: 'op-1',
|
||||
token: 'tok',
|
||||
verbose: true,
|
||||
});
|
||||
|
||||
await flush();
|
||||
const ws = capturedWs!;
|
||||
const { log } = await import('./logger');
|
||||
|
||||
// Step 1: thinking + text + tool call
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: null,
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 1,
|
||||
type: 'agent_runtime_init',
|
||||
},
|
||||
id: '1',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: { data: null, operationId: 'op-1', stepIndex: 0, timestamp: 2, type: 'step_start' },
|
||||
id: '2',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { chunkType: 'reasoning', reasoning: 'Let me search...' },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 3,
|
||||
type: 'stream_chunk',
|
||||
},
|
||||
id: '3',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { chunkType: 'text', content: 'Searching for news.' },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 4,
|
||||
type: 'stream_chunk',
|
||||
},
|
||||
id: '4',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { toolCalling: { apiName: 'search', id: 'tc-1' } },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 5,
|
||||
type: 'tool_start',
|
||||
},
|
||||
id: '5',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: { data: null, operationId: 'op-1', stepIndex: 0, timestamp: 6, type: 'stream_end' },
|
||||
id: '6',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { stepIndex: 0 },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 0,
|
||||
timestamp: 7,
|
||||
type: 'step_complete',
|
||||
},
|
||||
id: '7',
|
||||
type: 'agent_event',
|
||||
});
|
||||
|
||||
// Step 2: tool result + final text
|
||||
ws.simulateMessage({
|
||||
event: { data: null, operationId: 'op-1', stepIndex: 1, timestamp: 8, type: 'step_start' },
|
||||
id: '8',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: {
|
||||
isSuccess: true,
|
||||
payload: { toolCalling: { id: 'tc-1' } },
|
||||
result: { content: 'Results...' },
|
||||
},
|
||||
operationId: 'op-1',
|
||||
stepIndex: 1,
|
||||
timestamp: 9,
|
||||
type: 'tool_end',
|
||||
},
|
||||
id: '9',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { chunkType: 'text', content: 'Here are the results.' },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 1,
|
||||
timestamp: 10,
|
||||
type: 'stream_chunk',
|
||||
},
|
||||
id: '10',
|
||||
type: 'agent_event',
|
||||
});
|
||||
ws.simulateMessage({
|
||||
event: {
|
||||
data: { cost: { total: 0.05 }, stepCount: 2, usage: { total_tokens: 500 } },
|
||||
operationId: 'op-1',
|
||||
stepIndex: 1,
|
||||
timestamp: 11,
|
||||
type: 'agent_runtime_end',
|
||||
},
|
||||
id: '11',
|
||||
type: 'agent_event',
|
||||
});
|
||||
|
||||
await promise;
|
||||
|
||||
// Verify reasoning was rendered (dim)
|
||||
expect(stdoutSpy).toHaveBeenCalledWith(expect.stringContaining('Let me search...'));
|
||||
// Verify text chunks
|
||||
expect(stdoutSpy).toHaveBeenCalledWith('Searching for news.');
|
||||
expect(stdoutSpy).toHaveBeenCalledWith('Here are the results.');
|
||||
// Verify tool call was logged
|
||||
expect(log.toolCall).toHaveBeenCalledWith('search', 'tc-1', undefined);
|
||||
// Verify tool result was logged
|
||||
expect(log.toolResult).toHaveBeenCalled();
|
||||
// Verify finish line
|
||||
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('Agent finished'));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import pc from 'picocolors';
|
||||
import urlJoin from 'url-join';
|
||||
|
||||
import { log } from './logger';
|
||||
|
||||
@@ -17,12 +16,6 @@ interface StreamOptions {
|
||||
verbose?: boolean;
|
||||
}
|
||||
|
||||
interface WebSocketStreamOptions extends StreamOptions {
|
||||
gatewayUrl: string;
|
||||
operationId: string;
|
||||
token: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Connect to the agent SSE stream and render events to the terminal.
|
||||
* Resolves when the stream ends (agent_runtime_end or connection close).
|
||||
@@ -159,126 +152,6 @@ export function replayAgentEvents(events: AgentStreamEvent[], options: StreamOpt
|
||||
}
|
||||
}
|
||||
|
||||
const HEARTBEAT_INTERVAL = 30_000;
|
||||
|
||||
/**
|
||||
* Connect to the Agent Gateway via WebSocket and render events to the terminal.
|
||||
* Resolves when the session completes or the connection closes.
|
||||
*/
|
||||
export async function streamAgentEventsViaWebSocket(
|
||||
options: WebSocketStreamOptions,
|
||||
): Promise<void> {
|
||||
const { gatewayUrl, operationId, token, ...streamOpts } = options;
|
||||
const wsUrl = urlJoin(
|
||||
gatewayUrl.replace(/^http/, 'ws'),
|
||||
`/ws?operationId=${encodeURIComponent(operationId)}`,
|
||||
);
|
||||
|
||||
log.debug(`Connecting to gateway: ${wsUrl}`);
|
||||
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
const ws = new WebSocket(wsUrl);
|
||||
const jsonEvents: AgentStreamEvent[] = [];
|
||||
const ctx = createRenderContext();
|
||||
let lastEventId = '';
|
||||
let heartbeatTimer: ReturnType<typeof setInterval> | undefined;
|
||||
let jsonPrinted = false;
|
||||
|
||||
const cleanup = () => {
|
||||
if (heartbeatTimer) clearInterval(heartbeatTimer);
|
||||
if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) {
|
||||
ws.close();
|
||||
}
|
||||
};
|
||||
|
||||
ws.onopen = () => {
|
||||
ws.send(JSON.stringify({ token, type: 'auth' }));
|
||||
};
|
||||
|
||||
ws.onmessage = (event) => {
|
||||
const msg = JSON.parse(event.data as string);
|
||||
|
||||
if (msg.type === 'auth_success') {
|
||||
log.debug('Gateway authenticated');
|
||||
// Request all buffered events (covers events pushed before WS connected)
|
||||
ws.send(JSON.stringify({ lastEventId: '', type: 'resume' }));
|
||||
heartbeatTimer = setInterval(() => {
|
||||
if (ws.readyState === WebSocket.OPEN) {
|
||||
ws.send(JSON.stringify({ type: 'heartbeat' }));
|
||||
}
|
||||
}, HEARTBEAT_INTERVAL);
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg.type === 'auth_failed') {
|
||||
cleanup();
|
||||
reject(new Error(`Gateway auth failed: ${msg.reason}`));
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg.type === 'heartbeat_ack') return;
|
||||
|
||||
if (msg.type === 'agent_event') {
|
||||
const agentEvent: AgentStreamEvent = msg.event;
|
||||
if (msg.id) lastEventId = msg.id;
|
||||
|
||||
if (streamOpts.json) {
|
||||
jsonEvents.push(agentEvent);
|
||||
} else {
|
||||
renderEvent(agentEvent, ctx, streamOpts);
|
||||
}
|
||||
|
||||
if (agentEvent.type === 'agent_runtime_end') {
|
||||
if (streamOpts.json && !jsonPrinted) {
|
||||
jsonPrinted = true;
|
||||
console.log(JSON.stringify(jsonEvents, null, 2));
|
||||
} else if (!streamOpts.json) {
|
||||
renderEnd(agentEvent);
|
||||
}
|
||||
cleanup();
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
if (agentEvent.type === 'error') {
|
||||
if (streamOpts.json && !jsonPrinted) {
|
||||
jsonPrinted = true;
|
||||
console.log(JSON.stringify(jsonEvents, null, 2));
|
||||
}
|
||||
log.error(
|
||||
`Agent error: ${agentEvent.data?.message || agentEvent.data?.error || 'Unknown error'}`,
|
||||
);
|
||||
cleanup();
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
if (msg.type === 'session_complete') {
|
||||
if (streamOpts.json && jsonEvents.length > 0 && !jsonPrinted) {
|
||||
jsonPrinted = true;
|
||||
console.log(JSON.stringify(jsonEvents, null, 2));
|
||||
}
|
||||
cleanup();
|
||||
resolve();
|
||||
}
|
||||
};
|
||||
|
||||
ws.onerror = (err) => {
|
||||
cleanup();
|
||||
reject(err);
|
||||
};
|
||||
|
||||
ws.onclose = () => {
|
||||
if (heartbeatTimer) clearInterval(heartbeatTimer);
|
||||
if (streamOpts.json && jsonEvents.length > 0 && !jsonPrinted) {
|
||||
jsonPrinted = true;
|
||||
console.log(JSON.stringify(jsonEvents, null, 2));
|
||||
}
|
||||
resolve();
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
// ── Render helpers ──────────────────────────────────────
|
||||
|
||||
interface RenderContext {
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
import { readStatus } from '../daemon/manager';
|
||||
|
||||
export function resolveLocalDeviceId(): string | undefined {
|
||||
return readStatus()?.deviceId;
|
||||
}
|
||||
@@ -387,102 +387,6 @@ export function printCalendarHeatmap(
|
||||
console.log();
|
||||
}
|
||||
|
||||
// ── Kanban Board ─────────────────────────────────────
|
||||
|
||||
export interface KanbanColumn {
|
||||
color?: (s: string) => string;
|
||||
items: KanbanCard[];
|
||||
title: string;
|
||||
}
|
||||
|
||||
export interface KanbanCard {
|
||||
badge?: string;
|
||||
meta?: string;
|
||||
title: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Render a kanban board with side-by-side columns.
|
||||
* Adapts column width to terminal width automatically.
|
||||
*/
|
||||
export function printKanban(columns: KanbanColumn[]) {
|
||||
// Filter out empty columns
|
||||
const cols = columns.filter((c) => c.items.length > 0);
|
||||
if (cols.length === 0) return;
|
||||
|
||||
const termWidth = process.stdout.columns || 100;
|
||||
// Each column gets equal width, with 1-char gap between
|
||||
const colWidth = Math.max(20, Math.floor((termWidth - (cols.length - 1)) / cols.length));
|
||||
const innerWidth = colWidth - 4; // 2 chars border + 2 padding
|
||||
|
||||
const maxRows = Math.max(...cols.map((c) => c.items.length));
|
||||
|
||||
// ── Header ──
|
||||
const topBorder = cols
|
||||
.map((c) => {
|
||||
const titleStr = ` ${c.title} (${c.items.length}) `;
|
||||
const color = c.color || pc.white;
|
||||
const remaining = colWidth - 2 - displayWidth(titleStr);
|
||||
const left = Math.floor(remaining / 2);
|
||||
const right = remaining - left;
|
||||
return color(
|
||||
'┌' + '─'.repeat(Math.max(0, left)) + titleStr + '─'.repeat(Math.max(0, right)) + '┐',
|
||||
);
|
||||
})
|
||||
.join(' ');
|
||||
console.log(topBorder);
|
||||
|
||||
// ── Rows ──
|
||||
for (let row = 0; row < maxRows; row++) {
|
||||
const line = cols
|
||||
.map((c) => {
|
||||
const color = c.color || pc.white;
|
||||
const item = c.items[row];
|
||||
if (!item) {
|
||||
return color('│') + ' '.repeat(colWidth - 2) + color('│');
|
||||
}
|
||||
|
||||
const badge = item.badge ? item.badge + ' ' : '';
|
||||
const badgeWidth = displayWidth(badge);
|
||||
const titleMaxWidth = innerWidth - badgeWidth;
|
||||
const title = truncate(item.title, titleMaxWidth);
|
||||
const titleWidth = displayWidth(title);
|
||||
const pad = ' '.repeat(Math.max(0, colWidth - 2 - badgeWidth - titleWidth - 2));
|
||||
return color('│') + ' ' + badge + title + pad + ' ' + color('│');
|
||||
})
|
||||
.join(' ');
|
||||
console.log(line);
|
||||
|
||||
// Print meta line if any card in this row has meta
|
||||
const hasMeta = cols.some((c) => c.items[row]?.meta);
|
||||
if (hasMeta) {
|
||||
const metaLine = cols
|
||||
.map((c) => {
|
||||
const color = c.color || pc.white;
|
||||
const item = c.items[row];
|
||||
if (!item?.meta) {
|
||||
return color('│') + ' '.repeat(colWidth - 2) + color('│');
|
||||
}
|
||||
const meta = truncate(item.meta, innerWidth);
|
||||
const metaWidth = displayWidth(meta);
|
||||
const pad = ' '.repeat(Math.max(0, colWidth - 2 - metaWidth - 2));
|
||||
return color('│') + ' ' + pc.dim(meta) + pad + ' ' + color('│');
|
||||
})
|
||||
.join(' ');
|
||||
console.log(metaLine);
|
||||
}
|
||||
}
|
||||
|
||||
// ── Bottom border ──
|
||||
const bottomBorder = cols
|
||||
.map((c) => {
|
||||
const color = c.color || pc.white;
|
||||
return color('└' + '─'.repeat(colWidth - 2) + '┘');
|
||||
})
|
||||
.join(' ');
|
||||
console.log(bottomBorder);
|
||||
}
|
||||
|
||||
export function confirm(message: string): Promise<boolean> {
|
||||
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
||||
return new Promise((resolve) => {
|
||||
|
||||
@@ -68,9 +68,7 @@
|
||||
if (resolvedTheme === 'dark' || resolvedTheme === 'light') {
|
||||
document.documentElement.setAttribute('data-theme', resolvedTheme);
|
||||
}
|
||||
// Check URL query parameter for locale (set by Electron main process from stored settings)
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
var locale = urlParams.get('lng') || navigator.language || 'en-US';
|
||||
var locale = navigator.language || 'en-US';
|
||||
document.documentElement.lang = locale;
|
||||
var rtl = ['ar', 'arc', 'dv', 'fa', 'ha', 'he', 'khw', 'ks', 'ku', 'ps', 'ur', 'yi'];
|
||||
document.documentElement.dir =
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
"cookie": "^1.1.1",
|
||||
"cross-env": "^10.1.0",
|
||||
"diff": "^8.0.4",
|
||||
"electron": "41.1.0",
|
||||
"electron": "41.0.2",
|
||||
"electron-builder": "^26.8.1",
|
||||
"electron-devtools-installer": "4.0.0",
|
||||
"electron-is": "^3.0.0",
|
||||
|
||||
@@ -5,7 +5,7 @@ import path from 'node:path';
|
||||
import { pipeline } from 'node:stream/promises';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const VERSION = '0.24.0';
|
||||
const VERSION = '0.20.1';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const binDir = path.join(__dirname, '..', 'resources', 'bin');
|
||||
|
||||
@@ -9,7 +9,7 @@ import { tagWhite, writeJSON } from './utils';
|
||||
export const genDefaultLocale = () => {
|
||||
consola.info(`默认语言为 ${i18nConfig.entryLocale}...`);
|
||||
|
||||
// Ensure entry locale directory exists
|
||||
// 确保入口语言目录存在
|
||||
const entryLocaleDir = localeDir(i18nConfig.entryLocale);
|
||||
if (!existsSync(entryLocaleDir)) {
|
||||
mkdirSync(entryLocaleDir, { recursive: true });
|
||||
@@ -23,7 +23,7 @@ export const genDefaultLocale = () => {
|
||||
for (const [ns, value] of data) {
|
||||
const filepath = entryLocaleJsonFilepath(`${ns}.json`);
|
||||
|
||||
// Ensure directory exists
|
||||
// 确保目录存在
|
||||
const dir = dirname(filepath);
|
||||
if (!existsSync(dir)) {
|
||||
mkdirSync(dir, { recursive: true });
|
||||
|
||||
@@ -5,7 +5,7 @@ import { genDefaultLocale } from './genDefaultLocale';
|
||||
import { genDiff } from './genDiff';
|
||||
import { split } from './utils';
|
||||
|
||||
// Ensure all locale directories exist
|
||||
// 确保所有语言目录存在
|
||||
const ensureLocalesDirs = () => {
|
||||
[i18nConfig.entryLocale, ...i18nConfig.outputLocales].forEach((locale) => {
|
||||
const dir = localeDir(locale);
|
||||
@@ -15,20 +15,20 @@ const ensureLocalesDirs = () => {
|
||||
});
|
||||
};
|
||||
|
||||
// Run workflow
|
||||
// 运行工作流
|
||||
const run = async () => {
|
||||
// Ensure directories exist
|
||||
// 确保目录存在
|
||||
ensureLocalesDirs();
|
||||
|
||||
// Diff analysis
|
||||
// 差异分析
|
||||
split('差异分析');
|
||||
genDiff();
|
||||
|
||||
// Generate default locale files
|
||||
// 生成默认语言文件
|
||||
split('生成默认语言文件');
|
||||
genDefaultLocale();
|
||||
|
||||
// Generate i18n files
|
||||
// 生成国际化文件
|
||||
split('生成国际化文件');
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { readFile } from 'node:fs/promises';
|
||||
import path from 'node:path';
|
||||
import process from 'node:process';
|
||||
|
||||
import type { ElectronAppState, ThemeMode } from '@lobechat/electron-client-ipc';
|
||||
@@ -171,7 +169,7 @@ export default class SystemController extends ControllerModule {
|
||||
async selectFolder(payload?: {
|
||||
defaultPath?: string;
|
||||
title?: string;
|
||||
}): Promise<{ path: string; repoType?: 'git' | 'github' } | undefined> {
|
||||
}): Promise<string | undefined> {
|
||||
const mainWindow = this.app.browserManager.getMainWindow()?.browserWindow;
|
||||
|
||||
const result = await dialog.showOpenDialog(mainWindow!, {
|
||||
@@ -184,10 +182,7 @@ export default class SystemController extends ControllerModule {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const folderPath = result.filePaths[0];
|
||||
const repoType = await this.detectRepoType(folderPath);
|
||||
|
||||
return { path: folderPath, repoType };
|
||||
return result.filePaths[0];
|
||||
}
|
||||
|
||||
@IpcMethod()
|
||||
@@ -235,17 +230,6 @@ export default class SystemController extends ControllerModule {
|
||||
}
|
||||
}
|
||||
|
||||
private async detectRepoType(dirPath: string): Promise<'git' | 'github' | undefined> {
|
||||
const gitConfigPath = path.join(dirPath, '.git', 'config');
|
||||
try {
|
||||
const config = await readFile(gitConfigPath, 'utf8');
|
||||
if (config.includes('github.com')) return 'github';
|
||||
return 'git';
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
private async setSystemThemeMode(themeMode: ThemeMode) {
|
||||
nativeTheme.themeSource = themeMode;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import type { UpdateChannel, UpdaterState } from '@lobechat/electron-client-ipc';
|
||||
|
||||
import { UPDATE_CHANNEL } from '@/modules/updater/configs';
|
||||
import { createLogger } from '@/utils/logger';
|
||||
|
||||
import { ControllerModule, IpcMethod } from './index';
|
||||
@@ -47,11 +46,11 @@ export default class UpdaterCtr extends ControllerModule {
|
||||
|
||||
@IpcMethod()
|
||||
async getUpdateChannel(): Promise<UpdateChannel> {
|
||||
return this.app.storeManager.get('updateChannel') ?? UPDATE_CHANNEL;
|
||||
return this.app.storeManager.get('updateChannel') ?? 'stable';
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the build-time channel (stable, canary, beta, or legacy nightly).
|
||||
* Get the build-time channel (stable, nightly, canary, beta).
|
||||
* Used for display in About page to distinguish pre-release builds.
|
||||
*/
|
||||
@IpcMethod()
|
||||
@@ -62,12 +61,11 @@ export default class UpdaterCtr extends ControllerModule {
|
||||
|
||||
@IpcMethod()
|
||||
async setUpdateChannel(channel: UpdateChannel): Promise<void> {
|
||||
const validChannels = new Set<UpdateChannel>(['stable', 'canary']);
|
||||
const validChannels = new Set(['stable', 'nightly', 'canary']);
|
||||
if (!validChannels.has(channel)) {
|
||||
logger.warn(`Invalid update channel: ${channel}, ignoring`);
|
||||
return;
|
||||
}
|
||||
|
||||
logger.info(`Set update channel requested: ${channel}`);
|
||||
this.app.storeManager.set('updateChannel', channel);
|
||||
this.app.updaterManager.switchChannel(channel);
|
||||
|
||||
@@ -8,14 +8,9 @@ import UpdaterCtr from '../UpdaterCtr';
|
||||
vi.mock('@/utils/logger', () => ({
|
||||
createLogger: () => ({
|
||||
info: vi.fn(),
|
||||
warn: vi.fn(),
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock('@/modules/updater/configs', () => ({
|
||||
UPDATE_CHANNEL: 'stable',
|
||||
}));
|
||||
|
||||
const { ipcMainHandleMock } = vi.hoisted(() => ({
|
||||
ipcMainHandleMock: vi.fn(),
|
||||
}));
|
||||
@@ -31,23 +26,13 @@ const mockCheckForUpdates = vi.fn();
|
||||
const mockDownloadUpdate = vi.fn();
|
||||
const mockInstallNow = vi.fn();
|
||||
const mockInstallLater = vi.fn();
|
||||
const mockGetUpdaterState = vi.fn();
|
||||
const mockSwitchChannel = vi.fn();
|
||||
const mockStoreGet = vi.fn();
|
||||
const mockStoreSet = vi.fn();
|
||||
|
||||
const mockApp = {
|
||||
storeManager: {
|
||||
get: mockStoreGet,
|
||||
set: mockStoreSet,
|
||||
},
|
||||
updaterManager: {
|
||||
checkForUpdates: mockCheckForUpdates,
|
||||
downloadUpdate: mockDownloadUpdate,
|
||||
getUpdaterState: mockGetUpdaterState,
|
||||
installNow: mockInstallNow,
|
||||
installLater: mockInstallLater,
|
||||
switchChannel: mockSwitchChannel,
|
||||
},
|
||||
} as unknown as App;
|
||||
|
||||
@@ -57,8 +42,6 @@ describe('UpdaterCtr', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
ipcMainHandleMock.mockClear();
|
||||
mockStoreGet.mockReset();
|
||||
mockStoreSet.mockReset();
|
||||
updaterCtr = new UpdaterCtr(mockApp);
|
||||
});
|
||||
|
||||
@@ -90,36 +73,6 @@ describe('UpdaterCtr', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('update channel', () => {
|
||||
it('should return stored update channel', async () => {
|
||||
mockStoreGet.mockReturnValueOnce('canary');
|
||||
|
||||
await expect(updaterCtr.getUpdateChannel()).resolves.toBe('canary');
|
||||
});
|
||||
|
||||
it('should return default update channel when store is empty', async () => {
|
||||
mockStoreGet.mockReturnValueOnce(undefined);
|
||||
|
||||
await expect(updaterCtr.getUpdateChannel()).resolves.toBe('stable');
|
||||
});
|
||||
|
||||
it('should keep canary input unchanged', async () => {
|
||||
await updaterCtr.setUpdateChannel('canary');
|
||||
|
||||
expect(mockStoreSet).toHaveBeenCalledWith('updateChannel', 'canary');
|
||||
expect(mockSwitchChannel).toHaveBeenCalledWith('canary');
|
||||
});
|
||||
|
||||
it('should ignore invalid legacy input', async () => {
|
||||
await updaterCtr.setUpdateChannel(
|
||||
'nightly' as unknown as Parameters<UpdaterCtr['setUpdateChannel']>[0],
|
||||
);
|
||||
|
||||
expect(mockStoreSet).not.toHaveBeenCalled();
|
||||
expect(mockSwitchChannel).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
// 测试错误处理
|
||||
describe('error handling', () => {
|
||||
it('should handle errors when checking for updates', async () => {
|
||||
|
||||
@@ -160,13 +160,14 @@ export class BackendProxyProtocolManager {
|
||||
responseHeaders.set('Access-Control-Allow-Headers', '*');
|
||||
responseHeaders.set('X-Src-Url', rewrittenUrl);
|
||||
|
||||
// Re-auth prompt: rely on X-Auth-Required (set by tRPC responseMeta for UNAUTHORIZED).
|
||||
// Batched tRPC responses can use HTTP 207 when calls mix success (200) and UNAUTHORIZED (401);
|
||||
// checking only status === 401 misses that case and the login modal never opens.
|
||||
// Other failures keep 401 without this header (e.g., invalid API keys) and must not notify here.
|
||||
const authRequired = upstreamResponse.headers.get(AUTH_REQUIRED_HEADER) === 'true';
|
||||
if (authRequired) {
|
||||
this.notifyAuthorizationRequired();
|
||||
// Handle 401 Unauthorized: only notify authorization required for real auth failures
|
||||
// The server sets X-Auth-Required header for real authentication failures (e.g., token expired)
|
||||
// Other 401 errors (e.g., invalid API keys) should not trigger re-authentication
|
||||
if (upstreamResponse.status === 401) {
|
||||
const authRequired = upstreamResponse.headers.get(AUTH_REQUIRED_HEADER) === 'true';
|
||||
if (authRequired) {
|
||||
this.notifyAuthorizationRequired();
|
||||
}
|
||||
}
|
||||
|
||||
return new Response(upstreamResponse.body, {
|
||||
|
||||
@@ -6,7 +6,6 @@ import { makeSureDirExist } from '@/utils/file-system';
|
||||
import { createLogger } from '@/utils/logger';
|
||||
|
||||
import type { App } from '../App';
|
||||
import { runStoreMigrations } from './migration';
|
||||
|
||||
// Create logger
|
||||
const logger = createLogger('core:StoreManager');
|
||||
@@ -28,7 +27,6 @@ export class StoreManager {
|
||||
defaults: STORE_DEFAULTS,
|
||||
name: STORE_NAME,
|
||||
});
|
||||
runStoreMigrations(this.store);
|
||||
logger.info('StoreManager initialized with store name:', STORE_NAME);
|
||||
|
||||
const storagePath = this.store.get('storagePath');
|
||||
|
||||
@@ -139,7 +139,9 @@ export class UpdaterManager {
|
||||
public switchChannel = (channel: UpdateChannel) => {
|
||||
logger.info(`Switching update channel: ${this.currentChannel} -> ${channel}`);
|
||||
|
||||
const isDowngrade = this.currentChannel === 'canary' && channel === 'stable';
|
||||
const isDowngrade =
|
||||
(this.currentChannel === 'canary' && channel !== 'canary') ||
|
||||
(this.currentChannel === 'nightly' && channel === 'stable');
|
||||
|
||||
this.currentChannel = channel;
|
||||
autoUpdater.allowDowngrade = isDowngrade;
|
||||
@@ -364,7 +366,7 @@ export class UpdaterManager {
|
||||
|
||||
/**
|
||||
* Strip trailing channel path from URL so we can re-append the correct channel.
|
||||
* Handles both base URL (https://cdn.example.com) and legacy URLs with channel suffixes.
|
||||
* Handles both base URL (https://cdn.example.com) and legacy URL with channel (https://cdn.example.com/stable)
|
||||
*/
|
||||
private getBaseUpdateUrl(): string | undefined {
|
||||
if (!UPDATE_SERVER_URL) return undefined;
|
||||
|
||||
+1
-50
@@ -1,6 +1,4 @@
|
||||
import { AUTH_REQUIRED_HEADER } from '@lobechat/desktop-bridge';
|
||||
import { BrowserWindow } from 'electron';
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import { BackendProxyProtocolManager } from '../BackendProxyProtocolManager';
|
||||
|
||||
@@ -39,22 +37,12 @@ vi.mock('@/utils/logger', () => ({
|
||||
}),
|
||||
}));
|
||||
|
||||
vi.mock('electron', () => ({
|
||||
BrowserWindow: {
|
||||
getAllWindows: vi.fn(),
|
||||
},
|
||||
}));
|
||||
|
||||
describe('BackendProxyProtocolManager', () => {
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
protocolHandlerRef.current = null;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
vi.useRealTimers();
|
||||
});
|
||||
|
||||
it('should rewrite url to remote base and inject Oidc-Auth token', async () => {
|
||||
const manager = new BackendProxyProtocolManager();
|
||||
const session = { protocol: mockProtocol } as any;
|
||||
@@ -221,41 +209,4 @@ describe('BackendProxyProtocolManager', () => {
|
||||
} as any),
|
||||
).rejects.toThrow('network down');
|
||||
});
|
||||
|
||||
it('should broadcast authorizationRequired when X-Auth-Required is set on HTTP 207 (batched tRPC)', async () => {
|
||||
vi.useFakeTimers();
|
||||
const send = vi.fn();
|
||||
vi.mocked(BrowserWindow.getAllWindows).mockReturnValue([
|
||||
{ isDestroyed: () => false, webContents: { send } },
|
||||
] as any);
|
||||
|
||||
const manager = new BackendProxyProtocolManager();
|
||||
const session = { protocol: mockProtocol } as any;
|
||||
|
||||
const headers = new Headers({
|
||||
[AUTH_REQUIRED_HEADER]: 'true',
|
||||
'Content-Type': 'application/json',
|
||||
});
|
||||
const fetchMock = vi.fn<FetchMock>(
|
||||
async () => new Response('[]', { headers, status: 207, statusText: 'Multi-Status' }),
|
||||
);
|
||||
vi.stubGlobal('fetch', fetchMock as any);
|
||||
|
||||
manager.registerWithRemoteBaseUrl(session, {
|
||||
getAccessToken: async () => null,
|
||||
getRemoteBaseUrl: async () => 'https://remote.example.com',
|
||||
scheme: 'lobe-backend',
|
||||
});
|
||||
|
||||
const handler = protocolHandlerRef.current;
|
||||
await handler({
|
||||
headers: new Headers(),
|
||||
method: 'GET',
|
||||
url: 'lobe-backend://app/trpc/lambda/batch?batch=1',
|
||||
} as any);
|
||||
|
||||
expect(send).not.toHaveBeenCalled();
|
||||
await vi.advanceTimersByTimeAsync(1000);
|
||||
expect(send).toHaveBeenCalledWith('authorizationRequired');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
import type { App as AppCore } from '../../App';
|
||||
import { APPLIED_STORE_MIGRATIONS_KEY, getStoreMigrations, runStoreMigrations } from '../migration';
|
||||
import { StoreManager } from '../StoreManager';
|
||||
|
||||
// Use vi.hoisted to define mocks before hoisting
|
||||
@@ -47,11 +46,6 @@ vi.mock('@/utils/file-system', () => ({
|
||||
makeSureDirExist: mockMakeSureDirExist,
|
||||
}));
|
||||
|
||||
vi.mock('@/modules/updater/configs', () => ({
|
||||
coerceStoredUpdateChannel: (channel?: string | null) =>
|
||||
channel === 'canary' ? 'canary' : 'stable',
|
||||
}));
|
||||
|
||||
// Mock store constants
|
||||
vi.mock('@/const/store', () => ({
|
||||
STORE_DEFAULTS: {
|
||||
@@ -83,52 +77,18 @@ describe('StoreManager', () => {
|
||||
|
||||
describe('constructor', () => {
|
||||
it('should create electron-store with correct options', () => {
|
||||
expect(MockStore).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
defaults: {
|
||||
locale: 'auto',
|
||||
storagePath: '/default/storage/path',
|
||||
},
|
||||
name: 'test-config',
|
||||
}),
|
||||
);
|
||||
expect(MockStore).toHaveBeenCalledWith({
|
||||
defaults: {
|
||||
locale: 'auto',
|
||||
storagePath: '/default/storage/path',
|
||||
},
|
||||
name: 'test-config',
|
||||
});
|
||||
});
|
||||
|
||||
it('should ensure storage directory exists', () => {
|
||||
expect(mockMakeSureDirExist).toHaveBeenCalledWith('/mock/storage/path');
|
||||
});
|
||||
|
||||
it('should migrate legacy nightly channel and record applied migration ids', () => {
|
||||
const store = {
|
||||
get: vi.fn((key: string) => {
|
||||
if (key === APPLIED_STORE_MIGRATIONS_KEY) return undefined;
|
||||
if (key === 'updateChannel') return 'nightly';
|
||||
}),
|
||||
set: vi.fn(),
|
||||
} as any;
|
||||
|
||||
runStoreMigrations(store);
|
||||
|
||||
expect(store.set).toHaveBeenCalledWith('updateChannel', 'stable');
|
||||
expect(store.set).toHaveBeenCalledWith(APPLIED_STORE_MIGRATIONS_KEY, [
|
||||
getStoreMigrations()[0].id,
|
||||
]);
|
||||
});
|
||||
|
||||
it('should skip already applied migrations', () => {
|
||||
const appliedMigrationId = getStoreMigrations()[0].id;
|
||||
const store = {
|
||||
get: vi.fn((key: string) => {
|
||||
if (key === APPLIED_STORE_MIGRATIONS_KEY) return [appliedMigrationId];
|
||||
if (key === 'updateChannel') return 'nightly';
|
||||
}),
|
||||
set: vi.fn(),
|
||||
} as any;
|
||||
|
||||
runStoreMigrations(store);
|
||||
|
||||
expect(store.set).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
||||
describe('get', () => {
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
import { coerceStoredUpdateChannel } from '@/modules/updater/configs';
|
||||
|
||||
import { defineMigration } from './defineMigration';
|
||||
|
||||
export default defineMigration({
|
||||
id: '001-normalize-update-channel',
|
||||
up: (store) => {
|
||||
const storedChannel = store.get('updateChannel');
|
||||
const normalizedChannel = coerceStoredUpdateChannel(storedChannel);
|
||||
|
||||
if (storedChannel && storedChannel !== normalizedChannel) {
|
||||
store.set('updateChannel', normalizedChannel);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -1,10 +0,0 @@
|
||||
import type Store from 'electron-store';
|
||||
|
||||
import type { ElectronMainStore } from '@/types/store';
|
||||
|
||||
export interface StoreMigration {
|
||||
id: string;
|
||||
up: (store: Store<ElectronMainStore>) => void;
|
||||
}
|
||||
|
||||
export const defineMigration = (migration: StoreMigration): StoreMigration => migration;
|
||||
@@ -1,55 +0,0 @@
|
||||
import type Store from 'electron-store';
|
||||
|
||||
import type { ElectronMainStore } from '@/types/store';
|
||||
import { createLogger } from '@/utils/logger';
|
||||
|
||||
import normalizeUpdateChannelMigration from './001-normalize-update-channel';
|
||||
import type { StoreMigration } from './defineMigration';
|
||||
|
||||
export const APPLIED_STORE_MIGRATIONS_KEY = 'lobeDesktopAppliedStoreMigrations';
|
||||
|
||||
const logger = createLogger('core:storeMigration');
|
||||
|
||||
const migrations: StoreMigration[] = [normalizeUpdateChannelMigration];
|
||||
|
||||
const getAppliedMigrationIds = (store: Store<ElectronMainStore>): string[] => {
|
||||
return (
|
||||
(store.get(APPLIED_STORE_MIGRATIONS_KEY as keyof ElectronMainStore) as string[] | undefined) ??
|
||||
[]
|
||||
);
|
||||
};
|
||||
|
||||
const setAppliedMigrationIds = (store: Store<ElectronMainStore>, ids: string[]) => {
|
||||
store.set(
|
||||
APPLIED_STORE_MIGRATIONS_KEY as keyof ElectronMainStore,
|
||||
ids as ElectronMainStore[keyof ElectronMainStore],
|
||||
);
|
||||
};
|
||||
|
||||
export const getStoreMigrations = () => migrations;
|
||||
|
||||
export const runStoreMigrations = (store: Store<ElectronMainStore>) => {
|
||||
logger.info('Store migrations started');
|
||||
|
||||
const appliedMigrationIds = new Set(getAppliedMigrationIds(store));
|
||||
let hasNewMigrationApplied = false;
|
||||
|
||||
for (const migration of migrations) {
|
||||
if (appliedMigrationIds.has(migration.id)) continue;
|
||||
|
||||
logger.info(`Running store migration: ${migration.id}`);
|
||||
migration.up(store);
|
||||
appliedMigrationIds.add(migration.id);
|
||||
hasNewMigrationApplied = true;
|
||||
}
|
||||
|
||||
if (hasNewMigrationApplied) {
|
||||
setAppliedMigrationIds(store, [...appliedMigrationIds]);
|
||||
}
|
||||
|
||||
logger.info(
|
||||
hasNewMigrationApplied
|
||||
? 'Store migrations finished (updates applied)'
|
||||
: 'Store migrations finished (nothing pending)',
|
||||
);
|
||||
};
|
||||
@@ -5,13 +5,14 @@ import { getDesktopEnv } from '@/env';
|
||||
|
||||
// Build-time default channel, can be overridden at runtime via store
|
||||
const rawChannel = getDesktopEnv().UPDATE_CHANNEL || 'stable';
|
||||
export const coerceStoredUpdateChannel = (channel?: string | null): UpdateChannel =>
|
||||
channel === 'canary' ? 'canary' : 'stable';
|
||||
|
||||
/** Raw build channel for display (stable, canary, beta, or legacy nightly). */
|
||||
const VALID_CHANNELS = new Set<UpdateChannel>(['stable', 'nightly', 'canary']);
|
||||
/** Raw build channel for display (stable, nightly, canary, beta) */
|
||||
export const BUILD_CHANNEL: string = rawChannel;
|
||||
export const UPDATE_CHANNEL: UpdateChannel =
|
||||
rawChannel === 'canary' || rawChannel === 'beta' ? 'canary' : 'stable';
|
||||
export const UPDATE_CHANNEL: UpdateChannel = VALID_CHANNELS.has(rawChannel as UpdateChannel)
|
||||
? (rawChannel as UpdateChannel)
|
||||
: rawChannel === 'beta'
|
||||
? 'nightly'
|
||||
: 'stable';
|
||||
|
||||
// S3 base URL for all channels
|
||||
// e.g., https://releases.lobehub.com
|
||||
|
||||
@@ -51,7 +51,7 @@ describe('setupElectronApi', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('should expose lobeEnv with darwinMajorVersion, isMacTahoe, platform and version info', () => {
|
||||
it('should expose lobeEnv with darwinMajorVersion, isMacTahoe and platform', () => {
|
||||
setupElectronApi();
|
||||
|
||||
const call = mockContextBridgeExposeInMainWorld.mock.calls.find((i) => i[0] === 'lobeEnv');
|
||||
@@ -69,20 +69,6 @@ describe('setupElectronApi', () => {
|
||||
|
||||
expect(Object.prototype.hasOwnProperty.call(exposedEnv, 'platform')).toBe(true);
|
||||
expect(['darwin', 'linux', 'win32'].includes(exposedEnv.platform)).toBe(true);
|
||||
|
||||
// electronVersion and chromeVersion may be undefined in Node.js test env
|
||||
expect(Object.prototype.hasOwnProperty.call(exposedEnv, 'electronVersion')).toBe(true);
|
||||
expect(
|
||||
exposedEnv.electronVersion === undefined || typeof exposedEnv.electronVersion === 'string',
|
||||
).toBe(true);
|
||||
|
||||
expect(Object.prototype.hasOwnProperty.call(exposedEnv, 'chromeVersion')).toBe(true);
|
||||
expect(
|
||||
exposedEnv.chromeVersion === undefined || typeof exposedEnv.chromeVersion === 'string',
|
||||
).toBe(true);
|
||||
|
||||
expect(Object.prototype.hasOwnProperty.call(exposedEnv, 'nodeVersion')).toBe(true);
|
||||
expect(typeof exposedEnv.nodeVersion).toBe('string');
|
||||
});
|
||||
|
||||
it('should expose both APIs in correct order', () => {
|
||||
|
||||
@@ -25,11 +25,8 @@ export const setupElectronApi = () => {
|
||||
const darwinMajorVersion = Number(osInfo.split('.')[0]);
|
||||
|
||||
contextBridge.exposeInMainWorld('lobeEnv', {
|
||||
chromeVersion: process.versions.chrome,
|
||||
darwinMajorVersion,
|
||||
electronVersion: process.versions.electron,
|
||||
isMacTahoe: process.platform === 'darwin' && darwinMajorVersion >= 25,
|
||||
nodeVersion: process.versions.node,
|
||||
platform: process.platform,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
---
|
||||
title: Agent Task System & Bot Management
|
||||
description: >-
|
||||
Introduced agent task system, in-app notifications, bot management, and improved onboarding experience.
|
||||
|
||||
|
||||
Introduced agent task system, in-app notifications, bot management, and
|
||||
improved onboarding experience.
|
||||
tags:
|
||||
- Agent Tasks
|
||||
- Bot Management
|
||||
@@ -22,3 +21,7 @@ This week LobeHub introduced powerful new agent capabilities and a smoother gett
|
||||
- Agent onboarding: a new guided onboarding flow helps you get started with agents quickly
|
||||
- Skill-specific icons: slash menu commands now show distinct icons for each skill, making them easier to find
|
||||
- GitHub Copilot improvements: better vision support and overall compatibility with GitHub Copilot
|
||||
|
||||
## Experience Improvements
|
||||
|
||||
Moved Marketplace below Resources in the sidebar for a cleaner layout, added a visual hint when AI generation is interrupted, fixed topic transition glitches, and improved error handling with friendlier fallback screens.
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
title: AI Auto-Completion & Real-Time Gateway
|
||||
description: >-
|
||||
Added AI-powered input auto-completion, WebSocket-based real-time messaging
|
||||
gateway, expanded bot platform support, and improved context injection.
|
||||
tags:
|
||||
- Auto-Completion
|
||||
- WebSocket Gateway
|
||||
- Bot Platform
|
||||
- Context Engine
|
||||
---
|
||||
|
||||
# AI Auto-Completion & Real-Time Gateway
|
||||
|
||||
Smarter editing with AI suggestions, real-time messaging via WebSocket, and broader bot platform connectivity.
|
||||
|
||||
## Key Updates
|
||||
|
||||
- AI auto-completion: the editor now suggests completions as you type, helping you compose messages faster
|
||||
- Real-time gateway: a new WebSocket-based Agent Gateway streams responses in real time for lower-latency conversations
|
||||
- Bot platform expansion: Feishu / Lark, Slack, and QQ now support WebSocket connection mode for more reliable message delivery
|
||||
- @ mention context injection: skills and tools are now invoked via @ mentions with direct context injection, replacing the previous slash-command approach
|
||||
- Skill Store skills tab: the Skill Store now has a dedicated Skills tab for easier browsing
|
||||
- Automatic topic creation: new topics are created automatically every 4 hours to keep conversations organized
|
||||
|
||||
## Experience Improvements
|
||||
|
||||
- Agent documents now load progressively, showing content as it becomes available instead of blocking the full page
|
||||
- Fixed the image generation button incorrectly defaulting to a wrong model
|
||||
- Improved paste performance by preventing the chat input from freezing on large clipboard content
|
||||
- Strengthened security by sanitizing HTML artifacts and removing an auth bypass vector
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
title: AI 自动补全与实时消息网关
|
||||
description: 新增 AI 输入自动补全、基于 WebSocket 的实时消息网关、扩展 Bot 平台支持,以及改进的上下文注入机制。
|
||||
tags:
|
||||
- 自动补全
|
||||
- WebSocket 网关
|
||||
- Bot 平台
|
||||
- 上下文引擎
|
||||
---
|
||||
|
||||
# AI 自动补全与实时消息网关
|
||||
|
||||
更智能的 AI 自动补全编辑体验、基于 WebSocket 的实时消息网关,以及更广泛的 Bot 平台连接支持。
|
||||
|
||||
## 重要更新
|
||||
|
||||
- AI 自动补全:编辑器现在会在你输入时智能推荐补全建议,帮助你更快地撰写消息
|
||||
- 实时消息网关:全新的基于 WebSocket 的 Agent 网关可实时推送响应,降低对话延迟
|
||||
- Bot 平台扩展:飞书、Slack 和 QQ 现已支持 WebSocket 连接模式,消息传递更加稳定可靠
|
||||
- @ 提及上下文注入:技能和工具现在通过 @ 提及调用并直接注入上下文,取代了之前的斜杠命令方式
|
||||
- 技能商店技能标签:技能商店新增专属的「技能」标签页,浏览更加便捷
|
||||
- 自动创建话题:每 4 小时自动创建新话题,保持对话井然有序
|
||||
|
||||
## 体验优化
|
||||
|
||||
- 智能体文档现在支持渐进式加载,在内容就绪时即时展示,不再阻塞整个页面
|
||||
- 修复了图片生成按钮错误默认选择模型的问题
|
||||
- 优化了粘贴性能,防止在粘贴大量剪贴板内容时聊天输入框卡顿
|
||||
- 加强了安全性,清理了 HTML 工件并修复了一个认证绕过漏洞
|
||||
@@ -2,11 +2,6 @@
|
||||
"$schema": "https://github.com/lobehub/lobe-chat/blob/main/docs/changelog/schema.json",
|
||||
"cloud": [],
|
||||
"community": [
|
||||
{
|
||||
"id": "2026-04-06-auto-completion",
|
||||
"date": "2026-04-06",
|
||||
"versionRange": ["2.1.46"]
|
||||
},
|
||||
{
|
||||
"id": "2026-03-30-agent-tasks",
|
||||
"date": "2026-03-30",
|
||||
|
||||
@@ -179,7 +179,7 @@ This system is expected to be gradually deprecated
|
||||
in favor of the MCP tool system.
|
||||
|
||||
- Frontend calls them via the
|
||||
`invokeBuiltinTool` method
|
||||
`invokeDefaultTypePlugin` method
|
||||
- Retrieves plugin settings and manifest,
|
||||
creates authentication headers,
|
||||
and sends requests to the plugin gateway
|
||||
|
||||
@@ -159,7 +159,7 @@ while (state.status !== 'done' && state.status !== 'error') {
|
||||
**Plugin 工具**:传统插件体系,通过 API 网关调用。
|
||||
该体系预期将逐步废弃,由 MCP 工具体系替代。
|
||||
|
||||
- 前端通过 `invokeBuiltinTool` 方法调用
|
||||
- 前端通过 `invokeDefaultTypePlugin` 方法调用
|
||||
- 获取插件设置和清单、创建认证请求头、
|
||||
发送请求到插件网关
|
||||
|
||||
|
||||
@@ -21,10 +21,6 @@ tags:
|
||||
|
||||
Channels allow you to connect your LobeHub agents to external messaging platforms. Once connected, users can interact with your AI assistant directly in the chat apps they already use — no need to visit LobeHub.
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> WeChat currently requires an active subscription. If you are using the community edition without a subscription, the WeChat channel option may not appear in the Channels settings yet.
|
||||
|
||||
## Supported Platforms
|
||||
|
||||
| Platform | Description |
|
||||
@@ -33,7 +29,7 @@ Channels allow you to connect your LobeHub agents to external messaging platform
|
||||
| [Slack](/docs/usage/channels/slack) | Connect to Slack for channel and direct message conversations |
|
||||
| [Telegram](/docs/usage/channels/telegram) | Connect to Telegram for private and group conversations |
|
||||
| [QQ](/docs/usage/channels/qq) | Connect to QQ for group chats and direct messages |
|
||||
| [WeChat (微信)](/docs/usage/channels/wechat) | Connect to WeChat via iLink Bot for private and group chats (requires an active subscription) |
|
||||
| [WeChat (微信)](/docs/usage/channels/wechat) | Connect to WeChat via iLink Bot for private and group chats |
|
||||
| [Feishu (飞书)](/docs/usage/channels/feishu) | Connect to Feishu for team collaboration (Chinese version) |
|
||||
| [Lark](/docs/usage/channels/lark) | Connect to Lark for team collaboration (international version) |
|
||||
|
||||
@@ -57,8 +53,6 @@ Each channel integration works by linking a bot account on the target platform t
|
||||
- [Feishu (飞书)](/docs/usage/channels/feishu)
|
||||
- [Lark](/docs/usage/channels/lark)
|
||||
|
||||
If you do not see **WeChat** in the channel list, check that your account has an active subscription first.
|
||||
|
||||
## Feature Support
|
||||
|
||||
Text messages are supported across all platforms. Some features vary by platform:
|
||||
|
||||
@@ -20,10 +20,6 @@ tags:
|
||||
|
||||
渠道功能允许您将 LobeHub 代理连接到外部消息平台。一旦连接,用户可以直接在他们已经使用的聊天应用中与您的 AI 助手互动,无需访问 LobeHub。
|
||||
|
||||
> [!NOTE]
|
||||
>
|
||||
> 微信渠道目前需要有效订阅。如果您使用的是没有订阅的社区版,**渠道**设置中可能暂时不会显示微信选项。
|
||||
|
||||
## 支持的平台
|
||||
|
||||
| 平台 | 描述 |
|
||||
@@ -32,7 +28,7 @@ tags:
|
||||
| [Slack](/docs/usage/channels/slack) | 连接到 Slack,用于频道和私信对话 |
|
||||
| [Telegram](/docs/usage/channels/telegram) | 连接到 Telegram,用于私人和群组对话 |
|
||||
| [QQ](/docs/usage/channels/qq) | 连接到 QQ,用于群聊和私信 |
|
||||
| [微信](/docs/usage/channels/wechat) | 通过 iLink Bot 连接到微信,用于私聊和群聊(需要有效订阅) |
|
||||
| [微信](/docs/usage/channels/wechat) | 通过 iLink Bot 连接到微信,用于私聊和群聊 |
|
||||
| [飞书](/docs/usage/channels/feishu) | 连接到飞书,用于团队协作(中国版) |
|
||||
| [Lark](/docs/usage/channels/lark) | 连接到 Lark,用于团队协作(国际版) |
|
||||
|
||||
@@ -56,8 +52,6 @@ tags:
|
||||
- [飞书](/docs/usage/channels/feishu)
|
||||
- [Lark](/docs/usage/channels/lark)
|
||||
|
||||
如果您在渠道列表中看不到 **微信**,请先确认当前账户是否拥有有效订阅。
|
||||
|
||||
## 功能支持
|
||||
|
||||
所有平台均支持文本消息。某些功能因平台而异:
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
"channel.devWebhookProxyUrlHint": "اختياري. عنوان URL لنفق HTTPS لإعادة توجيه طلبات الويب هوك إلى خادم التطوير المحلي.",
|
||||
"channel.disabled": "معطل",
|
||||
"channel.discord.description": "قم بتوصيل هذا المساعد بخادم Discord للدردشة في القنوات والرسائل المباشرة.",
|
||||
"channel.displayToolCalls": "عرض استدعاءات الأدوات",
|
||||
"channel.displayToolCallsHint": "عرض تفاصيل استدعاء الأدوات أثناء استجابات الذكاء الاصطناعي. عند التعطيل، يتم عرض الاستجابة النهائية فقط لتجربة أكثر نظافة.",
|
||||
"channel.dm": "الرسائل المباشرة",
|
||||
"channel.dmEnabled": "تمكين الرسائل المباشرة",
|
||||
"channel.dmEnabledHint": "السماح للروبوت بتلقي الرسائل المباشرة والرد عليها",
|
||||
|
||||
@@ -179,16 +179,10 @@
|
||||
"overview.title": "مختبر التقييم",
|
||||
"run.actions.abort": "إلغاء",
|
||||
"run.actions.abort.confirm": "هل أنت متأكد أنك تريد إلغاء هذا التقييم؟",
|
||||
"run.actions.batchResume": "استئناف دفعة",
|
||||
"run.actions.batchResume.modal.confirm": "استئناف المحدد",
|
||||
"run.actions.batchResume.modal.selectAll": "تحديد الكل",
|
||||
"run.actions.batchResume.modal.selected": "{{count}} محدد",
|
||||
"run.actions.batchResume.modal.title": "استئناف الحالات دفعة واحدة",
|
||||
"run.actions.create": "تقييم جديد",
|
||||
"run.actions.delete": "حذف",
|
||||
"run.actions.delete.confirm": "هل أنت متأكد أنك تريد حذف هذا التقييم؟",
|
||||
"run.actions.edit": "تعديل",
|
||||
"run.actions.resumeCase": "استئناف",
|
||||
"run.actions.retryCase": "إعادة المحاولة",
|
||||
"run.actions.retryErrors": "إعادة المحاولة للأخطاء",
|
||||
"run.actions.retryErrors.confirm": "سيتم إعادة تشغيل جميع الحالات التي تحتوي على أخطاء أو انتهاء المهلة. لن تتأثر الحالات التي نجحت أو فشلت.",
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
"starter.developing": "قريبًا",
|
||||
"starter.image": "صورة",
|
||||
"starter.imageGeneration": "توليد الصور",
|
||||
"starter.videoGeneration": "Seedance 2.0",
|
||||
"starter.videoGeneration": "توليد الفيديو",
|
||||
"starter.write": "كتابة"
|
||||
}
|
||||
|
||||
+19
-35
@@ -66,9 +66,6 @@
|
||||
"HiDream-E1-Full.description": "HiDream-E1-Full هو نموذج مفتوح المصدر لتحرير الصور متعدد الوسائط من HiDream.ai، يعتمد على بنية Diffusion Transformer المتقدمة وفهم قوي للغة (مدمج LLaMA 3.1-8B-Instruct). يدعم إنشاء الصور باستخدام اللغة الطبيعية، ونقل الأنماط، والتحرير المحلي، وإعادة الطلاء، مع فهم وتنفيذ ممتازين للنصوص والصور.",
|
||||
"HiDream-I1-Full.description": "HiDream-I1 هو نموذج جديد مفتوح المصدر لإنشاء الصور تم إصداره من قبل HiDream. مع 17 مليار معلمة (Flux يحتوي على 12 مليار)، يمكنه تقديم جودة صور رائدة في الصناعة في ثوانٍ.",
|
||||
"HunyuanDiT-v1.2-Diffusers-Distilled.description": "hunyuandit-v1.2-distilled هو نموذج تحويل نص إلى صورة خفيف الوزن، محسن عبر التقطير لتوليد صور عالية الجودة بسرعة، ومناسب بشكل خاص للبيئات منخفضة الموارد والتوليد في الوقت الحقيقي.",
|
||||
"I2V-01-Director.description": "تم إصدار نموذج إنشاء الفيديو بمستوى المخرج رسميًا، مما يوفر تحسينات في الالتزام بتعليمات حركة الكاميرا ولغة السرد السينمائي.",
|
||||
"I2V-01-live.description": "أداء محسّن للشخصيات: أكثر استقرارًا، وأكثر سلاسة، وأكثر حيوية.",
|
||||
"I2V-01.description": "النموذج الأساسي لتحويل الصور إلى فيديو من سلسلة 01.",
|
||||
"InstantCharacter.description": "InstantCharacter هو نموذج توليد شخصيات مخصص بدون ضبط من Tencent AI لعام 2025، يهدف إلى توليد شخصيات عالية الدقة ومتسقة عبر السيناريوهات. يمكنه نمذجة شخصية من صورة مرجعية واحدة ونقلها بمرونة عبر الأساليب، الحركات، والخلفيات.",
|
||||
"InternVL2-8B.description": "InternVL2-8B هو نموذج رؤية-لغة قوي يدعم معالجة الصور والنصوص متعددة الوسائط، يتعرف بدقة على محتوى الصور ويولد أوصافًا أو إجابات ذات صلة.",
|
||||
"InternVL2.5-26B.description": "InternVL2.5-26B هو نموذج رؤية-لغة قوي يدعم معالجة الصور والنصوص متعددة الوسائط، يتعرف بدقة على محتوى الصور ويولد أوصافًا أو إجابات ذات صلة.",
|
||||
@@ -90,12 +87,8 @@
|
||||
"Meta-Llama-3.2-3B-Instruct.description": "نموذج لغة صغير متطور يتمتع بفهم لغوي قوي، استدلال ممتاز، وتوليد نصوص عالي الجودة.",
|
||||
"Meta-Llama-3.3-70B-Instruct.description": "Llama 3.3 هو النموذج مفتوح المصدر متعدد اللغات الأكثر تقدمًا من Llama، يقدم أداءً قريبًا من نموذج 405B بتكلفة منخفضة جدًا. يعتمد على بنية Transformer ومحسن باستخدام SFT وRLHF لتحقيق الفائدة والسلامة. النسخة المضبوطة على التعليمات محسنّة للمحادثة متعددة اللغات وتتفوّق على العديد من النماذج المفتوحة والمغلقة في معايير الصناعة. تاريخ التحديث المعرفي: ديسمبر 2023.",
|
||||
"Meta-Llama-4-Maverick-17B-128E-Instruct-FP8.description": "Llama 4 Maverick هو نموذج MoE كبير مع تفعيل خبراء فعال لأداء استدلال قوي.",
|
||||
"MiniMax-Hailuo-02.description": "تم إصدار نموذج إنشاء الفيديو من الجيل التالي، MiniMax Hailuo 02، رسميًا، ويدعم دقة 1080P وإنشاء فيديو لمدة 10 ثوانٍ.",
|
||||
"MiniMax-Hailuo-2.3-Fast.description": "نموذج جديد لإنشاء الفيديو مع تحسينات شاملة في حركة الجسم، والواقعية الفيزيائية، واتباع التعليمات.",
|
||||
"MiniMax-Hailuo-2.3.description": "نموذج جديد لإنشاء الفيديو مع تحسينات شاملة في حركة الجسم، والواقعية الفيزيائية، واتباع التعليمات.",
|
||||
"MiniMax-M1.description": "نموذج استدلال داخلي جديد بسلسلة تفكير تصل إلى 80K ومدخلات حتى 1M، يقدم أداءً مماثلاً لأفضل النماذج العالمية.",
|
||||
"MiniMax-M2-Stable.description": "مصمم لتدفقات العمل البرمجية والوكلاء بكفاءة عالية، مع قدرة تزامن أعلى للاستخدام التجاري.",
|
||||
"MiniMax-M2.1-Lightning.description": "قدرات برمجة متعددة اللغات قوية مع استدلال أسرع وأكثر كفاءة.",
|
||||
"MiniMax-M2.1-highspeed.description": "قدرات برمجة متعددة اللغات قوية، تجربة برمجة مطورة بشكل شامل. أسرع وأكثر كفاءة.",
|
||||
"MiniMax-M2.1.description": "MiniMax-M2.1 هو نموذج مفتوح المصدر رائد من MiniMax، يركز على حل المهام الواقعية المعقدة. يتميز بقدرات برمجة متعددة اللغات والقدرة على أداء المهام المعقدة كوكلاء ذكي.",
|
||||
"MiniMax-M2.5-highspeed.description": "MiniMax M2.5 Highspeed: نفس أداء M2.5 مع استدلال أسرع.",
|
||||
@@ -189,7 +182,6 @@
|
||||
"Qwen3-235B-A22B-Instruct-2507-FP8.description": "Qwen3 235B A22B Instruct 2507 مُحسَّن للاستدلال المتقدم واتباع التعليمات، ويستخدم بنية MoE للحفاظ على كفاءة الاستدلال على نطاق واسع.",
|
||||
"Qwen3-235B.description": "Qwen3-235B-A22B هو نموذج MoE يُقدِّم وضع استدلال هجين، يتيح للمستخدمين التبديل بسلاسة بين التفكير وعدم التفكير. يدعم الفهم والاستدلال عبر 119 لغة ولهجة، ويتمتع بقدرات قوية على استدعاء الأدوات، ويتنافس مع نماذج رائدة مثل DeepSeek R1 وOpenAI o1 وo3-mini وGrok 3 وGoogle Gemini 2.5 Pro في اختبارات القدرات العامة، والبرمجة والرياضيات، والقدرات متعددة اللغات، واستدلال المعرفة.",
|
||||
"Qwen3-32B.description": "Qwen3-32B هو نموذج كثيف يُقدِّم وضع استدلال هجين، يتيح للمستخدمين التبديل بين التفكير وعدم التفكير. بفضل تحسينات في البنية، وبيانات أكثر، وتدريب أفضل، يقدم أداءً مماثلًا لـ Qwen2.5-72B.",
|
||||
"S2V-01.description": "النموذج الأساسي لتحويل المرجع إلى فيديو من سلسلة 01.",
|
||||
"SenseChat-128K.description": "الإصدار الرابع الأساسي مع سياق 128 ألف رمز، قوي في فهم وتوليد النصوص الطويلة.",
|
||||
"SenseChat-32K.description": "الإصدار الرابع الأساسي مع سياق 32 ألف رمز، مرن لمجموعة متنوعة من السيناريوهات.",
|
||||
"SenseChat-5-1202.description": "أحدث إصدار مبني على V5.5، مع تحسينات كبيرة في الأساسيات الصينية/الإنجليزية، والدردشة، ومعرفة العلوم والتكنولوجيا، والمعرفة الإنسانية، والكتابة، والرياضيات/المنطق، والتحكم في الطول.",
|
||||
@@ -212,16 +204,12 @@
|
||||
"Skylark2-pro-4k.description": "الجيل الثاني من نموذج Skylark. يوفر Skylark2-pro دقة أعلى في توليد النصوص المعقدة مثل كتابة المحتوى الاحترافي، وتأليف الروايات، والترجمة عالية الجودة، مع نافذة سياق تصل إلى 4 آلاف رمز.",
|
||||
"Skylark2-pro-character-4k.description": "الجيل الثاني من نموذج Skylark. يتميز Skylark2-pro-character في تقمص الأدوار والدردشة، حيث يطابق التعليمات بأساليب شخصية مميزة وحوار طبيعي، مما يجعله مثاليًا للروبوتات الافتراضية والمساعدين الافتراضيين وخدمة العملاء، مع استجابات سريعة.",
|
||||
"Skylark2-pro-turbo-8k.description": "الجيل الثاني من نموذج Skylark. يوفر Skylark2-pro-turbo-8k استدلالًا أسرع بتكلفة أقل مع نافذة سياق تصل إلى 8 آلاف رمز.",
|
||||
"T2V-01-Director.description": "تم إصدار نموذج إنشاء الفيديو بمستوى المخرج رسميًا، مما يوفر تحسينات في الالتزام بتعليمات حركة الكاميرا ولغة السرد السينمائي.",
|
||||
"T2V-01.description": "النموذج الأساسي لتحويل النص إلى فيديو من سلسلة 01.",
|
||||
"THUDM/GLM-4-32B-0414.description": "GLM-4-32B-0414 هو نموذج GLM من الجيل التالي يحتوي على 32 مليار معامل، ويقارن في الأداء مع نماذج OpenAI GPT وسلسلة DeepSeek V3/R1.",
|
||||
"THUDM/GLM-4-9B-0414.description": "GLM-4-9B-0414 هو نموذج GLM يحتوي على 9 مليارات معامل، ويعتمد على تقنيات GLM-4-32B مع إمكانية نشر أخف. يتميز في توليد الشيفرات، وتصميم الويب، وتوليد SVG، والكتابة المعتمدة على البحث.",
|
||||
"THUDM/GLM-4.1V-9B-Thinking.description": "GLM-4.1V-9B-Thinking هو نموذج مفتوح المصدر من Zhipu AI ومختبر Tsinghua KEG، مصمم للإدراك متعدد الوسائط المعقد. يعتمد على GLM-4-9B-0414، ويضيف التفكير المتسلسل والتعلم المعزز لتحسين الاستدلال عبر الوسائط والثبات بشكل كبير.",
|
||||
"THUDM/GLM-Z1-32B-0414.description": "GLM-Z1-32B-0414 هو نموذج استدلال عميق مبني على GLM-4-32B-0414 باستخدام بيانات بدء باردة وتوسيع التعلم المعزز، وتم تدريبه بشكل إضافي على الرياضيات والبرمجة والمنطق. يُظهر تحسنًا كبيرًا في القدرة على حل المسائل الرياضية والمهام المعقدة مقارنة بالنموذج الأساسي.",
|
||||
"THUDM/GLM-Z1-9B-0414.description": "GLM-Z1-9B-0414 هو نموذج GLM صغير يحتوي على 9 مليارات معامل، يحتفظ بقوة المصدر المفتوح ويقدم أداءً مميزًا. يتميز في الاستدلال الرياضي والمهام العامة، ويتفوق على النماذج المفتوحة من نفس الفئة الحجمية.",
|
||||
"Tongyi-Zhiwen/QwenLong-L1-32B.description": "QwenLong-L1-32B هو أول نموذج استدلال طويل السياق (LRM) تم تدريبه باستخدام التعلم المعزز، مُحسن للاستدلال النصي الطويل. يتيح التوسع التدريجي للسياق عبر التعلم المعزز انتقالًا مستقرًا من السياق القصير إلى الطويل. يتفوق على OpenAI-o3-mini وQwen3-235B-A22B في سبعة معايير استدلال وثائق طويلة السياق، منافسًا Claude-3.7-Sonnet-Thinking. يتميز بقوة خاصة في الرياضيات، المنطق، والاستدلال متعدد الخطوات.",
|
||||
"Wan-AI/Wan2.2-I2V-A14B.description": "Wan2.2-I2V-A14B هو أحد أول نماذج إنشاء الفيديو من الصور (I2V) مفتوحة المصدر التي أطلقتها Wan-AI، وهي مبادرة ذكاء اصطناعي تحت مظلة Alibaba، والتي تعتمد على بنية Mixture of Experts (MoE). يركز النموذج على إنشاء تسلسلات فيديو ديناميكية سلسة وطبيعية من خلال دمج الصور الثابتة مع التعليمات النصية. تكمن الابتكارات الأساسية في بنية MoE: حيث يتولى خبير الضوضاء العالية التعامل مع الهيكل العام في المراحل الأولى من إنشاء الفيديو، بينما يقوم خبير الضوضاء المنخفضة بتحسين التفاصيل الدقيقة في المراحل اللاحقة. يحسن هذا التصميم الأداء العام للنموذج دون زيادة تكلفة الاستدلال. مقارنة بالإصدارات السابقة، تم تدريب Wan2.2 على مجموعة بيانات أكبر بكثير، مما أدى إلى تحسينات ملحوظة في فهم الحركة المعقدة، والأنماط الجمالية، والمحتوى الدلالي. ينتج مقاطع فيديو أكثر استقرارًا ويقلل من حركات الكاميرا غير الواقعية.",
|
||||
"Wan-AI/Wan2.2-T2V-A14B.description": "Wan2.2-T2V-A14B هو أول نموذج إنشاء فيديو مفتوح المصدر أطلقته Alibaba يعتمد على بنية Mixture of Experts (MoE). تم تصميم النموذج لمهام تحويل النص إلى فيديو (T2V) وقادر على إنتاج مقاطع فيديو تصل مدتها إلى 5 ثوانٍ بدقة 480P أو 720P. من خلال تقديم بنية MoE، يزيد النموذج بشكل كبير من سعته الإجمالية مع الحفاظ على تكاليف الاستدلال شبه ثابتة. يتضمن خبير الضوضاء العالية الذي يتعامل مع الهيكل العام في المراحل الأولى من الإنشاء، وخبير الضوضاء المنخفضة الذي يحسن التفاصيل الدقيقة في المراحل اللاحقة من الفيديو. بالإضافة إلى ذلك، يدمج Wan2.2 بيانات جمالية منتقاة بعناية، مع تعليقات تفصيلية عبر أبعاد مثل الإضاءة، والتكوين، والألوان. يتيح ذلك إنشاءًا أكثر دقة وقابلية للتحكم في المرئيات بجودة سينمائية. مقارنة بالإصدارات السابقة، تم تدريب النموذج على مجموعة بيانات أكبر، مما أدى إلى تحسينات كبيرة في التعميم في الحركة، والدلالات، والجماليات، وتحسين التعامل مع التأثيرات الديناميكية المعقدة.",
|
||||
"Yi-34B-Chat.description": "Yi-1.5-34B يحتفظ بقدرات اللغة العامة القوية للسلسلة، ويستخدم تدريبًا تدريجيًا على 500 مليار رمز عالي الجودة لتحسين كبير في المنطق الرياضي والبرمجة.",
|
||||
"abab5.5-chat.description": "مصمم لسيناريوهات الإنتاجية، مع قدرة على التعامل مع المهام المعقدة وتوليد نصوص فعالة للاستخدام المهني.",
|
||||
"abab5.5s-chat.description": "مصمم للدردشة بشخصيات صينية، ويقدم حوارات صينية عالية الجودة لمجموعة متنوعة من التطبيقات.",
|
||||
@@ -310,18 +298,18 @@
|
||||
"claude-3-haiku-20240307.description": "Claude 3 Haiku هو أسرع وأصغر نموذج من Anthropic، مصمم لتقديم استجابات شبه فورية بأداء سريع ودقيق.",
|
||||
"claude-3-opus-20240229.description": "Claude 3 Opus هو أقوى نموذج من Anthropic للمهام المعقدة، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم.",
|
||||
"claude-3-sonnet-20240229.description": "Claude 3 Sonnet يوازن بين الذكاء والسرعة لتلبية احتياجات المؤسسات، ويوفر فائدة عالية بتكلفة أقل ونشر موثوق على نطاق واسع.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 هو النموذج الأسرع والأكثر ذكاءً من Anthropic، يتميز بسرعة البرق وقدرات تفكير ممتدة.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 هو أسرع وأذكى نموذج Haiku من Anthropic، يتميز بسرعة البرق وقدرات استدلال موسعة.",
|
||||
"claude-haiku-4.5.description": "Claude Haiku 4.5 هو نموذج Haiku الأسرع والأذكى من Anthropic، يتميز بسرعة البرق وقدرات استدلال موسعة.",
|
||||
"claude-opus-4-1-20250805-thinking.description": "Claude Opus 4.1 Thinking هو إصدار متقدم يمكنه عرض عملية تفكيره.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، والذكاء، والطلاقة، والفهم.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 هو النموذج الأكثر قوة من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، والذكاء، والطلاقة، والفهم.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 هو أحدث وأقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، الذكاء، الطلاقة، والفهم.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 هو أقوى نموذج من Anthropic للمهام المعقدة للغاية، يتميز بالأداء العالي، الذكاء، الطلاقة، والاستيعاب.",
|
||||
"claude-opus-4-5-20251101.description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الاستثنائي والأداء القابل للتوسع، مثالي للمهام المعقدة التي تتطلب استجابات عالية الجودة وتفكير متقدم.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 هو النموذج الأكثر ذكاءً من Anthropic لبناء الوكلاء والبرمجة.",
|
||||
"claude-opus-4.5.description": "Claude Opus 4.5 هو النموذج الرائد من Anthropic، يجمع بين الذكاء الفائق والأداء القابل للتوسع لمهام الاستدلال المعقدة وعالية الجودة.",
|
||||
"claude-opus-4.6-fast.description": "Claude Opus 4.6 هو النموذج الأكثر ذكاءً من Anthropic لبناء الوكلاء والبرمجة.",
|
||||
"claude-opus-4.6.description": "Claude Opus 4.6 هو النموذج الأكثر ذكاءً من Anthropic لبناء الوكلاء والبرمجة.",
|
||||
"claude-sonnet-4-20250514-thinking.description": "Claude Sonnet 4 Thinking يمكنه تقديم استجابات شبه فورية أو تفكير متسلسل مرئي.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 هو النموذج الأكثر ذكاءً من Anthropic حتى الآن، يقدم استجابات شبه فورية أو تفكيرًا ممتدًا خطوة بخطوة مع تحكم دقيق للمستخدمين عبر واجهة API.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 يمكنه إنتاج استجابات شبه فورية أو تفكير ممتد خطوة بخطوة مع عملية مرئية.",
|
||||
"claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 هو النموذج الأكثر ذكاءً من Anthropic حتى الآن.",
|
||||
"claude-sonnet-4-6.description": "Claude Sonnet 4.6 هو أفضل مزيج من السرعة والذكاء من Anthropic.",
|
||||
"claude-sonnet-4.5.description": "Claude Sonnet 4.5 هو النموذج الأكثر ذكاءً من Anthropic حتى الآن.",
|
||||
@@ -340,9 +328,6 @@
|
||||
"codestral-latest.description": "Codestral هو أحدث نموذج برمجة لدينا؛ الإصدار v2 (يناير 2025) يستهدف المهام منخفضة التأخير وعالية التكرار مثل FIM، تصحيح الشيفرة، وتوليد الاختبارات.",
|
||||
"codestral.description": "Codestral هو أول نموذج شيفرة من Mistral AI، يقدم دعمًا قويًا لتوليد الشيفرة.",
|
||||
"cogito-2.1:671b.description": "Cogito v2.1 671B هو نموذج مفتوح المصدر من الولايات المتحدة للاستخدام التجاري، يتمتع بأداء ينافس النماذج الرائدة، وكفاءة أعلى في الاستدلال على الرموز، وسياق طويل يصل إلى 128 ألف رمز، وقدرات قوية بشكل عام.",
|
||||
"cogvideox-2.description": "CogVideoX-2 هو نموذج الجيل الجديد لإنشاء الفيديو من Zhipu، مع تحسين قدرات تحويل الصور إلى فيديو بنسبة 38%. يقدم تحسينات كبيرة في التعامل مع الحركة واسعة النطاق، والاستقرار البصري، واتباع التعليمات، والأسلوب الفني، والجماليات البصرية العامة.",
|
||||
"cogvideox-3.description": "CogVideoX-3 يضيف ميزة إنشاء الإطارات الأولى والأخيرة، مما يحسن بشكل كبير من الاستقرار البصري والوضوح. يتيح حركة سلسة وطبيعية واسعة النطاق للموضوعات، ويوفر اتباعًا أفضل للتعليمات ومحاكاة فيزيائية أكثر واقعية، ويعزز الأداء في المشاهد الواقعية عالية الدقة والمشاهد ثلاثية الأبعاد.",
|
||||
"cogvideox-flash.description": "CogVideoX-Flash هو نموذج إنشاء فيديو مجاني أطلقته Zhipu، قادر على إنشاء مقاطع فيديو تتبع تعليمات المستخدم مع تحقيق درجات جودة جمالية أعلى.",
|
||||
"cogview-3-flash.description": "CogView-3-Flash هو نموذج مجاني لتوليد الصور أطلقته Zhipu. يقوم بتوليد صور تتماشى مع تعليمات المستخدم مع تحقيق درجات جودة جمالية أعلى. يُستخدم CogView-3-Flash بشكل أساسي في مجالات مثل الإبداع الفني، مرجع التصميم، تطوير الألعاب، والواقع الافتراضي، مما يساعد المستخدمين على تحويل أوصاف النصوص إلى صور بسرعة.",
|
||||
"cogview-4.description": "CogView-4 هو أول نموذج مفتوح المصدر لتحويل النص إلى صورة من Zhipu يدعم توليد الحروف الصينية. يعزز الفهم الدلالي، جودة الصور، وعرض النصوص الصينية/الإنجليزية، ويدعم مطالبات ثنائية اللغة بأي طول، ويمكنه توليد صور بأي دقة ضمن النطاقات المحددة.",
|
||||
"cohere-command-r-plus.description": "Command R+ هو نموذج متقدم محسّن لاسترجاع المعرفة (RAG) مصمم لأعباء العمل المؤسسية.",
|
||||
@@ -397,7 +382,7 @@
|
||||
"deepseek-ai/deepseek-v3.1-terminus.description": "DeepSeek V3.1 هو نموذج تفكير من الجيل التالي يتمتع بقدرات أقوى في التفكير المعقد وسلسلة التفكير لمهام التحليل العميق.",
|
||||
"deepseek-ai/deepseek-v3.1.description": "DeepSeek V3.1 هو نموذج تفكير من الجيل التالي يتمتع بقدرات أقوى في التفكير المعقد وسلسلة التفكير لمهام التحليل العميق.",
|
||||
"deepseek-ai/deepseek-v3.2.description": "DeepSeek V3.2 هو نموذج استدلال من الجيل التالي يتميز بقدرات استدلال معقدة وسلسلة التفكير.",
|
||||
"deepseek-chat.description": "DeepSeek V3.2 يوازن بين التفكير وطول المخرجات لمهام الأسئلة والأجوبة اليومية والمهام الوكيلة. تصل المعايير العامة إلى مستويات GPT-5، وهو الأول الذي يدمج التفكير في استخدام الأدوات، مما يؤدي إلى تقييمات وكلاء مفتوحة المصدر.",
|
||||
"deepseek-chat.description": "نموذج مفتوح المصدر جديد يجمع بين القدرات العامة والبرمجية. يحافظ على حوار النموذج العام وقوة البرمجة للنموذج البرمجي، مع تحسين توافق التفضيلات. كما يحسن DeepSeek-V2.5 الكتابة واتباع التعليمات.",
|
||||
"deepseek-coder-33B-instruct.description": "DeepSeek Coder 33B هو نموذج لغة برمجية تم تدريبه على 2 تريليون رمز (87٪ كود، 13٪ نص صيني/إنجليزي). يقدم نافذة سياق 16K ومهام الإكمال في المنتصف، ويوفر إكمال كود على مستوى المشاريع وملء مقاطع الكود.",
|
||||
"deepseek-coder-v2.description": "DeepSeek Coder V2 هو نموذج كود MoE مفتوح المصدر يتميز بأداء قوي في مهام البرمجة، ويضاهي GPT-4 Turbo.",
|
||||
"deepseek-coder-v2:236b.description": "DeepSeek Coder V2 هو نموذج كود MoE مفتوح المصدر يتميز بأداء قوي في مهام البرمجة، ويضاهي GPT-4 Turbo.",
|
||||
@@ -420,7 +405,7 @@
|
||||
"deepseek-r1-fast-online.description": "الإصدار الكامل السريع من DeepSeek R1 مع بحث ويب في الوقت الحقيقي، يجمع بين قدرات بحجم 671B واستجابة أسرع.",
|
||||
"deepseek-r1-online.description": "الإصدار الكامل من DeepSeek R1 مع 671 مليار معلمة وبحث ويب في الوقت الحقيقي، يوفر فهمًا وتوليدًا أقوى.",
|
||||
"deepseek-r1.description": "يستخدم DeepSeek-R1 بيانات البداية الباردة قبل التعلم المعزز ويؤدي أداءً مماثلًا لـ OpenAI-o1 في الرياضيات، والبرمجة، والتفكير.",
|
||||
"deepseek-reasoner.description": "DeepSeek V3.2 Thinking هو نموذج تفكير عميق يولد سلسلة من الأفكار قبل المخرجات لتحقيق دقة أعلى، مع نتائج تنافسية عالية وقدرات تفكير قابلة للمقارنة مع Gemini-3.0-Pro.",
|
||||
"deepseek-reasoner.description": "وضع التفكير في DeepSeek V3.2 ينتج سلسلة من الأفكار قبل الإجابة النهائية لتحسين الدقة.",
|
||||
"deepseek-v2.description": "DeepSeek V2 هو نموذج MoE فعال لمعالجة منخفضة التكلفة.",
|
||||
"deepseek-v2:236b.description": "DeepSeek V2 236B هو نموذج DeepSeek الموجه للبرمجة مع قدرات قوية في توليد الكود.",
|
||||
"deepseek-v3-0324.description": "DeepSeek-V3-0324 هو نموذج MoE يحتوي على 671 مليار معلمة يتميز بقوة في البرمجة، والقدرات التقنية، وفهم السياق، والتعامل مع النصوص الطويلة.",
|
||||
@@ -431,7 +416,6 @@
|
||||
"deepseek-v3.2-exp.description": "deepseek-v3.2-exp يقدم انتباهاً متفرقاً لتحسين كفاءة التدريب والاستدلال على النصوص الطويلة، بسعر أقل من deepseek-v3.1.",
|
||||
"deepseek-v3.2-speciale.description": "في المهام شديدة التعقيد، يتفوق نموذج Speciale بشكل كبير على النسخة القياسية، ولكنه يستهلك عددًا كبيرًا من الرموز ويتكبد تكاليف أعلى. حاليًا، يتم استخدام DeepSeek-V3.2-Speciale للأبحاث فقط، ولا يدعم استدعاء الأدوات، ولم يتم تحسينه بشكل خاص للمحادثات اليومية أو مهام الكتابة.",
|
||||
"deepseek-v3.2-think.description": "DeepSeek V3.2 Think هو نموذج تفكير عميق كامل يتميز باستدلال طويل السلسلة أقوى.",
|
||||
"deepseek-v3.2-thinking.description": "DeepSeek-V3.2 Thinking هو النسخة المخصصة لمهام التفكير من DeepSeek-V3.2.",
|
||||
"deepseek-v3.2.description": "DeepSeek-V3.2 هو أحدث نموذج برمجة من DeepSeek مع قدرات استدلال قوية.",
|
||||
"deepseek-v3.description": "DeepSeek-V3 هو نموذج MoE قوي بإجمالي 671 مليار معلمة و37 مليار معلمة نشطة لكل رمز.",
|
||||
"deepseek-vl2-small.description": "DeepSeek VL2 Small هو إصدار متعدد الوسائط خفيف الوزن للاستخدام في البيئات ذات الموارد المحدودة أو التزامن العالي.",
|
||||
@@ -487,8 +471,6 @@
|
||||
"doubao-seedance-1-0-pro-250528.description": "Seedance 1.0 Pro هو نموذج أساسي لتوليد الفيديو يدعم سرد القصص متعدد اللقطات. يقدم أداءً قويًا عبر أبعاد متعددة. يحقق النموذج تقدمًا في فهم المعاني واتباع التعليمات، مما يمكنه من إنشاء مقاطع فيديو عالية الوضوح بدقة 1080P مع حركة سلسة، تفاصيل غنية، أنماط متنوعة، وجماليات بصرية بمستوى سينمائي.",
|
||||
"doubao-seedance-1-0-pro-fast-251015.description": "Seedance 1.0 Pro Fast هو نموذج شامل مصمم لتقليل التكلفة مع تحسين الأداء، محققًا توازنًا ممتازًا بين جودة توليد الفيديو، السرعة، والسعر. يرث النموذج نقاط القوة الأساسية لـ Seedance 1.0 Pro، بينما يقدم سرعات توليد أسرع وتسعيرًا أكثر تنافسية، مما يوفر للمبدعين تحسينًا مزدوجًا للكفاءة والتكلفة.",
|
||||
"doubao-seedance-1-5-pro-251215.description": "Seedance 1.5 Pro من ByteDance يدعم تحويل النص إلى فيديو، الصورة إلى فيديو (الإطار الأول، الإطار الأول + الأخير)، وتوليد الصوت المتزامن مع المرئيات.",
|
||||
"doubao-seedance-2-0-260128.description": "Seedance 2.0 من ByteDance هو النموذج الأقوى لإنشاء الفيديو، يدعم إنشاء الفيديو متعدد الوسائط، وتحرير الفيديو، وتمديد الفيديو، وتحويل النص إلى فيديو، وتحويل الصور إلى فيديو مع صوت متزامن.",
|
||||
"doubao-seedance-2-0-fast-260128.description": "Seedance 2.0 Fast من ByteDance يقدم نفس القدرات مثل Seedance 2.0 مع سرعات إنشاء أسرع وسعر أكثر تنافسية.",
|
||||
"doubao-seededit-3-0-i2i-250628.description": "نموذج الصور Doubao من ByteDance Seed يدعم إدخال النصوص والصور مع توليد صور عالية الجودة وقابلة للتحكم بدرجة كبيرة. يدعم تحرير الصور الموجه بالنص، مع أحجام إخراج تتراوح بين 512 و1536 على الجانب الطويل.",
|
||||
"doubao-seedream-3-0-t2i-250415.description": "Seedream 3.0 هو نموذج توليد صور من ByteDance Seed، يدعم إدخال النصوص والصور مع توليد صور عالية الجودة وقابلة للتحكم بدرجة كبيرة. يُولّد الصور من التعليمات النصية.",
|
||||
"doubao-seedream-4-0-250828.description": "Seedream 4.0 هو نموذج توليد صور من ByteDance Seed، يدعم إدخال النصوص والصور مع توليد صور عالية الجودة وقابلة للتحكم بدرجة كبيرة. يُولّد الصور من التعليمات النصية.",
|
||||
@@ -523,8 +505,7 @@
|
||||
"ernie-x1-turbo-32k.description": "ERNIE X1 Turbo 32K هو نموذج تفكير سريع بسياق 32K للاستدلال المعقد والدردشة متعددة الأدوار.",
|
||||
"ernie-x1.1-preview.description": "معاينة ERNIE X1.1 هو نموذج تفكير مخصص للتقييم والاختبار.",
|
||||
"ernie-x1.1.description": "ERNIE X1.1 هو نموذج تفكير تجريبي للتقييم والاختبار.",
|
||||
"fal-ai/bytedance/seedream/v4.5.description": "Seedream 4.5، الذي تم تطويره بواسطة فريق ByteDance Seed، يدعم تحرير الصور المتعددة والتكوين. يتميز باتساق الموضوع المحسن، واتباع التعليمات بدقة، وفهم المنطق المكاني، والتعبير الجمالي، وتخطيط الملصقات وتصميم الشعارات مع تقديم نصوص وصور عالية الدقة.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0، الذي تم تطويره بواسطة ByteDance Seed، يدعم إدخال النصوص والصور لإنشاء صور عالية الجودة وقابلة للتحكم بدرجة عالية من التعليمات.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0 هو نموذج توليد الصور من ByteDance Seed، يدعم إدخال النصوص والصور مع توليد صور عالية الجودة وقابلة للتحكم بدرجة كبيرة. يقوم بتوليد الصور من التعليمات النصية.",
|
||||
"fal-ai/flux-kontext/dev.description": "نموذج FLUX.1 يركز على تحرير الصور، ويدعم إدخال النصوص والصور.",
|
||||
"fal-ai/flux-pro/kontext.description": "FLUX.1 Kontext [pro] يقبل النصوص وصور مرجعية كمدخلات، مما يتيح تعديلات محلية مستهدفة وتحولات معقدة في المشهد العام.",
|
||||
"fal-ai/flux/krea.description": "Flux Krea [dev] هو نموذج لتوليد الصور يتميز بميول جمالية نحو صور أكثر واقعية وطبيعية.",
|
||||
@@ -532,8 +513,8 @@
|
||||
"fal-ai/hunyuan-image/v3.description": "نموذج قوي لتوليد الصور متعدد الوسائط أصلي.",
|
||||
"fal-ai/imagen4/preview.description": "نموذج عالي الجودة لتوليد الصور من Google.",
|
||||
"fal-ai/nano-banana.description": "Nano Banana هو أحدث وأسرع وأكثر نماذج Google كفاءةً لتوليد وتحرير الصور من خلال المحادثة.",
|
||||
"fal-ai/qwen-image-edit.description": "نموذج تحرير الصور الاحترافي من فريق Qwen، يدعم التعديلات الدلالية والمظهرية، وتحرير النصوص الدقيقة باللغتين الصينية والإنجليزية، ونقل الأنماط، والتدوير، والمزيد.",
|
||||
"fal-ai/qwen-image.description": "نموذج إنشاء الصور القوي من فريق Qwen مع قدرات قوية في عرض النصوص الصينية وأنماط بصرية متنوعة.",
|
||||
"fal-ai/qwen-image-edit.description": "نموذج تحرير الصور الاحترافي من فريق Qwen يدعم التعديلات الدلالية والمظهرية، ويحرر النصوص الصينية والإنجليزية بدقة، ويمكّن من تعديلات عالية الجودة مثل نقل الأنماط وتدوير الكائنات.",
|
||||
"fal-ai/qwen-image.description": "نموذج قوي لتوليد الصور من فريق Qwen يتميز بعرض نصوص صينية مبهرة وأنماط بصرية متنوعة.",
|
||||
"flux-1-schnell.description": "نموذج تحويل النص إلى صورة يحتوي على 12 مليار معلمة من Black Forest Labs يستخدم تقنيات تقطير الانتشار العدائي الكامن لتوليد صور عالية الجودة في 1-4 خطوات. ينافس البدائل المغلقة ومتاح بموجب ترخيص Apache-2.0 للاستخدام الشخصي والبحثي والتجاري.",
|
||||
"flux-dev.description": "FLUX.1 [dev] هو نموذج مفتوح الأوزان ومقطر للاستخدام غير التجاري. يحافظ على جودة صور قريبة من المستوى الاحترافي واتباع التعليمات مع كفاءة تشغيل أعلى مقارنة بالنماذج القياسية من نفس الحجم.",
|
||||
"flux-kontext-max.description": "توليد وتحرير صور سياقية متقدمة، تجمع بين النصوص والصور لتحقيق نتائج دقيقة ومتسقة.",
|
||||
@@ -560,6 +541,7 @@
|
||||
"gemini-1.5-pro-exp-0827.description": "Gemini 1.5 Pro 0827 يطبق أحدث التحسينات لمعالجة متعددة الوسائط أكثر كفاءة.",
|
||||
"gemini-1.5-pro-latest.description": "Gemini 1.5 Pro يدعم ما يصل إلى 2 مليون رمز، وهو نموذج متعدد الوسائط متوسط الحجم مثالي للمهام المعقدة.",
|
||||
"gemini-2.0-flash-001.description": "Gemini 2.0 Flash يقدم ميزات الجيل التالي بما في ذلك السرعة الاستثنائية، واستخدام الأدوات الأصلية، والتوليد متعدد الوسائط، وسياق يصل إلى مليون رمز.",
|
||||
"gemini-2.0-flash-exp-image-generation.description": "نموذج تجريبي من Gemini 2.0 Flash يدعم توليد الصور.",
|
||||
"gemini-2.0-flash-lite-001.description": "إصدار من Gemini 2.0 Flash محسن لتقليل التكلفة وتقليل التأخير.",
|
||||
"gemini-2.0-flash-lite.description": "إصدار من Gemini 2.0 Flash محسن لتقليل التكلفة وتقليل التأخير.",
|
||||
"gemini-2.0-flash.description": "Gemini 2.0 Flash يقدم ميزات الجيل التالي بما في ذلك السرعة الاستثنائية، واستخدام الأدوات الأصلية، والتوليد متعدد الوسائط، وسياق يصل إلى مليون رمز.",
|
||||
@@ -572,13 +554,14 @@
|
||||
"gemini-2.5-flash.description": "Gemini 2.5 Flash هو أفضل نموذج من Google من حيث القيمة مع قدرات كاملة.",
|
||||
"gemini-2.5-pro-preview-03-25.description": "Gemini 2.5 Pro Preview هو أكثر نماذج Google تقدمًا في الاستدلال، قادر على تحليل الشيفرات والرياضيات ومشاكل العلوم، وتحليل مجموعات البيانات الكبيرة وقواعد الشيفرة والمستندات ضمن سياق طويل.",
|
||||
"gemini-2.5-pro-preview-05-06.description": "Gemini 2.5 Pro Preview هو أكثر نماذج Google تقدمًا في الاستدلال، قادر على تحليل الشيفرات والرياضيات ومشاكل العلوم، وتحليل مجموعات البيانات الكبيرة وقواعد الشيفرة والمستندات ضمن سياق طويل.",
|
||||
"gemini-2.5-pro-preview-06-05.description": "Gemini 2.5 Pro Preview هو أكثر نماذج Google تقدمًا في الاستدلال، قادر على تحليل الشيفرات والرياضيات ومشاكل العلوم، وتحليل مجموعات البيانات الكبيرة وقواعد الشيفرة والمستندات ضمن سياق طويل.",
|
||||
"gemini-2.5-pro.description": "Gemini 2.5 Pro هو النموذج الرائد من Google في مجال الاستدلال، يدعم السياق الطويل للمهام المعقدة.",
|
||||
"gemini-3-flash-preview.description": "Gemini 3 Flash هو أذكى نموذج تم تصميمه للسرعة، يجمع بين الذكاء المتقدم وأساس بحث ممتاز.",
|
||||
"gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم المحادثة متعددة الوسائط.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج إنشاء الصور من Google ويدعم أيضًا الدردشة متعددة الوسائط.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google ويدعم أيضًا الدردشة متعددة الوسائط.",
|
||||
"gemini-3-pro-preview.description": "Gemini 3 Pro هو أقوى نموذج من Google للوكيل الذكي والبرمجة الإبداعية، يقدم تفاعلاً أعمق وصورًا أغنى مع استدلال متقدم.",
|
||||
"gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image (Nano Banana 2) يقدم جودة صور احترافية بسرعة فائقة مع دعم الدردشة متعددة الوسائط.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) يقدم جودة صور بمستوى احترافي بسرعة Flash مع دعم الدردشة متعددة الوسائط.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) هو أسرع نموذج توليد صور أصلي من Google مع دعم التفكير، وتوليد الصور الحواري، والتحرير.",
|
||||
"gemini-3.1-flash-lite-preview.description": "Gemini 3.1 Flash-Lite Preview هو النموذج الأكثر كفاءة من حيث التكلفة من Google، مُحسّن للمهام الوكيلة ذات الحجم الكبير، الترجمة، ومعالجة البيانات.",
|
||||
"gemini-3.1-pro-preview.description": "Gemini 3.1 Pro Preview يحسن من Gemini 3 Pro مع قدرات استدلال محسّنة ويضيف دعم مستوى التفكير المتوسط.",
|
||||
"gemini-flash-latest.description": "أحدث إصدار من Gemini Flash",
|
||||
@@ -622,9 +605,7 @@
|
||||
"glm-4v-plus-0111.description": "GLM-4V-Plus يفهم الفيديو والصور المتعددة، مما يجعله مناسبًا للمهام متعددة الوسائط.",
|
||||
"glm-4v-plus.description": "GLM-4V-Plus يفهم الفيديو والصور المتعددة، مما يجعله مناسبًا للمهام متعددة الوسائط.",
|
||||
"glm-4v.description": "GLM-4V يقدم فهمًا قويًا للصور واستدلالًا عبر المهام البصرية.",
|
||||
"glm-5-turbo.description": "GLM-5-Turbo هو نموذج أساسي تم تحسينه بعمق للسيناريوهات الوكيلة. تم تحسينه خصيصًا لمتطلبات المهام الوكيلة الأساسية من مرحلة التدريب، مما يعزز القدرات الرئيسية مثل استدعاء الأدوات، واتباع الأوامر، والتنفيذ طويل السلسلة. مثالي لبناء مساعدات وكيلة عالية الأداء.",
|
||||
"glm-5.description": "سلسلة GLM هي نموذج استدلال هجين من Zhipu AI مصمم للوكلاء، مع أوضاع تفكير وغير تفكير.",
|
||||
"glm-5v-turbo.description": "GLM-5V-Turbo هو أول نموذج أساسي متعدد الوسائط للبرمجة من Zhipu، مصمم لمهام البرمجة البصرية. يمكنه معالجة المدخلات متعددة الوسائط مثل الصور، والفيديو، والنصوص بشكل أصلي، بينما يتفوق في التخطيط طويل الأفق، والبرمجة المعقدة، وتنفيذ الإجراءات. مدمج بعمق مع سير عمل الوكلاء، يمكنه التعاون بسلاسة مع وكلاء مثل Claude Code وOpenClaw لإكمال دورة مغلقة كاملة من \"فهم البيئة → تخطيط الإجراءات → تنفيذ المهام.\"",
|
||||
"glm-image.description": "GLM-Image هو نموذج توليد الصور الرائد الجديد من Zhipu. تم تدريب النموذج بشكل كامل على رقائق محلية الصنع ويتبنى بنية هجينة أصلية تجمع بين النمذجة التلقائية ومُفكك الانتشار. يتيح هذا التصميم فهمًا قويًا للتعليمات العامة إلى جانب تقديم تفاصيل دقيقة محليًا، متغلبًا على التحديات الطويلة الأمد في توليد محتوى غني بالمعلومات مثل الملصقات، العروض التقديمية، والمخططات التعليمية. يمثل هذا استكشافًا مهمًا نحو جيل جديد من نماذج \"التوليد الإدراكي\"، كما يتجلى في نموذج Nano Banana Pro.",
|
||||
"glm-z1-air.description": "نموذج استدلال يتمتع بقدرات استنتاج قوية للمهام التي تتطلب استدلالًا عميقًا.",
|
||||
"glm-z1-airx.description": "استدلال فائق السرعة مع جودة استدلال عالية.",
|
||||
@@ -640,6 +621,7 @@
|
||||
"google/gemini-2.0-flash-lite-001.description": "Gemini 2.0 Flash Lite هو إصدار خفيف من Gemini مع تعطيل التفكير افتراضيًا لتحسين زمن الاستجابة والتكلفة، ويمكن تفعيله عبر المعلمات.",
|
||||
"google/gemini-2.0-flash-lite.description": "Gemini 2.0 Flash Lite يقدم ميزات الجيل التالي بما في ذلك السرعة الفائقة، استخدام الأدوات المدمجة، التوليد متعدد الوسائط، ونافذة سياق تصل إلى مليون رمز.",
|
||||
"google/gemini-2.0-flash.description": "Gemini 2.0 Flash هو نموذج استدلال عالي الأداء من Google للمهام متعددة الوسائط الممتدة.",
|
||||
"google/gemini-2.5-flash-image-preview.description": "نموذج Gemini 2.5 Flash التجريبي مع دعم توليد الصور.",
|
||||
"google/gemini-2.5-flash-image.description": "Gemini 2.5 Flash Image (Nano Banana) هو نموذج توليد الصور من Google مع دعم المحادثة متعددة الوسائط.",
|
||||
"google/gemini-2.5-flash-lite.description": "Gemini 2.5 Flash Lite هو إصدار خفيف من Gemini 2.5 محسّن لزمن الاستجابة والتكلفة، مناسب لسيناريوهات الإنتاجية العالية.",
|
||||
"google/gemini-2.5-flash-preview.description": "Gemini 2.5 Flash هو النموذج الرائد الأكثر تقدمًا من Google، مصمم لمهام الاستدلال المتقدم، البرمجة، الرياضيات، والعلوم. يتضمن ميزة \"التفكير\" المدمجة لتقديم استجابات أكثر دقة ومعالجة سياق أدق.\n\nملاحظة: يحتوي هذا النموذج على نسختين — مع التفكير وبدونه. تختلف أسعار الإخراج بشكل كبير حسب ما إذا كان التفكير مفعلاً. إذا اخترت النسخة القياسية (بدون اللاحقة \":thinking\")، سيتجنب النموذج توليد رموز التفكير.\n\nلاستخدام التفكير واستلام رموز التفكير، يجب اختيار النسخة \":thinking\"، والتي تتطلب تكلفة أعلى.\n\nيمكن أيضًا ضبط Gemini 2.5 Flash عبر معلمة \"الحد الأقصى لرموز الاستدلال\" كما هو موضح في الوثائق (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning).",
|
||||
@@ -649,7 +631,6 @@
|
||||
"google/gemini-2.5-pro.description": "Gemini 2.5 Pro هو النموذج الرائد من Google للاستدلال مع دعم السياق الطويل للمهام المعقدة.",
|
||||
"google/gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) هو نموذج توليد الصور من Google مع دعم المحادثة متعددة الوسائط.",
|
||||
"google/gemini-3-pro-preview.description": "Gemini 3 Pro هو نموذج الاستدلال متعدد الوسائط من الجيل التالي في عائلة Gemini، يفهم النصوص، الصوت، الصور، والفيديو، ويتعامل مع المهام المعقدة وقواعد الشيفرة الكبيرة.",
|
||||
"google/gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image Preview، المعروف أيضًا باسم \"Nano Banana 2\"، هو أحدث نموذج من Google لإنشاء الصور وتحريرها، يقدم جودة بصرية بمستوى احترافي بسرعة Flash. يجمع بين فهم السياق المتقدم والاستدلال السريع والفعال من حيث التكلفة، مما يجعل إنشاء الصور المعقدة والتعديلات التكرارية أكثر سهولة بشكل كبير.",
|
||||
"google/gemini-embedding-001.description": "نموذج تضمين متقدم يتميز بأداء قوي في مهام اللغة الإنجليزية، ومتعددة اللغات، والبرمجة.",
|
||||
"google/gemini-flash-1.5.description": "يوفر Gemini 1.5 Flash معالجة متعددة الوسائط محسّنة لمجموعة من المهام المعقدة.",
|
||||
"google/gemini-pro-1.5.description": "يجمع Gemini 1.5 Pro بين أحدث التحسينات لمعالجة أكثر كفاءة للبيانات متعددة الوسائط.",
|
||||
@@ -745,7 +726,6 @@
|
||||
"grok-code-fast-1.description": "يسعدنا إطلاق grok-code-fast-1، نموذج استدلال سريع وفعال من حيث التكلفة يتفوق في البرمجة التلقائية.",
|
||||
"grok-imagine-image-pro.description": "إنشاء صور من مطالبات نصية، تحرير الصور الموجودة باستخدام اللغة الطبيعية، أو تحسين الصور بشكل تكراري من خلال محادثات متعددة الأدوار.",
|
||||
"grok-imagine-image.description": "إنشاء صور من مطالبات نصية، تحرير الصور الموجودة باستخدام اللغة الطبيعية، أو تحسين الصور بشكل تكراري من خلال محادثات متعددة الأدوار.",
|
||||
"grok-imagine-video.description": "إنشاء فيديو متقدم عبر الجودة والتكلفة والكمون.",
|
||||
"groq/compound-mini.description": "Compound-mini هو نظام ذكاء اصطناعي مركب مدعوم بنماذج متاحة علنًا على GroqCloud، يستخدم الأدوات بذكاء وانتقائية للإجابة على استفسارات المستخدمين.",
|
||||
"groq/compound.description": "Compound هو نظام ذكاء اصطناعي مركب مدعوم بعدة نماذج متاحة علنًا على GroqCloud، يستخدم الأدوات بذكاء وانتقائية للإجابة على استفسارات المستخدمين.",
|
||||
"gryphe/mythomax-l2-13b.description": "MythoMax L2 13B هو نموذج لغوي إبداعي وذكي مدمج من عدة نماذج رائدة.",
|
||||
@@ -811,7 +791,7 @@
|
||||
"kimi-k2-0905-preview.description": "kimi-k2-0905-preview يوفر نافذة سياق 256k، برمجة وكيلة أقوى، جودة أفضل لرموز الواجهة الأمامية، وفهم سياقي محسن.",
|
||||
"kimi-k2-instruct.description": "Kimi K2 Instruct هو النموذج الرسمي للاستدلال من Kimi مع سياق طويل للبرمجة، الأسئلة والأجوبة، والمزيد.",
|
||||
"kimi-k2-thinking-turbo.description": "إصدار K2 عالي السرعة للتفكير الطويل مع نافذة سياق 256k، استدلال عميق قوي، وإخراج 60–100 رمز/ثانية.",
|
||||
"kimi-k2-thinking.description": "Kimi-K2 هو نموذج أساسي ببنية MoE أطلقته Moonshot AI بقدرات فائقة في البرمجة والوكلاء. يحتوي على إجمالي 1T من المعلمات و32B من المعلمات النشطة. في اختبارات الأداء المعيارية في الفئات الرئيسية مثل التفكير العام، والبرمجة، والرياضيات، والوكلاء، يتفوق أداء نموذج K2 على النماذج المفتوحة المصدر الرئيسية الأخرى.",
|
||||
"kimi-k2-thinking.description": "kimi-k2-thinking هو نموذج تفكير من Moonshot AI يتمتع بقدرات عامة في الوكالة والاستدلال. يتفوق في الاستدلال العميق ويمكنه حل المشكلات الصعبة باستخدام أدوات متعددة الخطوات.",
|
||||
"kimi-k2-turbo-preview.description": "kimi-k2 هو نموذج MoE أساسي يتمتع بقدرات قوية في البرمجة والوكالة (1 تريليون معلمة إجمالية، 32 مليار نشطة)، ويتفوق على النماذج المفتوحة السائدة في اختبارات الاستدلال، البرمجة، الرياضيات، والوكالة.",
|
||||
"kimi-k2.5.description": "Kimi K2.5 هو النموذج الأكثر تنوعًا من Kimi حتى الآن، يتميز ببنية متعددة الوسائط تدعم المدخلات البصرية والنصية، أوضاع \"التفكير\" و\"غير التفكير\"، ومهام المحادثة والوكلاء.",
|
||||
"kimi-k2.description": "Kimi-K2 هو نموذج MoE أساسي من Moonshot AI يتمتع بقدرات قوية في البرمجة والوكالة، بإجمالي 1 تريليون معلمة و32 مليار نشطة. يتفوق على النماذج المفتوحة السائدة في اختبارات الاستدلال العام، البرمجة، الرياضيات، ومهام الوكالة.",
|
||||
@@ -841,6 +821,7 @@
|
||||
"llava.description": "LLaVA هو نموذج متعدد الوسائط يجمع بين مشفر بصري ونموذج Vicuna لفهم قوي بين الرؤية واللغة.",
|
||||
"llava:13b.description": "LLaVA هو نموذج متعدد الوسائط يجمع بين مشفر بصري ونموذج Vicuna لفهم قوي بين الرؤية واللغة.",
|
||||
"llava:34b.description": "LLaVA هو نموذج متعدد الوسائط يجمع بين مشفر بصري ونموذج Vicuna لفهم قوي بين الرؤية واللغة.",
|
||||
"magistral-medium-latest.description": "Magistral Medium 1.2 هو نموذج متقدم للاستدلال من Mistral AI (سبتمبر 2025) مع دعم للرؤية.",
|
||||
"magistral-small-2509.description": "Magistral Small 1.2 هو نموذج استدلال صغير مفتوح المصدر من Mistral AI (سبتمبر 2025) مع دعم للرؤية.",
|
||||
"mathstral.description": "MathΣtral مصمم للبحث العلمي والاستدلال الرياضي، مع قدرات قوية في الحساب والشرح.",
|
||||
"max-32k.description": "يوفر Spark Max 32K معالجة لسياقات طويلة مع فهم أعمق للسياق واستدلال منطقي قوي، ويدعم مدخلات تصل إلى 32 ألف رمز لقراءة المستندات الطويلة والإجابة على الأسئلة المعتمدة على المعرفة الخاصة.",
|
||||
@@ -935,7 +916,9 @@
|
||||
"mistral-ai/Mistral-Nemo.description": "Mistral Nemo هو نموذج لغوي متقدم يتميز بأحدث تقنيات الاستدلال والمعرفة العالمية والبرمجة بالنسبة لحجمه.",
|
||||
"mistral-ai/mistral-small-2503.description": "Mistral Small مناسب لأي مهمة لغوية تتطلب كفاءة عالية وزمن استجابة منخفض.",
|
||||
"mistral-large-instruct.description": "Mistral-Large-Instruct-2407 هو نموذج لغوي كثيف متقدم يحتوي على 123 مليار معامل، يتميز بأحدث تقنيات الاستدلال والمعرفة والبرمجة.",
|
||||
"mistral-large-latest.description": "Mistral Large هو النموذج الرئيسي، قوي في المهام متعددة اللغات، والاستدلال المعقد، وتوليد الكود—مثالي للتطبيقات المتقدمة.",
|
||||
"mistral-large.description": "Mixtral Large هو النموذج الرئيسي من Mistral، يجمع بين توليد الكود، والرياضيات، والاستدلال مع نافذة سياق 128K.",
|
||||
"mistral-medium-latest.description": "Mistral Medium 3.1 يقدم أداءً رائدًا بتكلفة أقل بـ 8 مرات ويُبسط نشر المؤسسات.",
|
||||
"mistral-nemo-instruct.description": "Mistral-Nemo-Instruct-2407 هو الإصدار الموجه بالتعليمات من Mistral-Nemo-Base-2407.",
|
||||
"mistral-nemo.description": "Mistral Nemo هو نموذج فعال يحتوي على 12 مليار معامل من Mistral AI وNVIDIA.",
|
||||
"mistral-small-latest.description": "Mistral Small هو خيار سريع وموثوق وفعال من حيث التكلفة للترجمة، والتلخيص، وتحليل المشاعر.",
|
||||
@@ -1322,6 +1305,7 @@
|
||||
"z-ai/glm4.7.description": "GLM-4.7 هو أحدث نموذج رئيسي من Zhipu، محسّن لسيناريوهات البرمجة الوكيلية مع تحسين قدرات البرمجة.",
|
||||
"z-ai/glm5.description": "GLM-5 هو النموذج الأساسي الجديد من Zhipu AI للهندسة الوكيلة، يحقق أداءً مفتوح المصدر SOTA في البرمجة وقدرات الوكلاء. يتطابق مع أداء Claude Opus 4.5.",
|
||||
"z-image-turbo.description": "Z-Image هو نموذج خفيف الوزن لتحويل النصوص إلى صور يمكنه بسرعة إنتاج الصور، يدعم تقديم النصوص باللغتين الصينية والإنجليزية، ويتكيف بمرونة مع دقة متعددة ونسب عرض إلى ارتفاع.",
|
||||
"zai-glm-4.7.description": "هذا النموذج يقدم أداءً قويًا في البرمجة مع قدرات تفكير متقدمة، واستخدام أدوات متفوق، وأداء معزز في تطبيقات البرمجة الوكيلة الواقعية.",
|
||||
"zai-org/GLM-4.5-Air.description": "GLM-4.5-Air هو نموذج أساسي لتطبيقات الوكلاء يستخدم بنية Mixture-of-Experts. مُحسّن لاستخدام الأدوات، وتصفح الويب، والهندسة البرمجية، وبرمجة الواجهات، ويتكامل مع وكلاء البرمجة مثل Claude Code وRoo Code. يستخدم استدلالًا هجينًا للتعامل مع السيناريوهات المعقدة واليومية.",
|
||||
"zai-org/GLM-4.5V.description": "GLM-4.5V هو أحدث نموذج رؤية من Zhipu AI، مبني على نموذج النص الرائد GLM-4.5-Air (إجمالي 106 مليار، 12 مليار نشط) باستخدام بنية MoE لأداء قوي بتكلفة أقل. يتبع مسار GLM-4.1V-Thinking ويضيف 3D-RoPE لتحسين الاستدلال المكاني ثلاثي الأبعاد. مُحسّن من خلال التدريب المسبق، والتعلم الخاضع للإشراف، والتعلم المعزز، ويتعامل مع الصور، والفيديو، والمستندات الطويلة، ويتصدر النماذج المفتوحة في 41 معيارًا متعدد الوسائط. يتيح وضع التفكير للمستخدمين التوازن بين السرعة والعمق.",
|
||||
"zai-org/GLM-4.6.description": "مقارنة بـ GLM-4.5، يوسّع GLM-4.6 السياق من 128 ألف إلى 200 ألف لمهام الوكلاء المعقدة. يحقق نتائج أعلى في اختبارات البرمجة ويُظهر أداءً أقوى في التطبيقات الواقعية مثل Claude Code وCline وRoo Code وKilo Code، بما في ذلك توليد صفحات الواجهة الأمامية بشكل أفضل. تم تحسين الاستدلال ودعم استخدام الأدوات أثناء التفكير، مما يعزز القدرات العامة. يتكامل بشكل أفضل مع أطر الوكلاء، ويحسّن وكلاء الأدوات/البحث، ويتميز بأسلوب كتابة مفضل بشريًا وطبيعية في تقمص الأدوار.",
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
"builtins.lobe-cloud-sandbox.apiName.runCommand": "تشغيل الأمر",
|
||||
"builtins.lobe-cloud-sandbox.apiName.searchLocalFiles": "البحث في الملفات",
|
||||
"builtins.lobe-cloud-sandbox.apiName.writeLocalFile": "كتابة الملف",
|
||||
"builtins.lobe-cloud-sandbox.inspector.noResults": "لا توجد نتائج",
|
||||
"builtins.lobe-cloud-sandbox.title": "بيئة سحابية",
|
||||
"builtins.lobe-group-agent-builder.apiName.batchCreateAgents": "إنشاء وكلاء دفعة واحدة",
|
||||
"builtins.lobe-group-agent-builder.apiName.createAgent": "إنشاء وكيل",
|
||||
@@ -227,7 +226,6 @@
|
||||
"builtins.lobe-user-memory.apiName.addExperienceMemory": "إضافة ذاكرة الخبرة",
|
||||
"builtins.lobe-user-memory.apiName.addIdentityMemory": "إضافة ذاكرة الهوية",
|
||||
"builtins.lobe-user-memory.apiName.addPreferenceMemory": "إضافة ذاكرة التفضيلات",
|
||||
"builtins.lobe-user-memory.apiName.queryTaxonomyOptions": "استعلام التصنيف",
|
||||
"builtins.lobe-user-memory.apiName.removeIdentityMemory": "حذف ذاكرة الهوية",
|
||||
"builtins.lobe-user-memory.apiName.searchUserMemory": "البحث في الذاكرة",
|
||||
"builtins.lobe-user-memory.apiName.updateIdentityMemory": "تحديث ذاكرة الهوية",
|
||||
@@ -417,13 +415,9 @@
|
||||
"loading.plugin": "المهارة قيد التشغيل…",
|
||||
"localSystem.workingDirectory.agentDescription": "دليل العمل الافتراضي لجميع المحادثات مع هذا الوكيل",
|
||||
"localSystem.workingDirectory.agentLevel": "دليل عمل الوكيل",
|
||||
"localSystem.workingDirectory.chooseDifferentFolder": "اختر مجلدًا مختلفًا",
|
||||
"localSystem.workingDirectory.current": "دليل العمل الحالي",
|
||||
"localSystem.workingDirectory.noRecent": "لا توجد أدلة حديثة",
|
||||
"localSystem.workingDirectory.notSet": "انقر لتعيين دليل العمل",
|
||||
"localSystem.workingDirectory.placeholder": "أدخل مسار الدليل، مثل /Users/name/projects",
|
||||
"localSystem.workingDirectory.recent": "حديث",
|
||||
"localSystem.workingDirectory.removeRecent": "إزالة من الحديث",
|
||||
"localSystem.workingDirectory.selectFolder": "اختر مجلدًا",
|
||||
"localSystem.workingDirectory.title": "دليل العمل",
|
||||
"localSystem.workingDirectory.topicDescription": "تجاوز الإعداد الافتراضي للوكيل لهذه المحادثة فقط",
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
"jina.description": "تأسست Jina AI في عام 2020، وهي شركة رائدة في مجال البحث الذكي. تشمل تقنياتها نماذج المتجهات، ومعيدو الترتيب، ونماذج لغوية صغيرة لبناء تطبيقات بحث توليدية ومتعددة الوسائط عالية الجودة.",
|
||||
"kimicodingplan.description": "كود Kimi من Moonshot AI يوفر الوصول إلى نماذج Kimi بما في ذلك K2.5 لأداء مهام الترميز.",
|
||||
"lmstudio.description": "LM Studio هو تطبيق سطح مكتب لتطوير وتجربة النماذج اللغوية الكبيرة على جهازك.",
|
||||
"lobehub.description": "يستخدم LobeHub Cloud واجهات برمجة التطبيقات الرسمية للوصول إلى نماذج الذكاء الاصطناعي ويقيس الاستخدام باستخدام أرصدة مرتبطة برموز النماذج.",
|
||||
"longcat.description": "LongCat هو سلسلة من نماذج الذكاء الاصطناعي التوليدية الكبيرة التي تم تطويرها بشكل مستقل بواسطة Meituan. تم تصميمه لتعزيز إنتاجية المؤسسة الداخلية وتمكين التطبيقات المبتكرة من خلال بنية حسابية فعالة وقدرات متعددة الوسائط قوية.",
|
||||
"minimax.description": "تأسست MiniMax في عام 2021، وتبني نماذج ذكاء اصطناعي متعددة الوسائط للأغراض العامة، بما في ذلك نماذج نصية بمليارات المعلمات، ونماذج صوتية وبصرية، بالإضافة إلى تطبيقات مثل Hailuo AI.",
|
||||
"minimaxcodingplan.description": "خطة الرموز MiniMax توفر الوصول إلى نماذج MiniMax بما في ذلك M2.7 لأداء مهام الترميز عبر اشتراك ثابت الرسوم.",
|
||||
|
||||
+1
-11
@@ -652,11 +652,6 @@
|
||||
"settingSystem.oauth.signout.confirm": "هل تريد تأكيد تسجيل الخروج؟",
|
||||
"settingSystem.oauth.signout.success": "تم تسجيل الخروج بنجاح",
|
||||
"settingSystem.title": "إعدادات النظام",
|
||||
"settingSystemTools.appEnvironment.chromium.desc": "إصدار محرك متصفح Chromium",
|
||||
"settingSystemTools.appEnvironment.desc": "إصدارات وقت التشغيل المدمجة في تطبيق سطح المكتب",
|
||||
"settingSystemTools.appEnvironment.electron.desc": "إصدار إطار Electron",
|
||||
"settingSystemTools.appEnvironment.node.desc": "إصدار Node.js المدمج",
|
||||
"settingSystemTools.appEnvironment.title": "بيئة التطبيق",
|
||||
"settingSystemTools.autoSelectDesc": "سيتم اختيار أفضل أداة متاحة تلقائيًا",
|
||||
"settingSystemTools.category.browserAutomation": "أتمتة المتصفح",
|
||||
"settingSystemTools.category.browserAutomation.desc": "أدوات لأتمتة المتصفح بدون واجهة والتفاعل مع الويب",
|
||||
@@ -710,8 +705,6 @@
|
||||
"skillStore.tabs.community": "المجتمع",
|
||||
"skillStore.tabs.custom": "مخصص",
|
||||
"skillStore.tabs.lobehub": "LobeHub",
|
||||
"skillStore.tabs.mcp": "MCP",
|
||||
"skillStore.tabs.skills": "المهارات",
|
||||
"skillStore.title": "متجر المهارات",
|
||||
"skillStore.wantMore.action": "إرسال طلب →",
|
||||
"skillStore.wantMore.feedback.message": "## اسم المهارة\n[يرجى التعبئة]\n\n## حالة الاستخدام\nعندما أكون ___، أحتاج إلى ___\n\n## الميزات المتوقعة\n1.\n2.\n3.\n\n## أمثلة مرجعية\n(اختياري) هل هناك أدوات أو ميزات مشابهة يمكن الرجوع إليها؟\n\n---\n💡 نصيحة: كلما كانت وصفك أكثر تحديدًا، تمكنا من تلبية احتياجاتك بشكل أفضل",
|
||||
@@ -775,9 +768,6 @@
|
||||
"systemAgent.historyCompress.label": "النموذج",
|
||||
"systemAgent.historyCompress.modelDesc": "تحديد النموذج المستخدم لضغط سجل المحادثة",
|
||||
"systemAgent.historyCompress.title": "وكيل ضغط سجل المحادثة",
|
||||
"systemAgent.inputCompletion.label": "النموذج",
|
||||
"systemAgent.inputCompletion.modelDesc": "النموذج المستخدم لاقتراحات الإكمال التلقائي للإدخال (مثل نص الشبح في GitHub Copilot)",
|
||||
"systemAgent.inputCompletion.title": "وكيل الإكمال التلقائي للإدخال",
|
||||
"systemAgent.queryRewrite.label": "النموذج",
|
||||
"systemAgent.queryRewrite.modelDesc": "تحديد النموذج المستخدم لتحسين استفسارات المستخدم",
|
||||
"systemAgent.queryRewrite.title": "وكيل إعادة صياغة استعلام المكتبة",
|
||||
@@ -799,7 +789,7 @@
|
||||
"tab.advanced": "متقدم",
|
||||
"tab.advanced.updateChannel.canary": "كناري",
|
||||
"tab.advanced.updateChannel.canaryDesc": "يتم تشغيله عند كل دمج PR، مع عدة إصدارات يومياً. الأكثر عدم استقراراً.",
|
||||
"tab.advanced.updateChannel.desc": "بشكل افتراضي، احصل على إشعارات للتحديثات المستقرة. قناة Canary تتلقى إصدارات ما قبل الإطلاق التي قد تكون غير مستقرة للعمل الإنتاجي.",
|
||||
"tab.advanced.updateChannel.desc": "افتراضياً، يتم تلقي الإشعارات للتحديثات المستقرة. قنوات Nightly وCanary تتلقى إصدارات ما قبل الإصدار التي قد تكون غير مستقرة للعمل الإنتاجي.",
|
||||
"tab.advanced.updateChannel.nightly": "ليلي",
|
||||
"tab.advanced.updateChannel.nightlyDesc": "إصدارات يومية تلقائية مع أحدث التغييرات.",
|
||||
"tab.advanced.updateChannel.stable": "مستقر",
|
||||
|
||||
@@ -359,6 +359,7 @@
|
||||
"referral.table.columns.inviterRewardAmount": "مكافأتي",
|
||||
"referral.table.columns.rewardedAt": "وقت المكافأة",
|
||||
"referral.table.columns.status": "الحالة",
|
||||
"referral.table.columns.suspectedReason": "سبب الشك",
|
||||
"referral.table.status.pending_reward": "المكافأة المعلقة",
|
||||
"referral.table.status.registered": "مسجل",
|
||||
"referral.table.status.revoked": "تم الإلغاء",
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
"config.resolution.label": "الدقة",
|
||||
"config.seed.label": "البذرة",
|
||||
"config.seed.random": "عشوائي",
|
||||
"config.size.label": "الحجم",
|
||||
"generation.actions.copyError": "نسخ رسالة الخطأ",
|
||||
"generation.actions.errorCopied": "تم نسخ رسالة الخطأ إلى الحافظة",
|
||||
"generation.actions.errorCopyFailed": "فشل في نسخ رسالة الخطأ",
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
"channel.devWebhookProxyUrlHint": "По избор. HTTPS тунел URL за пренасочване на заявки за уебхук към локален dev сървър.",
|
||||
"channel.disabled": "Деактивиран",
|
||||
"channel.discord.description": "Свържете този асистент с Discord сървър за канален чат и директни съобщения.",
|
||||
"channel.displayToolCalls": "Показване на обажданията към инструментите",
|
||||
"channel.displayToolCallsHint": "Показване на детайли за обажданията към инструментите по време на отговорите на ИИ. Когато е изключено, се показва само крайният отговор за по-чисто изживяване.",
|
||||
"channel.dm": "Директни съобщения",
|
||||
"channel.dmEnabled": "Активиране на директни съобщения",
|
||||
"channel.dmEnabledHint": "Позволете на бота да получава и отговаря на директни съобщения",
|
||||
|
||||
@@ -179,16 +179,10 @@
|
||||
"overview.title": "Лаборатория за оценка",
|
||||
"run.actions.abort": "Прекратяване",
|
||||
"run.actions.abort.confirm": "Сигурни ли сте, че искате да прекратите тази оценка?",
|
||||
"run.actions.batchResume": "Възобновяване на партида",
|
||||
"run.actions.batchResume.modal.confirm": "Възобновяване на избраните",
|
||||
"run.actions.batchResume.modal.selectAll": "Избери всички",
|
||||
"run.actions.batchResume.modal.selected": "{{count}} избрани",
|
||||
"run.actions.batchResume.modal.title": "Възобновяване на случаи в партида",
|
||||
"run.actions.create": "Нова оценка",
|
||||
"run.actions.delete": "Изтриване",
|
||||
"run.actions.delete.confirm": "Сигурни ли сте, че искате да изтриете тази оценка?",
|
||||
"run.actions.edit": "Редактиране",
|
||||
"run.actions.resumeCase": "Възобновяване",
|
||||
"run.actions.retryCase": "Повторен опит",
|
||||
"run.actions.retryErrors": "Повторен опит за грешки",
|
||||
"run.actions.retryErrors.confirm": "Това ще преизпълни всички случаи с грешки и изтичане на времето. Успешните и неуспешните случаи няма да бъдат засегнати.",
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
"starter.developing": "Очаквайте скоро",
|
||||
"starter.image": "Изображение",
|
||||
"starter.imageGeneration": "Генериране на изображения",
|
||||
"starter.videoGeneration": "Seedance 2.0",
|
||||
"starter.videoGeneration": "Генериране на видеа",
|
||||
"starter.write": "Писане"
|
||||
}
|
||||
|
||||
+20
-113
@@ -66,9 +66,6 @@
|
||||
"HiDream-E1-Full.description": "HiDream-E1-Full е модел за отворен код за мултимодално редактиране на изображения от HiDream.ai, базиран на усъвършенствана архитектура Diffusion Transformer и силно езиково разбиране (вграден LLaMA 3.1-8B-Instruct). Той поддържа генериране на изображения, трансфер на стилове, локални редакции и прерисуване, управлявани от естествен език, с отлично разбиране и изпълнение на текст и изображения.",
|
||||
"HiDream-I1-Full.description": "HiDream-I1 е нов модел за генериране на изображения с отворен код, пуснат от HiDream. С 17 милиарда параметри (Flux има 12 милиарда), той може да предостави водещо в индустрията качество на изображенията за секунди.",
|
||||
"HunyuanDiT-v1.2-Diffusers-Distilled.description": "hunyuandit-v1.2-distilled е олекотен модел за преобразуване на текст в изображение, оптимизиран чрез дистилация за бързо генериране на висококачествени изображения, особено подходящ за среди с ограничени ресурси и реално време.",
|
||||
"I2V-01-Director.description": "Модел за видео генериране на ниво режисьор е официално пуснат, предлагайки подобрено спазване на инструкциите за движение на камерата и кинематографичен език за разказване на истории.",
|
||||
"I2V-01-live.description": "Подобрено представяне на персонажите: по-стабилно, по-гладко и по-живо.",
|
||||
"I2V-01.description": "Основният модел за преобразуване на изображение във видео от серията 01.",
|
||||
"InstantCharacter.description": "InstantCharacter е модел за персонализирано генериране на персонажи без нужда от настройка, пуснат от Tencent AI през 2025 г., насочен към висок реализъм и консистентност на персонажа в различни сценарии. Може да моделира персонаж от едно референтно изображение и гъвкаво да го прехвърля между стилове, действия и фонове.",
|
||||
"InternVL2-8B.description": "InternVL2-8B е мощен модел за визия и език, поддържащ мултимодална обработка на изображения и текст, с точно разпознаване на съдържание и генериране на съответни описания или отговори.",
|
||||
"InternVL2.5-26B.description": "InternVL2.5-26B е мощен модел за визия и език, поддържащ мултимодална обработка на изображения и текст, с точно разпознаване на съдържание и генериране на съответни описания или отговори.",
|
||||
@@ -90,12 +87,8 @@
|
||||
"Meta-Llama-3.2-3B-Instruct.description": "Модерен малък езиков модел с отлично езиково разбиране, логическо мислене и генериране на текст.",
|
||||
"Meta-Llama-3.3-70B-Instruct.description": "Llama 3.3 е най-усъвършенстваният многоезичен отворен модел от серията Llama, предлагащ производителност, близка до 405B, на много по-ниска цена. Базиран е на трансформерна архитектура и подобрен чрез SFT и RLHF за полезност и безопасност. Версията, обучена с инструкции, е оптимизирана за многоезичен чат и надминава много отворени и затворени модели на индустриални бенчмаркове. Граница на знанието: декември 2023 г.",
|
||||
"Meta-Llama-4-Maverick-17B-128E-Instruct-FP8.description": "Llama 4 Maverick е голям MoE модел с ефективна активация на експерти за силна логическа производителност.",
|
||||
"MiniMax-Hailuo-02.description": "Моделът за видео генериране от следващо поколение, MiniMax Hailuo 02, е официално пуснат, поддържащ резолюция 1080P и генериране на видеа с продължителност 10 секунди.",
|
||||
"MiniMax-Hailuo-2.3-Fast.description": "Чисто нов модел за видео генериране с цялостни подобрения в движенията на тялото, физическата реалистичност и следването на инструкции.",
|
||||
"MiniMax-Hailuo-2.3.description": "Чисто нов модел за видео генериране с цялостни подобрения в движенията на тялото, физическата реалистичност и следването на инструкции.",
|
||||
"MiniMax-M1.description": "Нов вътрешен модел за разсъждение с 80K верига на мисълта и 1M вход, предлагащ производителност, сравнима с водещите глобални модели.",
|
||||
"MiniMax-M2-Stable.description": "Създаден за ефективно програмиране и агентски работни потоци, с по-висока едновременност за търговска употреба.",
|
||||
"MiniMax-M2.1-Lightning.description": "Мощни многоезични програмни възможности с по-бързо и ефективно извеждане.",
|
||||
"MiniMax-M2.1-highspeed.description": "Мощни многоезични програмни възможности, цялостно подобрено програмиране. По-бързо и по-ефективно.",
|
||||
"MiniMax-M2.1.description": "MiniMax-M2.1 е водеща отворена голяма езикова система от MiniMax, фокусирана върху решаването на сложни реални задачи. Основните ѝ предимства са възможностите за програмиране на множество езици и способността да действа като агент за решаване на сложни задачи.",
|
||||
"MiniMax-M2.5-highspeed.description": "MiniMax M2.5 Highspeed: Същата производителност като M2.5, но с по-бързо извеждане.",
|
||||
@@ -189,7 +182,6 @@
|
||||
"Qwen3-235B-A22B-Instruct-2507-FP8.description": "Qwen3 235B A22B Instruct 2507 е оптимизиран за напреднало разсъждение и следване на инструкции, използвайки MoE за ефективно мащабиране на разсъждението.",
|
||||
"Qwen3-235B.description": "Qwen3-235B-A22B е MoE модел, който въвежда хибриден режим на разсъждение, позволяващ на потребителите да превключват безпроблемно между мислещ и немислещ режим. Поддържа разбиране и разсъждение на 119 езика и диалекта и има силни възможности за извикване на инструменти, конкурирайки се с водещи модели като DeepSeek R1, OpenAI o1, o3-mini, Grok 3 и Google Gemini 2.5 Pro в бенчмаркове за общи способности, програмиране и математика, многоезичност и логическо разсъждение.",
|
||||
"Qwen3-32B.description": "Qwen3-32B е плътен модел, който въвежда хибриден режим на разсъждение, позволяващ на потребителите да превключват между мислещ и немислещ режим. С архитектурни подобрения, повече данни и по-добро обучение, той се представя наравно с Qwen2.5-72B.",
|
||||
"S2V-01.description": "Основният модел за преобразуване на референция във видео от серията 01.",
|
||||
"SenseChat-128K.description": "Базов модел V4 с контекст от 128K, силен в разбиране и генериране на дълги текстове.",
|
||||
"SenseChat-32K.description": "Базов модел V4 с контекст от 32K, гъвкав за различни сценарии.",
|
||||
"SenseChat-5-1202.description": "Най-новата версия, базирана на V5.5, с значителни подобрения в основни знания по китайски/английски, чат, STEM, хуманитарни науки, писане, математика/логика и контрол на дължината.",
|
||||
@@ -212,16 +204,12 @@
|
||||
"Skylark2-pro-4k.description": "Модел от второ поколение Skylark. Skylark2-pro предлага по-висока точност за сложни задачи по генериране на текст като професионално копирайтинг, писане на романи и висококачествен превод, с контекстен прозорец от 4K.",
|
||||
"Skylark2-pro-character-4k.description": "Модел от второ поколение Skylark. Skylark2-pro-character се отличава в ролеви игри и чат, съчетавайки подканите с отличителни стилове на персонажи и естествен диалог за чатботи, виртуални асистенти и обслужване на клиенти, с бързи отговори.",
|
||||
"Skylark2-pro-turbo-8k.description": "Модел от второ поколение Skylark. Skylark2-pro-turbo-8k предлага по-бърза инференция на по-ниска цена с контекстен прозорец от 8K.",
|
||||
"T2V-01-Director.description": "Модел за видео генериране на ниво режисьор е официално пуснат, предлагайки подобрено спазване на инструкциите за движение на камерата и кинематографичен език за разказване на истории.",
|
||||
"T2V-01.description": "Основният модел за преобразуване на текст във видео от серията 01.",
|
||||
"THUDM/GLM-4-32B-0414.description": "GLM-4-32B-0414 е следващо поколение отворен GLM модел с 32 милиарда параметъра, сравним по производителност с OpenAI GPT и сериите DeepSeek V3/R1.",
|
||||
"THUDM/GLM-4-9B-0414.description": "GLM-4-9B-0414 е 9-милиарден GLM модел, който наследява технологиите на GLM-4-32B, като същевременно предлага по-леко внедряване. Представя се добре в генериране на код, уеб дизайн, създаване на SVG и писане, базирано на търсене.",
|
||||
"THUDM/GLM-4.1V-9B-Thinking.description": "GLM-4.1V-9B-Thinking е модел с отворен код от Zhipu AI и лабораторията KEG на университета Цинхуа, създаден за сложна мултимодална когниция. Построен върху GLM-4-9B-0414, той добавя разсъждения чрез верига от мисли и RL за значително подобряване на кръстомодалното разсъждение и стабилност.",
|
||||
"THUDM/GLM-Z1-32B-0414.description": "GLM-Z1-32B-0414 е модел за дълбоко разсъждение, изграден от GLM-4-32B-0414 с данни за студен старт и разширено подсилено обучение, допълнително обучен върху математика, код и логика. Значително подобрява способността за решаване на сложни задачи спрямо базовия модел.",
|
||||
"THUDM/GLM-Z1-9B-0414.description": "GLM-Z1-9B-0414 е компактен GLM модел с 9 милиарда параметъра, който запазва силните страни на отворения код, като същевременно предлага впечатляващи възможности. Представя се отлично в математическо разсъждение и общи задачи, водещ в своя клас сред отворените модели.",
|
||||
"Tongyi-Zhiwen/QwenLong-L1-32B.description": "QwenLong-L1-32B е първият модел за разсъждение с дълъг контекст (LRM), обучен с RL, оптимизиран за разсъждение върху дълги текстове. Неговото прогресивно разширяване на контекста чрез RL позволява стабилен преход от кратък към дълъг контекст. Той надминава OpenAI-o3-mini и Qwen3-235B-A22B на седем бенчмарка за QA върху документи с дълъг контекст, съперничейки на Claude-3.7-Sonnet-Thinking. Особено силен е в математика, логика и многократни разсъждения.",
|
||||
"Wan-AI/Wan2.2-I2V-A14B.description": "Wan2.2-I2V-A14B е един от първите модели за генериране на видео от изображение (I2V), пуснати с отворен код от Wan-AI, инициатива за изкуствен интелект под Alibaba, който използва архитектура Mixture of Experts (MoE). Моделът се фокусира върху генерирането на плавни и естествени динамични видео последователности чрез комбиниране на статични изображения с текстови подсказки. Основната иновация е в архитектурата MoE: експерт с висок шум отговаря за обработката на грубата структура в ранните етапи на генериране на видеото, докато експерт с нисък шум усъвършенства детайлите в по-късните етапи. Този дизайн подобрява общата производителност на модела, без да увеличава разходите за извеждане. В сравнение с предишни версии, Wan2.2 е обучен върху значително по-голям набор от данни, което води до забележителни подобрения в разбирането на сложни движения, естетически стилове и семантично съдържание. Той произвежда по-стабилни видеа и намалява нереалистичните движения на камерата.",
|
||||
"Wan-AI/Wan2.2-T2V-A14B.description": "Wan2.2-T2V-A14B е първият модел за генериране на видео от текст (T2V), пуснат с отворен код от Alibaba, който използва архитектура Mixture of Experts (MoE). Моделът е предназначен за задачи за генериране на видео от текст и е способен да произвежда видеа с продължителност до 5 секунди при резолюции от 480P или 720P. Чрез въвеждането на архитектурата MoE, моделът значително увеличава общия си капацитет, като същевременно запазва почти непроменени разходите за извеждане. Той включва експерт с висок шум, който обработва глобалната структура в ранните етапи на генериране, и експерт с нисък шум, който усъвършенства детайлите в по-късните етапи на видеото. Освен това Wan2.2 включва внимателно подбрани естетически данни с подробни анотации в измерения като осветление, композиция и цвят. Това позволява по-прецизно и контролируемо генериране на визуализации с кинематографично качество. В сравнение с предишни версии, моделът е обучен върху по-голям набор от данни, което води до значително подобрено обобщение в движенията, семантиката и естетиката, както и по-добро справяне със сложни динамични ефекти.",
|
||||
"Yi-34B-Chat.description": "Yi-1.5-34B запазва силните езикови способности на серията, като използва инкрементално обучение върху 500 милиарда висококачествени токена, за да подобри значително логиката в математиката и програмирането.",
|
||||
"abab5.5-chat.description": "Създаден за продуктивни сценарии с обработка на сложни задачи и ефективно генериране на текст за професионална употреба.",
|
||||
"abab5.5s-chat.description": "Проектиран за чат с китайски персонажи, осигуряващ висококачествен диалог на китайски език за различни приложения.",
|
||||
@@ -310,18 +298,18 @@
|
||||
"claude-3-haiku-20240307.description": "Claude 3 Haiku е най-бързият и най-компактен модел на Anthropic, проектиран за почти мигновени отговори с бърза и точна производителност.",
|
||||
"claude-3-opus-20240229.description": "Claude 3 Opus е най-мощният модел на Anthropic за силно сложни задачи, отличаващ се с производителност, интелигентност, плавност и разбиране.",
|
||||
"claude-3-sonnet-20240229.description": "Claude 3 Sonnet балансира интелигентност и скорост за корпоративни натоварвания, осигурявайки висока полезност на по-ниска цена и надеждно мащабно внедряване.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 е най-бързият и интелигентен модел Haiku на Anthropic, с мълниеносна скорост и разширено мислене.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 е най-бързият и най-умен Haiku модел на Anthropic, с мълниеносна скорост и разширено разсъждение.",
|
||||
"claude-haiku-4.5.description": "Claude Haiku 4.5 е най-бързият и най-умен Haiku модел на Anthropic, с мълниеносна скорост и разширено разсъждение.",
|
||||
"claude-opus-4-1-20250805-thinking.description": "Claude Opus 4.1 Thinking е усъвършенстван вариант, който може да разкрие процеса си на разсъждение.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 е най-новият и най-способен модел на Anthropic за силно сложни задачи, отличаващ се с производителност, интелигентност, плавност и разбиране.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 е най-мощният модел на Anthropic за силно сложни задачи, отличаващ се с производителност, интелигентност, плавност и разбиране.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 е най-новият и най-способен модел на Anthropic за изключително сложни задачи, отличаващ се с производителност, интелигентност, плавност и разбиране.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 е най-мощният модел на Anthropic за изключително сложни задачи, отличаващ се с производителност, интелигентност, плавност и разбиране.",
|
||||
"claude-opus-4-5-20251101.description": "Claude Opus 4.5 е флагманският модел на Anthropic, комбиниращ изключителна интелигентност с мащабируема производителност, идеален за сложни задачи, изискващи най-висококачествени отговори и разсъждение.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 е най-интелигентният модел на Anthropic за изграждане на агенти и програмиране.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 е най-интелигентният модел на Anthropic за създаване на агенти и програмиране.",
|
||||
"claude-opus-4.5.description": "Claude Opus 4.5 е водещият модел на Anthropic, съчетаващ първокласен интелект с мащабируемо представяне за сложни задачи с високо качество на разсъжденията.",
|
||||
"claude-opus-4.6-fast.description": "Claude Opus 4.6 е най-интелигентният модел на Anthropic за създаване на агенти и програмиране.",
|
||||
"claude-opus-4.6.description": "Claude Opus 4.6 е най-интелигентният модел на Anthropic за създаване на агенти и програмиране.",
|
||||
"claude-sonnet-4-20250514-thinking.description": "Claude Sonnet 4 Thinking може да генерира почти мигновени отговори или разширено стъпково мислене с видим процес.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 е най-интелигентният модел на Anthropic досега, предлагащ почти мигновени отговори или разширено мислене стъпка по стъпка с фино управление за API потребители.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 може да предоставя почти мигновени отговори или разширено поетапно мислене с видим процес.",
|
||||
"claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 е най-интелигентният модел на Anthropic досега.",
|
||||
"claude-sonnet-4-6.description": "Claude Sonnet 4.6 е най-добрата комбинация от скорост и интелигентност на Anthropic.",
|
||||
"claude-sonnet-4.5.description": "Claude Sonnet 4.5 е най-интелигентният модел на Anthropic до момента.",
|
||||
@@ -340,9 +328,6 @@
|
||||
"codestral-latest.description": "Codestral е нашият най-усъвършенстван модел за програмиране; версия 2 (януари 2025) е насочена към задачи с ниска латентност и висока честота като FIM, корекция на код и генериране на тестове.",
|
||||
"codestral.description": "Codestral е първият модел за програмиране на Mistral AI, осигуряващ силна поддръжка за генериране на код.",
|
||||
"cogito-2.1:671b.description": "Cogito v2.1 671B е отворен модел от САЩ, свободен за търговска употреба, с производителност, съпоставима с водещите модели, по-висока ефективност при разсъждение с токени, 128k контекст и силни общи способности.",
|
||||
"cogvideox-2.description": "CogVideoX-2 е новото поколение основен модел за видео генериране на Zhipu, с подобрени възможности за преобразуване на изображение във видео с 38%. Той предлага значителни подобрения в обработката на мащабни движения, визуалната стабилност, спазването на инструкции, артистичния стил и цялостната визуална естетика.",
|
||||
"cogvideox-3.description": "CogVideoX-3 добавя функция за генериране на начални и крайни кадри, значително подобрявайки визуалната стабилност и яснота. Той позволява плавни и естествени мащабни движения на обекти, предлага по-добро спазване на инструкции и по-реалистична физическа симулация, и допълнително подобрява производителността в сцени с висока разделителна способност и 3D стил.",
|
||||
"cogvideox-flash.description": "CogVideoX-Flash е безплатен модел за видео генериране, пуснат от Zhipu, способен да генерира видеа, които следват потребителските инструкции, като същевременно постигат по-високи оценки за естетическо качество.",
|
||||
"cogview-3-flash.description": "CogView-3-Flash е безплатен модел за генериране на изображения, създаден от Zhipu. Той генерира изображения, които съответстват на инструкциите на потребителя, като същевременно постига по-високи оценки за естетическо качество. CogView-3-Flash се използва основно в области като художествено творчество, дизайнерски референции, разработка на игри и виртуална реалност, помагайки на потребителите бързо да преобразуват текстови описания в изображения.",
|
||||
"cogview-4.description": "CogView-4 е първият отворен модел на Zhipu за преобразуване на текст в изображение, който може да генерира китайски знаци. Подобрява семантичното разбиране, качеството на изображенията и рендирането на китайски/английски текст, поддържа двуезични подкани с произволна дължина и може да генерира изображения с всякаква резолюция в зададени граници.",
|
||||
"cohere-command-r-plus.description": "Command R+ е усъвършенстван модел, оптимизиран за RAG, създаден за корпоративни натоварвания.",
|
||||
@@ -397,7 +382,7 @@
|
||||
"deepseek-ai/deepseek-v3.1-terminus.description": "DeepSeek V3.1 е модел за разсъждение от ново поколение с по-силни способности за сложни разсъждения и верига от мисли за задълбочени аналитични задачи.",
|
||||
"deepseek-ai/deepseek-v3.1.description": "DeepSeek V3.1 е модел за разсъждение от ново поколение с по-силни способности за сложни разсъждения и верига от мисли за задълбочени аналитични задачи.",
|
||||
"deepseek-ai/deepseek-v3.2.description": "DeepSeek V3.2 е модел за разсъждение от следващо поколение с по-силни способности за сложни разсъждения и верига на мисълта.",
|
||||
"deepseek-chat.description": "DeepSeek V3.2 балансира разсъжденията и дължината на изхода за ежедневни задачи за въпроси и отговори и агенти. Публичните бенчмаркове достигат нива на GPT-5, и това е първият модел, който интегрира мислене в използването на инструменти, водещ в оценките на агенти с отворен код.",
|
||||
"deepseek-chat.description": "Нов модел с отворен код, който комбинира общи и кодови способности. Той запазва общия диалог на чат модела и силното програмиране на кодовия модел, с по-добро съответствие на предпочитанията. DeepSeek-V2.5 също така подобрява писането и следването на инструкции.",
|
||||
"deepseek-coder-33B-instruct.description": "DeepSeek Coder 33B е езиков модел за програмиране, обучен върху 2 трилиона токени (87% код, 13% китайски/английски текст). Въвежда 16K контекстен прозорец и задачи за попълване в средата, осигурявайки допълване на код на ниво проект и попълване на фрагменти.",
|
||||
"deepseek-coder-v2.description": "DeepSeek Coder V2 е отворен MoE модел за програмиране, който се представя на ниво GPT-4 Turbo.",
|
||||
"deepseek-coder-v2:236b.description": "DeepSeek Coder V2 е отворен MoE модел за програмиране, който се представя на ниво GPT-4 Turbo.",
|
||||
@@ -420,7 +405,7 @@
|
||||
"deepseek-r1-fast-online.description": "Пълна бърза версия на DeepSeek R1 с търсене в реално време в уеб, комбинираща възможности от мащаб 671B и по-бърз отговор.",
|
||||
"deepseek-r1-online.description": "Пълна версия на DeepSeek R1 с 671 милиарда параметъра и търсене в реално време в уеб, предлагаща по-силно разбиране и генериране.",
|
||||
"deepseek-r1.description": "DeepSeek-R1 използва данни от студен старт преди подсиленото обучение и се представя наравно с OpenAI-o1 в математика, програмиране и разсъждение.",
|
||||
"deepseek-reasoner.description": "DeepSeek V3.2 Thinking е модел за дълбоко разсъждение, който генерира верига от мисли преди изходите за по-висока точност, с топ резултати в конкуренцията и разсъждения, сравними с Gemini-3.0-Pro.",
|
||||
"deepseek-reasoner.description": "Режимът на мислене DeepSeek V3.2 предоставя верига от мисли преди крайния отговор за подобряване на точността.",
|
||||
"deepseek-v2.description": "DeepSeek V2 е ефективен MoE модел за икономична обработка.",
|
||||
"deepseek-v2:236b.description": "DeepSeek V2 236B е модел на DeepSeek, фокусиран върху програмиране, с висока производителност при генериране на код.",
|
||||
"deepseek-v3-0324.description": "DeepSeek-V3-0324 е MoE модел с 671 милиарда параметъра, с изключителни способности в програмиране, технически задачи, разбиране на контекст и обработка на дълги текстове.",
|
||||
@@ -431,7 +416,6 @@
|
||||
"deepseek-v3.2-exp.description": "deepseek-v3.2-exp въвежда разредено внимание за подобряване на ефективността при обучение и извеждане върху дълги текстове, на по-ниска цена от deepseek-v3.1.",
|
||||
"deepseek-v3.2-speciale.description": "При силно сложни задачи, моделът Speciale значително превъзхожда стандартната версия, но консумира значително повече токени и води до по-високи разходи. В момента DeepSeek-V3.2-Speciale е предназначен само за изследователска употреба, не поддържа използване на инструменти и не е специално оптимизиран за ежедневни разговори или задачи за писане.",
|
||||
"deepseek-v3.2-think.description": "DeepSeek V3.2 Think е пълен модел за дълбоко мислене с по-силно дълговерижно разсъждение.",
|
||||
"deepseek-v3.2-thinking.description": "DeepSeek-V3.2 Thinking е вариант на DeepSeek-V3.2, фокусиран върху задачи за разсъждение.",
|
||||
"deepseek-v3.2.description": "DeepSeek-V3.2 е най-новият модел за програмиране на DeepSeek със силни способности за разсъждение.",
|
||||
"deepseek-v3.description": "DeepSeek-V3 е мощен MoE модел с общо 671 милиарда параметъра и 37 милиарда активни на токен.",
|
||||
"deepseek-vl2-small.description": "DeepSeek VL2 Small е лек мултимодален вариант за среди с ограничени ресурси и висока едновременност.",
|
||||
@@ -487,8 +471,6 @@
|
||||
"doubao-seedance-1-0-pro-250528.description": "Seedance 1.0 Pro е основен модел за генериране на видеоклипове, който поддържа разказване на истории с множество кадри. Той предоставя силна производителност в множество измерения. Моделът постига пробиви в семантичното разбиране и следването на инструкции, което му позволява да генерира 1080P видеоклипове с висока разделителна способност, плавно движение, богати детайли, разнообразни стилове и визуална естетика на кинематографично ниво.",
|
||||
"doubao-seedance-1-0-pro-fast-251015.description": "Seedance 1.0 Pro Fast е цялостен модел, проектиран да минимизира разходите, като същевременно максимизира производителността, постигайки отличен баланс между качество на генериране на видеоклипове, скорост и цена. Той наследява основните предимства на Seedance 1.0 Pro, като предлага по-бързи скорости на генериране и по-конкурентни цени, предоставяйки на създателите двойна оптимизация на ефективност и разходи.",
|
||||
"doubao-seedance-1-5-pro-251215.description": "Seedance 1.5 Pro от ByteDance поддържа текст-към-видео, изображение-към-видео (първи кадър, първи+последен кадър) и аудио генериране, синхронизирано с визуализации.",
|
||||
"doubao-seedance-2-0-260128.description": "Seedance 2.0 от ByteDance е най-мощният модел за видео генериране, поддържащ мултимодално генериране на референтни видеа, редактиране на видеа, разширение на видеа, преобразуване на текст във видео и преобразуване на изображение във видео със синхронизиран звук.",
|
||||
"doubao-seedance-2-0-fast-260128.description": "Seedance 2.0 Fast от ByteDance предлага същите възможности като Seedance 2.0 с по-бързи скорости на генериране на по-конкурентна цена.",
|
||||
"doubao-seededit-3-0-i2i-250628.description": "Моделът за изображения на Doubao от ByteDance Seed поддържа вход от текст и изображения с високо контролируемо, висококачествено генериране на изображения. Поддържа редактиране на изображения, водено от текст, с размери на изхода между 512 и 1536 по дългата страна.",
|
||||
"doubao-seedream-3-0-t2i-250415.description": "Seedream 3.0 е модел за генериране на изображения от ByteDance Seed, поддържащ вход от текст и изображения с високо контролируемо, висококачествено генериране на изображения. Генерира изображения от текстови подсказки.",
|
||||
"doubao-seedream-4-0-250828.description": "Seedream 4.0 е модел за генериране на изображения от ByteDance Seed, поддържащ вход от текст и изображения с високо контролируемо, висококачествено генериране на изображения. Генерира изображения от текстови подсказки.",
|
||||
@@ -523,8 +505,7 @@
|
||||
"ernie-x1-turbo-32k.description": "ERNIE X1 Turbo 32K е бърз мислещ модел с 32K контекст за сложни разсъждения и многозавойни разговори.",
|
||||
"ernie-x1.1-preview.description": "ERNIE X1.1 Preview е предварителен модел за мислене, предназначен за оценка и тестване.",
|
||||
"ernie-x1.1.description": "ERNIE X1.1 е мисловен модел за предварителен преглед за оценка и тестване.",
|
||||
"fal-ai/bytedance/seedream/v4.5.description": "Seedream 4.5, създаден от екипа Seed на ByteDance, поддържа редактиране и композиция на множество изображения. Характеризира се с подобрена консистенция на обектите, прецизно следване на инструкции, разбиране на пространствена логика, естетическо изразяване, оформление на плакати и дизайн на лого с високопрецизно рендиране на текст и изображения.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0, създаден от ByteDance Seed, поддържа текстови и визуални входове за силно контролируемо, висококачествено генериране на изображения от подсказки.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0 е модел за генериране на изображения от ByteDance Seed, който поддържа текстови и визуални входове с високо контролируемо и висококачествено генериране на изображения. Той създава изображения от текстови подсказки.",
|
||||
"fal-ai/flux-kontext/dev.description": "FLUX.1 модел, фокусиран върху редактиране на изображения, поддържащ вход от текст и изображения.",
|
||||
"fal-ai/flux-pro/kontext.description": "FLUX.1 Kontext [pro] приема текст и референтни изображения като вход, позволявайки целенасочени локални редакции и сложни глобални трансформации на сцени.",
|
||||
"fal-ai/flux/krea.description": "Flux Krea [dev] е модел за генериране на изображения с естетично предпочитание към по-реалистични и естествени изображения.",
|
||||
@@ -532,8 +513,8 @@
|
||||
"fal-ai/hunyuan-image/v3.description": "Мощен роден мултимодален модел за генериране на изображения.",
|
||||
"fal-ai/imagen4/preview.description": "Модел за висококачествено генериране на изображения от Google.",
|
||||
"fal-ai/nano-banana.description": "Nano Banana е най-новият, най-бърз и най-ефективен роден мултимодален модел на Google, позволяващ генериране и редактиране на изображения чрез разговор.",
|
||||
"fal-ai/qwen-image-edit.description": "Професионален модел за редактиране на изображения от екипа Qwen, поддържащ семантични и визуални редакции, прецизно редактиране на текст на китайски/английски, трансфер на стил, ротация и други.",
|
||||
"fal-ai/qwen-image.description": "Мощен модел за генериране на изображения от екипа Qwen със силно рендиране на текст на китайски и разнообразни визуални стилове.",
|
||||
"fal-ai/qwen-image-edit.description": "Професионален модел за редактиране на изображения от екипа на Qwen, който поддържа семантични и визуални редакции, прецизно редактира китайски и английски текст и позволява висококачествени редакции като прехвърляне на стил и завъртане на обекти.",
|
||||
"fal-ai/qwen-image.description": "Мощен модел за генериране на изображения от екипа на Qwen с впечатляващо рендиране на китайски текст и разнообразни визуални стилове.",
|
||||
"flux-1-schnell.description": "Модел за преобразуване на текст в изображение с 12 милиарда параметъра от Black Forest Labs, използващ латентна дифузионна дестилация за генериране на висококачествени изображения в 1–4 стъпки. Съперничи на затворени алтернативи и е пуснат под лиценз Apache-2.0 за лична, изследователска и търговска употреба.",
|
||||
"flux-dev.description": "FLUX.1 [dev] е дестилиран модел с отворени тегла за нетърговска употреба. Запазва почти професионално качество на изображенията и следване на инструкции, като същевременно работи по-ефективно и използва ресурсите по-добре от стандартни модели със същия размер.",
|
||||
"flux-kontext-max.description": "Съвременно генериране и редактиране на изображения с контекст, комбиниращо текст и изображения за прецизни и последователни резултати.",
|
||||
@@ -560,6 +541,7 @@
|
||||
"gemini-1.5-pro-exp-0827.description": "Gemini 1.5 Pro 0827 прилага последните оптимизации за по-ефективна мултимодална обработка.",
|
||||
"gemini-1.5-pro-latest.description": "Gemini 1.5 Pro поддържа до 2 милиона токена, идеален среден по размер мултимодален модел за комплексни задачи.",
|
||||
"gemini-2.0-flash-001.description": "Gemini 2.0 Flash предлага функции от ново поколение, включително изключителна скорост, вградена употреба на инструменти, мултимодално генериране и контекстен прозорец от 1 милион токена.",
|
||||
"gemini-2.0-flash-exp-image-generation.description": "Експериментален модел Gemini 2.0 Flash с поддръжка за генериране на изображения.",
|
||||
"gemini-2.0-flash-lite-001.description": "Вариант на Gemini 2.0 Flash, оптимизиран за ниска цена и ниска латентност.",
|
||||
"gemini-2.0-flash-lite.description": "Вариант на Gemini 2.0 Flash, оптимизиран за ниска цена и ниска латентност.",
|
||||
"gemini-2.0-flash.description": "Gemini 2.0 Flash предлага функции от ново поколение, включително изключителна скорост, вградена употреба на инструменти, мултимодално генериране и контекстен прозорец от 1 милион токена.",
|
||||
@@ -572,13 +554,14 @@
|
||||
"gemini-2.5-flash.description": "Gemini 2.5 Flash е най-изгодният модел на Google с пълни възможности.",
|
||||
"gemini-2.5-pro-preview-03-25.description": "Gemini 2.5 Pro Preview е най-усъвършенстваният модел за разсъждение на Google, способен да разсъждава върху код, математика и STEM проблеми и да анализира големи набори от данни, кодови бази и документи с дълъг контекст.",
|
||||
"gemini-2.5-pro-preview-05-06.description": "Gemini 2.5 Pro Preview е най-усъвършенстваният модел за разсъждение на Google, способен да разсъждава върху код, математика и STEM проблеми и да анализира големи набори от данни, кодови бази и документи с дълъг контекст.",
|
||||
"gemini-2.5-pro-preview-06-05.description": "Gemini 2.5 Pro Preview е най-усъвършенстваният модел за разсъждение на Google, способен да разсъждава върху код, математика и STEM проблеми и да анализира големи набори от данни, кодови бази и документи с дълъг контекст.",
|
||||
"gemini-2.5-pro.description": "Gemini 2.5 Pro е най-усъвършенстваният модел за разсъждение на Google, способен да разсъждава върху код, математика и STEM проблеми и да анализира големи набори от данни, кодови бази и документи с дълъг контекст.",
|
||||
"gemini-3-flash-preview.description": "Gemini 3 Flash е най-интелигентният модел, създаден за скорост, съчетаващ авангардна интелигентност с отлично търсене и обоснованост.",
|
||||
"gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) е модел за генериране на изображения на Google, който също поддържа мултимодален диалог.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) е моделът за генериране на изображения на Google, който също поддържа мултимодален чат.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) е модел за генериране на изображения на Google и също така поддържа мултимодален чат.",
|
||||
"gemini-3-pro-preview.description": "Gemini 3 Pro е най-мощният агентен и „vibe-coding“ модел на Google, който предлага по-богати визуализации и по-дълбоко взаимодействие, базирано на съвременно логическо мислене.",
|
||||
"gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image (Nano Banana 2) е най-бързият модел на Google за генериране на изображения с поддръжка на мислене, разговорно генериране и редактиране на изображения.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) предлага качество на изображения от професионално ниво с Flash скорост и поддръжка на мултимодален чат.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) е най-бързият модел на Google за генериране на изображения с поддръжка на мислене, разговорно генериране и редактиране на изображения.",
|
||||
"gemini-3.1-flash-lite-preview.description": "Gemini 3.1 Flash-Lite Preview е най-икономичният мултимодален модел на Google, оптимизиран за задачи с голям обем, превод и обработка на данни.",
|
||||
"gemini-3.1-pro-preview.description": "Gemini 3.1 Pro Preview подобрява Gemini 3 Pro с усъвършенствани способности за разсъждение и добавя поддръжка за средно ниво на мислене.",
|
||||
"gemini-flash-latest.description": "Най-новата версия на Gemini Flash",
|
||||
@@ -622,9 +605,7 @@
|
||||
"glm-4v-plus-0111.description": "GLM-4V-Plus разбира видео и множество изображения, подходящ за мултимодални задачи.",
|
||||
"glm-4v-plus.description": "GLM-4V-Plus разбира видео и множество изображения, подходящ за мултимодални задачи.",
|
||||
"glm-4v.description": "GLM-4V осигурява силно разбиране на изображения и логическо мислене в различни визуални задачи.",
|
||||
"glm-5-turbo.description": "GLM-5-Turbo е основен модел, дълбоко оптимизиран за агентни сценарии. Той е специално оптимизиран за основните изисквания на агентните задачи от фазата на обучение, подобрявайки ключови способности като извикване на инструменти, следване на команди и изпълнение на дълги вериги.",
|
||||
"glm-5.description": "GLM-5 е следващото поколение флагмански основен модел на Zhipu, създаден специално за агентно инженерство. Той осигурява надеждна продуктивност в сложни системни инженерни задачи и дългосрочни агентни задачи. В областта на програмирането и агентните възможности GLM-5 постига водещи резултати сред моделите с отворен код. В реални програмни сценарии потребителското изживяване се доближава до това на Claude Opus 4.5. Той превъзхожда в сложни системни инженерни задачи и дългосрочни агентни задачи, което го прави идеален основен модел за универсални агентни асистенти.",
|
||||
"glm-5v-turbo.description": "GLM-5V-Turbo е първият мултимодален основен модел за програмиране на Zhipu, предназначен за задачи за визуално програмиране. Той може нативно да обработва мултимодални входове като изображения, видеа и текст, като същевременно превъзхожда в дългосрочно планиране, сложно програмиране и изпълнение на действия. Дълбоко интегриран с работните потоци на агенти, той може безпроблемно да си сътрудничи с агенти като Claude Code и OpenClaw, за да завърши пълен затворен цикъл от „разбиране на средата → планиране на действия → изпълнение на задачи“.",
|
||||
"glm-image.description": "GLM-Image е новият флагмански модел за генериране на изображения на Zhipu. Моделът е обучен изцяло върху местно произведени чипове и използва оригинална хибридна архитектура, която комбинира авторегресивно моделиране с дифузионен декодер. Този дизайн позволява силно глобално разбиране на инструкциите заедно с детайлно локално рендиране, преодолявайки дългогодишни предизвикателства при генерирането на съдържание, богато на знания, като постери, презентации и образователни диаграми. Той представлява важна стъпка към ново поколение парадигми на „когнитивно генеративни“ технологии, илюстрирани от Nano Banana Pro.",
|
||||
"glm-z1-air.description": "Модел за логическо мислене със силни способности за дълбоко разсъждение при сложни задачи.",
|
||||
"glm-z1-airx.description": "Ултра-бързо логическо мислене с високо качество на разсъжденията.",
|
||||
@@ -640,6 +621,7 @@
|
||||
"google/gemini-2.0-flash-lite-001.description": "Gemini 2.0 Flash Lite е олекотен вариант на Gemini с изключено мислене по подразбиране за подобрена латентност и разходи, но може да бъде активирано чрез параметри.",
|
||||
"google/gemini-2.0-flash-lite.description": "Gemini 2.0 Flash Lite предлага функции от ново поколение, включително изключителна скорост, вградена употреба на инструменти, мултимодално генериране и контекстен прозорец от 1 милион токена.",
|
||||
"google/gemini-2.0-flash.description": "Gemini 2.0 Flash е високопроизводителен модел на Google за разширени мултимодални задачи с разсъждение.",
|
||||
"google/gemini-2.5-flash-image-preview.description": "Експериментален модел Gemini 2.5 Flash с поддръжка за генериране на изображения.",
|
||||
"google/gemini-2.5-flash-image.description": "Gemini 2.5 Flash Image (Nano Banana) е модел на Google за генериране на изображения с поддръжка на мултимодален разговор.",
|
||||
"google/gemini-2.5-flash-lite.description": "Gemini 2.5 Flash Lite е олекотен вариант на Gemini 2.5, оптимизиран за ниска латентност и разходи, подходящ за сценарии с висок трафик.",
|
||||
"google/gemini-2.5-flash-preview.description": "Gemini 2.5 Flash е най-усъвършенстваният водещ модел на Google, създаден за напреднало разсъждение, програмиране, математика и научни задачи. Включва вградено „мислене“ за по-точни отговори и по-фино обработване на контекста.\n\nЗабележка: Моделът има два варианта — с мислене и без мислене. Ценообразуването на изхода се различава значително в зависимост от това дали мисленето е активирано. Ако изберете стандартния вариант (без суфикса “:thinking”), моделът изрично ще избягва генериране на мисловни токени.\n\nЗа да използвате мислене и да получавате мисловни токени, трябва да изберете варианта “:thinking”, който има по-висока цена за изхода.\n\nGemini 2.5 Flash може също да бъде конфигуриран чрез параметъра “max reasoning tokens”, както е документирано (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning).",
|
||||
@@ -649,7 +631,6 @@
|
||||
"google/gemini-2.5-pro.description": "Gemini 2.5 Pro е водещият модел на Google за разсъждение с поддръжка на дълъг контекст за сложни задачи.",
|
||||
"google/gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) е модел на Google за генериране на изображения с поддръжка на мултимодален разговор.",
|
||||
"google/gemini-3-pro-preview.description": "Gemini 3 Pro е модел от ново поколение за мултимодално разсъждение от фамилията Gemini, който разбира текст, аудио, изображения и видео и се справя със сложни задачи и големи кодови бази.",
|
||||
"google/gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image Preview, известен още като \"Nano Banana 2\", е най-новият модел на Google за генериране и редактиране на изображения, предлагащ визуално качество от професионално ниво с Flash скорост. Той комбинира усъвършенствано контекстуално разбиране с бързо, икономично извеждане, правейки сложното генериране на изображения и итеративните редакции значително по-достъпни.",
|
||||
"google/gemini-embedding-001.description": "Модел за вграждане от най-ново поколение с висока производителност при задачи на английски, многоезични и кодови задачи.",
|
||||
"google/gemini-flash-1.5.description": "Gemini 1.5 Flash осигурява оптимизирана мултимодална обработка за широк спектър от сложни задачи.",
|
||||
"google/gemini-pro-1.5.description": "Gemini 1.5 Pro съчетава най-новите оптимизации за по-ефективна обработка на мултимодални данни.",
|
||||
@@ -745,7 +726,6 @@
|
||||
"grok-code-fast-1.description": "С гордост представяме grok-code-fast-1 – бърз и икономичен логически модел, който се отличава в агентско програмиране.",
|
||||
"grok-imagine-image-pro.description": "Генерирайте изображения от текстови подсказки, редактирайте съществуващи изображения с естествен език или итеративно усъвършенствайте изображения чрез многократни разговори.",
|
||||
"grok-imagine-image.description": "Генерирайте изображения от текстови подсказки, редактирайте съществуващи изображения с естествен език или итеративно усъвършенствайте изображения чрез многократни разговори.",
|
||||
"grok-imagine-video.description": "Най-съвременно видео генериране по отношение на качество, цена и латентност.",
|
||||
"groq/compound-mini.description": "Compound-mini е композитна AI система, задвижвана от публично достъпни модели, поддържани в GroqCloud, която интелигентно и селективно използва инструменти за отговаряне на потребителски запитвания.",
|
||||
"groq/compound.description": "Compound е композитна AI система, задвижвана от множество публично достъпни модели, поддържани в GroqCloud, която интелигентно и селективно използва инструменти за отговаряне на потребителски запитвания.",
|
||||
"gryphe/mythomax-l2-13b.description": "MythoMax L2 13B е креативен и интелигентен езиков модел, създаден чрез обединяване на няколко водещи модела.",
|
||||
@@ -811,18 +791,13 @@
|
||||
"kimi-k2-0905-preview.description": "kimi-k2-0905-preview предлага прозорец на контекста от 256k, по-силно агентно програмиране, по-добро качество на front-end код и подобрено разбиране на контекста.",
|
||||
"kimi-k2-instruct.description": "Kimi K2 Instruct е официалният модел за разсъждение на Kimi с дълъг контекст за код, въпроси и отговори и други.",
|
||||
"kimi-k2-thinking-turbo.description": "Високоскоростен вариант на K2 с дълбоко мислене, 256k контекст, силно дълбоко разсъждение и скорост на изход от 60–100 токена/сек.",
|
||||
"kimi-k2-thinking.description": "Kimi-K2 е основен модел с архитектура MoE, пуснат от Moonshot AI, с изключително силни способности за кодиране и агенти. Той има общо 1T параметри и 32B активни параметри. В тестове за производителност в основни категории като общо знание, разсъждение, програмиране, математика и агенти, производителността на модела K2 надминава тази на други основни модели с отворен код.",
|
||||
"kimi-k2-thinking.description": "kimi-k2-thinking е мисловен модел на Moonshot AI с общи агентни и разсъждателни способности. Отличава се с дълбоко разсъждение и може да решава трудни задачи чрез многостъпкова употреба на инструменти.",
|
||||
"kimi-k2-turbo-preview.description": "kimi-k2 е MoE базов модел с мощни способности за програмиране и агентни задачи (1T общи параметри, 32B активни), надминаващ други водещи отворени модели в области като разсъждение, програмиране, математика и агентни бенчмаркове.",
|
||||
"kimi-k2.5.description": "Kimi K2.5 е най-универсалният модел на Kimi досега, с родна мултимодална архитектура, която поддържа както визуални, така и текстови входове, режими 'мислене' и 'немислене', както и задачи за разговори и агенти.",
|
||||
"kimi-k2.description": "Kimi-K2 е MoE базов модел от Moonshot AI с мощни способности за програмиране и агентни задачи, с общо 1T параметри и 32B активни. В бенчмаркове за общо разсъждение, програмиране, математика и агентни задачи надминава други водещи отворени модели.",
|
||||
"kimi-k2:1t.description": "Kimi K2 е голям MoE LLM от Moonshot AI с 1T общи параметри и 32B активни на всяко преминаване. Оптимизиран е за агентни способности, включително напреднало използване на инструменти, разсъждение и синтез на код.",
|
||||
"kling/kling-v3-image-generation.description": "Поддържа до 10 референтни изображения, позволявайки заключване на обекти, елементи и цветови тонове за осигуряване на консистентен стил. Комбинира трансфер на стил, референция на портрети/персонажи, сливане на множество изображения и локализирано инпейнтинг за гъвкав контрол. Осигурява реалистични детайли на портрети, с обща визуализация, която е деликатна и богато наситена, с кинематографични цветове и атмосфера.",
|
||||
"kling/kling-v3-omni-image-generation.description": "Отключете кинематографични визуализации за разказване на истории с ново поколение генериране на изображения и директен изход в 2K/4K. Дълбоко анализира аудиовизуалните елементи в подсказките, за да изпълни прецизно творческите инструкции. Поддържа гъвкави мултиреферентни входове и цялостни подобрения в качеството, идеални за сторибордове, концептуално изкуство за разказване на истории и дизайн на сцени.",
|
||||
"kling/kling-v3-omni-video-generation.description": "Новата функция „Всичко-в-едно референция“ поддържа видеа с продължителност 3–8 секунди или множество изображения за закотвяне на елементи на персонажи. Може да съответства на оригиналния звук и движения на устните за автентично представяне на персонажи. Подобрява консистентността на видеото и динамичното изразяване. Поддържа синхронизация на аудиовизуални елементи и интелигентно сторибордиране.",
|
||||
"kling/kling-v3-video-generation.description": "Интелигентното сторибордиране разбира преходите между сцени в скриптове, автоматично подреждайки позиции на камерата и типове кадри. Нативната мултимодална рамка осигурява консистентност на аудиовизуалните елементи. Премахва ограниченията за продължителност, позволявайки по-гъвкаво разказване на истории с множество кадри.",
|
||||
"kuaishou/kat-coder-pro-v1.description": "KAT-Coder-Pro-V1 (ограничено безплатен) се фокусира върху разбиране на код и автоматизация за ефективни кодиращи агенти.",
|
||||
"labs-devstral-small-2512.description": "Devstral Small 2 превъзхожда в използването на инструменти за изследване на кодови бази, редактиране на множество файлове и захранване на агенти за софтуерно инженерство.",
|
||||
"labs-leanstral-2603.description": "Първият агент за кодиране с отворен код на Mistral, предназначен за Lean 4, създаден за формално доказателство в реалистични хранилища. 119B параметри с 6.5B активни.",
|
||||
"lite.description": "Spark Lite е лек LLM с ултраниска латентност и ефективна обработка. Напълно безплатен е и поддържа търсене в реално време в уеб. Бързите му отговори се представят добре на устройства с ниска изчислителна мощност и при фина настройка на модели, осигурявайки висока ефективност на разходите и интелигентно изживяване, особено за въпроси и отговори, генериране на съдържание и търсене.",
|
||||
"llama-3.1-70b-versatile.description": "Llama 3.1 70B предоставя по-силно AI разсъждение за сложни приложения, поддържайки тежки изчисления с висока ефективност и точност.",
|
||||
"llama-3.1-8b-instant.description": "Llama 3.1 8B е високоефективен модел с бързо генериране на текст, идеален за мащабни, икономични приложения.",
|
||||
@@ -846,7 +821,7 @@
|
||||
"llava.description": "LLaVA е мултимодален модел, комбиниращ визуален енкодер и Vicuna за силно разбиране на визия и език.",
|
||||
"llava:13b.description": "LLaVA е мултимодален модел, комбиниращ визуален енкодер и Vicuna за силно разбиране на визия и език.",
|
||||
"llava:34b.description": "LLaVA е мултимодален модел, комбиниращ визуален енкодер и Vicuna за силно разбиране на визия и език.",
|
||||
"magistral-medium-2509.description": "Magistral Medium 1.2 е модел за разсъждение от фронтовата линия на Mistral AI (септември 2025) с поддръжка на визия.",
|
||||
"magistral-medium-latest.description": "Magistral Medium 1.2 е авангарден модел за разсъждение от Mistral AI (септември 2025) с поддръжка на визуални данни.",
|
||||
"magistral-small-2509.description": "Magistral Small 1.2 е малък, с отворен код модел за разсъждение от Mistral AI (септември 2025) с поддръжка на визуални данни.",
|
||||
"mathstral.description": "MathΣtral е създаден за научни изследвания и математическо разсъждение, с мощни изчислителни и обяснителни способности.",
|
||||
"max-32k.description": "Spark Max 32K предлага обработка на голям контекст с по-добро разбиране и логическо разсъждение, поддържайки входове до 32K токена за четене на дълги документи и въпроси с частни знания.",
|
||||
@@ -935,25 +910,17 @@
|
||||
"minimax/minimax-m2.1.description": "MiniMax-M2.1 е лек, авангарден голям езиков модел, оптимизиран за програмиране, агентни работни потоци и съвременно разработване на приложения, осигуряващ по-чист, по-кратък изход и по-бърза реакция.",
|
||||
"minimax/minimax-m2.description": "MiniMax-M2 е високостойностен модел, който се отличава в програмиране и агентни задачи в множество инженерни сценарии.",
|
||||
"minimaxai/minimax-m2.5.description": "MiniMax-M2.5 е най-новият голям езиков модел от MiniMax, с архитектура Mixture-of-Experts (MoE) и общо 229 милиарда параметри. Той постига водеща в индустрията производителност в програмиране, извикване на инструменти от агенти, задачи за търсене и офис сценарии.",
|
||||
"ministral-3:14b.description": "Ministral 3 14B е най-големият модел в серията Ministral 3, предлагащ производителност от най-високо ниво, сравнима с по-големия си еквивалент Mistral Small 3.2 24B. Оптимизиран за локално внедряване, той предлага висока производителност на различен хардуер, включително локални настройки.",
|
||||
"ministral-3:3b.description": "Ministral 3 3B е най-малкият и най-ефективен модел в серията Ministral 3, предлагащ силни езикови и визуални способности в компактна опаковка. Предназначен за внедряване на периферията, той предлага висока производителност на различен хардуер, включително локални настройки.",
|
||||
"ministral-3:8b.description": "Ministral 3 8B е мощен и ефективен модел в серията Ministral 3, предлагащ текстови и визуални способности от най-високо ниво. Създаден за внедряване на периферията, той предлага висока производителност на различен хардуер, включително локални настройки.",
|
||||
"ministral-3b-latest.description": "Ministral 3B е водещият edge модел на Mistral.",
|
||||
"ministral-8b-latest.description": "Ministral 8B е високоефективен edge модел от Mistral.",
|
||||
"mistral-ai/Mistral-Large-2411.description": "Флагманският модел на Mistral за сложни задачи, изискващи мащабно разсъждение или специализация (генериране на синтетичен текст, програмен код, RAG или агенти).",
|
||||
"mistral-ai/Mistral-Nemo.description": "Mistral Nemo е авангарден LLM с водещи възможности за разсъждение, световни знания и програмиране за своя размер.",
|
||||
"mistral-ai/mistral-small-2503.description": "Mistral Small е подходящ за всяка езикова задача, изискваща висока ефективност и ниска латентност.",
|
||||
"mistral-large-2411.description": "Mistral Large е водещият модел, силен в многоезични задачи, сложни разсъждения и генериране на код – идеален за приложения от висок клас.",
|
||||
"mistral-large-2512.description": "Mistral Large 3 е най-съвременен, общопредназначен мултимодален модел с отворени тегла и гранулирана архитектура Mixture-of-Experts. Характеризира се с 41B активни параметри и 675B общи параметри.",
|
||||
"mistral-large-3:675b.description": "Mistral Large 3 е най-съвременен общопредназначен мултимодален модел с отворени тегла и усъвършенствана архитектура Mixture-of-Experts. Той има 41B активни параметри и 675B общи параметри.",
|
||||
"mistral-large-instruct.description": "Mistral-Large-Instruct-2407 е усъвършенстван плътен LLM със 123 милиарда параметъра и водещи възможности за разсъждение, знания и програмиране.",
|
||||
"mistral-large-latest.description": "Mistral Large е водещият модел, отличаващ се в многоезични задачи, сложни разсъждения и генериране на код за приложения от висок клас.",
|
||||
"mistral-large-latest.description": "Mistral Large е флагманският модел, силен в многоезични задачи, сложно разсъждение и генериране на код — идеален за висококачествени приложения.",
|
||||
"mistral-large.description": "Mixtral Large е флагманският модел на Mistral, комбиниращ генериране на код, математика и разсъждение с 128K контекстен прозорец.",
|
||||
"mistral-medium-2508.description": "Mistral Medium 3.1 предлага производителност от най-високо ниво при 8× по-ниска цена и опростява внедряването в предприятия.",
|
||||
"mistral-medium-latest.description": "Mistral Medium 3.1 предоставя водеща производителност на 8× по-ниска цена и опростява корпоративното внедряване.",
|
||||
"mistral-nemo-instruct.description": "Mistral-Nemo-Instruct-2407 е версия, настроена за инструкции, на Mistral-Nemo-Base-2407.",
|
||||
"mistral-nemo.description": "Mistral Nemo е високоефективен 12B модел от Mistral AI и NVIDIA.",
|
||||
"mistral-small-2506.description": "Mistral Small е икономичен, бърз и надежден вариант за превод, обобщение и анализ на настроения.",
|
||||
"mistral-small-2603.description": "Мощен хибриден модел на Mistral, обединяващ способности за инструкции, разсъждения и кодиране в един модел. 119B параметри с 6.5B активни.",
|
||||
"mistral-small-latest.description": "Mistral Small е икономичен, бърз и надежден избор за превод, обобщение и анализ на настроения.",
|
||||
"mistral-small.description": "Mistral Small е подходящ за всяка езикова задача, изискваща висока ефективност и ниска латентност.",
|
||||
"mistral.description": "Mistral е 7B модел на Mistral AI, подходящ за разнообразни езикови задачи.",
|
||||
@@ -999,11 +966,6 @@
|
||||
"moonshotai/kimi-k2.description": "Kimi K2 е голям MoE модел от Moonshot AI с 1T общи параметри и 32B активни при всяко преминаване, оптимизиран за агентни способности, включително напреднало използване на инструменти, разсъждение и синтез на код.",
|
||||
"morph/morph-v3-fast.description": "Morph предоставя специализиран модел за прилагане на промени в кода, предложени от водещи модели (напр. Claude или GPT-4o), към съществуващите ви файлове със скорост над 4500 токена/сек. Това е последната стъпка в AI работния процес за програмиране и поддържа 16k входни/изходни токена.",
|
||||
"morph/morph-v3-large.description": "Morph предоставя специализиран модел за прилагане на промени в кода, предложени от водещи модели (напр. Claude или GPT-4o), към съществуващите ви файлове със скорост над 2500 токена/сек. Това е последната стъпка в AI работния процес за програмиране и поддържа 16k входни/изходни токена.",
|
||||
"musesteamer-2.0-lite-i2v.description": "В сравнение с Turbo, предлага превъзходна производителност с отлична икономичност.",
|
||||
"musesteamer-2.0-pro-i2v.description": "Базиран на Turbo, поддържа генериране на динамични видеа с резолюция 1080P, предлагайки по-високо визуално качество и подобрена изразителност на видеото.",
|
||||
"musesteamer-2.0-turbo-i2v-audio.description": "Поддържа генериране на динамични видеа с продължителност 5 и 10 секунди при резолюция 720P със звук. Позволява създаване на аудиовизуални произведения с много персонажи, със синхронизирани звук и визуализации, кинематографично качество на изображенията и майсторски движения на камерата.",
|
||||
"musesteamer-2.0-turbo-i2v.description": "Поддържа генериране на динамични видеа с продължителност 5 секунди при резолюция 720P без звук, с кинематографично качество на визуализациите, сложни движения на камерата и реалистични емоции и действия на персонажите.",
|
||||
"musesteamer-air-i2v.description": "Моделът за генериране на видеа Baidu MuseSteamer Air се представя добре в консистентността на обектите, физическата реалистичност, ефектите на движенията на камерата и скоростта на генериране. Поддържа генериране на динамични видеа с продължителност 5 секунди при резолюция 720P без звук, предоставяйки кинематографично качество на визуализациите, бързо генериране и отлична икономичност.",
|
||||
"musesteamer-air-image.description": "musesteamer-air-image е модел за генериране на изображения, разработен от екипа за търсене на Baidu, за да предостави изключителна стойност за разходите. Той може бързо да генерира ясни, съгласувани с действия изображения въз основа на потребителски подсказки, превръщайки описанията на потребителите лесно във визуализации.",
|
||||
"nousresearch/hermes-2-pro-llama-3-8b.description": "Hermes 2 Pro Llama 3 8B е обновена версия на Nous Hermes 2 с най-новите вътрешно разработени набори от данни.",
|
||||
"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF.description": "Llama 3.1 Nemotron 70B е персонализиран LLM от NVIDIA, създаден за подобряване на полезността. Представя се отлично в Arena Hard, AlpacaEval 2 LC и GPT-4-Turbo MT-Bench, заемайки първо място и в трите автоматични бенчмарка към 1 октомври 2024 г. Обучен е от Llama-3.1-70B-Instruct с помощта на RLHF (REINFORCE), Llama-3.1-Nemotron-70B-Reward и HelpSteer2-Preference подсказки.",
|
||||
@@ -1073,13 +1035,6 @@
|
||||
"phi3:14b.description": "Phi-3 е лек отворен модел на Microsoft за ефективна интеграция и мащабно разсъждение.",
|
||||
"pixtral-12b-2409.description": "Pixtral е силен в разбирането на графики/изображения, въпроси и отговори по документи, мултимодално разсъждение и следване на инструкции. Обработва изображения в оригинална резолюция/съотношение и поддържа множество изображения в контекст от 128K.",
|
||||
"pixtral-large-latest.description": "Pixtral Large е мултимодален отворен модел с 124 милиарда параметъра, базиран на Mistral Large 2 – вторият в нашето мултимодално семейство с водещо разбиране на изображения.",
|
||||
"pixverse/pixverse-v5.6-it2v.description": "Качете всяко изображение, за да персонализирате свободно историята, темпото и стила, генерирайки живи и последователни видеа. PixVerse V5.6 е самостоятелно разработен голям модел за генериране на видеа от Aishi Technology, предлагащ цялостни подобрения както в преобразуването на текст във видео, така и в преобразуването на изображение във видео. Моделът значително подобрява яснотата на изображенията, стабилността при сложни движения и синхронизацията на аудиовизуалните елементи. Точността на синхронизацията на устните и естественото емоционално изразяване са подобрени в сцени с диалог между множество персонажи. Композицията, осветлението и консистентността на текстурите също са оптимизирани, допълнително повишавайки цялостното качество на генериране. PixVerse V5.6 се нарежда сред най-добрите в света в класацията на Artificial Analysis за преобразуване на текст във видео и изображение във видео.",
|
||||
"pixverse/pixverse-v5.6-kf2v.description": "Постигнете плавни преходи между всякакви две изображения, създавайки по-гладки и естествени промени в сцените с визуално впечатляващи ефекти. PixVerse V5.6 е самостоятелно разработен голям модел за генериране на видеа от Aishi Technology, предлагащ цялостни подобрения както в преобразуването на текст във видео, така и в преобразуването на изображение във видео. Моделът значително подобрява яснотата на изображенията, стабилността при сложни движения и синхронизацията на аудиовизуалните елементи. Точността на синхронизацията на устните и естественото емоционално изразяване са подобрени в сцени с диалог между множество персонажи. Композицията, осветлението и консистентността на текстурите също са оптимизирани, допълнително повишавайки цялостното качество на генериране. PixVerse V5.6 се нарежда сред най-добрите в света в класацията на Artificial Analysis за преобразуване на текст във видео и изображение във видео.",
|
||||
"pixverse/pixverse-v5.6-r2v.description": "Въведете 2–7 изображения, за да обедините интелигентно различни обекти, като същевременно запазите единен стил и координирани движения, лесно изграждайки богати разказвателни сцени и подобрявайки контрола върху съдържанието и творческата свобода. PixVerse V5.6 е самостоятелно разработен голям модел за генериране на видеа от Aishi Technology, предлагащ цялостни подобрения както в преобразуването на текст във видео, така и в преобразуването на изображение във видео. Моделът значително подобрява яснотата на изображенията, стабилността при сложни движения и синхронизацията на аудиовизуалните елементи. Точността на синхронизацията на устните и естественото емоционално изразяване са подобрени в сцени с диалог между множество персонажи. Композицията, осветлението и консистентността на текстурите също са оптимизирани, допълнително повишавайки цялостното качество на генериране. PixVerse V5.6 се нарежда сред най-добрите в света в класацията на Artificial Analysis за преобразуване на текст във видео и изображение във видео.",
|
||||
"pixverse/pixverse-v5.6-t2v.description": "Въведете текстово описание, за да генерирате висококачествени видеа с скорост на ниво секунди и прецизно семантично съответствие, поддържайки множество стилове. PixVerse V5.6 е самостоятелно разработен голям модел за генериране на видеа от Aishi Technology, предлагащ цялостни подобрения както в преобразуването на текст във видео, така и в преобразуването на изображение във видео. Моделът значително подобрява яснотата на изображенията, стабилността при сложни движения и синхронизацията на аудиовизуалните елементи. Точността на синхронизацията на устните и естественото емоционално изразяване са подобрени в сцени с диалог между множество персонажи. Композицията, осветлението и консистентността на текстурите също са оптимизирани, допълнително повишавайки цялостното качество на генериране. PixVerse V5.6 се нарежда сред най-добрите в света в класацията на Artificial Analysis за преобразуване на текст във видео и изображение във видео.",
|
||||
"pixverse/pixverse-v6-it2v.description": "V6 е новият модел на PixVerse, пуснат в края на март 2026 г. Неговият it2v (изображение към видео) модел се нарежда на второ място в света. Освен способностите за контрол чрез подсказки на t2v (текст към видео), it2v може точно да възпроизвежда цветовете, наситеността, сцените и характеристиките на персонажите от референтни изображения, предоставяйки по-силни емоции на персонажите и производителност при висока скорост на движение. Поддържа видеа с продължителност до 15 секунди, директен изход на музика и видео, и множество езици. Идеален за сценарии като близки кадри на продукти за електронна търговия, рекламни промоции и симулирано C4D моделиране за показване на структури на продукти, с директен изход с едно кликване.",
|
||||
"pixverse/pixverse-v6-kf2v.description": "V6 е новият модел на PixVerse, пуснат в края на март 2026 г. Неговият kf2v (ключови кадри към видео) модел може безпроблемно да свързва всякакви две изображения, произвеждайки по-гладки и естествени видео преходи. Поддържа видеа с продължителност до 15 секунди, директен изход на музика и видео, и множество езици.",
|
||||
"pixverse/pixverse-v6-t2v.description": "V6 е новият модел на PixVerse, пуснат в края на март 2026 г. Неговият t2v (текст към видео) модел позволява прецизен контрол на визуализациите на видеото чрез подсказки, точно възпроизвеждайки различни кинематографични техники. Движенията на камерата като приближаване, отдалечаване, панорама, наклон, проследяване и следване са плавни и естествени, с прецизно и контролируемо превключване на перспективата. Поддържа видеа с продължителност до 15 секунди, директен изход на музика и видео, и множество езици.",
|
||||
"pro-128k.description": "Spark Pro 128K предлага много голям контекст, обработващ до 128K, идеален за дълги документи, изискващи пълен анализ и логическа последователност, с плавна логика и разнообразна поддръжка на цитиране в сложни дискусии.",
|
||||
"pro-deepseek-r1.description": "Модел за специализирани корпоративни услуги с включена паралелна обработка.",
|
||||
"pro-deepseek-v3.description": "Модел за специализирани корпоративни услуги с включена паралелна обработка.",
|
||||
@@ -1234,8 +1189,6 @@
|
||||
"qwq.description": "QwQ е модел за аргументация от семейството на Qwen. В сравнение със стандартните модели, обучени с инструкции, предлага мисловни и логически способности, които значително подобряват ефективността при трудни задачи. QwQ-32B е среден по размер модел, който се конкурира с водещи модели като DeepSeek-R1 и o1-mini.",
|
||||
"qwq_32b.description": "Среден по размер модел за аргументация от семейството на Qwen. В сравнение със стандартните модели, обучени с инструкции, мисловните и логическите способности на QwQ значително подобряват ефективността при трудни задачи.",
|
||||
"r1-1776.description": "R1-1776 е дообучен вариант на DeepSeek R1, създаден да предоставя неконфронтирана, обективна и фактическа информация.",
|
||||
"seedance-1-5-pro-251215.description": "Seedance 1.5 Pro от ByteDance поддържа преобразуване на текст във видео, изображение във видео (първи кадър, първи+последен кадър) и генериране на аудио, синхронизирано с визуализациите.",
|
||||
"seedream-5-0-260128.description": "ByteDance-Seedream-5.0-lite от BytePlus предлага генериране, обогатено с уеб извличане за реална информация, подобрена интерпретация на сложни подсказки и подобрена консистентност на референциите за професионално визуално създаване.",
|
||||
"solar-mini-ja.description": "Solar Mini (Ja) разширява Solar Mini с фокус върху японски език, като запазва ефективността и силната производителност на английски и корейски.",
|
||||
"solar-mini.description": "Solar Mini е компактен LLM, който превъзхожда GPT-3.5, с мощни многоезични възможности, поддържащ английски и корейски, и предлага ефективно решение с малък отпечатък.",
|
||||
"solar-pro.description": "Solar Pro е интелигентен LLM от Upstage, фокусиран върху следване на инструкции на един GPU, с IFEval резултати над 80. Понастоящем поддържа английски; пълното издание е планирано за ноември 2024 с разширена езикова поддръжка и по-дълъг контекст.",
|
||||
@@ -1245,8 +1198,6 @@
|
||||
"sonar-reasoning.description": "Разширен продукт за търсене с обосновани резултати за сложни заявки и последващи въпроси.",
|
||||
"sonar.description": "Лек продукт с обосновано търсене, по-бърз и по-евтин от Sonar Pro.",
|
||||
"sophnet/deepseek-v3.2.description": "DeepSeek V3.2 е модел, който балансира висока изчислителна ефективност и отлична производителност за разсъждение и агенти.",
|
||||
"sora-2-pro.description": "Sora 2 Pro е нашият най-съвременен, най-напреднал модел за генериране на медии, генериращ видеа със синхронизиран звук. Той може да създава богато детайлизирани, динамични клипове от естествен език или изображения.",
|
||||
"sora-2.description": "Sora 2 е нашият нов мощен модел за генериране на медии, генериращ видеа със синхронизиран звук. Той може да създава богато детайлизирани, динамични клипове от естествен език или изображения.",
|
||||
"spark-x.description": "Преглед на възможностите на X2: 1. Въвежда динамично регулиране на режима на разсъждение, контролирано чрез полето `thinking`. 2. Разширена дължина на контекста: 64K входни токени и 128K изходни токени. 3. Поддържа функционалност за извикване на функции.",
|
||||
"stable-diffusion-3-medium.description": "Най-новият модел за преобразуване на текст в изображение от Stability AI. Тази версия значително подобрява качеството на изображенията, разбирането на текст и стиловото разнообразие, като по-точно интерпретира сложни естественоезикови заявки и генерира по-прецизни и разнообразни изображения.",
|
||||
"stable-diffusion-3.5-large-turbo.description": "stable-diffusion-3.5-large-turbo използва adversarial diffusion distillation (ADD) върху stable-diffusion-3.5-large за по-висока скорост.",
|
||||
@@ -1301,68 +1252,23 @@
|
||||
"v0-1.0-md.description": "v0-1.0-md е наследен модел, достъпен чрез v0 API.",
|
||||
"v0-1.5-lg.description": "v0-1.5-lg е подходящ за напреднали мисловни или логически задачи.",
|
||||
"v0-1.5-md.description": "v0-1.5-md е подходящ за ежедневни задачи и генериране на потребителски интерфейси.",
|
||||
"veo-2.0-generate-001.description": "Нашият най-съвременен модел за генериране на видеа, достъпен за разработчици в платената версия на Gemini API.",
|
||||
"veo-3.0-fast-generate-001.description": "Нашият стабилен модел за генериране на видеа, достъпен за разработчици в платената версия на Gemini API.",
|
||||
"veo-3.0-generate-001.description": "Нашият стабилен модел за генериране на видеа, достъпен за разработчици в платената версия на Gemini API.",
|
||||
"veo-3.1-fast-generate-preview.description": "Нашият най-нов модел за генериране на видеа, достъпен за разработчици в платената версия на Gemini API.",
|
||||
"veo-3.1-generate-preview.description": "Нашият най-нов модел за генериране на видеа, достъпен за разработчици в платената версия на Gemini API.",
|
||||
"vercel/v0-1.0-md.description": "Достъп до моделите зад v0 за генериране, корекция и оптимизация на съвременни уеб приложения с логика, специфична за рамката, и актуални знания.",
|
||||
"vercel/v0-1.5-md.description": "Достъп до моделите зад v0 за генериране, корекция и оптимизация на съвременни уеб приложения с логика, специфична за рамката, и актуални знания.",
|
||||
"vidu/viduq2-pro_img2video.description": "Въведете изображение и текстово описание, за да генерирате видео. ViduQ2-Pro преобразуване на изображение във видео е първият в света модел „Всичко може да бъде референция“ за видео. Поддържа шест референтни измерения – ефекти, изрази, текстури, действия, персонажи и сцени – позволявайки напълно развито редактиране на видеа. Чрез контролируемо добавяне, изтриване и модификация, той постига фино редактиране на видеа, проектиран като двигател за създаване на продукция за анимационни серии, кратки драми и филмова продукция.",
|
||||
"vidu/viduq2-pro_reference2video.description": "Въведете референтни видеа, изображения и текстово описание, за да генерирате видео. ViduQ2-Pro преобразуване на референция във видео е първият в света модел „Всичко може да бъде референция“ за видео. Поддържа шест референтни измерения – ефекти, изрази, текстури, действия, персонажи и сцени – позволявайки напълно развито редактиране на видеа. Чрез контролируемо добавяне, изтриване и модификация, той постига фино редактиране на видеа, проектиран като двигател за създаване на продукция за анимационни серии, кратки драми и филмова продукция.",
|
||||
"vidu/viduq2-pro_start-end2video.description": "Въведете изображения на първия и последния кадър заедно с текстово описание, за да генерирате видео. ViduQ2-Pro преобразуване на ключови кадри във видео е първият в света модел „Всичко може да бъде референция“ за видео. Поддържа шест референтни измерения – ефекти, изрази, текстури, действия, персонажи и сцени – позволявайки напълно развито редактиране на видеа. Чрез контролируемо добавяне, изтриване и модификация, той постига фино редактиране на видеа, проектиран като двигател за създаване на продукция за анимационни серии, кратки драми и филмова продукция.",
|
||||
"vidu/viduq2-turbo_img2video.description": "Въведете изображение и текстово описание, за да генерирате видео. ViduQ2-Turbo преобразуване на изображение във видео е ултра-бърз двигател за генериране. 5-секундно видео с резолюция 720P може да бъде генерирано за само 19 секунди, а 5-секундно видео с резолюция 1080P за около 27 секунди. Действията и изразите на персонажите са естествени и реалистични, предоставяйки силна автентичност и отлично представяне в сцени с висока динамика като екшън последователности, с широк обхват на движения.",
|
||||
"vidu/viduq2-turbo_start-end2video.description": "Въведете изображения на първия и последния кадър заедно с текстово описание, за да генерирате видео. ViduQ2-Turbo преобразуване на ключови кадри във видео е ултра-бърз двигател за генериране. 5-секундно видео с резолюция 720P може да бъде произведено за само 19 секунди, а 5-секундно видео с резолюция 1080P за около 27 секунди. Действията и изразите на персонажите са естествени и реалистични, със силна автентичност, превъзхождайки в сцени с висока динамика като екшън последователности, и поддържайки широк обхват на движения.",
|
||||
"vidu/viduq2_reference2video.description": "Въведете референтни изображения заедно с текстово описание, за да генерирате видео. ViduQ2 преобразуване на референция във видео е модел, проектиран за прецизно следване на инструкции и нюансирано улавяне на емоции. Той предлага изключителен контрол върху разказа, точно интерпретирайки и изразявайки промени в микро-изразите; характеризира се с богата кинематографична езикова, плавни движения на камерата и силно визуално напрежение. Широко приложим за филми и анимация, реклама и електронна търговия, кратки драми и културно-туристически индустрии.",
|
||||
"vidu/viduq2_text2video.description": "Въведете текстова подсказка, за да генерирате видео. ViduQ2 преобразуване на текст във видео е модел, проектиран за прецизно следване на инструкции и нюансирано улавяне на емоции. Той предлага изключителен контрол върху разказа, точно интерпретирайки и изразявайки промени в микро-изразите; характеризира се с богата кинематографична езикова, плавни движения на камерата и силно визуално напрежение. Широко приложим за филми и анимация, реклама и електронна търговия, кратки драми и културно-туристически индустрии.",
|
||||
"vidu/viduq3-pro_img2video.description": "Въведете изображение и текстово описание, за да генерирате видео. ViduQ3-Pro преобразуване на изображение във видео е модел от флагманско ниво, нативен за аудио-визуални елементи. Поддържа до 16 секунди синхронизирано аудио-визуално генериране, позволявайки свободно превключване между множество кадри, като същевременно прецизно контролира темпото, емоциите и разказвателната последователност. С водещ мащаб на параметрите, той предоставя изключително качество на изображенията, консистентност на персонажите и емоционално изразяване, отговарящо на кинематографични стандарти. Идеален за професионални производствени сценарии като реклама (електронна търговия, TVC, кампании за представяне), анимационни серии, драми на живо и игри.",
|
||||
"vidu/viduq3-pro_start-end2video.description": "Въведете изображения на първия и последния кадър заедно с текстово описание, за да генерирате видео. ViduQ3-Pro преобразуване на ключови кадри във видео е модел от флагманско ниво, нативен за аудио-визуални елементи. Поддържа до 16 секунди синхронизирано аудио-визуално генериране, позволявайки свободно превключване между множество кадри, като същевременно прецизно контролира темпото, емоциите и разказвателната последователност. С водещ мащаб на параметрите, той предоставя изключително качество на изображенията, консистентност на персонажите и емоционално изразяване, отговарящо на кинематографични стандарти. Идеален за професионални производствени сценарии като реклама (електронна търговия, TVC, кампании за представяне), анимационни серии, драми на живо и игри.",
|
||||
"vidu/viduq3-pro_text2video.description": "Въведете текстова подсказка, за да генерирате видео. ViduQ3-Pro преобразуване на текст във видео е модел от флагманско ниво, нативен за аудио-визуални елементи. Поддържа до 16 секунди синхронизирано аудио-визуално генериране, позволявайки свободно превключване между множество кадри, като същевременно прецизно контролира темпото, емоциите и разказвателната последователност. С водещ мащаб на параметрите, той предоставя изключително качество на изображенията, консистентност на персонажите и емоционално изразяване, отговарящо на кинематографични стандарти. Идеален за професионални производствени сценарии като реклама (електронна търговия, TVC, кампании за представяне), анимационни серии, драми на живо и игри.",
|
||||
"vidu/viduq3-turbo_img2video.description": "Въведете изображение и текстово описание, за да генерирате видео. ViduQ3-Turbo преобразуване на изображение във видео е високопроизводителен ускорен модел. Той предлага изключително бързо генериране, като същевременно поддържа висококачествени визуализации и динамично изразяване, превъзхождайки в екшън сцени, емоционално изобразяване и семантично разбиране. Икономичен и идеален за случайни развлекателни сценарии като изображения за социални медии, AI спътници и активи за специални ефекти.",
|
||||
"vidu/viduq3-turbo_start-end2video.description": "Въведете изображения на първия и последния кадър заедно с текстово описание, за да генерирате видео. ViduQ3-Turbo преобразуване на ключови кадри във видео е високопроизводителен ускорен модел. Той предлага изключително бързо генериране, като същевременно поддържа висококачествени визуализации и динамично изразяване, превъзхождайки в екшън сцени, емоционално изобразяване и семантично разбиране. Икономичен и идеален за случайни развлекателни сценарии като изображения за социални медии, AI спътници и активи за специални ефекти.",
|
||||
"vidu/viduq3-turbo_text2video.description": "Въведете текстова подсказка, за да генерирате видео. ViduQ3-Turbo преобразуване на текст във видео е високопроизводителен ускорен модел. Той предлага изключително бързо генериране, като същевременно поддържа висококачествени визуализации и динамично изразяване, превъзхождайки в екшън сцени, емоционално изобразяване и семантично разбиране. Икономичен и добре подходящ за случайни развлекателни сценарии като изображения за социални медии, AI спътници и активи за специални ефекти.",
|
||||
"vidu2-image.description": "Vidu 2 е основен модел за генериране на видеа, проектиран да балансира скоростта и качеството. Той се фокусира върху преобразуване на изображение във видео и контрол на начални и крайни кадри, поддържайки видеа с продължителност 4 секунди при резолюция 720P. Скоростта на генериране е значително подобрена, докато разходите са значително намалени. Преобразуването на изображение във видео поправя предишни проблеми с промяна на цветовете, предоставяйки стабилни и контролируеми визуализации, подходящи за електронна търговия и подобни приложения. Освен това, семантичното разбиране на начални и крайни кадри и консистентността между множество референтни изображения са подобрени, правейки го ефективен инструмент за мащабно производство на съдържание в общо развлечение, интернет медии, анимационни кратки драми и реклама.",
|
||||
"vidu2-reference.description": "Vidu 2 е основен модел за генериране на видеа, проектиран да балансира скоростта и качеството. Той се фокусира върху преобразуване на изображение във видео и контрол на начални и крайни кадри, поддържайки видеа с продължителност 4 секунди при резолюция 720P. Скоростта на генериране е значително подобрена, докато разходите са значително намалени. Преобразуването на изображение във видео поправя предишни проблеми с промяна на цветовете, предоставяйки стабилни и контролируеми визуализации, подходящи за електронна търговия и подобни приложения. Освен това, семантичното разбиране на начални и крайни кадри и консистентността между множество референтни изображения са подобрени, правейки го ефективен инструмент за мащабно производство на съдържание в общо развлечение, интернет медии, анимационни кратки драми и реклама.",
|
||||
"vidu2-start-end.description": "Vidu 2 е основен модел за генериране на видеа, проектиран да балансира скоростта и качеството. Той се фокусира върху преобразуване на изображение във видео и контрол на начални и крайни кадри, поддържайки видеа с продължителност 4 секунди при резолюция 720P. Скоростта на генериране е значително подобрена, докато разходите са значително намалени. Преобразуването на изображение във видео поправя предишни проблеми с промяна на цветовете, предоставяйки стабилни и контролируеми визуализации, подходящи за електронна търговия и подобни приложения. Освен това, семантичното разбиране на начални и крайни кадри и консистентността между множество референтни изображения са подобрени, правейки го ефективен инструмент за мащабно производство на съдържание в общо развлечение, интернет медии, анимационни кратки драми и реклама.",
|
||||
"viduq1-image.description": "Vidu Q1 е следващото поколение основен модел за генериране на видеа на Vidu, фокусиран върху висококачествено създаване на видеа. Той произвежда съдържание с фиксирани спецификации от 5 секунди, 24 FPS и резолюция 1080P. Чрез дълбока оптимизация на визуалната яснота, общото качество на изображенията и текстурата са значително подобрени, докато проблеми като деформация на ръцете и трептене на кадрите са значително намалени. Реалистичният стил се доближава до реални сцени, а стиловете на 2D анимация се запазват с висока точност. Преходите между начални и крайни кадри са по-гладки, правейки го добре подходящ за сценарии с високи изисквания за творчество като филмова продукция, реклама и анимационни кратки драми.",
|
||||
"viduq1-start-end.description": "Vidu Q1 е следващото поколение основен модел за генериране на видеа на Vidu, фокусиран върху висококачествено създаване на видеа. Той произвежда съдържание с фиксирани спецификации от 5 секунди, 24 FPS и резолюция 1080P. Чрез дълбока оптимизация на визуалната яснота, общото качество на изображенията и текстурата са значително подобрени, докато проблеми като деформация на ръцете и трептене на кадрите са значително намалени. Реалистичният стил се доближава до реални сцени, а стиловете на 2D анимация се запазват с висока точност. Преходите между начални и крайни кадри са по-гладки, правейки го добре подходящ за сценарии с високи изисквания за творчество като филмова продукция, реклама и анимационни кратки драми.",
|
||||
"viduq1-text.description": "Vidu Q1 е следващото поколение основен модел за генериране на видеа на Vidu, фокусиран върху висококачествено създаване на видеа. Той произвежда съдържание с фиксирани спецификации от 5 секунди, 24 FPS и резолюция 1080P. Чрез дълбока оптимизация на визуалната яснота, общото качество на изображенията и текстурата са значително подобрени, докато проблеми като деформация на ръцете и трептене на кадрите са значително намалени. Реалистичният стил се доближава до реални сцени, а стиловете на 2D анимация се запазват с висока точност. Преходите между начални и крайни кадри са по-гладки, правейки го добре подходящ за сценарии с високи изисквания за творчество като филмова продукция, реклама и анимационни кратки драми.",
|
||||
"volcengine/doubao-seed-2-0-code.description": "Doubao-Seed-2.0-Code е оптимизиран за нуждите на програмиране на корпоративно ниво. Изграден върху отличните възможности на Agent и VLM от Seed 2.0, той специално подобрява способностите за кодиране с изключителна производителност на фронтенда и целенасочена оптимизация за често срещани корпоративни изисквания за многозначно кодиране, което го прави идеален за интеграция с различни AI инструменти за програмиране.",
|
||||
"volcengine/doubao-seed-2-0-lite.description": "Баланс между качеството на генериране и скоростта на отговор, подходящ като универсален модел за производствени цели.",
|
||||
"volcengine/doubao-seed-2-0-mini.description": "Посочва най-новата версия на doubao-seed-2-0-mini.",
|
||||
"volcengine/doubao-seed-2-0-pro.description": "Посочва най-новата версия на doubao-seed-2-0-pro.",
|
||||
"volcengine/doubao-seed-code.description": "Doubao-Seed-Code е LLM на ByteDance Volcano Engine, оптимизиран за агентно програмиране, с висока ефективност в програмиране и агентни бенчмаркове и поддръжка на контекст от 256K.",
|
||||
"wan2.2-i2v-flash.description": "Wanxiang 2.2 Speed Edition предлага ултра-бързо генериране, с по-точно разбиране на подсказките и контрол на камерата. Той поддържа консистентност на визуалните елементи, като същевременно значително подобрява общата стабилност и успеваемост.",
|
||||
"wan2.2-i2v-plus.description": "Wanxiang 2.2 Pro Edition предлага по-точно разбиране на подсказките и контролируеми движения на камерата. Той поддържа консистентност на визуалните елементи, като същевременно значително подобрява стабилността и успеваемостта, и генерира по-богато и детайлно съдържание.",
|
||||
"wan2.2-kf2v-flash.description": "Wanxiang 2.2 Speed Edition",
|
||||
"wan2.2-kf2v-plus.description": "Wanxiang 2.2 Plus Edition",
|
||||
"wan2.2-t2i-flash.description": "Wanxiang 2.2 Flash е най-новият модел с подобрения в креативността, стабилността и реализма, предоставящ бързо генериране и висока стойност.",
|
||||
"wan2.2-t2i-plus.description": "Wanxiang 2.2 Plus е най-новият модел с подобрения в креативността, стабилността и реализма, произвеждащ по-богати детайли.",
|
||||
"wan2.2-t2v-plus.description": "Wanxiang 2.2 Pro Edition предоставя по-точно разбиране на подсказките, осигурява стабилно и плавно генериране на движения и произвежда по-богати и детайлни визуализации.",
|
||||
"wan2.5-i2i-preview.description": "Wanxiang 2.5 I2I Preview поддържа редактиране на единични изображения и сливане на множество изображения.",
|
||||
"wan2.5-i2v-preview.description": "Wanxiang 2.5 Preview поддържа автоматично генериране на гласови записи и възможност за включване на персонализирани аудио файлове.",
|
||||
"wan2.5-t2i-preview.description": "Wanxiang 2.5 T2I поддържа гъвкав избор на размери на изображения в рамките на общата площ на пикселите и ограниченията на съотношението.",
|
||||
"wan2.5-t2v-preview.description": "Wanxiang 2.5 Preview поддържа автоматично генериране на гласови записи и възможност за включване на персонализирани аудио файлове.",
|
||||
"wan2.6-i2v-flash.description": "Wanxiang 2.6 въвежда възможности за разказване с множество кадри, като същевременно поддържа автоматично генериране на гласови записи и възможност за включване на персонализирани аудио файлове.",
|
||||
"wan2.6-i2v.description": "Wanxiang 2.6 въвежда възможности за разказване с множество кадри, като същевременно поддържа автоматично генериране на гласови записи и възможност за включване на персонализирани аудио файлове.",
|
||||
"wan2.6-image.description": "Wanxiang 2.6 Image поддържа редактиране на изображения и смесен изход на оформление на изображения и текст.",
|
||||
"wan2.6-r2v-flash.description": "Wanxiang 2.6 Reference-to-Video – Flash предлага по-бързо генериране и по-добра икономичност. Той поддържа референция на специфични персонажи или обекти, точно запазвайки консистентност във външния вид и гласа, и позволява референция на множество персонажи за съвместно представяне.",
|
||||
"wan2.6-r2v.description": "Wanxiang 2.6 Reference-to-Video поддържа референция на специфични персонажи или обекти, точно запазвайки консистентност във външния вид и гласа, и позволява референция на множество персонажи за съвместно представяне. Забележка: При използване на видеа като референции, входното видео също ще бъде включено в разходите. Моля, вижте документацията за ценообразуване на модела за подробности.",
|
||||
"wan2.6-t2i.description": "Wanxiang 2.6 T2I поддържа гъвкав избор на размери на изображения в рамките на общата площ на пикселите и ограниченията на съотношението (същото като Wanxiang 2.5).",
|
||||
"wan2.6-t2v.description": "Wanxiang 2.6 въвежда възможности за разказване с множество кадри, като същевременно поддържа автоматично генериране на гласови записи и възможност за включване на персонализирани аудио файлове.",
|
||||
"wan2.7-i2v.description": "Wanxiang 2.7 Image-to-Video предоставя цялостно подобрение в производителността. Драматичните сцени включват деликатно и естествено емоционално изразяване, докато екшън последователностите са интензивни и въздействащи. Комбинирано с по-динамични и ритмично управлявани преходи между кадри, той постига по-силна обща производителност и разказване на истории.",
|
||||
"wan2.7-image-pro.description": "Wanxiang 2.7 Image Professional Edition, поддържа изход с висока разделителна способност 4K.",
|
||||
"wan2.7-image.description": "Wanxiang 2.7 Image, по-бърза скорост на генериране на изображения.",
|
||||
"wan2.7-r2v.description": "Wanxiang 2.7 Reference-to-Video предлага по-стабилни референции за персонажи, реквизит и сцени. Той поддържа до 5 смесени референтни изображения или видеа, заедно с референция на аудио тон. Комбинирано с подобрени основни способности, той предоставя по-силна производителност и изразителност.",
|
||||
"wan2.7-t2v.description": "Wanxiang 2.7 Text-to-Video предоставя цялостно подобрение в производителността. Драматичните сцени включват деликатно и естествено емоционално изразяване, докато екшън последователностите са интензивни и въздействащи. Подобрено с по-динамични и ритмично управлявани преходи между кадри, той постига по-силна обща актьорска и разказвателна производителност.",
|
||||
"wanx-v1.description": "Базов модел за преобразуване на текст в изображение. Съответства на Tongyi Wanxiang 1.0 General.",
|
||||
"wanx2.0-t2i-turbo.description": "Изключителен при текстурирани портрети с умерена скорост и по-ниска цена. Съответства на Tongyi Wanxiang 2.0 Speed.",
|
||||
"wanx2.1-i2v-plus.description": "Wanxiang 2.1 Pro Edition предоставя по-рафинирани визуализации и изображения с по-високо качество.",
|
||||
"wanx2.1-i2v-turbo.description": "Wanxiang 2.1 Speed Edition предлага висока икономичност.",
|
||||
"wanx2.1-t2i-plus.description": "Изцяло обновена версия с по-богати детайли в изображенията и леко по-бавна скорост. Съответства на Tongyi Wanxiang 2.1 Pro.",
|
||||
"wanx2.1-t2i-turbo.description": "Изцяло обновена версия с бързо генериране, високо общо качество и отлична стойност. Съответства на Tongyi Wanxiang 2.1 Speed.",
|
||||
"wanx2.1-t2v-plus.description": "Wanxiang 2.1 Pro Edition предоставя по-богата визуална текстура и изображения с по-високо качество.",
|
||||
"wanx2.1-t2v-turbo.description": "Wanxiang 2.1 Speed Edition предлага отлична икономичност.",
|
||||
"whisper-1.description": "Общ модел за разпознаване на реч с поддръжка на многоезичен ASR, превод на реч и идентификация на език.",
|
||||
"wizardlm2.description": "WizardLM 2 е езиков модел от Microsoft AI, който се отличава в сложни диалози, многоезични задачи, логика и асистенти.",
|
||||
"wizardlm2:8x22b.description": "WizardLM 2 е езиков модел от Microsoft AI, който се отличава в сложни диалози, многоезични задачи, логика и асистенти.",
|
||||
@@ -1399,6 +1305,7 @@
|
||||
"z-ai/glm4.7.description": "GLM-4.7 е най-новият флагмански модел на Zhipu, подобрен за сценарии на агентно кодиране с усъвършенствани кодови способности.",
|
||||
"z-ai/glm5.description": "GLM-5 е новият флагмански основен модел на Zhipu AI за инженеринг на агенти, постигайки отворен източник SOTA производителност в кодиране и способности на агенти. Сравнява се с Claude Opus 4.5 по производителност.",
|
||||
"z-image-turbo.description": "Z-Image е лек модел за генериране на изображения от текст, който може бързо да произвежда изображения, поддържа както китайско, така и английско рендиране на текст и гъвкаво се адаптира към множество резолюции и съотношения.",
|
||||
"zai-glm-4.7.description": "Този модел предоставя силна производителност в кодирането с напреднали способности за разсъждение, превъзходно използване на инструменти и подобрена реална производителност в агентни приложения за кодиране.",
|
||||
"zai-org/GLM-4.5-Air.description": "GLM-4.5-Air е базов модел за агентни приложения с архитектура Mixture-of-Experts. Оптимизиран е за използване на инструменти, уеб браузване, софтуерно инженерство и фронтенд програмиране, и се интегрира с кодови агенти като Claude Code и Roo Code. Използва хибридно разсъждение за справяне както със сложни, така и с ежедневни задачи.",
|
||||
"zai-org/GLM-4.5V.description": "GLM-4.5V е най-новият визуален езиков модел (VLM) на Zhipu AI, изграден върху флагманския текстов модел GLM-4.5-Air (106B общо, 12B активни) с MoE архитектура за висока производителност при по-ниска цена. Следва пътя на GLM-4.1V-Thinking и добавя 3D-RoPE за подобрено пространствено разсъждение в 3D. Оптимизиран чрез предварително обучение, SFT и RL, обработва изображения, видео и дълги документи и е сред водещите отворени модели в 41 публични мултимодални бенчмарка. Режимът Thinking позволява на потребителите да балансират между скорост и дълбочина.",
|
||||
"zai-org/GLM-4.6.description": "В сравнение с GLM-4.5, GLM-4.6 разширява контекста от 128K до 200K за по-сложни агентни задачи. Постига по-високи резултати в кодови бенчмаркове и показва по-добра реална производителност в приложения като Claude Code, Cline, Roo Code и Kilo Code, включително по-добро генериране на фронтенд страници. Разсъждението е подобрено и се поддържа използване на инструменти по време на разсъждение, което засилва цялостните възможности. По-добре се интегрира в агентни рамки, подобрява инструментите/търсещите агенти и има по-предпочитан от хора стил на писане и естественост в ролевите сценарии.",
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
"builtins.lobe-cloud-sandbox.apiName.runCommand": "Изпълнение на команда",
|
||||
"builtins.lobe-cloud-sandbox.apiName.searchLocalFiles": "Търсене на файлове",
|
||||
"builtins.lobe-cloud-sandbox.apiName.writeLocalFile": "Запис на файл",
|
||||
"builtins.lobe-cloud-sandbox.inspector.noResults": "Няма резултати",
|
||||
"builtins.lobe-cloud-sandbox.title": "Облачна пясъчник среда",
|
||||
"builtins.lobe-group-agent-builder.apiName.batchCreateAgents": "Създай агенти на групи",
|
||||
"builtins.lobe-group-agent-builder.apiName.createAgent": "Създай агент",
|
||||
@@ -227,7 +226,6 @@
|
||||
"builtins.lobe-user-memory.apiName.addExperienceMemory": "Добавяне на памет за опит",
|
||||
"builtins.lobe-user-memory.apiName.addIdentityMemory": "Добавяне на памет за идентичност",
|
||||
"builtins.lobe-user-memory.apiName.addPreferenceMemory": "Добавяне на памет за предпочитания",
|
||||
"builtins.lobe-user-memory.apiName.queryTaxonomyOptions": "Запитване за таксономия",
|
||||
"builtins.lobe-user-memory.apiName.removeIdentityMemory": "Изтриване на памет за идентичност",
|
||||
"builtins.lobe-user-memory.apiName.searchUserMemory": "Търсене в паметта",
|
||||
"builtins.lobe-user-memory.apiName.updateIdentityMemory": "Актуализиране на памет за идентичност",
|
||||
@@ -417,13 +415,9 @@
|
||||
"loading.plugin": "Умението работи…",
|
||||
"localSystem.workingDirectory.agentDescription": "По подразбиране работна директория за всички разговори с този агент",
|
||||
"localSystem.workingDirectory.agentLevel": "Работна директория на агента",
|
||||
"localSystem.workingDirectory.chooseDifferentFolder": "Изберете друга папка",
|
||||
"localSystem.workingDirectory.current": "Текуща работна директория",
|
||||
"localSystem.workingDirectory.noRecent": "Няма скорошни директории",
|
||||
"localSystem.workingDirectory.notSet": "Кликнете, за да зададете работна директория",
|
||||
"localSystem.workingDirectory.placeholder": "Въведете път до директория, напр. /Users/name/projects",
|
||||
"localSystem.workingDirectory.recent": "Скорошни",
|
||||
"localSystem.workingDirectory.removeRecent": "Премахване от скорошни",
|
||||
"localSystem.workingDirectory.selectFolder": "Изберете папка",
|
||||
"localSystem.workingDirectory.title": "Работна директория",
|
||||
"localSystem.workingDirectory.topicDescription": "Замени подразбираната директория на агента само за този разговор",
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
"jina.description": "Основана през 2020 г., Jina AI е водеща компания в областта на търсещия AI. Технологичният ѝ стек включва векторни модели, преоценители и малки езикови модели за създаване на надеждни генеративни и мултимодални търсещи приложения.",
|
||||
"kimicodingplan.description": "Kimi Code от Moonshot AI предоставя достъп до модели Kimi, включително K2.5, за задачи, свързани с програмиране.",
|
||||
"lmstudio.description": "LM Studio е десктоп приложение за разработка и експериментиране с LLM на вашия компютър.",
|
||||
"lobehub.description": "LobeHub Cloud използва официални API за достъп до AI модели и измерва използването с Кредити, свързани с токени на модела.",
|
||||
"longcat.description": "LongCat е серия от големи модели за генеративен AI, независимо разработени от Meituan. Той е създаден да подобри вътрешната продуктивност на предприятието и да позволи иновативни приложения чрез ефективна изчислителна архитектура и силни мултимодални възможности.",
|
||||
"minimax.description": "Основана през 2021 г., MiniMax създава универсален AI с мултимодални базови модели, включително текстови модели с трилиони параметри, речеви и визуални модели, както и приложения като Hailuo AI.",
|
||||
"minimaxcodingplan.description": "MiniMax Token Plan предоставя достъп до модели MiniMax, включително M2.7, за задачи, свързани с програмиране, чрез абонамент с фиксирана такса.",
|
||||
|
||||
@@ -652,11 +652,6 @@
|
||||
"settingSystem.oauth.signout.confirm": "Потвърждавате ли изход?",
|
||||
"settingSystem.oauth.signout.success": "Успешен изход",
|
||||
"settingSystem.title": "Системни настройки",
|
||||
"settingSystemTools.appEnvironment.chromium.desc": "Версия на браузърния двигател Chromium",
|
||||
"settingSystemTools.appEnvironment.desc": "Вградени версии на средата за изпълнение в настолното приложение",
|
||||
"settingSystemTools.appEnvironment.electron.desc": "Версия на рамката Electron",
|
||||
"settingSystemTools.appEnvironment.node.desc": "Вградена версия на Node.js",
|
||||
"settingSystemTools.appEnvironment.title": "Среда на приложението",
|
||||
"settingSystemTools.autoSelectDesc": "Най-добрият наличен инструмент ще бъде избран автоматично",
|
||||
"settingSystemTools.category.browserAutomation": "Автоматизация на браузъра",
|
||||
"settingSystemTools.category.browserAutomation.desc": "Инструменти за автоматизация на браузъра без графичен интерфейс и уеб взаимодействие",
|
||||
@@ -710,8 +705,6 @@
|
||||
"skillStore.tabs.community": "Общност",
|
||||
"skillStore.tabs.custom": "Персонализирано",
|
||||
"skillStore.tabs.lobehub": "LobeHub",
|
||||
"skillStore.tabs.mcp": "MCP",
|
||||
"skillStore.tabs.skills": "Умения",
|
||||
"skillStore.title": "Магазин за умения",
|
||||
"skillStore.wantMore.action": "Изпрати заявка →",
|
||||
"skillStore.wantMore.feedback.message": "## Име на умението\n[Моля, попълнете]\n\n## Сценарий на използване\nКогато съм ___, имам нужда от ___\n\n## Очаквани функции\n1.\n2.\n3.\n\n## Примерни референции\n(По избор) Има ли подобни инструменти или функции за справка?\n\n---\n💡 Съвет: Колкото по-конкретно е описанието ви, толкова по-добре можем да отговорим на нуждите ви",
|
||||
@@ -775,9 +768,6 @@
|
||||
"systemAgent.historyCompress.label": "Модел",
|
||||
"systemAgent.historyCompress.modelDesc": "Посочете модел за компресиране на историята на разговорите",
|
||||
"systemAgent.historyCompress.title": "Агент за компресиране на историята на разговорите",
|
||||
"systemAgent.inputCompletion.label": "Модел",
|
||||
"systemAgent.inputCompletion.modelDesc": "Модел, използван за предложения за автоматично довършване на въвеждане (като призрачния текст на GitHub Copilot)",
|
||||
"systemAgent.inputCompletion.title": "Агент за автоматично довършване на въвеждане",
|
||||
"systemAgent.queryRewrite.label": "Модел",
|
||||
"systemAgent.queryRewrite.modelDesc": "Посочете модел за оптимизиране на потребителски заявки",
|
||||
"systemAgent.queryRewrite.title": "Агент за пренаписване на заявки в библиотеката",
|
||||
@@ -799,7 +789,7 @@
|
||||
"tab.advanced": "Разширени",
|
||||
"tab.advanced.updateChannel.canary": "Канарче",
|
||||
"tab.advanced.updateChannel.canaryDesc": "Задейства се при всяко сливане на PR, множество компилации на ден. Най-нестабилната версия.",
|
||||
"tab.advanced.updateChannel.desc": "По подразбиране получавайте известия за стабилни актуализации. Каналът Canary получава предварителни версии, които може да са нестабилни за производствена работа.",
|
||||
"tab.advanced.updateChannel.desc": "По подразбиране получавайте известия за стабилни актуализации. Каналите Nightly и Canary получават предварителни версии, които може да са нестабилни за производствена работа.",
|
||||
"tab.advanced.updateChannel.nightly": "Нощна",
|
||||
"tab.advanced.updateChannel.nightlyDesc": "Автоматизирани ежедневни компилации с най-новите промени.",
|
||||
"tab.advanced.updateChannel.stable": "Стабилна",
|
||||
|
||||
@@ -359,6 +359,7 @@
|
||||
"referral.table.columns.inviterRewardAmount": "Моята награда",
|
||||
"referral.table.columns.rewardedAt": "Време на награждаване",
|
||||
"referral.table.columns.status": "Статус",
|
||||
"referral.table.columns.suspectedReason": "Причина за аномалия",
|
||||
"referral.table.status.pending_reward": "Очаквана награда",
|
||||
"referral.table.status.registered": "Регистриран",
|
||||
"referral.table.status.revoked": "Отменен",
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
"config.resolution.label": "Резолюция",
|
||||
"config.seed.label": "Сийд",
|
||||
"config.seed.random": "Случаен",
|
||||
"config.size.label": "Размер",
|
||||
"generation.actions.copyError": "Копирай съобщението за грешка",
|
||||
"generation.actions.errorCopied": "Съобщението за грешка е копирано в клипборда",
|
||||
"generation.actions.errorCopyFailed": "Неуспешно копиране на съобщението за грешка",
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
"channel.devWebhookProxyUrlHint": "Optional. HTTPS-Tunnel-URL zum Weiterleiten von Webhook-Anfragen an den lokalen Entwicklungsserver.",
|
||||
"channel.disabled": "Deaktiviert",
|
||||
"channel.discord.description": "Verbinden Sie diesen Assistenten mit einem Discord-Server für Kanal-Chat und Direktnachrichten.",
|
||||
"channel.displayToolCalls": "Werkzeugaufrufe anzeigen",
|
||||
"channel.displayToolCallsHint": "Details zu Werkzeugaufrufen während der KI-Antworten anzeigen. Wenn deaktiviert, wird nur die endgültige Antwort für ein übersichtlicheres Erlebnis angezeigt.",
|
||||
"channel.dm": "Direktnachrichten",
|
||||
"channel.dmEnabled": "DMs aktivieren",
|
||||
"channel.dmEnabledHint": "Erlauben Sie dem Bot, Direktnachrichten zu empfangen und darauf zu antworten",
|
||||
|
||||
@@ -179,16 +179,10 @@
|
||||
"overview.title": "Bewertungslabor",
|
||||
"run.actions.abort": "Abbrechen",
|
||||
"run.actions.abort.confirm": "Sind Sie sicher, dass Sie diese Bewertung abbrechen möchten?",
|
||||
"run.actions.batchResume": "Stapelwiederaufnahme",
|
||||
"run.actions.batchResume.modal.confirm": "Ausgewählte fortsetzen",
|
||||
"run.actions.batchResume.modal.selectAll": "Alle auswählen",
|
||||
"run.actions.batchResume.modal.selected": "{{count}} ausgewählt",
|
||||
"run.actions.batchResume.modal.title": "Fälle stapelweise wieder aufnehmen",
|
||||
"run.actions.create": "Neue Bewertung",
|
||||
"run.actions.delete": "Löschen",
|
||||
"run.actions.delete.confirm": "Sind Sie sicher, dass Sie diese Bewertung löschen möchten?",
|
||||
"run.actions.edit": "Bearbeiten",
|
||||
"run.actions.resumeCase": "Fortsetzen",
|
||||
"run.actions.retryCase": "Erneut versuchen",
|
||||
"run.actions.retryErrors": "Fehler erneut versuchen",
|
||||
"run.actions.retryErrors.confirm": "Dies wird alle Fehler- und Timeout-Fälle erneut ausführen. Bestanden und fehlgeschlagene Fälle bleiben unberührt.",
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
"starter.developing": "Demnächst verfügbar",
|
||||
"starter.image": "Bild",
|
||||
"starter.imageGeneration": "Bildgenerierung",
|
||||
"starter.videoGeneration": "Seedance 2.0",
|
||||
"starter.videoGeneration": "Videogenerierung",
|
||||
"starter.write": "Schreiben"
|
||||
}
|
||||
|
||||
+19
-112
@@ -66,9 +66,6 @@
|
||||
"HiDream-E1-Full.description": "HiDream-E1-Full ist ein Open-Source-Multimodell-Bildbearbeitungsmodell von HiDream.ai, basierend auf einer fortschrittlichen Diffusion Transformer-Architektur und starker Sprachverständnisfähigkeit (integriertes LLaMA 3.1-8B-Instruct). Es unterstützt natürliche Sprachsteuerung für Bildgenerierung, Stiltransfer, lokale Bearbeitungen und Übermalungen mit hervorragendem Bild-Text-Verständnis und Ausführung.",
|
||||
"HiDream-I1-Full.description": "HiDream-I1 ist ein neues Open-Source-Basis-Bildgenerierungsmodell von HiDream. Mit 17 Milliarden Parametern (Flux hat 12 Milliarden) liefert es branchenführende Bildqualität in Sekundenschnelle.",
|
||||
"HunyuanDiT-v1.2-Diffusers-Distilled.description": "hunyuandit-v1.2-distilled ist ein leichtgewichtiges Text-zu-Bild-Modell, das durch Distillation optimiert wurde, um schnell hochwertige Bilder zu erzeugen. Besonders geeignet für ressourcenschwache Umgebungen und Echtzeitanwendungen.",
|
||||
"I2V-01-Director.description": "Ein Videoerzeugungsmodell auf Regieebene wurde offiziell veröffentlicht, das eine verbesserte Einhaltung von Kamerabewegungsanweisungen und eine filmische Erzählweise bietet.",
|
||||
"I2V-01-live.description": "Verbesserte Charakterdarstellung: stabiler, flüssiger und lebendiger.",
|
||||
"I2V-01.description": "Das grundlegende Bild-zu-Video-Modell der 01-Serie.",
|
||||
"InstantCharacter.description": "InstantCharacter ist ein personalisiertes Charaktergenerierungsmodell ohne Feintuning, veröffentlicht von Tencent AI im Jahr 2025. Es ermöglicht hochrealistische, szenenübergreifend konsistente Charaktere. Ein einzelnes Referenzbild genügt, um den Charakter flexibel in verschiedene Stile, Aktionen und Hintergründe zu übertragen.",
|
||||
"InternVL2-8B.description": "InternVL2-8B ist ein leistungsstarkes Vision-Language-Modell für multimodale Bild-Text-Verarbeitung. Es erkennt Bildinhalte präzise und generiert passende Beschreibungen oder Antworten.",
|
||||
"InternVL2.5-26B.description": "InternVL2.5-26B ist ein leistungsstarkes Vision-Language-Modell für multimodale Bild-Text-Verarbeitung. Es erkennt Bildinhalte präzise und generiert passende Beschreibungen oder Antworten.",
|
||||
@@ -90,12 +87,8 @@
|
||||
"Meta-Llama-3.2-3B-Instruct.description": "Modernes kompaktes Sprachmodell mit starkem Sprachverständnis, exzellenter Argumentation und Textgenerierung.",
|
||||
"Meta-Llama-3.3-70B-Instruct.description": "Llama 3.3 ist das fortschrittlichste mehrsprachige Open-Source-Modell der Llama-Reihe. Es bietet nahezu 405B-Leistung zu sehr niedrigen Kosten. Basierend auf Transformer-Architektur, verbessert durch SFT und RLHF für Nützlichkeit und Sicherheit. Die instruktionstaugliche Version ist für mehrsprachige Konversation optimiert und übertrifft viele offene und geschlossene Modelle in Benchmarks. Wissensstand: Dezember 2023.",
|
||||
"Meta-Llama-4-Maverick-17B-128E-Instruct-FP8.description": "Llama 4 Maverick ist ein großes MoE-Modell mit effizienter Expertenaktivierung für starke Argumentationsleistung.",
|
||||
"MiniMax-Hailuo-02.description": "Das nächste Generation Videoerzeugungsmodell, MiniMax Hailuo 02, wurde offiziell veröffentlicht und unterstützt 1080P-Auflösung sowie die Erzeugung von 10-Sekunden-Videos.",
|
||||
"MiniMax-Hailuo-2.3-Fast.description": "Brandneues Videoerzeugungsmodell mit umfassenden Verbesserungen in Körperbewegung, physikalischem Realismus und Befolgung von Anweisungen.",
|
||||
"MiniMax-Hailuo-2.3.description": "Brandneues Videoerzeugungsmodell mit umfassenden Verbesserungen in Körperbewegung, physikalischem Realismus und Befolgung von Anweisungen.",
|
||||
"MiniMax-M1.description": "Ein neues Inhouse-Argumentationsmodell mit 80K Chain-of-Thought und 1M Eingabe, vergleichbar mit führenden globalen Modellen.",
|
||||
"MiniMax-M2-Stable.description": "Entwickelt für effizientes Coden und Agenten-Workflows mit höherer Parallelität für den kommerziellen Einsatz.",
|
||||
"MiniMax-M2.1-Lightning.description": "Leistungsstarke mehrsprachige Programmierfähigkeiten mit schnellerer und effizienterer Inferenz.",
|
||||
"MiniMax-M2.1-highspeed.description": "Leistungsstarke mehrsprachige Programmierfähigkeiten, umfassend verbesserte Programmiererfahrung. Schneller und effizienter.",
|
||||
"MiniMax-M2.1.description": "MiniMax-M2.1 ist das Flaggschiff unter den Open-Source-Großmodellen von MiniMax und konzentriert sich auf die Lösung komplexer Aufgaben aus der realen Welt. Seine zentralen Stärken liegen in der mehrsprachigen Programmierfähigkeit und der Fähigkeit, als Agent komplexe Aufgaben zu bewältigen.",
|
||||
"MiniMax-M2.5-highspeed.description": "MiniMax M2.5 Highspeed: Gleiche Leistung wie M2.5 mit schnellerer Inferenz.",
|
||||
@@ -189,7 +182,6 @@
|
||||
"Qwen3-235B-A22B-Instruct-2507-FP8.description": "Qwen3 235B A22B Instruct 2507 ist für fortgeschrittenes logisches Denken und Befolgen von Anweisungen optimiert. Es nutzt MoE, um effizientes Denken im großen Maßstab zu ermöglichen.",
|
||||
"Qwen3-235B.description": "Qwen3-235B-A22B ist ein MoE-Modell mit einem hybriden Denkmodus, der es Nutzern ermöglicht, nahtlos zwischen Denk- und Nicht-Denk-Modus zu wechseln. Es unterstützt Verständnis und logisches Denken in 119 Sprachen und Dialekten und verfügt über starke Tool-Calling-Fähigkeiten. Es konkurriert mit führenden Modellen wie DeepSeek R1, OpenAI o1, o3-mini, Grok 3 und Google Gemini 2.5 Pro in Benchmarks zu allgemeinen Fähigkeiten, Programmierung, Mathematik, Mehrsprachigkeit und Wissensverarbeitung.",
|
||||
"Qwen3-32B.description": "Qwen3-32B ist ein dichtes Modell mit einem hybriden Denkmodus, der Nutzern erlaubt, zwischen Denk- und Nicht-Denk-Modus zu wechseln. Durch Verbesserungen in der Architektur, mehr Trainingsdaten und besseres Training erreicht es eine Leistung auf dem Niveau von Qwen2.5-72B.",
|
||||
"S2V-01.description": "Das grundlegende Referenz-zu-Video-Modell der 01-Serie.",
|
||||
"SenseChat-128K.description": "Basisversion V4 mit 128K Kontext, stark im Verständnis und der Generierung von Langtexten.",
|
||||
"SenseChat-32K.description": "Basisversion V4 mit 32K Kontext, flexibel einsetzbar in vielen Szenarien.",
|
||||
"SenseChat-5-1202.description": "Neueste Version basierend auf V5.5 mit deutlichen Verbesserungen in chinesischen/englischen Grundlagen, Konversation, MINT-Wissen, Geisteswissenschaften, Schreiben, Mathematik/Logik und Längenkontrolle.",
|
||||
@@ -212,16 +204,12 @@
|
||||
"Skylark2-pro-4k.description": "Skylark Modell der 2. Generation. Skylark2-pro bietet höhere Genauigkeit für komplexe Textgenerierung wie professionelle Werbetexte, Romanerstellung und hochwertige Übersetzungen mit einem 4K-Kontextfenster.",
|
||||
"Skylark2-pro-character-4k.description": "Skylark Modell der 2. Generation. Skylark2-pro-character ist besonders gut für Rollenspiele und Chat geeignet, passt sich an verschiedene Persönlichkeitsstile an und bietet natürliche Dialoge für Chatbots, virtuelle Assistenten und Kundenservice mit schnellen Antworten.",
|
||||
"Skylark2-pro-turbo-8k.description": "Skylark Modell der 2. Generation. Skylark2-pro-turbo-8k bietet schnellere Inferenz bei geringeren Kosten mit einem 8K-Kontextfenster.",
|
||||
"T2V-01-Director.description": "Ein Videoerzeugungsmodell auf Regieebene wurde offiziell veröffentlicht, das eine verbesserte Einhaltung von Kamerabewegungsanweisungen und eine filmische Erzählweise bietet.",
|
||||
"T2V-01.description": "Das grundlegende Text-zu-Video-Modell der 01-Serie.",
|
||||
"THUDM/GLM-4-32B-0414.description": "GLM-4-32B-0414 ist ein Open-Source-GLM-Modell der nächsten Generation mit 32 Milliarden Parametern, das in seiner Leistung mit OpenAI GPT und der DeepSeek V3/R1-Serie vergleichbar ist.",
|
||||
"THUDM/GLM-4-9B-0414.description": "GLM-4-9B-0414 ist ein 9-Milliarden-Parameter-Modell, das auf den Techniken von GLM-4-32B basiert und eine leichtere Bereitstellung ermöglicht. Es überzeugt bei der Codegenerierung, Webdesign, SVG-Erstellung und suchbasiertem Schreiben.",
|
||||
"THUDM/GLM-4.1V-9B-Thinking.description": "GLM-4.1V-9B-Thinking ist ein Open-Source-VLM von Zhipu AI und dem Tsinghua KEG Lab, entwickelt für komplexe multimodale Kognition. Basierend auf GLM-4-9B-0414 fügt es Chain-of-Thought-Reasoning und RL hinzu, um die cross-modale Argumentation und Stabilität erheblich zu verbessern.",
|
||||
"THUDM/GLM-Z1-32B-0414.description": "GLM-Z1-32B-0414 ist ein Modell für tiefgehende Argumentation, das auf GLM-4-32B-0414 basiert und mit Cold-Start-Daten sowie erweitertem Reinforcement Learning weitertrainiert wurde. Es wurde zusätzlich auf Mathematik, Code und Logik trainiert und verbessert die Fähigkeiten zur Lösung komplexer Aufgaben erheblich.",
|
||||
"THUDM/GLM-Z1-9B-0414.description": "GLM-Z1-9B-0414 ist ein kompaktes GLM-Modell mit 9 Milliarden Parametern, das die Stärken von Open-Source-Modellen beibehält und gleichzeitig eine beeindruckende Leistung bietet. Es überzeugt besonders bei mathematischer Argumentation und allgemeinen Aufgaben und ist führend in seiner Größenklasse unter offenen Modellen.",
|
||||
"Tongyi-Zhiwen/QwenLong-L1-32B.description": "QwenLong-L1-32B ist das erste Modell für langes Kontextdenken (LRM), das mit RL trainiert wurde und für langes Textdenken optimiert ist. Sein progressives Kontext-Erweiterungs-RL ermöglicht eine stabile Übertragung von kurzen zu langen Kontexten. Es übertrifft OpenAI-o3-mini und Qwen3-235B-A22B in sieben Benchmarks für langes Kontext-Dokument-QA und konkurriert mit Claude-3.7-Sonnet-Thinking. Besonders stark ist es in Mathematik, Logik und mehrstufigem Denken.",
|
||||
"Wan-AI/Wan2.2-I2V-A14B.description": "Wan2.2-I2V-A14B ist eines der ersten Open-Source-Bild-zu-Video (I2V)-Erzeugungsmodelle, das von Wan-AI, einer KI-Initiative unter Alibaba, veröffentlicht wurde und eine Mixture of Experts (MoE)-Architektur verwendet. Das Modell konzentriert sich auf die Erzeugung glatter und natürlicher dynamischer Videosequenzen durch die Kombination von statischen Bildern mit Textaufforderungen. Die Kerninnovation liegt in der MoE-Architektur: Ein Experte für hohes Rauschen ist für die grobe Struktur in den frühen Phasen der Videoerzeugung verantwortlich, während ein Experte für niedriges Rauschen feinkörnige Details in den späteren Phasen verfeinert. Dieses Design verbessert die Gesamtleistung des Modells, ohne die Inferenzkosten zu erhöhen. Im Vergleich zu früheren Versionen wurde Wan2.2 auf einem deutlich größeren Datensatz trainiert, was zu bemerkenswerten Verbesserungen beim Verständnis komplexer Bewegungen, ästhetischer Stile und semantischer Inhalte führt. Es erzeugt stabilere Videos und reduziert unrealistische Kamerabewegungen.",
|
||||
"Wan-AI/Wan2.2-T2V-A14B.description": "Wan2.2-T2V-A14B ist das erste Open-Source-Videoerzeugungsmodell, das von Alibaba veröffentlicht wurde und eine Mixture of Experts (MoE)-Architektur verwendet. Das Modell ist für Text-zu-Video (T2V)-Erzeugungsaufgaben konzipiert und kann Videos mit einer Länge von bis zu 5 Sekunden bei Auflösungen von 480P oder 720P erzeugen. Durch die Einführung der MoE-Architektur erhöht das Modell seine Gesamtkapazität erheblich, während die Inferenzkosten nahezu unverändert bleiben. Es umfasst einen Experten für hohes Rauschen, der die globale Struktur in den frühen Phasen der Erzeugung behandelt, und einen Experten für niedriges Rauschen, der feine Details in den späteren Phasen des Videos verfeinert. Darüber hinaus integriert Wan2.2 sorgfältig kuratierte ästhetische Daten mit detaillierten Annotationen in Dimensionen wie Beleuchtung, Komposition und Farbe. Dies ermöglicht eine präzisere und kontrollierbare Erzeugung von visuellen Inhalten in Kinoqualität. Im Vergleich zu früheren Versionen wurde das Modell auf einem größeren Datensatz trainiert, was zu deutlich verbesserten Generalisierungen in Bewegung, Semantik und Ästhetik sowie einer besseren Handhabung komplexer dynamischer Effekte führt.",
|
||||
"Yi-34B-Chat.description": "Yi-1.5-34B bewahrt die starken allgemeinen Sprachfähigkeiten der Serie und verbessert durch inkrementelles Training mit 500 Milliarden hochwertigen Tokens die Leistungen in Mathematik, Logik und Programmierung deutlich.",
|
||||
"abab5.5-chat.description": "Entwickelt für produktive Szenarien mit komplexer Aufgabenverarbeitung und effizienter Textgenerierung für den professionellen Einsatz.",
|
||||
"abab5.5s-chat.description": "Optimiert für chinesische Persona-Chats und liefert hochwertige chinesische Dialoge für vielfältige Anwendungen.",
|
||||
@@ -310,18 +298,18 @@
|
||||
"claude-3-haiku-20240307.description": "Claude 3 Haiku ist das schnellste und kompakteste Modell von Anthropic, entwickelt für nahezu sofortige Antworten mit schneller, präziser Leistung.",
|
||||
"claude-3-opus-20240229.description": "Claude 3 Opus ist das leistungsstärkste Modell von Anthropic für hochkomplexe Aufgaben. Es überzeugt in Leistung, Intelligenz, Sprachfluss und Verständnis.",
|
||||
"claude-3-sonnet-20240229.description": "Claude 3 Sonnet bietet eine ausgewogene Kombination aus Intelligenz und Geschwindigkeit für Unternehmensanwendungen. Es liefert hohe Nutzbarkeit bei geringeren Kosten und zuverlässiger Skalierbarkeit.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 ist das schnellste und intelligenteste Haiku-Modell von Anthropic, mit blitzschneller Geschwindigkeit und erweitertem Denken.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 ist das schnellste und intelligenteste Haiku-Modell von Anthropic, mit blitzschneller Geschwindigkeit und erweitertem Denkvermögen.",
|
||||
"claude-haiku-4.5.description": "Claude Haiku 4.5 ist das schnellste und intelligenteste Haiku-Modell von Anthropic, mit blitzschneller Geschwindigkeit und erweiterten Denkfähigkeiten.",
|
||||
"claude-opus-4-1-20250805-thinking.description": "Claude Opus 4.1 Thinking ist eine erweiterte Variante, die ihren Denkprozess offenlegen kann.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 ist das neueste und leistungsfähigste Modell von Anthropic für hochkomplexe Aufgaben, das in Leistung, Intelligenz, Sprachgewandtheit und Verständnis herausragt.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 ist das leistungsstärkste Modell von Anthropic für hochkomplexe Aufgaben, das in Leistung, Intelligenz, Sprachgewandtheit und Verständnis herausragt.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 ist das leistungsstärkste Modell von Anthropic für hochkomplexe Aufgaben, das in Leistung, Intelligenz, Sprachgewandtheit und Verständnis brilliert.",
|
||||
"claude-opus-4-5-20251101.description": "Claude Opus 4.5 ist das Flaggschiffmodell von Anthropic. Es kombiniert herausragende Intelligenz mit skalierbarer Leistung und ist ideal für komplexe Aufgaben, die höchste Qualität bei Antworten und logischem Denken erfordern.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 ist das intelligenteste Modell von Anthropic für die Erstellung von Agenten und Programmierung.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 ist das intelligenteste Modell von Anthropic für die Entwicklung von Agenten und das Programmieren.",
|
||||
"claude-opus-4.5.description": "Claude Opus 4.5 ist das Flaggschiff-Modell von Anthropic, das erstklassige Intelligenz mit skalierbarer Leistung für komplexe, hochwertige Denkaufgaben kombiniert.",
|
||||
"claude-opus-4.6-fast.description": "Claude Opus 4.6 ist das intelligenteste Modell von Anthropic für die Entwicklung von Agenten und Programmierung.",
|
||||
"claude-opus-4.6.description": "Claude Opus 4.6 ist das intelligenteste Modell von Anthropic für die Entwicklung von Agenten und Programmierung.",
|
||||
"claude-sonnet-4-20250514-thinking.description": "Claude Sonnet 4 Thinking kann nahezu sofortige Antworten oder schrittweises Denken mit sichtbarem Prozess erzeugen.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 ist das bisher intelligenteste Modell von Anthropic, das nahezu sofortige Antworten oder erweitertes schrittweises Denken mit fein abgestimmter Kontrolle für API-Benutzer bietet.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 kann nahezu sofortige Antworten oder ausführliches, schrittweises Denken mit sichtbarem Prozess liefern.",
|
||||
"claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 ist das bisher intelligenteste Modell von Anthropic.",
|
||||
"claude-sonnet-4-6.description": "Claude Sonnet 4.6 ist die beste Kombination aus Geschwindigkeit und Intelligenz von Anthropic.",
|
||||
"claude-sonnet-4.5.description": "Claude Sonnet 4.5 ist das bisher intelligenteste Modell von Anthropic.",
|
||||
@@ -340,9 +328,6 @@
|
||||
"codestral-latest.description": "Codestral ist unser fortschrittlichstes Codierungsmodell; Version 2 (Jan. 2025) ist auf Aufgaben mit niedriger Latenz und hoher Frequenz wie FIM, Codekorrektur und Testgenerierung ausgelegt.",
|
||||
"codestral.description": "Codestral ist das erste Codierungsmodell von Mistral AI und bietet leistungsstarke Unterstützung bei der Codegenerierung.",
|
||||
"cogito-2.1:671b.description": "Cogito v2.1 671B ist ein quelloffenes US-LLM zur freien kommerziellen Nutzung mit einer Leistung, die mit Spitzenmodellen konkurriert. Es bietet eine höhere Effizienz beim Token-Reasoning, einen 128k-Kontext und starke Gesamtfähigkeiten.",
|
||||
"cogvideox-2.description": "CogVideoX-2 ist Zhipus neues Generation Videoerzeugungsmodell, mit um 38 % verbesserten Bild-zu-Video-Fähigkeiten. Es bietet bedeutende Verbesserungen in der Handhabung großflächiger Bewegungen, visueller Stabilität, Befolgung von Anweisungen, künstlerischem Stil und visueller Ästhetik insgesamt.",
|
||||
"cogvideox-3.description": "CogVideoX-3 fügt eine Start- und Endbild-Erzeugungsfunktion hinzu, die die visuelle Stabilität und Klarheit erheblich verbessert. Es ermöglicht glatte und natürliche großflächige Bewegungen von Subjekten, bietet bessere Befolgung von Anweisungen und realistischere physikalische Simulationen und verbessert die Leistung in hochauflösenden realistischen und 3D-Stil-Szenen weiter.",
|
||||
"cogvideox-flash.description": "CogVideoX-Flash ist ein kostenloses Videoerzeugungsmodell von Zhipu, das Videos erzeugen kann, die den Benutzeranweisungen folgen und gleichzeitig höhere ästhetische Qualitätsbewertungen erzielen.",
|
||||
"cogview-3-flash.description": "CogView-3-Flash ist ein kostenloses Bildgenerierungsmodell, das von Zhipu entwickelt wurde. Es erzeugt Bilder, die den Benutzeranweisungen entsprechen und gleichzeitig höhere ästhetische Qualitätsbewertungen erzielen. CogView-3-Flash wird hauptsächlich in Bereichen wie künstlerischer Gestaltung, Designreferenzen, Spieleentwicklung und virtueller Realität eingesetzt und hilft Benutzern, Textbeschreibungen schnell in Bilder umzuwandeln.",
|
||||
"cogview-4.description": "CogView-4 ist Zhipus erstes quelloffenes Text-zu-Bild-Modell, das chinesische Schriftzeichen generieren kann. Es verbessert das semantische Verständnis, die Bildqualität und die Textdarstellung in Chinesisch/Englisch, unterstützt beliebig lange zweisprachige Eingaben und kann Bilder in jeder Auflösung innerhalb definierter Bereiche erzeugen.",
|
||||
"cohere-command-r-plus.description": "Command R+ ist ein fortschrittliches, für RAG optimiertes Modell, das für Unternehmensanwendungen entwickelt wurde.",
|
||||
@@ -397,7 +382,7 @@
|
||||
"deepseek-ai/deepseek-v3.1-terminus.description": "DeepSeek V3.1 ist ein Next-Gen-Denkmodell mit stärkerem komplexem Denken und Chain-of-Thought für tiefgreifende Analyseaufgaben.",
|
||||
"deepseek-ai/deepseek-v3.1.description": "DeepSeek V3.1 ist ein Next-Gen-Denkmodell mit stärkerem komplexem Denken und Chain-of-Thought für tiefgreifende Analyseaufgaben.",
|
||||
"deepseek-ai/deepseek-v3.2.description": "DeepSeek V3.2 ist ein Next-Gen-Modell für logisches Denken mit stärkeren Fähigkeiten für komplexes Denken und Kettenlogik.",
|
||||
"deepseek-chat.description": "DeepSeek V3.2 balanciert Argumentation und Ausgabelänge für tägliche QA- und Agentenaufgaben. Öffentliche Benchmarks erreichen GPT-5-Niveau, und es ist das erste Modell, das Denken in die Werkzeugnutzung integriert und führende Open-Source-Agentenbewertungen erzielt.",
|
||||
"deepseek-chat.description": "Ein neues Open-Source-Modell, das allgemeine und Programmierfähigkeiten kombiniert. Es bewahrt den allgemeinen Dialog des Chat-Modells und die starken Programmierfähigkeiten des Coder-Modells, mit besserer Präferenzabstimmung. DeepSeek-V2.5 verbessert auch das Schreiben und das Befolgen von Anweisungen.",
|
||||
"deepseek-coder-33B-instruct.description": "DeepSeek Coder 33B ist ein Code-Sprachmodell, trainiert auf 2 B Tokens (87 % Code, 13 % chinesisch/englischer Text). Es bietet ein 16K-Kontextfenster und Fill-in-the-Middle-Aufgaben für projektweite Codevervollständigung und Snippet-Ergänzung.",
|
||||
"deepseek-coder-v2.description": "DeepSeek Coder V2 ist ein Open-Source-MoE-Code-Modell mit starker Leistung bei Programmieraufgaben, vergleichbar mit GPT-4 Turbo.",
|
||||
"deepseek-coder-v2:236b.description": "DeepSeek Coder V2 ist ein Open-Source-MoE-Code-Modell mit starker Leistung bei Programmieraufgaben, vergleichbar mit GPT-4 Turbo.",
|
||||
@@ -420,7 +405,7 @@
|
||||
"deepseek-r1-fast-online.description": "DeepSeek R1 Schnellversion mit Echtzeit-Websuche – kombiniert 671B-Fähigkeiten mit schneller Reaktion.",
|
||||
"deepseek-r1-online.description": "DeepSeek R1 Vollversion mit 671B Parametern und Echtzeit-Websuche – bietet stärkeres Verständnis und bessere Generierung.",
|
||||
"deepseek-r1.description": "DeepSeek-R1 nutzt Cold-Start-Daten vor dem RL und erreicht vergleichbare Leistungen wie OpenAI-o1 bei Mathematik, Programmierung und logischem Denken.",
|
||||
"deepseek-reasoner.description": "DeepSeek V3.2 Thinking ist ein tiefes Argumentationsmodell, das vor der Ausgabe eine Gedankenverkettung erzeugt, um höhere Genauigkeit zu erzielen, mit Spitzenwettbewerbsergebnissen und Argumentation vergleichbar mit Gemini-3.0-Pro.",
|
||||
"deepseek-reasoner.description": "Der Denkmodus von DeepSeek V3.2 gibt eine Gedankenkette vor der endgültigen Antwort aus, um die Genauigkeit zu verbessern.",
|
||||
"deepseek-v2.description": "DeepSeek V2 ist ein effizientes MoE-Modell für kostengünstige Verarbeitung.",
|
||||
"deepseek-v2:236b.description": "DeepSeek V2 236B ist das codefokussierte Modell von DeepSeek mit starker Codegenerierung.",
|
||||
"deepseek-v3-0324.description": "DeepSeek-V3-0324 ist ein MoE-Modell mit 671B Parametern und herausragenden Stärken in Programmierung, technischer Kompetenz, Kontextverständnis und Langtextverarbeitung.",
|
||||
@@ -431,7 +416,6 @@
|
||||
"deepseek-v3.2-exp.description": "deepseek-v3.2-exp führt Sparse Attention ein, um die Effizienz beim Training und bei der Inferenz bei langen Texten zu verbessern – zu einem günstigeren Preis als deepseek-v3.1.",
|
||||
"deepseek-v3.2-speciale.description": "Bei hochkomplexen Aufgaben übertrifft das Speciale-Modell die Standardversion deutlich, verbraucht jedoch erheblich mehr Tokens und verursacht höhere Kosten. Derzeit ist DeepSeek-V3.2-Speciale nur für Forschungszwecke vorgesehen, unterstützt keine Werkzeugaufrufe und wurde nicht speziell für alltägliche Konversations- oder Schreibaufgaben optimiert.",
|
||||
"deepseek-v3.2-think.description": "DeepSeek V3.2 Think ist ein vollwertiges Denkmodell mit stärkerer langkettiger Argumentation.",
|
||||
"deepseek-v3.2-thinking.description": "DeepSeek-V3.2 Thinking ist die Denkmodus-Variante von DeepSeek-V3.2, die sich auf Argumentationsaufgaben konzentriert.",
|
||||
"deepseek-v3.2.description": "DeepSeek-V3.2 ist DeepSeeks neuestes Programmiermodell mit starken Argumentationsfähigkeiten.",
|
||||
"deepseek-v3.description": "DeepSeek-V3 ist ein leistungsstarkes MoE-Modell mit insgesamt 671 Milliarden Parametern und 37 Milliarden aktiven Parametern pro Token.",
|
||||
"deepseek-vl2-small.description": "DeepSeek VL2 Small ist eine leichtgewichtige multimodale Version für ressourcenbeschränkte und hochparallele Anwendungen.",
|
||||
@@ -487,8 +471,6 @@
|
||||
"doubao-seedance-1-0-pro-250528.description": "Seedance 1.0 Pro ist ein grundlegendes Modell zur Videogenerierung, das Multi-Shot-Erzählungen unterstützt. Es bietet starke Leistung in mehreren Dimensionen. Das Modell erzielt Durchbrüche im semantischen Verständnis und in der Befolgung von Anweisungen, wodurch es 1080P hochauflösende Videos mit flüssigen Bewegungen, reichhaltigen Details, vielfältigen Stilen und filmischen visuellen Ästhetiken generieren kann.",
|
||||
"doubao-seedance-1-0-pro-fast-251015.description": "Seedance 1.0 Pro Fast ist ein umfassendes Modell, das darauf ausgelegt ist, Kosten zu minimieren und gleichzeitig die Leistung zu maximieren. Es erreicht eine hervorragende Balance zwischen Videoqualität, Geschwindigkeit und Preis. Es übernimmt die Kernstärken von Seedance 1.0 Pro und bietet schnellere Generierungsgeschwindigkeiten sowie wettbewerbsfähigere Preise, wodurch Kreative eine doppelte Optimierung von Effizienz und Kosten erhalten.",
|
||||
"doubao-seedance-1-5-pro-251215.description": "Seedance 1.5 Pro von ByteDance unterstützt Text-zu-Video, Bild-zu-Video (erster Frame, erster+letzter Frame) und Audioerstellung synchronisiert mit visuellen Inhalten.",
|
||||
"doubao-seedance-2-0-260128.description": "Seedance 2.0 von ByteDance ist das leistungsstärkste Videoerzeugungsmodell, das multimodale Referenzvideoerzeugung, Videobearbeitung, Videoerweiterung, Text-zu-Video und Bild-zu-Video mit synchronisiertem Audio unterstützt.",
|
||||
"doubao-seedance-2-0-fast-260128.description": "Seedance 2.0 Fast von ByteDance bietet die gleichen Funktionen wie Seedance 2.0 mit schnelleren Erzeugungsgeschwindigkeiten zu einem wettbewerbsfähigeren Preis.",
|
||||
"doubao-seededit-3-0-i2i-250628.description": "Das Doubao-Bildmodell von ByteDance Seed unterstützt Text- und Bildeingaben mit hochgradig kontrollierbarer, hochwertiger Bildgenerierung. Es unterstützt textgesteuerte Bildbearbeitung mit Ausgabengrößen zwischen 512 und 1536 auf der langen Seite.",
|
||||
"doubao-seedream-3-0-t2i-250415.description": "Seedream 3.0 ist ein Bildgenerierungsmodell von ByteDance Seed, das Text- und Bildeingaben unterstützt und eine hochgradig kontrollierbare, hochwertige Bildgenerierung ermöglicht. Es erzeugt Bilder aus Texteingaben.",
|
||||
"doubao-seedream-4-0-250828.description": "Seedream 4.0 ist ein Bildgenerierungsmodell von ByteDance Seed, das Text- und Bildeingaben unterstützt und eine hochgradig kontrollierbare, hochwertige Bildgenerierung ermöglicht. Es erzeugt Bilder aus Texteingaben.",
|
||||
@@ -523,8 +505,7 @@
|
||||
"ernie-x1-turbo-32k.description": "ERNIE X1 Turbo 32K ist ein schnelles Denkmodell mit 32K Kontext für komplexe Schlussfolgerungen und mehrstufige Gespräche.",
|
||||
"ernie-x1.1-preview.description": "ERNIE X1.1 Preview ist ein Vorschau-Modell mit Denkfähigkeit zur Bewertung und zum Testen.",
|
||||
"ernie-x1.1.description": "ERNIE X1.1 ist ein Vorschau-Denkmodell für Evaluierung und Tests.",
|
||||
"fal-ai/bytedance/seedream/v4.5.description": "Seedream 4.5, entwickelt vom ByteDance Seed-Team, unterstützt Multi-Bild-Bearbeitung und Komposition. Es bietet verbesserte Konsistenz des Subjekts, präzise Befolgung von Anweisungen, Verständnis räumlicher Logik, ästhetischen Ausdruck, Posterlayout und Logodesign mit hochpräziser Text-Bild-Wiedergabe.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0, entwickelt von ByteDance Seed, unterstützt Text- und Bildeingaben für hochkontrollierbare, qualitativ hochwertige Bildgenerierung aus Aufforderungen.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0 ist ein Bildgenerierungsmodell von ByteDance Seed, das Text- und Bildeingaben unterstützt und hochkontrollierbare, qualitativ hochwertige Bilder generiert. Es erstellt Bilder aus Texteingaben.",
|
||||
"fal-ai/flux-kontext/dev.description": "FLUX.1-Modell mit Fokus auf Bildbearbeitung, unterstützt Text- und Bildeingaben.",
|
||||
"fal-ai/flux-pro/kontext.description": "FLUX.1 Kontext [pro] akzeptiert Texte und Referenzbilder als Eingabe und ermöglicht gezielte lokale Bearbeitungen sowie komplexe globale Szenentransformationen.",
|
||||
"fal-ai/flux/krea.description": "Flux Krea [dev] ist ein Bildgenerierungsmodell mit ästhetischer Ausrichtung auf realistischere, natürliche Bilder.",
|
||||
@@ -532,8 +513,8 @@
|
||||
"fal-ai/hunyuan-image/v3.description": "Ein leistungsstarkes natives multimodales Bildgenerierungsmodell.",
|
||||
"fal-ai/imagen4/preview.description": "Hochwertiges Bildgenerierungsmodell von Google.",
|
||||
"fal-ai/nano-banana.description": "Nano Banana ist das neueste, schnellste und effizienteste native multimodale Modell von Google. Es ermöglicht Bildgenerierung und -bearbeitung im Dialog.",
|
||||
"fal-ai/qwen-image-edit.description": "Ein professionelles Bildbearbeitungsmodell vom Qwen-Team, das semantische und Erscheinungsbearbeitungen, präzise chinesische/englische Textbearbeitung, Stilübertragung, Rotation und mehr unterstützt.",
|
||||
"fal-ai/qwen-image.description": "Ein leistungsstarkes Bildgenerierungsmodell vom Qwen-Team mit starker chinesischer Textwiedergabe und vielfältigen visuellen Stilen.",
|
||||
"fal-ai/qwen-image-edit.description": "Ein professionelles Bildbearbeitungsmodell des Qwen-Teams, das semantische und optische Bearbeitungen unterstützt, präzise chinesischen und englischen Text bearbeitet und hochwertige Bearbeitungen wie Stilübertragungen und Objektrotation ermöglicht.",
|
||||
"fal-ai/qwen-image.description": "Ein leistungsstarkes Bildgenerierungsmodell des Qwen-Teams mit beeindruckender chinesischer Textrendering-Fähigkeit und vielfältigen visuellen Stilen.",
|
||||
"flux-1-schnell.description": "Ein Text-zu-Bild-Modell mit 12 Milliarden Parametern von Black Forest Labs, das latente adversariale Diffusionsdistillation nutzt, um hochwertige Bilder in 1–4 Schritten zu erzeugen. Es konkurriert mit geschlossenen Alternativen und ist unter Apache-2.0 für persönliche, Forschungs- und kommerzielle Nutzung verfügbar.",
|
||||
"flux-dev.description": "FLUX.1 [dev] ist ein Modell mit offenen Gewichten für nicht-kommerzielle Nutzung. Es bietet nahezu professionelle Bildqualität und Befolgung von Anweisungen bei effizienterer Nutzung von Ressourcen im Vergleich zu Standardmodellen gleicher Größe.",
|
||||
"flux-kontext-max.description": "Modernste kontextuelle Bildgenerierung und -bearbeitung, kombiniert Text und Bilder für präzise, kohärente Ergebnisse.",
|
||||
@@ -560,6 +541,7 @@
|
||||
"gemini-1.5-pro-exp-0827.description": "Gemini 1.5 Pro 0827 nutzt neueste Optimierungen für effizientere multimodale Verarbeitung.",
|
||||
"gemini-1.5-pro-latest.description": "Gemini 1.5 Pro unterstützt bis zu 2 Millionen Tokens – ein ideales mittelgroßes multimodales Modell für komplexe Aufgaben.",
|
||||
"gemini-2.0-flash-001.description": "Gemini 2.0 Flash bietet Next-Gen-Funktionen wie außergewöhnliche Geschwindigkeit, native Tool-Nutzung, multimodale Generierung und ein Kontextfenster von 1 Million Tokens.",
|
||||
"gemini-2.0-flash-exp-image-generation.description": "Experimentelles Gemini 2.0 Flash-Modell mit Unterstützung für Bildgenerierung.",
|
||||
"gemini-2.0-flash-lite-001.description": "Eine Gemini 2.0 Flash-Variante, optimiert für Kosteneffizienz und geringe Latenz.",
|
||||
"gemini-2.0-flash-lite.description": "Eine Gemini 2.0 Flash-Variante, optimiert für Kosteneffizienz und geringe Latenz.",
|
||||
"gemini-2.0-flash.description": "Gemini 2.0 Flash bietet Next-Gen-Funktionen wie außergewöhnliche Geschwindigkeit, native Tool-Nutzung, multimodale Generierung und ein Kontextfenster von 1 Million Tokens.",
|
||||
@@ -572,13 +554,14 @@
|
||||
"gemini-2.5-flash.description": "Gemini 2.5 Flash ist Googles kosteneffizientestes Modell mit vollem Funktionsumfang.",
|
||||
"gemini-2.5-pro-preview-03-25.description": "Gemini 2.5 Pro Preview ist Googles fortschrittlichstes Reasoning-Modell, das über Code, Mathematik und MINT-Probleme nachdenken und große Datensätze, Codebasen und Dokumente mit langem Kontext analysieren kann.",
|
||||
"gemini-2.5-pro-preview-05-06.description": "Gemini 2.5 Pro Preview ist Googles fortschrittlichstes Reasoning-Modell, das über Code, Mathematik und MINT-Probleme nachdenken und große Datensätze, Codebasen und Dokumente mit langem Kontext analysieren kann.",
|
||||
"gemini-2.5-pro-preview-06-05.description": "Gemini 2.5 Pro Preview ist Googles fortschrittlichstes Reasoning-Modell, das über Code, Mathematik und MINT-Probleme nachdenken und große Datensätze, Codebasen und Dokumente mit langem Kontext analysieren kann.",
|
||||
"gemini-2.5-pro.description": "Gemini 2.5 Pro ist Googles fortschrittlichstes Reasoning-Modell, das über Code, Mathematik und MINT-Probleme nachdenken und große Datensätze, Codebasen und Dokumente mit langem Kontext analysieren kann.",
|
||||
"gemini-3-flash-preview.description": "Gemini 3 Flash ist das intelligenteste Modell, das auf Geschwindigkeit ausgelegt ist – es vereint modernste Intelligenz mit exzellenter Suchverankerung.",
|
||||
"gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) ist Googles Bildgenerierungsmodell, das auch multimodale Dialoge unterstützt.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) ist Googles Bildgenerierungsmodell und unterstützt auch multimodalen Chat.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) ist Googles Bildgenerierungsmodell und unterstützt auch multimodale Chats.",
|
||||
"gemini-3-pro-preview.description": "Gemini 3 Pro ist Googles leistungsstärkstes Agenten- und Vibe-Coding-Modell. Es bietet reichhaltigere visuelle Inhalte und tiefere Interaktionen auf Basis modernster logischer Fähigkeiten.",
|
||||
"gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image (Nano Banana 2) ist Googles schnellstes natives Bildgenerierungsmodell mit Denkunterstützung, konversationaler Bildgenerierung und -bearbeitung.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) liefert Pro-Level-Bildqualität mit Flash-Geschwindigkeit und unterstützt multimodalen Chat.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) ist Googles schnellstes natives Bildgenerierungsmodell mit Denkunterstützung, konversationaler Bildgenerierung und -bearbeitung.",
|
||||
"gemini-3.1-flash-lite-preview.description": "Gemini 3.1 Flash-Lite Preview ist Googles kosteneffizientestes multimodales Modell, optimiert für hochvolumige agentische Aufgaben, Übersetzung und Datenverarbeitung.",
|
||||
"gemini-3.1-pro-preview.description": "Gemini 3.1 Pro Preview verbessert Gemini 3 Pro mit erweiterten Fähigkeiten für logisches Denken und unterstützt mittleres Denklevel.",
|
||||
"gemini-flash-latest.description": "Neueste Version von Gemini Flash",
|
||||
@@ -622,9 +605,7 @@
|
||||
"glm-4v-plus-0111.description": "GLM-4V-Plus versteht Videos und mehrere Bilder und eignet sich für multimodale Aufgaben.",
|
||||
"glm-4v-plus.description": "GLM-4V-Plus versteht Videos und mehrere Bilder und eignet sich für multimodale Aufgaben.",
|
||||
"glm-4v.description": "GLM-4V bietet starkes Bildverständnis und logisches Denken für visuelle Aufgaben.",
|
||||
"glm-5-turbo.description": "GLM-5-Turbo ist ein Grundmodell, das speziell für agentische Szenarien optimiert wurde. Es wurde speziell für die Kernanforderungen von Agentenaufgaben ab der Trainingsphase optimiert und verbessert Schlüsselkompetenzen wie Werkzeugaufruf, Befolgung von Befehlen und Langkettenausführung. Es ist ideal für den Aufbau leistungsstarker Agentenassistenten.",
|
||||
"glm-5.description": "GLM-5 ist Zhipus nächstes Generation-Flaggschiff-Grundlagenmodell, speziell entwickelt für Agentic Engineering. Es bietet zuverlässige Produktivität in komplexen Systemengineering- und langfristigen agentischen Aufgaben. In den Bereichen Codierung und Agentenfähigkeiten erzielt GLM-5 eine Leistung auf dem neuesten Stand der Technik unter den Open-Source-Modellen. In realen Programmier-Szenarien nähert sich die Benutzererfahrung der von Claude Opus 4.5. Es zeichnet sich durch komplexes Systemengineering und langfristige agentische Aufgaben aus und ist damit ein ideales Grundlagenmodell für allgemeine Agentenassistenten.",
|
||||
"glm-5v-turbo.description": "GLM-5V-Turbo ist Zhipus erstes multimodales Codierungsgrundmodell, das für visuelle Programmieraufgaben entwickelt wurde. Es kann multimodale Eingaben wie Bilder, Videos und Text nativ verarbeiten und zeichnet sich durch Langzeitplanung, komplexe Programmierung und Handlungsausführung aus. Tief integriert in Agenten-Workflows kann es nahtlos mit Agenten wie Claude Code und OpenClaw zusammenarbeiten, um einen vollständigen geschlossenen Kreislauf von „Umwelt verstehen → Aktionen planen → Aufgaben ausführen“ zu vervollständigen.",
|
||||
"glm-image.description": "GLM-Image ist Zhipus neues Flaggschiff-Bildgenerierungsmodell. Das Modell wurde vollständig auf inländisch produzierten Chips trainiert und verwendet eine originelle hybride Architektur, die autoregressives Modellieren mit einem Diffusionsdecoder kombiniert. Dieses Design ermöglicht ein starkes globales Verständnis von Anweisungen sowie eine feingranulare lokale Detailwiedergabe und überwindet langjährige Herausforderungen bei der Generierung von wissensreichen Inhalten wie Postern, Präsentationen und Bildungsdiagrammen. Es stellt eine wichtige Erkundung hin zu einer neuen Generation von „kognitiven generativen“ Technologieparadigmen dar, exemplifiziert durch Nano Banana Pro.",
|
||||
"glm-z1-air.description": "Ein Modell mit starker Argumentationsfähigkeit für Aufgaben, die tiefes Schlussfolgern erfordern.",
|
||||
"glm-z1-airx.description": "Ultraschnelles Schlussfolgern bei gleichzeitig hoher Denkqualität.",
|
||||
@@ -640,6 +621,7 @@
|
||||
"google/gemini-2.0-flash-lite-001.description": "Gemini 2.0 Flash Lite ist eine leichtgewichtige Gemini-Variante mit standardmäßig deaktiviertem Denkmodus zur Verbesserung von Latenz und Kosten – kann jedoch über Parameter aktiviert werden.",
|
||||
"google/gemini-2.0-flash-lite.description": "Gemini 2.0 Flash Lite bietet Next-Gen-Funktionen wie außergewöhnliche Geschwindigkeit, integrierte Werkzeugnutzung, multimodale Generierung und ein Kontextfenster von 1 Million Tokens.",
|
||||
"google/gemini-2.0-flash.description": "Gemini 2.0 Flash ist Googles leistungsstarkes Reasoning-Modell für erweiterte multimodale Aufgaben.",
|
||||
"google/gemini-2.5-flash-image-preview.description": "Gemini 2.5 Flash ist ein experimentelles Modell mit Bildgenerierungsunterstützung.",
|
||||
"google/gemini-2.5-flash-image.description": "Gemini 2.5 Flash Image (Nano Banana) ist Googles Bildgenerierungsmodell mit Unterstützung für multimodale Konversation.",
|
||||
"google/gemini-2.5-flash-lite.description": "Gemini 2.5 Flash Lite ist die leichtgewichtige Variante von Gemini 2.5, optimiert für geringe Latenz und Kosten – ideal für Szenarien mit hohem Durchsatz.",
|
||||
"google/gemini-2.5-flash-preview.description": "Gemini 2.5 Flash ist Googles fortschrittlichstes Flaggschiffmodell für Reasoning, Programmierung, Mathematik und Wissenschaft. Es enthält einen integrierten Denkmodus für genauere Antworten und feinere Kontextverarbeitung.\n\nHinweis: Dieses Modell hat zwei Varianten – mit und ohne Denkmodus. Die Ausgabekosten unterscheiden sich je nach aktivierter Denkfunktion. Wenn Sie die Standardvariante (ohne „:thinking“-Suffix) wählen, vermeidet das Modell explizit die Generierung von Denk-Tokens.\n\nUm Denkprozesse zu nutzen und Denk-Tokens zu erhalten, müssen Sie die „:thinking“-Variante auswählen, die höhere Ausgabekosten verursacht.\n\nGemini 2.5 Flash kann auch über den Parameter „max reasoning tokens“ konfiguriert werden (siehe Dokumentation: https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning).",
|
||||
@@ -649,7 +631,6 @@
|
||||
"google/gemini-2.5-pro.description": "Gemini 2.5 Pro ist Googles Flaggschiffmodell für logisches Denken mit Langkontextunterstützung für komplexe Aufgaben.",
|
||||
"google/gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) ist Googles Bildgenerierungsmodell mit Unterstützung für multimodale Konversation.",
|
||||
"google/gemini-3-pro-preview.description": "Gemini 3 Pro ist das nächste Generationenmodell für multimodales Denken innerhalb der Gemini-Familie. Es versteht Text, Audio, Bilder und Videos und bewältigt komplexe Aufgaben sowie große Codebasen.",
|
||||
"google/gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image Preview, auch bekannt als \"Nano Banana 2\", ist Googles neuestes hochmodernes Bildgenerierungs- und Bearbeitungsmodell, das Pro-Level-Visuelle Qualität mit Flash-Geschwindigkeit liefert. Es kombiniert fortgeschrittenes kontextuelles Verständnis mit schneller, kosteneffizienter Inferenz, wodurch komplexe Bildgenerierung und iterative Bearbeitungen erheblich zugänglicher werden.",
|
||||
"google/gemini-embedding-001.description": "Ein hochmodernes Embedding-Modell mit starker Leistung in Englisch, Mehrsprachigkeit und Code-Aufgaben.",
|
||||
"google/gemini-flash-1.5.description": "Gemini 1.5 Flash bietet optimierte multimodale Verarbeitung für eine Vielzahl komplexer Aufgaben.",
|
||||
"google/gemini-pro-1.5.description": "Gemini 1.5 Pro kombiniert die neuesten Optimierungen für eine effizientere Verarbeitung multimodaler Daten.",
|
||||
@@ -745,7 +726,6 @@
|
||||
"grok-code-fast-1.description": "Wir freuen uns, grok-code-fast-1 vorzustellen – ein schnelles und kosteneffizientes Denkmodell, das sich besonders für agentenbasiertes Programmieren eignet.",
|
||||
"grok-imagine-image-pro.description": "Erstellen Sie Bilder aus Textvorgaben, bearbeiten Sie bestehende Bilder mit natürlicher Sprache oder verfeinern Sie Bilder iterativ durch mehrstufige Gespräche.",
|
||||
"grok-imagine-image.description": "Erstellen Sie Bilder aus Textvorgaben, bearbeiten Sie bestehende Bilder mit natürlicher Sprache oder verfeinern Sie Bilder iterativ durch mehrstufige Gespräche.",
|
||||
"grok-imagine-video.description": "Hochmodernes Videoerzeugungsmodell in Bezug auf Qualität, Kosten und Latenz.",
|
||||
"groq/compound-mini.description": "Compound-mini ist ein zusammengesetztes KI-System, das auf öffentlich verfügbaren Modellen basiert und auf GroqCloud unterstützt wird. Es nutzt intelligent und selektiv Tools zur Beantwortung von Nutzeranfragen.",
|
||||
"groq/compound.description": "Compound ist ein zusammengesetztes KI-System, das auf mehreren öffentlich verfügbaren Modellen basiert und auf GroqCloud unterstützt wird. Es nutzt intelligent und selektiv Tools zur Beantwortung von Nutzeranfragen.",
|
||||
"gryphe/mythomax-l2-13b.description": "MythoMax L2 13B ist ein kreatives, intelligentes Sprachmodell, das aus mehreren Spitzenmodellen zusammengeführt wurde.",
|
||||
@@ -811,18 +791,13 @@
|
||||
"kimi-k2-0905-preview.description": "kimi-k2-0905-preview bietet ein 256k-Kontextfenster, verbesserte agentenbasierte Programmierung, höhere Codequalität im Frontend und ein besseres Kontextverständnis.",
|
||||
"kimi-k2-instruct.description": "Kimi K2 Instruct ist das offizielle Modell von Kimi für logisches Denken mit erweitertem Kontext für Code, Fragenbeantwortung und mehr.",
|
||||
"kimi-k2-thinking-turbo.description": "Hochgeschwindigkeitsvariante von K2 mit erweitertem Denkvermögen, 256k Kontext, starkem logischen Denken und einer Ausgabe von 60–100 Token/Sekunde.",
|
||||
"kimi-k2-thinking.description": "Kimi-K2 ist ein MoE-Architektur-Basismodell, das von Moonshot AI mit äußerst starken Code- und Agentenfähigkeiten entwickelt wurde. Es verfügt über insgesamt 1T Parameter und 32B Aktivierungsparameter. In Benchmark-Leistungstests in Hauptkategorien wie allgemeinem Wissensargumentation, Programmierung, Mathematik und Agenten übertrifft die Leistung des K2-Modells die anderer Mainstream-Open-Source-Modelle.",
|
||||
"kimi-k2-thinking.description": "kimi-k2-thinking ist ein Denkmodell von Moonshot AI mit allgemeinen Agenten- und Denkfähigkeiten. Es glänzt durch tiefes logisches Denken und kann komplexe Probleme durch mehrstufige Werkzeugnutzung lösen.",
|
||||
"kimi-k2-turbo-preview.description": "kimi-k2 ist ein MoE-Grundlagenmodell mit starken Fähigkeiten in den Bereichen Programmierung und Agentenfunktionen (1T Gesamtparameter, 32B aktiv) und übertrifft andere gängige Open-Source-Modelle in den Bereichen logisches Denken, Programmierung, Mathematik und Agenten-Benchmarks.",
|
||||
"kimi-k2.5.description": "Kimi K2.5 ist Kimi's vielseitigstes Modell bisher, mit einer nativen multimodalen Architektur, die sowohl visuelle als auch Texteingaben unterstützt, 'Denk'- und 'Nicht-Denk'-Modi sowie Konversations- und Agentenaufgaben.",
|
||||
"kimi-k2.description": "Kimi-K2 ist ein MoE-Basismodell von Moonshot AI mit starken Fähigkeiten in den Bereichen Programmierung und Agentenfunktionen, insgesamt 1T Parameter mit 32B aktiven. In Benchmarks zu allgemeinem logischen Denken, Programmierung, Mathematik und Agentenaufgaben übertrifft es andere gängige Open-Source-Modelle.",
|
||||
"kimi-k2:1t.description": "Kimi K2 ist ein großes MoE-LLM von Moonshot AI mit insgesamt 1T Parametern und 32B aktiven pro Durchlauf. Es ist für Agentenfunktionen wie fortgeschrittene Werkzeugnutzung, logisches Denken und Codegenerierung optimiert.",
|
||||
"kling/kling-v3-image-generation.description": "Unterstützt bis zu 10 Referenzbilder, sodass Sie Subjekte, Elemente und Farbtöne sperren können, um einen konsistenten Stil zu gewährleisten. Kombiniert Stilübertragung, Porträt-/Charakterreferenzierung, Multi-Bild-Fusion und lokales Inpainting für flexible Kontrolle. Liefert realistische Porträtdetails mit insgesamt zarten und reichhaltig geschichteten visuellen Elementen, die filmische Farben und Atmosphäre bieten.",
|
||||
"kling/kling-v3-omni-image-generation.description": "Entfesseln Sie filmische Erzählbilder mit neuer Serienbildgenerierung und direktem 2K/4K-Ausgang. Analysiert audiovisuell Elemente in Aufforderungen tiefgehend, um kreative Anweisungen präzise auszuführen. Unterstützt flexible Multi-Referenz-Eingaben und umfassende Qualitätsverbesserungen, ideal für Storyboards, narrative Konzeptkunst und Szenendesign.",
|
||||
"kling/kling-v3-omni-video-generation.description": "Die neue „All-in-One-Referenz“-Funktion unterstützt 3–8 Sekunden Videos oder mehrere Bilder, um Charakterelemente zu verankern. Kann Originalaudio und Lippenbewegungen für authentische Charakterdarstellung anpassen. Verbessert die Konsistenz von Videos und dynamischen Ausdruck. Unterstützt audiovisuelle Synchronisation und intelligentes Storyboarding.",
|
||||
"kling/kling-v3-video-generation.description": "Intelligentes Storyboarding versteht Szenenübergänge innerhalb von Skripten und arrangiert automatisch Kamerapositionen und Aufnahmetypen. Ein natives multimodales Framework gewährleistet audiovisuelle Konsistenz. Entfernt Zeitbeschränkungen, wodurch flexiblere Multi-Shot-Erzählungen ermöglicht werden.",
|
||||
"kuaishou/kat-coder-pro-v1.description": "KAT-Coder-Pro-V1 (zeitlich begrenzt kostenlos) konzentriert sich auf Codeverständnis und Automatisierung für effiziente Programmieragenten.",
|
||||
"labs-devstral-small-2512.description": "Devstral Small 2 zeichnet sich durch die Nutzung von Werkzeugen zur Erkundung von Codebasen, Bearbeitung mehrerer Dateien und Unterstützung von Softwareentwicklungsagenten aus.",
|
||||
"labs-leanstral-2603.description": "Mistrals erster Open-Source-Code-Agent, der für Lean 4 entwickelt wurde und für formale Beweisführung in realistischen Repositories gebaut ist. 119B Parameter mit 6.5B aktiv.",
|
||||
"lite.description": "Spark Lite ist ein leichtgewichtiges LLM mit extrem niedriger Latenz und effizienter Verarbeitung. Es ist vollständig kostenlos und unterstützt Echtzeit-Websuche. Dank schneller Reaktionszeiten eignet es sich gut für Geräte mit geringer Rechenleistung und Modellanpassung – ideal für Wissensfragen, Inhaltserstellung und Suchszenarien.",
|
||||
"llama-3.1-70b-versatile.description": "Llama 3.1 70B bietet verbessertes logisches Denken für komplexe Anwendungen und unterstützt rechenintensive Aufgaben mit hoher Effizienz und Genauigkeit.",
|
||||
"llama-3.1-8b-instant.description": "Llama 3.1 8B ist ein hocheffizientes Modell mit schneller Textgenerierung – ideal für großflächige, kosteneffiziente Anwendungen.",
|
||||
@@ -846,7 +821,7 @@
|
||||
"llava.description": "LLaVA ist ein multimodales Modell, das einen Vision-Encoder mit Vicuna kombiniert und starkes Verständnis für Vision und Sprache bietet.",
|
||||
"llava:13b.description": "LLaVA ist ein multimodales Modell, das einen Vision-Encoder mit Vicuna kombiniert und starkes Verständnis für Vision und Sprache bietet.",
|
||||
"llava:34b.description": "LLaVA ist ein multimodales Modell, das einen Vision-Encoder mit Vicuna kombiniert und starkes Verständnis für Vision und Sprache bietet.",
|
||||
"magistral-medium-2509.description": "Magistral Medium 1.2 ist ein Grenzmodell für Argumentation von Mistral AI (Sep 2025) mit Unterstützung für Vision.",
|
||||
"magistral-medium-latest.description": "Magistral Medium 1.2 ist ein fortschrittliches Reasoning-Modell von Mistral AI (September 2025) mit Bildverarbeitungsunterstützung.",
|
||||
"magistral-small-2509.description": "Magistral Small 1.2 ist ein Open-Source-Kleinmodell für logisches Denken von Mistral AI (September 2025) mit Bildverarbeitungsunterstützung.",
|
||||
"mathstral.description": "MathΣtral wurde für wissenschaftliche Forschung und mathematisches Denken entwickelt – mit starker Rechenleistung und Erklärungsfähigkeit.",
|
||||
"max-32k.description": "Spark Max 32K bietet Verarbeitung großer Kontexte mit verbessertem Kontextverständnis und logischem Denken. Unterstützt 32K-Token-Eingaben für das Lesen langer Dokumente und private Wissensabfragen.",
|
||||
@@ -935,25 +910,17 @@
|
||||
"minimax/minimax-m2.1.description": "MiniMax-M2.1 ist ein leichtgewichtiges, hochmodernes großes Sprachmodell, optimiert für Programmierung, Proxy-Workflows und moderne Anwendungsentwicklung. Es liefert klarere, prägnantere Ausgaben und schnellere Reaktionszeiten.",
|
||||
"minimax/minimax-m2.description": "MiniMax-M2 ist ein leistungsstarkes Modell, das sich in vielen technischen Szenarien bei Programmier- und Agentenaufgaben bewährt.",
|
||||
"minimaxai/minimax-m2.5.description": "MiniMax-M2.5 ist das neueste große Sprachmodell von MiniMax, das eine Mixture-of-Experts (MoE)-Architektur mit 229 Milliarden Gesamtparametern verwendet. Es erreicht branchenführende Leistung in den Bereichen Programmierung, Werkzeugaufrufe durch Agenten, Suchaufgaben und Büroszenarien.",
|
||||
"ministral-3:14b.description": "Ministral 3 14B ist das größte Modell der Ministral 3-Serie und bietet hochmoderne Leistung, die mit dem größeren Mistral Small 3.2 24B-Gegenstück vergleichbar ist. Optimiert für lokale Bereitstellung, bietet es hohe Leistung auf verschiedenen Hardware einschließlich lokaler Setups.",
|
||||
"ministral-3:3b.description": "Ministral 3 3B ist das kleinste und effizienteste Modell der Ministral 3-Serie und bietet starke Sprach- und Bildfähigkeiten in einem kompakten Paket. Entwickelt für Edge-Bereitstellung, bietet es hohe Leistung auf verschiedenen Hardware einschließlich lokaler Setups.",
|
||||
"ministral-3:8b.description": "Ministral 3 8B ist ein leistungsstarkes und effizientes Modell der Ministral 3-Serie, das erstklassige Text- und Bildfähigkeiten bietet. Entwickelt für Edge-Bereitstellung, bietet es hohe Leistung auf verschiedenen Hardware einschließlich lokaler Setups.",
|
||||
"ministral-3b-latest.description": "Ministral 3B ist das Spitzenmodell von Mistral für Edge-Anwendungen.",
|
||||
"ministral-8b-latest.description": "Ministral 8B ist ein äußerst kosteneffizientes Edge-Modell von Mistral.",
|
||||
"mistral-ai/Mistral-Large-2411.description": "Das Flaggschiffmodell von Mistral für komplexe Aufgaben, die groß angelegtes logisches Denken oder Spezialisierung erfordern (synthetische Textgenerierung, Codegenerierung, RAG oder Agenten).",
|
||||
"mistral-ai/Mistral-Nemo.description": "Mistral Nemo ist ein hochmodernes LLM mit erstklassigem logischen Denken, Weltwissen und Programmierfähigkeiten für seine Modellgröße.",
|
||||
"mistral-ai/mistral-small-2503.description": "Mistral Small eignet sich für alle sprachbasierten Aufgaben, die hohe Effizienz und geringe Latenz erfordern.",
|
||||
"mistral-large-2411.description": "Mistral Large ist das Flaggschiff-Modell, stark in mehrsprachigen Aufgaben, komplexer Argumentation und Codegenerierung – ideal für High-End-Anwendungen.",
|
||||
"mistral-large-2512.description": "Mistral Large 3 ist ein hochmodernes, allgemeines multimodales Modell mit offenen Gewichten und einer granularen Mixture-of-Experts-Architektur. Es verfügt über 41B aktive Parameter und 675B Gesamtparameter.",
|
||||
"mistral-large-3:675b.description": "Mistral Large 3 ist ein hochmodernes, allgemeines multimodales Modell mit offenen Gewichten und einer verfeinerten Mixture-of-Experts-Architektur. Es verfügt über 41B aktive Parameter und 675B Gesamtparameter.",
|
||||
"mistral-large-instruct.description": "Mistral-Large-Instruct-2407 ist ein fortschrittliches dichtes LLM mit 123 Milliarden Parametern und modernstem logischen Denken, Wissen und Programmierfähigkeiten.",
|
||||
"mistral-large-latest.description": "Mistral Large ist das Flaggschiff-Modell, das bei mehrsprachigen Aufgaben, komplexer Argumentation und Codegenerierung für High-End-Anwendungen herausragt.",
|
||||
"mistral-large-latest.description": "Mistral Large ist das Flaggschiffmodell, stark in mehrsprachigen Aufgaben, komplexem logischen Denken und Codegenerierung – ideal für anspruchsvolle Anwendungen.",
|
||||
"mistral-large.description": "Mixtral Large ist das Flaggschiffmodell von Mistral, das Codegenerierung, Mathematik und logisches Denken mit einem Kontextfenster von 128K kombiniert.",
|
||||
"mistral-medium-2508.description": "Mistral Medium 3.1 bietet hochmoderne Leistung zu 8× niedrigeren Kosten und vereinfacht die Unternehmensbereitstellung.",
|
||||
"mistral-medium-latest.description": "Mistral Medium 3.1 liefert erstklassige Leistung bei 8× geringeren Kosten und vereinfacht die Unternehmensbereitstellung.",
|
||||
"mistral-nemo-instruct.description": "Mistral-Nemo-Instruct-2407 ist die instruktionstaugliche Version von Mistral-Nemo-Base-2407.",
|
||||
"mistral-nemo.description": "Mistral Nemo ist ein hocheffizientes 12B-Modell von Mistral AI und NVIDIA.",
|
||||
"mistral-small-2506.description": "Mistral Small ist eine kostengünstige, schnelle und zuverlässige Option für Übersetzung, Zusammenfassung und Sentimentanalyse.",
|
||||
"mistral-small-2603.description": "Mistrals leistungsstarkes Hybridmodell, das Anweisungen, Argumentation und Codierungsfähigkeiten in einem einzigen Modell vereint. 119B Parameter mit 6.5B aktiv.",
|
||||
"mistral-small-latest.description": "Mistral Small ist eine kosteneffiziente, schnelle und zuverlässige Option für Übersetzung, Zusammenfassung und Sentimentanalyse.",
|
||||
"mistral-small.description": "Mistral Small eignet sich für alle sprachbasierten Aufgaben, die hohe Effizienz und geringe Latenz erfordern.",
|
||||
"mistral.description": "Mistral ist das 7B-Modell von Mistral AI, geeignet für vielfältige Sprachaufgaben.",
|
||||
@@ -999,11 +966,6 @@
|
||||
"moonshotai/kimi-k2.description": "Kimi K2 ist ein großes MoE-Modell von Moonshot AI mit 1T Gesamtparametern und 32B aktiven Parametern pro Durchlauf. Es ist optimiert für Agentenfähigkeiten wie fortgeschrittene Werkzeugnutzung, logisches Denken und Code-Synthese.",
|
||||
"morph/morph-v3-fast.description": "Morph bietet ein spezialisiertes Modell, um Codeänderungen anzuwenden, die von fortschrittlichen Modellen (z. B. Claude oder GPT-4o) vorgeschlagen wurden – mit über 4500 Tokens/Sek. Es ist der letzte Schritt in einem KI-Coding-Workflow und unterstützt 16k Eingabe-/Ausgabe-Tokens.",
|
||||
"morph/morph-v3-large.description": "Morph bietet ein spezialisiertes Modell, um Codeänderungen anzuwenden, die von fortschrittlichen Modellen (z. B. Claude oder GPT-4o) vorgeschlagen wurden – mit über 2500 Tokens/Sek. Es ist der letzte Schritt in einem KI-Coding-Workflow und unterstützt 16k Eingabe-/Ausgabe-Tokens.",
|
||||
"musesteamer-2.0-lite-i2v.description": "Im Vergleich zu Turbo bietet es überlegene Leistung mit hervorragendem Kosten-Nutzen-Verhältnis.",
|
||||
"musesteamer-2.0-pro-i2v.description": "Basierend auf Turbo unterstützt es die Erzeugung von 1080P dynamischen Videos und bietet höhere visuelle Qualität und verbesserte Videoausdruckskraft.",
|
||||
"musesteamer-2.0-turbo-i2v-audio.description": "Unterstützt die Erzeugung von 5s und 10s 720P dynamischen Videos mit Ton. Ermöglicht die audiovisuelle Erstellung von Mehrpersonen-Gesprächen mit synchronisiertem Ton und Bild, filmischer Bildqualität und meisterhaften Kamerabewegungen.",
|
||||
"musesteamer-2.0-turbo-i2v.description": "Unterstützt die Erzeugung von 5-Sekunden 720P stummen dynamischen Videos mit filmischer Bildqualität, komplexen Kamerabewegungen und realistischen Charakteremotionen und -aktionen.",
|
||||
"musesteamer-air-i2v.description": "Das Baidu MuseSteamer Air Videoerzeugungsmodell bietet hervorragende Leistung in Subjektkonsistenz, physikalischem Realismus, Kamerabewegungseffekten und Erzeugungsgeschwindigkeit. Es unterstützt die Erzeugung von 5-Sekunden 720P stummen dynamischen Videos und liefert filmische Bildqualität, schnelle Erzeugung und hervorragendes Kosten-Nutzen-Verhältnis.",
|
||||
"musesteamer-air-image.description": "musesteamer-air-image ist ein Bildgenerierungsmodell, das von Baidus Suchteam entwickelt wurde, um außergewöhnliche Kosten-Leistungs-Verhältnisse zu bieten. Es kann schnell klare, handlungskoherente Bilder basierend auf Benutzeranweisungen generieren und Benutzerbeschreibungen mühelos in visuelle Darstellungen umwandeln.",
|
||||
"nousresearch/hermes-2-pro-llama-3-8b.description": "Hermes 2 Pro Llama 3 8B ist eine aktualisierte Version von Nous Hermes 2 mit den neuesten intern entwickelten Datensätzen.",
|
||||
"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF.description": "Llama 3.1 Nemotron 70B ist ein von NVIDIA angepasstes LLM zur Verbesserung der Nützlichkeit. Es erzielt Spitzenwerte bei Arena Hard, AlpacaEval 2 LC und GPT-4-Turbo MT-Bench und belegt am 1. Oktober 2024 Platz 1 in allen drei Auto-Alignment-Benchmarks. Es wurde aus Llama-3.1-70B-Instruct mithilfe von RLHF (REINFORCE), Llama-3.1-Nemotron-70B-Reward und HelpSteer2-Preference-Prompts trainiert.",
|
||||
@@ -1073,13 +1035,6 @@
|
||||
"phi3:14b.description": "Phi-3 ist Microsofts leichtgewichtiges Open-Model für effiziente Integration und groß angelegte Schlussfolgerungen.",
|
||||
"pixtral-12b-2409.description": "Pixtral überzeugt bei der Analyse von Diagrammen/Bildern, Dokumenten-QA, multimodaler Schlussfolgerung und Befolgen von Anweisungen. Es verarbeitet Bilder in nativer Auflösung und Seitenverhältnis und unterstützt beliebig viele Bilder im 128K-Kontextfenster.",
|
||||
"pixtral-large-latest.description": "Pixtral Large ist ein multimodales Open-Model mit 124 Milliarden Parametern, basierend auf Mistral Large 2 – dem zweiten Modell unserer multimodalen Familie mit fortschrittlichem Bildverständnis.",
|
||||
"pixverse/pixverse-v5.6-it2v.description": "Laden Sie ein beliebiges Bild hoch, um die Geschichte, das Tempo und den Stil frei anzupassen und lebendige und kohärente Videos zu erzeugen. PixVerse V5.6 ist ein selbstentwickeltes Videoerzeugungs-Großmodell von Aishi Technology, das umfassende Verbesserungen sowohl in Text-zu-Video als auch Bild-zu-Video-Fähigkeiten bietet. Das Modell verbessert die Bildklarheit erheblich, die Stabilität bei komplexen Bewegungen und die audiovisuelle Synchronisation. Die Lippen-Synchronisationsgenauigkeit und der natürliche emotionale Ausdruck werden in Dialogszenen mit mehreren Charakteren verbessert. Komposition, Beleuchtung und Texturkonsistenz werden ebenfalls optimiert, wodurch die Gesamtqualität der Erzeugung weiter erhöht wird. PixVerse V5.6 rangiert weltweit in der Spitzengruppe der Artificial Analysis Text-zu-Video- und Bild-zu-Video-Bestenliste.",
|
||||
"pixverse/pixverse-v5.6-kf2v.description": "Erreichen Sie nahtlose Übergänge zwischen beliebigen zwei Bildern und erzeugen Sie glattere und natürlichere Szenenwechsel mit visuell beeindruckenden Effekten. PixVerse V5.6 ist ein selbstentwickeltes Videoerzeugungs-Großmodell von Aishi Technology, das umfassende Verbesserungen sowohl in Text-zu-Video als auch Bild-zu-Video-Fähigkeiten bietet. Das Modell verbessert die Bildklarheit erheblich, die Stabilität bei komplexen Bewegungen und die audiovisuelle Synchronisation. Die Lippen-Synchronisationsgenauigkeit und der natürliche emotionale Ausdruck werden in Dialogszenen mit mehreren Charakteren verbessert. Komposition, Beleuchtung und Texturkonsistenz werden ebenfalls optimiert, wodurch die Gesamtqualität der Erzeugung weiter erhöht wird. PixVerse V5.6 rangiert weltweit in der Spitzengruppe der Artificial Analysis Text-zu-Video- und Bild-zu-Video-Bestenliste.",
|
||||
"pixverse/pixverse-v5.6-r2v.description": "Geben Sie 2–7 Bilder ein, um verschiedene Subjekte intelligent zu kombinieren und dabei einen einheitlichen Stil und koordinierte Bewegungen beizubehalten. Bauen Sie mühelos reichhaltige Erzählungsszenen und verbessern Sie die Inhaltskontrollierbarkeit und kreative Freiheit. PixVerse V5.6 ist ein selbstentwickeltes Videoerzeugungs-Großmodell von Aishi Technology, das umfassende Verbesserungen sowohl in Text-zu-Video als auch Bild-zu-Video-Fähigkeiten bietet. Das Modell verbessert die Bildklarheit erheblich, die Stabilität bei komplexen Bewegungen und die audiovisuelle Synchronisation. Die Lippen-Synchronisationsgenauigkeit und der natürliche emotionale Ausdruck werden in Dialogszenen mit mehreren Charakteren verbessert. Komposition, Beleuchtung und Texturkonsistenz werden ebenfalls optimiert, wodurch die Gesamtqualität der Erzeugung weiter erhöht wird. PixVerse V5.6 rangiert weltweit in der Spitzengruppe der Artificial Analysis Text-zu-Video- und Bild-zu-Video-Bestenliste.",
|
||||
"pixverse/pixverse-v5.6-t2v.description": "Geben Sie eine Textbeschreibung ein, um hochwertige Videos mit sekundenschneller Geschwindigkeit und präziser semantischer Ausrichtung zu erzeugen, die mehrere Stile unterstützen. PixVerse V5.6 ist ein selbstentwickeltes Videoerzeugungs-Großmodell von Aishi Technology, das umfassende Verbesserungen sowohl in Text-zu-Video als auch Bild-zu-Video-Fähigkeiten bietet. Das Modell verbessert die Bildklarheit erheblich, die Stabilität bei komplexen Bewegungen und die audiovisuelle Synchronisation. Die Lippen-Synchronisationsgenauigkeit und der natürliche emotionale Ausdruck werden in Dialogszenen mit mehreren Charakteren verbessert. Komposition, Beleuchtung und Texturkonsistenz werden ebenfalls optimiert, wodurch die Gesamtqualität der Erzeugung weiter erhöht wird. PixVerse V5.6 rangiert weltweit in der Spitzengruppe der Artificial Analysis Text-zu-Video- und Bild-zu-Video-Bestenliste.",
|
||||
"pixverse/pixverse-v6-it2v.description": "V6 ist PixVerses neues Modell, das Ende März 2026 eingeführt wurde. Sein it2v (Bild-zu-Video)-Modell rangiert weltweit auf Platz zwei. Zusätzlich zu den Aufforderungssteuerungsfähigkeiten von t2v (Text-zu-Video) kann it2v die Farben, Sättigung, Szenen und Charaktermerkmale von Referenzbildern genau reproduzieren und stärkere Charakteremotionen und Hochgeschwindigkeitsbewegungsleistung liefern. Es unterstützt bis zu 15-Sekunden-Videos, direkten Musik- und Videoausgang sowie mehrere Sprachen. Ideal für Szenarien wie Nahaufnahmen von E-Commerce-Produkten, Werbeaktionen und simuliertes C4D-Modelling zur Darstellung von Produktstrukturen mit direktem Ein-Klick-Ausgang.",
|
||||
"pixverse/pixverse-v6-kf2v.description": "V6 ist PixVerses neues Modell, das Ende März 2026 eingeführt wurde. Sein kf2v (Keyframe-zu-Video)-Modell kann beliebige zwei Bilder nahtlos verbinden und glattere und natürlichere Videoübergänge erzeugen. Es unterstützt bis zu 15-Sekunden-Videos, direkten Musik- und Videoausgang sowie mehrere Sprachen.",
|
||||
"pixverse/pixverse-v6-t2v.description": "V6 ist PixVerses neues Modell, das Ende März 2026 eingeführt wurde. Sein t2v (Text-zu-Video)-Modell ermöglicht eine präzise Steuerung der Video-Visuals durch Aufforderungen und reproduziert verschiedene filmische Techniken genau. Kamerabewegungen wie Schwenken, Neigen, Verfolgen und Folgen sind glatt und natürlich, mit präzisen und kontrollierbaren Perspektivwechseln. Es unterstützt bis zu 15-Sekunden-Videos, direkten Musik- und Videoausgang sowie mehrere Sprachen.",
|
||||
"pro-128k.description": "Spark Pro 128K bietet eine sehr große Kontextkapazität mit bis zu 128K Kontext – ideal für Langform-Dokumente, die eine vollständige Textanalyse und kohärente Logik über große Distanzen erfordern, mit flüssiger Argumentation und vielfältiger Zitatunterstützung in komplexen Diskussionen.",
|
||||
"pro-deepseek-r1.description": "Dediziertes Enterprise-Service-Modell mit gebündelter Parallelverarbeitung.",
|
||||
"pro-deepseek-v3.description": "Dediziertes Enterprise-Service-Modell mit gebündelter Parallelverarbeitung.",
|
||||
@@ -1234,8 +1189,6 @@
|
||||
"qwq.description": "QwQ ist ein Schlussfolgerungsmodell aus der Qwen-Familie. Im Vergleich zu standardmäßig instruktionstunierten Modellen bietet es überlegene Denk- und Schlussfolgerungsfähigkeiten, die die Leistung bei nachgelagerten Aufgaben deutlich verbessern – insbesondere bei schwierigen Problemen. QwQ-32B ist ein mittelgroßes Modell, das mit führenden Schlussfolgerungsmodellen wie DeepSeek-R1 und o1-mini mithalten kann.",
|
||||
"qwq_32b.description": "Mittelgroßes Schlussfolgerungsmodell aus der Qwen-Familie. Im Vergleich zu standardmäßig instruktionstunierten Modellen steigern QwQs Denk- und Schlussfolgerungsfähigkeiten die Leistung bei nachgelagerten Aufgaben deutlich – insbesondere bei schwierigen Problemen.",
|
||||
"r1-1776.description": "R1-1776 ist eine nachtrainierte Variante von DeepSeek R1, die darauf ausgelegt ist, unzensierte, objektive und faktenbasierte Informationen bereitzustellen.",
|
||||
"seedance-1-5-pro-251215.description": "Seedance 1.5 Pro von ByteDance unterstützt Text-zu-Video, Bild-zu-Video (erstes Bild, erstes+letztes Bild) und Audioerzeugung synchronisiert mit visuellen Inhalten.",
|
||||
"seedream-5-0-260128.description": "ByteDance-Seedream-5.0-lite von BytePlus bietet webabfrage-unterstützte Erzeugung für Echtzeitinformationen, verbesserte Interpretation komplexer Aufforderungen und verbesserte Referenzkonsistenz für professionelle visuelle Erstellung.",
|
||||
"solar-mini-ja.description": "Solar Mini (Ja) erweitert Solar Mini mit einem Fokus auf Japanisch und behält dabei eine effiziente und starke Leistung in Englisch und Koreanisch bei.",
|
||||
"solar-mini.description": "Solar Mini ist ein kompaktes LLM, das GPT-3.5 übertrifft. Es bietet starke mehrsprachige Fähigkeiten in Englisch und Koreanisch und ist eine effiziente Lösung mit kleinem Ressourcenbedarf.",
|
||||
"solar-pro.description": "Solar Pro ist ein hochintelligentes LLM von Upstage, das auf Befolgen von Anweisungen auf einer einzelnen GPU ausgelegt ist und IFEval-Werte über 80 erreicht. Derzeit wird Englisch unterstützt; die vollständige Veröffentlichung mit erweitertem Sprachsupport und längeren Kontexten war für November 2024 geplant.",
|
||||
@@ -1245,8 +1198,6 @@
|
||||
"sonar-reasoning.description": "Ein fortschrittliches Suchprodukt mit fundierter Suche für komplexe Anfragen und Folgefragen.",
|
||||
"sonar.description": "Ein leichtgewichtiges, suchbasiertes Produkt – schneller und kostengünstiger als Sonar Pro.",
|
||||
"sophnet/deepseek-v3.2.description": "DeepSeek V3.2 ist ein Modell, das ein Gleichgewicht zwischen hoher Recheneffizienz und hervorragender Leistung in logischem Denken und Agentenfähigkeiten bietet.",
|
||||
"sora-2-pro.description": "Sora 2 Pro ist unser hochmodernes, fortschrittlichstes Medienerzeugungsmodell, das Videos mit synchronisiertem Audio erzeugt. Es kann reich detaillierte, dynamische Clips aus natürlicher Sprache oder Bildern erstellen.",
|
||||
"sora-2.description": "Sora 2 ist unser neues leistungsstarkes Medienerzeugungsmodell, das Videos mit synchronisiertem Audio erzeugt. Es kann reich detaillierte, dynamische Clips aus natürlicher Sprache oder Bildern erstellen.",
|
||||
"spark-x.description": "X2-Fähigkeiten-Übersicht: 1. Führt dynamische Anpassung des Denkmodus ein, gesteuert über das `thinking`-Feld. 2. Erweiterte Kontextlänge: 64K Eingabetokens und 128K Ausgabetokens. 3. Unterstützt Funktionaufruf-Funktionalität.",
|
||||
"stable-diffusion-3-medium.description": "Das neueste Text-zu-Bild-Modell von Stability AI. Diese Version verbessert die Bildqualität, das Textverständnis und die Stilvielfalt erheblich, interpretiert komplexe Spracheingaben präziser und erzeugt genauere, vielfältigere Bilder.",
|
||||
"stable-diffusion-3.5-large-turbo.description": "stable-diffusion-3.5-large-turbo nutzt Adversarial Diffusion Distillation (ADD) auf stable-diffusion-3.5-large für höhere Geschwindigkeit.",
|
||||
@@ -1301,68 +1252,23 @@
|
||||
"v0-1.0-md.description": "v0-1.0-md ist ein Legacy-Modell, das über die v0-API bereitgestellt wird.",
|
||||
"v0-1.5-lg.description": "v0-1.5-lg eignet sich für anspruchsvolle Denk- oder Reasoning-Aufgaben.",
|
||||
"v0-1.5-md.description": "v0-1.5-md eignet sich für alltägliche Aufgaben und UI-Generierung.",
|
||||
"veo-2.0-generate-001.description": "Unser hochmodernes Videoerzeugungsmodell, verfügbar für Entwickler im kostenpflichtigen Tier der Gemini-API.",
|
||||
"veo-3.0-fast-generate-001.description": "Unser stabiles Videoerzeugungsmodell, verfügbar für Entwickler im kostenpflichtigen Tier der Gemini-API.",
|
||||
"veo-3.0-generate-001.description": "Unser stabiles Videoerzeugungsmodell, verfügbar für Entwickler im kostenpflichtigen Tier der Gemini-API.",
|
||||
"veo-3.1-fast-generate-preview.description": "Unser neuestes Videoerzeugungsmodell, verfügbar für Entwickler im kostenpflichtigen Tier der Gemini-API.",
|
||||
"veo-3.1-generate-preview.description": "Unser neuestes Videoerzeugungsmodell, verfügbar für Entwickler im kostenpflichtigen Tier der Gemini-API.",
|
||||
"vercel/v0-1.0-md.description": "Zugriff auf die Modelle hinter v0 zur Generierung, Fehlerbehebung und Optimierung moderner Webanwendungen mit frameworkspezifischem Denken und aktuellem Wissen.",
|
||||
"vercel/v0-1.5-md.description": "Zugriff auf die Modelle hinter v0 zur Generierung, Fehlerbehebung und Optimierung moderner Webanwendungen mit frameworkspezifischem Denken und aktuellem Wissen.",
|
||||
"vidu/viduq2-pro_img2video.description": "Geben Sie ein Bild und eine Textbeschreibung ein, um ein Video zu erzeugen. ViduQ2-Pro Bild-zu-Video ist das weltweit erste „Alles kann referenziert werden“-Videomodell. Es unterstützt sechs Referenzdimensionen – Effekte, Ausdrücke, Texturen, Aktionen, Charaktere und Szenen – und ermöglicht vollständig entwickelte Videobearbeitung. Durch kontrollierbare Hinzufügung, Löschung und Modifikation erreicht es fein abgestimmte Videobearbeitung, konzipiert als Produktions-Engine für animierte Serien, Kurzdramen und Filmproduktion.",
|
||||
"vidu/viduq2-pro_reference2video.description": "Geben Sie Referenzvideos, Bilder und eine Textbeschreibung ein, um ein Video zu erzeugen. ViduQ2-Pro Referenz-zu-Video ist das weltweit erste „Alles kann referenziert werden“-Videomodell. Es unterstützt sechs Referenzdimensionen – Effekte, Ausdrücke, Texturen, Aktionen, Charaktere und Szenen – und ermöglicht vollständig entwickelte Videobearbeitung. Durch kontrollierbare Hinzufügung, Löschung und Modifikation erreicht es fein abgestimmte Videobearbeitung, konzipiert als Produktions-Engine für animierte Serien, Kurzdramen und Filmproduktion.",
|
||||
"vidu/viduq2-pro_start-end2video.description": "Geben Sie die ersten und letzten Bildrahmen zusammen mit einer Textbeschreibung ein, um ein Video zu erzeugen. ViduQ2-Pro Keyframe-zu-Video ist das weltweit erste „Alles kann referenziert werden“-Videomodell. Es unterstützt sechs Referenzdimensionen – Effekte, Ausdrücke, Texturen, Aktionen, Charaktere und Szenen – und ermöglicht vollständig entwickelte Videobearbeitung. Durch kontrollierbare Hinzufügung, Löschung und Modifikation erreicht es fein abgestimmte Videobearbeitung, konzipiert als Produktions-Engine für animierte Serien, Kurzdramen und Filmproduktion.",
|
||||
"vidu/viduq2-turbo_img2video.description": "Geben Sie ein Bild und eine Textbeschreibung ein, um ein Video zu erzeugen. ViduQ2-Turbo Bild-zu-Video ist eine ultra-schnelle Erzeugungs-Engine. Ein 5-Sekunden 720P-Video kann in nur 19 Sekunden erzeugt werden, und ein 5-Sekunden 1080P-Video in etwa 27 Sekunden. Charakteraktionen und -ausdrücke sind natürlich und realistisch, liefern starke Authentizität und hervorragende Leistung in hochdynamischen Szenen wie Actionsequenzen, mit weitreichender Bewegung.",
|
||||
"vidu/viduq2-turbo_start-end2video.description": "Geben Sie die ersten und letzten Bildrahmen zusammen mit einer Textbeschreibung ein, um ein Video zu erzeugen. ViduQ2-Turbo Keyframe-zu-Video ist eine ultra-schnelle Erzeugungs-Engine. Ein 5-Sekunden 720P-Video kann in nur 19 Sekunden erzeugt werden, und ein 5-Sekunden 1080P-Video in etwa 27 Sekunden. Charakteraktionen und -ausdrücke sind natürlich und realistisch, liefern starke Authentizität und hervorragende Leistung in hochdynamischen Szenen wie Actionsequenzen, mit weitreichender Bewegung.",
|
||||
"vidu/viduq2_reference2video.description": "Geben Sie Referenzbilder zusammen mit einer Textbeschreibung ein, um ein Video zu erzeugen. ViduQ2 Referenz-zu-Video ist ein Modell, das für präzise Befolgung von Anweisungen und nuancierte Emotionserfassung entwickelt wurde. Es bietet herausragende narrative Kontrolle, interpretiert und drückt Mikroausdrucksänderungen genau aus; verfügt über reiche filmische Sprache, glatte Kamerabewegungen und starke visuelle Spannung. Weit verbreitet in Film und Animation, Werbung und E-Commerce, Kurzdramen und Kulturtourismus.",
|
||||
"vidu/viduq2_text2video.description": "Geben Sie eine Textaufforderung ein, um ein Video zu erzeugen. ViduQ2 Text-zu-Video ist ein Modell, das für präzise Befolgung von Anweisungen und nuancierte Emotionserfassung entwickelt wurde. Es bietet herausragende narrative Kontrolle, interpretiert und drückt Mikroausdrucksänderungen genau aus; verfügt über reiche filmische Sprache, glatte Kamerabewegungen und starke visuelle Spannung. Weit verbreitet in Film und Animation, Werbung und E-Commerce, Kurzdramen und Kulturtourismus.",
|
||||
"vidu/viduq3-pro_img2video.description": "Geben Sie ein Bild und eine Textbeschreibung ein, um ein Video zu erzeugen. ViduQ3-Pro Bild-zu-Video ist ein Flaggschiff-Audio-Visuelles-Nativmodell. Es unterstützt bis zu 16 Sekunden synchronisierte Audio-Visuelle Erzeugung, ermöglicht freies Multi-Shot-Wechseln und kontrolliert präzise Tempo, Emotion und narrative Kontinuität. Mit einer führenden Parameter-Skala liefert es außergewöhnliche Bildqualität, Charakterkonsistenz und emotionale Ausdruckskraft, die den filmischen Standards entspricht. Ideal für professionelle Produktionsszenarien wie Werbung (E-Commerce, TVC, Performance-Kampagnen), animierte Serien, Live-Action-Dramen und Spiele.",
|
||||
"vidu/viduq3-pro_start-end2video.description": "Geben Sie die ersten und letzten Bildrahmen zusammen mit einer Textbeschreibung ein, um ein Video zu erzeugen. ViduQ3-Pro Keyframe-zu-Video ist ein Flaggschiff-Audio-Visuelles-Nativmodell. Es unterstützt bis zu 16 Sekunden synchronisierte Audio-Visuelle Erzeugung, ermöglicht freies Multi-Shot-Wechseln und kontrolliert präzise Tempo, Emotion und narrative Kontinuität. Mit einer führenden Parameter-Skala liefert es außergewöhnliche Bildqualität, Charakterkonsistenz und emotionale Ausdruckskraft, die den filmischen Standards entspricht. Ideal für professionelle Produktionsszenarien wie Werbung (E-Commerce, TVC, Performance-Kampagnen), animierte Serien, Live-Action-Dramen und Spiele.",
|
||||
"vidu/viduq3-pro_text2video.description": "Geben Sie eine Textaufforderung ein, um ein Video zu erzeugen. ViduQ3-Pro Text-zu-Video ist ein Flaggschiff-Audio-Visuelles-Nativmodell. Unterstützt bis zu 16 Sekunden synchronisierte Audio-Visuelle Erzeugung, ermöglicht freies Multi-Shot-Wechseln und kontrolliert präzise Tempo, Emotion und narrative Kontinuität. Mit einer führenden Parameter-Skala liefert es außergewöhnliche Bildqualität, Charakterkonsistenz und emotionale Ausdruckskraft, die den filmischen Standards entspricht. Ideal für professionelle Produktionsszenarien wie Werbung (E-Commerce, TVC, Performance-Kampagnen), animierte Serien, Live-Action-Dramen und Spiele.",
|
||||
"vidu/viduq3-turbo_img2video.description": "Geben Sie ein Bild und eine Textbeschreibung ein, um ein Video zu erzeugen. ViduQ3-Turbo Bild-zu-Video ist ein hochleistungsfähiges beschleunigtes Modell. Es bietet extrem schnelle Erzeugung bei gleichzeitiger Beibehaltung hochwertiger visueller und dynamischer Ausdruckskraft, herausragend in Actionszenen, emotionaler Darstellung und semantischem Verständnis. Kosteneffektiv und ideal für Freizeitunterhaltungsszenarien wie soziale Medienbilder, KI-Begleiter und Spezialeffekte.",
|
||||
"vidu/viduq3-turbo_start-end2video.description": "Geben Sie die ersten und letzten Bildrahmen zusammen mit einer Textbeschreibung ein, um ein Video zu erzeugen. ViduQ3-Turbo Keyframe-zu-Video ist ein hochleistungsfähiges beschleunigtes Modell. Es bietet extrem schnelle Erzeugung bei gleichzeitiger Beibehaltung hochwertiger visueller und dynamischer Ausdruckskraft, herausragend in Actionszenen, emotionaler Darstellung und semantischem Verständnis. Kosteneffektiv und ideal für Freizeitunterhaltungsszenarien wie soziale Medienbilder, KI-Begleiter und Spezialeffekte.",
|
||||
"vidu/viduq3-turbo_text2video.description": "Geben Sie eine Textaufforderung ein, um ein Video zu erzeugen. ViduQ3-Turbo Text-zu-Video ist ein hochleistungsfähiges beschleunigtes Modell. Es bietet extrem schnelle Erzeugung bei gleichzeitiger Beibehaltung hochwertiger visueller und dynamischer Ausdruckskraft, herausragend in Actionszenen, emotionaler Darstellung und semantischem Verständnis. Kosteneffektiv und gut geeignet für Freizeitunterhaltungsszenarien wie soziale Medienbilder, KI-Begleiter und Spezialeffekte.",
|
||||
"vidu2-image.description": "Vidu 2 ist ein Videoerzeugungs-Grundmodell, das darauf ausgelegt ist, Geschwindigkeit und Qualität auszugleichen. Es konzentriert sich auf Bild-zu-Video-Erzeugung und Start-End-Bildsteuerung, unterstützt 4-Sekunden-Videos mit 720P-Auflösung. Die Erzeugungsgeschwindigkeit ist erheblich verbessert, während die Kosten deutlich reduziert wurden. Die Bild-zu-Video-Erzeugung behebt frühere Farbverschiebungsprobleme und liefert stabile und kontrollierbare visuelle Inhalte, die für E-Commerce und ähnliche Anwendungen geeignet sind. Darüber hinaus wurde das semantische Verständnis von Start- und Endbildern sowie die Konsistenz über mehrere Referenzbilder hinweg verbessert, wodurch es zu einem effizienten Werkzeug für die großflächige Inhaltsproduktion in allgemeiner Unterhaltung, Internetmedien, animierten Kurzdramen und Werbung wird.",
|
||||
"vidu2-reference.description": "Vidu 2 ist ein Videoerzeugungs-Grundmodell, das darauf ausgelegt ist, Geschwindigkeit und Qualität auszugleichen. Es konzentriert sich auf Bild-zu-Video-Erzeugung und Start-End-Bildsteuerung, unterstützt 4-Sekunden-Videos mit 720P-Auflösung. Die Erzeugungsgeschwindigkeit ist erheblich verbessert, während die Kosten deutlich reduziert wurden. Die Bild-zu-Video-Erzeugung behebt frühere Farbverschiebungsprobleme und liefert stabile und kontrollierbare visuelle Inhalte, die für E-Commerce und ähnliche Anwendungen geeignet sind. Darüber hinaus wurde das semantische Verständnis von Start- und Endbildern sowie die Konsistenz über mehrere Referenzbilder hinweg verbessert, wodurch es zu einem effizienten Werkzeug für die großflächige Inhaltsproduktion in allgemeiner Unterhaltung, Internetmedien, animierten Kurzdramen und Werbung wird.",
|
||||
"vidu2-start-end.description": "Vidu 2 ist ein Videoerzeugungs-Grundmodell, das darauf ausgelegt ist, Geschwindigkeit und Qualität auszugleichen. Es konzentriert sich auf Bild-zu-Video-Erzeugung und Start-End-Bildsteuerung, unterstützt 4-Sekunden-Videos mit 720P-Auflösung. Die Erzeugungsgeschwindigkeit ist erheblich verbessert, während die Kosten deutlich reduziert wurden. Die Bild-zu-Video-Erzeugung behebt frühere Farbverschiebungsprobleme und liefert stabile und kontrollierbare visuelle Inhalte, die für E-Commerce und ähnliche Anwendungen geeignet sind. Darüber hinaus wurde das semantische Verständnis von Start- und Endbildern sowie die Konsistenz über mehrere Referenzbilder hinweg verbessert, wodurch es zu einem effizienten Werkzeug für die großflächige Inhaltsproduktion in allgemeiner Unterhaltung, Internetmedien, animierten Kurzdramen und Werbung wird.",
|
||||
"viduq1-image.description": "Vidu Q1 ist Vidu's nächstes Generation Videoerzeugungs-Grundmodell, das sich auf hochwertige Videoerstellung konzentriert. Es produziert Inhalte mit festen Spezifikationen von 5 Sekunden, 24 FPS und 1080P-Auflösung. Durch tiefe Optimierung der visuellen Klarheit werden die Gesamtbildqualität und Textur erheblich verbessert, während Probleme wie Handverformung und Bildstottern stark reduziert werden. Der realistische Stil nähert sich realen Szenen, und 2D-Animationsstile werden mit hoher Treue bewahrt. Übergänge zwischen Start- und Endbildern sind glatter, wodurch es sich gut für kreative Szenarien mit hohen Anforderungen wie Filmproduktion, Werbung und animierte Kurzdramen eignet.",
|
||||
"viduq1-start-end.description": "Vidu Q1 ist Vidu's nächstes Generation Videoerzeugungs-Grundmodell, das sich auf hochwertige Videoerstellung konzentriert. Es produziert Inhalte mit festen Spezifikationen von 5 Sekunden, 24 FPS und 1080P-Auflösung. Durch tiefe Optimierung der visuellen Klarheit werden die Gesamtbildqualität und Textur erheblich verbessert, während Probleme wie Handverformung und Bildstottern stark reduziert werden. Der realistische Stil nähert sich realen Szenen, und 2D-Animationsstile werden mit hoher Treue bewahrt. Übergänge zwischen Start- und Endbildern sind glatter, wodurch es sich gut für kreative Szenarien mit hohen Anforderungen wie Filmproduktion, Werbung und animierte Kurzdramen eignet.",
|
||||
"viduq1-text.description": "Vidu Q1 ist Vidu's nächstes Generation Videoerzeugungs-Grundmodell, das sich auf hochwertige Videoerstellung konzentriert. Es produziert Inhalte mit festen Spezifikationen von 5 Sekunden, 24 FPS und 1080P-Auflösung. Durch tiefe Optimierung der visuellen Klarheit werden die Gesamtbildqualität und Textur erheblich verbessert, während Probleme wie Handverformung und Bildstottern stark reduziert werden. Der realistische Stil nähert sich realen Szenen, und 2D-Animationsstile werden mit hoher Treue bewahrt. Übergänge zwischen Start- und Endbildern sind glatter, wodurch es sich gut für kreative Szenarien mit hohen Anforderungen wie Filmproduktion, Werbung und animierte Kurzdramen eignet.",
|
||||
"volcengine/doubao-seed-2-0-code.description": "Doubao-Seed-2.0-Code ist für die Programmieranforderungen auf Unternehmensebene optimiert. Basierend auf den hervorragenden Agent- und VLM-Fähigkeiten von Seed 2.0 verbessert es speziell die Codierungsfähigkeiten mit herausragender Frontend-Leistung und gezielter Optimierung für gängige mehrsprachige Codierungsanforderungen in Unternehmen, was es ideal für die Integration mit verschiedenen KI-Programmierwerkzeugen macht.",
|
||||
"volcengine/doubao-seed-2-0-lite.description": "Balanciert Generierungsqualität und Reaktionsgeschwindigkeit, geeignet als universelles Produktionsmodell in Unternehmensqualität.",
|
||||
"volcengine/doubao-seed-2-0-mini.description": "Verweist auf die neueste Version von doubao-seed-2-0-mini.",
|
||||
"volcengine/doubao-seed-2-0-pro.description": "Verweist auf die neueste Version von doubao-seed-2-0-pro.",
|
||||
"volcengine/doubao-seed-code.description": "Doubao-Seed-Code ist das LLM der ByteDance Volcano Engine, optimiert für agentenbasiertes Programmieren. Es überzeugt bei Programmier- und Agentenbenchmarks mit Unterstützung für 256K-Kontext.",
|
||||
"wan2.2-i2v-flash.description": "Wanxiang 2.2 Speed Edition bietet ultra-schnelle Erzeugung mit genauerem Verständnis von Aufforderungen und Kamerasteuerung. Es bewahrt die Konsistenz visueller Elemente und verbessert die Gesamtstabilität und Erfolgsrate erheblich.",
|
||||
"wan2.2-i2v-plus.description": "Wanxiang 2.2 Pro Edition bietet genaueres Verständnis von Aufforderungen und kontrollierbare Kamerabewegungen. Es bewahrt die Konsistenz visueller Elemente und verbessert die Stabilität und Erfolgsrate erheblich und erzeugt reichhaltigere, detailliertere Inhalte.",
|
||||
"wan2.2-kf2v-flash.description": "Wanxiang 2.2 Speed Edition",
|
||||
"wan2.2-kf2v-plus.description": "Wanxiang 2.2 Plus Edition",
|
||||
"wan2.2-t2i-flash.description": "Wanxiang 2.2 Flash ist das neueste Modell mit Verbesserungen in Kreativität, Stabilität und Realismus, das schnelle Generierung und hohen Wert bietet.",
|
||||
"wan2.2-t2i-plus.description": "Wanxiang 2.2 Plus ist das neueste Modell mit Verbesserungen in Kreativität, Stabilität und Realismus, das reichere Details erzeugt.",
|
||||
"wan2.2-t2v-plus.description": "Wanxiang 2.2 Pro Edition bietet genaueres Verständnis von Aufforderungen, liefert stabile und glatte Bewegungserzeugung und erzeugt reichhaltigere, detailliertere visuelle Inhalte.",
|
||||
"wan2.5-i2i-preview.description": "Wanxiang 2.5 I2I Preview unterstützt Einzelbildbearbeitung und Multi-Bild-Fusion.",
|
||||
"wan2.5-i2v-preview.description": "Wanxiang 2.5 Preview unterstützt automatische Sprachgenerierung und die Möglichkeit, benutzerdefinierte Audiodateien einzubinden.",
|
||||
"wan2.5-t2i-preview.description": "Wanxiang 2.5 T2I unterstützt flexible Auswahl von Bilddimensionen innerhalb der Gesamtpixelbereichs- und Seitenverhältnisbeschränkungen.",
|
||||
"wan2.5-t2v-preview.description": "Wanxiang 2.5 Preview unterstützt automatische Sprachgenerierung und die Möglichkeit, benutzerdefinierte Audiodateien einzubinden.",
|
||||
"wan2.6-i2v-flash.description": "Wanxiang 2.6 führt Multi-Shot-Erzählfähigkeiten ein und unterstützt gleichzeitig automatische Sprachgenerierung und die Möglichkeit, benutzerdefinierte Audiodateien einzubinden.",
|
||||
"wan2.6-i2v.description": "Wanxiang 2.6 führt Multi-Shot-Erzählfähigkeiten ein und unterstützt gleichzeitig automatische Sprachgenerierung und die Möglichkeit, benutzerdefinierte Audiodateien einzubinden.",
|
||||
"wan2.6-image.description": "Wanxiang 2.6 Image unterstützt Bildbearbeitung und gemischte Bild-Text-Layout-Ausgabe.",
|
||||
"wan2.6-r2v-flash.description": "Wanxiang 2.6 Referenz-zu-Video – Flash bietet schnellere Erzeugung und bessere Kostenleistung. Es unterstützt die Referenzierung spezifischer Charaktere oder beliebiger Objekte, bewahrt genau die Konsistenz in Erscheinung und Stimme und ermöglicht Multi-Charakter-Referenz für gemeinsame Darstellung.",
|
||||
"wan2.6-r2v.description": "Wanxiang 2.6 Referenz-zu-Video unterstützt die Referenzierung spezifischer Charaktere oder beliebiger Objekte, bewahrt genau die Konsistenz in Erscheinung und Stimme und ermöglicht Multi-Charakter-Referenz für gemeinsame Darstellung. Hinweis: Bei der Verwendung von Videos als Referenzen wird das Eingabevideo ebenfalls in die Kosten einbezogen. Bitte beachten Sie die Modellpreis-Dokumentation für Details.",
|
||||
"wan2.6-t2i.description": "Wanxiang 2.6 T2I unterstützt flexible Auswahl von Bilddimensionen innerhalb der Gesamtpixelbereichs- und Seitenverhältnisbeschränkungen (wie Wanxiang 2.5).",
|
||||
"wan2.6-t2v.description": "Wanxiang 2.6 führt Multi-Shot-Erzählfähigkeiten ein und unterstützt gleichzeitig automatische Sprachgenerierung und die Möglichkeit, benutzerdefinierte Audiodateien einzubinden.",
|
||||
"wan2.7-i2v.description": "Wanxiang 2.7 Bild-zu-Video bietet ein umfassendes Upgrade der Leistungsmöglichkeiten. Dramatische Szenen zeigen zarte und natürliche emotionale Ausdruckskraft, während Actionsequenzen intensiv und eindrucksvoll sind. Kombiniert mit dynamischeren und rhythmisch getriebenen Übergängen zwischen Aufnahmen erreicht es stärkere Gesamtleistung und Erzählkraft.",
|
||||
"wan2.7-image-pro.description": "Wanxiang 2.7 Bild Professional Edition, unterstützt 4K hochauflösenden Ausgang.",
|
||||
"wan2.7-image.description": "Wanxiang 2.7 Bild, schnellere Bildgenerierungsgeschwindigkeit.",
|
||||
"wan2.7-r2v.description": "Wanxiang 2.7 Referenz-zu-Video bietet stabilere Referenzen für Charaktere, Requisiten und Szenen. Es unterstützt bis zu 5 gemischte Referenzbilder oder Videos sowie Audio-Ton-Referenzierung. Kombiniert mit verbesserten Kernfähigkeiten liefert es stärkere Leistung und Ausdruckskraft.",
|
||||
"wan2.7-t2v.description": "Wanxiang 2.7 Text-zu-Video bietet ein umfassendes Upgrade der Leistungsmöglichkeiten. Dramatische Szenen zeigen zarte und natürliche emotionale Ausdruckskraft, während Actionsequenzen intensiv und eindrucksvoll sind. Verbessert mit dynamischeren und rhythmisch getriebenen Übergängen zwischen Aufnahmen erreicht es stärkere Gesamtleistung und Erzählkraft.",
|
||||
"wanx-v1.description": "Basismodell für Text-zu-Bild. Entspricht Tongyi Wanxiang 1.0 General.",
|
||||
"wanx2.0-t2i-turbo.description": "Hervorragend bei texturierten Porträts mit moderater Geschwindigkeit und geringeren Kosten. Entspricht Tongyi Wanxiang 2.0 Speed.",
|
||||
"wanx2.1-i2v-plus.description": "Wanxiang 2.1 Pro Edition liefert visuell verfeinerte und hochwertigere Bilder.",
|
||||
"wanx2.1-i2v-turbo.description": "Wanxiang 2.1 Speed Edition bietet hohe Kostenleistung.",
|
||||
"wanx2.1-t2i-plus.description": "Vollständig aktualisierte Version mit reicheren Bilddetails und etwas langsamerer Geschwindigkeit. Entspricht Tongyi Wanxiang 2.1 Pro.",
|
||||
"wanx2.1-t2i-turbo.description": "Vollständig aktualisierte Version mit schneller Generierung, starker Gesamtqualität und hohem Mehrwert. Entspricht Tongyi Wanxiang 2.1 Speed.",
|
||||
"wanx2.1-t2v-plus.description": "Wanxiang 2.1 Pro Edition liefert reichhaltigere visuelle Texturen und hochwertigere Bilder.",
|
||||
"wanx2.1-t2v-turbo.description": "Wanxiang 2.1 Speed Edition bietet hervorragende Kostenleistung.",
|
||||
"whisper-1.description": "Ein allgemeines Spracherkennungsmodell mit Unterstützung für mehrsprachige ASR, Sprachübersetzung und Spracherkennung.",
|
||||
"wizardlm2.description": "WizardLM 2 ist ein Sprachmodell von Microsoft AI, das bei komplexen Dialogen, mehrsprachigen Aufgaben, Reasoning und Assistenzanwendungen überzeugt.",
|
||||
"wizardlm2:8x22b.description": "WizardLM 2 ist ein Sprachmodell von Microsoft AI, das bei komplexen Dialogen, mehrsprachigen Aufgaben, Reasoning und Assistenzanwendungen überzeugt.",
|
||||
@@ -1399,6 +1305,7 @@
|
||||
"z-ai/glm4.7.description": "GLM-4.7 ist das neueste Flaggschiff-Modell von Zhipu, optimiert für Agentic-Coding-Szenarien mit verbesserten Codierungsfähigkeiten.",
|
||||
"z-ai/glm5.description": "GLM-5 ist das neue Flaggschiff-Grundlagenmodell von Zhipu AI für Agenten-Engineering, das Open-Source-SOTA-Leistung in Codierung und Agentenfähigkeiten erreicht. Es entspricht der Leistung von Claude Opus 4.5.",
|
||||
"z-image-turbo.description": "Z-Image ist ein leichtgewichtiges Text-zu-Bild-Generierungsmodell, das schnell Bilder erzeugen kann, sowohl chinesische als auch englische Textrendering unterstützt und sich flexibel an verschiedene Auflösungen und Seitenverhältnisse anpasst.",
|
||||
"zai-glm-4.7.description": "Dieses Modell liefert starke Programmierleistungen mit fortschrittlichen Argumentationsfähigkeiten, überlegener Werkzeugnutzung und verbesserter realer Leistung in agentenbasierten Programmieranwendungen.",
|
||||
"zai-org/GLM-4.5-Air.description": "GLM-4.5-Air ist ein Basismodell für Agentenanwendungen mit Mixture-of-Experts-Architektur. Es ist optimiert für Toolnutzung, Web-Browsing, Softwareentwicklung und Frontend-Codierung und integriert sich mit Code-Agenten wie Claude Code und Roo Code. Es nutzt hybrides Reasoning für komplexe und alltägliche Szenarien.",
|
||||
"zai-org/GLM-4.5V.description": "GLM-4.5V ist Zhipu AIs neuestes VLM, basierend auf dem GLM-4.5-Air-Textmodell (106B gesamt, 12B aktiv) mit MoE-Architektur für starke Leistung bei geringeren Kosten. Es folgt dem GLM-4.1V-Thinking-Ansatz und fügt 3D-RoPE zur Verbesserung des 3D-Räumlichkeitsdenkens hinzu. Optimiert durch Pretraining, SFT und RL, verarbeitet es Bilder, Videos und lange Dokumente und belegt Spitzenplätze unter offenen Modellen in 41 öffentlichen multimodalen Benchmarks. Ein Thinking-Modus-Schalter ermöglicht die Balance zwischen Geschwindigkeit und Tiefe.",
|
||||
"zai-org/GLM-4.6.description": "Im Vergleich zu GLM-4.5 erweitert GLM-4.6 den Kontext von 128K auf 200K für komplexere Agentenaufgaben. Es erzielt höhere Werte in Code-Benchmarks und zeigt stärkere reale Leistung in Apps wie Claude Code, Cline, Roo Code und Kilo Code – einschließlich besserer Frontend-Seitengenerierung. Reasoning wurde verbessert und Toolnutzung während des Denkens unterstützt, was die Gesamtleistung stärkt. Es integriert sich besser in Agentenframeworks, verbessert Tool-/Suchagenten und bietet einen menschenfreundlicheren Schreibstil und natürlichere Rollenspiele.",
|
||||
|
||||
@@ -64,7 +64,6 @@
|
||||
"builtins.lobe-cloud-sandbox.apiName.runCommand": "Befehl ausführen",
|
||||
"builtins.lobe-cloud-sandbox.apiName.searchLocalFiles": "Dateien suchen",
|
||||
"builtins.lobe-cloud-sandbox.apiName.writeLocalFile": "Datei schreiben",
|
||||
"builtins.lobe-cloud-sandbox.inspector.noResults": "Keine Ergebnisse",
|
||||
"builtins.lobe-cloud-sandbox.title": "Cloud-Sandbox",
|
||||
"builtins.lobe-group-agent-builder.apiName.batchCreateAgents": "Agenten stapelweise erstellen",
|
||||
"builtins.lobe-group-agent-builder.apiName.createAgent": "Agent erstellen",
|
||||
@@ -227,7 +226,6 @@
|
||||
"builtins.lobe-user-memory.apiName.addExperienceMemory": "Erfahrungsgedächtnis hinzufügen",
|
||||
"builtins.lobe-user-memory.apiName.addIdentityMemory": "Identitätsgedächtnis hinzufügen",
|
||||
"builtins.lobe-user-memory.apiName.addPreferenceMemory": "Präferenzgedächtnis hinzufügen",
|
||||
"builtins.lobe-user-memory.apiName.queryTaxonomyOptions": "Taxonomie abfragen",
|
||||
"builtins.lobe-user-memory.apiName.removeIdentityMemory": "Identitätsgedächtnis löschen",
|
||||
"builtins.lobe-user-memory.apiName.searchUserMemory": "Gedächtnis durchsuchen",
|
||||
"builtins.lobe-user-memory.apiName.updateIdentityMemory": "Identitätsgedächtnis aktualisieren",
|
||||
@@ -417,13 +415,9 @@
|
||||
"loading.plugin": "Skill wird ausgeführt…",
|
||||
"localSystem.workingDirectory.agentDescription": "Standard-Arbeitsverzeichnis für alle Unterhaltungen mit diesem Agenten",
|
||||
"localSystem.workingDirectory.agentLevel": "Agenten-Arbeitsverzeichnis",
|
||||
"localSystem.workingDirectory.chooseDifferentFolder": "Einen anderen Ordner auswählen",
|
||||
"localSystem.workingDirectory.current": "Aktuelles Arbeitsverzeichnis",
|
||||
"localSystem.workingDirectory.noRecent": "Keine letzten Verzeichnisse",
|
||||
"localSystem.workingDirectory.notSet": "Klicken, um Arbeitsverzeichnis festzulegen",
|
||||
"localSystem.workingDirectory.placeholder": "Verzeichnis-Pfad eingeben, z. B. /Users/name/projects",
|
||||
"localSystem.workingDirectory.recent": "Zuletzt verwendet",
|
||||
"localSystem.workingDirectory.removeRecent": "Aus den letzten entfernen",
|
||||
"localSystem.workingDirectory.selectFolder": "Ordner auswählen",
|
||||
"localSystem.workingDirectory.title": "Arbeitsverzeichnis",
|
||||
"localSystem.workingDirectory.topicDescription": "Standard des Agenten nur für diese Unterhaltung überschreiben",
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
"jina.description": "Jina AI wurde 2020 gegründet und ist ein führendes Unternehmen im Bereich Such-KI. Der Such-Stack umfasst Vektormodelle, Reranker und kleine Sprachmodelle für zuverlässige, hochwertige generative und multimodale Suchanwendungen.",
|
||||
"kimicodingplan.description": "Kimi Code von Moonshot AI bietet Zugriff auf Kimi-Modelle, darunter K2.5, für Coding-Aufgaben.",
|
||||
"lmstudio.description": "LM Studio ist eine Desktop-App zur Entwicklung und zum Experimentieren mit LLMs auf dem eigenen Computer.",
|
||||
"lobehub.description": "LobeHub Cloud verwendet offizielle APIs, um auf KI-Modelle zuzugreifen, und misst die Nutzung mit Credits, die an Modell-Token gebunden sind.",
|
||||
"longcat.description": "LongCat ist eine Reihe von generativen KI-Großmodellen, die unabhängig von Meituan entwickelt wurden. Sie sind darauf ausgelegt, die Produktivität innerhalb des Unternehmens zu steigern und innovative Anwendungen durch eine effiziente Rechenarchitektur und starke multimodale Fähigkeiten zu ermöglichen.",
|
||||
"minimax.description": "MiniMax wurde 2021 gegründet und entwickelt allgemeine KI mit multimodalen Foundation-Modellen, darunter Textmodelle mit Billionen Parametern, Sprach- und Bildmodelle sowie Apps wie Hailuo AI.",
|
||||
"minimaxcodingplan.description": "Der MiniMax Token Plan bietet Zugriff auf MiniMax-Modelle, darunter M2.7, für Coding-Aufgaben im Rahmen eines Festpreis-Abonnements.",
|
||||
|
||||
@@ -652,11 +652,6 @@
|
||||
"settingSystem.oauth.signout.confirm": "Abmeldung bestätigen?",
|
||||
"settingSystem.oauth.signout.success": "Erfolgreich abgemeldet",
|
||||
"settingSystem.title": "Systemeinstellungen",
|
||||
"settingSystemTools.appEnvironment.chromium.desc": "Chromium-Browser-Engine-Version",
|
||||
"settingSystemTools.appEnvironment.desc": "Integrierte Laufzeitversionen in der Desktop-App",
|
||||
"settingSystemTools.appEnvironment.electron.desc": "Electron-Framework-Version",
|
||||
"settingSystemTools.appEnvironment.node.desc": "Eingebettete Node.js-Version",
|
||||
"settingSystemTools.appEnvironment.title": "App-Umgebung",
|
||||
"settingSystemTools.autoSelectDesc": "Das beste verfügbare Tool wird automatisch ausgewählt",
|
||||
"settingSystemTools.category.browserAutomation": "Browser-Automatisierung",
|
||||
"settingSystemTools.category.browserAutomation.desc": "Werkzeuge für headless Browser-Automatisierung und Web-Interaktion",
|
||||
@@ -710,8 +705,6 @@
|
||||
"skillStore.tabs.community": "Community",
|
||||
"skillStore.tabs.custom": "Benutzerdefiniert",
|
||||
"skillStore.tabs.lobehub": "LobeHub",
|
||||
"skillStore.tabs.mcp": "MCP",
|
||||
"skillStore.tabs.skills": "Fähigkeiten",
|
||||
"skillStore.title": "Skill-Store",
|
||||
"skillStore.wantMore.action": "Anfrage senden →",
|
||||
"skillStore.wantMore.feedback.message": "## Skill-Name\n[Bitte ausfüllen]\n\n## Anwendungsfall\nWenn ich ___ bin, brauche ich ___\n\n## Erwartete Funktionen\n1.\n2.\n3.\n\n## Referenzbeispiele\n(Optional) Gibt es ähnliche Tools oder Funktionen als Referenz?\n\n---\n💡 Tipp: Je genauer Ihre Beschreibung, desto besser können wir Ihre Anforderungen erfüllen",
|
||||
@@ -775,9 +768,6 @@
|
||||
"systemAgent.historyCompress.label": "Modell",
|
||||
"systemAgent.historyCompress.modelDesc": "Modell zur Komprimierung des Gesprächsverlaufs",
|
||||
"systemAgent.historyCompress.title": "Agent zur Komprimierung des Gesprächsverlaufs",
|
||||
"systemAgent.inputCompletion.label": "Modell",
|
||||
"systemAgent.inputCompletion.modelDesc": "Modell, das für Eingabevorschläge zur automatischen Vervollständigung verwendet wird (wie GitHub Copilot-Geistertext)",
|
||||
"systemAgent.inputCompletion.title": "Agent für automatische Eingabevervollständigung",
|
||||
"systemAgent.queryRewrite.label": "Modell",
|
||||
"systemAgent.queryRewrite.modelDesc": "Modell zur Optimierung von Benutzeranfragen",
|
||||
"systemAgent.queryRewrite.title": "Agent zur Umschreibung von Bibliotheksanfragen",
|
||||
@@ -799,7 +789,7 @@
|
||||
"tab.advanced": "Erweitert",
|
||||
"tab.advanced.updateChannel.canary": "Canary",
|
||||
"tab.advanced.updateChannel.canaryDesc": "Ausgelöst bei jedem PR-Merge, mehrere Builds pro Tag. Am instabilsten.",
|
||||
"tab.advanced.updateChannel.desc": "Standardmäßig Benachrichtigungen für stabile Updates erhalten. Der Canary-Kanal erhält Vorabversionen, die möglicherweise nicht stabil für Produktionsarbeiten sind.",
|
||||
"tab.advanced.updateChannel.desc": "Standardmäßig Benachrichtigungen für stabile Updates erhalten. Nightly- und Canary-Kanäle erhalten Vorabversionen, die möglicherweise instabil für Produktionsarbeiten sind.",
|
||||
"tab.advanced.updateChannel.nightly": "Nightly",
|
||||
"tab.advanced.updateChannel.nightlyDesc": "Automatisierte tägliche Builds mit den neuesten Änderungen.",
|
||||
"tab.advanced.updateChannel.stable": "Stabil",
|
||||
|
||||
@@ -359,6 +359,7 @@
|
||||
"referral.table.columns.inviterRewardAmount": "Meine Belohnung",
|
||||
"referral.table.columns.rewardedAt": "Belohnungszeitpunkt",
|
||||
"referral.table.columns.status": "Status",
|
||||
"referral.table.columns.suspectedReason": "Grund für Anomalie",
|
||||
"referral.table.status.pending_reward": "Ausstehende Belohnung",
|
||||
"referral.table.status.registered": "Registriert",
|
||||
"referral.table.status.revoked": "Widerrufen",
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
"config.resolution.label": "Auflösung",
|
||||
"config.seed.label": "Seed",
|
||||
"config.seed.random": "Zufällig",
|
||||
"config.size.label": "Größe",
|
||||
"generation.actions.copyError": "Fehlermeldung kopieren",
|
||||
"generation.actions.errorCopied": "Fehlermeldung in die Zwischenablage kopiert",
|
||||
"generation.actions.errorCopyFailed": "Fehlermeldung konnte nicht kopiert werden",
|
||||
|
||||
@@ -38,8 +38,6 @@
|
||||
"channel.devWebhookProxyUrlHint": "Optional. HTTPS tunnel URL for forwarding webhook requests to local dev server.",
|
||||
"channel.disabled": "Disabled",
|
||||
"channel.discord.description": "Connect this assistant to Discord server for channel chat and direct messages.",
|
||||
"channel.displayToolCalls": "Display Tool Calls",
|
||||
"channel.displayToolCallsHint": "Show tool call details during AI responses. When disabled, only the final response is displayed for a cleaner experience.",
|
||||
"channel.dm": "Direct Messages",
|
||||
"channel.dmEnabled": "Enable DMs",
|
||||
"channel.dmEnabledHint": "Allow the bot to receive and respond to direct messages",
|
||||
|
||||
@@ -547,6 +547,14 @@
|
||||
"skills.categories.transportation.name": "Transportation",
|
||||
"skills.categories.web-frontend-development.description": "Web development, frontend frameworks, and UI tooling skills",
|
||||
"skills.categories.web-frontend-development.name": "Web & Frontend Development",
|
||||
"skills.collection.editorCollection": "EDITOR'S COLLECTION",
|
||||
"skills.collection.get": "Get",
|
||||
"skills.collection.installAll": "Install all skills",
|
||||
"skills.collection.installDesc": "Get all {{count}} skills installed at once. Your agent will walk you through each one.",
|
||||
"skills.collection.installTitle": "Install the full collection",
|
||||
"skills.collection.moreCollections": "More collections",
|
||||
"skills.collection.skillCount": "{{count}} skills",
|
||||
"skills.collection.skillsInCollection": "Skills in this collection",
|
||||
"skills.details.nav.needHelp": "Need Help?",
|
||||
"skills.details.nav.reportIssue": "Report Issue",
|
||||
"skills.details.nav.viewSourceCode": "View Source Code",
|
||||
@@ -590,11 +598,28 @@
|
||||
"skills.details.versions.title": "Version History",
|
||||
"skills.hero.guide.agent": "I am Agent",
|
||||
"skills.hero.guide.human": "I am Human",
|
||||
"skills.sections.collection": "Collection",
|
||||
"skills.sections.collection1Desc": "A curated starter pack for developers building their first end-to-end coding agent workflow.",
|
||||
"skills.sections.collection1Title": "Get started: your first autonomous coding agent",
|
||||
"skills.sections.collection2Desc": "5 must-have skills to guard your agents against injection, leakage, and runaway permissions.",
|
||||
"skills.sections.collection2Title": "Essential security skills for production agents",
|
||||
"skills.sections.collections": "Editor's collections",
|
||||
"skills.sections.editorsPick": "EDITOR'S PICK",
|
||||
"skills.sections.editorsPickDesc": "Security-first vetting for every skill before it touches your agent. Checks permission scope, red flags, and injection risks automatically.",
|
||||
"skills.sections.editorsPickTitle": "Build safer agents with skill-vetter",
|
||||
"skills.sections.featured": "Featured",
|
||||
"skills.sections.getSkill": "Get skill",
|
||||
"skills.sections.learnMore": "Learn more",
|
||||
"skills.sections.seeAll": "See all →",
|
||||
"skills.sections.trending": "Trending this week",
|
||||
"skills.sorts.createdAt": "Recently Published",
|
||||
"skills.sorts.installCount": "Downloads",
|
||||
"skills.sorts.name": "Name",
|
||||
"skills.sorts.stars": "GitHub Stars",
|
||||
"skills.sorts.updatedAt": "Recently Updated",
|
||||
"skills.tabs.discover": "Discover",
|
||||
"skills.tabs.new": "New",
|
||||
"skills.tabs.trending": "Trending",
|
||||
"tab.assistant": "Agent",
|
||||
"tab.home": "Home",
|
||||
"tab.model": "Model",
|
||||
|
||||
@@ -179,16 +179,10 @@
|
||||
"overview.title": "Evaluation Lab",
|
||||
"run.actions.abort": "Abort",
|
||||
"run.actions.abort.confirm": "Are you sure you want to abort this evaluation?",
|
||||
"run.actions.batchResume": "Batch Resume",
|
||||
"run.actions.batchResume.modal.confirm": "Resume Selected",
|
||||
"run.actions.batchResume.modal.selectAll": "Select All",
|
||||
"run.actions.batchResume.modal.selected": "{{count}} selected",
|
||||
"run.actions.batchResume.modal.title": "Batch Resume Cases",
|
||||
"run.actions.create": "New Evaluation",
|
||||
"run.actions.delete": "Delete",
|
||||
"run.actions.delete.confirm": "Are you sure you want to delete this evaluation?",
|
||||
"run.actions.edit": "Edit",
|
||||
"run.actions.resumeCase": "Resume",
|
||||
"run.actions.retryCase": "Retry",
|
||||
"run.actions.retryErrors": "Retry Errors",
|
||||
"run.actions.retryErrors.confirm": "This will re-run all error and timeout cases. Passed and failed cases will not be affected.",
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
"starter.developing": "Coming soon",
|
||||
"starter.image": "Image",
|
||||
"starter.imageGeneration": "Image Generation",
|
||||
"starter.videoGeneration": "Seedance 2.0",
|
||||
"starter.videoGeneration": "Video Generation",
|
||||
"starter.write": "Write"
|
||||
}
|
||||
|
||||
+22
-115
@@ -66,9 +66,6 @@
|
||||
"HiDream-E1-Full.description": "HiDream-E1-Full is an open-source multimodal image editing model from HiDream.ai, based on an advanced Diffusion Transformer architecture and strong language understanding (built-in LLaMA 3.1-8B-Instruct). It supports natural-language-driven image generation, style transfer, local edits, and repainting, with excellent image-text understanding and execution.",
|
||||
"HiDream-I1-Full.description": "HiDream-I1 is a new open-source base image generation model released by HiDream. With 17B parameters (Flux has 12B), it can deliver industry-leading image quality in seconds.",
|
||||
"HunyuanDiT-v1.2-Diffusers-Distilled.description": "hunyuandit-v1.2-distilled is a lightweight text-to-image model optimized via distillation to generate high-quality images quickly, especially suited for low-resource environments and real-time generation.",
|
||||
"I2V-01-Director.description": "A director-level video generation model has been officially released, offering improved adherence to camera movement instructions and cinematic shot storytelling language.",
|
||||
"I2V-01-live.description": "Enhanced character performance: more stable, smoother, and more vivid.",
|
||||
"I2V-01.description": "The foundational image-to-video model of the 01 series.",
|
||||
"InstantCharacter.description": "InstantCharacter is a tuning-free personalized character generation model released by Tencent AI in 2025, aiming for high-fidelity, cross-scenario consistent character generation. It can model a character from a single reference image and flexibly transfer it across styles, actions, and backgrounds.",
|
||||
"InternVL2-8B.description": "InternVL2-8B is a powerful vision-language model supporting multimodal image-text processing, accurately recognizing image content and generating relevant descriptions or answers.",
|
||||
"InternVL2.5-26B.description": "InternVL2.5-26B is a powerful vision-language model supporting multimodal image-text processing, accurately recognizing image content and generating relevant descriptions or answers.",
|
||||
@@ -90,12 +87,8 @@
|
||||
"Meta-Llama-3.2-3B-Instruct.description": "Cutting-edge small language model with strong language understanding, excellent reasoning, and text generation.",
|
||||
"Meta-Llama-3.3-70B-Instruct.description": "Llama 3.3 is the most advanced multilingual open-source Llama model, delivering near-405B performance at very low cost. It is Transformer-based and improved with SFT and RLHF for usefulness and safety. The instruction-tuned version is optimized for multilingual chat and beats many open and closed chat models on industry benchmarks. Knowledge cutoff: Dec 2023.",
|
||||
"Meta-Llama-4-Maverick-17B-128E-Instruct-FP8.description": "Llama 4 Maverick is a large MoE model with efficient expert activation for strong reasoning performance.",
|
||||
"MiniMax-Hailuo-02.description": "The next-generation video generation model, MiniMax Hailuo 02, has been officially released, supporting 1080P resolution and 10-second video generation.",
|
||||
"MiniMax-Hailuo-2.3-Fast.description": "Brand-new video generation model with comprehensive upgrades in body motion, physical realism, and instruction following.",
|
||||
"MiniMax-Hailuo-2.3.description": "Brand-new video generation model with comprehensive upgrades in body motion, physical realism, and instruction following.",
|
||||
"MiniMax-M1.description": "A new in-house reasoning model with 80K chain-of-thought and 1M input, delivering performance comparable to top global models.",
|
||||
"MiniMax-M2-Stable.description": "Built for efficient coding and agent workflows, with higher concurrency for commercial use.",
|
||||
"MiniMax-M2.1-Lightning.description": "Powerful multilingual programming capabilities with faster and more efficient inference.",
|
||||
"MiniMax-M2.1-highspeed.description": "Powerful multilingual programming capabilities, comprehensively upgraded programming experience. Faster and more efficient.",
|
||||
"MiniMax-M2.1.description": "MiniMax-M2.1 is a flagship open-source large model from MiniMax, focusing on solving complex real-world tasks. Its core strengths are multi-language programming capabilities and the ability to solve complex tasks as an Agent.",
|
||||
"MiniMax-M2.5-highspeed.description": "MiniMax M2.5 Highspeed: Same performance as M2.5 with faster inference.",
|
||||
@@ -189,7 +182,6 @@
|
||||
"Qwen3-235B-A22B-Instruct-2507-FP8.description": "Qwen3 235B A22B Instruct 2507 is optimized for advanced reasoning and instruction-following, using MoE to keep reasoning efficient at scale.",
|
||||
"Qwen3-235B.description": "Qwen3-235B-A22B is a MoE model that introduces a hybrid reasoning mode, letting users switch seamlessly between thinking and non-thinking. It supports understanding and reasoning across 119 languages and dialects and has strong tool-calling capabilities, competing with mainstream models like DeepSeek R1, OpenAI o1, o3-mini, Grok 3, and Google Gemini 2.5 Pro across benchmarks in general ability, code and math, multilingual capability, and knowledge reasoning.",
|
||||
"Qwen3-32B.description": "Qwen3-32B is a dense model that introduces a hybrid reasoning mode, letting users switch between thinking and non-thinking. With architecture improvements, more data, and better training, it performs on par with Qwen2.5-72B.",
|
||||
"S2V-01.description": "The foundational reference-to-video model of the 01 series.",
|
||||
"SenseChat-128K.description": "Base V4 with 128K context, strong in long-text understanding and generation.",
|
||||
"SenseChat-32K.description": "Base V4 with 32K context, flexible for many scenarios.",
|
||||
"SenseChat-5-1202.description": "Latest version based on V5.5, with significant gains in Chinese/English fundamentals, chat, STEM knowledge, humanities knowledge, writing, math/logic, and length control.",
|
||||
@@ -212,16 +204,12 @@
|
||||
"Skylark2-pro-4k.description": "Skylark 2nd-gen model. Skylark2-pro offers higher accuracy for complex text generation such as professional copywriting, novel writing, and high-quality translation, with a 4K context window.",
|
||||
"Skylark2-pro-character-4k.description": "Skylark 2nd-gen model. Skylark2-pro-character excels at roleplay and chat, matching prompts with distinct persona styles and natural dialogue for chatbots, virtual assistants, and customer service, with fast responses.",
|
||||
"Skylark2-pro-turbo-8k.description": "Skylark 2nd-gen model. Skylark2-pro-turbo-8k offers faster inference at lower cost with an 8K context window.",
|
||||
"T2V-01-Director.description": "A director-level video generation model has been officially released, offering improved adherence to camera movement instructions and cinematic shot storytelling language.",
|
||||
"T2V-01.description": "The foundational text-to-video model of the 01 series.",
|
||||
"THUDM/GLM-4-32B-0414.description": "GLM-4-32B-0414 is a next-gen open GLM model with 32B parameters, comparable to OpenAI GPT and DeepSeek V3/R1 series in performance.",
|
||||
"THUDM/GLM-4-9B-0414.description": "GLM-4-9B-0414 is a 9B GLM model that inherits GLM-4-32B techniques while offering a lighter deployment. It performs well in code generation, web design, SVG generation, and search-based writing.",
|
||||
"THUDM/GLM-4.1V-9B-Thinking.description": "GLM-4.1V-9B-Thinking is an open-source VLM from Zhipu AI and Tsinghua KEG Lab, designed for complex multimodal cognition. Built on GLM-4-9B-0414, it adds chain-of-thought reasoning and RL to significantly improve cross-modal reasoning and stability.",
|
||||
"THUDM/GLM-Z1-32B-0414.description": "GLM-Z1-32B-0414 is a deep-thinking reasoning model built from GLM-4-32B-0414 with cold-start data and expanded RL, further trained on math, code, and logic. It significantly improves math ability and complex task solving over the base model.",
|
||||
"THUDM/GLM-Z1-9B-0414.description": "GLM-Z1-9B-0414 is a small 9B-parameter GLM model that retains open-source strengths while delivering impressive capability. It performs strongly on math reasoning and general tasks, leading its size class among open models.",
|
||||
"Tongyi-Zhiwen/QwenLong-L1-32B.description": "QwenLong-L1-32B is the first long-context reasoning model (LRM) trained with RL, optimized for long-text reasoning. Its progressive context expansion RL enables stable transfer from short to long context. It surpasses OpenAI-o3-mini and Qwen3-235B-A22B on seven long-context document QA benchmarks, rivaling Claude-3.7-Sonnet-Thinking. It is especially strong at math, logic, and multi-hop reasoning.",
|
||||
"Wan-AI/Wan2.2-I2V-A14B.description": "Wan2.2-I2V-A14B is one of the first open-source image-to-video (I2V) generation models released by Wan-AI, an AI initiative under Alibaba, to adopt a Mixture of Experts (MoE) architecture. The model focuses on generating smooth and natural dynamic video sequences by combining static images with text prompts. Its core innovation lies in the MoE architecture: a high-noise expert is responsible for handling the coarse structure in the early stages of video generation, while a low-noise expert refines fine-grained details in the later stages. This design improves overall model performance without increasing inference cost. Compared to previous versions, Wan2.2 is trained on a significantly larger dataset, leading to notable improvements in understanding complex motion, aesthetic styles, and semantic content. It produces more stable videos and reduces unrealistic camera movements.",
|
||||
"Wan-AI/Wan2.2-T2V-A14B.description": "Wan2.2-T2V-A14B is the first open-source video generation model released by Alibaba to adopt a Mixture of Experts (MoE) architecture. The model is designed for text-to-video (T2V) generation tasks and is capable of producing videos up to 5 seconds in length at resolutions of 480P or 720P. By introducing the MoE architecture, the model significantly increases its overall capacity while keeping inference costs nearly unchanged. It includes a high-noise expert that handles the global structure in the early stages of generation, and a low-noise expert that refines fine details in the later stages of the video. In addition, Wan2.2 incorporates carefully curated aesthetic data, with detailed annotations across dimensions such as lighting, composition, and color. This enables more precise and controllable generation of cinematic-quality visuals. Compared to previous versions, the model is trained on a larger dataset, resulting in significantly improved generalization in motion, semantics, and aesthetics, and better handling of complex dynamic effects.",
|
||||
"Yi-34B-Chat.description": "Yi-1.5-34B retains the series’ strong general language abilities while using incremental training on 500B high-quality tokens to significantly improve math logic and coding.",
|
||||
"abab5.5-chat.description": "Built for productivity scenarios with complex task handling and efficient text generation for professional use.",
|
||||
"abab5.5s-chat.description": "Designed for Chinese persona chat, delivering high-quality Chinese dialogue for various applications.",
|
||||
@@ -310,20 +298,20 @@
|
||||
"claude-3-haiku-20240307.description": "Claude 3 Haiku is Anthropic’s fastest and most compact model, designed for near-instant responses with fast, accurate performance.",
|
||||
"claude-3-opus-20240229.description": "Claude 3 Opus is Anthropic’s most powerful model for highly complex tasks, excelling in performance, intelligence, fluency, and comprehension.",
|
||||
"claude-3-sonnet-20240229.description": "Claude 3 Sonnet balances intelligence and speed for enterprise workloads, delivering high utility at lower cost and reliable large-scale deployment.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 is Anthropic's fastest and most intelligent Haiku model, with lightning speed and extended thinking.",
|
||||
"claude-haiku-4-5-20251001.description": "Claude Haiku 4.5 is Anthropic’s fastest and smartest Haiku model, with lightning speed and extended reasoning.",
|
||||
"claude-haiku-4.5.description": "Claude Haiku 4.5 is Anthropic’s fastest and smartest Haiku model, with lightning speed and extended reasoning.",
|
||||
"claude-opus-4-1-20250805-thinking.description": "Claude Opus 4.1 Thinking is an advanced variant that can reveal its reasoning process.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 is Anthropic's latest and most capable model for highly complex tasks, excelling in performance, intelligence, fluency, and understanding.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 is Anthropic's most powerful model for highly complex tasks, excelling in performance, intelligence, fluency, and understanding.",
|
||||
"claude-opus-4-1-20250805.description": "Claude Opus 4.1 is Anthropic’s latest and most capable model for highly complex tasks, excelling in performance, intelligence, fluency, and understanding.",
|
||||
"claude-opus-4-20250514.description": "Claude Opus 4 is Anthropic’s most powerful model for highly complex tasks, excelling in performance, intelligence, fluency, and comprehension.",
|
||||
"claude-opus-4-5-20251101.description": "Claude Opus 4.5 is Anthropic’s flagship model, combining outstanding intelligence with scalable performance, ideal for complex tasks requiring the highest-quality responses and reasoning.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 is Anthropic's most intelligent model for building agents and coding.",
|
||||
"claude-opus-4-6.description": "Claude Opus 4.6 is Anthropic’s most intelligent model for building agents and coding.",
|
||||
"claude-opus-4.5.description": "Claude Opus 4.5 is Anthropic’s flagship model, combining top-tier intelligence with scalable performance for complex, high-quality reasoning tasks.",
|
||||
"claude-opus-4.6-fast.description": "Claude Opus 4.6 is Anthropic’s most intelligent model for building agents and coding.",
|
||||
"claude-opus-4.6.description": "Claude Opus 4.6 is Anthropic’s most intelligent model for building agents and coding.",
|
||||
"claude-sonnet-4-20250514-thinking.description": "Claude Sonnet 4 Thinking can produce near-instant responses or extended step-by-step thinking with visible process.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 is Anthropic's most intelligent model to date, offering near-instant responses or extended step-by-step thinking with fine-grained control for API users.",
|
||||
"claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 is Anthropic's most intelligent model to date.",
|
||||
"claude-sonnet-4-6.description": "Claude Sonnet 4.6 is Anthropic's best combination of speed and intelligence.",
|
||||
"claude-sonnet-4-20250514.description": "Claude Sonnet 4 can produce near-instant responses or extended step-by-step thinking with visible process.",
|
||||
"claude-sonnet-4-5-20250929.description": "Claude Sonnet 4.5 is Anthropic’s most intelligent model to date.",
|
||||
"claude-sonnet-4-6.description": "Claude Sonnet 4.6 is Anthropic’s best combination of speed and intelligence.",
|
||||
"claude-sonnet-4.5.description": "Claude Sonnet 4.5 is Anthropic’s most intelligent model to date.",
|
||||
"claude-sonnet-4.6.description": "Claude Sonnet 4.6 is Anthropic’s best combination of speed and intelligence.",
|
||||
"claude-sonnet-4.description": "Claude Sonnet 4 can produce near-instant responses or extended step-by-step reasoning that users can see. API users can finely control how long the model thinks.",
|
||||
@@ -340,9 +328,6 @@
|
||||
"codestral-latest.description": "Codestral is our most advanced coding model; v2 (Jan 2025) targets low-latency, high-frequency tasks like FIM, code correction, and test generation.",
|
||||
"codestral.description": "Codestral is Mistral AI’s first code model, delivering strong code generation support.",
|
||||
"cogito-2.1:671b.description": "Cogito v2.1 671B is a US open-source LLM free for commercial use, with performance rivaling top models, higher token reasoning efficiency, a 128k long context, and strong overall capability.",
|
||||
"cogvideox-2.description": "CogVideoX-2 is Zhipu’s new-generation video generation foundation model, with image-to-video capabilities improved by 38%. It delivers significant enhancements in large-scale motion handling, visual stability, instruction adherence, artistic style, and overall visual aesthetics.",
|
||||
"cogvideox-3.description": "CogVideoX-3 adds a start-and-end frame generation feature, significantly improving visual stability and clarity. It enables smooth and natural large-scale subject motion, offers better instruction adherence and more realistic physical simulation, and further enhances performance in high-definition realistic and 3D-style scenes.",
|
||||
"cogvideox-flash.description": "CogVideoX-Flash is a free video generation model released by Zhipu, capable of generating videos that follow user instructions while achieving higher aesthetic quality scores.",
|
||||
"cogview-3-flash.description": "CogView-3-Flash is a free image generation model launched by Zhipu. It generates images that align with user instructions while achieving higher aesthetic quality scores. CogView-3-Flash is primarily used in fields such as artistic creation, design reference, game development, and virtual reality, helping users rapidly convert text descriptions into images.",
|
||||
"cogview-4.description": "CogView-4 is Zhipu’s first open-source text-to-image model that can generate Chinese characters. It improves semantic understanding, image quality, and Chinese/English text rendering, supports arbitrary-length bilingual prompts, and can generate images at any resolution within specified ranges.",
|
||||
"cohere-command-r-plus.description": "Command R+ is an advanced RAG-optimized model built for enterprise workloads.",
|
||||
@@ -397,7 +382,7 @@
|
||||
"deepseek-ai/deepseek-v3.1-terminus.description": "DeepSeek V3.1 is a next-gen reasoning model with stronger complex reasoning and chain-of-thought for deep analysis tasks.",
|
||||
"deepseek-ai/deepseek-v3.1.description": "DeepSeek V3.1 is a next-gen reasoning model with stronger complex reasoning and chain-of-thought for deep analysis tasks.",
|
||||
"deepseek-ai/deepseek-v3.2.description": "DeepSeek V3.2 is a next-gen reasoning model with stronger complex reasoning and chain-of-thought capabilities.",
|
||||
"deepseek-chat.description": "DeepSeek V3.2 balances reasoning and output length for daily QA and agent tasks. Public benchmarks reach GPT-5 levels, and it is the first to integrate thinking into tool use, leading open-source agent evaluations.",
|
||||
"deepseek-chat.description": "A new open-source model combining general and code abilities. It preserves the chat model’s general dialogue and the coder model’s strong coding, with better preference alignment. DeepSeek-V2.5 also improves writing and instruction following.",
|
||||
"deepseek-coder-33B-instruct.description": "DeepSeek Coder 33B is a code language model trained on 2T tokens (87% code, 13% Chinese/English text). It introduces a 16K context window and fill-in-the-middle tasks, providing project-level code completion and snippet infilling.",
|
||||
"deepseek-coder-v2.description": "DeepSeek Coder V2 is an open-source MoE code model that performs strongly on coding tasks, comparable to GPT-4 Turbo.",
|
||||
"deepseek-coder-v2:236b.description": "DeepSeek Coder V2 is an open-source MoE code model that performs strongly on coding tasks, comparable to GPT-4 Turbo.",
|
||||
@@ -420,7 +405,7 @@
|
||||
"deepseek-r1-fast-online.description": "DeepSeek R1 fast full version with real-time web search, combining 671B-scale capability and faster response.",
|
||||
"deepseek-r1-online.description": "DeepSeek R1 full version with 671B parameters and real-time web search, offering stronger understanding and generation.",
|
||||
"deepseek-r1.description": "DeepSeek-R1 uses cold-start data before RL and performs comparably to OpenAI-o1 on math, coding, and reasoning.",
|
||||
"deepseek-reasoner.description": "DeepSeek V3.2 Thinking is a deep reasoning model that generates chain-of-thought before outputs for higher accuracy, with top competition results and reasoning comparable to Gemini-3.0-Pro.",
|
||||
"deepseek-reasoner.description": "DeepSeek V3.2 thinking mode outputs a chain-of-thought before the final answer to improve accuracy.",
|
||||
"deepseek-v2.description": "DeepSeek V2 is an efficient MoE model for cost-effective processing.",
|
||||
"deepseek-v2:236b.description": "DeepSeek V2 236B is DeepSeek’s code-focused model with strong code generation.",
|
||||
"deepseek-v3-0324.description": "DeepSeek-V3-0324 is a 671B-parameter MoE model with standout strengths in programming and technical capability, context understanding, and long-text handling.",
|
||||
@@ -431,7 +416,6 @@
|
||||
"deepseek-v3.2-exp.description": "deepseek-v3.2-exp introduces sparse attention to improve training and inference efficiency on long text, at a lower price than deepseek-v3.1.",
|
||||
"deepseek-v3.2-speciale.description": "On highly complex tasks, the Speciale model significantly outperforms the standard version, but it consumes considerably more tokens and incurs higher costs. Currently, DeepSeek-V3.2-Speciale is intended for research use only, does not support tool calls, and has not been specifically optimized for everyday conversation or writing tasks.",
|
||||
"deepseek-v3.2-think.description": "DeepSeek V3.2 Think is a full deep-thinking model with stronger long-chain reasoning.",
|
||||
"deepseek-v3.2-thinking.description": "DeepSeek-V3.2 Thinking is the thinking mode variant of DeepSeek-V3.2, focused on reasoning tasks.",
|
||||
"deepseek-v3.2.description": "DeepSeek-V3.2 is DeepSeek's latest coding model with strong reasoning capabilities.",
|
||||
"deepseek-v3.description": "DeepSeek-V3 is a powerful MoE model with 671B total parameters and 37B active per token.",
|
||||
"deepseek-vl2-small.description": "DeepSeek VL2 Small is a lightweight multimodal version for resource-constrained and high-concurrency use.",
|
||||
@@ -487,8 +471,6 @@
|
||||
"doubao-seedance-1-0-pro-250528.description": "Seedance 1.0 Pro is a video generation foundation model that supports multi-shot storytelling. It delivers strong performance across multiple dimensions. The model achieves breakthroughs in semantic understanding and instruction following, enabling it to generate 1080P high-definition videos with smooth motion, rich details, diverse styles, and cinematic-level visual aesthetics.",
|
||||
"doubao-seedance-1-0-pro-fast-251015.description": "Seedance 1.0 Pro Fast is a comprehensive model designed to minimize cost while maximizing performance, achieving an excellent balance between video generation quality, speed, and price. It inherits the core strengths of Seedance 1.0 Pro, while offering faster generation speeds and more competitive pricing, delivering creators a dual optimization of efficiency and cost.",
|
||||
"doubao-seedance-1-5-pro-251215.description": "Seedance 1.5 Pro by ByteDance supports text-to-video, image-to-video (first frame, first+last frame), and audio generation synchronized with visuals.",
|
||||
"doubao-seedance-2-0-260128.description": "Seedance 2.0 by ByteDance is the most powerful video generation model, supporting multimodal reference video generation, video editing, video extension, text-to-video, and image-to-video with synchronized audio.",
|
||||
"doubao-seedance-2-0-fast-260128.description": "Seedance 2.0 Fast by ByteDance offers the same capabilities as Seedance 2.0 with faster generation speeds at a more competitive price.",
|
||||
"doubao-seededit-3-0-i2i-250628.description": "The Doubao image model from ByteDance Seed supports text and image inputs with highly controllable, high-quality image generation. It supports text-guided image editing, with output sizes between 512 and 1536 on the long side.",
|
||||
"doubao-seedream-3-0-t2i-250415.description": "Seedream 3.0 is an image generation model from ByteDance Seed, supporting text and image inputs with highly controllable, high-quality image generation. It generates images from text prompts.",
|
||||
"doubao-seedream-4-0-250828.description": "Seedream 4.0 is an image generation model from ByteDance Seed, supporting text and image inputs with highly controllable, high-quality image generation. It generates images from text prompts.",
|
||||
@@ -523,8 +505,7 @@
|
||||
"ernie-x1-turbo-32k.description": "ERNIE X1 Turbo 32K is a fast thinking model with 32K context for complex reasoning and multi-turn chat.",
|
||||
"ernie-x1.1-preview.description": "ERNIE X1.1 Preview is a thinking-model preview for evaluation and testing.",
|
||||
"ernie-x1.1.description": "ERNIE X1.1 is a thinking-model preview for evaluation and testing.",
|
||||
"fal-ai/bytedance/seedream/v4.5.description": "Seedream 4.5, built by ByteDance Seed team, supports multi-image editing and composition. Features enhanced subject consistency, precise instruction following, spatial logic understanding, aesthetic expression, poster layout and logo design with high-precision text-image rendering.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0, built by ByteDance Seed, supports text and image inputs for highly controllable, high-quality image generation from prompts.",
|
||||
"fal-ai/bytedance/seedream/v4.description": "Seedream 4.0 is an image generation model from ByteDance Seed, supporting text and image inputs with highly controllable, high-quality image generation. It generates images from text prompts.",
|
||||
"fal-ai/flux-kontext/dev.description": "FLUX.1 model focused on image editing, supporting text and image inputs.",
|
||||
"fal-ai/flux-pro/kontext.description": "FLUX.1 Kontext [pro] accepts text and reference images as input, enabling targeted local edits and complex global scene transformations.",
|
||||
"fal-ai/flux/krea.description": "Flux Krea [dev] is an image generation model with an aesthetic bias toward more realistic, natural images.",
|
||||
@@ -532,8 +513,8 @@
|
||||
"fal-ai/hunyuan-image/v3.description": "A powerful native multimodal image generation model.",
|
||||
"fal-ai/imagen4/preview.description": "High-quality image generation model from Google.",
|
||||
"fal-ai/nano-banana.description": "Nano Banana is Google’s newest, fastest, and most efficient native multimodal model, enabling image generation and editing through conversation.",
|
||||
"fal-ai/qwen-image-edit.description": "A professional image editing model from the Qwen team, supporting semantic and appearance edits, precise Chinese/English text editing, style transfer, rotation, and more.",
|
||||
"fal-ai/qwen-image.description": "A powerful image generation model from the Qwen team with strong Chinese text rendering and diverse visual styles.",
|
||||
"fal-ai/qwen-image-edit.description": "A professional image editing model from the Qwen team that supports semantic and appearance edits, precisely edits Chinese and English text, and enables high-quality edits such as style transfer and object rotation.",
|
||||
"fal-ai/qwen-image.description": "A powerful image generation model from the Qwen team with impressive Chinese text rendering and diverse visual styles.",
|
||||
"flux-1-schnell.description": "A 12B-parameter text-to-image model from Black Forest Labs using latent adversarial diffusion distillation to generate high-quality images in 1-4 steps. It rivals closed alternatives and is released under Apache-2.0 for personal, research, and commercial use.",
|
||||
"flux-dev.description": "FLUX.1 [dev] is an open-weights distilled model for non-commercial use. It keeps near-pro image quality and instruction following while running more efficiently, using resources better than same-size standard models.",
|
||||
"flux-kontext-max.description": "State-of-the-art contextual image generation and editing, combining text and images for precise, coherent results.",
|
||||
@@ -560,6 +541,7 @@
|
||||
"gemini-1.5-pro-exp-0827.description": "Gemini 1.5 Pro 0827 applies latest optimizations for more efficient multimodal processing.",
|
||||
"gemini-1.5-pro-latest.description": "Gemini 1.5 Pro supports up to 2 million tokens, an ideal mid-sized multimodal model for complex tasks.",
|
||||
"gemini-2.0-flash-001.description": "Gemini 2.0 Flash delivers next-gen features including exceptional speed, native tool use, multimodal generation, and a 1M-token context window.",
|
||||
"gemini-2.0-flash-exp-image-generation.description": "Gemini 2.0 Flash experimental model with image generation support.",
|
||||
"gemini-2.0-flash-lite-001.description": "A Gemini 2.0 Flash variant optimized for cost efficiency and low latency.",
|
||||
"gemini-2.0-flash-lite.description": "A Gemini 2.0 Flash variant optimized for cost efficiency and low latency.",
|
||||
"gemini-2.0-flash.description": "Gemini 2.0 Flash delivers next-gen features including exceptional speed, native tool use, multimodal generation, and a 1M-token context window.",
|
||||
@@ -572,13 +554,14 @@
|
||||
"gemini-2.5-flash.description": "Gemini 2.5 Flash is Google’s best-value model with full capabilities.",
|
||||
"gemini-2.5-pro-preview-03-25.description": "Gemini 2.5 Pro Preview is Google’s most advanced reasoning model, able to reason over code, math, and STEM problems and analyze large datasets, codebases, and documents with long context.",
|
||||
"gemini-2.5-pro-preview-05-06.description": "Gemini 2.5 Pro Preview is Google’s most advanced reasoning model, able to reason over code, math, and STEM problems and analyze large datasets, codebases, and documents with long context.",
|
||||
"gemini-2.5-pro-preview-06-05.description": "Gemini 2.5 Pro Preview is Google’s most advanced reasoning model, able to reason over code, math, and STEM problems and analyze large datasets, codebases, and documents with long context.",
|
||||
"gemini-2.5-pro.description": "Gemini 2.5 Pro is Google’s most advanced reasoning model, able to reason over code, math, and STEM problems and analyze large datasets, codebases, and documents with long context.",
|
||||
"gemini-3-flash-preview.description": "Gemini 3 Flash is the smartest model built for speed, combining cutting-edge intelligence with excellent search grounding.",
|
||||
"gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) is Google's image generation model that also supports multimodal dialogue.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) is Google's image generation model and also supports multimodal chat.",
|
||||
"gemini-3-pro-image-preview:image.description": "Gemini 3 Pro Image (Nano Banana Pro) is Google’s image generation model and also supports multimodal chat.",
|
||||
"gemini-3-pro-preview.description": "Gemini 3 Pro is Google’s most powerful agent and vibe-coding model, delivering richer visuals and deeper interaction on top of state-of-the-art reasoning.",
|
||||
"gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image (Nano Banana 2) is Google's fastest native image generation model with thinking support, conversational image generation and editing.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) delivers Pro-level image quality at Flash speed with multimodal chat support.",
|
||||
"gemini-3.1-flash-image-preview:image.description": "Gemini 3.1 Flash Image (Nano Banana 2) is Google's fastest native image generation model with thinking support, conversational image generation and editing.",
|
||||
"gemini-3.1-flash-lite-preview.description": "Gemini 3.1 Flash-Lite Preview is Google's most cost-efficient multimodal model, optimized for high-volume agentic tasks, translation, and data processing.",
|
||||
"gemini-3.1-pro-preview.description": "Gemini 3.1 Pro Preview improves on Gemini 3 Pro with enhanced reasoning capabilities and adds medium thinking level support.",
|
||||
"gemini-flash-latest.description": "Latest release of Gemini Flash",
|
||||
@@ -622,9 +605,7 @@
|
||||
"glm-4v-plus-0111.description": "GLM-4V-Plus understands video and multiple images, suitable for multimodal tasks.",
|
||||
"glm-4v-plus.description": "GLM-4V-Plus understands video and multiple images, suitable for multimodal tasks.",
|
||||
"glm-4v.description": "GLM-4V provides strong image understanding and reasoning across visual tasks.",
|
||||
"glm-5-turbo.description": "GLM-5-Turbo is a foundation model deeply optimized for agentic scenarios. It has been specifically optimized for core requirements of agent tasks from the training phase, enhancing key capabilities such as tool invocation, command following, and long-chain execution. It is ideal for building high-performance agent assistants.",
|
||||
"glm-5.description": "GLM-5 is Zhipu’s next-generation flagship foundation model, purpose-built for Agentic Engineering. It delivers reliable productivity in complex systems engineering and long-horizon agentic tasks. In coding and agent capabilities, GLM-5 achieves state-of-the-art performance among open-source models. In real-world programming scenarios, its user experience approaches that of Claude Opus 4.5. It excels at complex systems engineering and long-horizon agent tasks, making it an ideal foundation model for general-purpose agent assistants.",
|
||||
"glm-5v-turbo.description": "GLM-5V-Turbo is Zhipu’s first multimodal coding foundation model, designed for visual programming tasks. It can natively process multimodal inputs such as images, videos, and text, while excelling in long-horizon planning, complex programming, and action execution. Deeply integrated with agent workflows, it can collaborate seamlessly with agents like Claude Code and OpenClaw to complete a full closed loop of “understanding the environment → planning actions → executing tasks.”",
|
||||
"glm-image.description": "GLM-Image is Zhipu’s new flagship image generation model. The model was trained end-to-end on domestically produced chips and adopts an original hybrid architecture that combines autoregressive modeling with a diffusion decoder. This design enables strong global instruction understanding alongside fine-grained local detail rendering, overcoming long-standing challenges in generating knowledge-dense content such as posters, presentations, and educational diagrams. It represents an important exploration toward a new generation of “cognitive generative” technology paradigms, exemplified by Nano Banana Pro.",
|
||||
"glm-z1-air.description": "Reasoning model with strong reasoning for tasks that require deep inference.",
|
||||
"glm-z1-airx.description": "Ultra-fast reasoning with high reasoning quality.",
|
||||
@@ -640,6 +621,7 @@
|
||||
"google/gemini-2.0-flash-lite-001.description": "Gemini 2.0 Flash Lite is a lightweight Gemini variant with thinking disabled by default to improve latency and cost, but it can be enabled via parameters.",
|
||||
"google/gemini-2.0-flash-lite.description": "Gemini 2.0 Flash Lite delivers next-gen features including exceptional speed, built-in tool use, multimodal generation, and a 1M-token context window.",
|
||||
"google/gemini-2.0-flash.description": "Gemini 2.0 Flash is Google’s high-performance reasoning model for extended multimodal tasks.",
|
||||
"google/gemini-2.5-flash-image-preview.description": "Gemini 2.5 Flash experimental model with image generation support.",
|
||||
"google/gemini-2.5-flash-image.description": "Gemini 2.5 Flash Image (Nano Banana) is Google’s image generation model with multimodal conversation support.",
|
||||
"google/gemini-2.5-flash-lite.description": "Gemini 2.5 Flash Lite is the lightweight Gemini 2.5 variant optimized for latency and cost, suitable for high-throughput scenarios.",
|
||||
"google/gemini-2.5-flash-preview.description": "Gemini 2.5 Flash is Google’s most advanced flagship model, built for advanced reasoning, coding, math, and science tasks. It includes built-in “thinking” to deliver higher-accuracy responses with finer context processing.\n\nNote: This model has two variants—thinking and non-thinking. Output pricing differs significantly depending on whether thinking is enabled. If you choose the standard variant (without the “:thinking” suffix), the model will explicitly avoid generating thinking tokens.\n\nTo use thinking and receive thinking tokens, you must select the “:thinking” variant, which incurs higher thinking output pricing.\n\nGemini 2.5 Flash can also be configured via the “max reasoning tokens” parameter as documented (https://openrouter.ai/docs/use-cases/reasoning-tokens#max-tokens-for-reasoning).",
|
||||
@@ -649,7 +631,6 @@
|
||||
"google/gemini-2.5-pro.description": "Gemini 2.5 Pro is Google’s flagship reasoning model with long context support for complex tasks.",
|
||||
"google/gemini-3-pro-image-preview.description": "Gemini 3 Pro Image (Nano Banana Pro) is Google’s image generation model with multimodal conversation support.",
|
||||
"google/gemini-3-pro-preview.description": "Gemini 3 Pro is the next-generation multimodal reasoning model in the Gemini family, understanding text, audio, images, and video, and handling complex tasks and large codebases.",
|
||||
"google/gemini-3.1-flash-image-preview.description": "Gemini 3.1 Flash Image Preview, a.k.a. \"Nano Banana 2,\" is Google’s latest state of the art image generation and editing model, delivering Pro-level visual quality at Flash speed. It combines advanced contextual understanding with fast, cost-efficient inference, making complex image generation and iterative edits significantly more accessible.",
|
||||
"google/gemini-embedding-001.description": "A state-of-the-art embedding model with strong performance in English, multilingual, and code tasks.",
|
||||
"google/gemini-flash-1.5.description": "Gemini 1.5 Flash provides optimized multimodal processing for a range of complex tasks.",
|
||||
"google/gemini-pro-1.5.description": "Gemini 1.5 Pro combines the latest optimizations for more efficient multimodal data processing.",
|
||||
@@ -745,7 +726,6 @@
|
||||
"grok-code-fast-1.description": "We’re excited to launch grok-code-fast-1, a fast and cost-effective reasoning model that excels at agentic coding.",
|
||||
"grok-imagine-image-pro.description": "Generate images from text prompts, edit existing images with natural language, or iteratively refine images through multi-turn conversations.",
|
||||
"grok-imagine-image.description": "Generate images from text prompts, edit existing images with natural language, or iteratively refine images through multi-turn conversations.",
|
||||
"grok-imagine-video.description": "State-of-the-art video generation across quality, cost, and latency.",
|
||||
"groq/compound-mini.description": "Compound-mini is a composite AI system powered by publicly available models supported on GroqCloud, intelligently and selectively using tools to answer user queries.",
|
||||
"groq/compound.description": "Compound is a composite AI system powered by multiple publicly available models supported on GroqCloud, intelligently and selectively using tools to answer user queries.",
|
||||
"gryphe/mythomax-l2-13b.description": "MythoMax L2 13B is a creative, intelligent language model merged from multiple top models.",
|
||||
@@ -811,18 +791,13 @@
|
||||
"kimi-k2-0905-preview.description": "kimi-k2-0905-preview offers a 256k context window, stronger agentic coding, better front-end code quality, and improved context understanding.",
|
||||
"kimi-k2-instruct.description": "Kimi K2 Instruct is Kimi’s official reasoning model with long context for code, QA, and more.",
|
||||
"kimi-k2-thinking-turbo.description": "High-speed K2 long-thinking variant with 256k context, strong deep reasoning, and 60–100 tokens/sec output.",
|
||||
"kimi-k2-thinking.description": "Kimi-K2 is a MoE architecture basic model launched by Moonshot AI with super strong code and agent capabilities. It has a total parameter of 1T and an activation parameter of 32B.In benchmark performance tests in major categories such as general knowledge reasoning, programming, mathematics, and agents, the performance of the K2 model exceeds that of other mainstream open source models.",
|
||||
"kimi-k2-thinking.description": "kimi-k2-thinking is a Moonshot AI thinking model with general agentic and reasoning abilities. It excels at deep reasoning and can solve hard problems via multi-step tool use.",
|
||||
"kimi-k2-turbo-preview.description": "kimi-k2 is an MoE foundation model with strong coding and agent capabilities (1T total params, 32B active), outperforming other mainstream open models across reasoning, programming, math, and agent benchmarks.",
|
||||
"kimi-k2.5.description": "Kimi K2.5 is Kimi's most versatile model to date, featuring a native multimodal architecture that supports both vision and text inputs, 'thinking' and 'non-thinking' modes, and both conversational and agent tasks.",
|
||||
"kimi-k2.description": "Kimi-K2 is a MoE base model from Moonshot AI with strong coding and agent capabilities, totaling 1T parameters with 32B active. On benchmarks for general reasoning, coding, math, and agent tasks, it outperforms other mainstream open models.",
|
||||
"kimi-k2:1t.description": "Kimi K2 is a large MoE LLM from Moonshot AI with 1T total parameters and 32B active per forward pass. It is optimized for agent capabilities including advanced tool use, reasoning, and code synthesis.",
|
||||
"kling/kling-v3-image-generation.description": "Supports up to 10 reference images, allowing you to lock subjects, elements, and color tones to ensure consistent style. Combines style transfer, portrait/character referencing, multi-image fusion, and localized inpainting for flexible control. Delivers realistic portrait details, with overall visuals that are delicate and richly layered, featuring cinematic color and atmosphere.",
|
||||
"kling/kling-v3-omni-image-generation.description": "Unlock cinematic storytelling visuals with new series image generation and direct 2K/4K output. Deeply analyzes audiovisual elements in prompts to precisely execute creative instructions. Supports flexible multi-reference inputs and comprehensive quality upgrades, ideal for storyboards, narrative concept art, and scene design.",
|
||||
"kling/kling-v3-omni-video-generation.description": "New “All-in-One Reference” feature supports 3–8 second videos or multiple images to anchor character elements. Can match original audio and lip movements for authentic character representation. Enhances video consistency and dynamic expression. Supports audiovisual synchronization and intelligent storyboarding.",
|
||||
"kling/kling-v3-video-generation.description": "Intelligent storyboarding understands scene transitions within scripts, automatically arranging camera positions and shot types. A native multimodal framework ensures audiovisual consistency. Removes duration constraints, enabling more flexible multi-shot storytelling.",
|
||||
"kuaishou/kat-coder-pro-v1.description": "KAT-Coder-Pro-V1 (limited-time free) focuses on code understanding and automation for efficient coding agents.",
|
||||
"labs-devstral-small-2512.description": "Devstral Small 2 excels at using tools to explore code bases, edit multiple files, and power software engineering agents.",
|
||||
"labs-leanstral-2603.description": "Mistral's first open-source code agent designed for Lean 4, built for formal proof engineering in realistic repositories. 119B parameters with 6.5B active.",
|
||||
"lite.description": "Spark Lite is a lightweight LLM with ultra-low latency and efficient processing. It is fully free and supports real-time web search. Its fast responses perform well on low-compute devices and for model fine-tuning, delivering strong cost efficiency and an intelligent experience, especially for knowledge Q&A, content generation, and search scenarios.",
|
||||
"llama-3.1-70b-versatile.description": "Llama 3.1 70B delivers stronger AI reasoning for complex applications, supporting heavy compute with high efficiency and accuracy.",
|
||||
"llama-3.1-8b-instant.description": "Llama 3.1 8B is a high-efficiency model with fast text generation, ideal for large-scale, cost-effective applications.",
|
||||
@@ -846,7 +821,7 @@
|
||||
"llava.description": "LLaVA is a multimodal model combining a vision encoder and Vicuna for strong vision-language understanding.",
|
||||
"llava:13b.description": "LLaVA is a multimodal model combining a vision encoder and Vicuna for strong vision-language understanding.",
|
||||
"llava:34b.description": "LLaVA is a multimodal model combining a vision encoder and Vicuna for strong vision-language understanding.",
|
||||
"magistral-medium-2509.description": "Magistral Medium 1.2 is a frontier reasoning model from Mistral AI (Sep 2025) with vision support.",
|
||||
"magistral-medium-latest.description": "Magistral Medium 1.2 is a frontier reasoning model from Mistral AI (Sep 2025) with vision support.",
|
||||
"magistral-small-2509.description": "Magistral Small 1.2 is an open-source small reasoning model from Mistral AI (Sep 2025) with vision support.",
|
||||
"mathstral.description": "MathΣtral is built for scientific research and mathematical reasoning, with strong computation and explanation.",
|
||||
"max-32k.description": "Spark Max 32K offers large-context processing with stronger context understanding and logical reasoning, supporting 32K-token inputs for long document reading and private knowledge Q&A.",
|
||||
@@ -935,25 +910,17 @@
|
||||
"minimax/minimax-m2.1.description": "MiniMax-M2.1 is a lightweight, cutting-edge large language model optimized for coding, proxy workflows, and modern application development, providing cleaner, more concise output and faster perceptual response times.",
|
||||
"minimax/minimax-m2.description": "MiniMax-M2 is a high-value model that excels at coding and agent tasks for many engineering scenarios.",
|
||||
"minimaxai/minimax-m2.5.description": "MiniMax-M2.5 is the latest large language model from MiniMax, featuring a Mixture-of-Experts (MoE) architecture with 229 billion total parameters. It achieves industry-leading performance in programming, agent tool calling, search tasks, and office scenarios.",
|
||||
"ministral-3:14b.description": "Ministral 3 14B is the largest model in the Ministral 3 series, delivering state-of-the-art performance comparable to the larger Mistral Small 3.2 24B counterpart. Optimized for local deployment, it delivers high performance on various hardware including local setups.",
|
||||
"ministral-3:3b.description": "Ministral 3 3B is the smallest and most efficient model in the Ministral 3 series, offering strong language and vision capabilities in a compact package. Designed for edge deployment, it delivers high performance on various hardware including local setups.",
|
||||
"ministral-3:8b.description": "Ministral 3 8B is a powerful and efficient model in the Ministral 3 series, delivering top-tier text and vision capabilities. Built for edge deployment, it delivers high performance on various hardware including local setups.",
|
||||
"ministral-3b-latest.description": "Ministral 3B is Mistral’s top-tier edge model.",
|
||||
"ministral-8b-latest.description": "Ministral 8B is a highly cost-effective edge model from Mistral.",
|
||||
"mistral-ai/Mistral-Large-2411.description": "Mistral’s flagship model for complex tasks needing large-scale reasoning or specialization (synthetic text generation, code generation, RAG, or agents).",
|
||||
"mistral-ai/Mistral-Nemo.description": "Mistral Nemo is a cutting-edge LLM with state-of-the-art reasoning, world knowledge, and coding for its size.",
|
||||
"mistral-ai/mistral-small-2503.description": "Mistral Small is suitable for any language-based task requiring high efficiency and low latency.",
|
||||
"mistral-large-2411.description": "Mistral Large is the flagship model, strong in multilingual tasks, complex reasoning, and code generation—ideal for high-end applications.",
|
||||
"mistral-large-2512.description": "Mistral Large 3, is a state-of-the-art, open-weight, general-purpose multimodal model with a granular Mixture-of-Experts architecture. It features 41B active parameters and 675B total parameters.",
|
||||
"mistral-large-3:675b.description": "Mistral Large 3 is a state-of-the-art open-weight general-purpose multimodal model with a refined Mixture of Experts architecture. It has 41B active parameters and 675B total parameters.",
|
||||
"mistral-large-instruct.description": "Mistral-Large-Instruct-2407 is an advanced dense LLM with 123B parameters and state-of-the-art reasoning, knowledge, and coding.",
|
||||
"mistral-large-latest.description": "Mistral Large is the flagship model, excelling at multilingual tasks, complex reasoning, and code generation for high-end applications.",
|
||||
"mistral-large-latest.description": "Mistral Large is the flagship model, strong in multilingual tasks, complex reasoning, and code generation—ideal for high-end applications.",
|
||||
"mistral-large.description": "Mixtral Large is Mistral’s flagship model, combining code generation, math, and reasoning with a 128K context window.",
|
||||
"mistral-medium-2508.description": "Mistral Medium 3.1 delivers state-of-the-art performance at 8× lower cost and simplifies enterprise deployment.",
|
||||
"mistral-medium-latest.description": "Mistral Medium 3.1 delivers state-of-the-art performance at 8× lower cost and simplifies enterprise deployment.",
|
||||
"mistral-nemo-instruct.description": "Mistral-Nemo-Instruct-2407 is the instruction-tuned version of Mistral-Nemo-Base-2407.",
|
||||
"mistral-nemo.description": "Mistral Nemo is a high-efficiency 12B model from Mistral AI and NVIDIA.",
|
||||
"mistral-small-2506.description": "Mistral Small is a cost-effective, fast, and reliable option for translation, summarization, and sentiment analysis.",
|
||||
"mistral-small-2603.description": "Mistral's powerful hybrid model unifying instruct, reasoning, and coding capabilities in a single model. 119B parameters with 6.5B active.",
|
||||
"mistral-small-latest.description": "Mistral Small is a cost-effective, fast, and reliable option for translation, summarization, and sentiment analysis.",
|
||||
"mistral-small.description": "Mistral Small is suitable for any language-based task requiring high efficiency and low latency.",
|
||||
"mistral.description": "Mistral is Mistral AI’s 7B model, suitable for varied language tasks.",
|
||||
@@ -999,11 +966,6 @@
|
||||
"moonshotai/kimi-k2.description": "Kimi K2 is a large MoE model from Moonshot AI with 1T total parameters and 32B active per forward pass, optimized for agent capabilities including advanced tool use, reasoning, and code synthesis.",
|
||||
"morph/morph-v3-fast.description": "Morph provides a specialized model to apply code changes suggested by frontier models (e.g., Claude or GPT-4o) to your existing files at FAST 4500+ tokens/sec. It is the final step in an AI coding workflow and supports 16k input/output tokens.",
|
||||
"morph/morph-v3-large.description": "Morph provides a specialized model to apply code changes suggested by frontier models (e.g., Claude or GPT-4o) to your existing files at FAST 2500+ tokens/sec. It is the final step in an AI coding workflow and supports 16k input/output tokens.",
|
||||
"musesteamer-2.0-lite-i2v.description": "Compared to Turbo, it offers superior performance with excellent cost-effectiveness.",
|
||||
"musesteamer-2.0-pro-i2v.description": "Based on Turbo, supports 1080P dynamic video generation, offering higher visual quality and enhanced video expressiveness.",
|
||||
"musesteamer-2.0-turbo-i2v-audio.description": "Supports 5s and 10s 720P dynamic video generation with sound. Enables multi-person conversational audio-visual creation, with synchronized sound and visuals, cinematic-quality imagery, and master-level camera movements.",
|
||||
"musesteamer-2.0-turbo-i2v.description": "Supports 5-second 720P silent dynamic video generation, featuring cinematic-quality visuals, complex camera movements, and realistic character emotions and actions.",
|
||||
"musesteamer-air-i2v.description": "The Baidu MuseSteamer Air video generation model performs well in subject consistency, physical realism, camera movement effects, and generation speed. It supports 5-second 720P silent dynamic video generation, delivering cinematic-quality visuals, fast generation, and excellent cost-effectiveness.",
|
||||
"musesteamer-air-image.description": "musesteamer-air-image is an image-generation model developed by Baidu’s search team to deliver exceptional cost-performance. It can quickly generate clear, action-coherent images based on user prompts, turning user descriptions effortlessly into visuals.",
|
||||
"nousresearch/hermes-2-pro-llama-3-8b.description": "Hermes 2 Pro Llama 3 8B is an updated Nous Hermes 2 version with the latest internally developed datasets.",
|
||||
"nvidia/Llama-3.1-Nemotron-70B-Instruct-HF.description": "Llama 3.1 Nemotron 70B is an NVIDIA-customized LLM to improve helpfulness. It performs strongly on Arena Hard, AlpacaEval 2 LC, and GPT-4-Turbo MT-Bench, ranking #1 on all three auto-alignment benchmarks as of Oct 1, 2024. It is trained from Llama-3.1-70B-Instruct using RLHF (REINFORCE), Llama-3.1-Nemotron-70B-Reward, and HelpSteer2-Preference prompts.",
|
||||
@@ -1073,13 +1035,6 @@
|
||||
"phi3:14b.description": "Phi-3 is Microsoft’s lightweight open model for efficient integration and large-scale reasoning.",
|
||||
"pixtral-12b-2409.description": "Pixtral is strong at chart/image understanding, document QA, multimodal reasoning, and instruction following. It ingests images at native resolution/aspect ratio and handles any number of images within a 128K context window.",
|
||||
"pixtral-large-latest.description": "Pixtral Large is a 124B-parameter open multimodal model built on Mistral Large 2, the second in our multimodal family with frontier-level image understanding.",
|
||||
"pixverse/pixverse-v5.6-it2v.description": "Upload any image to freely customize the story, pacing, and style, generating vivid and coherent videos. PixVerse V5.6 is a self-developed video generation large model by Aishi Technology, offering comprehensive upgrades in both text-to-video and image-to-video capabilities. The model significantly enhances image clarity, stability in complex motion, and audio-visual synchronization. Lip-sync accuracy and natural emotional expression are improved in multi-character dialogue scenes. Composition, lighting, and texture consistency are also optimized, further elevating overall generation quality. PixVerse V5.6 ranks in the top global tier on the Artificial Analysis text-to-video and image-to-video leaderboard.",
|
||||
"pixverse/pixverse-v5.6-kf2v.description": "Achieve seamless transitions between any two images, creating smoother and more natural scene changes with visually striking effects. PixVerse V5.6 is a self-developed video generation large model by Aishi Technology, offering comprehensive upgrades in both text-to-video and image-to-video capabilities. The model significantly improves image clarity, stability in complex motion, and audio-visual synchronization. Lip-sync accuracy and natural emotional expression are enhanced in multi-character dialogue scenes. Composition, lighting, and texture consistency are also optimized, further elevating overall generation quality. PixVerse V5.6 ranks in the top global tier on the Artificial Analysis text-to-video and image-to-video leaderboard.",
|
||||
"pixverse/pixverse-v5.6-r2v.description": "Input 2–7 images to intelligently merge different subjects while maintaining unified style and coordinated motion, easily building rich narrative scenes and enhancing content controllability and creative freedom. PixVerse V5.6 is a self-developed video generation large model by Aishi Technology, offering comprehensive upgrades in both text-to-video and image-to-video capabilities. The model significantly improves image clarity, stability in complex motion, and audio-visual synchronization. Lip-sync accuracy and natural emotional expression are enhanced in multi-character dialogue scenes. Composition, lighting, and texture consistency are also optimized, further elevating overall generation quality. PixVerse V5.6 ranks in the top global tier on the Artificial Analysis text-to-video and image-to-video leaderboard.",
|
||||
"pixverse/pixverse-v5.6-t2v.description": "Input a text description to generate high-quality videos with second-level speed and precise semantic alignment, supporting multiple styles. PixVerse V5.6 is a self-developed video generation large model by Aishi Technology, offering comprehensive upgrades in both text-to-video and image-to-video capabilities. The model significantly improves image clarity, stability in complex motion, and audio-visual synchronization. Lip-sync accuracy and natural emotional expression are enhanced in multi-character dialogue scenes. Composition, lighting, and texture consistency are also optimized, further raising overall generation quality. PixVerse V5.6 ranks in the top global tier on the Artificial Analysis text-to-video and image-to-video leaderboard.",
|
||||
"pixverse/pixverse-v6-it2v.description": "V6 is PixVerse’s new model launched at the end of March 2026. Its it2v (image-to-video) model ranks second globally. In addition to the prompt-control capabilities of t2v (text-to-video), it2v can accurately reproduce the colors, saturation, scenes, and character features of reference images, delivering stronger character emotions and high-speed motion performance. It supports up to 15-second videos, direct output of music and video, and multiple languages. Ideal for scenarios such as e-commerce product close-ups, advertising promos, and simulated C4D modeling to showcase product structures, with one-click direct output.",
|
||||
"pixverse/pixverse-v6-kf2v.description": "V6 is PixVerse’s new model launched at the end of March 2026. Its kf2v (keyframe-to-video) model can seamlessly connect any two images, producing smoother and more natural video transitions. It supports up to 15-second videos, direct output of music and video, and multiple languages.",
|
||||
"pixverse/pixverse-v6-t2v.description": "V6 is PixVerse’s new model launched at the end of March 2026. Its t2v (text-to-video) model allows precise control of video visuals through prompts, accurately reproducing various cinematic techniques. Camera movements such as push, pull, pan, tilt, tracking, and follow are smooth and natural, with precise and controllable perspective switching. It supports up to 15-second videos, direct output of music and video, and multiple languages.",
|
||||
"pro-128k.description": "Spark Pro 128K provides a very large context capacity, handling up to 128K context, ideal for long-form documents requiring full-text analysis and long-range coherence, with smooth logic and diverse citation support in complex discussions.",
|
||||
"pro-deepseek-r1.description": "Enterprise dedicated service model with bundled concurrency.",
|
||||
"pro-deepseek-v3.description": "Enterprise dedicated service model with bundled concurrency.",
|
||||
@@ -1234,8 +1189,6 @@
|
||||
"qwq.description": "QwQ is a reasoning model in the Qwen family. Compared with standard instruction-tuned models, it brings thinking and reasoning abilities that significantly improve downstream performance, especially on hard problems. QwQ-32B is a mid-sized reasoning model that competes well with top reasoning models like DeepSeek-R1 and o1-mini.",
|
||||
"qwq_32b.description": "Mid-sized reasoning model in the Qwen family. Compared with standard instruction-tuned models, QwQ’s thinking and reasoning abilities significantly boost downstream performance, especially on hard problems.",
|
||||
"r1-1776.description": "R1-1776 is a post-trained variant of DeepSeek R1 designed to provide uncensored, unbiased factual information.",
|
||||
"seedance-1-5-pro-251215.description": "Seedance 1.5 Pro by ByteDance supports text-to-video, image-to-video (first frame, first+last frame), and audio generation synchronized with visuals.",
|
||||
"seedream-5-0-260128.description": "ByteDance-Seedream-5.0-lite by BytePlus features web-retrieval-augmented generation for real-time information, enhanced complex prompt interpretation, and improved reference consistency for professional visual creation.",
|
||||
"solar-mini-ja.description": "Solar Mini (Ja) extends Solar Mini with a focus on Japanese while maintaining efficient, strong performance in English and Korean.",
|
||||
"solar-mini.description": "Solar Mini is a compact LLM that outperforms GPT-3.5, with strong multilingual capability supporting English and Korean, offering an efficient small-footprint solution.",
|
||||
"solar-pro.description": "Solar Pro is a high-intelligence LLM from Upstage, focused on instruction following on a single GPU, with IFEval scores above 80. It currently supports English; the full release was planned for November 2024 with expanded language support and longer context.",
|
||||
@@ -1245,8 +1198,6 @@
|
||||
"sonar-reasoning.description": "An advanced search product with search grounding for complex queries and follow-ups.",
|
||||
"sonar.description": "A lightweight search-grounded product, faster and cheaper than Sonar Pro.",
|
||||
"sophnet/deepseek-v3.2.description": "DeepSeek V3.2 is a model that strikes a balance between high computational efficiency and excellent reasoning and agent performance.",
|
||||
"sora-2-pro.description": "Sora 2 Pro is our state-of-the-art, most advanced media generation model, generating videos with synced audio. It can create richly detailed, dynamic clips from natural language or images.",
|
||||
"sora-2.description": "Sora 2 is our new powerful media generation model, generating videos with synced audio. It can create richly detailed, dynamic clips from natural language or images.",
|
||||
"spark-x.description": "X2 Capabilities Overview: 1. Introduces dynamic adjustment of reasoning mode, controlled via the `thinking` field. 2. Expanded context length: 64K input tokens and 128K output tokens. 3. Supports Function Call functionality.",
|
||||
"stable-diffusion-3-medium.description": "The latest text-to-image model from Stability AI. This version significantly improves image quality, text understanding, and style diversity, interpreting complex natural-language prompts more accurately and generating more precise, diverse images.",
|
||||
"stable-diffusion-3.5-large-turbo.description": "stable-diffusion-3.5-large-turbo applies adversarial diffusion distillation (ADD) to stable-diffusion-3.5-large for faster speed.",
|
||||
@@ -1301,68 +1252,23 @@
|
||||
"v0-1.0-md.description": "v0-1.0-md is a legacy model served via the v0 API.",
|
||||
"v0-1.5-lg.description": "v0-1.5-lg is suited for advanced thinking or reasoning tasks.",
|
||||
"v0-1.5-md.description": "v0-1.5-md is suited for everyday tasks and UI generation.",
|
||||
"veo-2.0-generate-001.description": "Our state-of-the-art video generation model, available to developers on the paid tier of the Gemini API.",
|
||||
"veo-3.0-fast-generate-001.description": "Our stable video generation model, available to developers on the paid tier of the Gemini API.",
|
||||
"veo-3.0-generate-001.description": "Our stable video generation model, available to developers on the paid tier of the Gemini API.",
|
||||
"veo-3.1-fast-generate-preview.description": "Our latest video generation model, available to developers on the paid tier of the Gemini API.",
|
||||
"veo-3.1-generate-preview.description": "Our latest video generation model, available to developers on the paid tier of the Gemini API.",
|
||||
"vercel/v0-1.0-md.description": "Access the models behind v0 to generate, fix, and optimize modern web apps with framework-specific reasoning and up-to-date knowledge.",
|
||||
"vercel/v0-1.5-md.description": "Access the models behind v0 to generate, fix, and optimize modern web apps with framework-specific reasoning and up-to-date knowledge.",
|
||||
"vidu/viduq2-pro_img2video.description": "Input an image and a text description to generate video. ViduQ2-Pro image-to-video is the world’s first “Everything Can Be Referenced” video model. It supports six reference dimensions—effects, expressions, textures, actions, characters, and scenes—enabling fully evolved video editing. Through controllable addition, deletion, and modification, it achieves fine-grained video editing, designed as a production-grade creation engine for animated series, short dramas, and film production.",
|
||||
"vidu/viduq2-pro_reference2video.description": "Input reference videos, images, and a text description to generate video. ViduQ2-Pro reference-to-video is the world’s first “Everything Can Be Referenced” video model. It supports six reference dimensions—effects, expressions, textures, actions, characters, and scenes—enabling fully evolved video editing. Through controllable addition, deletion, and modification, it achieves fine-grained video editing, designed as a production-grade creation engine for animated series, short dramas, and film production.",
|
||||
"vidu/viduq2-pro_start-end2video.description": "Input the first and last frame images along with a text description to generate video. ViduQ2-Pro keyframe-to-video is the world’s first “Everything Can Be Referenced” video model. It supports six reference dimensions—effects, expressions, textures, actions, characters, and scenes—enabling fully evolved video editing. Through controllable addition, deletion, and modification, it achieves fine-grained video editing, designed as a production-grade creation engine for animated series, short dramas, and film production.",
|
||||
"vidu/viduq2-turbo_img2video.description": "Input an image and a text description to generate video. ViduQ2-Turbo image-to-video is an ultra-fast generation engine. A 5-second 720P video can be generated in as little as 19 seconds, and a 5-second 1080P video in about 27 seconds. Character actions and expressions are natural and realistic, delivering strong authenticity and excellent performance in high-dynamic scenes such as action sequences, with wide-ranging motion.",
|
||||
"vidu/viduq2-turbo_start-end2video.description": "Input the first and last frame images along with a text description to generate video. ViduQ2-Turbo keyframe-to-video is an ultra-fast generation engine. A 5-second 720P video can be produced in as little as 19 seconds, and a 5-second 1080P video in about 27 seconds. Character actions and expressions are natural and realistic, with strong authenticity, excelling in high-dynamic scenes such as action sequences, and supporting wide-ranging motion.",
|
||||
"vidu/viduq2_reference2video.description": "Input reference images along with a text description to generate video. ViduQ2 reference-to-video is a model designed for precise instruction adherence and nuanced emotion capture. It offers outstanding narrative control, accurately interpreting and expressing micro-expression changes; features rich cinematic language, smooth camera movements, and strong visual tension. Widely applicable to film and animation, advertising and e-commerce, short dramas, and cultural tourism industries.",
|
||||
"vidu/viduq2_text2video.description": "Enter a text prompt to generate video. ViduQ2 text-to-video is a model designed for precise instruction adherence and nuanced emotion capture. It offers outstanding narrative control, accurately interpreting and expressing micro-expression changes; features rich cinematic language, smooth camera movements, and strong visual tension. Widely applicable to film and animation, advertising and e-commerce, short dramas, and cultural tourism industries.",
|
||||
"vidu/viduq3-pro_img2video.description": "Input an image and a text description to generate video. ViduQ3-Pro image-to-video is a flagship-level audio-visual native model. It supports up to 16 seconds of synchronized audio-visual generation, enabling free multi-shot switching while precisely controlling pacing, emotion, and narrative continuity. With a leading parameter scale, it delivers exceptional image quality, character consistency, and emotional expression, meeting cinematic standards. Ideal for professional production scenarios such as advertising (e-commerce, TVC, performance campaigns), animated series, live-action drama, and games.",
|
||||
"vidu/viduq3-pro_start-end2video.description": "Input the first and last frame images along with a text description to generate video. ViduQ3-Pro keyframe-to-video is a flagship-level audio-visual native model. It supports up to 16 seconds of synchronized audio-visual generation, enabling free multi-shot switching while precisely controlling pacing, emotion, and narrative continuity. With a leading parameter scale, it delivers exceptional image quality, character consistency, and emotional expression, meeting cinematic standards. Ideal for professional production scenarios such as advertising (e-commerce, TVC, performance campaigns), animated series, live-action drama, and games.",
|
||||
"vidu/viduq3-pro_text2video.description": "Enter a text prompt to generate video. ViduQ3-Pro text-to-video is a flagship-level audio-visual native model. Supports up to 16 seconds of synchronized audio-visual generation, allowing free multi-shot switching while precisely controlling pacing, emotion, and narrative continuity. With a leading parameter scale, it delivers exceptional image quality, character consistency, and emotional expression, meeting cinematic standards. Ideal for professional production scenarios such as advertising (e-commerce, TVC, performance campaigns), animated series, live-action drama, and games.",
|
||||
"vidu/viduq3-turbo_img2video.description": "Input an image and a text description to generate video. ViduQ3-Turbo image-to-video is a high-performance accelerated model. It offers extremely fast generation while maintaining high-quality visuals and dynamic expression, excelling in action scenes, emotional rendering, and semantic understanding. Cost-effective and ideal for casual entertainment scenarios such as social media images, AI companions, and special effects assets.",
|
||||
"vidu/viduq3-turbo_start-end2video.description": "Input the first and last frame images along with a text description to generate video. ViduQ3-Turbo keyframe-to-video is a high-performance accelerated model. It delivers extremely fast generation while maintaining high-quality visuals and dynamic expression, excelling in action scenes, emotional rendering, and semantic understanding. Cost-effective and ideal for casual entertainment scenarios such as social media images, AI companions, and special effects assets.",
|
||||
"vidu/viduq3-turbo_text2video.description": "Enter a text prompt to generate video. ViduQ3-Turbo text-to-video is a high-performance accelerated model. It offers extremely fast generation while maintaining high-quality visuals and dynamic expression, excelling in action scenes, emotional rendering, and semantic understanding. Cost-effective and well-suited for casual entertainment scenarios such as social media images, AI companions, and special effects assets.",
|
||||
"vidu2-image.description": "Vidu 2 is a video generation foundation model designed to balance speed and quality. It focuses on image-to-video generation and start–end frame control, supporting 4-second videos at 720P resolution. The generation speed is significantly improved while costs are substantially reduced. Image-to-video generation fixes previous color shift issues, delivering stable and controllable visuals suitable for e-commerce and similar applications. In addition, semantic understanding of start and end frames and consistency across multiple reference images have been enhanced, making it an efficient tool for large-scale content production in general entertainment, internet media, animated short dramas, and advertising.",
|
||||
"vidu2-reference.description": "Vidu 2 is a video generation foundation model designed to balance speed and quality. It focuses on image-to-video generation and start–end frame control, supporting 4-second videos at 720P resolution. The generation speed is significantly improved while costs are substantially reduced. Image-to-video generation fixes previous color shift issues, delivering stable and controllable visuals suitable for e-commerce and similar applications. In addition, semantic understanding of start and end frames and consistency across multiple reference images have been enhanced, making it an efficient tool for large-scale content production in general entertainment, internet media, animated short dramas, and advertising.",
|
||||
"vidu2-start-end.description": "Vidu 2 is a video generation foundation model designed to balance speed and quality. It focuses on image-to-video generation and start–end frame control, supporting 4-second videos at 720P resolution. The generation speed is significantly improved while costs are substantially reduced. Image-to-video generation fixes previous color shift issues, delivering stable and controllable visuals suitable for e-commerce and similar applications. In addition, semantic understanding of start and end frames and consistency across multiple reference images have been enhanced, making it an efficient tool for large-scale content production in general entertainment, internet media, animated short dramas, and advertising.",
|
||||
"viduq1-image.description": "Vidu Q1 is Vidu’s next-generation video generation foundation model, focused on high-quality video creation. It produces content with fixed specifications of 5 seconds, 24 FPS, and 1080P resolution. Through deep optimization of visual clarity, the overall image quality and texture are significantly improved, while issues such as hand deformation and frame jitter are greatly reduced. The realistic style closely approaches real-world scenes, and 2D animation styles are preserved with high fidelity. Transitions between start and end frames are smoother, making it well suited for high-demand creative scenarios such as film production, advertising, and animated short dramas.",
|
||||
"viduq1-start-end.description": "Vidu Q1 is Vidu’s next-generation video generation foundation model, focused on high-quality video creation. It produces content with fixed specifications of 5 seconds, 24 FPS, and 1080P resolution. Through deep optimization of visual clarity, the overall image quality and texture are significantly improved, while issues such as hand deformation and frame jitter are greatly reduced. The realistic style closely approaches real-world scenes, and 2D animation styles are preserved with high fidelity. Transitions between start and end frames are smoother, making it well suited for high-demand creative scenarios such as film production, advertising, and animated short dramas.",
|
||||
"viduq1-text.description": "Vidu Q1 is Vidu’s next-generation video generation foundation model, focused on high-quality video creation. It produces content with fixed specifications of 5 seconds, 24 FPS, and 1080P resolution. Through deep optimization of visual clarity, the overall image quality and texture are significantly improved, while issues such as hand deformation and frame jitter are greatly reduced. The realistic style closely approaches real-world scenes, and 2D animation styles are preserved with high fidelity. Transitions between start and end frames are smoother, making it well suited for high-demand creative scenarios such as film production, advertising, and animated short dramas.",
|
||||
"volcengine/doubao-seed-2-0-code.description": "Doubao-Seed-2.0-Code is optimized for enterprise-level programming needs. Built on the excellent Agent and VLM capabilities of Seed 2.0, it specially enhances coding abilities with outstanding frontend performance and targeted optimization for common enterprise multi-language coding requirements, making it ideal for integration with various AI programming tools.",
|
||||
"volcengine/doubao-seed-2-0-lite.description": "Balances generation quality and response speed, suitable as a general-purpose production-grade model",
|
||||
"volcengine/doubao-seed-2-0-mini.description": "Points to the latest version of doubao-seed-2-0-mini",
|
||||
"volcengine/doubao-seed-2-0-pro.description": "Points to the latest version of doubao-seed-2-0-pro",
|
||||
"volcengine/doubao-seed-code.description": "Doubao-Seed-Code is ByteDance Volcano Engine’s LLM optimized for agentic programming, performing strongly on programming and agent benchmarks with 256K context support.",
|
||||
"wan2.2-i2v-flash.description": "Wanxiang 2.2 Speed Edition delivers ultra-fast generation, with more accurate prompt understanding and camera control. It maintains consistency of visual elements while significantly improving overall stability and success rate.",
|
||||
"wan2.2-i2v-plus.description": "Wanxiang 2.2 Pro Edition offers more accurate prompt understanding and controllable camera movements. It maintains consistency of visual elements while significantly improving stability and success rate, and generates richer, more detailed content.",
|
||||
"wan2.2-kf2v-flash.description": "Wanxiang 2.2 Speed Edition",
|
||||
"wan2.2-kf2v-plus.description": "Wanxiang 2.2 Plus Edition",
|
||||
"wan2.2-t2i-flash.description": "Wanxiang 2.2 Flash is the latest model with upgrades in creativity, stability, and realism, delivering fast generation and high value.",
|
||||
"wan2.2-t2i-plus.description": "Wanxiang 2.2 Plus is the latest model with upgrades in creativity, stability, and realism, producing richer details.",
|
||||
"wan2.2-t2v-plus.description": "Wanxiang 2.2 Pro Edition provides more accurate prompt understanding, delivers stable and smooth motion generation, and produces richer, more detailed visuals.",
|
||||
"wan2.5-i2i-preview.description": "Wanxiang 2.5 I2I Preview supports single-image editing and multi-image fusion.",
|
||||
"wan2.5-i2v-preview.description": "Wanxiang 2.5 Preview supports automatic voiceover generation and the ability to incorporate custom audio files.",
|
||||
"wan2.5-t2i-preview.description": "Wanxiang 2.5 T2I supports flexible selection of image dimensions within total pixel area and aspect ratio constraints.",
|
||||
"wan2.5-t2v-preview.description": "Wanxiang 2.5 Preview supports automatic voiceover generation and the ability to incorporate custom audio files.",
|
||||
"wan2.6-i2v-flash.description": "Wanxiang 2.6 introduces multi-shot narrative capabilities, while also supporting automatic voiceover generation and the ability to incorporate custom audio files.",
|
||||
"wan2.6-i2v.description": "Wanxiang 2.6 introduces multi-shot narrative capabilities, while also supporting automatic voiceover generation and the ability to incorporate custom audio files.",
|
||||
"wan2.6-image.description": "Wanxiang 2.6 Image supports image editing and mixed image–text layout output.",
|
||||
"wan2.6-r2v-flash.description": "Wanxiang 2.6 Reference-to-Video – Flash offers faster generation and better cost performance. It supports referencing specific characters or any objects, accurately maintaining consistency in appearance and voice, and enables multi-character reference for co-performance.",
|
||||
"wan2.6-r2v.description": "Wanxiang 2.6 Reference-to-Video supports referencing specific characters or any objects, accurately maintaining consistency in appearance and voice, and enabling multi-character reference for co-performance. Note: When using videos as references, the input video will also be counted toward the cost. Please refer to the model pricing documentation for details.",
|
||||
"wan2.6-t2i.description": "Wanxiang 2.6 T2I supports flexible selection of image dimensions within total pixel area and aspect ratio constraints (same as Wanxiang 2.5).",
|
||||
"wan2.6-t2v.description": "Wanxiang 2.6 introduces multi-shot narrative capabilities, while also supporting automatic voiceover generation and the ability to incorporate custom audio files.",
|
||||
"wan2.7-i2v.description": "Wanxiang 2.7 Image-to-Video delivers a comprehensive upgrade in performance capabilities. Dramatic scenes feature delicate and natural emotional expression, while action sequences are intense and impactful. Combined with more dynamic and rhythmically driven shot transitions, it achieves stronger overall performance and storytelling.",
|
||||
"wan2.7-image-pro.description": "Wanxiang 2.7 Image Professional Edition, supports 4K high-definition output.",
|
||||
"wan2.7-image.description": "Wanxiang 2.7 Image, faster image generation speed.",
|
||||
"wan2.7-r2v.description": "Wanxiang 2.7 Reference-to-Video offers more stable references for characters, props, and scenes. It supports up to 5 mixed reference images or videos, along with audio tone referencing. Combined with upgraded core capabilities, it delivers stronger performance and expressive power.",
|
||||
"wan2.7-t2v.description": "Wanxiang 2.7 Text-to-Video delivers a comprehensive upgrade in performance capabilities. Dramatic scenes feature delicate and natural emotional expression, while action sequences are intense and impactful. Enhanced with more dynamic and rhythmically driven shot transitions, it achieves stronger overall acting and storytelling performance.",
|
||||
"wanx-v1.description": "Base text-to-image model. Corresponds to Tongyi Wanxiang 1.0 General.",
|
||||
"wanx2.0-t2i-turbo.description": "Excels at textured portraits with moderate speed and lower cost. Corresponds to Tongyi Wanxiang 2.0 Speed.",
|
||||
"wanx2.1-i2v-plus.description": "Wanxiang 2.1 Pro Edition delivers more visually refined and higher-quality imagery.",
|
||||
"wanx2.1-i2v-turbo.description": "Wanxiang 2.1 Speed Edition offers high cost-performance.",
|
||||
"wanx2.1-t2i-plus.description": "Fully upgraded version with richer image details and slightly slower speed. Corresponds to Tongyi Wanxiang 2.1 Pro.",
|
||||
"wanx2.1-t2i-turbo.description": "Fully upgraded version with fast generation, strong overall quality, and high value. Corresponds to Tongyi Wanxiang 2.1 Speed.",
|
||||
"wanx2.1-t2v-plus.description": "Wanxiang 2.1 Pro Edition delivers richer visual texture and higher-quality imagery.",
|
||||
"wanx2.1-t2v-turbo.description": "Wanxiang 2.1 Speed Edition offers excellent cost-performance.",
|
||||
"whisper-1.description": "A general speech recognition model supporting multilingual ASR, speech translation, and language identification.",
|
||||
"wizardlm2.description": "WizardLM 2 is a language model from Microsoft AI that excels at complex dialogue, multilingual tasks, reasoning, and assistants.",
|
||||
"wizardlm2:8x22b.description": "WizardLM 2 is a language model from Microsoft AI that excels at complex dialogue, multilingual tasks, reasoning, and assistants.",
|
||||
@@ -1399,6 +1305,7 @@
|
||||
"z-ai/glm4.7.description": "GLM-4.7 is Zhipu latest flagship model, enhanced for Agentic Coding scenarios with improved coding capabilities.",
|
||||
"z-ai/glm5.description": "GLM-5 is Zhipu AI's new flagship foundation model for agent engineering, achieving open-source SOTA performance in coding and agent capabilities. It matches Claude Opus 4.5 in performance.",
|
||||
"z-image-turbo.description": "Z-Image is a lightweight text-to-image generation model that can rapidly produce images, supports both Chinese and English text rendering, and flexibly adapts to multiple resolutions and aspect ratios.",
|
||||
"zai-glm-4.7.description": "This model delivers strong coding performance with advanced reasoning capabilities, superior tool use, and enhanced real-world performance in agentic coding applications.",
|
||||
"zai-org/GLM-4.5-Air.description": "GLM-4.5-Air is a base model for agent applications using a Mixture-of-Experts architecture. It is optimized for tool use, web browsing, software engineering, and frontend coding, and integrates with code agents like Claude Code and Roo Code. It uses hybrid reasoning to handle both complex reasoning and everyday scenarios.",
|
||||
"zai-org/GLM-4.5V.description": "GLM-4.5V is Zhipu AI’s latest VLM, built on the GLM-4.5-Air flagship text model (106B total, 12B active) with an MoE architecture for strong performance at lower cost. It follows the GLM-4.1V-Thinking path and adds 3D-RoPE to improve 3D spatial reasoning. Optimized through pretraining, SFT, and RL, it handles images, video, and long documents and ranks top among open models on 41 public multimodal benchmarks. A Thinking mode toggle lets users balance speed and depth.",
|
||||
"zai-org/GLM-4.6.description": "Compared to GLM-4.5, GLM-4.6 expands context from 128K to 200K for more complex agent tasks. It scores higher on code benchmarks and shows stronger real-world performance in apps like Claude Code, Cline, Roo Code, and Kilo Code, including better frontend page generation. Reasoning is improved and tool use is supported during reasoning, strengthening overall capability. It integrates better into agent frameworks, improves tool/search agents, and has more human-preferred writing style and roleplay naturalness.",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user