如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
[!IMPORTANT]
GitNexus 没有官方加密货币、或硬币。任何在 Pump.fun 或其他平台使用 GitNexus 名称的/硬币均与本项目或其维护者无关联、未获认可且非本项目创建。请勿购买任何声称与 GitNexus 相关的加密货币。
加入官方 *** 讨论想法、问题等!
企业版(SaaS 及自托管)- akonlabs.com
为智能体上下文构建神经系统。
将任何代码库索引为知识图谱——包含所有依赖、调用链、集群和执行流——然后通过智能工具暴露出来,确保 AI 智能体不会遗漏任何代码。
类似 DeepWiki,但更深入。 DeepWiki 帮助你_理解_代码,而 GitNexus 让你_分析_代码——因为知识图谱会追踪每一处关系,而不仅仅是描述。
简而言之: Web UI 是与任何仓库快速对话的方式。CLI + MCP 则让你的 AI 智能体真正可靠——它为 Cursor、Claude Code、Antigravity、Codex 等工具提供代码库的深入架构视图,避免它们遗漏依赖、破坏调用链和盲目提交修改。即使是小型模型也能获得完整的架构清晰度,从而可与大型模型竞争。
| CLI + MCP | Web UI | |
|---|---|---|
| 功能 | 本地索引仓库,通过 MCP 连接 AI 智能体 | 可视化图谱浏览器 + 浏览器内 AI 对话 |
| 适用场景 | 日常开发(搭配 Cursor、Claude Code、Antigravity、Codex、Windsurf、OpenCode) | 快速探索、演示、一次性分析 |
| 规模 | 完整仓库,支持任意大小 | 受浏览器内存限制(约 5k 文件),或通过后端模式实现无限制 |
| 安装方式 | npm install -g gitnexus | 无需安装——gitnexus.vercel.app |
| 存储 | LadybugDB 原生(快速、持久化) | LadybugDB WASM(内存中,按会话) |
| 解析 | Tree-sitter 原生绑定 | Tree-sitter WASM |
| 隐私性 | 所有内容本地处理,无网络传输 | 所有内容在浏览器内处理,无服务器交互 |
桥接模式:
gitnexus serve可连接两者——Web UI 会自动检测本地服务器,无需重新上传或重新索引即可浏览所有通过 CLI 索引的仓库。
GitNexus 提供企业级产品——既可作为完全托管的SaaS,也可自托管部署。开源版本也可通过适当授权进行商业使用。
企业版包含:
即将推出:
👉 访问akonlabs.com了解更多
💬 商业许可或企业咨询,请通过***联系我们,或发送邮件至 ***
gitnexus 和 gitnexus-web 的测试命令CLI 会索引您的仓库并运行 MCP 服务器,为 AI 智能体提供深入的代码库感知能力。
# 索引您的仓库(从仓库根目录运行)
npx gitnexus analyze
就是这样。此命令会索引代码库、安装智能体技能、注册 Claude Code 钩子,并创建 AGENTS.md/CLAUDE.md 上下文文件——所有操作一步完成。
使用 npm 11.x?
npx可能在安装时崩溃并显示Cannot destructure property 'package' of 'node.target'(这是 npm/arborist 的 bug,在 GitNexus 运行前发生)。请改用 pnpm——它会显式构建原生依赖:
> pnpm --allow-build=@ladybugdb/core --allow-build=gitnexus --allow-build=tree-sitter dlx gitnexus@latest analyze
>
或者全局安装(
npm install -g gitnexus@latest)并运行gitnexus analyze。参见https://github.com/abhigyanpatwari/GitNexus/issues/1939%E3%80%82
要为编辑器配置 MCP,运行一次 npx gitnexus setup——或按以下步骤手动设置。
更快安装(无需 C++ 工具链): 在
npm install -g gitnexus前设置GITNEXUS_SKIP_OPTIONAL_GRAMMARS=1,可跳过tree-sitter-dart、tree-sitter-proto、tree-sitter-swift和tree-sitter-kotlin的 vendored 语法构建——这四种语言将无法解析,但安装可在几秒钟内完成,无需python3/make/g++。仅严格支持=1——任何其他值都会触发重新构建。参见下方tree-sitter-kotlin说明。关于
tree-sitter-kotlin: 与 Dart/Proto/Swift 类似,Kotlin 是一种vendored语法(位于gitnexus/vendor/tree-sitter-kotlin)。上游tree-sitter-kotlin仅提供源代码(无预构建二进制文件),因此 GitNexus 会自行构建 Kotlin 平台预构建文件(通过build-tree-sitter-prebuildsGitHub Actions 工作流)并进行 vendored——这与 Dart、Proto 和 Swift 使用的统一流程相同(Swift 的预构建文件最初从上游复制,现在也由 GitNexus 跨平台构建)。node-gyp-build会在引入时选择正确的.node文件,因此无需 C/C++ 工具链。如果没有与您的平台架构匹配的预构建文件,仅 Kotlin(.kt/.kts)解析不可用;gitnexus的其他功能不受影响。
gitnexus setup 会自动检测您的编辑器并写入正确的全局 MCP 配置。只需运行一次即可。要仅配置选定的集成,可使用 --coding-agent/-c 参数并传入逗号分隔的列表,或重复该选项,例如 gitnexus setup -c cursor,codex。
| 编辑器 | MCP | Skills | 钩子(自动增强) | 支持程度 |
|---|---|---|---|---|
| Claude Code | 是 | Yes | 是(PreToolUse + PostToolUse) | 完全支持 |
| Cursor | 是 | Yes | 是(postToolUse,手动安装) | 完全支持 |
| Antigravity(Google) | 是 | Yes | 是(AfterTool,Gemini CLI 钩子 schema)¹ | 完全支持 |
| Codex | 是 | Yes | — | MCP + 技能 |
| Windsurf | 是 | — | — | 仅 MCP |
| OpenCode | 是 | Yes | — | MCP + 技能 |
¹ Antigravity 钩子遵循 Gemini CLI 钩子参考文档(Antigravity 2.0 是 Gemini CLI 的官方继任版本)。增强操作在
AfterTool阶段运行,因为在 Gemini 协议中BeforeTool没有上下文注入通道——代理通过hookSpecificOutput.additionalContext看到附加到工具结果的图谱上下文。成功执行git commit/merge/rebase/cherry-pick/pull后,过时索引提示会进入同一通道。如果 Antigravity 特定的钩子文档与 Gemini CLI 的文档出现差异,架构可能会演进;实现将跟踪这些变化。
环境变量
大多数 analyze 控制选项同时也是 CLI 标志(--workers、--worker-timeout、--max-file-size、--verbose)。当需要在每次运行时重复使用相同标志,或从已管理自身环境的长期运行主机(MCP server、eval-server、CI shell)调用 GitNexus 时,使用环境变量形式。CLI 标志优先于环境变量;环境变量优先于内置默认值。
| 变量 | 默认值 | 作用 | 何时调整 |
|---|---|---|---|
GITNEXUS_WORKER_POOL_SIZE | cores - 1,上限为16 | 解析工作池大小(必须 ≥ 1)。等同于 --workers 。工作池是唯一的解析路径——没有顺序解析器,因此 0 会被拒绝并返回可操作错误(工作池通过隔离+重生实现自我修复)。 | 受限容器(cgroup CPU限制)或具有明确配额的CI运行器。要排查工作器崩溃问题,可将值设为 1 以使用单工作器池——不要设为 0。 |
GITNEXUS_PARSE_CHUNK_CONCURRENCY | 2 | 当工作池调度当前块时,可并行读取到内存中的块文件内容数量。工作器调度本身保持串行。 | 足以分块的大型仓库(总源代码达数MB),且磁盘I/O占分析总耗时的可测量比例。 |
GITNEXUS_VERBOSE | 未设置 | 当为 1 时,启用详细的摄入日志(跳过文件警告、每块吞吐量、解析缓存统计信息)。等同于 --verbose。 | 调试已“完成”但似乎遗漏文件的分析;根据可观察吞吐量调整 --workers/块并发度。 |
GITNEXUS_PROFILE_DEFERRED | 未设置 | 当为 1 时,为块后延迟解析阶段(imports → heritage → buildHeritageMap → legacy call resolution)输出 [deferred-profile] 时间/进度日志。由 GITNEXUS_VERBOSE 隐含启用。 | 在大型Java/Kotlin仓库中诊断“Resolving calls (all chunks)”阶段的分析停滞问题(issue #1741),且无需完整的详细摄入日志。 |
GITNEXUS_PROFILE_DEFERRED_SLOW_MS | 3000(详细模式)/ 5000 | 当 processCallsFromExtracted 处理文件的耗时超过此阈值(毫秒)时,会输出 slow file … 日志行。通过 Number() 解析:接受整数(5000)、科学计数法(2.5e3)、小数(.5)和十六进制(0x10)。非有限或非正值将回退到默认值。 | 排查延迟调用解析阶段中耗时过长的少数异常文件;降低阈值可显示更多文件,提高阈值可仅关注最耗时的文件。 |
PROF_LBUG_LOAD | 未设置 | 当为 1 时,每个 loadGraphToLbug 调用会输出一行 [lbug-load prof] 摘要日志,将图数据库持久化过程分解为多个阶段(csv-emit / copy-nodes / copy-rels / fallback / total),并包含节点和边计数。未设置时零开销。 | 分析大型仓库中CSV生成与LadybugDB COPY 操作的耗时占比(issue #2203)——分析的“emit”时间属于作用域解析阶段,而非此数据库写入路径。 |
GITNEXUS_MAX_FILE_SIZE | 512(KB) | 遍历器跳过阈值(KB)。硬上限为 32768(tree-sitter缓冲区上限)。等同于 --max-file-size 。 | 索引包含有意创建的大型源文件(生成的解析器、第三方捆绑包)且仍需解析这些文件的仓库。 |
GITNEXUS_WORKER_SUB_BATCH_TIMEOUT_MS | 30000 | 工作器空闲超时时间(毫秒),超时后将重试/回退。等同于 --worker-timeout × 1000。 | 解析缓慢的文件(大型压缩JS、深度嵌套的TS类型)确实需要超过30秒的情况。 |
GITNEXUS_WAL_CHECKPOINT_THRESHOLD | 67108864(64 MiB) | LadybugDB WAL自动检查点阈值(字节)。等同于 --wal-checkpoint-threshold 。-1 保持LadybugDB的默认阈值(约16 MiB)。较大阈值减少检查点频率,但会增加轮换时的WAL大小——在磁盘受限环境中选择较小值。 | 需要为分析工作负载调整更大或更小的WAL自动检查点阈值时。 |
GITNEXUS_WORKER_SUB_BATCH_MAX_BYTES | 8388608(8 MB) | 工作池通过一次 postMessage 发送给工作器的每个任务的字节预算。 | 非常大的单个文件;主要用于诊断——超过8 MB可能导致结构化克隆内存压力。 |
GITNEXUS_WORKER_MAX_RESPAWNS_PER_SLOT | 3 | 每个工作器槽位在从活动轮换中移除前的最大替换重生次数。限制长期崩溃槽位的重生循环。 | 在不稳定工作器需要更多重试(提高值)或快速失败(降低值)后再移除槽位的主机上。 |
GITNEXUS_WORKER_MAX_CUMULATIVE_TIMEOUT_MS | 5 × subBatchTimeoutMs | 每个任务在隔离前的总重试耗时预算。与 timeoutBackoffFactor 结合,防止指数增长的重试导致数小时停滞。 | 确实需要较长总重试窗口的缓慢文件;降低值可在停滞时快速失败。 |
GITNEXUS_WORKER_CONSECUTIVE_FAILURE_THRESHOLD | max(3, poolSize) | 每个槽位在工作池断路器触发前的连续崩溃次数。触发后,后续所有调度都会拒绝,直到创建新工作池。 | 在容易发生SIGSEGV的原生语法需要更快触发断路器的主机上;需要明确失败的CI运行器上。 |
GITNEXUS_CHUNK_BYTE_BUDGET | 2097152(2 MB) | 用于缓存键组合和调度的块边界。值越小,缓存命中粒度越细,但调度开销越大。 | 在单体仓库上调整增量分析的缓存行为时。 |
GITNEXUS_NO_GITIGNORE | 未设置 | 当设置时,跳过 .gitignore 解析。.gitnexusignore 仍会生效。 | 索引其 .gitignore 排除了实际需要索引的文件(例如,为跨仓库查找而提交的生成代码)的仓库时。 |
GITNEXUS_SKIP_OPTIONAL_GRAMMARS | 未设置 | 当严格设为 =1 时,在安装时跳过 tree-sitter-dart、tree-sitter-proto、tree-sitter-swift 和 tree-sitter-kotlin 的第三方语法实例化(以及Dart/Proto源代码构建)。这四种语言将不会被解析;安装仍会成功。 | 在没有C++工具链的主机上,或第三方预构建不匹配的主机上安装;且愿意跳过Dart/Proto/Swift/Kotlin解析时。 |
发布到understand-quickly(可选)
https://github.com/looptech-ai/understand-quickly 是一个公共代码知识图谱 registry,将 gitnexus@1 列为一等格式。注册仓库一次后(npx @understand-quickly/cli add 或 https://looptech-ai.github.io/understand-quickly/add.html%EF%BC%89%EF%BC%8C%60gitnexus publish会触发单个repository_dispatch` 事件,使 registry 按需重新同步你的条目,而非等待夜间任务。
这是可选功能,若未设置 UNDERSTAND_QUICKLY_TOKEN 则不执行任何操作——该 token 是在 registry 仓库上具有 Repository dispatches: write 权限的细粒度 GitHub PAT。不会上传任何图谱文件。完整协议参见 https://github.com/looptech-ai/understand-quickly/blob/main/docs/integrations/protocol.md%E3%80%82
通过MCP公开的16个工具(11个每仓库工具 + 5个组工具):
官方 Docker 安装包提供由 docker-compose.yaml 编排的两个签名镜像。每个镜像均发布至 GitHub Container Registry (GHCR) 和 Docker Hub —— 相同构建、相同摘要、相同 Cosign 签名 —— 因此可选择任意偏好的 registry:
| 用途 | GHCR(docker-compose.yaml 中默认) | Docker Hub 镜像 |
|---|---|---|
CLI / gitnexus serve 后端(端口 4747 上的 HTTP API、MCP、索引器) | ghcr.io/abhigyanpatwari/gitnexus:latest | akonlabs/gitnexus:latest |
静态 Web UI(端口 4173) | ghcr.io/abhigyanpatwari/gitnexus-web:latest | akonlabs/gitnexus-web:latest |
[!NOTE] 镜像重命名提示。 早期版本的 Web UI 发布在
ghcr.io/abhigyanpatwari/gitnexus下。随着捆绑后端的引入,该地址现在托管 CLI/服务器镜像,而 UI 已迁移至ghcr.io/abhigyanpatwari/gitnexus-web。旧标签仍可用于拉取,但新版本仅在新地址发布。请相应更新您的docker run/ compose 文件(或直接采用捆绑的 compose)。
docker compose up -d
这会在 http://localhost:4747 启动服务器,在 http://localhost:4173 启动 Web UI。UI 会自动检测服务器,因为浏览器运行在主机上,并通过映射端口访问容器。
命名卷(gitnexus-data)会将全局注册表、索引和克隆的仓库持久化到服务器容器内的 /data/gitnexus 目录。要使主机上的仓库可被索引,请在启动堆栈前设置 WORKSPACE_DIR:
WORKSPACE_DIR=$HOME/code docker compose up -d
# 在服务器容器内,该目录以只读方式挂载在/workspace。
docker compose exec gitnexus-server gitnexus index /workspace/my-repo
docker run# 服务器
docker run --rm -d \
--name gitnexus-server \
-p 4747:4747 \
-v gitnexus-data:/data/gitnexus \
ghcr.io/abhigyanpatwari/gitnexus:latest
# Web UI
docker run --rm -d \
--name gitnexus-web \
-p 4173:4173 \
ghcr.io/abhigyanpatwari/gitnexus-web:latest
可选的环境变量文件(覆盖镜像标签、容器名称、端口、工作区目录):
cp .env.example .env
docker compose --env-file .env up -d
Docker 镜像与 npm 包版本锁定:
vX.Y.Z git 标签发布(通过 docker.yml 工作流由标签推送直接触发),且工作流会验证标签是否与 gitnexus/package.json 的版本完全匹配,否则拒绝构建。因此 ghcr.io/abhigyanpatwari/gitnexus:1.6.2(及其 Docker Hub 镜像 akonlabs/gitnexus:1.6.2)与 npm install gitnexus@1.6.2 是字节级一致的版本——无漂移,无来自 main 分支的浮动构建。两个镜像仓库从同一构建步骤获得相同的摘要,因此可从任一仓库拉取,签名验证结果完全一致。:1.7.0-rc.1)与每个 RC 版本的 npm 包一同发布。它们由 publish.yml 在 RC 标签创建并推送后,调用 docker.yml 作为可重用工作流构建。:latest 标签仅由 Docker 元数据操作从非预发布标签自动提升,因此始终指向真实的、已发布到 npm 的版本。两个镜像均使用工作流的 GitHub OIDC 身份通过 Cosign 无密钥签名 进行签名,并附带构建来源证明和 SBOM 证明。这是您抵御供应链的保护措施**:即使**者在其他地方重新发布同名镜像(或通过某种方式推送到拼写相似的仓库),也无法伪造与 abhigyanpatwari/GitNexus 的 docker.yml 绑定的 Cosign 签名。在敏感环境中拉取镜像前务必验证:
稳定版本——从 v* 标签引用签名:
cosign verify ghcr.io/abhigyanpatwari/gitnexus:1.6.2 \
--certificate-identity-regexp '^https://github\.com/abhigyanpatwari/GitNexus/\.github/workflows/docker\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?
正则表达式将证书身份固定到本仓库的 `docker.yml` 工作流**从 `v*` 标签运行**——拒绝未签名镜像、由其他工作流签名的镜像以及从未受保护引用签名的镜像。两个仓库的验证规则相同,因为两组标签在同一工作流运行中以相同摘要签名。
**候选发布版本**——从 `refs/heads/main` 签名(`publish.yml` 调用 `docker.yml` 作为可重用工作流时的调用者引用):
```bash
cosign verify ghcr.io/abhigyanpatwari/gitnexus:1.7.0-rc.1 \
--certificate-identity 'https://github.com/abhigyanpatwari/GitNexus/.github/workflows/docker.yml@refs/heads/main' \
--certificate-oidc-issuer [***]
您还可以检查构建来源证明和 SBOM:
cosign download attestation ghcr.io/abhigyanpatwari/gitnexus:1.6.2 \
--predicate-type [***]
Kubernetes:在准入阶段强制签名验证
对于 Kubernetes 部署,部署捆绑的 ClusterImagePolicy,以便 Sigstore policy-controller 拒绝任何未由本仓库 docker.yml 从 vX.Y.Z 标签运行签名的 GitNexus 镜像——与上述 cosign verify 片段固定的身份相同。
# 1. 安装控制器(一次性,集群范围)
helm repo add sigstore https://sigstore.github.io/helm-charts && helm repo update
helm install policy-controller -n cosign-system --create-namespace \
sigstore/policy-controller
# 2. 标记命名空间为启用
kubectl label namespace policy.sigstore.dev/include=true
# 3. 应用策略
kubectl apply -f deploy/kubernetes/cluster-image-policy.yaml
完成后,尝试部署未签名镜像——或由 abhigyanpatwari/GitNexus 的 docker.yml 从非 v* 标签签名的镜像——将在 Pod 创建前被准入 Webhook 拒绝。这会将可验证的签名转换为强制策略,这是大多数集群实际需要的供应链控制措施。
gitnexus-shared 和 gitnexus-web,然后提供生产环境前端服务。gitnexus serve --host 0.0.0.0。Web UI 使用与 CLI 相同的索引管道,但完全在 WebAssembly 中运行(Tree-sitter WASM、LadybugDB WASM、浏览器内嵌入)。它适用于快速探索,但对于较大的仓库会受浏览器内存限制。
本地后端模式:运行 gitnexus serve 并在本地打开 Web UI——它会自动检测服务器并显示所有已索引的仓库,支持完整的 AI 聊天功能。无需重新上传或重新索引。智能体工具(Cypher 查询、搜索、代码导航)会自动通过后端 HTTP API 路由。
像 Cursor、Claude Code、Codex、Cline、Roo Code 和 Windsurf 这样的工具功能强大——但它们并不真正了解您的代码库结构。
实际情况:
UserService.validate()传统方法向 LLM 提供原始图边缘,并希望它进行足够的探索。GitNexus 在索引时预先计算结构——聚类、追踪、评分——因此工具可在一次调用中返回完整上下文:
flowchart TB
subgraph Traditional["传统 Graph RAG"]
direction TB
U1["用户:哪些依赖 UserService?"]
U1 --> LLM1["LLM 接收原始图"]
LLM1 --> Q1["查询 1:查找调用者"]
Q1 --> Q2["查询 2:哪些文件?"]
Q2 --> Q3["查询 3:过滤测试?"]
Q3 --> Q4["查询 4:高风险?"]
Q4 --> OUT1["4 次以上查询后得到答案"]
end
--certificate-oidc-issuer https://token.actions.githubusercontent.com
cosign verify docker.io/akonlabs/gitnexus:1.6.2
--certificate-identity-regexp '^https://github\.com/abhigyanpatwari/GitNexus/\.github/workflows/docker\.yml@refs/tags/v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?
正则表达式将证书身份固定到本仓库的 CODE_TOKEN_163 工作流从 CODE_TOKEN_164 标签运行——拒绝未签名镜像、由其他工作流签名的镜像以及从未受保护引用签名的镜像。两个仓库的验证规则相同,因为两组标签在同一工作流运行中以相同摘要签名。
候选发布版本——从 CODE_TOKEN_165 签名(CODE_TOKEN_166 调用 CODE_TOKEN_167 作为可重用工作流时的调用者引用):
CODE_TOKEN_7
您还可以检查构建来源证明和 SBOM:
CODE_TOKEN_8
Kubernetes:在准入阶段强制签名验证
对于 Kubernetes 部署,部署捆绑的 CODE_TOKEN_168,以便 Sigstore policy-controller 拒绝任何未由本仓库 CODE_TOKEN_169 从 CODE_TOKEN_170 标签运行签名的 GitNexus 镜像——与上述 CODE_TOKEN_171 片段固定的身份相同。
CODE_TOKEN_9
完成后,尝试部署未签名镜像——或由 CODE_TOKEN_172 的 CODE_TOKEN_173 从非 CODE_TOKEN_174 标签签名的镜像——将在 Pod 创建前被准入 Webhook 拒绝。这会将可验证的签名转换为强制策略,这是大多数集群实际需要的供应链控制措施。
Web UI 使用与 CLI 相同的索引管道,但完全在 WebAssembly 中运行(Tree-sitter WASM、LadybugDB WASM、浏览器内嵌入)。它适用于快速探索,但对于较大的仓库会受浏览器内存限制。
本地后端模式:运行 CODE_TOKEN_178 并在本地打开 Web UI——它会自动检测服务器并显示所有已索引的仓库,支持完整的 AI 聊天功能。无需重新上传或重新索引。智能体工具(Cypher 查询、搜索、代码导航)会自动通过后端 HTTP API 路由。
像 Cursor、Claude Code、Codex、Cline、Roo Code 和 Windsurf 这样的工具功能强大——但它们并不真正了解您的代码库结构。
实际情况:
传统方法向 LLM 提供原始图边缘,并希望它进行足够的探索。GitNexus 在索引时预先计算结构——聚类、追踪、评分——因此工具可在一次调用中返回完整上下文:
CODE_TOKEN_10
--certificate-oidc-issuer https://token.actions.githubusercontent.com
正则表达式将证书身份固定到本仓库的 __CODE_TOKEN_163__ 工作流**从 __CODE_TOKEN_164__ 标签运行**——拒绝未签名镜像、由其他工作流签名的镜像以及从未受保护引用签名的镜像。两个仓库的验证规则相同,因为两组标签在同一工作流运行中以相同摘要签名。
**候选发布版本**——从 __CODE_TOKEN_165__ 签名(__CODE_TOKEN_166__ 调用 __CODE_TOKEN_167__ 作为可重用工作流时的调用者引用):
__CODE_TOKEN_7__
您还可以检查构建来源证明和 SBOM:
__CODE_TOKEN_8__
#### Kubernetes:在准入阶段强制签名验证
对于 Kubernetes 部署,部署捆绑的 __CODE_TOKEN_168__,以便 [Sigstore policy-controller][policy-controller] 拒绝任何未由本仓库 __CODE_TOKEN_169__ 从 __CODE_TOKEN_170__ 标签运行签名的 GitNexus 镜像——与上述 __CODE_TOKEN_171__ 片段固定的身份相同。
__CODE_TOKEN_9__
完成后,尝试部署未签名镜像——或由 __CODE_TOKEN_172__ 的 __CODE_TOKEN_173__ 从非 __CODE_TOKEN_174__ 标签签名的镜像——将在 Pod 创建前被准入 Webhook 拒绝。这会将可验证的签名转换为强制策略,这是大多数集群实际需要的供应链控制措施。
[cosign-keyless]: [***]
[policy-controller]: [***]
### 文件
- Dockerfile.web — 构建 __CODE_TOKEN_175__ 和 __CODE_TOKEN_176__,然后提供生产环境前端服务。
- Dockerfile.cli — 构建 CLI/服务器(包含原生依赖)并运行 __CODE_TOKEN_177__。
- docker-compose.yaml — 同时启动两个已签名镜像。
- .env.example — 用于覆盖镜像名称、容器名称、端口和工作区挂载的配置。
Web UI 使用与 CLI 相同的索引管道,但完全在 WebAssembly 中运行(Tree-sitter WASM、LadybugDB WASM、浏览器内嵌入)。它适用于快速探索,但对于较大的仓库会受浏览器内存限制。
**本地后端模式**:运行 __CODE_TOKEN_178__ 并在本地打开 Web UI——它会自动检测服务器并显示所有已索引的仓库,支持完整的 AI 聊天功能。无需重新上传或重新索引。智能体工具(Cypher 查询、搜索、代码导航)会自动通过后端 HTTP API 路由。
---
## GitNexus 解决的问题
像 **Cursor**、**Claude Code**、**Codex**、**Cline**、**Roo Code** 和 **Windsurf** 这样的工具功能强大——但它们并不真正了解您的代码库结构。
**实际情况**:
1. AI 编辑 __CODE_TOKEN_179__
2. 不知道有 47 个函数依赖于其返回类型
3. **破坏性变更被发布**
### 传统 Graph RAG 与 GitNexus
传统方法向 LLM 提供原始图边缘,并希望它进行足够的探索。GitNexus **在索引时预先计算结构**——聚类、追踪、评分——因此工具可在一次调用中返回完整上下文:
__CODE_TOKEN_10__
来自真实用户的反馈,见证轩辕镜像的优质服务