Docdex
概述
安裝
內容詳情
替代品
什麼是Docdex?
Docdex是一個專門為代碼項目設計的本地文檔搜索引擎。它能夠自動掃描項目中的文檔文件(如Markdown、文本文件),建立本地索引,然後讓你通過簡單的搜索快速找到相關的文檔內容。所有數據都存儲在本地,無需連接到互聯網或任何外部服務。如何使用Docdex?
使用Docdex非常簡單:首先安裝它,然後在你的項目目錄中運行索引命令,最後啟動服務即可。你可以通過HTTP API或命令行工具搜索文檔,搜索結果會以結構化的方式返回,非常適合集成到開發工作流中。適用場景
Docdex特別適合以下場景: 1. 大型項目中有大量文檔需要快速查找 2. 團隊協作時需要統一文檔搜索入口 3. 集成到AI編程助手(如GitHub Copilot、Cursor等)中提供上下文 4. 本地開發環境需要快速查閱項目文檔 5. 需要保護敏感文檔內容不外洩的場景主要功能
本地索引
所有文檔索引都存儲在本地磁盤上,無需網絡連接或外部服務,確保數據隱私和安全。
即時文件監控
服務運行時自動監控文檔文件的變化,並即時更新索引,確保搜索結果始終是最新的。
多接口支持
提供HTTP API和命令行兩種訪問方式,方便集成到各種開發工具和工作流中。
AI助手友好
專門為AI編程助手優化,提供簡潔的API和適合提示工程的輸出格式。
安全特性
內置多種安全機制,包括認證令牌、IP白名單、速率限制和TLS支持,保護文檔訪問安全。
MCP協議支持
支持Model Context Protocol(MCP),可以與支持MCP的AI開發工具(如Cursor、Claude Desktop等)無縫集成。
優勢
完全本地運行,數據不會離開你的機器,保護隱私和安全
輕量級設計,資源佔用少,啟動快速
支持即時文件監控,索引自動更新
提供多種安全選項,適合企業環境使用
與主流AI開發工具兼容性好
開源項目,可以自定義和擴展功能
侷限性
僅支持文本和Markdown格式文檔,不支持PDF、Word等二進制格式
需要手動配置和啟動服務,不適合完全不懂命令行的用戶
索引大型項目可能需要一些時間和磁盤空間
高級安全功能需要額外配置
如何使用
安裝Docdex
通過npm全局安裝Docdex,或者使用npx臨時運行。確保你的系統已安裝Node.js 18或更高版本。
創建文檔索引
在你的項目目錄中運行索引命令,Docdex會自動掃描所有文檔文件並創建本地索引。
啟動搜索服務
啟動HTTP服務,這樣你就可以通過API搜索文檔了。默認監聽本地端口46137。
搜索文檔
現在你可以通過HTTP API或命令行搜索文檔了。
使用案例
為新團隊成員提供項目文檔搜索
當新成員加入項目時,他們可以通過Docdex快速搜索項目文檔,瞭解代碼結構、API設計和開發規範,而不需要手動瀏覽大量文件。
AI編程助手集成
將Docdex集成到Cursor或Claude Desktop等AI編程工具中,當AI助手需要了解項目文檔時,可以自動搜索相關文檔作為上下文。
代碼審查前文檔檢查
在提交代碼審查前,開發者可以搜索相關文檔,確保代碼實現符合項目文檔中的規範和最佳實踐。
常見問題
Docdex支持哪些文檔格式?
Docdex主要支持文本格式的文檔,包括:.md, .markdown, .mdx, .txt 文件。不支持PDF、Word、Excel等二進制格式。
索引會佔用多少磁盤空間?
索引文件通常比原始文檔小很多,具體大小取決於文檔數量和內容。一般來說,索引大小大約是原始文檔總大小的10-20%。
如何保護敏感文檔不被索引?
Docdex提供了多種排除機制:
1. 使用--exclude-dir參數排除特定目錄
2. 使用--exclude-prefix參數排除特定路徑前綴
3. 默認已排除常見敏感目錄如.git、node_modules等
Docdex可以在團隊中共享使用嗎?
可以,但需要注意:
1. 每個團隊成員需要單獨運行索引命令
2. 或者可以將索引目錄共享,但需要確保文件權限正確
3. 建議將.docdex/目錄添加到.gitignore中,避免索引文件被提交到版本控制
如何與我的IDE或編輯器集成?
有幾種集成方式:
1. 通過HTTP API集成到編輯器插件中
2. 使用MCP模式與支持MCP的編輯器(如Cursor)集成
3. 創建自定義的編輯器命令調用Docdex CLI
Docdex支持中文搜索嗎?
是的,Docdex支持中文搜索。它使用基於tantivy的全文搜索引擎,支持多種語言的文本分析。
相關資源
GitHub倉庫
Docdex的源代碼和最新版本
npm包頁面
Docdex的npm包信息和安裝說明
Model Context Protocol文檔
MCP協議官方文檔,瞭解如何與AI工具集成
問題反饋和討論
報告問題、提出功能請求或參與討論
安裝
複製以下命令到你的Client進行配置
{
"mcpServers": {
"docdex": {
"command": "docdexd",
"args": ["mcp", "--repo", ".", "--log", "warn", "--max-results", "8"],
"env": {}
}
}
}注意:您的密鑰屬於敏感信息,請勿與任何人分享。
🚀 Docdex
Docdex 是一款輕量級的本地文檔索引器和搜索守護程序。它按項目運行,對 Markdown 或文本格式的文檔進行本地索引存儲,可通過 HTTP 或 CLI 為任何編碼輔助工具提供排名前 k 的文檔片段,無需外部服務或上傳數據。
🚀 快速開始
# 安裝(npm)
npm i -g docdex
# 或臨時使用
npx docdex --version
# 為倉庫或工作區創建完整索引
docdexd index --repo /path/to/repo
# 啟動 HTTP API 並即時監控文件變化(安全模式需要身份驗證令牌)
docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --auth-token <token>
# 若為本地使用且無需令牌,可添加 --secure-mode=false
# docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --secure-mode=false
# 通過 CLI 進行臨時搜索(JSON 格式輸出)
docdexd query --repo /path/to/repo --query "otp flow" --limit 5
✨ 主要特性
- 按倉庫本地索引:對 Markdown 或文本文件進行本地索引(基於 tantivy,無需網絡調用)。
- 統一索引接口:HTTP API(
/search、/snippet、/healthz)和 CLI(query、ingest、self-check)共享同一索引。 - 即時文件監控:服務運行時即時監控文件變化,實現增量更新。
- 安全配置選項:支持 TLS(手動配置證書或使用 Certbot),默認需要身份驗證令牌(可通過
--secure-mode=false禁用),默認僅允許本地迴環訪問,具備默認的速率限制、請求大小限制、嚴格的狀態目錄權限設置、審計日誌,支持 chroot/權限降級/網絡隔離(Unix)。 - 適配編碼輔助工具:輸出格式適用於編碼輔助工具,提供摘要、片段和文檔元數據。
- 對 AI 友好:
GET /ai-help返回一個 JSON 指南,包含端點、CLI 命令、限制和最佳實踐,方便智能代理使用。
📦 安裝指南
- 環境要求:需要 Node.js >= 18。
- 安裝命令:
npm i -g docdex(或運行npx docdex --version進行驗證)。 - 命令說明:
docdex(別名docdexd)會從匹配的 GitHub 版本中下載適合你平臺的二進制文件。 - 支持平臺:macOS(arm64、x64)、Linux glibc(arm64、x64)、Linux musl(arm64、x64)、Windows(x64、arm64);安裝程序會獲取匹配平臺的發佈資產。
- 自定義發佈:如果你從分叉倉庫發佈,安裝前設置
DOCDEX_DOWNLOAD_REPO=<owner/repo>,以便下載器獲取你的發佈資產。 - 分發方式:二進制文件存儲在 GitHub Releases 中(npm 包較小);安裝後會根據 npm 版本獲取
docdexd-<platform>.tar.gz文件。 - 發佈方式:使用 npm Trusted Publishing(OIDC),無需 NPM 令牌;具體配置見
.github/workflows/release.yml。
💻 使用示例
基礎用法
# 為倉庫創建索引
docdexd index --repo /path/to/repo
# 啟動 HTTP API 服務
docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --auth-token <token>
# 通過 CLI 進行搜索
docdexd query --repo /path/to/repo --query "otp flow" --limit 5
高級用法
# 使用 Certbot 配置 TLS
docdexd serve --repo <repo> --host 0.0.0.0 --port 46137 --certbot-domain docs.example.com
# 禁用安全模式(本地開發使用)
docdexd serve --repo /path/to/repo --host 127.0.0.1 --port 46137 --log info --secure-mode=false
📚 詳細文檔
功能概述
Docdex 對倉庫內的 Markdown 或文本文件進行索引並本地存儲(默認索引存儲在 <repo>/.docdex/index 目錄下,基於 tantivy)。通過 HTTP(/search、/snippet、/healthz)和 CLI(query、ingest、self-check)提供統一的索引訪問接口,方便自動化和交互式使用。服務運行時會即時監控文件變化,實現增量更新。同時,具備一系列安全配置選項,保障服務的安全性。
索引規則
- 支持的文件類型:
.md、.markdown、.mdx、.txt(可通過擴展DEFAULT_EXTENSIONS添加更多類型)。 - 跳過的目錄:涵蓋多種生態系統中的 VCS、構建、緩存和供應商文件夾(如
.git、.hg、.svn、node_modules等;完整列表見DEFAULT_EXCLUDED_DIR_NAMES)。 - 跳過的相對前綴:
logs/、.docdex/、.docdex/logs/等。 - 片段大小:摘要約 360 個字符(最多 4 段);片段約 420 個字符。
HTTP API
GET /healthz:返回ok,此端點無需身份驗證和速率限制(IP 白名單仍然適用)。GET /search?q=<text>&limit=<n>&snippets=<bool>&max_tokens=<u64>:返回包含文檔 ID、相對路徑、摘要、片段、分數和令牌估計的搜索結果。設置snippets=false可僅返回摘要;設置max_tokens可過濾超出預算的結果。GET /snippet/:doc_id?window=<lines>&q=<query>&text_only=<bool>&max_tokens=<u64>:返回包含可選高亮片段的文檔信息。當查詢高亮為空時,返回預覽(默認窗口為 40 行)。設置text_only=true可僅返回文本片段;設置max_tokens可過濾超出預算的片段。GET /ai-help:返回一個 JSON 快速指南,包含端點、CLI 命令、限制和最佳實踐,供智能代理使用。GET /metrics:返回 Prometheus 格式的速率限制、身份驗證和錯誤指標計數器。
CLI 命令
serve --repo <path> [--host 127.0.0.1] [--port 46137] [--log info]:啟動 HTTP API 服務並即時監控文件變化。index --repo <path>:重建整個索引。ingest --repo <path> --file docs/new.md:對單個文件進行重新索引。query --repo <path> --query "<text>" [--limit 8]:執行搜索並以 JSON 格式輸出結果。self-check --repo <path> --terms "foo,bar" [--limit 5]:在啟用訪問前掃描索引中的敏感詞彙。若發現敏感詞彙,退出碼不為 0,並報告示例結果和是否還有其他匹配項。默認包含內置的令牌/密碼模式,可通過--include-default-patterns=false禁用,僅使用提供的詞彙進行掃描。
配置選項
| 屬性 | 詳情 |
|---|---|
--repo <path> |
要索引的工作區根目錄(默認值:.) |
--state-dir <path> / DOCDEX_STATE_DIR |
覆蓋索引存儲路徑(相對路徑相對於 repo 解析) |
--exclude-prefix a,b,c / DOCDEX_EXCLUDE_PREFIXES |
額外要跳過的相對前綴 |
--exclude-dir a,b,c / DOCDEX_EXCLUDE_DIRS |
額外要跳過的目錄名稱 |
--auth-token <token> / DOCDEX_AUTH_TOKEN |
安全模式下需要的令牌(默認開啟),僅在 --secure-mode=false 時可省略 |
| `--secure-mode <true | false>/DOCDEX_SECURE_MODE` |
--allow-ip a,b,c / DOCDEX_ALLOW_IPS |
可選的逗號分隔的 IP 地址或 CIDR 範圍,允許訪問 HTTP API(默認:安全模式下僅允許本地迴環;安全模式禁用時允許所有訪問) |
--tls-cert / DOCDEX_TLS_CERT 和 --tls-key / DOCDEX_TLS_KEY |
使用提供的證書和密鑰啟用 HTTPS 服務。啟用 TLS 後,非本地迴環綁定必須使用 HTTPS,除非明確禁用 |
--certbot-domain <domain> / DOCDEX_CERTBOT_DOMAIN |
將 TLS 指向 /etc/letsencrypt/live/<domain>/{fullchain.pem,privkey.pem}(Certbot)。與手動配置的 --tls-* 選項衝突 |
--certbot-live-dir <path> / DOCDEX_CERTBOT_LIVE_DIR |
使用包含 fullchain.pem 和 privkey.pem 的特定 Certbot 活動目錄 |
| `--require-tls <true | false>/DOCDEX_REQUIRE_TLS` |
--insecure / DOCDEX_INSECURE_HTTP=true |
即使啟用 TLS,也允許非本地迴環綁定使用純 HTTP(僅在可信代理後使用) |
--max-limit <n> / DOCDEX_MAX_LIMIT |
限制 HTTP 請求中的 limit 參數最大值(默認:8) |
--max-query-bytes <n> / DOCDEX_MAX_QUERY_BYTES |
拒絕查詢字符串長度超過 n 字節的請求(默認:4096) |
--max-request-bytes <n> / DOCDEX_MAX_REQUEST_BYTES |
拒絕 Content-Length 或大小提示超過 n 字節的請求(默認:16384) |
--rate-limit-per-min <n> / DOCDEX_RATE_LIMIT_PER_MIN |
每個 IP 每分鐘的請求預算(安全模式下未設置或為 0 時默認 60;安全模式禁用時,0 表示禁用速率限制) |
--rate-limit-burst <n> / DOCDEX_RATE_LIMIT_BURST |
速率限制器的可選突發容量(默認值為每分鐘限制,0 時取該值) |
--audit-log-path <path> / DOCDEX_AUDIT_LOG_PATH |
將審計日誌以 JSONL 格式寫入指定路徑(默認:<state-dir>/audit.log) |
--audit-max-bytes <n> / DOCDEX_AUDIT_MAX_BYTES |
審計日誌達到指定字節數後進行輪轉(默認:5000000) |
--audit-max-files <n> / DOCDEX_AUDIT_MAX_FILES |
最多保留的輪轉審計日誌文件數量(默認:5) |
--audit-disable / DOCDEX_AUDIT_DISABLE=true:完全禁用審計日誌 |
|
--strip-snippet-html / DOCDEX_STRIP_SNIPPET_HTML=true:在響應中省略 snippet.html,強制僅返回文本片段(默認情況下,HTML 會進行清理) |
|
--disable-snippet-text / DOCDEX_DISABLE_SNIPPET_TEXT=true:在響應中完全省略片段文本和 HTML(僅返回文檔元數據) |
|
| `--access-log <true | false>/DOCDEX_ACCESS_LOG`:輸出包含查詢值脫敏的最小結構化訪問日誌(默認:true) |
--run-as-uid / DOCDEX_RUN_AS_UID,--run-as-gid / DOCDEX_RUN_AS_GID:(Unix)在啟動準備完成後將權限降級到指定的 UID/GID |
|
--chroot <path> / DOCDEX_CHROOT:(Unix)在服務啟動前切換到指定的根目錄;倉庫和狀態路徑必須存在於該沙箱內 |
|
--unshare-net / DOCDEX_UNSHARE_NET=true:(僅 Linux)在服務啟動前隔離網絡命名空間(需要 CAP_SYS_ADMIN/root 權限);在其他平臺上無操作 |
|
--log <level>:在 serve 命令中設置日誌級別(默認:info),或使用 RUST_LOG=docdexd=debug 風格的過濾器 |
版本管理
- 語義化版本:使用帶標籤的版本(
vX.Y.Z)。Rust 包和 npm 包使用相同的版本號。 - 發佈流程:通過 Conventional Commits 和 Release Please 生成發佈說明。它會打開發布 PR,更新
Cargo.toml和npm/package.json,更新變更日誌,並在合併時創建標籤和發佈版本。 - 集成建議:集成時固定到已發佈的版本(如在腳本或 Dockerfile 中),確保升級操作明確且可回滾。
- 從源代碼構建:版本號來自本倉庫的
Cargo.toml;npm 包裝器使用匹配的版本號下載二進制文件。
路徑和默認值
- 狀態/索引目錄:
<repo>/.docdex/index(若該目錄不存在,但舊的<repo>/.gpt-creator/docdex/index存在,Docdex 會重用該索引併發出警告)。該目錄默認以0700權限創建。 - HTTP API 默認地址:服務啟動時默認監聽
127.0.0.1:46137。 - 數據和日誌存儲:Docdex 的數據和日誌存儲在倉庫內部,無需外部服務。
幫助和命令發現
- 列出所有命令和標誌:
docdexd --help。 - 查看所有子命令的幫助信息:
docdexd help-all。 - 查看
serve命令的選項:docdexd serve --help。 - 查看索引選項:
docdexd index --help。 - 查看臨時查詢選項:
docdexd query --help。 - 查看自我檢查掃描選項:
docdexd self-check --help。 - 獲取智能代理幫助信息:
curl http://127.0.0.1:46137/ai-help(若設置了--auth-token,需包含Authorization: Bearer <token>),返回包含端點、限制和最佳實踐的 JSON 列表。 - MCP 幫助和註冊:
docdexd mcp --help列出 MCP 標誌;使用docdexd mcp --repo <repo> --log warn向客戶端註冊。示例 Codex 配置片段:
{
"mcpServers": {
"docdex": {
"command": "docdexd",
"args": ["mcp", "--repo", ".", "--log", "warn", "--max-results", "8"],
"env": {}
}
}
}
- MCP 快速添加命令(適用於流行的智能代理):
- Docdex 助手:
docdex mcp-add --repo /path/to/repo --log warn --max-results 8自動檢測支持的智能代理;添加--all嘗試所有已知客戶端並打印僅支持 UI 操作的客戶端的手動步驟,或添加--remove進行卸載。 - Codex CLI:
codex mcp add docdex -- docdexd mcp --repo /path/to/repo --log warn --max-results 8。 - 通用 JSON 配置(適用於 Cursor、Continue、Windsurf、Cline、Claude Desktop 開發工具):將上述
mcpServers.docdex塊添加到 MCP 配置文件中(路徑因客戶端而異;大多數客戶端接受所示的command/args模式)。 - 手動/僅支持標準輸入輸出的客戶端:手動啟動
docdexd mcp --repo /path/to/repo --log warn --max-results 8,並將客戶端指向該命令或二進制文件。
- Docdex 助手:
- 暴露的工具:
docdex_search:參數{ "query": "<text>", "limit": <int optional>, "project_root": "<path optional>" }。返回{ "results": [...], "repo_root": "...", "state_dir": "...", "limit": <int>, "project_root": "...", "meta": {...} }。docdex_index:參數{ "paths": ["relative/or/absolute"], "project_root": "<path optional>" }。空的paths表示重新索引所有文件;否則,僅索引列出的文件。docdex_files:參數{ "limit": <int optional, default 200, max 1000>, "offset": <int optional, default 0>, "project_root": "<path optional>" }。返回{ "results": [{ "doc_id", "rel_path", "summary", "token_estimate" }], "total", "limit", "offset", "repo_root", "project_root" }。docdex_open:參數{ "path": "<relative file>", "start_line": <int optional>, "end_line": <int optional>, "project_root": "<path optional>" }。返回{ "path", "start_line", "end_line", "total_lines", "content", "repo_root", "project_root" }(拒絕倉庫外的路徑和大文件)。docdex_stats:參數{ "project_root": "<path optional>" }。返回{ "num_docs", "state_dir", "index_size_bytes", "segments", "avg_bytes_per_doc", "generated_at_epoch_ms", "last_updated_epoch_ms", "repo_root", "project_root" }。
- 示例調用:
- 初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}} - 帶工作區根目錄的初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"workspace_root":"/path/to/repo"}}(必須與服務器倉庫匹配;為後續調用設置默認的項目根目錄) - 列出工具:
{"jsonrpc":"2.0","id":2,"method":"tools/list"} - 重新索引:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"docdex_index","arguments":{"paths":[]}}} - 搜索:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"docdex_search","arguments":{"query":"payment auth flow","limit":3,"project_root":"/repo"}}} - 列出文件:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"docdex_files","arguments":{"limit":10,"offset":0}}} - 打開文件:
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"docdex_open","arguments":{"path":"docs/readme.md","start_line":1,"end_line":20}}} - 統計信息:
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"docdex_stats","arguments":{}}}
- 初始化:
- 錯誤處理:無效的 JSON → 代碼 -32700;不支持或缺失
jsonrpc→ -32600;未知的工具或方法 → -32601;無效的參數(空查詢、錯誤的參數、項目根目錄不匹配) → -32602;內部錯誤在error.data中包含reason字符串。 - 智能代理使用指南:編碼前使用簡潔的查詢調用
docdex_search;僅獲取少量結果;若結果看起來過時,調用docdex_index;若你的技術棧不支持 MCP,繼續使用 HTTP 或 CLI 接口。 - 幫助信息:
docdexd mcp --help顯示 MCP 標誌和默認值;docdexd help-all包含一個 MCP 部分,列出工具和使用方法。
故障排除
- 索引過時:重新運行
docdexd index --repo <path>。 - 端口衝突:更改
--host/--port參數。
安全考慮
- 綁定地址:默認綁定
127.0.0.1,除非你在可信的反向代理或防火牆後面,否則不要更改。避免在不可信的網絡上使用--host 0.0.0.0。 - TLS 配置:默認情況下,非本地迴環綁定需要 TLS。僅當流量已在可信代理處終止時,可通過
--require-tls=false或--insecure禁用。 - 外部暴露:若要將服務暴露到外部網絡,建議在前面放置一個反向代理,終止 TLS,並要求身份驗證(基本認證、OAuth 或 mTLS)以及 IP 或 VPN 白名單。示例(nginx):
server {
listen 443 ssl;
server_name docdex.example.com;
ssl_certificate /path/fullchain.pem;
ssl_certificate_key /path/privkey.pem;
auth_basic "Protected";
auth_basic_user_file /etc/nginx/.htpasswd; # 或使用 OAuth/mTLS 替代
allow 10.0.0.0/8;
allow 192.168.0.0/16;
deny all;
location / {
proxy_pass http://127.0.0.1:46137;
proxy_set_header Host $host;
}
}
- 語料庫清理:建議使用經過篩選的暫存目錄,或在索引前使用
--exclude-dir/--exclude-prefix排除敏感或私有路徑。服務會監控repo目錄下的文件變化並進行增量更新。 - 日誌管理:若片段或路徑包含敏感信息,避免在生產環境中使用詳細日誌。反向代理的訪問日誌也可能記錄查詢詞和路徑。
- 最小權限原則:以低權限用戶或容器運行 Docdex,並確保狀態目錄具有受限的權限。
- 發佈前驗證:運行
docdexd query檢查敏感關鍵詞,確保沒有匹配結果。若需要,將索引存儲在加密磁盤上。 - 可選的強化措施:在 HTTP API 或代理上要求身份驗證令牌;非本地主機時強制使用 TLS(默認),僅在可信代理後通過
--require-tls=false/--insecure明確禁用;啟用速率限制(--rate-limit-per-min)並限制limit/請求大小(--max-limit、--max-query-bytes、--max-request-bytes);若嵌入片段,對 HTML 進行轉義或清理,或通過--disable-snippet-text完全禁用片段;狀態目錄默認以0700權限創建,建議由非特權用戶管理,可選擇使用--run-as-uid/--run-as-gid、--chroot或容器化;保持訪問日誌最小化/脫敏(--access-log),在暴露服務前運行self-check檢查敏感詞彙;為了靜態數據的保密性,將狀態目錄放置在加密存儲上或使用主機級磁盤加密。
與 LLM 工具集成
Docdex 與工具無關,以下是與智能代理或代碼生成工具集成的步驟:
- 啟動服務:每個倉庫運行一次
docdexd index --repo <repo>,然後運行docdexd serve --repo <repo> --host 127.0.0.1 --port 46137 --log warn(或直接使用 CLI 而不啟動服務)。 - 環境配置:通過環境變量配置
DOCDEX_STATE_DIR(索引位置)、DOCDEX_EXCLUDE_PREFIXES、DOCDEX_EXCLUDE_DIRS、RUST_LOG=docdexd=debug(可選的詳細日誌)。 - HTTP 查詢:
GET /search?q=<text>&limit=<n>返回{"hits":[{"doc_id","rel_path","score","summary","snippet","token_estimate"}...]};GET /snippet/:doc_id獲取聚焦的片段和文檔元數據。 - CLI 查詢:
docdexd query --repo <repo> --query "<text>" --limit 8(JSON 輸出到標準輸出)。 - 健康檢查:在發出搜索請求前,
GET /healthz應返回ok。 - 將片段注入提示:
"You are building features for this repo. Use the following documentation snippets for context. If a snippet cites a path, keep that path in your response. Snippets:\n<insert docdex snippets here>\nQuestion: <your question>"
MCP(可選的適用於支持 MCP 的客戶端的標準輸入輸出服務器)
Docdex 可以作為 MCP 工具提供者通過標準輸入輸出運行,但不會替代 HTTP 守護進程,你可以根據智能代理或編輯器的需求選擇合適的方式。若你的 MCP 客戶端支持資源模板,Docdex 會宣傳一個 docdex_file 模板(docdex://{path}),該模板委託給 docdex_open。
- 運行命令:
docdexd mcp --repo /path/to/repo --log warn --max-results 8(別名:--mcp-max-results 8)。 - 環境變量覆蓋:
DOCDEX_MCP_MAX_RESULTS限制docdex_search的結果數量(最小值為 1)。 - 打包方式:MCP 服務器集成在主
docdexd二進制文件中(通過docdexd mcp或docdex mcp從 npm 二進制文件調用),無需單獨下載docdex-mcp。 - 向 MCP 客戶端註冊:添加一個名為
docdex的服務器,運行docdexd mcp --repo <repo> --log warn。示例 Codex 配置片段:
{
"mcpServers": {
"docdex": {
"command": "docdexd",
"args": ["mcp", "--repo", ".", "--log", "warn", "--max-results", "8"],
"env": {}
}
}
}
- MCP 快速添加命令(適用於流行的智能代理):
- Docdex 助手:
docdex mcp-add --repo /path/to/repo --log warn --max-results 8自動檢測支持的智能代理;添加--all嘗試所有已知客戶端並打印僅支持 UI 操作的客戶端的手動步驟,或添加--remove進行卸載。 - Codex CLI:
codex mcp add docdex -- docdexd mcp --repo /path/to/repo --log warn --max-results 8。 - 通用 JSON 配置(適用於 Cursor、Continue、Windsurf、Cline、Claude Desktop 開發工具):將上述
mcpServers.docdex塊添加到 MCP 配置文件中(路徑因客戶端而異;大多數客戶端接受所示的command/args模式)。 - 手動/僅支持標準輸入輸出的客戶端:手動啟動
docdexd mcp --repo /path/to/repo --log warn --max-results 8,並將客戶端指向該命令或二進制文件。
- Docdex 助手:
- 暴露的工具:
docdex_search:參數{ "query": "<text>", "limit": <int optional>, "project_root": "<path optional>" }。返回{ "results": [...], "repo_root": "...", "state_dir": "...", "limit": <int>, "project_root": "...", "meta": {...} }。docdex_index:參數{ "paths": ["relative/or/absolute"], "project_root": "<path optional>" }。空的paths表示重新索引所有文件;否則,僅索引列出的文件。docdex_files:參數{ "limit": <int optional, default 200, max 1000>, "offset": <int optional, default 0>, "project_root": "<path optional>" }。返回{ "results": [{ "doc_id", "rel_path", "summary", "token_estimate" }], "total", "limit", "offset", "repo_root", "project_root" }。docdex_open:參數{ "path": "<relative file>", "start_line": <int optional>, "end_line": <int optional>, "project_root": "<path optional>" }。返回{ "path", "start_line", "end_line", "total_lines", "content", "repo_root", "project_root" }(拒絕倉庫外的路徑和大文件)。docdex_stats:參數{ "project_root": "<path optional>" }。返回{ "num_docs", "state_dir", "index_size_bytes", "segments", "avg_bytes_per_doc", "generated_at_epoch_ms", "last_updated_epoch_ms", "repo_root", "project_root" }。
- 示例調用:
- 初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}} - 帶工作區根目錄的初始化:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"workspace_root":"/path/to/repo"}}(必須與服務器倉庫匹配;為後續調用設置默認的項目根目錄) - 列出工具:
{"jsonrpc":"2.0","id":2,"method":"tools/list"} - 重新索引:
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"docdex_index","arguments":{"paths":[]}}} - 搜索:
{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"docdex_search","arguments":{"query":"payment auth flow","limit":3,"project_root":"/repo"}}} - 列出文件:
{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"docdex_files","arguments":{"limit":10,"offset":0}}} - 打開文件:
{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"docdex_open","arguments":{"path":"docs/readme.md","start_line":1,"end_line":20}}} - 統計信息:
{"jsonrpc":"2.0","id":7,"method":"tools/call","params":{"name":"docdex_stats","arguments":{}}}
- 初始化:
- 錯誤處理:無效的 JSON → 代碼 -32700;不支持或缺失
jsonrpc→ -32600;未知的工具或方法 → -32601;無效的參數(空查詢、錯誤的參數、項目根目錄不匹配) → -32602;內部錯誤在error.data中包含reason字符串。 - 智能代理使用指南:編碼前使用簡潔的查詢調用
docdex_search;僅獲取少量結果;若結果看起來過時,調用docdex_index;若你的技術棧不支持 MCP,繼續使用 HTTP 或 CLI 接口。 - 幫助信息:
docdexd mcp --help顯示 MCP 標誌和默認值;docdexd help-all包含一個 MCP 部分,列出工具和使用方法。
HTTPS 和 Certbot
- TLS 支持:支持 PKCS8、PKCS1/RSA 和 SEC1/EC 私鑰(與 Certbot 輸出兼容)。
- 手動配置證書:
docdexd serve --repo <repo> --tls-cert /path/fullchain.pem --tls-key /path/privkey.pem。 - 使用 Certbot 助手:
docdexd serve --repo <repo> --host 0.0.0.0 --port 46137 --certbot-domain docs.example.com(使用/etc/letsencrypt/live/docs.example.com/{fullchain.pem,privkey.pem}),或通過--certbot-live-dir /custom/live/dir指定自定義活動目錄。 - 證書更新:使用 Certbot 時,設置部署鉤子,在證書更新後重啟或重新加載 Docdex(例如,
certbot renew --deploy-hook "systemctl restart docdexd.service"或向進程管理器發送 -HUP 信號)。 - 端口綁定:若直接綁定到 443 端口,需要相應的權限;否則,將 Docdex 綁定到
127.0.0.1,由反向代理終止 TLS。
替代品
A
Acemcp
Acemcp是一個代碼庫索引和語義搜索的MCP服務器,支持自動增量索引、多編碼文件處理、.gitignore集成和Web管理界面,幫助開發者快速搜索和理解代碼上下文。
Python
7.6K
5分
B
Blueprint MCP
Blueprint MCP是一個基於Arcade生態的圖表生成工具,利用Nano Banana Pro等技術,通過分析代碼庫和系統架構自動生成架構圖、流程圖等可視化圖表,幫助開發者理解複雜系統。
Python
6.1K
4分
M
MCP Agent Mail
MCP Agent Mail是一個為AI編程代理設計的郵件式協調層,提供身份管理、消息收發、文件預留和搜索功能,支持多代理異步協作和衝突避免。
Python
6.7K
5分
M
MCP
微軟官方MCP服務器,為AI助手提供最新微軟技術文檔的搜索和獲取功能
11.6K
5分
A
Aderyn
Aderyn是一個開源的Solidity智能合約靜態分析工具,由Rust編寫,幫助開發者和安全研究人員發現Solidity代碼中的漏洞。它支持Foundry和Hardhat項目,可生成多種格式報告,並提供VSCode擴展。
Rust
9.5K
5分
D
Devtools Debugger MCP
Node.js調試器MCP服務器,提供基於Chrome DevTools協議的完整調試功能,包括斷點設置、單步執行、變量檢查和表達式評估等
TypeScript
9.9K
4分
S
Scrapling
Scrapling是一個自適應網頁抓取庫,能自動學習網站變化並重新定位元素,支持多種抓取方式和AI集成,提供高性能解析和開發者友好體驗。
Python
11.4K
5分
M
Mcpjungle
MCPJungle是一個自託管的MCP網關,用於集中管理和代理多個MCP服務器,為AI代理提供統一的工具訪問接口。
Go
0
4.5分

