Skip to main content
Glama

Website GitHub Actions Workflow Status GitHub License GitHub Release Made with Rust

Docdex

저장소를 사람과 AI가 신뢰할 수 있는 빠르고 개인적인 컨텍스트로 전환하세요.

Docdex는 문서 및 소스 코드를 위한 로컬 우선 인덱서 및 검색 데몬입니다. 원시 파일과 AI 어시스턴트 사이에서 작동하며, 코드를 클라우드 벡터 저장소에 업로드하지 않고도 결정론적 검색, 코드 인텔리전스 및 지속적인 메모리를 제공합니다.

⚡ 왜 Docdex인가요?

대부분의 AI 도구는 "grep"(빠르지만 단순함)이나 호스팅된 RAG(느리고 업로드가 필요함)에 의존합니다. Docdex는 로컬에서 실행되고, 코드 구조를 이해하며, AI 에이전트에게 지속적인 메모리를 제공합니다.

문제

일반적인 접근 방식

Docdex 솔루션

컨텍스트 찾기

grep/rg (노이즈가 많고 문자 그대로 일치)

의도에 기반한 순위가 매겨진 구조화된 결과

코드 개인정보 보호

호스팅된 RAG (코드 업로드 필요)

로컬 전용 인덱싱. 코드는 사용자의 컴퓨터에 유지됩니다.

분산된 검색

IDE 전용 검색창

CLI, HTTP 및 MCP 클라이언트를 동시에 지원하는 공유 데몬

코드 인식

문자열 일치

종속성과 정의를 이해하는 AST 및 영향 그래프


Related MCP server: mcp-server-tree-sitter

🚀 기능

  • 📚 문서 인덱싱: 저장소 문서를 즉시 순위를 매기고 요약합니다.

  • 🧠 AST 및 영향 그래프: 함수 의도로 검색하고 하위 종속성을 추적합니다(Rust, Python, JS/TS, Go, Java, C++ 등 지원).

  • 💾 저장소 메모리: 프로젝트 사실, 결정 사항 및 메모를 로컬에 저장합니다.

  • 👤 에이전트 메모리: 다양한 저장소에서 사용자 기본 설정(예: "간결한 글머리 기호 사용")을 기억합니다.

  • 🗂️ 대화 메모리: 대화 내용을 가져오고, 깨우기 번들을 작게 유지하며, 저장소 범위의 요약, 일기 항목 및 작업 메모리를 도출합니다.

  • 🕸️ 시간적 지식 그래프: 타임라인 및 근접 쿼리를 위해 보관된 대화에서 엔티티, 에지, 에피소드 및 코드 관련 링크를 추출합니다.

  • 🧭 깨우기 + 프로젝트 맵 컨텍스트: OpenAI 호환 채팅 완료에 소형 깨우기 번들, 프로필 진실 및 캐시된 Project map: 컨텍스트를 주입합니다.

  • 🔌 MCP 네이티브: Claude Desktop, Cursor, Windsurf와 같은 도구에 대해 자동 구성됩니다.

  • 🌐 웹 강화: 로컬 LLM 필터링(Ollama를 통한)을 포함한 선택적 웹 검색.


📦 설치 및 설정

한 번 설치하고 에이전트를 Docdex에 연결하면 백그라운드에서 계속 작동합니다.

1. npm을 통한 설치 (권장)

Node.js >= 18이 필요합니다. 이 명령은 운영 체제(macOS, Linux, Windows)에 맞는 올바른 바이너리를 다운로드합니다.

npm i -g docdex
WARNING

Windows 요구 사항: Docdex는 MSVC 런타임을 사용합니다. docdex/docdexd를 실행하기 전에 **Microsoft Visual C++ Redistributable 2015-2022 (x64)**를 설치하세요.

2. 자동 구성

다음 클라이언트 중 하나가 설치되어 있으면 Docdex가 로컬 MCP 엔드포인트(데몬 HTTP/SSE)를 사용하도록 자동으로 구성합니다:

Claude Desktop, Cursor, Windsurf, Cline, Roo Code, Continue, VS Code, PearAI, Void, Zed, Codex.

참고: 설치 후 AI 클라이언트를 다시 시작하세요.


🛠️ 사용 워크플로우

1. 저장소 인덱싱

인덱스와 그래프 데이터를 빌드하려면 이 명령을 한 번 실행하세요.

docdexd index --repo /path/to/my-project

