Files
Nexus/docs/release/20260708/Nexus-最新代码上下文索引与Zvec部署报告-20260707.md
T
r 9b583ccc91
Nexus CI/CD / test (push) Waiting to run
Nexus CI/CD / e2e (push) Blocked by required conditions
Nexus CI/CD / deploy (push) Blocked by required conditions
Nexus Pre-commit Checks / quick-check (push) Waiting to run
docs(release): 主与 release 分支合并功能清单 + 导入 release 文档目录
便于 Gitea 上 main ↔ release/20260708-axs 合并评审与冲突对照。
2026-07-09 01:14:32 +08:00

7.5 KiB
Raw Blame History

Nexus 最新代码上下文索引与 Zvec 部署报告

生成时间:2026-07-07
测试机:192.168.124.219
本地工作区:C:\Users\uzuma\Documents\Codex\2026-07-06\yuu


1. 已完成结论

已处理完成:

  1. 已从 Nexus 测试机同步最新代码快照,并重建代码上下文索引。
  2. 已清理上下文索引污染源:本地快照中误带入的 .megamemory/knowledge.db 已删除。
  3. 已确认本地上下文库没有 .db/.sqlite/.sqlite3/.duckdb/.faiss 文件残留。
  4. 已确认最新快照没有敏感命名文件纳入索引,例如 .env.pem.keysecretresolved凭据 等。
  5. 已增强索引脚本脱敏规则:排除 .megamemory/vendor 等目录,并对 PEM 私钥块做整体脱敏。
  6. 已在测试机安装 Zvec:独立安装在 /opt/nexus-code-context/.venv,不改 Nexus 主项目虚拟环境。
  7. 已建立 Zvec 本地代码向量库:/opt/nexus-code-context/data/nexus_code_chunks.zvec
  8. 已导入清理后的脱敏 chunks1440 条,导入失败数 0
  9. 已验证 Zvec 向量检索可查到宝塔一键登录/session 相关代码。
  10. 没有使用 SQLite 作为新的上下文数据库;结构化索引仍是 JSONL/Markdown,向量库是 Zvec。

2. 最新上下文索引统计

来源快照:

C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\work\nexus_code_context\snapshots\nexus-source-20260707-112042

统计:

数量
文件总数 2214
文本索引文件 2020
Python/前端符号 2861
API 路由 214
Service 方法 324
调用边 16780
数据库调用点 437
Redis key/调用点 729
SSH/远程命令调用点 346
宝塔相关流 183
前端路由 31
脱敏代码块 1440
生成时间 2026-07-07 11:47:00 +0800

本地索引目录:

C:\Users\uzuma\Documents\Codex\2026-07-06\yuu\work\nexus_code_context

主要产物:

