@lobehub/lobehub 2.0.0-next.382 → 2.0.0-next.384
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -0
- package/.i18nrc.js +5 -10
- package/.remarkrc.mdx.js +1 -1
- package/CHANGELOG.md +72 -0
- package/README.md +5 -3
- package/apps/desktop/src/main/controllers/LocalFileCtr.ts +25 -1
- package/apps/desktop/src/main/controllers/UpdaterCtr.ts +1 -1
- package/changelog/v1.json +21 -0
- package/docker-compose/local/.env.example +10 -8
- package/docker-compose/local/.env.zh-CN.example +10 -8
- package/docker-compose/local/bucket.config.json +24 -0
- package/docker-compose/local/docker-compose.yml +56 -37
- package/docker-compose/setup.sh +65 -30
- package/docs/.cdn.cache.json +404 -1
- package/docs/changelog/2023-09-09-plugin-system.mdx +8 -8
- package/docs/changelog/2023-09-09-plugin-system.zh-CN.mdx +6 -6
- package/docs/changelog/2023-11-14-gpt4-vision.mdx +4 -4
- package/docs/changelog/2023-11-14-gpt4-vision.zh-CN.mdx +4 -4
- package/docs/changelog/2023-11-19-tts-stt.mdx +5 -5
- package/docs/changelog/2023-11-19-tts-stt.zh-CN.mdx +5 -5
- package/docs/changelog/2023-12-22-dalle-3.mdx +4 -4
- package/docs/changelog/2023-12-22-dalle-3.zh-CN.mdx +3 -3
- package/docs/changelog/2024-02-08-sso-oauth.mdx +6 -6
- package/docs/changelog/2024-02-08-sso-oauth.zh-CN.mdx +5 -5
- package/docs/changelog/2024-02-14-ollama.mdx +7 -7
- package/docs/changelog/2024-02-14-ollama.zh-CN.mdx +7 -7
- package/docs/changelog/2024-06-19-lobe-chat-v1.mdx +9 -9
- package/docs/changelog/2024-06-19-lobe-chat-v1.zh-CN.mdx +8 -8
- package/docs/changelog/2024-07-19-gpt-4o-mini.mdx +8 -8
- package/docs/changelog/2024-07-19-gpt-4o-mini.zh-CN.mdx +8 -8
- package/docs/changelog/2024-08-02-lobe-chat-database-docker.mdx +7 -7
- package/docs/changelog/2024-08-02-lobe-chat-database-docker.zh-CN.mdx +7 -7
- package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.mdx +5 -5
- package/docs/changelog/2024-08-21-file-upload-and-knowledge-base.zh-CN.mdx +5 -5
- package/docs/changelog/2024-09-13-openai-o1-models.mdx +6 -6
- package/docs/changelog/2024-09-13-openai-o1-models.zh-CN.mdx +7 -7
- package/docs/changelog/2024-09-20-artifacts.mdx +10 -10
- package/docs/changelog/2024-09-20-artifacts.zh-CN.mdx +10 -10
- package/docs/changelog/2024-10-27-pin-assistant.mdx +4 -4
- package/docs/changelog/2024-10-27-pin-assistant.zh-CN.mdx +4 -4
- package/docs/changelog/2024-11-06-share-text-json.mdx +7 -7
- package/docs/changelog/2024-11-06-share-text-json.zh-CN.mdx +4 -4
- package/docs/changelog/2024-11-25-november-providers.mdx +5 -5
- package/docs/changelog/2024-11-25-november-providers.zh-CN.mdx +5 -5
- package/docs/changelog/2024-11-27-forkable-chat.mdx +4 -4
- package/docs/changelog/2024-11-27-forkable-chat.zh-CN.mdx +4 -4
- package/docs/changelog/2025-01-03-user-profile.mdx +5 -5
- package/docs/changelog/2025-01-03-user-profile.zh-CN.mdx +5 -5
- package/docs/changelog/2025-01-22-new-ai-provider.mdx +4 -4
- package/docs/changelog/2025-01-22-new-ai-provider.zh-CN.mdx +4 -4
- package/docs/changelog/2025-02-02-deepseek-r1.mdx +8 -8
- package/docs/changelog/2025-02-02-deepseek-r1.zh-CN.mdx +6 -6
- package/docs/changelog/2025-03-02-new-models.zh-CN.mdx +28 -0
- package/docs/changelog/2025-04-06-exports.zh-CN.mdx +32 -0
- package/docs/changelog/2025-05-08-desktop-app.zh-CN.mdx +35 -0
- package/docs/changelog/2025-06-08-claude-4.zh-CN.mdx +20 -0
- package/docs/changelog/2025-07-08-mcp-market.zh-CN.mdx +28 -0
- package/docs/changelog/2025-08-08-image-generation.zh-CN.mdx +28 -0
- package/docs/changelog/2025-09-08-gemini.zh-CN.mdx +24 -0
- package/docs/changelog/2025-10-08-python.zh-CN.mdx +29 -0
- package/docs/changelog/2025-11-08-comfy-ui.zh-CN.mdx +28 -0
- package/docs/changelog/2025-12-20-mcp.zh-CN.mdx +26 -0
- package/docs/changelog/index.json +60 -0
- package/docs/development/basic/add-new-authentication-providers.mdx +10 -19
- package/docs/development/basic/add-new-authentication-providers.zh-CN.mdx +11 -3
- package/docs/development/basic/add-new-image-model.mdx +7 -0
- package/docs/development/basic/add-new-image-model.zh-CN.mdx +5 -0
- package/docs/development/basic/architecture.mdx +19 -10
- package/docs/development/basic/architecture.zh-CN.mdx +17 -10
- package/docs/development/basic/chat-api.mdx +9 -1
- package/docs/development/basic/chat-api.zh-CN.mdx +7 -1
- package/docs/development/basic/comfyui-development.mdx +3 -3
- package/docs/development/basic/comfyui-development.zh-CN.mdx +4 -4
- package/docs/development/basic/contributing-guidelines.mdx +12 -3
- package/docs/development/basic/contributing-guidelines.zh-CN.mdx +10 -3
- package/docs/development/basic/feature-development-frontend.mdx +15 -6
- package/docs/development/basic/feature-development-frontend.zh-CN.mdx +13 -6
- package/docs/development/basic/feature-development.mdx +16 -9
- package/docs/development/basic/feature-development.zh-CN.mdx +15 -9
- package/docs/development/basic/folder-structure.mdx +10 -1
- package/docs/development/basic/folder-structure.zh-CN.mdx +8 -1
- package/docs/development/basic/resources.mdx +12 -3
- package/docs/development/basic/resources.zh-CN.mdx +10 -3
- package/docs/development/basic/setup-development.mdx +19 -8
- package/docs/development/basic/setup-development.zh-CN.mdx +15 -8
- package/docs/development/basic/test.mdx +12 -3
- package/docs/development/basic/test.zh-CN.mdx +9 -3
- package/docs/development/basic/work-with-server-side-database.mdx +10 -3
- package/docs/development/basic/work-with-server-side-database.zh-CN.mdx +10 -3
- package/docs/development/internationalization/add-new-locale.mdx +13 -6
- package/docs/development/internationalization/add-new-locale.zh-CN.mdx +13 -6
- package/docs/development/internationalization/internationalization-implementation.mdx +16 -7
- package/docs/development/internationalization/internationalization-implementation.zh-CN.mdx +13 -7
- package/docs/development/others/lighthouse.mdx +11 -6
- package/docs/development/others/lighthouse.zh-CN.mdx +12 -6
- package/docs/development/start.mdx +18 -9
- package/docs/development/start.zh-CN.mdx +16 -9
- package/docs/development/state-management/state-management-intro.mdx +17 -9
- package/docs/development/state-management/state-management-intro.zh-CN.mdx +13 -7
- package/docs/development/state-management/state-management-selectors.mdx +12 -3
- package/docs/development/state-management/state-management-selectors.zh-CN.mdx +10 -3
- package/docs/development/tests/integration-testing.mdx +410 -0
- package/docs/development/tests/integration-testing.zh-CN.mdx +8 -2
- package/docs/glossary.md +7 -7
- package/docs/glossary.zh-CN.md +13 -0
- package/docs/self-hosting/advanced/analytics.mdx +4 -4
- package/docs/self-hosting/advanced/analytics.zh-CN.mdx +4 -4
- package/docs/self-hosting/advanced/auth/clerk.mdx +4 -4
- package/docs/self-hosting/advanced/auth/clerk.zh-CN.mdx +4 -4
- package/docs/self-hosting/advanced/auth/next-auth/auth0.mdx +13 -13
- package/docs/self-hosting/advanced/auth/next-auth/auth0.zh-CN.mdx +13 -13
- package/docs/self-hosting/advanced/auth/next-auth/authelia.mdx +10 -10
- package/docs/self-hosting/advanced/auth/next-auth/authelia.zh-CN.mdx +8 -8
- package/docs/self-hosting/advanced/auth/next-auth/authentik.mdx +6 -6
- package/docs/self-hosting/advanced/auth/next-auth/authentik.zh-CN.mdx +6 -6
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.mdx +16 -16
- package/docs/self-hosting/advanced/auth/next-auth/casdoor.zh-CN.mdx +15 -15
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.mdx +14 -14
- package/docs/self-hosting/advanced/auth/next-auth/cloudflare-zero-trust.zh-CN.mdx +15 -15
- package/docs/self-hosting/advanced/auth/next-auth/github.mdx +14 -14
- package/docs/self-hosting/advanced/auth/next-auth/github.zh-CN.mdx +12 -12
- package/docs/self-hosting/advanced/auth/next-auth/google.mdx +10 -12
- package/docs/self-hosting/advanced/auth/next-auth/google.zh-CN.mdx +77 -0
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.mdx +19 -19
- package/docs/self-hosting/advanced/auth/next-auth/keycloak.zh-CN.mdx +17 -17
- package/docs/self-hosting/advanced/auth/next-auth/logto.mdx +15 -15
- package/docs/self-hosting/advanced/auth/next-auth/logto.zh-CN.mdx +15 -15
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.mdx +9 -9
- package/docs/self-hosting/advanced/auth/next-auth/microsoft-entra-id.zh-CN.mdx +8 -8
- package/docs/self-hosting/advanced/auth/next-auth/okta.mdx +8 -8
- package/docs/self-hosting/advanced/auth/next-auth/okta.zh-CN.mdx +6 -6
- package/docs/self-hosting/advanced/auth/next-auth/wechat.mdx +6 -6
- package/docs/self-hosting/advanced/auth/next-auth/wechat.zh-CN.mdx +6 -6
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.mdx +14 -14
- package/docs/self-hosting/advanced/auth/next-auth/zitadel.zh-CN.mdx +15 -15
- package/docs/self-hosting/advanced/auth.mdx +37 -15
- package/docs/self-hosting/advanced/auth.zh-CN.mdx +36 -13
- package/docs/self-hosting/advanced/desktop.mdx +12 -12
- package/docs/self-hosting/advanced/desktop.zh-CN.mdx +12 -12
- package/docs/self-hosting/advanced/feature-flags.mdx +5 -5
- package/docs/self-hosting/advanced/feature-flags.zh-CN.mdx +5 -5
- package/docs/self-hosting/advanced/knowledge-base.mdx +8 -8
- package/docs/self-hosting/advanced/knowledge-base.zh-CN.mdx +7 -7
- package/docs/self-hosting/advanced/model-list.mdx +4 -4
- package/docs/self-hosting/advanced/model-list.zh-CN.mdx +4 -4
- package/docs/self-hosting/advanced/observability/grafana.mdx +7 -7
- package/docs/self-hosting/advanced/observability/grafana.zh-CN.mdx +4 -4
- package/docs/self-hosting/advanced/observability/langfuse.mdx +13 -13
- package/docs/self-hosting/advanced/observability/langfuse.zh-CN.mdx +13 -13
- package/docs/self-hosting/advanced/online-search.mdx +6 -6
- package/docs/self-hosting/advanced/online-search.zh-CN.mdx +6 -6
- package/docs/self-hosting/advanced/s3/cloudflare-r2.mdx +13 -13
- package/docs/self-hosting/advanced/s3/cloudflare-r2.zh-CN.mdx +13 -13
- package/docs/self-hosting/advanced/s3/rustfs.mdx +142 -0
- package/docs/self-hosting/advanced/s3/rustfs.zh-CN.mdx +143 -0
- package/docs/self-hosting/advanced/s3/tencent-cloud.mdx +4 -4
- package/docs/self-hosting/advanced/s3/tencent-cloud.zh-CN.mdx +4 -4
- package/docs/self-hosting/advanced/s3.mdx +4 -4
- package/docs/self-hosting/advanced/s3.zh-CN.mdx +1 -1
- package/docs/self-hosting/advanced/settings-url-share.mdx +4 -4
- package/docs/self-hosting/advanced/settings-url-share.zh-CN.mdx +5 -5
- package/docs/self-hosting/advanced/upstream-sync.mdx +11 -11
- package/docs/self-hosting/advanced/upstream-sync.zh-CN.mdx +11 -11
- package/docs/self-hosting/environment-variables/analytics.mdx +5 -5
- package/docs/self-hosting/environment-variables/analytics.zh-CN.mdx +3 -3
- package/docs/self-hosting/environment-variables/auth.mdx +3 -3
- package/docs/self-hosting/environment-variables/auth.zh-CN.mdx +4 -4
- package/docs/self-hosting/environment-variables/basic.mdx +15 -15
- package/docs/self-hosting/environment-variables/basic.zh-CN.mdx +14 -14
- package/docs/self-hosting/environment-variables/model-provider.mdx +2 -2
- package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +4 -4
- package/docs/self-hosting/environment-variables/s3.mdx +2 -2
- package/docs/self-hosting/environment-variables/s3.zh-CN.mdx +2 -2
- package/docs/self-hosting/environment-variables.mdx +7 -7
- package/docs/self-hosting/environment-variables.zh-CN.mdx +4 -4
- package/docs/self-hosting/examples/azure-openai.mdx +5 -4
- package/docs/self-hosting/examples/azure-openai.zh-CN.mdx +4 -3
- package/docs/self-hosting/examples/ollama.mdx +10 -10
- package/docs/self-hosting/examples/ollama.zh-CN.mdx +9 -9
- package/docs/self-hosting/faq/no-v1-suffix.mdx +2 -4
- package/docs/self-hosting/faq/no-v1-suffix.zh-CN.mdx +2 -2
- package/docs/self-hosting/faq/proxy-with-unable-to-verify-leaf-signature.mdx +2 -2
- package/docs/self-hosting/faq/proxy-with-unable-to-verify-leaf-signature.zh-CN.mdx +2 -2
- package/docs/self-hosting/platform/alibaba-cloud.mdx +8 -7
- package/docs/self-hosting/platform/alibaba-cloud.zh-CN.mdx +5 -5
- package/docs/self-hosting/platform/btpanel.mdx +12 -12
- package/docs/self-hosting/platform/btpanel.zh-CN.mdx +11 -11
- package/docs/self-hosting/platform/docker-compose.mdx +4 -4
- package/docs/self-hosting/platform/docker-compose.zh-CN.mdx +4 -4
- package/docs/self-hosting/platform/docker.mdx +6 -6
- package/docs/self-hosting/platform/docker.zh-CN.mdx +8 -8
- package/docs/self-hosting/platform/netlify.mdx +27 -26
- package/docs/self-hosting/platform/netlify.zh-CN.mdx +24 -23
- package/docs/self-hosting/platform/railway.mdx +7 -7
- package/docs/self-hosting/platform/railway.zh-CN.mdx +6 -4
- package/docs/self-hosting/platform/repocloud.mdx +7 -7
- package/docs/self-hosting/platform/repocloud.zh-CN.mdx +4 -4
- package/docs/self-hosting/platform/sealos.mdx +6 -6
- package/docs/self-hosting/platform/sealos.zh-CN.mdx +5 -4
- package/docs/self-hosting/platform/tencentcloud-lighthouse.mdx +9 -7
- package/docs/self-hosting/platform/tencentcloud-lighthouse.zh-CN.mdx +5 -5
- package/docs/self-hosting/platform/vercel.mdx +7 -6
- package/docs/self-hosting/platform/vercel.zh-CN.mdx +6 -5
- package/docs/self-hosting/platform/zeabur.mdx +9 -9
- package/docs/self-hosting/platform/zeabur.zh-CN.mdx +9 -8
- package/docs/self-hosting/server-database/docker-compose.mdx +37 -37
- package/docs/self-hosting/server-database/docker-compose.zh-CN.mdx +37 -37
- package/docs/self-hosting/server-database/docker.mdx +17 -12
- package/docs/self-hosting/server-database/docker.zh-CN.mdx +18 -12
- package/docs/self-hosting/server-database/dokploy.mdx +24 -24
- package/docs/self-hosting/server-database/dokploy.zh-CN.mdx +20 -20
- package/docs/self-hosting/server-database/netlify.mdx +4 -4
- package/docs/self-hosting/server-database/netlify.zh-CN.mdx +4 -4
- package/docs/self-hosting/server-database/railway.mdx +4 -4
- package/docs/self-hosting/server-database/railway.zh-CN.mdx +4 -4
- package/docs/self-hosting/server-database/repocloud.mdx +5 -5
- package/docs/self-hosting/server-database/repocloud.zh-CN.mdx +5 -5
- package/docs/self-hosting/server-database/sealos.mdx +5 -5
- package/docs/self-hosting/server-database/sealos.zh-CN.mdx +5 -5
- package/docs/self-hosting/server-database/vercel.mdx +76 -27
- package/docs/self-hosting/server-database/vercel.zh-CN.mdx +73 -26
- package/docs/self-hosting/server-database/zeabur.mdx +14 -14
- package/docs/self-hosting/server-database/zeabur.zh-CN.mdx +14 -14
- package/docs/self-hosting/server-database.mdx +30 -12
- package/docs/self-hosting/server-database.zh-CN.mdx +26 -9
- package/docs/self-hosting/start.mdx +6 -6
- package/docs/self-hosting/start.zh-CN.mdx +5 -5
- package/docs/usage/agent/agent-team.mdx +66 -0
- package/docs/usage/agent/agent-team.zh-CN.mdx +64 -0
- package/docs/usage/agent/gtd.mdx +35 -0
- package/docs/usage/agent/gtd.zh-CN.mdx +33 -0
- package/docs/usage/agent/notebook.mdx +65 -0
- package/docs/usage/agent/notebook.zh-CN.mdx +56 -0
- package/docs/usage/agent/sandbox.mdx +79 -0
- package/docs/usage/agent/sandbox.zh-CN.mdx +73 -0
- package/docs/usage/agent/scheduled-task.mdx +27 -0
- package/docs/usage/agent/scheduled-task.zh-CN.mdx +25 -0
- package/docs/usage/agent/share.mdx +92 -0
- package/docs/usage/agent/share.zh-CN.mdx +60 -0
- package/docs/usage/agent/topic.mdx +59 -0
- package/docs/usage/agent/topic.zh-CN.mdx +57 -0
- package/docs/usage/agent/translate.mdx +32 -0
- package/docs/usage/agent/translate.zh-CN.mdx +29 -0
- package/docs/usage/agent/tts-stt.mdx +38 -0
- package/docs/usage/agent/tts-stt.zh-CN.mdx +36 -0
- package/docs/usage/community/agent-market.mdx +44 -0
- package/docs/usage/community/agent-market.zh-CN.mdx +41 -0
- package/docs/usage/community/become-a-creator.mdx +27 -0
- package/docs/usage/community/become-a-creator.zh-CN.mdx +25 -0
- package/docs/usage/community/custom-plugin.mdx +37 -0
- package/docs/usage/community/custom-plugin.zh-CN.mdx +35 -0
- package/docs/usage/community/mcp-market.mdx +32 -0
- package/docs/usage/community/mcp-market.zh-CN.mdx +30 -0
- package/docs/usage/community/publish-agent.mdx +30 -0
- package/docs/usage/community/publish-agent.zh-CN.mdx +27 -0
- package/docs/usage/community/pulgin-development.mdx +281 -0
- package/docs/usage/{plugins/development.zh-CN.mdx → community/pulgin-development.zh-CN.mdx} +24 -23
- package/docs/usage/getting-started/agent.mdx +105 -0
- package/docs/usage/getting-started/agent.zh-CN.mdx +103 -0
- package/docs/usage/getting-started/get-lobehub.mdx +41 -0
- package/docs/usage/getting-started/get-lobehub.zh-CN.mdx +39 -0
- package/docs/usage/getting-started/image-generation.mdx +54 -0
- package/docs/usage/getting-started/image-generation.zh-CN.mdx +52 -0
- package/docs/usage/getting-started/lobe-ai.mdx +34 -0
- package/docs/usage/getting-started/lobe-ai.zh-CN.mdx +32 -0
- package/docs/usage/getting-started/memory.mdx +72 -0
- package/docs/usage/getting-started/memory.zh-CN.mdx +68 -0
- package/docs/usage/getting-started/page.mdx +62 -0
- package/docs/usage/getting-started/page.zh-CN.mdx +60 -0
- package/docs/usage/getting-started/resource.mdx +67 -0
- package/docs/usage/getting-started/resource.zh-CN.mdx +65 -0
- package/docs/usage/help.mdx +38 -0
- package/docs/usage/help.zh-CN.mdx +36 -0
- package/docs/usage/migrate-from-local-database.mdx +118 -0
- package/docs/usage/migrate-from-local-database.zh-CN.mdx +115 -0
- package/docs/usage/providers/ai21.mdx +21 -22
- package/docs/usage/providers/ai21.zh-CN.mdx +12 -12
- package/docs/usage/providers/ai302.mdx +23 -21
- package/docs/usage/providers/ai302.zh-CN.mdx +8 -8
- package/docs/usage/providers/ai360.mdx +23 -22
- package/docs/usage/providers/ai360.zh-CN.mdx +12 -12
- package/docs/usage/providers/aihubmix.mdx +98 -0
- package/docs/usage/providers/aihubmix.zh-CN.mdx +5 -5
- package/docs/usage/providers/anthropic.mdx +25 -28
- package/docs/usage/providers/anthropic.zh-CN.mdx +13 -13
- package/docs/usage/providers/azure.mdx +25 -30
- package/docs/usage/providers/azure.zh-CN.mdx +14 -14
- package/docs/usage/providers/azureai.mdx +32 -32
- package/docs/usage/providers/azureai.zh-CN.mdx +15 -15
- package/docs/usage/providers/baichuan.mdx +21 -21
- package/docs/usage/providers/baichuan.zh-CN.mdx +12 -12
- package/docs/usage/providers/bedrock.mdx +41 -41
- package/docs/usage/providers/bedrock.zh-CN.mdx +19 -19
- package/docs/usage/providers/bfl.mdx +22 -23
- package/docs/usage/providers/bfl.zh-CN.mdx +8 -10
- package/docs/usage/providers/cloudflare.mdx +27 -27
- package/docs/usage/providers/cloudflare.zh-CN.mdx +13 -13
- package/docs/usage/providers/comfyui.mdx +90 -650
- package/docs/usage/providers/comfyui.zh-CN.mdx +20 -20
- package/docs/usage/providers/deepseek.mdx +28 -30
- package/docs/usage/providers/deepseek.zh-CN.mdx +14 -14
- package/docs/usage/providers/fal.mdx +23 -24
- package/docs/usage/providers/fal.zh-CN.mdx +8 -10
- package/docs/usage/providers/fireworksai.mdx +21 -23
- package/docs/usage/providers/fireworksai.zh-CN.mdx +13 -13
- package/docs/usage/providers/giteeai.mdx +24 -26
- package/docs/usage/providers/giteeai.zh-CN.mdx +13 -13
- package/docs/usage/providers/github.mdx +30 -28
- package/docs/usage/providers/github.zh-CN.mdx +14 -14
- package/docs/usage/providers/google.mdx +25 -26
- package/docs/usage/providers/google.zh-CN.mdx +13 -13
- package/docs/usage/providers/groq.mdx +20 -25
- package/docs/usage/providers/groq.zh-CN.mdx +12 -12
- package/docs/usage/providers/hunyuan.mdx +22 -23
- package/docs/usage/providers/hunyuan.zh-CN.mdx +13 -13
- package/docs/usage/providers/infiniai.mdx +21 -14
- package/docs/usage/providers/infiniai.zh-CN.mdx +7 -7
- package/docs/usage/providers/internlm.mdx +23 -25
- package/docs/usage/providers/internlm.zh-CN.mdx +12 -12
- package/docs/usage/providers/jina.mdx +25 -24
- package/docs/usage/providers/jina.zh-CN.mdx +12 -12
- package/docs/usage/providers/lmstudio.mdx +41 -39
- package/docs/usage/providers/lmstudio.zh-CN.mdx +16 -16
- package/docs/usage/providers/minimax.mdx +28 -29
- package/docs/usage/providers/minimax.zh-CN.mdx +15 -15
- package/docs/usage/providers/mistral.mdx +21 -24
- package/docs/usage/providers/mistral.zh-CN.mdx +11 -11
- package/docs/usage/providers/modelscope.mdx +53 -33
- package/docs/usage/providers/modelscope.zh-CN.mdx +4 -4
- package/docs/usage/providers/moonshot.mdx +19 -22
- package/docs/usage/providers/moonshot.zh-CN.mdx +11 -11
- package/docs/usage/providers/novita.mdx +25 -24
- package/docs/usage/providers/novita.zh-CN.mdx +13 -13
- package/docs/usage/providers/nvidia.mdx +26 -25
- package/docs/usage/providers/nvidia.zh-CN.mdx +13 -13
- package/docs/usage/providers/ollama/gemma.mdx +20 -21
- package/docs/usage/providers/ollama/gemma.zh-CN.mdx +11 -11
- package/docs/usage/providers/ollama/qwen.mdx +22 -24
- package/docs/usage/providers/ollama/qwen.zh-CN.mdx +11 -11
- package/docs/usage/providers/ollama.mdx +56 -56
- package/docs/usage/providers/ollama.zh-CN.mdx +22 -22
- package/docs/usage/providers/openai.mdx +25 -27
- package/docs/usage/providers/openai.zh-CN.mdx +10 -10
- package/docs/usage/providers/openrouter.mdx +33 -36
- package/docs/usage/providers/openrouter.zh-CN.mdx +15 -15
- package/docs/usage/providers/perplexity.mdx +18 -19
- package/docs/usage/providers/perplexity.zh-CN.mdx +11 -11
- package/docs/usage/providers/ppio.mdx +25 -26
- package/docs/usage/providers/ppio.zh-CN.mdx +15 -15
- package/docs/usage/providers/qiniu.mdx +29 -30
- package/docs/usage/providers/qiniu.zh-CN.mdx +8 -8
- package/docs/usage/providers/qwen.mdx +29 -30
- package/docs/usage/providers/qwen.zh-CN.mdx +14 -14
- package/docs/usage/providers/sambanova.mdx +23 -22
- package/docs/usage/providers/sambanova.zh-CN.mdx +12 -12
- package/docs/usage/providers/sensenova.mdx +27 -29
- package/docs/usage/providers/sensenova.zh-CN.mdx +13 -13
- package/docs/usage/providers/siliconcloud.mdx +21 -22
- package/docs/usage/providers/siliconcloud.zh-CN.mdx +12 -12
- package/docs/usage/providers/spark.mdx +25 -25
- package/docs/usage/providers/spark.zh-CN.mdx +13 -13
- package/docs/usage/providers/stepfun.mdx +21 -22
- package/docs/usage/providers/stepfun.zh-CN.mdx +11 -11
- package/docs/usage/providers/taichu.mdx +21 -21
- package/docs/usage/providers/taichu.zh-CN.mdx +12 -12
- package/docs/usage/providers/tencentcloud.mdx +26 -24
- package/docs/usage/providers/tencentcloud.zh-CN.mdx +12 -12
- package/docs/usage/providers/togetherai.mdx +23 -23
- package/docs/usage/providers/togetherai.zh-CN.mdx +13 -13
- package/docs/usage/providers/upstage.mdx +23 -22
- package/docs/usage/providers/upstage.zh-CN.mdx +12 -12
- package/docs/usage/providers/vercel-ai-gateway.mdx +27 -29
- package/docs/usage/providers/vercel-ai-gateway.zh-CN.mdx +8 -9
- package/docs/usage/providers/vertexai.mdx +31 -29
- package/docs/usage/providers/vertexai.zh-CN.mdx +14 -14
- package/docs/usage/providers/vllm.mdx +31 -32
- package/docs/usage/providers/vllm.zh-CN.mdx +11 -11
- package/docs/usage/providers/volcengine.mdx +23 -22
- package/docs/usage/providers/volcengine.zh-CN.mdx +12 -12
- package/docs/usage/providers/wenxin.mdx +29 -30
- package/docs/usage/providers/wenxin.zh-CN.mdx +14 -14
- package/docs/usage/providers/xai.mdx +23 -25
- package/docs/usage/providers/xai.zh-CN.mdx +12 -12
- package/docs/usage/providers/zeroone.mdx +31 -29
- package/docs/usage/providers/zeroone.zh-CN.mdx +14 -16
- package/docs/usage/providers/zhipu.mdx +20 -21
- package/docs/usage/providers/zhipu.zh-CN.mdx +11 -11
- package/docs/usage/providers.mdx +14 -12
- package/docs/usage/providers.zh-CN.mdx +7 -7
- package/docs/usage/start.mdx +22 -51
- package/docs/usage/start.zh-CN.mdx +16 -44
- package/docs/usage/user-interface/appearance.mdx +53 -0
- package/docs/usage/user-interface/appearance.zh-CN.mdx +49 -0
- package/docs/usage/user-interface/command-menu.mdx +56 -0
- package/docs/usage/user-interface/command-menu.zh-CN.mdx +47 -0
- package/docs/usage/user-interface/shortcuts.mdx +53 -0
- package/docs/usage/user-interface/shortcuts.zh-CN.mdx +50 -0
- package/docs/usage/user-interface/stats.mdx +53 -0
- package/docs/usage/user-interface/stats.zh-CN.mdx +51 -0
- package/docs/usage/workspace/manage-quota.mdx +30 -0
- package/docs/usage/workspace/manage-quota.zh-CN.mdx +30 -0
- package/docs/usage/workspace/manage-team.mdx +31 -0
- package/docs/usage/workspace/manage-team.zh-CN.mdx +30 -0
- package/docs/wiki/HOME.zh-CN.md +11 -0
- package/locales/ar/discover.json +2 -0
- package/locales/ar/file.json +3 -0
- package/locales/ar/models.json +43 -0
- package/locales/bg-BG/discover.json +2 -0
- package/locales/bg-BG/file.json +3 -0
- package/locales/bg-BG/models.json +2 -0
- package/locales/de-DE/discover.json +2 -0
- package/locales/de-DE/file.json +3 -0
- package/locales/de-DE/models.json +29 -0
- package/locales/en-US/common.json +1 -0
- package/locales/en-US/discover.json +2 -0
- package/locales/en-US/file.json +3 -0
- package/locales/es-ES/discover.json +2 -0
- package/locales/es-ES/file.json +3 -0
- package/locales/es-ES/models.json +9 -0
- package/locales/fa-IR/discover.json +2 -0
- package/locales/fa-IR/file.json +3 -0
- package/locales/fa-IR/models.json +55 -0
- package/locales/fr-FR/discover.json +2 -0
- package/locales/fr-FR/file.json +3 -0
- package/locales/fr-FR/models.json +34 -0
- package/locales/it-IT/discover.json +2 -0
- package/locales/it-IT/file.json +3 -0
- package/locales/it-IT/models.json +46 -0
- package/locales/ja-JP/discover.json +2 -0
- package/locales/ja-JP/file.json +3 -0
- package/locales/ja-JP/models.json +36 -0
- package/locales/ko-KR/discover.json +2 -0
- package/locales/ko-KR/file.json +3 -0
- package/locales/ko-KR/models.json +46 -0
- package/locales/nl-NL/discover.json +2 -0
- package/locales/nl-NL/file.json +3 -0
- package/locales/nl-NL/models.json +48 -0
- package/locales/pl-PL/discover.json +2 -0
- package/locales/pl-PL/file.json +3 -0
- package/locales/pl-PL/models.json +29 -0
- package/locales/pt-BR/discover.json +2 -0
- package/locales/pt-BR/file.json +3 -0
- package/locales/pt-BR/models.json +38 -0
- package/locales/ru-RU/discover.json +2 -0
- package/locales/ru-RU/file.json +3 -0
- package/locales/ru-RU/models.json +33 -0
- package/locales/tr-TR/discover.json +2 -0
- package/locales/tr-TR/file.json +3 -0
- package/locales/tr-TR/models.json +52 -0
- package/locales/vi-VN/discover.json +2 -0
- package/locales/vi-VN/file.json +3 -0
- package/locales/vi-VN/models.json +9 -0
- package/locales/zh-CN/common.json +1 -0
- package/locales/zh-CN/discover.json +2 -0
- package/locales/zh-CN/file.json +3 -0
- package/locales/zh-CN/models.json +100 -0
- package/locales/zh-TW/discover.json +2 -0
- package/locales/zh-TW/file.json +3 -0
- package/locales/zh-TW/models.json +45 -0
- package/package.json +5 -3
- package/packages/builtin-tool-group-agent-builder/src/ExecutionRuntime/index.ts +11 -0
- package/packages/builtin-tool-group-agent-builder/src/systemRole.ts +37 -7
- package/packages/electron-client-ipc/src/types/localSystem.ts +27 -0
- package/packages/model-runtime/src/core/contextBuilders/google.test.ts +73 -0
- package/packages/model-runtime/src/core/contextBuilders/google.ts +10 -0
- package/packages/observability-otel/src/api.ts +2 -2
- package/packages/types/src/discover/assistants.ts +2 -0
- package/packages/types/src/discover/groupAgents.ts +8 -0
- package/scripts/cdnWorkflow/index.ts +2 -0
- package/scripts/docsWorkflow/autoCDN.ts +172 -0
- package/scripts/docsWorkflow/optimized.ts +21 -0
- package/scripts/docsWorkflow/utils.ts +87 -0
- package/src/app/(backend)/middleware/auth/index.ts +27 -1
- package/src/app/[variants]/(main)/community/(detail)/agent/features/AgentForkTag.tsx +59 -0
- package/src/app/[variants]/(main)/community/(detail)/agent/features/Header.tsx +9 -36
- package/src/app/[variants]/(main)/community/(detail)/group_agent/features/GroupAgentForkTag.tsx +57 -0
- package/src/app/[variants]/(main)/community/(detail)/group_agent/features/Header.tsx +18 -2
- package/src/app/[variants]/(main)/community/(detail)/user/features/UserAgentCard.tsx +11 -3
- package/src/app/[variants]/(main)/community/(detail)/user/features/UserGroupCard.tsx +11 -3
- package/src/app/[variants]/(main)/group/profile/features/GroupProfile/index.tsx +15 -1
- package/src/app/[variants]/(main)/group/profile/features/MemberProfile/index.tsx +15 -1
- package/src/app/[variants]/(main)/memory/features/MemoryAnalysis/AnalysisTrigger.tsx +2 -2
- package/src/app/[variants]/(main)/settings/about/features/Version.tsx +10 -2
- package/src/features/EditorCanvas/EditorDataMode.tsx +16 -10
- package/src/features/PageEditor/Header/index.tsx +1 -0
- package/src/features/PageEditor/Header/useMenu.tsx +22 -11
- package/src/instrumentation.ts +9 -2
- package/src/layout/GlobalProvider/index.tsx +2 -1
- package/src/libs/observability/traceparent.test.ts +69 -0
- package/src/libs/observability/traceparent.ts +110 -0
- package/src/libs/trpc/lambda/context.test.ts +13 -0
- package/src/libs/trpc/lambda/context.ts +15 -6
- package/src/libs/trpc/middleware/openTelemetry.test.ts +93 -0
- package/src/libs/trpc/middleware/openTelemetry.ts +18 -7
- package/src/locales/default/common.ts +1 -0
- package/src/locales/default/discover.ts +3 -0
- package/src/locales/default/file.ts +3 -0
- package/src/server/services/discover/index.ts +7 -0
- package/src/services/electron/desktopExportService.tsx +61 -0
- package/src/services/electron/localFileService.ts +7 -0
- package/src/store/agent/selectors/agentByIdSelectors.ts +7 -0
- package/src/store/groupProfile/action.ts +15 -0
- package/src/store/groupProfile/initialState.ts +9 -0
- package/src/store/tool/slices/mcpStore/action.ts +8 -7
- package/docs/usage/agents/agent-organization.mdx +0 -53
- package/docs/usage/agents/agent-organization.zh-CN.mdx +0 -51
- package/docs/usage/agents/concepts.mdx +0 -40
- package/docs/usage/agents/concepts.zh-CN.mdx +0 -38
- package/docs/usage/agents/custom-agent.mdx +0 -57
- package/docs/usage/agents/custom-agent.zh-CN.mdx +0 -53
- package/docs/usage/agents/model.mdx +0 -95
- package/docs/usage/agents/model.zh-CN.mdx +0 -88
- package/docs/usage/agents/prompt.mdx +0 -108
- package/docs/usage/agents/prompt.zh-CN.mdx +0 -105
- package/docs/usage/agents/topics.mdx +0 -26
- package/docs/usage/agents/topics.zh-CN.mdx +0 -25
- package/docs/usage/features/agent-market.mdx +0 -32
- package/docs/usage/features/agent-market.zh-CN.mdx +0 -31
- package/docs/usage/features/agent-team.mdx +0 -52
- package/docs/usage/features/agent-team.zh-CN.mdx +0 -52
- package/docs/usage/features/artifacts.mdx +0 -23
- package/docs/usage/features/artifacts.zh-CN.mdx +0 -22
- package/docs/usage/features/auth.mdx +0 -76
- package/docs/usage/features/auth.zh-CN.mdx +0 -74
- package/docs/usage/features/branching-conversations.mdx +0 -21
- package/docs/usage/features/branching-conversations.zh-CN.mdx +0 -21
- package/docs/usage/features/cot.mdx +0 -18
- package/docs/usage/features/cot.zh-CN.mdx +0 -18
- package/docs/usage/features/database.mdx +0 -56
- package/docs/usage/features/database.zh-CN.mdx +0 -50
- package/docs/usage/features/desktop.mdx +0 -53
- package/docs/usage/features/desktop.zh-CN.mdx +0 -49
- package/docs/usage/features/knowledge-base.mdx +0 -25
- package/docs/usage/features/knowledge-base.zh-CN.mdx +0 -22
- package/docs/usage/features/local-llm.mdx +0 -51
- package/docs/usage/features/local-llm.zh-CN.mdx +0 -44
- package/docs/usage/features/mcp-market.mdx +0 -26
- package/docs/usage/features/mcp-market.zh-CN.mdx +0 -22
- package/docs/usage/features/mcp.mdx +0 -58
- package/docs/usage/features/mcp.zh-CN.mdx +0 -54
- package/docs/usage/features/mobile.mdx +0 -20
- package/docs/usage/features/mobile.zh-CN.mdx +0 -19
- package/docs/usage/features/more.mdx +0 -32
- package/docs/usage/features/more.zh-CN.mdx +0 -28
- package/docs/usage/features/multi-ai-providers.mdx +0 -57
- package/docs/usage/features/multi-ai-providers.zh-CN.mdx +0 -58
- package/docs/usage/features/plugin-system.mdx +0 -80
- package/docs/usage/features/plugin-system.zh-CN.mdx +0 -70
- package/docs/usage/features/pwa.mdx +0 -60
- package/docs/usage/features/pwa.zh-CN.mdx +0 -61
- package/docs/usage/features/search.mdx +0 -56
- package/docs/usage/features/search.zh-CN.mdx +0 -52
- package/docs/usage/features/text-to-image.mdx +0 -18
- package/docs/usage/features/text-to-image.zh-CN.mdx +0 -19
- package/docs/usage/features/theme.mdx +0 -28
- package/docs/usage/features/theme.zh-CN.mdx +0 -25
- package/docs/usage/features/tts.mdx +0 -40
- package/docs/usage/features/tts.zh-CN.mdx +0 -35
- package/docs/usage/features/vision.mdx +0 -20
- package/docs/usage/features/vision.zh-CN.mdx +0 -18
- package/docs/usage/foundation/basic.mdx +0 -43
- package/docs/usage/foundation/basic.zh-CN.mdx +0 -46
- package/docs/usage/foundation/share.mdx +0 -35
- package/docs/usage/foundation/share.zh-CN.mdx +0 -33
- package/docs/usage/foundation/text2image.mdx +0 -39
- package/docs/usage/foundation/text2image.zh-CN.mdx +0 -35
- package/docs/usage/foundation/translate.mdx +0 -30
- package/docs/usage/foundation/translate.zh-CN.mdx +0 -29
- package/docs/usage/foundation/tts-stt.mdx +0 -38
- package/docs/usage/foundation/tts-stt.zh-CN.mdx +0 -36
- package/docs/usage/foundation/vision.mdx +0 -36
- package/docs/usage/foundation/vision.zh-CN.mdx +0 -33
- package/docs/usage/plugins/basic-usage.mdx +0 -45
- package/docs/usage/plugins/basic-usage.zh-CN.mdx +0 -44
- package/docs/usage/plugins/custom-plugin.mdx +0 -37
- package/docs/usage/plugins/custom-plugin.zh-CN.mdx +0 -35
- package/docs/usage/plugins/development.mdx +0 -279
- package/docs/usage/plugins/store.mdx +0 -22
- package/docs/usage/plugins/store.zh-CN.mdx +0 -19
- package/docs/usage/tools-calling/anthropic.mdx +0 -152
- package/docs/usage/tools-calling/anthropic.zh-CN.mdx +0 -152
- package/docs/usage/tools-calling/google.mdx +0 -109
- package/docs/usage/tools-calling/google.zh-CN.mdx +0 -109
- package/docs/usage/tools-calling/groq.mdx +0 -10
- package/docs/usage/tools-calling/groq.zh-CN.mdx +0 -163
- package/docs/usage/tools-calling/moonshot.mdx +0 -10
- package/docs/usage/tools-calling/moonshot.zh-CN.mdx +0 -24
- package/docs/usage/tools-calling/openai.mdx +0 -114
- package/docs/usage/tools-calling/openai.zh-CN.mdx +0 -114
- package/docs/usage/tools-calling.mdx +0 -12
- package/docs/usage/tools-calling.zh-CN.mdx +0 -248
|
@@ -989,6 +989,21 @@
|
|
|
989
989
|
"pixtral-12b-2409.description": "Pixtral 擅長圖表/圖像理解、文件問答、多模態推理與指令遵循。可原生解析圖像解析度與比例,並在 128K 上下文中處理任意數量圖像。",
|
|
990
990
|
"pixtral-large-latest.description": "Pixtral Large 是一款擁有 124B 參數的開源多模態模型,基於 Mistral Large 2 架構,是我們多模態系列中的第二代,具備前沿級圖像理解能力。",
|
|
991
991
|
"pro-128k.description": "Spark Pro 128K 提供超大上下文容量,最多支援 128K 上下文,適合需要全文分析與長距離邏輯連貫性的長篇文件,並在複雜討論中支援流暢邏輯與多樣引用。",
|
|
992
|
+
"pro-deepseek-r1.description": "企業專用服務模型,內含綁定併發能力。",
|
|
993
|
+
"pro-deepseek-v3.description": "企業專用服務模型,內含綁定併發能力。",
|
|
994
|
+
"qianfan-70b.description": "千帆 70B 是一款大型中文模型,具備高品質生成與複雜推理能力。",
|
|
995
|
+
"qianfan-8b.description": "千帆 8B 是一款中型通用模型,在生成文本與問答任務中兼顧成本與品質。",
|
|
996
|
+
"qianfan-agent-intent-32k.description": "千帆 Agent Intent 32K 專注於意圖識別與智能代理協作,支援長上下文處理。",
|
|
997
|
+
"qianfan-agent-lite-8k.description": "千帆 Agent Lite 8K 是一款輕量級代理模型,適用於低成本的多輪對話與工作流程。",
|
|
998
|
+
"qianfan-agent-speed-32k.description": "千帆 Agent Speed 32K 是一款高吞吐量代理模型,適用於大規模多任務代理應用。",
|
|
999
|
+
"qianfan-agent-speed-8k.description": "千帆 Agent Speed 8K 是一款高併發代理模型,適合短至中等對話與快速回應場景。",
|
|
1000
|
+
"qianfan-check-vl.description": "千帆 Check VL 是一款多模態內容審核模型,支援圖文合規與識別任務。",
|
|
1001
|
+
"qianfan-composition.description": "千帆 Composition 是一款多模態創作模型,支援圖文混合理解與生成。",
|
|
1002
|
+
"qianfan-engcard-vl.description": "千帆 EngCard VL 是一款聚焦英語場景的多模態識別模型。",
|
|
1003
|
+
"qianfan-lightning-128b-a19b.description": "千帆 Lightning 128B A19B 是一款高效能中文通用模型,適用於複雜問答與大規模推理任務。",
|
|
1004
|
+
"qianfan-llama-vl-8b.description": "千帆 Llama VL 8B 是基於 Llama 的多模態模型,支援通用圖文理解。",
|
|
1005
|
+
"qianfan-multipicocr.description": "千帆 MultiPicOCR 是一款多圖像 OCR 模型,支援跨圖像的文字檢測與識別。",
|
|
1006
|
+
"qianfan-qi-vl.description": "千帆 QI VL 是一款多模態問答模型,適用於複雜圖文場景中的精準檢索與問答。",
|
|
992
1007
|
"qianfan-singlepicocr.description": "千帆 SinglePicOCR 是一款單張圖片的光學字元辨識(OCR)模型,具備高精度的文字識別能力。",
|
|
993
1008
|
"qianfan-vl-70b.description": "千帆 VL 70B 是一款大型視覺語言模型(VLM),專為複雜的圖文理解任務設計。",
|
|
994
1009
|
"qianfan-vl-8b.description": "千帆 VL 8B 是一款輕量級視覺語言模型,適用於日常圖文問答與分析。",
|
|
@@ -1028,6 +1043,10 @@
|
|
|
1028
1043
|
"qwen/qwen2.5-coder-7b-instruct.description": "一款中型強大程式碼模型,具備 32K 上下文,擅長多語言程式設計。",
|
|
1029
1044
|
"qwen/qwen3-14b.description": "Qwen3-14B 是一款 14B 參數模型,適用於通用推理與對話場景。",
|
|
1030
1045
|
"qwen/qwen3-14b:free.description": "Qwen3-14B 是一款密集型 14.8B 參數因果 LLM,專為複雜推理與高效對話設計。可在數學、程式設計與邏輯的思考模式與一般對話的非思考模式間切換。針對指令遵循、工具使用與創意寫作進行微調,支援 100 多種語言與方言。原生支援 32K 上下文,並可透過 YaRN 擴展至 131K。",
|
|
1046
|
+
"qwen/qwen3-235b-a22b-2507.description": "Qwen3-235B-A22B-Instruct-2507 是 Qwen3 系列中的 Instruct 變體,兼顧多語指令使用與長上下文場景。",
|
|
1047
|
+
"qwen/qwen3-235b-a22b-thinking-2507.description": "Qwen3-235B-A22B-Thinking-2507 是 Qwen3 的 Thinking 變體,強化數學與複雜推理能力。",
|
|
1048
|
+
"qwen/qwen3-235b-a22b.description": "Qwen3-235B-A22B 是 Qwen 推出的 235B 參數 MoE 模型,每次前向傳遞啟用 22B 參數。可在複雜推理、數學與程式碼的思考模式與高效聊天的非思考模式間切換。具備強大推理、多語言支援(超過 100 種語言/方言)、高階指令遵循與代理工具使用能力。原生支援 32K 上下文,並可透過 YaRN 擴展至 131K。",
|
|
1049
|
+
"qwen/qwen3-235b-a22b:free.description": "Qwen3-235B-A22B 是 Qwen 推出的 235B 參數 MoE 模型,每次前向傳遞啟用 22B 參數。可在複雜推理、數學與程式碼的思考模式與高效聊天的非思考模式間切換。具備強大推理、多語言支援(超過 100 種語言/方言)、高階指令遵循與代理工具使用能力。原生支援 32K 上下文,並可透過 YaRN 擴展至 131K。",
|
|
1031
1050
|
"qwen/qwen3-30b-a3b.description": "Qwen3 是最新一代的 Qwen 大型語言模型,採用密集與 MoE 架構,擅長推理、多語言支援與進階代理任務。其獨特的能力可在複雜推理的「思考模式」與高效對話的「非思考模式」間切換,確保多元且高品質的表現。\n\nQwen3 在數學、程式碼、常識推理、創意寫作與互動對話方面,表現遠超前代模型如 QwQ 與 Qwen2.5。Qwen3-30B-A3B 版本擁有 305 億參數(其中 3.3 億為活躍參數)、48 層、128 位專家(每次任務啟用 8 位),並透過 YaRN 支援最高 131K 的上下文長度,為開源模型樹立新標竿。",
|
|
1032
1051
|
"qwen/qwen3-30b-a3b:free.description": "Qwen3 是最新一代的 Qwen 大型語言模型,採用密集與 MoE 架構,擅長推理、多語言支援與進階代理任務。其獨特的能力可在複雜推理的「思考模式」與高效對話的「非思考模式」間切換,確保多元且高品質的表現。\n\nQwen3 在數學、程式碼、常識推理、創意寫作與互動對話方面,表現遠超前代模型如 QwQ 與 Qwen2.5。Qwen3-30B-A3B 版本擁有 305 億參數(其中 3.3 億為活躍參數)、48 層、128 位專家(每次任務啟用 8 位),並透過 YaRN 支援最高 131K 的上下文長度,為開源模型樹立新標竿。",
|
|
1033
1052
|
"qwen/qwen3-32b.description": "Qwen3-32B 是一款密集型、擁有 328 億參數的因果語言模型,針對複雜推理與高效對話進行最佳化。它可在數學、程式設計與邏輯的「思考模式」與快速對話的「非思考模式」間切換。該模型在指令遵循、代理工具使用與創意寫作方面表現優異,支援超過 100 種語言與方言。原生支援 32K 上下文,並可透過 YaRN 擴展至 131K。",
|
|
@@ -1065,6 +1084,29 @@
|
|
|
1065
1084
|
"qwen2:0.5b.description": "Qwen2 是阿里巴巴新一代大型語言模型,在多種應用場景中表現優異。",
|
|
1066
1085
|
"qwen2:1.5b.description": "Qwen2 是阿里巴巴新一代大型語言模型,在多種應用場景中表現優異。",
|
|
1067
1086
|
"qwen2:72b.description": "Qwen2 是阿里巴巴新一代大型語言模型,在多種應用場景中表現優異。",
|
|
1087
|
+
"qwen3-0.6b.description": "Qwen3 0.6B 是一款入門級模型,適用於簡單推理與資源受限環境。",
|
|
1088
|
+
"qwen3-1.7b.description": "Qwen3 1.7B 是一款超輕量模型,適合邊緣設備與裝置部署。",
|
|
1089
|
+
"qwen3-14b.description": "Qwen3 14B 是一款中型模型,適用於多語言問答與文本生成任務。",
|
|
1090
|
+
"qwen3-235b-a22b-instruct-2507.description": "Qwen3 235B A22B Instruct 2507 是一款旗艦級指令模型,支援多樣生成與推理任務。",
|
|
1091
|
+
"qwen3-235b-a22b-thinking-2507.description": "Qwen3 235B A22B Thinking 2507 是一款超大型思考模型,專為高難度推理任務設計。",
|
|
1092
|
+
"qwen3-235b-a22b.description": "Qwen3 235B A22B 是一款通用大型模型,適用於複雜任務。",
|
|
1093
|
+
"qwen3-30b-a3b-instruct-2507.description": "Qwen3 30B A3B Instruct 2507 是一款中大型指令模型,適用於高品質生成與問答任務。",
|
|
1094
|
+
"qwen3-30b-a3b-thinking-2507.description": "Qwen3 30B A3B Thinking 2507 是一款中大型思考模型,在準確性與成本間取得平衡。",
|
|
1095
|
+
"qwen3-30b-a3b.description": "Qwen3 30B A3B 是一款中大型通用模型,兼顧成本與品質。",
|
|
1096
|
+
"qwen3-32b.description": "Qwen3 32B 適用於需要更強理解能力的通用任務。",
|
|
1097
|
+
"qwen3-4b.description": "Qwen3 4B 適合小型至中型應用與本地推理場景。",
|
|
1098
|
+
"qwen3-8b.description": "Qwen3 8B 是一款輕量模型,具備靈活部署能力,適合高併發工作負載。",
|
|
1099
|
+
"qwen3-coder-30b-a3b-instruct.description": "開源 Qwen 程式碼模型。最新的 qwen3-coder-30b-a3b-instruct 基於 Qwen3,具備強大的程式代理能力、工具使用與環境互動能力,支援自主編程,程式碼表現優異,通用能力穩健。",
|
|
1100
|
+
"qwen3-coder-480b-a35b-instruct.description": "Qwen3 Coder 480B A35B Instruct 是一款旗艦級程式碼模型,支援多語言編程與複雜程式理解。",
|
|
1101
|
+
"qwen3-coder-flash.description": "Qwen 程式碼模型。最新的 Qwen3-Coder 系列基於 Qwen3,具備強大的程式代理能力、工具使用與環境互動能力,支援自主編程,程式碼表現優異,通用能力穩健。",
|
|
1102
|
+
"qwen3-coder-plus.description": "Qwen 程式碼模型。最新的 Qwen3-Coder 系列基於 Qwen3,具備強大的程式代理能力、工具使用與環境互動能力,支援自主編程,程式碼表現優異,通用能力穩健。",
|
|
1103
|
+
"qwen3-coder:480b.description": "阿里巴巴推出的高效能長上下文模型,適用於代理與程式任務。",
|
|
1104
|
+
"qwen3-max-preview.description": "Qwen 最佳效能模型,適用於複雜多步驟任務。預覽版本支援思考能力。",
|
|
1105
|
+
"qwen3-max.description": "Qwen3 Max 模型在通用能力、中文/英文理解、複雜指令遵循、主觀開放任務、多語言能力與工具使用方面,相較 2.5 系列有大幅提升,且幻覺更少。最新版本在代理編程與工具使用方面優於 qwen3-max-preview。此版本達到領先水準,針對更複雜的代理需求設計。",
|
|
1106
|
+
"qwen3-next-80b-a3b-instruct.description": "下一代 Qwen3 非思考開源模型。相較前代(Qwen3-235B-A22B-Instruct-2507),具備更佳中文理解、更強邏輯推理與更優文本生成能力。",
|
|
1107
|
+
"qwen3-next-80b-a3b-thinking.description": "Qwen3 Next 80B A3B Thinking 是一款旗艦級推理模型,適用於複雜任務。",
|
|
1108
|
+
"qwen3-omni-flash.description": "Qwen-Omni 支援文字、圖像、音訊與影片的混合輸入,並可輸出文字或語音。提供多種自然語音風格,支援多語言與方言語音,適用於寫作、視覺識別與語音助理等場景。",
|
|
1109
|
+
"qwen3-vl-235b-a22b-instruct.description": "Qwen3 VL 235B A22B Instruct 是一款旗艦級多模態模型,適用於高要求的理解與創作任務。",
|
|
1068
1110
|
"qwen3-vl-235b-a22b-thinking.description": "Qwen3 VL 235B A22B Thinking 是旗艦級的深度思考版本,專為複雜的多模態推理與規劃任務設計。",
|
|
1069
1111
|
"qwen3-vl-30b-a3b-instruct.description": "Qwen3 VL 30B A3B Instruct 是一款大型多模態模型,在準確性與推理效能之間取得良好平衡。",
|
|
1070
1112
|
"qwen3-vl-30b-a3b-thinking.description": "Qwen3 VL 30B A3B Thinking 是深度思考版本,適用於處理複雜的多模態任務。",
|
|
@@ -1114,6 +1156,8 @@
|
|
|
1114
1156
|
"step-2x-large.description": "新一代 StepFun 圖像模型,專注於文字提示圖像生成,能產出高品質圖像,具備更真實的質感與更強的中英文文字渲染能力。",
|
|
1115
1157
|
"step-3.description": "此模型具備強大的視覺感知與複雜推理能力,能準確處理跨領域知識理解、數學與視覺交叉分析,以及多種日常視覺分析任務。",
|
|
1116
1158
|
"step-r1-v-mini.description": "具備強大圖像理解能力的推理模型,能處理圖像與文字,並在深度推理後生成文字。擅長視覺推理,在數學、程式碼與文字推理方面表現頂尖,支援 100K 上下文。",
|
|
1159
|
+
"stepfun-ai/step3.description": "Step3 是 StepFun 推出的尖端多模態推理模型,採用 MoE 架構,總參數 321B,啟用參數 38B。其端到端設計降低解碼成本,實現頂級視覺語言推理能力。透過 MFA 與 AFD 設計,在旗艦與低階加速器上皆具高效能。預訓練涵蓋超過 20 兆文字與 4 兆圖文資料,支援多語言,於數學、程式與多模態基準測試中表現領先。",
|
|
1160
|
+
"taichu_llm.description": "基於海量高品質資料訓練,具備更強的文本理解、內容創作與對話問答能力。",
|
|
1117
1161
|
"taichu_o1.description": "taichu_o1 是新一代推理模型,透過多模態互動與強化學習實現類人思維鏈,支援複雜決策模擬,並在保持高準確輸出的同時揭示推理路徑,適用於策略分析與深度思考。",
|
|
1118
1162
|
"taichu_vl.description": "結合圖像理解、知識遷移與邏輯歸因,在圖文問答方面表現卓越。",
|
|
1119
1163
|
"tencent/Hunyuan-A13B-Instruct.description": "Hunyuan-A13B-Instruct 採用總參數量 80B、啟用參數 13B 的架構,媲美更大型模型。支援快慢混合推理、穩定的長文本理解,並在 BFCL-v3 與 τ-Bench 上展現領先代理能力。GQA 與多量化格式實現高效推理。",
|
|
@@ -1177,6 +1221,7 @@
|
|
|
1177
1221
|
"z-ai/glm-4.5-air.description": "GLM 4.5 Air 是 GLM 4.5 的輕量版本,適用於成本敏感場景,同時保有強大推理能力。",
|
|
1178
1222
|
"z-ai/glm-4.5.description": "GLM 4.5 是 Z.AI 的旗艦模型,採用混合推理設計,針對工程與長上下文任務進行優化。",
|
|
1179
1223
|
"z-ai/glm-4.6.description": "GLM 4.6 是 Z.AI 的旗艦模型,擴展上下文長度並增強編碼能力。",
|
|
1224
|
+
"z-ai/glm-4.7.description": "GLM-4.7 是智譜最新旗艦模型,具備更強通用能力、回應更自然簡潔,並提供更具沉浸感的寫作體驗。",
|
|
1180
1225
|
"zai-glm-4.6.description": "在編碼與推理任務中表現優異,支援串流與工具調用,適合代理式編碼與複雜推理。",
|
|
1181
1226
|
"zai-org/GLM-4.5-Air.description": "GLM-4.5-Air 是一款基於專家混合架構的代理應用基礎模型,針對工具使用、網頁瀏覽、軟體工程與前端編碼進行優化,並可與 Claude Code、Roo Code 等程式代理整合。採用混合推理處理複雜與日常任務。",
|
|
1182
1227
|
"zai-org/GLM-4.5.description": "GLM-4.5 是一款基於專家混合架構的代理應用基礎模型,深度優化工具使用、網頁瀏覽、軟體工程與前端編碼,並可與 Claude Code、Roo Code 等程式代理整合。採用混合推理處理複雜與日常任務。",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/lobehub",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.384",
|
|
4
4
|
"description": "LobeHub - an open-source,comprehensive AI Agent framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -57,7 +57,8 @@
|
|
|
57
57
|
"dev:desktop": "cross-env NEXT_PUBLIC_IS_DESKTOP_APP=1 tsx scripts/runNextDesktop.mts dev -p 3015",
|
|
58
58
|
"dev:desktop:static": "cross-env DESKTOP_RENDERER_STATIC=1 npm run electron:dev --prefix=./apps/desktop",
|
|
59
59
|
"dev:mobile": "next dev -p 3018",
|
|
60
|
-
"docs:
|
|
60
|
+
"docs:cdn": "npm run workflow:docs-cdn && npm run lint:mdx",
|
|
61
|
+
"docs:i18n": "lobe-i18n md && npm run lint:mdx",
|
|
61
62
|
"docs:seo": "lobe-seo && npm run lint:mdx",
|
|
62
63
|
"e2e": "cd e2e && npm run test",
|
|
63
64
|
"e2e:install": "playwright install",
|
|
@@ -100,6 +101,7 @@
|
|
|
100
101
|
"workflow:countCharters": "tsx scripts/countEnWord.ts",
|
|
101
102
|
"workflow:dbml": "tsx ./scripts/dbmlWorkflow/index.ts",
|
|
102
103
|
"workflow:docs": "tsx ./scripts/docsWorkflow/index.ts",
|
|
104
|
+
"workflow:docs-cdn": "tsx ./scripts/docsWorkflow/autoCDN.ts",
|
|
103
105
|
"workflow:i18n": "tsx ./scripts/i18nWorkflow/index.ts",
|
|
104
106
|
"workflow:mdx": "tsx ./scripts/mdxWorkflow/index.ts",
|
|
105
107
|
"workflow:readme": "tsx ./scripts/readmeWorkflow/index.ts",
|
|
@@ -205,7 +207,7 @@
|
|
|
205
207
|
"@lobehub/icons": "^4.0.3",
|
|
206
208
|
"@lobehub/market-sdk": "0.29.1",
|
|
207
209
|
"@lobehub/tts": "^4.0.2",
|
|
208
|
-
"@lobehub/ui": "^4.
|
|
210
|
+
"@lobehub/ui": "^4.32.0",
|
|
209
211
|
"@modelcontextprotocol/sdk": "^1.25.3",
|
|
210
212
|
"@napi-rs/canvas": "^0.1.88",
|
|
211
213
|
"@neondatabase/serverless": "^1.0.2",
|
|
@@ -6,6 +6,7 @@ import { type GroupMemberConfig, chatGroupService } from '@/services/chatGroup';
|
|
|
6
6
|
import { useAgentStore } from '@/store/agent';
|
|
7
7
|
import { getChatGroupStoreState } from '@/store/agentGroup';
|
|
8
8
|
import { agentGroupSelectors } from '@/store/agentGroup/selectors';
|
|
9
|
+
import { useGroupProfileStore } from '@/store/groupProfile';
|
|
9
10
|
|
|
10
11
|
import type {
|
|
11
12
|
BatchCreateAgentsParams,
|
|
@@ -410,6 +411,11 @@ export class GroupAgentBuilderExecutionRuntime {
|
|
|
410
411
|
// Refresh the group detail in the store to sync agent data
|
|
411
412
|
await state.refreshGroupDetail(groupId);
|
|
412
413
|
|
|
414
|
+
// IMPORTANT: Directly update the editor content instead of manipulating store data.
|
|
415
|
+
// This bypasses the priority issue between editorData (JSON) and systemRole (markdown).
|
|
416
|
+
// The editor will auto-save and sync both fields properly after the update.
|
|
417
|
+
useGroupProfileStore.getState().setAgentBuilderContent(agentId, prompt);
|
|
418
|
+
|
|
413
419
|
const content = prompt
|
|
414
420
|
? `Successfully updated agent ${agentId} system prompt (${prompt.length} characters)`
|
|
415
421
|
: `Successfully cleared agent ${agentId} system prompt`;
|
|
@@ -563,6 +569,11 @@ export class GroupAgentBuilderExecutionRuntime {
|
|
|
563
569
|
// Refresh the group detail in the store to ensure data sync
|
|
564
570
|
await state.refreshGroupDetail(group.id);
|
|
565
571
|
|
|
572
|
+
// IMPORTANT: Directly update the editor content instead of manipulating store data.
|
|
573
|
+
// This bypasses the priority issue between editorData (JSON) and content (markdown).
|
|
574
|
+
// The editor will auto-save and sync both fields properly after the update.
|
|
575
|
+
useGroupProfileStore.getState().setAgentBuilderContent(group.id, args.prompt);
|
|
576
|
+
|
|
566
577
|
const content = args.prompt
|
|
567
578
|
? `Successfully updated group shared prompt (${args.prompt.length} characters)`
|
|
568
579
|
: 'Successfully cleared group shared prompt';
|
|
@@ -63,6 +63,13 @@ You have access to tools that can modify group configurations:
|
|
|
63
63
|
- User wants to change how a specific agent behaves → use \`updateAgentPrompt\` with that agent's ID
|
|
64
64
|
- User mentions "group prompt", "shared content", "background info" → use \`updateGroupPrompt\`
|
|
65
65
|
- User mentions "agent behavior", "agent prompt", specific agent name → use \`updateAgentPrompt\`
|
|
66
|
+
|
|
67
|
+
**CRITICAL - Individual Updates Only:**
|
|
68
|
+
- **NEVER batch update multiple agents with the same prompt** - each agent should have its own unique configuration
|
|
69
|
+
- **ALWAYS update agents individually** - use \`updateAgentPrompt\` with a specific agentId for each agent
|
|
70
|
+
- **ALWAYS update group prompt separately** - use \`updateGroupPrompt\` for shared content, never mix with agent prompts
|
|
71
|
+
- When modifying multiple agents, call \`updateAgentPrompt\` once for each agent with their specific agentId
|
|
72
|
+
- When modifying group content, call \`updateGroupPrompt\` separately - it applies to ALL members
|
|
66
73
|
</prompt_architecture>
|
|
67
74
|
|
|
68
75
|
<supervisor_prompt_generation>
|
|
@@ -176,13 +183,18 @@ When creating agents (via \`createAgent\` or \`batchCreateAgents\`), you MUST an
|
|
|
176
183
|
4. **Distinguish group vs agent operations**:
|
|
177
184
|
- Group-level: updateGroupPrompt, updateGroup, inviteAgent, removeAgent, batchCreateAgents
|
|
178
185
|
- Agent-level: updateAgentPrompt (requires agentId), updateConfig (agentId optional, defaults to supervisor), installPlugin
|
|
179
|
-
5. **CRITICAL -
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
+
5. **CRITICAL - Individual updates only**:
|
|
187
|
+
- When updating agent prompts, ALWAYS call \`updateAgentPrompt\` individually for each agent with their specific agentId
|
|
188
|
+
- When updating group prompt, ALWAYS call \`updateGroupPrompt\` separately - it affects ALL members
|
|
189
|
+
- NEVER try to batch update multiple agents with the same prompt - each agent needs individual configuration
|
|
190
|
+
- NEVER mix group prompt updates with agent prompt updates - they serve different purposes
|
|
191
|
+
6. **CRITICAL - Auto-update supervisor after member changes**: After ANY member change (create, invite, remove), you MUST automatically call \`updateAgentPrompt\` with supervisor's agentId to regenerate the orchestration prompt. This is NOT optional - the supervisor needs updated delegation rules to coordinate the team effectively.
|
|
192
|
+
7. **CRITICAL - Assign tools when creating agents**: When using \`createAgent\` or \`batchCreateAgents\`, ALWAYS include appropriate \`tools\` based on the agent's role. Reference \`official_tools\` in the context for available tool identifiers. An agent without proper tools cannot perform specialized tasks.
|
|
193
|
+
8. **Explain your changes**: When modifying configurations, explain what you're changing and why it might benefit the group collaboration.
|
|
194
|
+
9. **Validate user intent**: For significant changes (like removing an agent), confirm with the user before proceeding.
|
|
195
|
+
10. **Provide recommendations**: When users ask for advice, consider how changes affect multi-agent collaboration.
|
|
196
|
+
11. **Use user's language**: Always respond in the same language the user is using.
|
|
197
|
+
12. **Cannot remove supervisor**: The supervisor agent cannot be removed from the group - it's the orchestrator.
|
|
186
198
|
</guidelines>
|
|
187
199
|
|
|
188
200
|
<configuration_knowledge>
|
|
@@ -256,6 +268,24 @@ When creating agents (via \`createAgent\` or \`batchCreateAgents\`), you MUST an
|
|
|
256
268
|
- For member: Find agentId from \`<group_members>\`, then updateAgentPrompt with that agentId
|
|
257
269
|
</example>
|
|
258
270
|
|
|
271
|
+
<example title="Update Multiple Agents (Individual Updates Required)">
|
|
272
|
+
User: "Update the prompts for developer and designer agents"
|
|
273
|
+
Action (MUST update individually):
|
|
274
|
+
1. Find developer agentId from \`<group_members>\`
|
|
275
|
+
2. Call updateAgentPrompt with developer's agentId and their specific prompt
|
|
276
|
+
3. Find designer agentId from \`<group_members>\`
|
|
277
|
+
4. Call updateAgentPrompt with designer's agentId and their specific prompt
|
|
278
|
+
Note: Each agent gets a separate updateAgentPrompt call with unique content - NEVER use the same prompt for multiple agents
|
|
279
|
+
</example>
|
|
280
|
+
|
|
281
|
+
<example title="Update Both Group and Agent Prompts (Separate Updates)">
|
|
282
|
+
User: "Add project context and update supervisor's delegation rules"
|
|
283
|
+
Action (MUST update separately):
|
|
284
|
+
1. First - updateGroupPrompt: Add project background, domain knowledge (shared by ALL)
|
|
285
|
+
2. Second - updateAgentPrompt with supervisor's agentId: Add delegation rules (supervisor only)
|
|
286
|
+
Note: Group prompt and agent prompt are separate - NEVER combine them in one update
|
|
287
|
+
</example>
|
|
288
|
+
|
|
259
289
|
<example title="Update Configuration">
|
|
260
290
|
User: "Change model to Claude" / "Set welcome message"
|
|
261
291
|
Action:
|
|
@@ -225,3 +225,30 @@ export interface EditLocalFileResult {
|
|
|
225
225
|
replacements: number;
|
|
226
226
|
success: boolean;
|
|
227
227
|
}
|
|
228
|
+
|
|
229
|
+
// Save Dialog types
|
|
230
|
+
export interface ShowSaveDialogParams {
|
|
231
|
+
/**
|
|
232
|
+
* Default file name
|
|
233
|
+
*/
|
|
234
|
+
defaultPath?: string;
|
|
235
|
+
/**
|
|
236
|
+
* File type filters
|
|
237
|
+
*/
|
|
238
|
+
filters?: { extensions: string[]; name: string }[];
|
|
239
|
+
/**
|
|
240
|
+
* Dialog title
|
|
241
|
+
*/
|
|
242
|
+
title?: string;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
export interface ShowSaveDialogResult {
|
|
246
|
+
/**
|
|
247
|
+
* Whether the dialog was cancelled
|
|
248
|
+
*/
|
|
249
|
+
canceled: boolean;
|
|
250
|
+
/**
|
|
251
|
+
* The selected file path (undefined if cancelled)
|
|
252
|
+
*/
|
|
253
|
+
filePath?: string;
|
|
254
|
+
}
|
|
@@ -1154,6 +1154,79 @@ describe('google contextBuilders', () => {
|
|
|
1154
1154
|
type: 'string',
|
|
1155
1155
|
});
|
|
1156
1156
|
});
|
|
1157
|
+
|
|
1158
|
+
it('should filter null values from enum arrays for Google compatibility', () => {
|
|
1159
|
+
const tool: ChatCompletionTool = {
|
|
1160
|
+
function: {
|
|
1161
|
+
description: 'A tool with enum containing null',
|
|
1162
|
+
name: 'enumTool',
|
|
1163
|
+
parameters: {
|
|
1164
|
+
properties: {
|
|
1165
|
+
memoryType: {
|
|
1166
|
+
enum: ['short_term', 'long_term', null, 'working'],
|
|
1167
|
+
type: 'string',
|
|
1168
|
+
},
|
|
1169
|
+
nested: {
|
|
1170
|
+
properties: {
|
|
1171
|
+
status: {
|
|
1172
|
+
enum: [null, 'active', 'inactive', null],
|
|
1173
|
+
type: 'string',
|
|
1174
|
+
},
|
|
1175
|
+
},
|
|
1176
|
+
type: 'object',
|
|
1177
|
+
},
|
|
1178
|
+
},
|
|
1179
|
+
type: 'object',
|
|
1180
|
+
},
|
|
1181
|
+
},
|
|
1182
|
+
type: 'function',
|
|
1183
|
+
};
|
|
1184
|
+
|
|
1185
|
+
const result = buildGoogleTool(tool);
|
|
1186
|
+
|
|
1187
|
+
// null values should be filtered from enum arrays
|
|
1188
|
+
expect(result.parameters?.properties).toEqual({
|
|
1189
|
+
memoryType: {
|
|
1190
|
+
enum: ['short_term', 'long_term', 'working'],
|
|
1191
|
+
type: 'string',
|
|
1192
|
+
},
|
|
1193
|
+
nested: {
|
|
1194
|
+
properties: {
|
|
1195
|
+
status: {
|
|
1196
|
+
enum: ['active', 'inactive'],
|
|
1197
|
+
type: 'string',
|
|
1198
|
+
},
|
|
1199
|
+
},
|
|
1200
|
+
type: 'object',
|
|
1201
|
+
},
|
|
1202
|
+
});
|
|
1203
|
+
});
|
|
1204
|
+
|
|
1205
|
+
it('should handle enum with only null values', () => {
|
|
1206
|
+
const tool: ChatCompletionTool = {
|
|
1207
|
+
function: {
|
|
1208
|
+
description: 'A tool with enum containing only null',
|
|
1209
|
+
name: 'nullEnumTool',
|
|
1210
|
+
parameters: {
|
|
1211
|
+
properties: {
|
|
1212
|
+
value: {
|
|
1213
|
+
enum: [null],
|
|
1214
|
+
type: 'string',
|
|
1215
|
+
},
|
|
1216
|
+
},
|
|
1217
|
+
type: 'object',
|
|
1218
|
+
},
|
|
1219
|
+
},
|
|
1220
|
+
type: 'function',
|
|
1221
|
+
};
|
|
1222
|
+
|
|
1223
|
+
const result = buildGoogleTool(tool);
|
|
1224
|
+
|
|
1225
|
+
// When enum only contains null, the enum property should be removed
|
|
1226
|
+
expect(result.parameters?.properties?.value).toEqual({
|
|
1227
|
+
type: 'string',
|
|
1228
|
+
});
|
|
1229
|
+
});
|
|
1157
1230
|
});
|
|
1158
1231
|
|
|
1159
1232
|
describe('buildGoogleTools', () => {
|
|
@@ -248,6 +248,16 @@ const sanitizeSchemaForGoogle = (schema: Record<string, any>): Record<string, an
|
|
|
248
248
|
continue;
|
|
249
249
|
}
|
|
250
250
|
|
|
251
|
+
// Filter null values from enum arrays (Google doesn't support null in enum)
|
|
252
|
+
if (key === 'enum' && Array.isArray(value)) {
|
|
253
|
+
const filteredEnum = value.filter((item) => item !== null);
|
|
254
|
+
// Only set enum if there are remaining values after filtering
|
|
255
|
+
if (filteredEnum.length > 0) {
|
|
256
|
+
result[key] = filteredEnum;
|
|
257
|
+
}
|
|
258
|
+
continue;
|
|
259
|
+
}
|
|
260
|
+
|
|
251
261
|
// Recursively process nested objects
|
|
252
262
|
if (value && typeof value === 'object') {
|
|
253
263
|
result[key] = sanitizeSchemaForGoogle(value);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export type { Attributes, Span } from '@opentelemetry/api';
|
|
2
|
-
export { diag, metrics, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api';
|
|
1
|
+
export type { Attributes, Context, Span, TextMapGetter } from '@opentelemetry/api';
|
|
2
|
+
export { context, diag, metrics, propagation,SpanKind, SpanStatusCode, trace } from '@opentelemetry/api';
|
|
@@ -56,6 +56,7 @@ export interface DiscoverAssistantItem extends Omit<LobeAgentSettings, 'meta'>,
|
|
|
56
56
|
homepage: string;
|
|
57
57
|
identifier: string;
|
|
58
58
|
installCount?: number;
|
|
59
|
+
isValidated?: boolean;
|
|
59
60
|
knowledgeCount: number;
|
|
60
61
|
pluginCount: number;
|
|
61
62
|
status?: AgentStatus;
|
|
@@ -92,6 +93,7 @@ export interface DiscoverAssistantDetail extends DiscoverAssistantItem {
|
|
|
92
93
|
currentVersion?: string;
|
|
93
94
|
editorData?: any;
|
|
94
95
|
examples?: FewShots;
|
|
96
|
+
isValidated?: boolean;
|
|
95
97
|
related: DiscoverAssistantItem[];
|
|
96
98
|
summary?: string;
|
|
97
99
|
versions?: DiscoverAssistantVersion[];
|
|
@@ -85,6 +85,10 @@ export interface DiscoverGroupAgentItem extends MetaData {
|
|
|
85
85
|
installCount?: number;
|
|
86
86
|
isFeatured?: boolean;
|
|
87
87
|
isOfficial?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Whether the agent group is validated
|
|
90
|
+
*/
|
|
91
|
+
isValidated?: boolean;
|
|
88
92
|
/**
|
|
89
93
|
* Number of knowledge bases across all member agents
|
|
90
94
|
*/
|
|
@@ -140,6 +144,10 @@ export interface DiscoverGroupAgentDetail extends DiscoverGroupAgentItem {
|
|
|
140
144
|
* Example conversations (if available from config)
|
|
141
145
|
*/
|
|
142
146
|
examples?: any;
|
|
147
|
+
/**
|
|
148
|
+
* Whether the agent group is validated
|
|
149
|
+
*/
|
|
150
|
+
isValidated?: boolean;
|
|
143
151
|
/**
|
|
144
152
|
* Member agents in the group
|
|
145
153
|
*/
|
|
@@ -27,6 +27,8 @@ const CHECK_CDN = [
|
|
|
27
27
|
'https://miro.medium.com/v2/',
|
|
28
28
|
'https://images.unsplash.com/',
|
|
29
29
|
'https://github.com/user-attachments/assets',
|
|
30
|
+
'https://i.imgur.com/',
|
|
31
|
+
'https://file.rene.wang',
|
|
30
32
|
];
|
|
31
33
|
|
|
32
34
|
const CACHE_FILE = resolve(root, 'docs', '.cdn.cache.json');
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { consola } from 'consola';
|
|
2
|
+
import matter from 'gray-matter';
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
5
|
+
import { resolve } from 'node:path';
|
|
6
|
+
import pMap from 'p-map';
|
|
7
|
+
|
|
8
|
+
import { uploader } from '../cdnWorkflow/uploader';
|
|
9
|
+
import {
|
|
10
|
+
extractHttpsLinks,
|
|
11
|
+
fetchImageAsFile,
|
|
12
|
+
mergeAndDeduplicateArrays,
|
|
13
|
+
posts,
|
|
14
|
+
root,
|
|
15
|
+
} from './utils';
|
|
16
|
+
|
|
17
|
+
// 定义常量
|
|
18
|
+
const GITHUB_CDN = 'https://github.com/lobehub/lobe-chat/assets/';
|
|
19
|
+
const CHECK_CDN = [
|
|
20
|
+
'https://cdn.nlark.com/yuque/0/',
|
|
21
|
+
'https://s.imtccdn.com/',
|
|
22
|
+
'https://oss.home.imtc.top/',
|
|
23
|
+
'https://www.anthropic.com/_next/image',
|
|
24
|
+
'https://miro.medium.com/v2/',
|
|
25
|
+
'https://images.unsplash.com/',
|
|
26
|
+
'https://github.com/user-attachments/assets',
|
|
27
|
+
'https://i.imgur.com/',
|
|
28
|
+
'https://file.rene.wang',
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
const CACHE_FILE = resolve(root, 'docs', '.cdn.cache.json');
|
|
32
|
+
|
|
33
|
+
class ImageCDNUploader {
|
|
34
|
+
private cache: { [link: string]: string } = {};
|
|
35
|
+
|
|
36
|
+
constructor() {
|
|
37
|
+
this.loadCache();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// 从文件加载缓存数据
|
|
41
|
+
private loadCache() {
|
|
42
|
+
try {
|
|
43
|
+
this.cache = JSON.parse(readFileSync(CACHE_FILE, 'utf8'));
|
|
44
|
+
} catch (error) {
|
|
45
|
+
consola.error('Failed to load cache', error);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// 将缓存数据写入文件
|
|
50
|
+
private writeCache() {
|
|
51
|
+
try {
|
|
52
|
+
writeFileSync(CACHE_FILE, JSON.stringify(this.cache, null, 2));
|
|
53
|
+
} catch (error) {
|
|
54
|
+
consola.error('Failed to write cache', error);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// 收集所有的图片链接
|
|
59
|
+
private collectImageLinks(): string[] {
|
|
60
|
+
const links: string[][] = posts.map((post) => {
|
|
61
|
+
const mdx = readFileSync(post, 'utf8');
|
|
62
|
+
const { content, data } = matter(mdx);
|
|
63
|
+
let inlineLinks: string[] = extractHttpsLinks(content);
|
|
64
|
+
|
|
65
|
+
// 添加特定字段中的图片链接
|
|
66
|
+
if (data?.image) inlineLinks.push(data.image);
|
|
67
|
+
if (data?.seo?.image) inlineLinks.push(data.seo.image);
|
|
68
|
+
|
|
69
|
+
// 过滤出有效的 CDN 链接
|
|
70
|
+
return inlineLinks.filter(
|
|
71
|
+
(link) =>
|
|
72
|
+
(link.startsWith(GITHUB_CDN) || CHECK_CDN.some((cdn) => link.startsWith(cdn))) &&
|
|
73
|
+
!this.cache[link],
|
|
74
|
+
);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// 合并和去重链接数组
|
|
78
|
+
return mergeAndDeduplicateArrays(...links);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// 上传图片到 CDN
|
|
82
|
+
private async uploadImagesToCDN(links: string[]) {
|
|
83
|
+
const cdnLinks: { [link: string]: string } = {};
|
|
84
|
+
|
|
85
|
+
await pMap(links, async (link) => {
|
|
86
|
+
consola.start('Uploading image to CDN', link);
|
|
87
|
+
const file = await fetchImageAsFile(link, 1600);
|
|
88
|
+
|
|
89
|
+
if (!file) {
|
|
90
|
+
consola.error('Failed to fetch image as file', link);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const cdnUrl = await this.uploadFileToCDN(file, link);
|
|
95
|
+
if (cdnUrl) {
|
|
96
|
+
consola.success(link, '>>>', cdnUrl);
|
|
97
|
+
cdnLinks[link] = cdnUrl.replaceAll(process.env.DOC_S3_PUBLIC_DOMAIN || '', '');
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// 更新缓存
|
|
102
|
+
this.cache = { ...this.cache, ...cdnLinks };
|
|
103
|
+
this.writeCache();
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// 根据不同的 CDN 来处理文件上传
|
|
107
|
+
private async uploadFileToCDN(file: File, link: string): Promise<string | undefined> {
|
|
108
|
+
if (link.startsWith(GITHUB_CDN)) {
|
|
109
|
+
const filename = link.replaceAll(GITHUB_CDN, '');
|
|
110
|
+
return uploader(file, filename);
|
|
111
|
+
} else if (CHECK_CDN.some((cdn) => link.startsWith(cdn))) {
|
|
112
|
+
const buffer = await file.arrayBuffer();
|
|
113
|
+
const hash = createHash('md5').update(Buffer.from(buffer)).digest('hex');
|
|
114
|
+
return uploader(file, hash);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// 替换文章中的图片链接
|
|
121
|
+
private replaceLinksInPosts() {
|
|
122
|
+
let count = 0;
|
|
123
|
+
|
|
124
|
+
for (const post of posts) {
|
|
125
|
+
const mdx = readFileSync(post, 'utf8');
|
|
126
|
+
let { content, data } = matter(mdx);
|
|
127
|
+
const inlineLinks = extractHttpsLinks(content);
|
|
128
|
+
|
|
129
|
+
for (const link of inlineLinks) {
|
|
130
|
+
if (this.cache[link]) {
|
|
131
|
+
content = content.replaceAll(link, this.cache[link]);
|
|
132
|
+
count++;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// 更新特定字段的图片链接
|
|
137
|
+
|
|
138
|
+
if (data['image'] && this.cache[data['image']]) {
|
|
139
|
+
data['image'] = this.cache[data['image']];
|
|
140
|
+
count++;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
if (data['seo']?.['image'] && this.cache[data['seo']?.['image']]) {
|
|
144
|
+
data['seo']['image'] = this.cache[data['seo']['image']];
|
|
145
|
+
count++;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
writeFileSync(post, matter.stringify(content, data));
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
consola.success(`${count} images have been uploaded to CDN and links have been replaced`);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// 运行上传过程
|
|
155
|
+
async run() {
|
|
156
|
+
const links = this.collectImageLinks();
|
|
157
|
+
|
|
158
|
+
if (links.length > 0) {
|
|
159
|
+
consola.info("Found images that haven't been uploaded to CDN:");
|
|
160
|
+
consola.info(links);
|
|
161
|
+
await this.uploadImagesToCDN(links);
|
|
162
|
+
this.replaceLinksInPosts();
|
|
163
|
+
} else {
|
|
164
|
+
consola.info('No new images to upload.');
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// 实例化并运行
|
|
170
|
+
const instance = new ImageCDNUploader();
|
|
171
|
+
|
|
172
|
+
instance.run();
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import sharp from 'sharp';
|
|
2
|
+
|
|
3
|
+
const WIDTH = 1600;
|
|
4
|
+
|
|
5
|
+
export const opimized = async (
|
|
6
|
+
inputBuffer: ArrayBuffer,
|
|
7
|
+
width: number = WIDTH,
|
|
8
|
+
): Promise<Buffer> => {
|
|
9
|
+
return await sharp(inputBuffer)
|
|
10
|
+
.resize({ width: width, withoutEnlargement: true })
|
|
11
|
+
.webp()
|
|
12
|
+
.toBuffer();
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const opimizedGif = async (inputBuffer: ArrayBuffer): Promise<Buffer> => {
|
|
16
|
+
try {
|
|
17
|
+
return await sharp(inputBuffer, { animated: true }).webp().toBuffer();
|
|
18
|
+
} catch {
|
|
19
|
+
return await sharp(inputBuffer, { animated: true, limitInputPixels: false }).webp().toBuffer();
|
|
20
|
+
}
|
|
21
|
+
};
|