WebMCP 与 AI 代理

ImgFlow 在首页与工具页把压缩队列暴露给浏览器内 AI 代理(WebMCP 草案 API)。图片仍在你的设备上处理;代理只能调用页面已注册的工具,不能绕过本地引擎上传图片。

前提条件

  • 桌面版 Google Chrome(建议最新 Canary/Dev;稳定版需自行确认是否带 WebMCP 标志)。
  • 通过 HTTPS 访问本站(本地开发可用 localhost)。
  • 在 chrome://flags/#enable-webmcp-testing 将「WebMCP for testing」设为 Enabled 并完全重启 Chrome。
  • API 仍为实验性质,标志名与行为可能随 Chrome 版本变化——以 Chrome 官方文档为准。

启用 WebMCP 测试标志

  1. 地址栏打开 chrome://flags/#enable-webmcp-testing
  2. 下拉选择 Enabled
  3. 点击页面底部的 Relaunch,等待 Chrome 完全退出并重新打开

chrome://flags/#enable-webmcp-testing · Chrome WebMCP 官方文档

本站注册的工具

打开首页或任意工具页并等待工具岛加载完成后,以下工具会注册到 document.modelContext:

  • add_image_from_url
  • set_compression_settings
  • get_compression_status
  • download_image
  • download_all_results
  • reset_queue

冒烟测试(约 1 分钟)

在首页打开开发者工具 Console,粘贴并运行下面脚本。若 WebMCP 已启用且页面已加载工具岛,应返回包含 get_compression_status 的工具名列表。

打开首页运行冒烟测试

(async () => {
  const mc = document.modelContext;
  if (!mc?.getTools) {
    return {
      ok: false,
      reason: 'document.modelContext.getTools is missing. Enable chrome://flags/#enable-webmcp-testing, relaunch Chrome, open the homepage, then retry.',
    };
  }
  const tools = await mc.getTools();
  const names = tools.map((tool) => tool.name).sort();
  return {
    ok: names.includes('get_compression_status'),
    names,
  };
})();

该测试只验证「工具已注册」,不代替真实压缩。要试完整流程,需使用支持 WebMCP 的 AI 代理或 Chrome 文档中的 Model Context Tool Inspector 扩展,让代理依次调用 add_image_from_url 与 get_compression_status。

已知限制

  • 非 WebMCP 浏览器不会加载 webmcp.ts,行为与平时完全一致。
  • add_image_from_url 受 CORS 限制;跨域图片请用 data: URL 或让用户拖拽到页面。
  • navigator.modelContext 已弃用,请使用 document.modelContext(与 ToolApp 一致)。