2. 데몬 시작

공유 서버를 시작합니다. 이 서버는 HTTP 요청과 MCP 연결을 처리합니다.

docdex start
# or: docdexd daemon --host 127.0.0.1 --port 28491

3. 질문하기 (CLI)

터미널에서 직접 대화할 수 있습니다.

docdexd chat --repo /path/to/my-project --query "how does auth work?"

🔌 모델 컨텍스트 프로토콜 (MCP)

Docdex는 AI 에이전트의 "두뇌"가 되도록 설계되었습니다. 에이전트가 연결하는 MCP 엔드포인트를 노출합니다.

아키텍처

flowchart LR
  Repo[Repo on disk] --> Indexer[Docdex Indexer]
  Indexer --> Daemon[Docdex Daemon]
  Daemon -->|HTTP + SSE| MCPClient[MCP Client]
  MCPClient --> Host[AI Agent / Editor]

데몬 HTTP/SSE 엔드포인트를 사용하세요. 샌드박스 클라이언트의 경우, Docdex는 로컬 IPC(Unix 소켓 또는 Windows 명명된 파이프)를 통해 MCP를 제공할 수도 있으며, HTTP/SSE는 대부분의 MCP 클라이언트의 기본값으로 유지됩니다.

수동 구성

클라이언트를 수동으로 구성해야 하는 경우:

JSON (Claude/Cursor/Continue):

{
  "mcpServers": {
    "docdex": {
      "url": "http://127.0.0.1:28491/v1/mcp/sse"
    }
  }
}

Claude Code (CLI) JSON (~/.claude.json 또는 프로젝트 .mcp.json):

{
  "mcpServers": {
    "docdex": {
      "type": "http",
      "url": "http://127.0.0.1:28491/v1/mcp"
    }
  }
}

TOML (Codex):

[mcp_servers.docdex]
url = "http://127.0.0.1:28491/v1/mcp"
tool_timeout_sec = 300
startup_timeout_sec = 300

🤖 기능 및 예시

1. AST 및 영향 분석

"addressGenerator"라는 문자열만 찾지 말고, 정의와 그것이 영향을 미치는 대상을 찾으세요.

# Find definition
curl "http://127.0.0.1:28491/v1/ast?name=addressGenerator&pathPrefix=src"

# Track downstream impact (what breaks if I change this?)
curl "http://127.0.0.1:28491/v1/graph/impact?file=src/app.ts&maxDepth=3"

2. 메모리 시스템

Docdex를 사용하면 나중에 검색을 통해 기억할 수 있는 "사실"을 저장할 수 있습니다.

저장소 메모리 (프로젝트별):

# Teach the repo a fact
docdexd memory-store --repo . --text "Payments retry up to 3 times with backoff."

# Recall it later
docdexd memory-recall --repo . --query "payments retry policy"

에이전트 메모리 (사용자 기본 설정):

# Set a style preference
docdexd profile add --agent-id "default" --category style --content "Use concise bullet points."

3. 대화 메모리

대화 메모리는 기본적으로 저장소 범위이며 선택 사항입니다. 저장소가 없는 세션은 명시적인 대화 네임스페이스를 사용해야 하므로 저장소 아카이브를 실수로 재사용하지 않습니다. 하위 시스템은 대화 내용을 가져오고, 에피소드 요약 및 작업 메모리를 저장하며, 일기 항목과 시간적 KG 사실을 knowledge.db로 도출하고, 엄격한 깨우기 예산 내에서 기억을 유지합니다.

CLI 아카이브, 일기 및 후크 명령은 HTTP 기반 래퍼이므로 먼저 docdex start 또는 docdexd daemon을 시작하세요.

# Archive and inspect transcripts
docdexd conversations import --repo . ./session.txt --format plain_text --agent-id codex
docdexd conversations list --repo . --agent-id codex
docdexd conversations search --repo . "timeline_index"
docdexd conversations read --repo . <session_id>

# Import into an explicit global conversation namespace instead of a repo archive
docdexd conversations import --conversation-namespace shared-team ./session.txt --format plain_text --agent-id codex
docdexd conversations search --conversation-namespace shared-team "timeline_index"

# Keep agent diary notes alongside imported sessions
docdexd diary write --repo . --agent-id codex "Wake-up rollout validated against knowledge.db timeline output."
docdexd diary read --repo . --agent-id codex

