8 件购物车触发 33 条 SQL:开发者用 MCP 执行服务器戳穿 AI 修 N+1 的神话
deusaquilus · reddit · 2026-09-02
开发者 deusaquilus 自建了一个「执行型」MCP 服务器,专门让编码 agent 在沙箱里真实运行 ORM 并拿到实际的 SQL 语句数,而不是靠文档推理。
- 起点:Shopizer 3.2.7(Hibernate 5.6)一个 8 件商品的购物车 GET 请求竟产生 33 条 SQL,典型 N+1,agent 靠读代码就能轻松找到
- 但让它修复时,agent 推荐了文档和 Stack Overflow 里的标准答案 JOIN FETCH,并预测只需 1 条语句——实际仍剩 12 条:Hibernate 发现 session 里已有父实体,便逐条取子实体
- 该 MCP 服务器接收 JPA 映射和访问路径,在沙箱 JVM 的临时 H2 数据库上对真实 ORM(Hibernate 5.6–7、EclipseLink 2.7–5.0)编译执行,返回真实生成的 SQL 与语句数,无需构建目标应用或生产流量
- 普查发现多个「民间传说级」修复失效:抓取 lazy 父集合后 EAGER 孙集合仍触发 25 条语句;集合 JOIN FETCH 旁的 setMaxResults 在两个 Hibernate 大版本中被静默丢弃 LIMIT;EclipseLink 接受别名嵌套 JOIN FETCH 却不生成 join 且不报错
- 核心论点:fetch 类工具给模型更多文本去思考,execute 类工具给它一个无法绕过的数字——模型连续 4 次自信地答错,更多文本救不了它
- 彩蛋:Claude.ai 对 tools/list 响应有未文档化的约 96KB 字节上限,超限后静默丢弃最大的工具,需把长描述拆进按需调用的 docs 工具
- 作者邀请大家在 JPA 代码库上让 agent 预报语句数再实测打分,复现错误记录比好评更有价值
「编程与Agent」频道最新
- Polar Analytics 推出 Slack 内 AI 运营员,实时审计广告与库存数据 — JaynitMakwana · 2026-09-02
- “4 万美元吉他买不来 Mike Rutherford”:编程功底决定 AI 编码上限 — JFPuget · 2026-09-02
- 两周跑出 8 个 SEO 草稿 PR,单次成本不到 1 美元 — Pitiful-Surround-285 · 2026-09-02
- 与其找现成产品,不如 vibe code 一个专为自己定制的工具 — Philmod · 2026-09-02
- NPO 论文:提示词优化或不需要搜索树,教师模型质量更关键 — rohanpaul_ai · 2026-09-02
- Podium 弃用自研 agent 运行时,全面迁移至 LangSmith deployments — LangChain · 2026-09-02