7.5 KiB
7.5 KiB
Nexus 最新代码上下文索引与 Zvec 部署报告
生成时间:2026-07-07
测试机:192.168.124.219
本地工作区:C:\Users\uzuma\Documents\Codex\2026-07-06\yuu
1. 已完成结论
已处理完成:
- 已从 Nexus 测试机同步最新代码快照,并重建代码上下文索引。
- 已清理上下文索引污染源:本地快照中误带入的
.megamemory/knowledge.db已删除。 - 已确认本地上下文库没有
.db/.sqlite/.sqlite3/.duckdb/.faiss文件残留。 - 已确认最新快照没有敏感命名文件纳入索引,例如
.env、.pem、.key、secret、resolved、凭据等。 - 已增强索引脚本脱敏规则:排除
.megamemory/vendor等目录,并对 PEM 私钥块做整体脱敏。 - 已在测试机安装 Zvec:独立安装在
/opt/nexus-code-context/.venv,不改 Nexus 主项目虚拟环境。 - 已建立 Zvec 本地代码向量库:
/opt/nexus-code-context/data/nexus_code_chunks.zvec。 - 已导入清理后的脱敏 chunks:
1440条,导入失败数0。 - 已验证 Zvec 向量检索可查到宝塔一键登录/session 相关代码。
- 没有使用 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 代码审查的帮助
现在的上下文库可以辅助后续安全巡检:
- 通过
api_routes.jsonl快速定位 API 入口。 - 通过
service_methods.jsonl找业务服务边界。 - 通过
call_edges.jsonl拼 API → Service → Repo/SSH/Redis 调用链。 - 通过
db_queries.jsonl聚合 SQLAlchemy 查询和写入点。 - 通过
ssh_commands.jsonl聚合远程 shell/SSH/SFTP/文件管理风险点。 - 通过
btpanel_flows.jsonl专门追踪宝塔一键登录、session、token、保活修复相关代码。 - 通过 Zvec 对关键词/问题做代码块召回,先定位上下文,再做人工审查。
8. 当前限制
- 当前 Zvec 检索优先使用本地 hashing vector。它稳定、离线、不上传代码,但语义能力弱于大模型 embedding。
- Zvec FTS 字段已按 schema 配置,但当前实际使用以 vector 模式为主;后续如果要做精确全文检索,可再单独调优 FTS index/tokenizer。
- 上下文库只用于辅助定位,不替代测试和人工安全审查。
9. 下一步建议
建议后续 Nexus 安全巡检按这个顺序推进:
- 先用
api_routes.jsonl+service_methods.jsonl画全量 API/服务/数据库调用链。 - 对
btpanel_flows.jsonl做二次审查,重点检查:token TTL、并发一键登录、Redis lock、审计日志、失败回退。 - 对
ssh_commands.jsonl做逐项确认:鉴权、超时、输出截断、日志脱敏、危险 shell 参数边界。 - 对
db_queries.jsonl检查多租户/权限过滤、分页限制、事务提交/回滚。 - 每次修复后重新跑索引和 Zvec 导入,确保上下文库跟代码同步。