🏠 Главная › user guide › research gitnexus explorer
{/ Эта страница автоматически создается на основе файла SKILL.md навыка с помощью сайта site/scripts/generate-skill-docs.py. Редактируйте исходный код SKILL.md, а не эту страницу. /}
Гитнексус Эксплорер
Индексируйте базу кода с помощью GitNexus и предоставляйте интерактивный граф знаний через веб-интерфейс + туннель Cloudflare.
Метаданные навыков
Источник
Необязательно — установите с помощью hermesskills installofficial/research/gitnexus-explorer
Ниже приведено полное определение навыка, которое Гермес загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навык активен.
GitNexus Explorer
Индексируйте любую базу кода в граф знаний и предоставляйте интерактивный веб-интерфейс для изучения.
символы, цепочки вызовов, кластеры и потоки выполнения. Туннелируется через Cloudflare для удаленного доступа.
Когда использовать
Пользователь хочет визуально изучить архитектуру кодовой базы.
Пользователь запрашивает граф знаний/график зависимостей репо.
Пользователь хочет поделиться с кем-нибудь интерактивным проводником кодовой базы.
Предварительные условия
Node.js (v18+) — требуется для GitNexus и прокси.
git — репозиторий должен иметь каталог .git
cloudflared — для туннелирования (автоматически устанавливается в ~/.local/bin, если отсутствует)
Предупреждение о размере
Веб-интерфейс отображает все узлы в браузере. Репозитории до ~5000 файлов работают хорошо. Большой
репозитории (более 30 тыс. узлов) будут работать медленно или вызывать сбой вкладки браузера. Инструменты CLI/MCP работают
в любом масштабе — такой предел есть только у веб-визуализации.
Шаги
1. Клонирование и сборка GitNexus (однократная установка)
GITNEXUS_DIR="${GITNEXUS_DIR:-$HOME/.local/share/gitnexus}"if[!-d"$GITNEXUS_DIR/gitnexus-web/dist"];thengitclonehttps://github.com/abhigyanpatwari/GitNexus.git"$GITNEXUS_DIR"cd"$GITNEXUS_DIR/gitnexus-shared"&&npminstall&&npmrunbuild
cd"$GITNEXUS_DIR/gitnexus-web"&&npminstall
fi
2. Исправление веб-интерфейса для удаленного доступа
По умолчанию веб-интерфейс использует локальный хост: 4747 для вызовов API. Исправьте его, чтобы использовать одно и то же происхождение.
поэтому он работает через туннель/прокси:
Файл: $GITNEXUS_DIR/gitnexus-web/vite.config.ts
Добавьте allowedHosts: true внутри блока server: { } (необходимо только при запуске dev
режим вместо производственной сборки):
server:{allowedHosts:true,//... existing config},
Затем создайте производственный пакет:
cd"$GITNEXUS_DIR/gitnexus-web"&&npxvitebuild
3. Индексируйте целевой репозиторий
cd/path/to/target-repo
npxgitnexusanalyze--skip-agents-md
rm-rf.claude/# remove Claude Code-specific artifacts
Добавьте --embeddings для семантического поиска (медленнее — минуты вместо секунд).
Индекс находится в .gitnexus/ внутри репозитория (автоматически игнорируется).
4. Создайте прокси-скрипт
Запишите это в файл (например, $GITNEXUS_DIR/proxy.mjs). Он обслуживает производство
веб-интерфейс и прокси /api/* для серверной части GitNexus — тот же источник, никаких проблем с CORS,
ни sudo, ни nginx.
importhttpfrom'node:http';importfsfrom'node:fs';importpathfrom'node:path';constAPI_PORT=parseInt(process.env.API_PORT||'4747');constDIST_DIR=process.argv[2]||'./dist';constPORT=parseInt(process.argv[3]||'8888');constMIME={'.html':'text/html','.js':'application/javascript','.css':'text/css','.json':'application/json','.png':'image/png','.svg':'image/svg+xml','.ico':'image/x-icon','.woff2':'font/woff2','.woff':'font/woff','.wasm':'application/wasm',};functionproxyToApi(req,res){constopts={hostname:'127.0.0.1',port:API_PORT,path:req.url,method:req.method,headers:req.headers,};constproxy=http.request(opts,(upstream)=>{res.writeHead(upstream.statusCode,upstream.headers);upstream.pipe(res,{end:true});});proxy.on('error',()=>{res.writeHead(502);res.end('Backend unavailable');});req.pipe(proxy,{end:true});}functionserveStatic(req,res){letfilePath=path.join(DIST_DIR,req.url==='/'?'index.html':req.url.split('?')[0]);if(!fs.existsSync(filePath))filePath=path.join(DIST_DIR,'index.html');constext=path.extname(filePath);constmime=MIME[ext]||'application/octet-stream';try{constdata=fs.readFileSync(filePath);res.writeHead(200,{'Content-Type':mime,'Cache-Control':'public, max-age=3600'});res.end(data);}catch{res.writeHead(404);res.end('Not found');}}http.createServer((req,res)=>{if(req.url.startsWith('/api'))proxyToApi(req,res);elseserveStatic(req,res);}).listen(PORT,()=>console.log(`GitNexus proxy on http://localhost:${PORT}`));
5. Start the Services
# Terminal 1: GitNexus backend API
npxgitnexusserve&# Terminal 2: Proxy (web UI + API on one port)
node"$GITNEXUS_DIR/proxy.mjs""$GITNEXUS_DIR/gitnexus-web/dist"8888&
Проверьте: curl -s http://localhost:8888/api/repos должен возвращать индексированные репозитории.
6. Туннель с Cloudflare (опционально — для удаленного доступа)
# Install cloudflared if needed (no sudo)if!command-vcloudflared&>/dev/null;thenmkdir-p~/.local/bin
curl-sLhttps://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64\-o~/.local/bin/cloudflared
chmod+x~/.local/bin/cloudflared
exportPATH="$HOME/.local/bin:$PATH"fi# Start tunnel (--config /dev/null avoids conflicts with existing named tunnels)
cloudflaredtunnel--config/dev/null--urlhttp://localhost:8888--no-autoupdate--protocolhttp2
URL-адрес туннеля (например, https://random-words.trycloudflare.com) выводится в stderr.
Поделитесь — любой, у кого есть ссылка, сможет изучить график.
7. Очистка
# Stop services
pkill-f"gitnexus serve"
pkill-f"proxy.mjs"
pkill-fcloudflared
# Remove index from the target repocd/path/to/target-repo
npxgitnexusclean
rm-rf.claude/
Подводные камни
--config /dev/null требуется для Cloudflared, если у пользователя есть существующая
именованная конфигурация туннеля в ~/.cloudflared/config.yml. Без этого всеобъемлющее
Правило входа в конфигурации возвращает 404 для всех запросов быстрого туннеля.
Производственная сборка обязательна для туннелирования. Сервер разработки Vite блокирует
нелокальные хосты по умолчанию («allowedHosts»). Производственная сборка + узел
прокси полностью избегает этого.
Веб-интерфейс НЕ создает .claude/ или CLAUDE.md. Они создаются
«анализ npx gitnexus». Используйте --skip-agents-md, чтобы подавить файлы уценки,
затем rm -rf.claude/ для остального. Это интеграции Claude Code, которые
пользователям Hermes-Agent не нужен.
Ограничение памяти браузера. Веб-интерфейс загружает весь график в память браузера.
Репозитории с более чем 5 тысячами файлов могут работать медленно. Более 30 тысяч файлов, скорее всего, приведут к сбою вкладки.
Вложения не являются обязательными.--embeddings включает семантический поиск, но требует
минут в крупных репозиториях. Пропустите его для быстрого изучения; добавь, если хочешь
запросы на естественном языке через панель чата AI.
Несколько репозиториев.gitnexusserve обслуживает ВСЕ проиндексированные репозитории. Укажите несколько
репозитории, запустите обслуживание один раз, и веб-интерфейс позволит вам переключаться между ними.