[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74846":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":45,"readmeContent":46,"aiSummary":47,"trendingCount":15,"starSnapshotCount":15,"syncStatus":48,"lastSyncTime":49,"discoverSource":50},74846,"SocratiCode","giancarloerra\u002FSocratiCode","giancarloerra","Enterprise-grade (40m+ LOC) codebase intelligence, zero-setup, local & private Plugin\u002FSkill\u002FExtension or MCP: hybrid semantic search, polyglot dependency graphs, symbol-level impact analysis & call-flow, interactive HTML viewer, cross-project & branch-aware search, DB\u002FAPI\u002Finfra knowledge. 61% less tokens, 84% fewer calls, 37x faster. Cloud in beta.","https:\u002F\u002Fsocraticode.cloud",null,"TypeScript",2891,378,16,0,83,126,395,249,29.74,"GNU Affero General Public License v3.0",false,"main",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"ai","ai-assistant","ast","claude","claude-code","code-graph","codebase-intelligence","context-engine","docker","embeddings","gemini","gemini-cli-extension","mcp","openai","qdrant","semantic","semantic-search","vector-database","vector-embeddings","vector-search","2026-06-12 02:03:29","\u003Cp align=\"center\">\n  \u003Cimg src=\".\u002Fsocraticode_logo_thumbnail.png\" alt=\"SocratiCode logo\" \u002F>\n\u003C\u002Fp>\n\n# SocratiCode\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\">\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-AGPL--3.0-blue.svg\" alt=\"License: AGPL-3.0\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fsocraticode\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fsocraticode.svg\" alt=\"npm version\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fnodejs.org\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-%3E%3D18-brightgreen.svg\" alt=\"Node.js >= 18\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fgiancarloerra\u002Fsocraticode?style=social\" alt=\"GitHub stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F5DrMXfNG\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join-5865F2?logo=discord&logoColor=white\" alt=\"Discord\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#claude-code-plugin-recommended-for-claude-code-users\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-Install_Plugin-CC785C?style=flat-square&logoColor=white\" alt=\"Install Claude Code Plugin\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=giancarloerra.socraticode\">\u003Cimg src=\"https:\u002F\u002Fvsmarketplacebadges.dev\u002Fversion-short\u002Fgiancarloerra.socraticode.svg?style=flat-square&label=VS%20Code%20Marketplace&logo=visualstudiocode&color=0098FF\" alt=\"VS Code Marketplace\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fopen-vsx.org\u002Fextension\u002Fgiancarloerra\u002Fsocraticode\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fopen-vsx\u002Fv\u002Fgiancarloerra\u002Fsocraticode?style=flat-square&label=Open%20VSX&color=A52A2A\" alt=\"Open VSX\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Finsiders.vscode.dev\u002Fredirect\u002Fmcp\u002Finstall?name=socraticode&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22socraticode%22%5D%7D\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVS_Code-Install_MCP_Server-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white\" alt=\"Install in VS Code\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Finsiders.vscode.dev\u002Fredirect\u002Fmcp\u002Finstall?name=socraticode&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22socraticode%22%5D%7D&quality=insiders\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVS_Code_Insiders-Install_MCP_Server-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white\" alt=\"Install in VS Code Insiders\">\u003C\u002Fa>\n  \u003Ca href=\"cursor:\u002F\u002Fanysphere.cursor-deeplink\u002Fmcp\u002Finstall?name=socraticode&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNvY3JhdGljb2RlIl19\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCursor-Install_MCP_Server-F14C28?style=flat-square&logo=cursor&logoColor=white\" alt=\"Install in Cursor\">\u003C\u002Fa>\n\u003C\u002Fp>\n\n> *\"There is only one good, knowledge, and one evil, ignorance.\"* — Socrates\n\n**Your AI reads code. SocratiCode understands it.**\n\n**The open-source codebase context engine: give any AI instant automated knowledge of your entire codebase (and infrastructure) — at scale, zero configuration, fully private, completely free.**\n\n\u003Cp align=\"center\">\n  Kindly sponsored by \u003Ca href=\"https:\u002F\u002Faltaire.com\">Altaire Limited\u003C\u002Fa>\n\u003C\u002Fp>\n\n> 🛡️ **Need MCP governance together with codebase context?** See our sibling project [**JanuScope**](https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fjanuscope) — the local-first MCP policy proxy: tool blocking, SQL-mutation gate, PII redaction, audit, rate-limit.\n\n> If SocratiCode has been useful to you, please ⭐ **star this repo** — it helps others discover it — and share it with your dev team and fellow developers!\n>\n> 💬 Questions or just want to chat? Join us on [Discord](https:\u002F\u002Fdiscord.gg\u002F5DrMXfNG).\n\n> **☁️ SocratiCode Cloud (private beta)** — Hosted, shared team index built on the same engine as the open-source version, plus SSO, audit logs, branch-aware indexing, and VPC \u002F air-gapped deployment options. The open-source core remains free forever. [Request early access →](https:\u002F\u002Fsocraticode.cloud)\n\n**One thing, done well: deep codebase intelligence — zero setup, no bloat, fully automatic.** SocratiCode gives AI assistants deep semantic understanding of your codebase — **hybrid search, cross-project search, polyglot code dependency graphs, symbol-level impact analysis and flow, interactive HTML graph explorer for visual navigation, and searchable context artifacts (database schemas, API specs, infra configs, architecture docs)**. Zero configuration — add it to **any MCP host**, or install the **Native Plugin** for Claude Code, Cursor, VS Code Copilot, Codex or Gemini CLI. It manages everything automatically.\n\n**Production-ready**, battle-tested on **enterprise-level** large repositories (up to and over **~40 million lines of code**). **Batched**, automatic **resumable** indexing checkpoints progress — pauses, crashes, restarts, and interruptions don't lose work. The file watcher keeps the **index automatically updated** at every file change and across sessions. **Multi-branch, multi-repo** and **multi-agent ready** — multiple AI agents can work on the same codebase simultaneously, sharing a single index with automatic coordination and zero configuration.\n\n**Private and local by default** — Docker handles everything, no API keys required, no data leaves your machine. **Cloud ready** for embeddings (OpenAI, Google Gemini) and Qdrant, and a **full suite of configuration options** are all available when you need them.\n\n**Code intelligence that belongs to you, AI and host agnostic** — your codebase's understanding lives with the code, not locked to any one assistant, IDE or model. And because SocratiCode pre-computes the hard parts (blast radius, call-flow, dependency traversal), **smaller models can handle architectural complex tasks that would otherwise need top-tier reasoning**, saving even more on token cost.\n\nThe first Qdrant‑based MCP\u002FClaude Plugin\u002FSkill that pairs auto‑managed, zero‑config local Docker deployment with **AST‑aware code chunking, hybrid semantic + BM25 (RRF‑fused) code search**, polyglot dependency **graphs** with circular‑dependency visualisation, **symbol‑level Impact Analysis** (blast‑radius & call‑flow tracing across 18 languages), and searchable **infra\u002FAPI\u002Fdatabase artifacts** in a single focused, zero-config and easy to use code intelligence engine.\n\n> **Benchmarked on VS Code (2.45M lines):** SocratiCode uses **61% less context**, **84% fewer tool calls**, and is **37x faster** than grep‑based exploration — tested live with Claude Opus 4.6. [See the full benchmark →](#real-world-benchmark-vs-code-245m-lines-of-code-with-claude-opus-46)\n\n\u003Cp align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=giancarloerra%2Fsocraticode&type=date&logscale=&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=giancarloerra\u002Fsocraticode&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=giancarloerra\u002Fsocraticode&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fimage?repos=giancarloerra\u002Fsocraticode&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\u003C\u002Fp>\n\n## Contents\n\n- [Quick Start](#quick-start)\n- [Plugins](#plugins)\n- [Why SocratiCode](#why-socraticode)\n- [Features](#features)\n- [Prerequisites](#prerequisites)\n- [Example Workflow](#example-workflow)\n- [Agent Instructions](#agent-instructions)\n- [Configuration](#configuration)\n- [Language Support](#language-support)\n- [Ignore Rules](#ignore-rules)\n- [Context Artifacts](#context-artifacts)\n- [Environment Variables](#environment-variables)\n- [Docker Resources](#docker-resources)\n- [Testing](#testing)\n- [Why Not Just Grep?](#why-not-just-grep)\n- [FAQ](#faq)\n- [Community](#community)\n- [SocratiCode Cloud](#socraticode-cloud)\n- [License](#license)\n\n---\n\n## Quick Start\n\n> **Only [Docker](https:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop\u002F) (running) required.**\n\n**One-click install** — Claude Code, VS Code and Cursor:\n\n[![Install Claude Code Plugin](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FClaude_Code-Install_Plugin-CC785C?style=flat-square&logoColor=white)](#claude-code-plugin-recommended-for-claude-code-users)\n[![Install in VS Code](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVS_Code-Install_MCP_Server-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https:\u002F\u002Finsiders.vscode.dev\u002Fredirect\u002Fmcp\u002Finstall?name=socraticode&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22socraticode%22%5D%7D) [![Install in VS Code Insiders](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVS_Code_Insiders-Install_MCP_Server-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https:\u002F\u002Finsiders.vscode.dev\u002Fredirect\u002Fmcp\u002Finstall?name=socraticode&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22socraticode%22%5D%7D&quality=insiders) [![Install in Cursor](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCursor-Install_MCP_Server-F14C28?style=flat-square&logo=cursor&logoColor=white)](cursor:\u002F\u002Fanysphere.cursor-deeplink\u002Fmcp\u002Finstall?name=socraticode&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsInNvY3JhdGljb2RlIl19) \n\n**All MCP hosts** — add the following to your `mcpServers` (Claude Desktop, Windsurf, Cline, Roo Code) or `servers` (VS Code project-local `.vscode\u002Fmcp.json`) config:\n\n```json\n\"socraticode\": {\n  \"command\": \"npx\",\n  \"args\": [\"-y\", \"socraticode\"]\n}\n```\n\n**Claude Code** — install the plugin (recommended, includes workflow skills for best results):\n\nFrom your shell:\n\n```bash\nclaude plugin marketplace add giancarloerra\u002Fsocraticode\nclaude plugin install socraticode@socraticode\n```\n\nOr from within Claude Code:\n\n```\n\u002Fplugin marketplace add giancarloerra\u002Fsocraticode\n\u002Fplugin install socraticode@socraticode\n```\n\n> **Auto-updates:** After installing, enable automatic updates by opening `\u002Fplugin` → Marketplaces → select `socraticode` → Enable auto-update.\n\nOr as MCP only (without skills):\n\n```bash\nclaude mcp add socraticode -- npx -y socraticode\n```\n\n> **Updating:** `npx` caches the package after the first run. To get the latest version, clear the cache and restart your MCP host: `rm -rf ~\u002F.npm\u002F_npx && claude mcp restart socraticode`. Alternatively, use `npx -y socraticode@latest` in your config to always check for updates on startup (slightly slower).\n\n**OpenCode** — add to your `opencode.json` (or `opencode.jsonc`):\n\n```json\n{\n  \"mcp\": {\n    \"socraticode\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"socraticode\"],\n      \"enabled\": true\n    }\n  }\n}\n```\n\n**OpenAI Codex CLI** — add to `~\u002F.codex\u002Fconfig.toml`:\n\n```toml\n[mcp_servers.socraticode]\ncommand = \"npx\"\nargs = [\"-y\", \"socraticode\"]\n```\n\nRestart your host. On first use SocratiCode automatically pulls Docker images, starts its own Qdrant and Ollama containers, and downloads the embedding model — one-time setup, ~5 minutes depending on your connection. After that, it starts in seconds.\n\n**First time on a project** — ask your AI: **\"Index this codebase\"**. Indexing runs in the background; ask **\"What is the codebase index status?\"** to monitor progress. Depending on codebase size and whether you're using GPU-accelerated Ollama or cloud embeddings, first-time indexing can take anywhere from a few seconds to a few minutes (it takes under 10 minutes to first-index +3 million lines of code on a Macbook Pro M4). Once complete it doesn't need to be run again, you can search, explore the dependency graph, and query context artifacts.\n\n**Every time after that** — just use the tools (search, graph, etc.). On server startup SocratiCode automatically detects previously indexed projects, restarts the file watcher, and runs an incremental update to catch any changes made while the server was down. If indexing was interrupted, it resumes automatically from the last checkpoint. You can also explicitly start or restart the watcher with `codebase_watch { action: \"start\" }`.\n\n> **macOS \u002F Windows on large codebases**: Docker containers can't use the GPU. For medium-to-large repos, [install native Ollama](https:\u002F\u002Follama.com\u002Fdownload) (auto-detected, no config change needed) for Metal\u002FCUDA acceleration, or use [OpenAI embeddings](#openai-embeddings) for speed without a local install. [Full details.](#embedding-performance-on-macos--windows)\n\n> **Recommended**: For best results, add the [Agent Instructions](#agent-instructions) to your AI assistant's system prompt or project instructions file (`CLAUDE.md`, `AGENTS.md`, etc.). The key principle — **search before reading** — helps your AI use SocratiCode's tools effectively and avoid unnecessary file reads.\n\n> **Claude Code users**: If you installed the SocratiCode plugin, the Agent Instructions are included automatically as skills — no need to add them to your `CLAUDE.md`. The plugin also bundles the MCP server, so you don't need a separate `claude mcp add`.\n\n> **Advanced**: cloud embeddings (OpenAI \u002F Google), external Qdrant, remote Ollama, native Ollama, and dozens of tuning options are all available. See [Configuration](#configuration) below.\n\n## Plugins\n\nSocratiCode is available as a native plugin on multiple AI coding platforms. Plugins bundle the MCP server with workflow skills and agent instructions — one install gives you everything.\n\n| Platform | Install method |\n|:---------|:---------------|\n| Claude Code | `claude plugin marketplace add giancarloerra\u002Fsocraticode && claude plugin install socraticode@socraticode` — [full instructions](#claude-code-plugin-recommended-for-claude-code-users) |\n| **VS Code \u002F Cursor \u002F VSCodium \u002F Gitpod \u002F code-server \u002F Theia \u002F Antigravity \u002F Particle Workbench** (extension) | Search **SocratiCode** in the Extensions panel (VS Code Marketplace or Open VSX). The extension auto-registers the MCP server in Copilot agent mode, Cline, Continue and Roo Code, and adds a sidebar, interactive graph webview, and onboarding walkthrough. _Source: [`extension\u002F`](.\u002Fextension)._ |\n| Cursor | `\u002Fadd-plugin https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode` (plugin format with skills). Also listed in the Cursor Marketplace at [cursor.com\u002Fmarketplace](https:\u002F\u002Fcursor.com\u002Fmarketplace). |\n| VS Code Copilot | Command Palette → `Chat: Install Plugin From Source` → `https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode` (plugin format with skills) |\n| Zed | Add as a custom MCP server in Zed settings — [config example](#zed) |\n| Gemini CLI | `gemini extensions install https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode` |\n| OpenAI Codex | No public plugin directory yet — use the [MCP config](#quick-start) or see **Codex local install** below |\n\n> **Extension vs plugin (what to install in VS Code \u002F Cursor):**\n>\n> - The **extension** (Marketplace \u002F Open VSX listing) is a regular VS Code-style extension. It auto-registers the MCP server in Copilot agent mode, Cline, Continue, Roo Code, plus adds a sidebar, status-bar item, interactive graph webview, walkthrough and palette commands. Best for most users.\n> - The **plugins** (`\u002Fadd-plugin` for Cursor, `Chat: Install Plugin From Source` for VS Code Copilot) bundle the MCP server **plus skills + agent instructions** that teach the AI to use SocratiCode tools effectively. Best when you want the agent to be opinionated about using SocratiCode.\n> - You can install both. The extension only registers the MCP server once, so they don't conflict.\n> - **VS Code Copilot note**: the chat plugins feature is in preview. Enable it with `chat.plugins.enabled: true` in your VS Code settings.\n\n> **Codex local plugin install**: Clone the repo and register it in your personal plugin marketplace:\n> ```bash\n> git clone https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode.git ~\u002F.agents\u002Fplugins\u002Fsocraticode\n> ```\n> Then add it to `~\u002F.agents\u002Fplugins\u002Fmarketplace.json`:\n> ```json\n> {\n>   \"plugins\": [\n>     {\n>       \"name\": \"socraticode\",\n>       \"path\": \"~\u002F.agents\u002Fplugins\u002Fsocraticode\"\n>     }\n>   ]\n> }\n> ```\n> Codex will discover the plugin from `.codex-plugin\u002Fplugin.json` on next launch.\n\n> **All other MCP hosts** (Claude Desktop, Windsurf, Cline, Roo Code, OpenCode): Use the [MCP config](#quick-start) — works with any host that supports the MCP protocol.\n\n## Why SocratiCode\n\nI built SocratiCode because I regularly work on existing, large, and complex codebases across different languages and need to quickly understand them and act. Existing solutions were either too limited, insufficiently tested for production use, or bloated with unnecessary complexity. I wanted a single focused tool that does deep codebase intelligence well — zero setup, no bloat, fully automatic — and gets out of the way.\n\n### Built-in Code Search vs SocratiCode\n\n| Feature | Claude Code | Cursor | VS Code Copilot | + SocratiCode |\n|:--------|:-----------:|:------:|:---------------:|:-------------:|\n| Text \u002F grep search | ✅ | ✅ | ✅ | ✅ |\n| Semantic search | — | ✅ | ✅¹ | ✅ |\n| Hybrid search (fused) | — | — | — | ✅ |\n| Code dependency graph | — | — | ✅² | ✅ |\n| Symbol-level impact \u002F blast radius | — | — | — | ✅ |\n| Call-flow tracing (entry point → callees) | — | — | — | ✅ |\n| Interactive visual graph explorer | — | — | — | ✅ |\n| Circular dependency detection | — | — | — | ✅ |\n| Non-code knowledge (schemas, API specs) | — | — | — | ✅ |\n| Cross-project search | — | — | — | ✅ |\n| Branch-aware indexing | — | — | — | ✅ |\n| Multi-agent shared index | — | — | — | ✅ |\n| Tool-independent (survives switching AI) | — | — | — | ✅ |\n| Fully local \u002F private | ✅ | —³ | —⁴ | ✅ |\n| Resumable indexing | — | — | — | ✅ |\n| Live file watching | — | ✅ | — | ✅ |\n\n\u003Csub>¹ VS Code Copilot: remote index via GitHub \u002F Azure DevOps; local \"External Ingest\" gradually rolling out. ² LSP-based Find References \u002F Go to Definition (Usages tool), not a full dependency graph. ³ Cursor: embeddings processed on Cursor servers (encrypted in transit and at rest). ⁴ VS Code Copilot: remote index hosted on GitHub \u002F Azure DevOps. Sources: [Cursor docs](https:\u002F\u002Fdocs.cursor.com\u002Fcontext\u002Fcodebase-indexing), [Claude Code docs](https:\u002F\u002Fdocs.anthropic.com\u002Fen\u002Fdocs\u002Fclaude-code\u002Foverview), [VS Code Copilot docs](https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fcopilot\u002Fchat\u002Fcodebase-context).\u003C\u002Fsub>\n\n> **🔌 The context lives with your codebase, not with the assistant.** Built-in indexes (Cursor's, Copilot's) are tied to that one tool — switch assistants and you start from scratch. SocratiCode is independent: index once, then plug it into Claude Code, Cursor, Copilot, Windsurf, your own private model, or all of them at once. They share the same understanding of your code.\n\nOn VS Code's 2.45M‑line codebase, SocratiCode answers architectural questions with **61% less data**, **84% fewer steps**, and **37× faster** response than a grep‑based AI agent. [Full benchmark →](#real-world-benchmark-vs-code-245m-lines-of-code-with-claude-opus-46)\n\n## Features\n\n- **Hybrid code search** — Built on Qdrant, a purpose-built vector database with HNSW indexing, concurrent read\u002Fwrite, and payload filtering. Each chunk stores both a dense vector and a BM25 sparse vector; the Query API runs both sub-queries in a single round-trip and fuses results with Reciprocal Rank Fusion (RRF). Semantic search handles conceptual queries like \"authentication middleware\" even when those exact words don't appear in the code. BM25 handles exact identifier and keyword lookups. You get the best of both in every query with no tuning required.\n- **Configurable Qdrant** — Use the built-in Docker Qdrant (default, zero config) or connect to your own instance (self-hosted, remote server, or Qdrant Cloud). Configure via `QDRANT_MODE`, `QDRANT_URL`, and `QDRANT_API_KEY` environment variables.\n- **Configurable Ollama** — Use the built-in Docker Ollama (default, zero config) or point to your own Ollama instance (native install -GPU access-, remote server, etc.). Configure via `OLLAMA_MODE`, `OLLAMA_URL`, `EMBEDDING_MODEL` and `EMBEDDING_DIMENSIONS` environment variables.\n- **Multi-provider embeddings** — Switch between Local Ollama (private, GPU access), Docker Ollama (zero-config), OpenAI (`text-embedding-3-small`, fastest), Google Gemini (`gemini-embedding-001`, free tier), LM Studio (local OpenAI-compatible server), or LiteLLM (proxy gateway in front of 100+ providers) with a single environment variable. No provider-specific configuration files.\n- **Private & secure** — Everything runs on your machine — your code never leaves your network. The default Docker setup includes Ollama (embeddings) and Qdrant (vector storage) with no external API calls. No API costs, no token limits. Suitable for air-gapped and on-premises environments. Optional cloud providers (OpenAI, Google Gemini, Qdrant Cloud) are available but never required.\n- **AST-aware chunking** — Files are split at function\u002Fclass boundaries using AST parsing (ast-grep), not arbitrary line counts. This produces higher-quality search results. Falls back to line-based chunking for unsupported languages.\n- **Polyglot code dependency graph** — Static analysis of import\u002Frequire\u002Fuse\u002Finclude statements using ast-grep for 18+ languages. No external tools like dependency-cruiser required. Detects circular dependencies and generates visual Mermaid diagrams.\n- **Language-agnostic** — Works with every programming language, framework, and file type out of the box. No per-language parsers to install, no grammar files to maintain, no \"unsupported language\" limitations. If your AI can read it, SocratiCode can index it.\n- **Incremental indexing** — After the first full index, only changed files are re-processed. Content hashes are persisted in Qdrant so state survives server restarts.\n- **Batched & resumable indexing** — Files are processed in batches of 50, with progress checkpointed to Qdrant after each batch. If the process crashes or is interrupted, the next run automatically resumes from where it left off — already-indexed files are skipped via hash comparison. This keeps peak memory low and makes indexing reliable even for very large codebases.\n- **Live file watching** — Optionally watch for file changes and keep the index updated in real time (debounced 2s). Watcher also invalidates the code graph cache.\n- **Parallel processing** — Files are scanned and chunked in parallel batches (50 at a time) for fast I\u002FO, while embedding generation and upserts are batched separately for optimal throughput.\n- **Multi-project** — Index multiple projects simultaneously. Each gets its own isolated collection with full project path tracking.\n- **Cross-project search** — Search across multiple related projects in a single query. Link projects via `.socraticode.json` or the `SOCRATICODE_LINKED_PROJECTS` env var, then set `includeLinked: true` on `codebase_search`. Results are tagged with project labels and deduplicated via client-side RRF fusion.\n- **Branch-aware indexing** — Maintain separate indexes per git branch by setting `SOCRATICODE_BRANCH_AWARE=true`. Each branch gets its own Qdrant collections, so switching branches instantly switches to the correct index. Ideal for CI\u002FCD pipelines and PR review workflows.\n- **Respects ignore rules** — Honors all `.gitignore` files (root + nested), plus an optional `.socraticodeignore` for additional exclusions. Includes sensible built-in defaults. `.gitignore` processing can be disabled via `RESPECT_GITIGNORE=false`. Dot-directories (e.g. `.agent`) can be included via `INCLUDE_DOT_FILES=true`.\n- **Custom file extensions** — Projects with non-standard extensions (e.g. `.tpl`, `.blade`) can be included via `EXTRA_EXTENSIONS` env var or `extraExtensions` tool parameter. Works for both indexing and code graph.\n- **Configurable infrastructure** — All ports, hosts, and API keys are configurable via environment variables. Qdrant API key support for enterprise deployments.\n- **Enterprise-ready simplicity** — No agent coordination tuning, no memory limit environment variables, no coordinator\u002Fconductor capacity knobs, no backpressure configuration. SocratiCode scales by relying on production-grade infrastructure (Qdrant, proven embedding APIs) rather than complex in-process orchestration.\n- **Auto-setup & zero configuration** — Just install the Claude Plugin\u002FSkill or add the MCP server to your AI host config. On first use, the server automatically checks Docker, pulls images, starts Qdrant and Ollama containers, and downloads the embedding model. No config files, no YAML, no environment variables to tune, no native dependencies to compile. Works everywhere Docker runs.\n- **Session resume** — When reopening a previously indexed project, the file watcher starts automatically on first tool use (search, status, update, or graph query). It catches any changes made since the last session and keeps the index live — no manual action needed.\n- **Auto-start watcher** — The file watcher is automatically activated when you use any SocratiCode tool on an indexed project. It starts after `codebase_index` completes, after `codebase_update`, and on the first `codebase_search`, `codebase_status`, or graph query. You can also start it manually with `codebase_watch { action: \"start\" }` if needed.\n- **Auto-build code graph** — The code dependency graph is automatically built after indexing and rebuilt when watched files change. No need to call `codebase_graph_build` manually unless you want to force a rebuild.\n- **Multi-agent collaboration** — Multiple AI agents (each running their own MCP instance) can work on the same codebase simultaneously and share a single index. One agent triggers indexing, all agents search against the same data. Only one watcher runs per project — every agent benefits from real-time updates. Cross-process file locking coordinates indexing and watching automatically. Ideal for workflows like one agent writing tests while another fixes code, or a planning agent and an implementation agent working in parallel.\n- **Cross-process safety** — File-based locking (`proper-lockfile`) prevents multiple MCP instances from simultaneously indexing or watching the same project. Stale locks from crashed processes are automatically reclaimed. When another MCP process is already watching a project, `codebase_status` reports \"active (watched by another process)\" instead of incorrectly showing \"inactive.\"\n- **Concurrency guards** — Duplicate indexing and graph-build operations are prevented. If you call `codebase_index` while indexing is already running, it returns the current progress instead of starting a second operation.\n- **Graceful stop** — Long-running indexing operations can be stopped safely with `codebase_stop`. The current batch finishes and checkpoints, preserving all progress. Re-run `codebase_index` to resume from where it left off.\n- **Graceful shutdown** — On server shutdown, active indexing operations are given up to 60 seconds to complete, all file watchers are stopped cleanly, and the everything closes gracefully.\n- **Structured logging** — All operations are logged with structured context for observability. Log level configurable via `SOCRATICODE_LOG_LEVEL`.\n- **Graceful degradation** — If infrastructure goes down during watch, the watcher backs off and retries instead of crashing.\n\n## Prerequisites\n\n| Dependency | Purpose | Install |\n|------------|---------|---------|\n| [Docker](https:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop\u002F) | Runs Qdrant (vector DB) and by default Ollama (embeddings) | [docker.com](https:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop\u002F) |\n| Node.js 18+ | Runs the MCP server | [nodejs.org](https:\u002F\u002Fnodejs.org\u002F) |\n\nDocker must be **running** when you use the server in the default `managed` mode. \n\nThe Qdrant container is managed automatically. If you set `QDRANT_MODE=external` and point `QDRANT_URL` at a remote or cloud Qdrant instance, Docker is only needed for Ollama (embeddings) in that case.\n\nThe Ollama container (embeddings) is also managed automatically in the default `auto` mode. SocratiCode first checks if Ollama is already running natively — if so it uses it. Otherwise it manages a Docker container for you. First-time download of the docker images or embedding models may take a few minutes, depending on your internet speed, and is required only at first launch.\n\n### Embedding performance on macOS \u002F Windows\n\nDocker containers on macOS and Windows cannot access the GPU (no Metal or CUDA passthrough). For small projects this is fine, but for medium-to-large codebases the CPU-only container is noticeably slower.\n\n**For best performance, install native Ollama:** download and run the installer from [ollama.com\u002Fdownload](https:\u002F\u002Follama.com\u002Fdownload). Once Ollama is running, SocratiCode will automatically detect and use it — no extra configuration needed (first-time download of the embedding model, if not present, might take a few minutes). This gives you Metal GPU acceleration on macOS and CUDA on Windows\u002FLinux.\n\nIf you prefer speed without a local install, see [OpenAI Embeddings](#openai-embeddings) and [Google Generative AI Embeddings](#google-generative-ai-embeddings) below for cloud-based options. OpenAI is very fast with no local setup required. Google’s free tier is functional but rate-limited. See [Environment Variables](#environment-variables) for configuration details.\n\n## Example Workflow\n\nAll tools default `projectPath` to the current working directory, so you never need to specify a path for the active project.\n\n```\nUser: \"Index this project\"\n→ codebase_index {}\n  ⚡ Indexing started in the background — call codebase_status to check progress\n→ codebase_status {}\n  ⚠ Full index in progress — Phase: generating embeddings (batch 1\u002F1)\n  Progress: 247\u002F1847 chunks embedded (13%) — Elapsed: 12s\n→ codebase_status {}\n  ✓ Indexing complete: 342 files, 1,847 chunks (took 115.2s)\n  File watcher: active (auto-updating on changes)\n\nUser: \"Search for how authentication is handled\"\n→ codebase_search { query: \"authentication handling\" }\n  Runs dense semantic search + BM25 keyword search in parallel, fuses results with RRF\n  Returns top 10 results ranked by combined relevance\n\nUser: \"What files depend on the auth middleware?\"\n→ codebase_graph_query { filePath: \"src\u002Fmiddleware\u002Fauth.ts\" }\n  Returns imports and dependents\n  (graph was auto-built after indexing — no manual build needed)\n\nUser: \"Show me the dependency graph\"\n→ codebase_graph_visualize {}\n  Returns a Mermaid diagram colour-coded by language\n\nUser: \"Are there any circular dependencies?\"\n→ codebase_graph_circular {}\n  Found 2 cycles: src\u002Fa.ts → src\u002Fb.ts → src\u002Fa.ts\n\nUser: \"What breaks if I rename validateUser?\"\n→ codebase_impact { target: \"validateUser\" }\n  Blast radius for symbol: validateUser\n  Hop 1 (3 files): src\u002Fauth\u002Flogin.ts, src\u002Fapi\u002Fusers.ts, tests\u002Fauth.test.ts\n  Hop 2 (5 files): ...\n\nUser: \"What does the server entry point actually do?\"\n→ codebase_flow {}\n  Detected 4 entry point(s):\n    main (cmd\u002Fserver.go:10) — well-known-name:main\n    healthz (src\u002Fapi\u002Froutes.ts:42) — framework:get\n    ...\n→ codebase_flow { entrypoint: \"main\" }\n  └── main (cmd\u002Fserver.go:10)\n      ├── loadConfig (cmd\u002Fserver.go:15)\n      └── startServer (src\u002Fserver.ts:8)\n          └── ...\n\nUser: \"Who calls bcryptCompare and what does it call?\"\n→ codebase_symbol { name: \"bcryptCompare\" }\n  Symbol: bcryptCompare (function)\n  Defined: src\u002Fauth\u002Fhash.ts:42–58\n  Callers (3): ← src\u002Fauth\u002Flogin.ts:12, ← src\u002Fauth\u002Freset.ts:30 ...\n  Callees (1): → compare [unique, 1 candidate]\n```\n\n## Agent Instructions\n\n> **Claude Code plugin users**: These instructions are included automatically as skills in the SocratiCode plugin. You don't need to copy them into `CLAUDE.md`. The section below is for non-Claude Code hosts (VS Code, Cursor, Claude Desktop, etc.).\n\nFor best results, add instructions like the following to your AI assistant's project-level instructions file. The core principle: **search before reading**. The index gives you a map of the codebase in milliseconds; raw file reading is expensive and context-consuming.\n\n**Where to place these instructions** (per IDE):\n\n| IDE \u002F Tool | Instructions file |\n|:-----------|:-----------------|\n| Claude Code | `CLAUDE.md` at project root (auto-loaded). Plugin users get this via skills automatically. |\n| Cursor | `AGENTS.md` at project root, or `.cursor\u002Frules\u002Fsocraticode.mdc` for a dedicated rule file |\n| VS Code Copilot | `.github\u002Fcopilot-instructions.md`, or a custom instructions file in your VS Code User prompts folder |\n| Zed | `AGENTS.md` at project root (Zed auto-reads it), or use the Rules Library to create a default rule |\n| Windsurf | `.windsurfrules` at project root |\n| Claude Desktop \u002F Cline \u002F Roo Code | Add directly to your system prompt configuration |\n\n> **Why this matters**: Installing the MCP server alone gives your agent access to SocratiCode tools, but the agent still decides when to use them. Adding these instructions to your project ensures the agent consistently prefers SocratiCode search over raw file reads, uses the graph for dependency-aware tasks, and follows the search-before-reading workflow.\n\n```markdown\n## Codebase Search (SocratiCode)\n\nThis project is indexed with SocratiCode. Always use its MCP tools to explore the codebase\nbefore reading any files directly.\n\n### Workflow\n\n1. **Start most explorations with `codebase_search`.**\n   Hybrid semantic + keyword search (vector + BM25, RRF-fused) runs in a single call.\n   - Use broad, conceptual queries for orientation: \"how is authentication handled\",\n     \"database connection setup\", \"error handling patterns\".\n   - Use precise queries for symbol lookups: exact function names, constants, type names.\n   - Prefer search results to infer which files to read — do not speculatively open files.\n   - **When to use grep instead**: If you already know the exact identifier, error string,\n     or regex pattern, grep\u002Fripgrep is faster and more precise — no semantic gap to bridge.\n     Use `codebase_search` when you're exploring, asking conceptual questions, or don't\n     know which files to look in.\n\n2. **Follow the graph before following imports.**\n   Use `codebase_graph_query` to see what a file imports and what depends on it before\n   diving into its contents. This prevents unnecessary reading of transitive dependencies.\n   - **Before modifying or deleting a file**, check its dependents with `codebase_graph_query`\n     to understand the blast radius.\n   - **When planning a refactor**, use the graph to identify all affected files before\n     making changes.\n\n3. **Use Impact Analysis BEFORE refactoring, renaming, or deleting code.**\n   The symbol-level call graph (`codebase_impact`, `codebase_flow`, `codebase_symbol`,\n   `codebase_symbols`) goes one step deeper than the file graph: it knows which\n   functions and methods call which.\n   - `codebase_impact` answers \"what breaks if I change X?\" (blast radius — every file\n     that transitively calls into the target).\n   - `codebase_flow` answers \"what does this code do?\" by tracing forward from an entry\n     point. Call with no `entrypoint` to discover candidate entry points (auto-detected\n     via orphans, conventional names like `main()`, framework routes, tests).\n   - `codebase_symbol` gives a 360° view of one function: definition, callers, callees.\n   - `codebase_symbols` lists symbols in a file or searches by name.\n   - Always prefer these over reading multiple files when the question is about\n     dependencies between functions, not concepts.\n\n4. **Read files only after narrowing down via search.**\n   Once search results clearly point to 1–3 files, read only the relevant sections.\n   Never read a file just to find out if it's relevant — search first.\n\n5. **Use `codebase_graph_circular` when debugging unexpected behaviour.**\n   Circular dependencies cause subtle runtime issues; check for them proactively.\n   Also run `codebase_graph_circular` when you notice import-related errors or unexpected\n   initialisation order.\n\n6. **Check `codebase_status` if search returns no results.**\n   The project may not be indexed yet. Run `codebase_index` if needed, then wait for\n   `codebase_status` to confirm completion before searching.\n\n7. **Leverage context artifacts for non-code knowledge.**\n   Projects can define a `.socraticodecontextartifacts.json` config to expose database\n   schemas, API specs, infrastructure configs, architecture docs, and other project\n   knowledge that lives outside source code. These artifacts are auto-indexed alongside\n   code during `codebase_index` and `codebase_update`.\n   - Run `codebase_context` early to see what artifacts are available.\n   - Use `codebase_context_search` to find specific schemas, endpoints, or configs\n     before asking about database structure or API contracts.\n   - If `codebase_status` shows artifacts are stale, run `codebase_context_index` to\n     refresh them.\n\n### When to use each tool\n\n| Goal | Tool |\n|------|------|\n| Understand what a codebase does \u002F where a feature lives | `codebase_search` (broad query) |\n| Find a specific function, constant, or type | `codebase_search` (exact name) or grep if you know already the exact string |\n| Find exact error messages, log strings, or regex patterns | grep \u002F ripgrep |\n| See what a file imports or what depends on it | `codebase_graph_query` |\n| Check blast radius before modifying or deleting a file | `codebase_impact` (symbol-level) or `codebase_graph_query` (file-level) |\n| **What breaks if I change function X?** | `codebase_impact target=X` |\n| **What does this entry point actually do?** | `codebase_flow entrypoint=X` |\n| **List entry points in this codebase** | `codebase_flow` (no args) |\n| **Who calls this function and what does it call?** | `codebase_symbol name=X` |\n| **What functions\u002Fclasses exist in this file?** | `codebase_symbols file=path` |\n| **Search for symbols by name across the project** | `codebase_symbols query=X` |\n| Spot architectural problems | `codebase_graph_circular`, `codebase_graph_stats` |\n| Visualise module structure | `codebase_graph_visualize` |\n| Verify index is up to date | `codebase_status` |\n| Discover what project knowledge (schemas, specs, configs) is available | `codebase_context` |\n| Find database tables, API endpoints, infra configs | `codebase_context_search` |\n```\n\n> **Why semantic search first?** A single `codebase_search` call returns ranked, deduplicated snippets from across the entire codebase in milliseconds. This gives you a broad map at negligible token cost — far cheaper than opening files speculatively. Once you know which files matter, targeted reading is both faster and more accurate. That said, grep remains the right tool when you have an exact string or pattern — use whichever fits the query.\n\n> **Keep the connection alive during indexing.** Indexing runs in the background — the MCP server continues working even when not actively responding to tool calls. However, some MCP hosts might disconnect an idle MCP connection after a period of inactivity, which might cut off the background process. Instruct your AI to call `codebase_status` roughly every 60 seconds after starting `codebase_index` until it completes. This keeps the host connection active and provides real-time progress.\n## Configuration\n\n### Install\n\n#### Claude Code plugin (recommended for Claude Code users)\n\nThe SocratiCode plugin bundles both the MCP server and workflow skills that teach Claude how to use the tools effectively. One install gives you everything:\n\nFrom your shell:\n\n```bash\nclaude plugin marketplace add giancarloerra\u002Fsocraticode\nclaude plugin install socraticode@socraticode\n```\n\nOr from within Claude Code:\n\n```\n\u002Fplugin marketplace add giancarloerra\u002Fsocraticode\n\u002Fplugin install socraticode@socraticode\n```\n\nThe plugin includes:\n- **MCP server** — all 21 SocratiCode tools (search, graph, context artifacts, etc.)\n- **Exploration skill** — teaches Claude the search-before-reading workflow\n- **Management skill** — guides setup, indexing, watching, and troubleshooting\n- **Explorer agent** — delegatable subagent for deep codebase analysis\n\n> If you previously installed SocratiCode as a standalone MCP (`claude mcp add socraticode`), remove it after installing the plugin to avoid duplicates: `claude mcp remove socraticode`\n\n**Auto-updates:** Third-party plugins don't auto-update by default. To enable automatic updates, open `\u002Fplugin` → Marketplaces → select `socraticode` → Enable auto-update. To update manually:\n\nFrom your shell:\n\n```bash\nclaude plugin marketplace update socraticode\nclaude plugin update socraticode@socraticode\n```\n\nOr from within Claude Code:\n\n```\n\u002Fplugin marketplace update socraticode\n\u002Fplugin update socraticode@socraticode\n```\n\n**Configuring environment variables:** SocratiCode works with zero config for most users (local Ollama + managed Qdrant). If you need cloud embeddings, a remote Qdrant, or other customisation:\n\n1. **Claude Code settings** (recommended) — add to `~\u002F.claude\u002Fsettings.json`:\n   ```json\n   {\n     \"env\": {\n       \"EMBEDDING_PROVIDER\": \"openai\",\n       \"OPENAI_API_KEY\": \"sk-...\"\n     }\n   }\n   ```\n   This works in all environments — CLI, VS Code, and JetBrains.\n\n2. **Shell profile** — set vars in `~\u002F.zshrc` or `~\u002F.bashrc`:\n   ```bash\n   export EMBEDDING_PROVIDER=openai\n   export OPENAI_API_KEY=sk-...\n   ```\n   Works when Claude Code is launched from a terminal. Note: IDE-launched sessions (e.g. VS Code opened from Finder\u002FDock) may not inherit shell profile variables — use option 1 instead.\n\nRestart Claude Code after changing variables. See [Environment Variables](#environment-variables) for all options.\n\n#### npx (recommended for all other MCP hosts — no installation)\n\nRequires Node.js 18+ and Docker (running). Already covered in [Quick Start](#quick-start) above, add the following to your `mcpServers` (Claude Desktop, Windsurf, Cline, Roo Code) or `servers` (VS Code project-local `.vscode\u002Fmcp.json`) config:\n\n```json\n    \"socraticode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"socraticode\"]\n    }\n```\n\n#### Zed\n\nAdd SocratiCode as a custom MCP server in Zed's settings (`Zed > Settings > Settings` or `cmd+,`). Under `context_servers`, add:\n\n```json\n{\n  \"context_servers\": {\n    \"socraticode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"socraticode\"],\n      \"env\": {}\n    }\n  }\n}\n```\n\nTo pass environment variables (e.g. for cloud embeddings or branch-aware indexing), add them to the `env` object:\n\n```json\n{\n  \"context_servers\": {\n    \"socraticode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"socraticode\"],\n      \"env\": {\n        \"EMBEDDING_PROVIDER\": \"openai\",\n        \"OPENAI_API_KEY\": \"sk-...\"\n      }\n    }\n  }\n}\n```\n\nZed auto-reads `AGENTS.md` from the project root for agent instructions. Copy the [Agent Instructions](#agent-instructions) block into your project's `AGENTS.md` to ensure the agent uses SocratiCode tools effectively. You can also add them as a default rule in Zed's Rules Library (`agent: open rules library`).\n\n#### From source (for contributors)\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fgiancarloerra\u002Fsocraticode.git\ncd socraticode\nnpm install\nnpm run build\n```\n\nThen use `node \u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js` in place of `npx -y socraticode` in the config examples below.\n\n### MCP host config variants\n\n> All `env` options below apply equally to the `npx` install. Just add the `\"env\"` block to the npx config shown above.\n\nAdd to your MCP settings - `mcpServers` (Claude Desktop, Windsurf, Cline, Roo Code) or `servers` (VS Code project-local `.vscode\u002Fmcp.json`):\n\n#### Default (zero config, from source)\n\n> Using **npx**? Your config is already in [Quick Start](#quick-start). Add any `\"env\"` block from the examples below as needed.\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"]\n    }\n  }\n}\n```\n\n> **Tip**: The default `OLLAMA_MODE=auto` detects native Ollama (port 11434) on startup and uses it if available, otherwise falls back to a managed Docker container. To make your config self-documenting, add an `\"env\"` block with explicit values. See [Environment Variables](#environment-variables) for all options.\n\n#### External Ollama (native install)\n\nIf you have [Ollama](https:\u002F\u002Follama.com) installed natively, set `OLLAMA_MODE=external` and point to your instance:\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"OLLAMA_MODE\": \"external\",\n        \"OLLAMA_URL\": \"http:\u002F\u002Flocalhost:11434\"\n      }\n    }\n  }\n}\n```\n\nThe embedding model is pulled automatically on first use. To pre-download: `ollama pull nomic-embed-text`\n\n#### Remote Ollama server\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"OLLAMA_MODE\": \"external\",\n        \"OLLAMA_URL\": \"http:\u002F\u002Fgpu-server.local:11434\"\n      }\n    }\n  }\n}\n```\n\n#### OpenAI Embeddings\n\nUse OpenAI's cloud embedding API instead of local Ollama. Requires an [API key](https:\u002F\u002Fplatform.openai.com\u002Fapi-keys).\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"EMBEDDING_PROVIDER\": \"openai\",\n        \"OPENAI_API_KEY\": \"sk-...\"\n      }\n    }\n  }\n}\n```\n\n> Defaults: `EMBEDDING_MODEL=text-embedding-3-small`, `EMBEDDING_DIMENSIONS=1536`. For higher quality, use `text-embedding-3-large` with `EMBEDDING_DIMENSIONS=3072`.\n\n#### Google Generative AI Embeddings\n\nUse Google's Gemini embedding API. Requires an [API key](https:\u002F\u002Faistudio.google.com\u002Fapikey).\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"EMBEDDING_PROVIDER\": \"google\",\n        \"GOOGLE_API_KEY\": \"AIza...\"\n      }\n    }\n  }\n}\n```\n\n> Defaults: `EMBEDDING_MODEL=gemini-embedding-001`, `EMBEDDING_DIMENSIONS=3072`.\n\n#### LM Studio (local, OpenAI-compatible)\n\n[LM Studio](https:\u002F\u002Flmstudio.ai\u002F) ships with a Local Server that exposes an OpenAI-compatible\nAPI on `http:\u002F\u002Flocalhost:1234\u002Fv1`. Use this provider when you want to host embedding models\nin LM Studio (e.g. when LM Studio is your single source for both chat and embedding models,\nor when you want a Mac\u002FWindows-friendly desktop UI for managing GGUF models).\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"EMBEDDING_PROVIDER\": \"lmstudio\",\n        \"EMBEDDING_MODEL\": \"nomic-embed-text-v1.5\",\n        \"EMBEDDING_DIMENSIONS\": \"768\"\n      }\n    }\n  }\n}\n```\n\n> **No defaults — `EMBEDDING_MODEL` and `EMBEDDING_DIMENSIONS` are required.** LM Studio has\n> no out-of-the-box embedding model; you load one yourself in the Local Server tab. SocratiCode\n> fails fast if either is missing.\n>\n> Optional: `LMSTUDIO_URL` (default `http:\u002F\u002Flocalhost:1234\u002Fv1`) for non-default ports;\n> `LMSTUDIO_API_KEY` if you've enabled API key auth in LM Studio.\n\n#### LiteLLM (proxy gateway, 100+ providers)\n\n[LiteLLM](https:\u002F\u002Fdocs.litellm.ai\u002Fdocs\u002Fsimple_proxy) Proxy Server exposes an OpenAI-compatible\n`\u002Fv1\u002Fembeddings` endpoint and fans out to any of 100+ underlying providers (OpenAI, Anthropic,\nCohere, Voyage, HuggingFace, Bedrock, Vertex AI, Ollama, ...). Use this provider when you want\n**centralised key management** (one virtual key per developer instead of N provider keys spread\nacross MCP configs), **fallback \u002F load balancing** between embedding backends, or\n**provider-agnostic indexes** that survive a backend swap.\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"node\",\n      \"args\": [\"\u002Fabsolute\u002Fpath\u002Fto\u002Fsocraticode\u002Fdist\u002Findex.js\"],\n      \"env\": {\n        \"EMBEDDING_PROVIDER\": \"litellm\",\n        \"LITELLM_API_KEY\": \"sk-...\",\n        \"EMBEDDING_MODEL\": \"text-embedding-3-small\",\n        \"EMBEDDING_DIMENSIONS\": \"1536\"\n      }\n    }\n  }\n}\n```\n\n> **`LITELLM_API_KEY`, `EMBEDDING_MODEL`, and `EMBEDDING_DIMENSIONS` are all required.**\n> LiteLLM proxies always authenticate (master key or virtual key from `\u002Fkey\u002Fgenerate`); the\n> alias name and underlying dimension come from your `config.yaml`. SocratiCode fails fast on\n> any missing piece.\n>\n> Optional: `LITELLM_URL` (default `http:\u002F\u002Flocalhost:4000\u002Fv1`) — must include the `\u002Fv1`\n> suffix; `LITELLM_SEND_DIMENSIONS=true` to forward the OpenAI `dimensions` parameter\n> through the proxy (only safe for Matryoshka-aware backends like `text-embedding-3-*` or\n> `voyage-3` — non-Matryoshka backends reject the request).\n\n### Git Worktrees (shared index across directories)\n\nIf you use [git worktrees](https:\u002F\u002Fgit-scm.com\u002Fdocs\u002Fgit-worktree) — or any workflow where the same repository lives in multiple directories — each path would normally get its own Qdrant index. This means redundant embedding and storage for what is essentially the same codebase.\n\nSet `SOCRATICODE_PROJECT_ID` to share a single index across all directories of the same project.\n\n#### MCP hosts with git worktree detection (e.g. Claude Code)\n\nSome MCP hosts (like [Claude Code](https:\u002F\u002Fclaude.ai\u002Fclaude-code)) resolve the project root by following git worktree links. Since worktrees point back to the main repository's `.git` directory, the host automatically maps all worktrees to the same project config. This means you only need to configure the MCP server **once** for the main checkout — all worktrees inherit it automatically.\n\nFor Claude Code, add the server with local scope from your main checkout:\n\n```bash\ncd \u002Fpath\u002Fto\u002Fmain-checkout\nclaude mcp add -e SOCRATICODE_PROJECT_ID=my-project --scope local socraticode -- npx -y socraticode\n```\n\nAll worktrees created from this repo will automatically connect to socraticode with the shared project ID. No per-worktree setup needed.\n\n> **Note:** This only works for git worktrees. Separate `git clone`s of the same repo have independent `.git` directories and won't share the config.\n\n#### Other MCP hosts (per-project `.mcp.json`)\n\nFor MCP hosts that don't resolve git worktree paths, add a `.mcp.json` at the root of each worktree (and your main checkout):\n\n```json\n{\n  \"mcpServers\": {\n    \"socraticode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"socraticode\"],\n      \"env\": {\n        \"SOCRATICODE_PROJECT_ID\": \"my-project\"\n      }\n    }\n  }\n}\n```\n\nAdd `.mcp.json` to your `.gitignore` if you don't want it tracked.\n\n#### How it works\n\nWith this config, agents running in `\u002Frepo\u002Fmain`, `\u002Frepo\u002Fworktree-feat-a`, and `\u002Frepo\u002Fworktree-fix-b` all share the same `codebase_my-project`, `codegraph_my-project`, and `context_my-project` Qdrant collections.\n\n**How it works in practice:**\n\n- The semantic index reflects whichever worktree last triggered a file change — but since branches typically differ by only a handful of files, the index is 99%+ accurate for all worktrees\n- Your AI agent reads actual file contents from its own worktree; the shared index is only used for discovery and navigation\n- When changes merge back to main, the file watcher re-indexes the changed files and the index converges\n\n### Team-Shared Index (committed `projectId`)\n\nThe env-var approach above works per-machine. For a stable identifier that every teammate (and CI runner) picks up automatically, commit a `projectId` in `.socraticode.json` at the project root:\n\n```json\n{\n  \"projectId\": \"my-project\"\n}\n```\n\nNow any checkout of the repo — regardless of where it lives on disk or which user account owns it — addresses the same `codebase_my-project`, `codegraph_my-project`, and `context_my-project` Qdrant collections. This is the recommended setup for teams sharing a Qdrant instance: the index is built once and benefits everyone, even across different OS users and laptops with completely different filesystem layouts.\n\nThe value must match `[a-zA-Z0-9_-]+`; whitespace is trimmed, and a missing or empty value falls back to the path-hash default. The `SOCRATICODE_PROJECT_ID` env var, when set, takes precedence over this file — handy for ad-hoc per-machine overrides without touching the repo.\n\n### Cross-Project Search (linked projects)\n\nIf you work across multiple related repositories or packages, you can search them all in a single query.\n\n#### Configuration\n\nCreate a `.socraticode.json` file in your project root:\n\n```json\n{\n  \"linkedProjects\": [\n    \"..\u002Fshared-lib\",\n    \"\u002Fabsolute\u002Fpath\u002Fto\u002Fother-project\"\n  ]\n}\n```\n\nOr set the `SOCRATICODE_LINKED_PROJECTS` environment variable (comma-separated paths):\n\n```bash\nSOCRATICODE_LINKED_PROJECTS=\"..\u002Fshared-lib,\u002Fabsolute\u002Fpath\u002Fto\u002Fother-project\"\n```\n\nBoth sources are merged and deduplicated. Relative paths are resolved from the project root. Non-existent paths are silently skipped.\n\n#### Usage\n\nPass `includeLinked: true` to `codebase_search`:\n\n> Search for \"authentication middleware\" with includeLinked: true\n\nResults are tagged with `[project-name]` labels showing which project each result came from. The current project always has highest priority for deduplication — if the same file exists in multiple linked projects, the current project's version wins.\n\n> **Note:** Each linked project must be independently indexed (`codebase_index`) before it can be searched.\n\n### Branch-Aware Indexing\n\nBy default, all branches of a project share the same index. When you switch branches, changed files are re-indexed by the watcher, and the index reflects the current branch state.\n\nFor workflows where you need **separate, persistent indexes per branch** — such as CI\u002FCD pipelines or comparing code across branches — enable branch-aware mode:\n\n```bash\nSOCRATICODE_BRANCH_AWARE=true\n```\n\nWith this enabled, collection names include the branch name (e.g. `codebase_abc123__main`, `codebase_abc123__feat_my-feature`). Each branch maintains its own independent index, code graph, and context artifacts.\n\n**When to use:**\n- CI\u002FCD pipelines that index each branch\u002FPR separately\n- Comparing search results across branches\n- Keeping a pristine `main` index unaffected by feature branch changes\n\n**When NOT to use:**\n- Local development with frequent branch switching (default shared index is more efficient)\n- Projects tracked via `SOCRATICODE_PROJECT_ID` (explicit IDs bypass branch detection)\n\n> **How it works:** `projectIdFromPath()` detects the current git branch via `git rev-parse --abbrev-ref HEAD` and appends a sanitized branch suffix (e.g. `feat\u002Fmy-feature` → `feat_my-feature`) to the hash-based project ID. Detached HEAD states fall back to the branchless ID.\n\n### Available tools\n\nOnce connected, 21 tools are available to your AI assistant:\n\n#### Indexing\n\n| Tool | Description |\n|------|-------------|\n| `codebase_index` | Start indexing a codebase in the background (poll `codebase_status` for progress) |\n| `codebase_stop` | Gracefully stop an in-progress indexing operation (current batch finishes and checkpoints; resume with `codebase_index`) |\n| `codebase_update` | Incremental update — only re-indexes changed files |\n| `codebase_remove` | Remove a project's index (safely stops watcher, cancels in-flight indexing\u002Fupdate, waits for graph build) |\n| `codebase_watch` | Start\u002Fstop file watching — on start, catches up missed changes then watches for future ones |\n\n#### Search\n\n| Tool | Description |\n|------|-------------|\n| `codebase_search` | Hybrid semantic + keyword search (dense + BM25, RRF-fused) with optional file path, language filters, and cross-project search (`includeLinked`) |\n| `codebase_status` | Check index status and chunk count |\n\n#### Code Graph\n\n| Tool | Description |\n|------|-------------|\n| `codebase_graph_build` | Build a polyglot dependency graph (runs in background — poll with `codebase_graph_status`) |\n| `codebase_graph_query` | Query imports and dependents for a specific file |\n| `codebase_graph_stats` | Get graph statistics (most connected files, orphans, language breakdown) |\n| `codebase_graph_circular` | Detect circular dependencies |\n| `codebase_graph_visualize` | Generate a Mermaid diagram (`mode=mermaid`, default) or an interactive HTML explorer (`mode=interactive`) of the dependency graph. Interactive mode writes a self-contained page (vendored Cytoscape.js + Dagre, works offline) and opens it in your default browser — file + symbol views, blast-radius overlay, live search, PNG export. |\n| `codebase_graph_status` | Check graph build progress or persisted graph metadata |\n| `codebase_graph_remove` | Remove a project's persisted code graph (waits for in-flight graph build to finish first) |\n\n#### Impact Analysis (symbol-level call graph)\n\nA second graph layer goes one step deeper than file imports — it tracks which functions\nand methods call which. Use these tools BEFORE refactoring, renaming, or deleting code.\n\n| Tool | Description |\n|------|-------------|\n| `codebase_impact` | Blast radius — what files break if you change file\u002Ffunction X (BFS through reverse-call edges) |\n| `codebase_flow` | Trace forward execution flow from an entry point. Call with no args to discover entry points (orphans, `main()`, framework routes, tests) |\n| `codebase_symbol` | 360° view of one symbol — its definition, callers, and callees |\n| `codebase_symbols` | List symbols in a file or search by name across the project |\n\n> **Accepted limits.** The call graph is static-analysis-based — no type inference. Dynamic dispatch (`getattr`, `obj[key](...)`, reflection, `eval`), unexpanded macros, and framework magic (Spring `@Autowired`, Angular DI, Rails `has_many`, decorator-driven routing) are invisible. Callers that reach a method only through these mechanisms will not appear in `codebase_impact`. Treat \"zero callers\" as a hint to double-check on DI-heavy codebases. `codebase_graph_status` reports `unresolvedEdgePct` as a quality signal. See [DEVELOPER.md § Impact Analysis](DEVELOPER.md) for the full list.\n\n#### Interactive graph explorer\n\nAsk your AI *\"show me an interactive graph of this project\"* (or invoke `codebase_graph_visualize` with `mode: \"interactive\"`) and SocratiCode generates a self-contained HTML page and opens it in your default browser:\n\n- **File view** — every source file as a node, imports as edges, language-coloured, circular deps in red.\n- **Symbol view** — toggle to see functions\u002Fclasses\u002Fmethods as nodes with call edges (available when the symbol graph fits within the embed cap; above that threshold the file view remains and the banner points at `codebase_impact` for symbol-level queries).\n- **Sidebar** — click a node to see imports \u002F dependents \u002F symbols-in-file \u002F line numbers, with action buttons for blast radius and call flow.\n- **Right-click any node** → highlights its reverse-transitive closure (who breaks if this changes).\n- **Live search** filters and centres matching nodes. **Layout switcher** — Dagre \u002F force-directed \u002F concentric \u002F breadth-first \u002F grid \u002F circle. **Export PNG** produces a shareable image.\n- **Offline-safe** — Cytoscape.js + Dagre are vendored inside the SocratiCode package. No CDN, no network, works in air-gapped environments.\n\nThe output is a single HTML file (written to the OS temp dir, one per project) that you can also commit to a PR or share on Slack.\n\n#### Management\n\n| Tool | Description |\n|------|-------------|\n| `codebase_health` | Check Docker, Qdrant, and embedding provider status |\n| `codebase_list_projects` | List all indexed projects with paths and metadata |\n| `codebase_about` | Display info about SocratiCode |\n\n#### Context Artifacts\n\n| Tool | Description |\n|------|-------------|\n| `codebase_context` | List all context artifacts defined in `.socraticodecontextartifacts.json` with names, descriptions, and index status |\n| `codebase_context_search` | Semantic search across context artifacts (auto-indexes on first use, auto-detects staleness) |\n| `codebase_context_index` | Index or re-index all artifacts from `.socraticodecontextartifacts.json` |\n| `codebase_context_remove` | Remove all indexed context artifacts for a project (blocked while indexing is in progress) |\n\n## Language Support\n\nSocratiCode supports languages at three levels:\n\n### Full Support (indexing + code graph + AST chunking)\n\nJavaScript, TypeScript, TSX, Python, Java, Kotlin, Scala, C, C++, C#, Go, Rust, Ruby, PHP, Swift, Bash\u002FShell, HTML, CSS\u002FSCSS, Svelte, Vue\n\nSvelte and Vue: imports extracted from `\u003Cscript>` blocks (re-parsed as TypeScript) and CSS `@import`\u002F`@require` from `\u003Cstyle>` blocks (any combination of `lang`, `scoped`, `module`, `global` attributes). Path aliases from `tsconfig.json`\u002F`jsconfig.json` `compilerOptions.paths` are resolved (including `extends` chains). SCSS partial resolution (`_` prefix convention) is supported.\n\n### Code Graph via Regex + Indexing\n\nDart (import\u002Fexport\u002Fpart), Lua (require\u002Fdofile\u002Floadfile), SASS, LESS (CSS `@import` extraction)\n\n### Indexing Only (hybrid search, line-based chunking)\n\nJSON, YAML, TOML, XML, INI\u002FCFG, Markdown\u002FMDX, RST, SQL, R, Dockerfile, TXT, and any file matching a supported extension or special filename (Dockerfile, Makefile, Gemfile, Rakefile, etc.)\n\n**54 file extensions** + 8 special filenames supported out of the box.\n\n## Ignore Rules\n\nThe indexer combines three layers of ignore rules:\n\n1. **Built-in defaults** — `node_modules`, `.git`, `dist`, `build`, lock files, IDE folders, etc.\n2. **`.gitignore`** — All `.gitignore` files in the project (root and nested subdirectories). Set `RESPECT_GITIGNORE=false` to skip `.gitignore` processing entirely.\n3. **`.socraticodeignore`** — Optional file for indexer-specific exclusions. Same syntax as `.gitignore`.\n\n## Context Artifacts\n\nGive the AI awareness of project knowledge beyond source code — database schemas, API specs, infrastructure configs, architecture docs, and more.\n\n### Setup\n\nCreate a `.socraticodecontextartifacts.json` file in your project root (see [`.socraticodecontextartifacts.json.example`](.socraticodecontextartifacts.json.example) for a starter template):\n\n```json\n{\n  \"artifacts\": [\n    {\n      \"name\": \"database-schema\",\n      \"path\": \".\u002Fdocs\u002Fschema.sql\",\n      \"description\": \"Complete PostgreSQL schema — all tables, indexes, constraints, foreign keys. Use to understand what data the app stores and how tables relate.\"\n    },\n    {\n      \"name\": \"api-spec\",\n      \"path\": \".\u002Fdocs\u002Fopenapi.yaml\",\n      \"description\": \"OpenAPI 3.0 spec for the REST API. All endpoints, request\u002Fresponse schemas, auth requirements.\"\n    },\n    {\n      \"name\": \"k8s-manifests\",\n      \"path\": \".\u002Fdeploy\u002Fk8s\u002F\",\n      \"description\": \"Kubernetes deployment manifests. Shows how services are deployed, scaled, and networked.\"\n    }\n  ]\n}\n```\n\nEach artifact has:\n- **`name`** — Unique identifier (used to filter searches)\n- **`path`** — Path to a file or directory (relative to project root, or absolute). Directories are read recursively.\n- **`description`** — Tells the AI what this artifact is and how to use it\n\n### How it works\n\nArtifacts are chunked and embedded into Qdrant using the same hybrid dense + BM25 search as code. On first search, artifacts are auto-indexed. On subsequent searches, staleness is auto-detected via content hashing — changed files are re-indexed transparently.\n\n### Usage\n\n1. **Discover**: `codebase_context` — lists all defined artifacts and their index status\n2. **Search**: `codebase_context_search` — semantic search across all artifacts (or filter by name)\n3. **Re-index**: `codebase_context_index` — force re-index (usually not needed, auto-indexing handles it)\n4. **Clean up**: `codebase_context_remove` — remove all indexed artifacts\n\n### Why this matters: real workflow examples\n\nWithout artifacts, the agent only sees source code. With artifacts, it has the full picture and writes code that fits your project from the start.\n\n**Database schema** — You ask *\"add a last_login timestamp to users.\"* The agent runs `codebase_context_search` for \"users table\", finds the schema uses `snake_case` columns and every table has an `updated_at` with a trigger. The migration it writes matches existing conventions instead of guessing.\n\n```json\n{\n  \"name\": \"database-schema\",\n  \"path\": \".\u002Fdocs\u002Fschema.sql\",\n  \"description\": \"Complete PostgreSQL schema — all tables, columns, types, constraints, indexes, and triggers. Check this before writing migrations to match naming conventions and existing patterns.\"\n}\n```\n\n**API spec** — You ask *\"add a GET endpoint for user preferences.\"* The agent searches the OpenAPI spec, sees all endpoints use Bearer auth, return `{ data, meta }` wrappers, and paginate with `cursor`\u002F`limit`. The new endpoint follows the same patterns automatically.\n\n```json\n{\n  \"name\": \"api-spec\",\n  \"path\": \".\u002Fdocs\u002Fopenapi.yaml\",\n  \"description\": \"OpenAPI 3.0 spec for the REST API — all endpoints, request\u002Fresponse schemas, auth, pagination. Check this before adding or modifying endpoints to match existing conventions.\"\n}\n```\n\n**Domain glossary (DDD)** — You ask *\"add a way to cancel an order.\"* The agent searches your domain glossary, finds that cancellation is modeled as an `OrderVoided` event (not \"cancelled\"), that only orders in `Confirmed` status can be voided, and that the `Fulfillment` bounded context must be notified. The implementation uses the correct domain terms and integrates with the right bounded contexts.\n\n```json\n{\n  \"artifacts\": [\n    {\n      \"name\": \"ubiquitous-language\",\n      \"path\": \".\u002Fdocs\u002Fubiquitous-language.md\",\n      \"description\": \"Domain glossary — bounded context terms, their definitions, and relationships. Always check this before naming entities, events, or commands to use the correct domain language.\"\n    },\n    {\n      \"name\": \"context-map\",\n      \"path\": \".\u002Fdocs\u002Fcontext-mapping.md\",\n      \"description\": \"Bounded context map — context boundaries, relationships (shared kernel, customer-supplier, etc.), and integration patterns. Check b","SocratiCode 是一个企业级代码库智能分析工具，能够实现零配置、本地化及私有化的插件\u002F技能\u002F扩展或MCP服务。它具备混合语义搜索、多语言依赖图谱、符号级影响分析与调用流追踪等核心功能，并提供交互式HTML查看器以及跨项目和分支感知搜索能力。特别适用于需要快速理解和导航大型代码库（超过4000万行代码）的场景，如企业内部开发、代码审查和维护工作。通过减少61%的令牌使用量、84%的API调用次数并提高37倍的速度，SocratiCode显著提升了效率。此外，该项目还支持数据库\u002FAPI\u002F基础设施知识管理，且正在推出云服务测试版。",2,"2026-06-11 03:51:06","high_star"]