From 76e1f855f11e10bed31efbd1eb43b2a49b0304cf Mon Sep 17 00:00:00 2001 From: catlog22 Date: Mon, 12 Jan 2026 20:03:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E6=89=B9=E5=A4=84=E7=90=86=E5=A4=A7=E5=B0=8F=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E5=8F=8A=E7=9B=B8=E5=85=B3=E5=9B=BD=E9=99=85=E5=8C=96=E6=94=AF?= =?UTF-8?q?=E6=8C=81=EF=BC=8C=E4=BC=98=E5=8C=96=E9=85=8D=E7=BD=AE=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/routes/codexlens/config-handlers.ts | 17 +++++++++++++++++ ccw/src/templates/dashboard-js/i18n.js | 12 ++++++++++-- .../dashboard-js/views/codexlens-manager.js | 6 +++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/ccw/src/core/routes/codexlens/config-handlers.ts b/ccw/src/core/routes/codexlens/config-handlers.ts index e45eb9aa..f6684bb1 100644 --- a/ccw/src/core/routes/codexlens/config-handlers.ts +++ b/ccw/src/core/routes/codexlens/config-handlers.ts @@ -856,6 +856,19 @@ export async function handleCodexLensConfigRoutes(ctx: RouteContext): Promise parseInt(v, 10) }, 'CODEXLENS_API_MAX_WORKERS': { path: ['api', 'max_workers'], transform: v => parseInt(v, 10) }, 'CODEXLENS_API_BATCH_SIZE': { path: ['api', 'batch_size'], transform: v => parseInt(v, 10) }, + 'CODEXLENS_API_BATCH_SIZE_DYNAMIC': { path: ['api', 'batch_size_dynamic'], transform: v => v === 'true' }, + 'CODEXLENS_API_BATCH_SIZE_UTILIZATION': { path: ['api', 'batch_size_utilization_factor'], transform: v => parseFloat(v) }, + 'CODEXLENS_API_BATCH_SIZE_MAX': { path: ['api', 'batch_size_max'], transform: v => parseInt(v, 10) }, + 'CODEXLENS_CHARS_PER_TOKEN': { path: ['api', 'chars_per_token_estimate'], transform: v => parseInt(v, 10) }, 'CODEXLENS_CASCADE_STRATEGY': { path: ['cascade', 'strategy'] }, 'CODEXLENS_CASCADE_COARSE_K': { path: ['cascade', 'coarse_k'], transform: v => parseInt(v, 10) }, 'CODEXLENS_CASCADE_FINE_K': { path: ['cascade', 'fine_k'], transform: v => parseInt(v, 10) }, diff --git a/ccw/src/templates/dashboard-js/i18n.js b/ccw/src/templates/dashboard-js/i18n.js index e2042a18..af4fc424 100644 --- a/ccw/src/templates/dashboard-js/i18n.js +++ b/ccw/src/templates/dashboard-js/i18n.js @@ -305,7 +305,11 @@ const i18n = { 'codexlens.envField.enabled': 'Enabled', 'codexlens.envField.topKResults': 'Top K Results', 'codexlens.envField.maxWorkers': 'Max Workers', - 'codexlens.envField.batchSize': 'Batch Size', + 'codexlens.envField.batchSize': 'Batch Size (Static)', + 'codexlens.envField.dynamicBatchSize': 'Dynamic Batch Size', + 'codexlens.envField.batchSizeUtilization': 'Utilization Factor', + 'codexlens.envField.batchSizeMax': 'Max Batch Size', + 'codexlens.envField.charsPerToken': 'Chars per Token', 'codexlens.envField.searchStrategy': 'Search Strategy', 'codexlens.envField.coarseK': 'Coarse K (1st stage)', 'codexlens.envField.fineK': 'Fine K (final)', @@ -2450,7 +2454,11 @@ const i18n = { 'codexlens.envField.enabled': '启用', 'codexlens.envField.topKResults': 'Top K 结果数', 'codexlens.envField.maxWorkers': '最大工作线程数', - 'codexlens.envField.batchSize': '批处理大小', + 'codexlens.envField.batchSize': '批处理大小 (固定)', + 'codexlens.envField.dynamicBatchSize': '动态批处理大小', + 'codexlens.envField.batchSizeUtilization': '容量利用率', + 'codexlens.envField.batchSizeMax': '最大批处理大小', + 'codexlens.envField.charsPerToken': '字符/Token比', 'codexlens.envField.searchStrategy': '搜索策略', 'codexlens.envField.coarseK': '粗筛 K (第一阶段)', 'codexlens.envField.fineK': '精筛 K (最终)', diff --git a/ccw/src/templates/dashboard-js/views/codexlens-manager.js b/ccw/src/templates/dashboard-js/views/codexlens-manager.js index 89a4149c..4e35792f 100644 --- a/ccw/src/templates/dashboard-js/views/codexlens-manager.js +++ b/ccw/src/templates/dashboard-js/views/codexlens-manager.js @@ -1086,7 +1086,11 @@ var ENV_VAR_GROUPS = { icon: 'cpu', vars: { 'CODEXLENS_API_MAX_WORKERS': { labelKey: 'codexlens.envField.maxWorkers', type: 'number', placeholder: '4', default: '4', settingsPath: 'api.max_workers', min: 1, max: 32 }, - 'CODEXLENS_API_BATCH_SIZE': { labelKey: 'codexlens.envField.batchSize', type: 'number', placeholder: '8', default: '8', settingsPath: 'api.batch_size', min: 1, max: 64 } + 'CODEXLENS_API_BATCH_SIZE': { labelKey: 'codexlens.envField.batchSize', type: 'number', placeholder: '8', default: '8', settingsPath: 'api.batch_size', min: 1, max: 64, showWhen: function(env) { return env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] !== 'true'; } }, + 'CODEXLENS_API_BATCH_SIZE_DYNAMIC': { labelKey: 'codexlens.envField.dynamicBatchSize', type: 'checkbox', default: 'false', settingsPath: 'api.batch_size_dynamic' }, + 'CODEXLENS_API_BATCH_SIZE_UTILIZATION': { labelKey: 'codexlens.envField.batchSizeUtilization', type: 'number', placeholder: '0.8', default: '0.8', settingsPath: 'api.batch_size_utilization_factor', min: 0.1, max: 0.95, step: 0.05, showWhen: function(env) { return env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] === 'true'; } }, + 'CODEXLENS_API_BATCH_SIZE_MAX': { labelKey: 'codexlens.envField.batchSizeMax', type: 'number', placeholder: '2048', default: '2048', settingsPath: 'api.batch_size_max', min: 1, max: 4096, showWhen: function(env) { return env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] === 'true'; } }, + 'CODEXLENS_CHARS_PER_TOKEN': { labelKey: 'codexlens.envField.charsPerToken', type: 'number', placeholder: '4', default: '4', settingsPath: 'api.chars_per_token_estimate', min: 1, max: 10, showWhen: function(env) { return env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] === 'true'; } } } }, cascade: {