mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-19 18:58:47 +08:00
feat: add APIEmbedder for remote embedding with multi-endpoint support
- Introduced APIEmbedder class to handle embeddings via a remote HTTP API. - Implemented token packing to optimize batch sizes based on token limits. - Added support for multiple API endpoints with round-robin dispatching. - Included retry logic for API calls with exponential backoff on failures. - Enhanced indexing pipeline with file exclusion checks and smart chunking strategies. - Updated tests to cover new APIEmbedder functionality and ensure robustness.
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
// ========================================
|
||||
// CodexLens Environment Variable Schema
|
||||
// CodexLens v2 Environment Variable Schema
|
||||
// ========================================
|
||||
// TypeScript port of ENV_VAR_GROUPS from codexlens-manager.js
|
||||
// Defines structured groups for CodexLens configuration
|
||||
// Defines structured groups for codexlens-search v2 configuration.
|
||||
// Env var names match what the Python bridge CLI reads.
|
||||
|
||||
import type { EnvVarGroupsSchema } from '@/types/codexlens';
|
||||
|
||||
@@ -20,20 +20,38 @@ export const envVarGroupsSchema: EnvVarGroupsSchema = {
|
||||
default: 'local',
|
||||
settingsPath: 'embedding.backend',
|
||||
},
|
||||
CODEXLENS_EMBEDDING_MODEL: {
|
||||
key: 'CODEXLENS_EMBEDDING_MODEL',
|
||||
CODEXLENS_EMBED_API_URL: {
|
||||
key: 'CODEXLENS_EMBED_API_URL',
|
||||
labelKey: 'codexlens.envField.apiUrl',
|
||||
type: 'text',
|
||||
placeholder: 'https://api.siliconflow.cn/v1',
|
||||
default: '',
|
||||
settingsPath: 'embedding.api_url',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBED_API_KEY: {
|
||||
key: 'CODEXLENS_EMBED_API_KEY',
|
||||
labelKey: 'codexlens.envField.apiKey',
|
||||
type: 'password',
|
||||
placeholder: 'sk-...',
|
||||
default: '',
|
||||
settingsPath: 'embedding.api_key',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBED_API_MODEL: {
|
||||
key: 'CODEXLENS_EMBED_API_MODEL',
|
||||
labelKey: 'codexlens.envField.model',
|
||||
type: 'model-select',
|
||||
placeholder: 'Select or enter model...',
|
||||
default: 'fast',
|
||||
settingsPath: 'embedding.model',
|
||||
localModels: [
|
||||
{
|
||||
group: 'FastEmbed Profiles',
|
||||
items: ['fast', 'code', 'base', 'minilm', 'multilingual', 'balanced'],
|
||||
},
|
||||
],
|
||||
default: '',
|
||||
settingsPath: 'embedding.api_model',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
localModels: [],
|
||||
apiModels: [
|
||||
{
|
||||
group: 'SiliconFlow',
|
||||
items: ['BAAI/bge-m3', 'BAAI/bge-large-zh-v1.5', 'BAAI/bge-large-en-v1.5'],
|
||||
},
|
||||
{
|
||||
group: 'OpenAI',
|
||||
items: ['text-embedding-3-small', 'text-embedding-3-large', 'text-embedding-ada-002'],
|
||||
@@ -44,66 +62,90 @@ export const envVarGroupsSchema: EnvVarGroupsSchema = {
|
||||
},
|
||||
{
|
||||
group: 'Voyage',
|
||||
items: ['voyage-3', 'voyage-3-lite', 'voyage-code-3', 'voyage-multilingual-2'],
|
||||
},
|
||||
{
|
||||
group: 'SiliconFlow',
|
||||
items: ['BAAI/bge-m3', 'BAAI/bge-large-zh-v1.5', 'BAAI/bge-large-en-v1.5'],
|
||||
items: ['voyage-3', 'voyage-3-lite', 'voyage-code-3'],
|
||||
},
|
||||
{
|
||||
group: 'Jina',
|
||||
items: ['jina-embeddings-v3', 'jina-embeddings-v2-base-en', 'jina-embeddings-v2-base-zh'],
|
||||
items: ['jina-embeddings-v3', 'jina-embeddings-v2-base-en'],
|
||||
},
|
||||
],
|
||||
},
|
||||
CODEXLENS_AUTO_EMBED_MISSING: {
|
||||
key: 'CODEXLENS_AUTO_EMBED_MISSING',
|
||||
labelKey: 'codexlens.envField.autoEmbedMissing',
|
||||
type: 'checkbox',
|
||||
default: 'true',
|
||||
settingsPath: 'embedding.auto_embed_missing',
|
||||
CODEXLENS_EMBED_API_ENDPOINTS: {
|
||||
key: 'CODEXLENS_EMBED_API_ENDPOINTS',
|
||||
labelKey: 'codexlens.envField.multiEndpoints',
|
||||
type: 'text',
|
||||
placeholder: 'url1|key1|model1,url2|key2|model2',
|
||||
default: '',
|
||||
settingsPath: 'embedding.api_endpoints',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBED_DIM: {
|
||||
key: 'CODEXLENS_EMBED_DIM',
|
||||
labelKey: 'codexlens.envField.embedDim',
|
||||
type: 'number',
|
||||
placeholder: '384',
|
||||
default: '384',
|
||||
settingsPath: 'embedding.dim',
|
||||
min: 64,
|
||||
max: 4096,
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBED_API_CONCURRENCY: {
|
||||
key: 'CODEXLENS_EMBED_API_CONCURRENCY',
|
||||
labelKey: 'codexlens.envField.apiConcurrency',
|
||||
type: 'number',
|
||||
placeholder: '4',
|
||||
default: '4',
|
||||
settingsPath: 'embedding.api_concurrency',
|
||||
min: 1,
|
||||
max: 32,
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBED_API_MAX_TOKENS: {
|
||||
key: 'CODEXLENS_EMBED_API_MAX_TOKENS',
|
||||
labelKey: 'codexlens.envField.maxTokensPerBatch',
|
||||
type: 'number',
|
||||
placeholder: '8192',
|
||||
default: '8192',
|
||||
settingsPath: 'embedding.api_max_tokens_per_batch',
|
||||
min: 512,
|
||||
max: 65536,
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBEDDING_MODEL: {
|
||||
key: 'CODEXLENS_EMBEDDING_MODEL',
|
||||
labelKey: 'codexlens.envField.localModel',
|
||||
type: 'model-select',
|
||||
placeholder: 'Select local model...',
|
||||
default: 'BAAI/bge-small-en-v1.5',
|
||||
settingsPath: 'embedding.model',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] !== 'api',
|
||||
localModels: [
|
||||
{
|
||||
group: 'FastEmbed Profiles',
|
||||
items: ['small', 'base', 'large', 'code'],
|
||||
},
|
||||
],
|
||||
apiModels: [],
|
||||
},
|
||||
CODEXLENS_USE_GPU: {
|
||||
key: 'CODEXLENS_USE_GPU',
|
||||
labelKey: 'codexlens.envField.useGpu',
|
||||
type: 'select',
|
||||
options: ['true', 'false'],
|
||||
default: 'true',
|
||||
settingsPath: 'embedding.use_gpu',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'local',
|
||||
options: ['auto', 'cuda', 'cpu'],
|
||||
default: 'auto',
|
||||
settingsPath: 'embedding.device',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] !== 'api',
|
||||
},
|
||||
CODEXLENS_EMBEDDING_POOL_ENABLED: {
|
||||
key: 'CODEXLENS_EMBEDDING_POOL_ENABLED',
|
||||
labelKey: 'codexlens.envField.highAvailability',
|
||||
type: 'select',
|
||||
options: ['true', 'false'],
|
||||
default: 'false',
|
||||
settingsPath: 'embedding.pool_enabled',
|
||||
showWhen: (env) => env['CODEXLENS_EMBEDDING_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_EMBEDDING_STRATEGY: {
|
||||
key: 'CODEXLENS_EMBEDDING_STRATEGY',
|
||||
labelKey: 'codexlens.envField.loadBalanceStrategy',
|
||||
type: 'select',
|
||||
options: ['round_robin', 'latency_aware', 'weighted_random'],
|
||||
default: 'latency_aware',
|
||||
settingsPath: 'embedding.strategy',
|
||||
showWhen: (env) =>
|
||||
env['CODEXLENS_EMBEDDING_BACKEND'] === 'api' &&
|
||||
env['CODEXLENS_EMBEDDING_POOL_ENABLED'] === 'true',
|
||||
},
|
||||
CODEXLENS_EMBEDDING_COOLDOWN: {
|
||||
key: 'CODEXLENS_EMBEDDING_COOLDOWN',
|
||||
labelKey: 'codexlens.envField.rateLimitCooldown',
|
||||
CODEXLENS_EMBED_BATCH_SIZE: {
|
||||
key: 'CODEXLENS_EMBED_BATCH_SIZE',
|
||||
labelKey: 'codexlens.envField.batchSize',
|
||||
type: 'number',
|
||||
placeholder: '60',
|
||||
default: '60',
|
||||
settingsPath: 'embedding.cooldown',
|
||||
min: 0,
|
||||
max: 300,
|
||||
showWhen: (env) =>
|
||||
env['CODEXLENS_EMBEDDING_BACKEND'] === 'api' &&
|
||||
env['CODEXLENS_EMBEDDING_POOL_ENABLED'] === 'true',
|
||||
placeholder: '64',
|
||||
default: '64',
|
||||
settingsPath: 'embedding.batch_size',
|
||||
min: 1,
|
||||
max: 512,
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -112,29 +154,64 @@ export const envVarGroupsSchema: EnvVarGroupsSchema = {
|
||||
labelKey: 'codexlens.envGroup.reranker',
|
||||
icon: 'arrow-up-down',
|
||||
vars: {
|
||||
CODEXLENS_RERANKER_ENABLED: {
|
||||
key: 'CODEXLENS_RERANKER_ENABLED',
|
||||
labelKey: 'codexlens.envField.enabled',
|
||||
type: 'select',
|
||||
options: ['true', 'false'],
|
||||
default: 'true',
|
||||
settingsPath: 'reranker.enabled',
|
||||
},
|
||||
CODEXLENS_RERANKER_BACKEND: {
|
||||
key: 'CODEXLENS_RERANKER_BACKEND',
|
||||
labelKey: 'codexlens.envField.backend',
|
||||
type: 'select',
|
||||
options: ['onnx', 'api', 'litellm', 'legacy'],
|
||||
default: 'onnx',
|
||||
options: ['local', 'api'],
|
||||
default: 'local',
|
||||
settingsPath: 'reranker.backend',
|
||||
},
|
||||
CODEXLENS_RERANKER_MODEL: {
|
||||
key: 'CODEXLENS_RERANKER_MODEL',
|
||||
CODEXLENS_RERANKER_API_URL: {
|
||||
key: 'CODEXLENS_RERANKER_API_URL',
|
||||
labelKey: 'codexlens.envField.apiUrl',
|
||||
type: 'text',
|
||||
placeholder: 'https://api.siliconflow.cn/v1',
|
||||
default: '',
|
||||
settingsPath: 'reranker.api_url',
|
||||
showWhen: (env) => env['CODEXLENS_RERANKER_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_RERANKER_API_KEY: {
|
||||
key: 'CODEXLENS_RERANKER_API_KEY',
|
||||
labelKey: 'codexlens.envField.apiKey',
|
||||
type: 'password',
|
||||
placeholder: 'sk-...',
|
||||
default: '',
|
||||
settingsPath: 'reranker.api_key',
|
||||
showWhen: (env) => env['CODEXLENS_RERANKER_BACKEND'] === 'api',
|
||||
},
|
||||
CODEXLENS_RERANKER_API_MODEL: {
|
||||
key: 'CODEXLENS_RERANKER_API_MODEL',
|
||||
labelKey: 'codexlens.envField.model',
|
||||
type: 'model-select',
|
||||
placeholder: 'Select or enter model...',
|
||||
default: '',
|
||||
settingsPath: 'reranker.api_model',
|
||||
showWhen: (env) => env['CODEXLENS_RERANKER_BACKEND'] === 'api',
|
||||
localModels: [],
|
||||
apiModels: [
|
||||
{
|
||||
group: 'SiliconFlow',
|
||||
items: ['BAAI/bge-reranker-v2-m3', 'BAAI/bge-reranker-large', 'BAAI/bge-reranker-base'],
|
||||
},
|
||||
{
|
||||
group: 'Cohere',
|
||||
items: ['rerank-english-v3.0', 'rerank-multilingual-v3.0'],
|
||||
},
|
||||
{
|
||||
group: 'Jina',
|
||||
items: ['jina-reranker-v2-base-multilingual'],
|
||||
},
|
||||
],
|
||||
},
|
||||
CODEXLENS_RERANKER_MODEL: {
|
||||
key: 'CODEXLENS_RERANKER_MODEL',
|
||||
labelKey: 'codexlens.envField.localModel',
|
||||
type: 'model-select',
|
||||
placeholder: 'Select local model...',
|
||||
default: 'Xenova/ms-marco-MiniLM-L-6-v2',
|
||||
settingsPath: 'reranker.model',
|
||||
showWhen: (env) => env['CODEXLENS_RERANKER_BACKEND'] !== 'api',
|
||||
localModels: [
|
||||
{
|
||||
group: 'FastEmbed/ONNX',
|
||||
@@ -145,283 +222,128 @@ export const envVarGroupsSchema: EnvVarGroupsSchema = {
|
||||
],
|
||||
},
|
||||
],
|
||||
apiModels: [
|
||||
{
|
||||
group: 'Cohere',
|
||||
items: ['rerank-english-v3.0', 'rerank-multilingual-v3.0', 'rerank-english-v2.0'],
|
||||
},
|
||||
{
|
||||
group: 'Voyage',
|
||||
items: ['rerank-2', 'rerank-2-lite', 'rerank-1'],
|
||||
},
|
||||
{
|
||||
group: 'SiliconFlow',
|
||||
items: ['BAAI/bge-reranker-v2-m3', 'BAAI/bge-reranker-large', 'BAAI/bge-reranker-base'],
|
||||
},
|
||||
{
|
||||
group: 'Jina',
|
||||
items: ['jina-reranker-v2-base-multilingual', 'jina-reranker-v1-base-en'],
|
||||
},
|
||||
],
|
||||
apiModels: [],
|
||||
},
|
||||
CODEXLENS_RERANKER_TOP_K: {
|
||||
key: 'CODEXLENS_RERANKER_TOP_K',
|
||||
labelKey: 'codexlens.envField.topKResults',
|
||||
type: 'number',
|
||||
placeholder: '50',
|
||||
default: '50',
|
||||
placeholder: '20',
|
||||
default: '20',
|
||||
settingsPath: 'reranker.top_k',
|
||||
min: 5,
|
||||
max: 200,
|
||||
},
|
||||
CODEXLENS_RERANKER_POOL_ENABLED: {
|
||||
key: 'CODEXLENS_RERANKER_POOL_ENABLED',
|
||||
labelKey: 'codexlens.envField.highAvailability',
|
||||
type: 'select',
|
||||
options: ['true', 'false'],
|
||||
default: 'false',
|
||||
settingsPath: 'reranker.pool_enabled',
|
||||
showWhen: (env) => env['CODEXLENS_RERANKER_BACKEND'] === 'api' || env['CODEXLENS_RERANKER_BACKEND'] === 'litellm',
|
||||
CODEXLENS_RERANKER_BATCH_SIZE: {
|
||||
key: 'CODEXLENS_RERANKER_BATCH_SIZE',
|
||||
labelKey: 'codexlens.envField.batchSize',
|
||||
type: 'number',
|
||||
placeholder: '32',
|
||||
default: '32',
|
||||
settingsPath: 'reranker.batch_size',
|
||||
min: 1,
|
||||
max: 128,
|
||||
},
|
||||
CODEXLENS_RERANKER_STRATEGY: {
|
||||
key: 'CODEXLENS_RERANKER_STRATEGY',
|
||||
labelKey: 'codexlens.envField.loadBalanceStrategy',
|
||||
type: 'select',
|
||||
options: ['round_robin', 'latency_aware', 'weighted_random'],
|
||||
default: 'latency_aware',
|
||||
settingsPath: 'reranker.strategy',
|
||||
showWhen: (env) =>
|
||||
(env['CODEXLENS_RERANKER_BACKEND'] === 'api' || env['CODEXLENS_RERANKER_BACKEND'] === 'litellm') &&
|
||||
env['CODEXLENS_RERANKER_POOL_ENABLED'] === 'true',
|
||||
},
|
||||
},
|
||||
search: {
|
||||
id: 'search',
|
||||
labelKey: 'codexlens.envGroup.search',
|
||||
icon: 'git-branch',
|
||||
vars: {
|
||||
CODEXLENS_BINARY_TOP_K: {
|
||||
key: 'CODEXLENS_BINARY_TOP_K',
|
||||
labelKey: 'codexlens.envField.binaryTopK',
|
||||
type: 'number',
|
||||
placeholder: '200',
|
||||
default: '200',
|
||||
settingsPath: 'search.binary_top_k',
|
||||
min: 10,
|
||||
max: 1000,
|
||||
},
|
||||
CODEXLENS_RERANKER_COOLDOWN: {
|
||||
key: 'CODEXLENS_RERANKER_COOLDOWN',
|
||||
labelKey: 'codexlens.envField.rateLimitCooldown',
|
||||
CODEXLENS_ANN_TOP_K: {
|
||||
key: 'CODEXLENS_ANN_TOP_K',
|
||||
labelKey: 'codexlens.envField.annTopK',
|
||||
type: 'number',
|
||||
placeholder: '50',
|
||||
default: '50',
|
||||
settingsPath: 'search.ann_top_k',
|
||||
min: 5,
|
||||
max: 500,
|
||||
},
|
||||
CODEXLENS_FTS_TOP_K: {
|
||||
key: 'CODEXLENS_FTS_TOP_K',
|
||||
labelKey: 'codexlens.envField.ftsTopK',
|
||||
type: 'number',
|
||||
placeholder: '50',
|
||||
default: '50',
|
||||
settingsPath: 'search.fts_top_k',
|
||||
min: 5,
|
||||
max: 500,
|
||||
},
|
||||
CODEXLENS_FUSION_K: {
|
||||
key: 'CODEXLENS_FUSION_K',
|
||||
labelKey: 'codexlens.envField.fusionK',
|
||||
type: 'number',
|
||||
placeholder: '60',
|
||||
default: '60',
|
||||
settingsPath: 'reranker.cooldown',
|
||||
min: 0,
|
||||
max: 300,
|
||||
showWhen: (env) =>
|
||||
(env['CODEXLENS_RERANKER_BACKEND'] === 'api' || env['CODEXLENS_RERANKER_BACKEND'] === 'litellm') &&
|
||||
env['CODEXLENS_RERANKER_POOL_ENABLED'] === 'true',
|
||||
},
|
||||
},
|
||||
},
|
||||
concurrency: {
|
||||
id: 'concurrency',
|
||||
labelKey: 'codexlens.envGroup.concurrency',
|
||||
icon: 'cpu',
|
||||
vars: {
|
||||
CODEXLENS_API_MAX_WORKERS: {
|
||||
key: 'CODEXLENS_API_MAX_WORKERS',
|
||||
labelKey: 'codexlens.envField.maxWorkers',
|
||||
type: 'number',
|
||||
placeholder: '4',
|
||||
default: '4',
|
||||
settingsPath: 'api.max_workers',
|
||||
settingsPath: 'search.fusion_k',
|
||||
min: 1,
|
||||
max: 32,
|
||||
},
|
||||
CODEXLENS_API_BATCH_SIZE: {
|
||||
key: 'CODEXLENS_API_BATCH_SIZE',
|
||||
labelKey: 'codexlens.envField.batchSize',
|
||||
type: 'number',
|
||||
placeholder: '8',
|
||||
default: '8',
|
||||
settingsPath: 'api.batch_size',
|
||||
min: 1,
|
||||
max: 64,
|
||||
showWhen: (env) => env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] !== 'true',
|
||||
},
|
||||
CODEXLENS_API_BATCH_SIZE_DYNAMIC: {
|
||||
key: 'CODEXLENS_API_BATCH_SIZE_DYNAMIC',
|
||||
labelKey: 'codexlens.envField.dynamicBatchSize',
|
||||
type: 'checkbox',
|
||||
default: 'false',
|
||||
settingsPath: 'api.batch_size_dynamic',
|
||||
},
|
||||
CODEXLENS_API_BATCH_SIZE_UTILIZATION: {
|
||||
key: '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: (env) => env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] === 'true',
|
||||
},
|
||||
CODEXLENS_API_BATCH_SIZE_MAX: {
|
||||
key: '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: (env) => env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] === 'true',
|
||||
},
|
||||
CODEXLENS_CHARS_PER_TOKEN: {
|
||||
key: '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: (env) => env['CODEXLENS_API_BATCH_SIZE_DYNAMIC'] === 'true',
|
||||
},
|
||||
},
|
||||
},
|
||||
cascade: {
|
||||
id: 'cascade',
|
||||
labelKey: 'codexlens.envGroup.cascade',
|
||||
icon: 'git-branch',
|
||||
vars: {
|
||||
CODEXLENS_CASCADE_STRATEGY: {
|
||||
key: 'CODEXLENS_CASCADE_STRATEGY',
|
||||
labelKey: 'codexlens.envField.searchStrategy',
|
||||
type: 'select',
|
||||
options: ['binary', 'hybrid', 'binary_rerank', 'dense_rerank', 'staged'],
|
||||
default: 'dense_rerank',
|
||||
settingsPath: 'cascade.strategy',
|
||||
},
|
||||
CODEXLENS_CASCADE_COARSE_K: {
|
||||
key: 'CODEXLENS_CASCADE_COARSE_K',
|
||||
labelKey: 'codexlens.envField.coarseK',
|
||||
type: 'number',
|
||||
placeholder: '100',
|
||||
default: '100',
|
||||
settingsPath: 'cascade.coarse_k',
|
||||
min: 10,
|
||||
max: 500,
|
||||
},
|
||||
CODEXLENS_CASCADE_FINE_K: {
|
||||
key: 'CODEXLENS_CASCADE_FINE_K',
|
||||
labelKey: 'codexlens.envField.fineK',
|
||||
type: 'number',
|
||||
placeholder: '10',
|
||||
default: '10',
|
||||
settingsPath: 'cascade.fine_k',
|
||||
min: 1,
|
||||
max: 100,
|
||||
},
|
||||
CODEXLENS_STAGED_STAGE2_MODE: {
|
||||
key: 'CODEXLENS_STAGED_STAGE2_MODE',
|
||||
labelKey: 'codexlens.envField.stagedStage2Mode',
|
||||
type: 'select',
|
||||
options: ['precomputed', 'realtime', 'static_global_graph'],
|
||||
default: 'precomputed',
|
||||
settingsPath: 'staged.stage2_mode',
|
||||
showWhen: (env) => env['CODEXLENS_CASCADE_STRATEGY'] === 'staged',
|
||||
},
|
||||
CODEXLENS_STAGED_CLUSTERING_STRATEGY: {
|
||||
key: 'CODEXLENS_STAGED_CLUSTERING_STRATEGY',
|
||||
labelKey: 'codexlens.envField.stagedClusteringStrategy',
|
||||
type: 'select',
|
||||
options: ['auto', 'hdbscan', 'dbscan', 'frequency', 'noop', 'score', 'dir_rr', 'path'],
|
||||
default: 'auto',
|
||||
settingsPath: 'staged.clustering_strategy',
|
||||
showWhen: (env) => env['CODEXLENS_CASCADE_STRATEGY'] === 'staged',
|
||||
},
|
||||
CODEXLENS_STAGED_CLUSTERING_MIN_SIZE: {
|
||||
key: 'CODEXLENS_STAGED_CLUSTERING_MIN_SIZE',
|
||||
labelKey: 'codexlens.envField.stagedClusteringMinSize',
|
||||
type: 'number',
|
||||
placeholder: '3',
|
||||
default: '3',
|
||||
settingsPath: 'staged.clustering_min_size',
|
||||
min: 1,
|
||||
max: 50,
|
||||
showWhen: (env) => env['CODEXLENS_CASCADE_STRATEGY'] === 'staged',
|
||||
},
|
||||
CODEXLENS_ENABLE_STAGED_RERANK: {
|
||||
key: 'CODEXLENS_ENABLE_STAGED_RERANK',
|
||||
labelKey: 'codexlens.envField.enableStagedRerank',
|
||||
type: 'checkbox',
|
||||
default: 'true',
|
||||
settingsPath: 'staged.enable_rerank',
|
||||
showWhen: (env) => env['CODEXLENS_CASCADE_STRATEGY'] === 'staged',
|
||||
max: 200,
|
||||
},
|
||||
},
|
||||
},
|
||||
indexing: {
|
||||
id: 'indexing',
|
||||
labelKey: 'codexlens.envGroup.indexing',
|
||||
icon: 'git-branch',
|
||||
icon: 'cpu',
|
||||
vars: {
|
||||
CODEXLENS_USE_ASTGREP: {
|
||||
key: 'CODEXLENS_USE_ASTGREP',
|
||||
labelKey: 'codexlens.envField.useAstGrep',
|
||||
CODEXLENS_CODE_AWARE_CHUNKING: {
|
||||
key: 'CODEXLENS_CODE_AWARE_CHUNKING',
|
||||
labelKey: 'codexlens.envField.codeAwareChunking',
|
||||
type: 'checkbox',
|
||||
default: 'false',
|
||||
settingsPath: 'parsing.use_astgrep',
|
||||
},
|
||||
CODEXLENS_STATIC_GRAPH_ENABLED: {
|
||||
key: 'CODEXLENS_STATIC_GRAPH_ENABLED',
|
||||
labelKey: 'codexlens.envField.staticGraphEnabled',
|
||||
type: 'checkbox',
|
||||
default: 'false',
|
||||
settingsPath: 'indexing.static_graph_enabled',
|
||||
},
|
||||
CODEXLENS_STATIC_GRAPH_RELATIONSHIP_TYPES: {
|
||||
key: 'CODEXLENS_STATIC_GRAPH_RELATIONSHIP_TYPES',
|
||||
labelKey: 'codexlens.envField.staticGraphRelationshipTypes',
|
||||
type: 'text',
|
||||
placeholder: 'imports,inherits,calls',
|
||||
default: 'imports,inherits',
|
||||
settingsPath: 'indexing.static_graph_relationship_types',
|
||||
showWhen: (env) => env['CODEXLENS_STATIC_GRAPH_ENABLED'] === 'true',
|
||||
},
|
||||
},
|
||||
},
|
||||
chunking: {
|
||||
id: 'chunking',
|
||||
labelKey: 'codexlens.envGroup.chunking',
|
||||
icon: 'scissors',
|
||||
vars: {
|
||||
CHUNK_STRIP_COMMENTS: {
|
||||
key: 'CHUNK_STRIP_COMMENTS',
|
||||
labelKey: 'codexlens.envField.stripComments',
|
||||
type: 'select',
|
||||
options: ['true', 'false'],
|
||||
default: 'true',
|
||||
settingsPath: 'chunking.strip_comments',
|
||||
settingsPath: 'indexing.code_aware_chunking',
|
||||
},
|
||||
CHUNK_STRIP_DOCSTRINGS: {
|
||||
key: 'CHUNK_STRIP_DOCSTRINGS',
|
||||
labelKey: 'codexlens.envField.stripDocstrings',
|
||||
type: 'select',
|
||||
options: ['true', 'false'],
|
||||
default: 'true',
|
||||
settingsPath: 'chunking.strip_docstrings',
|
||||
},
|
||||
RERANKER_TEST_FILE_PENALTY: {
|
||||
key: 'RERANKER_TEST_FILE_PENALTY',
|
||||
labelKey: 'codexlens.envField.testFilePenalty',
|
||||
CODEXLENS_INDEX_WORKERS: {
|
||||
key: 'CODEXLENS_INDEX_WORKERS',
|
||||
labelKey: 'codexlens.envField.indexWorkers',
|
||||
type: 'number',
|
||||
placeholder: '0.0',
|
||||
default: '0.0',
|
||||
settingsPath: 'reranker.test_file_penalty',
|
||||
min: 0,
|
||||
max: 1,
|
||||
step: 0.1,
|
||||
placeholder: '2',
|
||||
default: '2',
|
||||
settingsPath: 'indexing.workers',
|
||||
min: 1,
|
||||
max: 16,
|
||||
},
|
||||
RERANKER_DOCSTRING_WEIGHT: {
|
||||
key: 'RERANKER_DOCSTRING_WEIGHT',
|
||||
labelKey: 'codexlens.envField.docstringWeight',
|
||||
CODEXLENS_MAX_FILE_SIZE: {
|
||||
key: 'CODEXLENS_MAX_FILE_SIZE',
|
||||
labelKey: 'codexlens.envField.maxFileSize',
|
||||
type: 'number',
|
||||
placeholder: '1.0',
|
||||
default: '1.0',
|
||||
settingsPath: 'reranker.docstring_weight',
|
||||
min: 0,
|
||||
max: 1,
|
||||
step: 0.1,
|
||||
placeholder: '1000000',
|
||||
default: '1000000',
|
||||
settingsPath: 'indexing.max_file_size_bytes',
|
||||
min: 10000,
|
||||
max: 10000000,
|
||||
},
|
||||
CODEXLENS_HNSW_EF: {
|
||||
key: 'CODEXLENS_HNSW_EF',
|
||||
labelKey: 'codexlens.envField.hnswEf',
|
||||
type: 'number',
|
||||
placeholder: '150',
|
||||
default: '150',
|
||||
settingsPath: 'indexing.hnsw_ef',
|
||||
min: 10,
|
||||
max: 500,
|
||||
},
|
||||
CODEXLENS_HNSW_M: {
|
||||
key: 'CODEXLENS_HNSW_M',
|
||||
labelKey: 'codexlens.envField.hnswM',
|
||||
type: 'number',
|
||||
placeholder: '32',
|
||||
default: '32',
|
||||
settingsPath: 'indexing.hnsw_M',
|
||||
min: 4,
|
||||
max: 128,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user