diff --git a/package.json b/package.json index 28a88e38..da8f14ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "moviepilot", - "version": "2.9.5", + "version": "2.9.6", "private": true, "type": "module", "bin": "dist/service.js", diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 67aa8726..bfed863a 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -1292,23 +1292,29 @@ export default { llmProviderHint: 'Select the LLM service provider to use', llmModel: 'LLM Model Name', llmModelHint: 'Specify the LLM model to use, such as gpt-3.5-turbo, deepseek-chat, etc.', + llmMaxContextTokens: 'LLM Max Context Tokens (K)', + llmMaxContextTokensHint: + 'Set the maximum number of context tokens (in thousands) for the LLM. Exceeding this limit will trigger context trimming.', llmApiKey: 'LLM API Key', llmApiKeyHint: 'API key from the LLM service provider for authentication', llmApiKeyPlaceholder: 'Please enter API key', llmBaseUrl: 'LLM Base URL', llmBaseUrlHint: 'Base URL for LLM API, used for custom API endpoints', aiAgentGlobal: 'Global AI Assistant', - aiAgentGlobalHint: 'Enable global AI assistant functionality, all message conversations will be answered by the AI agent without using the /ai command', + aiAgentGlobalHint: + 'Enable global AI assistant functionality, all message conversations will be answered by the AI agent without using the /ai command', advancedSettings: 'Advanced Settings', advancedSettingsDesc: 'System advanced settings, only need to be adjusted in special cases', downloaders: 'Downloaders', downloadersDesc: 'Only the default downloader will be used by default.', aiRecommendEnabled: 'AI Search Recommendation', - aiRecommendEnabledHint: 'Enable AI search recommendation. When enabled, an AI recommendation button will be displayed on the search result page, recommending resources based on user preferences.', + aiRecommendEnabledHint: + 'Enable AI search recommendation. When enabled, an AI recommendation button will be displayed on the search result page, recommending resources based on user preferences.', aiRecommendUserPreference: 'User Preference', aiRecommendUserPreferenceHint: 'Set user preferences for AI recommendation, e.g., 4K WEB-DL Dolby Vision', aiRecommendMaxItems: 'AI Recommendation Analysis Limit', - aiRecommendMaxItemsHint: 'Limit the number of search results sent to the AI assistant for analysis. More items mean slower analysis and more token consumption. It is recommended to manually filter to a general range before using AI recommendation.', + aiRecommendMaxItemsHint: + 'Limit the number of search results sent to the AI assistant for analysis. More items mean slower analysis and more token consumption. It is recommended to manually filter to a general range before using AI recommendation.', mediaServers: 'Media Servers', mediaServersDesc: 'All enabled media servers will be used.', trimeMedia: 'TrimeMedia', @@ -2617,7 +2623,8 @@ export default { passkeyManagement: 'Passkey Management', registerNewPasskey: 'Register New Passkey', passkeyDescription: 'Passkeys allow you to sign in quickly and securely without a password.', - passkeyAppDescription: 'Passkeys are a simpler, more secure way to sign in, serving as an alternative to passwords. You can authenticate using passkey-supported apps like iCloud Keychain, Bitwarden, or hardware keys.', + passkeyAppDescription: + 'Passkeys are a simpler, more secure way to sign in, serving as an alternative to passwords. You can authenticate using passkey-supported apps like iCloud Keychain, Bitwarden, or hardware keys.', passkeyName: 'Passkey Name', passkeyNamePlaceholder: 'e.g.: iPhone, Windows Hello', registerPasskey: 'Register Passkey', @@ -2631,8 +2638,10 @@ export default { passkeyDeleteSuccess: 'Passkey deleted', passkeyDeleteFailed: 'Delete failed', deletePasskey: 'Delete Passkey', - passkeyDomainWarning: 'The availability of PassKeys is closely related to the {domain}. In a public network environment, please make sure to configure the correct access domain name in "Basic Settings". Domain changes or configuration errors will cause the PassKey to be unusable.', - otpRequiredForPasskey: 'For security reasons, you must first enable {otp} before you can register a PassKey. This is to ensure that you can still log in to your account via OTP code if the PassKey becomes invalid due to domain configuration changes.', + passkeyDomainWarning: + 'The availability of PassKeys is closely related to the {domain}. In a public network environment, please make sure to configure the correct access domain name in "Basic Settings". Domain changes or configuration errors will cause the PassKey to be unusable.', + otpRequiredForPasskey: + 'For security reasons, you must first enable {otp} before you can register a PassKey. This is to ensure that you can still log in to your account via OTP code if the PassKey becomes invalid due to domain configuration changes.', accessDomain: 'access domain name', otpAuthenticator: 'OTP Authenticator', otpGenerateFailed: 'Failed to get OTP URI: {message}!', @@ -2641,8 +2650,10 @@ export default { otpCodeRequired: 'Please enter the 6-digit verification code', otpEnableSuccess: 'Two-factor authentication enabled successfully!', otpEnableFailed: 'Failed to enable OTP: {message}!', - otpDisableRestrictedByPasskey: 'You have registered Passkeys. Please delete all Passkeys before disabling OTP verification.', - confirmToDisableOtp: 'For security reasons, verifying your login password is required to disable two-factor authentication.', + otpDisableRestrictedByPasskey: + 'You have registered Passkeys. Please delete all Passkeys before disabling OTP verification.', + confirmToDisableOtp: + 'For security reasons, verifying your login password is required to disable two-factor authentication.', confirmToDeletePasskey: 'For security reasons, verifying your login password is required to delete a Passkey.', authenticatorAppDescription: 'Use an authenticator app like Google Authenticator, Microsoft Authenticator, Authy, or 1Password to scan the QR code and generate a 6-digit code.', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index accd5ea6..61185930 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -1288,6 +1288,9 @@ export default { llmProviderHint: '选择使用的LLM服务提供商', llmModel: 'LLM模型名称', llmModelHint: '指定使用的LLM模型,如gpt-3.5-turbo、deepseek-chat等', + llmMaxContextTokens: 'LLM 最大上下文 Token 数量 (K)', + llmMaxContextTokensHint: + '设定 LLM 记录会话历史的最大 Token 数量上限(千),超出后将自动修整历史记录以节省 Token 消耗及防止超出 LLM 限制', llmApiKey: 'LLM API密钥', llmApiKeyHint: 'LLM服务提供商的API密钥,用于身份验证', llmApiKeyPlaceholder: '请输入API密钥', @@ -1300,11 +1303,13 @@ export default { downloaders: '下载器', downloadersDesc: '只有默认下载器才会被默认使用。', aiRecommendEnabled: '搜索结果智能推荐', - aiRecommendEnabledHint: '启用搜索结果智能推荐功能,开启后将在搜索结果页面显示智能推荐按钮,可根据用户偏好智能推荐资源', + aiRecommendEnabledHint: + '启用搜索结果智能推荐功能,开启后将在搜索结果页面显示智能推荐按钮,可根据用户偏好智能推荐资源', aiRecommendUserPreference: '用户偏好', aiRecommendUserPreferenceHint: '设置智能推荐时的用户偏好,例如:4K WEB-DL Dolby Vision', aiRecommendMaxItems: '智能推荐分析条目上限', - aiRecommendMaxItemsHint: '限制发送给智能助手进行分析的搜索结果数量,数量越多分析越慢且消耗 Token 越多,建议先手动筛选,筛选出大致范围后再进行智能推荐', + aiRecommendMaxItemsHint: + '限制发送给智能助手进行分析的搜索结果数量,数量越多分析越慢且消耗 Token 越多,建议先手动筛选,筛选出大致范围后再进行智能推荐', mediaServers: '媒体服务器', mediaServersDesc: '所有启用的媒体服务器都会被使用。', trimeMedia: '飞牛影视', @@ -2585,7 +2590,8 @@ export default { passkeyManagement: '通行密钥管理', registerNewPasskey: '注册新通行密钥', passkeyDescription: '通行密钥可以让您无需密码即可快速安全地登录。', - passkeyAppDescription: '通行密钥是一种更简单、更安全的登录方式,可以替代密码进行登录。您可以使用 iCloud 钥匙串、Bitwarden 等支持通行密钥的应用程序或硬件密钥完成验证。', + passkeyAppDescription: + '通行密钥是一种更简单、更安全的登录方式,可以替代密码进行登录。您可以使用 iCloud 钥匙串、Bitwarden 等支持通行密钥的应用程序或硬件密钥完成验证。', passkeyName: '通行密钥名称', passkeyNamePlaceholder: '例如:iPhone、Windows Hello', registerPasskey: '注册通行密钥', @@ -2599,8 +2605,10 @@ export default { passkeyDeleteSuccess: '通行密钥已删除', passkeyDeleteFailed: '删除失败', deletePasskey: '删除通行密钥', - passkeyDomainWarning: '通行密钥(PassKey)的可用性与 {domain} 紧密相关。在公网环境下,请务必在“基础设置”中配置正确的访问域名。域名变更或配置错误将导致通行密钥无法使用。', - otpRequiredForPasskey: '为了安全起见,您必须先启用 {otp} 验证码,然后才能注册通行密钥。这是为了防止在域名配置变动导致 PassKey 失效时,您仍能通过 OTP 码登录账户。', + passkeyDomainWarning: + '通行密钥(PassKey)的可用性与 {domain} 紧密相关。在公网环境下,请务必在“基础设置”中配置正确的访问域名。域名变更或配置错误将导致通行密钥无法使用。', + otpRequiredForPasskey: + '为了安全起见,您必须先启用 {otp} 验证码,然后才能注册通行密钥。这是为了防止在域名配置变动导致 PassKey 失效时,您仍能通过 OTP 码登录账户。', accessDomain: '访问域名', otpAuthenticator: 'OTP 身份验证器', otpGenerateFailed: '获取otp uri失败:{message}!', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 9eef8d42..d338702c 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -1289,6 +1289,9 @@ export default { llmProviderHint: '選擇使用的LLM服務提供商', llmModel: 'LLM模型名稱', llmModelHint: '指定使用的LLM模型,如gpt-3.5-turbo、deepseek-chat等', + llmMaxContextTokens: 'LLM 最大上下文 Token 數量 (K)', + llmMaxContextTokensHint: + '設定 LLM 記錄會話歷史的最大 Token 數量上限(千),超出後將自動修整歷史記錄以節省 Token 消耗及防止超出 LLM 限制', llmApiKey: 'LLM API密鑰', llmApiKeyHint: 'LLM服務提供商的API密鑰,用於身份驗證', llmApiKeyPlaceholder: '請輸入API密鑰', @@ -1301,11 +1304,13 @@ export default { downloaders: '下載器', downloadersDesc: '只有默認下載器才會被默認使用。', aiRecommendEnabled: '搜索結果智能推薦', - aiRecommendEnabledHint: '啟用搜索結果智能推薦功能,開啟後將在搜索結果頁面顯示智能推薦按鈕,可根據用戶偏好智能推薦資源', + aiRecommendEnabledHint: + '啟用搜索結果智能推薦功能,開啟後將在搜索結果頁面顯示智能推薦按鈕,可根據用戶偏好智能推薦資源', aiRecommendUserPreference: '用戶偏好', aiRecommendUserPreferenceHint: '設置智能推薦時的用戶偏好,例如:4K WEB-DL Dolby Vision', aiRecommendMaxItems: '智能推薦分析條目上限', - aiRecommendMaxItemsHint: '限制發送給智能助手進行分析的搜索結果數量,數量越多分析越慢且消耗 Token 越多,建議先手動篩選,篩選出大致範圍後再進行智能推薦', + aiRecommendMaxItemsHint: + '限制發送給智能助手進行分析的搜索結果數量,數量越多分析越慢且消耗 Token 越多,建議先手動篩選,篩選出大致範圍後再進行智能推薦', mediaServers: '媒體服務器', mediaServersDesc: '所有啟用的媒體服務器都會被使用。', trimeMedia: '飛牛影視', @@ -2586,7 +2591,8 @@ export default { passkeyManagement: '通行密鑰管理', registerNewPasskey: '註冊新通行密鑰', passkeyDescription: '通行密鑰可以讓您無需密碼即可快速安全地登入。', - passkeyAppDescription: '通行密鑰是一種更簡單、更安全的登入方式,可以替代密碼進行登入。您可以使用 iCloud 鑰匙圈、Bitwarden 等支援通行密鑰的應用程式或硬體金鑰完成驗證。', + passkeyAppDescription: + '通行密鑰是一種更簡單、更安全的登入方式,可以替代密碼進行登入。您可以使用 iCloud 鑰匙圈、Bitwarden 等支援通行密鑰的應用程式或硬體金鑰完成驗證。', passkeyName: '通行密鑰名稱', passkeyNamePlaceholder: '例如:iPhone、Windows Hello', registerPasskey: '註冊通行密鑰', diff --git a/src/views/setting/AccountSettingSystem.vue b/src/views/setting/AccountSettingSystem.vue index 41d41db8..191a4fc0 100644 --- a/src/views/setting/AccountSettingSystem.vue +++ b/src/views/setting/AccountSettingSystem.vue @@ -40,6 +40,7 @@ const SystemSettings = ref({ AI_RECOMMEND_ENABLED: false, AI_RECOMMEND_USER_PREFERENCE: null, AI_RECOMMEND_MAX_ITEMS: 50, + LLM_MAX_CONTEXT_TOKENS: 64, }, // 高级系统设置 Advanced: { @@ -647,7 +648,7 @@ onDeactivated(() => { - + { persistent-hint /> + + + { - - + { persistent-hint /> - + { min="1" type="number" :suffix="t('setting.system.mb')" - :rules="[(v: any) => v === 0 || !!v || t('setting.system.logMaxFileSizeRequired'), (v: any) => v >= 1 || t('setting.system.logMaxFileSizeMin')]" + :rules="[ + (v: any) => v === 0 || !!v || t('setting.system.logMaxFileSizeRequired'), + (v: any) => v >= 1 || t('setting.system.logMaxFileSizeMin'), + ]" prepend-inner-icon="mdi-file-document" /> @@ -1426,7 +1444,10 @@ onDeactivated(() => { persistent-hint min="1" type="number" - :rules="[(v: any) => v === 0 || !!v || t('setting.system.logBackupCountRequired'), (v: any) => v >= 1 || t('setting.system.logBackupCountMin')]" + :rules="[ + (v: any) => v === 0 || !!v || t('setting.system.logBackupCountRequired'), + (v: any) => v >= 1 || t('setting.system.logBackupCountMin'), + ]" prepend-inner-icon="mdi-backup-restore" />