目标:从真实感知 MCP 服务读取完整工具目录,在相同模型、任务和目录下比较全量注入对照组与主动发现组。该正式实验与 demo.py 的 8 任务教学演示不同;正式实验通过 MCP 执行真实工具,并产出机器可验证的收据。
命令
当前 ch4 聚合依赖未安装正式运行器使用的 PyTorch/Transformers,且感知 MCP 服务要求 SDK v2。先在仓库根目录准备环境:
uv sync --locked --python 3.12 --extra ch4
uv pip install --python .venv/bin/python 'torch>=2.2' 'transformers>=4.40,<6' 'mcp>=2,<3'
然后从实验目录执行正式运行器:
cd chapter4/active-tool-discovery
../../.venv/bin/python run_exact_experiment.py --campaign-id 20260925T135300Z-qwen3-4b
中断或首次活动未通过时,使用同一活动 ID 续跑未完成任务:
../../.venv/bin/python run_exact_experiment.py --campaign-id 20260925T135300Z-qwen3-4b --resume
本次首次运行后按 --resume 恢复了未完成任务。恢复 GitHub 公开 API 调用时使用本机已有的只读认证环境;密钥没有写入实验记录或收据。
结果
正式验收通过。MCP 返回 127 个工具,完整目录为 50,597 tokens;对照组和主动发现组使用本地 Ollama qwen3:4b,各完成 3 项真实任务。
| 组别 | 工具选择准确率 | 任务完成 | 记录耗时 |
|---|---|---|---|
| 全量注入对照组 | 100% | 3/3 | 1,766 秒 |
| 主动发现组 | 100% | 3/3 | 282 秒 |
主动发现组动态注入的工具 schema 共 10,577 tokens(苹果新闻 6,092、论文下载 1,853、GitHub 可视化 2,632)。两组都完成全部能力要求,因此本次没有观察到准确率或完成率提升;主动发现组记录耗时约为对照组的 16%(约快 6.3 倍)。这只是一次运行,不能据此推断稳定的因果效果。
首次执行中,arXiv API 暂时返回错误,使对照组论文任务耗尽 12 轮上限;恢复运行后,三篇 PDF 均成功下载并通过 PDF 签名检查。主动发现组首次请求 GitHub 公共 API 遇到 403 限流,恢复时使用本机 GitHub 认证后读取成功。因此最终收据均为真实调用,但 GitHub 重试的认证状态与首次请求不同。
验证
- 最终汇总状态为
passed,12 项验收门禁全部为true。 - 活动 manifest 中 27 个文件的 SHA-256 全部复核通过。
- 模型响应收据、MCP 工具调用收据、论文文件、可视化 SVG、目录压缩包和本地嵌入索引均保存在运行目录。
本实验使用 Ollama 本地模型,不产生 OpenAI API token 费用。重试使用了本机 GitHub 认证访问公开 API。