Baidu Map
已認證
百度地圖MCP Server是國內首個兼容MCP協議的地圖服務,提供地理編碼、路線規劃等10個標準化API接口,支持Python和Typescript快速接入,賦能智能體實現地圖相關功能。
Python
29.2K
4.5分

Markdownify MCP
Markdownify是一個多功能文件轉換服務,支持將PDF、圖片、音頻等多種格式及網頁內容轉換為Markdown格式。
TypeScript
23.5K
5分

Firecrawl MCP Server
Firecrawl MCP Server是一個集成Firecrawl網頁抓取能力的模型上下文協議服務器,提供豐富的網頁抓取、搜索和內容提取功能。
TypeScript
83.7K
5分

Sequential Thinking MCP Server
一個基於MCP協議的結構化思維服務器,通過定義思考階段幫助分解複雜問題並生成總結
Python
25.6K
4.5分

Magic MCP
Magic Component Platform (MCP) 是一個AI驅動的UI組件生成工具,通過自然語言描述幫助開發者快速創建現代化UI組件,支持多種IDE集成。
JavaScript
16.9K
5分

Edgeone Pages MCP Server
EdgeOne Pages MCP是一個通過MCP協議快速部署HTML內容到EdgeOne Pages並獲取公開URL的服務
TypeScript
17.5K
4.8分

Notion Api MCP
已認證
一個基於Python的MCP服務器,通過Notion API提供高級待辦事項管理和內容組織功能,實現AI模型與Notion的無縫集成。
Python
14.0K
4.5分

Context7
Context7 MCP是一個為AI編程助手提供即時、版本特定文檔和代碼示例的服務,通過Model Context Protocol直接集成到提示中,解決LLM使用過時信息的問題。
TypeScript
55.5K
4.7分