目标:从真实感知 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。