work/nexus_code_context/context_summary.json
work/nexus_code_context/index/api_routes.jsonl
work/nexus_code_context/index/service_methods.jsonl
work/nexus_code_context/index/call_edges.jsonl
work/nexus_code_context/index/db_queries.jsonl
work/nexus_code_context/index/redis_keys.jsonl
work/nexus_code_context/index/ssh_commands.jsonl
work/nexus_code_context/index/btpanel_flows.jsonl
work/nexus_code_context/cache/chunks.redacted.jsonl
work/nexus_code_context/reports/*.md
work/nexus_code_context/scripts/build_context_index.py
work/nexus_code_context/scripts/query_context.py
work/nexus_code_context/scripts/import_chunks_to_zvec.py
work/nexus_code_context/scripts/query_zvec_context.py

3. SQLite / 污染处理结果

用户之前明确不喜欢 SQLite,也担心上下文库污染。处理结果:

3.1 已发现并清理的问题

本地最新源码快照中曾误包含:

work/nexus_code_context/snapshots/.../.megamemory/knowledge.db

该文件属于项目外部记忆/缓存目录,不应进入 Nexus 代码上下文库。已删除,并在索引脚本中加入排除:

.megamemory
.cursor
.playwright-mcp
.skills
vendor

3.2 当前检查结果

当前本地上下文目录检查:

.db/.sqlite/.sqlite3/.duckdb/.faiss: 0 个
敏感命名文件: 0 个
PEM 私钥块命中: 0 个
JWT 样式 token 命中: 0 个
AWS AKIA key 命中: 0 个
未脱敏 password/token/key 赋值命中: 0 个

因此当前上下文库不再包含 SQLite 数据库,也没有发现上述明显 secret 形态污染。


4. Zvec 安装结果

Zvec 没有装进 Nexus 主项目 .venv,而是独立放在测试机:

/opt/nexus-code-context/.venv

版本:

zvec 0.5.1

Zvec 数据目录:

/opt/nexus-code-context/data/nexus_code_chunks.zvec

Manifest

{
  "collection": "/opt/nexus-code-context/data/nexus_code_chunks.zvec",
  "chunks_file": "/opt/nexus-code-context/input/chunks.redacted.jsonl",
  "embedding": "local_hashing_vector_no_external_api",
  "dimension": 256,
  "inserted_attempted": 1440,
  "insert_status_non_ok": 0
}

说明:

  • 没有用 Docker 部署 Zvec,所以不会占用宝塔/Nexus 端口。
  • 没有公网暴露 Zvec 服务。
  • 没有调用外部 embedding API 上传私有代码。
  • embedding 使用本地确定性 hashing vector,只用于代码上下文召回,不用于语义模型训练。
  • 原始输入是 chunks.redacted.jsonl,不是未脱敏源码。

5. Zvec 查询验证

已在测试机验证向量检索:

查询:

/opt/nexus-code-context/.venv/bin/python   /opt/nexus-code-context/bin/query_zvec_context.py   'bt panel session cleanup keep alive one click login'   --topk 5 --mode vector

返回命中包括:

server/infrastructure/btpanel/constants.py
server/infrastructure/btpanel/login_url_lock.py
server/application/services/btpanel_service.py

这说明当前 Zvec 代码上下文库可以召回宝塔一键登录/session 保活相关代码。


6. 后续使用命令

6.1 本地重建 JSONL/Markdown 索引

在本地工作区执行:

$env:PYTHONIOENCODING='utf-8'
python work/nexus_code_context/scripts/build_context_index.py

6.2 重新导入测试机 Zvec

先把清理后的 chunks 和脚本同步到测试机,再执行:

/opt/nexus-code-context/.venv/bin/python   /opt/nexus-code-context/bin/import_chunks_to_zvec.py   --chunks /opt/nexus-code-context/input/chunks.redacted.jsonl   --collection /opt/nexus-code-context/data/nexus_code_chunks.zvec   --recreate

6.3 查询 Zvec 上下文库

/opt/nexus-code-context/.venv/bin/python   /opt/nexus-code-context/bin/query_zvec_context.py   '你的问题关键词'   --topk 8 --mode vector

示例:

/opt/nexus-code-context/.venv/bin/python   /opt/nexus-code-context/bin/query_zvec_context.py   'archive extract tar zip path traversal'   --topk 8 --mode vector

7. 对 Nexus 代码审查的帮助

现在的上下文库可以辅助后续安全巡检:

  1. 通过 api_routes.jsonl 快速定位 API 入口。
  2. 通过 service_methods.jsonl 找业务服务边界。
  3. 通过 call_edges.jsonl 拼 API → Service → Repo/SSH/Redis 调用链。
  4. 通过 db_queries.jsonl 聚合 SQLAlchemy 查询和写入点。
  5. 通过 ssh_commands.jsonl 聚合远程 shell/SSH/SFTP/文件管理风险点。
  6. 通过 btpanel_flows.jsonl 专门追踪宝塔一键登录、session、token、保活修复相关代码。
  7. 通过 Zvec 对关键词/问题做代码块召回,先定位上下文,再做人工审查。

8. 当前限制

  1. 当前 Zvec 检索优先使用本地 hashing vector。它稳定、离线、不上传代码,但语义能力弱于大模型 embedding。
  2. Zvec FTS 字段已按 schema 配置,但当前实际使用以 vector 模式为主;后续如果要做精确全文检索,可再单独调优 FTS index/tokenizer。
  3. 上下文库只用于辅助定位,不替代测试和人工安全审查。

9. 下一步建议

建议后续 Nexus 安全巡检按这个顺序推进:

  1. 先用 api_routes.jsonl + service_methods.jsonl 画全量 API/服务/数据库调用链。
  2. btpanel_flows.jsonl 做二次审查,重点检查:token TTL、并发一键登录、Redis lock、审计日志、失败回退。
  3. ssh_commands.jsonl 做逐项确认:鉴权、超时、输出截断、日志脱敏、危险 shell 参数边界。
  4. db_queries.jsonl 检查多租户/权限过滤、分页限制、事务提交/回滚。
  5. 每次修复后重新跑索引和 Zvec 导入,确保上下文库跟代码同步。