{/* Trang này được tạo tự động từ SKILL.md của kỹ năng bởi website/scripts/generate-skill-docs.py. Chỉnh sửa nguồn SKILL.md, không phải trang này. */}
Nhà thám hiểm Gitnexus
Lập chỉ mục một cơ sở mã với GitNexus và cung cấp biểu đồ kiến thức tương tác thông qua giao diện người dùng web + đường hầm Cloudflare.
Siêu dữ liệu kỹ năng
| Nguồn | Tùy chọn — cài đặt với |
| `Hermes skills install official/research/gitnexus-explorer | |
| ` | |
| Đường dẫn |
optional-skills/research/gitnexus-explorer ` | | Phiên bản |
1.0.0 ` | | Tác giả | Đại lý Hermes + Teknium | | Giấy phép | MIT | | Nền tảng | Linux, macOS, Windows | | Thẻ |
gitnexus
, `code-intelligence
, `knowledge-graph
,
visualization |
| Kỹ năng liên quan | XPROTECTX17XPROTECTX, XPROTECTX18XPROTECTX |
Tham khảo: đầy đủ SKILL.md
Sau đây là định nghĩa kỹ năng đầy đủ mà Hermes tải khi kỹ năng này được kích hoạt. Đây là những gì tác nhân coi là hướng dẫn khi kỹ năng được kích hoạt.
Trình khám phá GitNexus
Lập chỉ mục bất kỳ cơ sở mã nào vào biểu đồ tri thức và phục vụ giao diện người dùng web tương tác để khám phá ký hiệu, chuỗi cuộc gọi, cụm và luồng thực thi. Được tạo đường hầm qua Cloudflare để truy cập từ xa.
Khi nào nên sử dụng
- Người dùng muốn khám phá trực quan kiến trúc của cơ sở mã
- Người dùng yêu cầu biểu đồ tri thức/biểu đồ phụ thuộc của repo
- Người dùng muốn chia sẻ trình khám phá cơ sở mã tương tác với ai đó
Điều kiện tiên quyết
- Node.js (v18+) — bắt buộc đối với GitNexus và proxy
- git — repo phải có thư mục
.git
- cloudflared — để tạo đường hầm (được cài đặt tự động vào ~/.local/bin nếu bị thiếu)
Cảnh báo kích thước
Giao diện người dùng web hiển thị tất cả các nút trong trình duyệt. Kho lưu trữ dưới ~ 5.000 tệp hoạt động tốt. lớn repos (30k+ nút) sẽ hoạt động chậm hoặc làm hỏng tab trình duyệt. Công cụ CLI/MCP hoạt động ở mọi quy mô - chỉ hình ảnh trực quan trên web mới có giới hạn này.
bước
1. Sao chép và xây dựng GitNexus (thiết lập một lần)
GITNEXUS_DIR="$\{GITNEXUS_DIR:-$HOME/.local/share/gitnexus}"`if [ ! -d "$GITNEXUS_DIR/gitnexus-web/dist" ]; then
git clone https://GitHub.com/abhigyanpatwari/GitNexus.git "$GITNEXUS_DIR"
cd "$GITNEXUS_DIR/gitnexus-shared" && npm install && npm run build
cd "$GITNEXUS_DIR/gitnexus-web" && npm install
fi
`
### 2. Vá giao diện người dùng web để truy cập từ xa
Giao diện người dùng web mặc định là
`localhost:4747
` cho các lệnh gọi API. Vá nó để sử dụng cùng nguồn gốc
vì vậy nó hoạt động thông qua một đường hầm/proxy:
**Tập tin:
$GITNEXUS_DIR/gitnexus-web/src/config/ui-constants.ts
`
**
Thay đổi:
`
`TypeScript
export const DEFAULT_BACKEND_URL = 'http://localhost:4747';
`
Tới:
`
`TypeScript
export const DEFAULT_BACKEND_URL = typeof window !== 'undefined' && window.location.hostname !== 'localhost' ? window.location.origin : 'http://localhost:4747';
`
``**Tập tin:
$GITNEXUS_DIR/gitnexus-web/vite.config.ts
**
Thêm
`allowedHosts: true
` bên trong khối
`server: { }
` (chỉ cần nếu chạy dev
mode thay vì xây dựng sản xuất):
`
`TypeScript
server: {
allowedHosts: true,
// ... existing config
},
`
``Sau đó xây dựng gói sản xuất:
`
``` bash
cd "$GITNEXUS_DIR/gitnexus-web" && npx vite build
`
### 3. Lập chỉ mục cho Target Repo
`bash
cd /path/to/target-repo
npx gitnexus analyze --skip-agents-md
rm -rf .Claude/ # remove Claude Code-specific artifacts
`
``Thêm
`
--embeddings
` để tìm kiếm ngữ nghĩa (chậm hơn - phút thay vì giây).
Chỉ mục nằm trong
.gitnexus/
` bên trong repo (tự động bỏ qua).
### 4. Tạo tập lệnh proxy
Viết phần này vào một tệp (ví dụ:
$GITNEXUS_DIR/proxy.mjs
). Nó phục vụ cho việc sản xuất
giao diện người dùng web và proxy
/API/*
` sang phần phụ trợ GitNexus - cùng nguồn gốc, không có vấn đề về CORS,
không có sudo, không có nginx.
`JavaScript
import http from 'node:http';
import fs from 'node:fs';
import path from 'node:path';`const API_PORT = parseInt(process.env.API_PORT || '4747');
const DIST_DIR = process.argv[2] || './dist';
const PORT = parseInt(process.argv[3] || '8888');`const MIME = {
'.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',
};`function proxyToAPI(req, res) {
const opts = {
hostname: '127.0.0.1', port: API_PORT,
path: req.url, method: req.method, headers: req.headers,
};
const proxy = 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 });
}`function serveStatic(req, res) {
let filePath = path.join(DIST_DIR, req.url === '/' ? 'index.html' : req.url.split('?')[0]);
if (!fs.existsSync(filePath)) filePath = path.join(DIST_DIR, 'index.html');
const ext = path.extname(filePath);
const mime = MIME[ext] || 'application/octet-stream';
try {
const data = 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);
else serveStatic(req, res);
}).listen(PORT, () => console.log(
`GitNexus proxy on http://localhost:$\{PORT}
));
`
### 5. Khởi động dịch vụ
``` bash
# Terminal 1: GitNexus backend API
npx gitnexus serve &
# Terminal 2: Proxy (web UI + API on one port)
node "$GITNEXUS_DIR/proxy.mjs" "$GITNEXUS_DIR/gitnexus-web/dist" 8888 &
`
``Xác minh:
`curl -s http://localhost:8888/API/repos
` sẽ trả về (các) kho lưu trữ được lập chỉ mục.
### 6. Đường hầm với Cloudflare (tùy chọn — để truy cập từ xa)
``` bash
# Install cloudflared if needed (no sudo)
if ! command -v cloudflared &>/dev/null; then
mkdir -p ~/.local/bin
curl -sL https://GitHub.com/cloudflare/cloudflared/releases/latest/download/cloudflared-Linux-amd64 \
-o ~/.local/bin/cloudflared
chmod +x ~/.local/bin/cloudflared
export PATH="$HOME/.local/bin:$PATH"
fi
# Start tunnel (--config /dev/null avoids conflicts with existing named tunnels)
cloudflared tunnel --config /dev/null --url http://localhost:8888 --no-autoupdate --protocol http2
`
``URL đường hầm (ví dụ:
`https://random-words.trycloudflare.com
) được in ra stderr.
Chia sẻ nó — bất kỳ ai có liên kết đều có thể khám phá biểu đồ.
### 7. Dọn dẹp
``` bash
# Stop services
pkill -f "gitnexus serve"
pkill -f "proxy.mjs"
pkill -f cloudflared
# Remove index from the target repo
cd /path/to/target-repo
npx gitnexus clean
rm -rf .Claude/
`
## Cạm bẫy
- **
--config /dev/null
` là bắt buộc đối với cloudflared** nếu người dùng đã có sẵn
cấu hình đường hầm được đặt tên tại
~/.cloudflared/config.yml
. Không có nó thì tất cả
quy tắc xâm nhập trong cấu hình trả về 404 cho tất cả các yêu cầu đường hầm nhanh.
- **Việc xây dựng sản xuất là bắt buộc để tạo đường hầm.** Máy chủ Vite dev chặn
máy chủ không phải localhost theo mặc định (
`allowedHosts
). Bản dựng sản xuất + Nút
proxy tránh được điều này hoàn toàn.
- **Giao diện người dùng web KHÔNG tạo
.Claude/
` hoặc
`Claude.md
.** Chúng được tạo bởi``npx gitnexus analyze
. Sử dụng
--skip-agents-md
` để chặn các tệp đánh dấu,
sau đó là
`rm -rf .Claude/
` cho phần còn lại. Đây là những tích hợp của Claude Code
người dùng đại lý Hermes không cần.
- **Giới hạn bộ nhớ trình duyệt.** Giao diện người dùng web tải toàn bộ biểu đồ vào bộ nhớ trình duyệt.
Các kho lưu trữ có dung lượng tệp trên 5k có thể bị chậm. Hơn 30k tệp có thể sẽ làm hỏng tab.
- **Việc nhúng là tùy chọn.**
--embeddings
` cho phép tìm kiếm ngữ nghĩa nhưng mất
phút trên các repo lớn. Bỏ qua nó để khám phá nhanh chóng; thêm nó nếu bạn muốn
truy vấn ngôn ngữ tự nhiên thông qua bảng trò chuyện AI.
- **Nhiều kho lưu trữ.**
`gitnexus serve
` phục vụ TẤT CẢ các kho lưu trữ được lập chỉ mục. Lập chỉ mục một số
kho lưu trữ, bắt đầu phân phát một lần và giao diện người dùng web cho phép bạn chuyển đổi giữa chúng.