# Context7 MCP Anti-Hallucination Integration ## Overview Context7 MCP 提供两个工具,用于拉取第三方库的最新官方文档,消除 LLM 训练数据时效性导致的代码审核幻觉。 ## Tools ### resolve-library-id ``` 输入: libraryName (如 "gin", "gorm", "react", "express") 输出: Context7 兼容的 library ID (如 "/gin-gonic/gin") ``` - 必须在 `get-library-docs` 之前调用 - 用户已提供 `/org/project` 格式 ID 时可跳过 - 解析失败则记录到 `c7_failures`,跳过该库 ### get-library-docs ``` 输入: - context7CompatibleLibraryID: 从 resolve-library-id 获取 - topic (可选): 聚焦主题 (如 "middleware", "hooks", "query") - tokens (可选): 最大返回 token 数 (默认 5000) ``` - 每个库每次审核最多调用 **3 次** - 优先用 `topic` 缩小范围 - 缓存首次查询结果,后续复用 ## Three-Layer Verification ### Layer 1: Pre-Review Warm-up (Phase 0.5) 在审核开始前预热文档缓存: 1. **扫描依赖清单**: ```bash for f in go.mod package.json requirements.txt Pipfile pyproject.toml \ Cargo.toml Gemfile pom.xml build.gradle composer.json mix.exs \ pubspec.yaml *.csproj; do [ -f "$f" ] && echo "FOUND: $f" done ``` 2. **提取直接依赖**(按语言): - Go: `go.mod` require 块(排除 `// indirect`) - Node: `package.json` 的 `dependencies` - Python: `requirements.txt` 或 `pyproject.toml` 的 `[project.dependencies]` - Rust: `Cargo.toml` 的 `[dependencies]` - Java: `pom.xml` 或 `build.gradle` 的 implementation 依赖 3. **优先级筛选**(最多 10 个库): - P0 框架核心:Web 框架、ORM、核心运行时 - P1 安全相关:认证库、加密库、JWT 库 - P2 高频使用:import 次数最多的库 - P3 其余依赖 4. **批量查询 Context7**: ``` 对每个库: id = resolve-library-id(libraryName) 如果失败 → 记录到 c7_failures, 跳过 docs = get-library-docs(id, topic="核心 API 概览", tokens=5000) 缓存到 C7 知识缓存 queries_remaining[库名] = 2 ``` 5. **构建缓存 JSON**: ```json { "session_id": "cr-20260207-143000-a1b2c3d4", "libraries": { "gin": { "context7_id": "/gin-gonic/gin", "docs_summary": "...(API 摘要)...", "key_apis": ["gin.Context", "gin.Engine"], "tokens_used": 5000 } }, "queries_remaining": { "gin": 2 }, "c7_failures": [] } ``` > 多个 `resolve-library-id` 可并行调用。 ### Layer 2: In-Review Realtime Verification (Phase 2) 子 Agent 审核代码时的实时验证规则: **必须验证的场景**: 1. 认为某个 API 调用方式错误 → 查 C7 确认当前版本签名 2. 认为某个 API 已废弃 → 查 C7 确认 deprecated 状态 3. 认为代码缺少某库提供的安全/性能特性 → 查 C7 确认该特性存在 4. 认为代码写法不兼容某版本 → 查 C7 拉取对应版本文档 **查询优先级**: 1. 先查 C7 知识缓存(Phase 0.5 预热结果) 2. 缓存未命中 → 调用 `get-library-docs(id, topic="{具体 API 名}")` 3. 遵守每库 3 次查询上限 **标注字段**: ```json { "c7_verified": true, "c7_source": "gin.Context.JSON() accepts int status code and any interface{}", "verification_method": "c7_cache" } ``` `verification_method` 取值: - `c7_cache` — 从预热缓存验证 - `c7_realtime` — 实时调用 Context7 验证 - `model_knowledge` — 未使用 Context7(置信度自动降一级) ### Layer 3: Post-Review Cross-Validation (Phase 3) 主 Agent 汇总时的最终验证: ``` 对于每个 finding: 如果 c7_verified == false 且 severity in [critical, high]: 如果涉及第三方库 API: docs = get-library-docs(libraryID, topic="{相关 API}") 如果文档支持 Agent 判断 → c7_verified = true, 保留 如果文档与 Agent 矛盾 → 降级为 info 或删除, 标记 c7_invalidated 如果 Context7 无数据 → 保留, 标注 unverifiable 否则 (纯逻辑问题): 跳过 C7 验证, 保持原判断 ``` **强制规则**:`verification_method == "model_knowledge"` 的 critical/high API 相关发现,未完成交叉验证则自动降级为 medium。 ## Degradation Strategy | 场景 | 行为 | |------|------| | Context7 MCP 未配置 | 跳过所有 C7 阶段,报告标注 NONE 覆盖度 | | 网络超时 | 重试 1 次,仍失败则跳过该库 | | `resolve-library-id` 失败 | 记录到 `c7_failures`,跳过该库 | | 查询配额耗尽 | 使用已缓存的最佳信息 | | 子 Agent 中 C7 调用失败 | 标注 `verification_method: "model_knowledge"`,降低置信度 | ## Report Section: Verification Statistics 审核报告中包含的 Context7 统计节: | 指标 | 说明 | |------|------| | 检测到的依赖库总数 | 项目直接依赖数 | | C7 成功解析的库 | resolve-library-id 成功数 | | C7 解析失败的库 | 失败列表 | | Pre-Review 查询次数 | Phase 0.5 的 get-library-docs 调用数 | | In-Review 查询次数 | Phase 2 子 Agent 的实时查询总数 | | Post-Review 查询次数 | Phase 3 交叉验证查询数 | | C7 验证通过的发现数 | c7_verified == true | | C7 纠正的误判数 | c7_invalidated 标记数 | | 验证覆盖度评级 | FULL / PARTIAL / LIMITED / NONE | ## Anti-Hallucination Corrections Table 报告中记录被 Context7 纠正的误判: | # | Agent | 原 Severity | 原 Title | 纠正原因 | C7 Source | |---|-------|------------|---------|---------|-----------| | 1 | Security | high | API deprecated | C7 文档显示该 API 在 v2.x 中仍为 stable | /lib/docs... |