# Trigger durable summarization from an external transcript
docdexd hook conversation --repo . \
  --action session_close_summarization \
  --source codex \
  --agent-id codex \
  --transcript ./session.txt \
  --format plain_text \
  --wait-for-processing

# Build a compact wake-up bundle over recent context
curl -X POST http://127.0.0.1:28491/v1/wakeup \
  -H "Content-Type: application/json" \
  -d '{"agent_id":"codex","query":"timeline_index","max_tokens":96}'

# Address the same archive over HTTP without repo_id
curl -X POST http://127.0.0.1:28491/v1/wakeup \
  -H "Content-Type: application/json" \
  -H "x-docdex-conversation-namespace: shared-team" \
  -d '{"agent_id":"codex","query":"timeline_index","max_tokens":96}'

# Explore derived repo-scoped knowledge facts and provenance
curl "http://127.0.0.1:28491/v1/kg/query?q=knowledge.db&limit=10"
curl "http://127.0.0.1:28491/v1/kg/search/nodes?q=knowledge&limit=10"
curl "http://127.0.0.1:28491/v1/kg/neighborhood?entity=knowledge.db&limit=10"
curl "http://127.0.0.1:28491/v1/kg/timeline?entity=knowledge.db&limit=10"

# Chat with wake-up + project-map context and inspect reasoning trace metadata
curl -X POST http://127.0.0.1:28491/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "fake-model",
    "messages": [{"role": "user", "content": "What changed around knowledge.db?"}],
    "docdex": {
      "agent_id": "codex",
      "limit": 6,
      "include_libs": true,
      "dag_session_id": "session-123"
    }
  }'

4. 로컬 LLM (Ollama)

Docdex는 임베딩 및 선택적 로컬 채팅을 위해 Ollama를 사용합니다.

  • 설정: 대화형 마법사를 위해 docdex setup을 실행하세요.

  • 수동: Ollama에서 nomic-embed-text가 풀(pull)되었는지 확인하세요 (ollama pull nomic-embed-text).

  • 사용자 지정 URL:

DOCDEX_OLLAMA_BASE_URL=http://127.0.0.1:11434 docdex start --host 127.0.0.1 --port 28491

⚙️ 구성 및 HTTP API

Docdex는 다음을 제공하는 로컬 데몬으로 실행됩니다:

  • CLI 명령: docdexd chat

  • HTTP API: /search, /v1/capabilities, /v1/search/rerank, /v1/search/batch, /v1/chat/completions, /v1/ast, /v1/graph/impact, /v1/conversations/*, /v1/diary/*, /v1/hooks/conversation, /v1/wakeup, /v1/kg/*

  • MCP 엔드포인트: /v1/mcp/v1/mcp/sse

  • 기능 협상 도구: docdex_capabilities, docdex_rerank, docdex_batch_search, docdex_conversation_*, docdex_diary_*, docdex_conversation_hook, docdex_wakeup, docdex_kg_*

다중 저장소 설정

단일 데몬을 실행하고 필요에 따라 추가 저장소를 마운트하세요.

docdex start --port 28491

# Mount repos and capture repo_id values
curl -X POST "http://127.0.0.1:28491/v1/initialize" \
  -H "Content-Type: application/json" \
  -d '{"rootUri":"file:///path/to/repo-a"}'

curl -X POST "http://127.0.0.1:28491/v1/initialize" \
  -H "Content-Type: application/json" \
  -d '{"rootUri":"file:///path/to/repo-b"}'

참고:

  • 하나 이상의 저장소가 마운트되거나 데몬이 기본 저장소 없이 시작될 때, HTTP 요청에 x-docdex-repo-id: <sha256>을 포함하세요.

  • MCP 세션은 initialize.rootUri에 제공된 저장소에 바인딩되며 해당 저장소를 자동으로 재사용합니다.

보안

  • 보안 모드: 기본적으로 Docdex는 루프백이 아닌 바인드에서 TLS를 강제합니다.

  • 루프백: 127.0.0.1은 로컬 에이전트의 경우 TLS 없이 액세스할 수 있습니다.

  • 네트워크에 노출하려면(주의해서 사용) --expose--auth-token을 사용하세요.


📚 더 알아보기

  • 상세 사용법: docs/usage.md

  • API 참조: docs/http_api.md

  • MCP 사양: docs/mcp/errors.md

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bekirdag/docdex'

If you have feedback or need assistance with the MCP directory API, please join our Discord server