chore: bump version to 7.2.7

- Enhance smart-search with advanced MCP integration
- Add GEMINI_API_KEY configuration support in codexlens
- Update MCP server with new tool handlers
- Add tests for smart-search MCP usage
- Update documentation
This commit is contained in:
catlog22
2026-03-11 16:48:16 +08:00
parent efbbaff834
commit 1cd96b90e8
16 changed files with 1215 additions and 111 deletions

View File

@@ -1566,6 +1566,8 @@ def config(
result["embedding_backend"] = embedding["backend"]
if embedding.get("model"):
result["embedding_model"] = embedding["model"]
if embedding.get("auto_embed_missing") is not None:
result["embedding_auto_embed_missing"] = embedding["auto_embed_missing"]
except (json.JSONDecodeError, OSError):
pass # Settings file not readable, continue with defaults
@@ -1584,6 +1586,10 @@ def config(
if env_overrides.get("EMBEDDING_BACKEND"):
result["embedding_backend"] = env_overrides["EMBEDDING_BACKEND"]
result["embedding_backend_source"] = ".env"
auto_embed_missing_override = env_overrides.get("CODEXLENS_AUTO_EMBED_MISSING") or env_overrides.get("AUTO_EMBED_MISSING")
if auto_embed_missing_override:
result["embedding_auto_embed_missing"] = auto_embed_missing_override.lower() in ("true", "1", "yes", "on")
result["embedding_auto_embed_missing_source"] = ".env"
if env_overrides.get("RERANKER_MODEL"):
result["reranker_model"] = env_overrides["RERANKER_MODEL"]
result["reranker_model_source"] = ".env"
@@ -1613,6 +1619,9 @@ def config(
model = result.get('embedding_model', 'code')
model_source = result.get('embedding_model_source', 'settings.json')
console.print(f" Model: {model} [dim]({model_source})[/dim]")
auto_embed_missing = result.get("embedding_auto_embed_missing", True)
auto_embed_missing_source = result.get("embedding_auto_embed_missing_source", "settings.json")
console.print(f" Auto Embed Missing: {auto_embed_missing} [dim]({auto_embed_missing_source})[/dim]")
# Show reranker settings
console.print(f"\n[bold]Reranker[/bold]")
@@ -1647,7 +1656,7 @@ def config(
# Handle reranker and embedding settings (stored in settings.json)
elif key in ("reranker_backend", "reranker_model", "reranker_enabled", "reranker_top_k",
"embedding_backend", "embedding_model", "reranker_api_provider"):
"embedding_backend", "embedding_model", "embedding_auto_embed_missing", "reranker_api_provider"):
settings_file = Path.home() / ".codexlens" / "settings.json"
settings_file.parent.mkdir(parents=True, exist_ok=True)
@@ -1680,6 +1689,8 @@ def config(
settings["embedding"]["backend"] = value
elif key == "embedding_model":
settings["embedding"]["model"] = value
elif key == "embedding_auto_embed_missing":
settings["embedding"]["auto_embed_missing"] = value.lower() in ("true", "1", "yes", "on")
# Save settings
settings_file.write_text(json.dumps(settings, indent=2), encoding="utf-8")

View File

@@ -110,6 +110,7 @@ class Config:
embedding_model: str = "code" # For fastembed: profile (fast/code/multilingual/balanced)
# For litellm: model name from config (e.g., "qwen3-embedding")
embedding_use_gpu: bool = True # For fastembed: whether to use GPU acceleration
embedding_auto_embed_missing: bool = True # Auto-build embeddings in background when indexed projects are searched without vectors
# Indexing/search optimizations
global_symbol_index_enabled: bool = True # Enable project-wide symbol index fast path
@@ -281,6 +282,7 @@ class Config:
"backend": self.embedding_backend,
"model": self.embedding_model,
"use_gpu": self.embedding_use_gpu,
"auto_embed_missing": self.embedding_auto_embed_missing,
"pool_enabled": self.embedding_pool_enabled,
"strategy": self.embedding_strategy,
"cooldown": self.embedding_cooldown,
@@ -376,6 +378,8 @@ class Config:
self.embedding_model = embedding["model"]
if "use_gpu" in embedding:
self.embedding_use_gpu = embedding["use_gpu"]
if "auto_embed_missing" in embedding:
self.embedding_auto_embed_missing = embedding["auto_embed_missing"]
# Load multi-endpoint configuration
if "endpoints" in embedding:
@@ -782,6 +786,14 @@ class Config:
else:
log.warning("Invalid EMBEDDING_BACKEND in .env: %r", embedding_backend)
auto_embed_missing = get_env("AUTO_EMBED_MISSING")
if auto_embed_missing:
self.embedding_auto_embed_missing = _parse_bool(auto_embed_missing)
log.debug(
"Overriding embedding_auto_embed_missing from .env: %s",
self.embedding_auto_embed_missing,
)
embedding_pool = get_env("EMBEDDING_POOL_ENABLED")
if embedding_pool:
value = embedding_pool.lower()

View File

@@ -33,6 +33,7 @@ ENV_VARS = {
# Embedding configuration (overrides settings.json)
"EMBEDDING_MODEL": "Embedding model/profile name (overrides settings.json)",
"EMBEDDING_BACKEND": "Embedding backend: fastembed, litellm",
"AUTO_EMBED_MISSING": "Auto-build embeddings in background when indexed projects are searched without vectors: true/false",
"EMBEDDING_API_KEY": "API key for embedding service",
"EMBEDDING_API_BASE": "Base URL for embedding API",
"EMBEDDING_POOL_ENABLED": "Enable embedding high availability pool: true/false",