让AI写后端,我多花10分钟测试,省下半天debug

「Vibe Coding AI编程实战」第6篇:后端最容易连环翻车,解法是测试先行——先用 docs-langchain MCP 查规范,再用最小 .py 测通千问/NL2SQL 的真实字段,把字段规范写回开发文档后再集成;sqlglot 做 AST 级 SQL 枷锁;维护越来越准的文档,而不是手敲代码

基本信息

  • 来源类型:文章(人人都是产品经理 · 东哥说AI · 「Vibe Coding AI编程实战」系列第 6 篇)
  • 原文位置raw/articles/2026-07-23-woshipm-ai-backend-test-first-debug.md
  • Telegram stubraw/articles/2026-07-23-212547-tg-01de88.md
  • baoyu 抽取raw/extracts/20260724-004342/woshipm.com/ai10debug.md(Converter: defuddle)
  • 原文 URLhttps://www.woshipm.com/share/6433970.html
  • 作者:东哥说AI(页面字段另见蔡延庆等)
  • 发布日期:2026-07-22
  • 页面信息:约 841 浏览 · 7 分钟读 · 1 评论(抓取时)
  • 消化日期:2026-07-24
  • 系列定位:上接任务管理篇(Plan→Linear 40 任务),下接联调收尾篇(字段真源 / 假测试通过)
  • 抓取信息:baoyu-url-to-markdown · URL_CHROME_HEADLESS=1 · extract 20260724-004342

核心观点

  1. 后端连环翻车的根因不是「AI 写不出来」,是模块多、接口一对不上全线崩:智能数据分析代理的后端要查库、出图、答业务,任何一层字段/契约飘了后面全返工。作者用的四字口诀:测试先行——在写集成代码前,先拿到真实输入输出。
  2. 阶段拆分降低风险面:① 前后端脚手架 + 健康检查启动验证;② 前端三栏 UI(会话列表 / 问答 / 图表)让 AI「抽卡」生成;③ 核心难关 = 接千问 + NL2SQL。前两阶段相对轻,第三阶段任一项没测明白就会全链路返工。
  3. 接模型前先用 MCP 查官方文档(ask 模式,只问不写):挂 docs-langchain MCP 连 LangChain 官方文档;先问「怎么接千问、怎么做 NL2SQL、有哪些现成组件」。文档指向 SQLDatabasecreate_sql_agent 等,但查归查,字段长什么样还得以实测为准
  4. 最小测试是全流程最值钱动作:单独 .py,用阿里云百炼 DashScope SDK通义千问(文中最新 Qwen3.7)——基础对话 → 流式输出 → 工具调用;每项跑通就记下真实字段(流式吐哪些字段、工具参数藏哪、如何强制 JSON)。NL2SQL 同理:先测现成组件 I/O,发现编排不合拍后自研链路:理解意图 → 生成 SQL → sqlglot 安全校验(禁删表、禁 SELECT *、强制 LIMIT)→ 查库 → 图表配置 → 总结回答,全程 SSE 吐出。
  5. 测试字段必须写回开发文档,再集成:两份最小测试的真实字段规范追加进任务/开发文档,作为前后端对接参数说明;再让 AI 按「带真实样板的文档」写集成——作者称基本一次过,因为 AI 不用靠猜。这直接喂给系列第 7 篇「以后端真实字段为真源」的联调纪律。
  6. 报错定位 + 环境/数据卫生:健康检查对不上、Trae IDE 起多个后端、表建了没插模拟数据(补初始化:100 客户 + 1000 订单)、Pydantic v2BaseSettings 拆到 pydantic-settings(AI 按老版本会漏装)——都靠人盯报错与环境。核心经验:每阶段有真实 I/O 后,联调出问题可把排查从「整个项目」缩到「某两个模块之间」。
  7. 范式:从盯代码到盯文档:作者自称全程没敲一行业务代码,但多次改开发文档——每测通一模块就追加真实字段。金句:维护的不是代码,是一份越来越准的文档;文档准了,AI 照着写就八九不离十。

实操内容保留

代码/配置

(原文无完整可复制源码块;以下为文中明确的技术选型与约束,可当实现清单。)

  • 模型接入:阿里云百炼 DashScope SDK + 通义千问(文中:Qwen3.7)
  • 文档 MCP:docs-langchain(LangChain 官方文档检索)
  • 现成 NL2SQL 组件(调研结论):LangChain SQLDatabasecreate_sql_agent
  • 自研编排(实测后):意图理解 → SQL 生成 → sqlglot 校验 → 执行 → 图表配置 → 总结;SSE 流式
  • sqlglot 安全规则(AST 级):禁删表 / 禁 SELECT * / 强制 LIMIT(防 DROP、防全表拉爆)
  • 依赖坑:Pydantic v2 → 需显式安装 pydantic-settingsBaseSettings 拆包)
  • 数据初始化量级示例:100 个客户 + 1000 个订单(表空导致「API 通、结果空」)

Prompt 模板 / 指令意图

【Ask 模式 · 只查不写】
请通过 docs-langchain MCP 查 LangChain 最新文档,回答:
1) 如何接入通义千问 / DashScope?
2) 如何做 NL2SQL?有哪些现成组件(如 SQLDatabase、create_sql_agent)?
3) 流式输出、工具调用、结构化 JSON 的推荐写法是什么?
不要写业务集成代码,只给规范与组件名。
【最小测试 · 记真实字段】
新建独立 .py 测试文件(不要先写完整后端):
1) DashScope 接千问:基础对话 → 流式 → 工具调用,每步打印并记录真实返回字段
2) 再测 LangChain NL2SQL 组件的真实输入/输出接口
3) 把字段规范追加到开发任务文档,作为前后端对接参数说明
确认字段前不要做全量集成。
【集成指令 · 文档驱动】
请按开发任务文档中「已实测的字段规范」编写集成代码:
链路 = 意图理解 → 生成 SQL → sqlglot 校验(禁删表、禁 SELECT *、强制 LIMIT)
→ 查库 → 图表配置 → 总结回答;全程 SSE。
不要猜测未记录的字段名。

操作步骤(可复用后端测试先行清单)

  1. 拆阶段:脚手架+健康检查 → 前端三栏 UI → 模型接入+NL2SQL 核心。
  2. 接模型前:挂 docs-langchain MCP,ask 模式查官方文档与组件面。
  3. 最小模型测试:独立 .py + DashScope 通对话/流式/工具调用,逐项记字段
  4. 最小 NL2SQL 测试:测现成组件 I/O;不合适则自研编排 + sqlglot 枷锁 + SSE。
  5. 字段写回文档:明确指令「追加到开发任务文档」,作为前端对接契约。
  6. 再集成:按带样板的文档生成集成代码(预期一次过率高)。
  7. 集成排障:健康检查、多实例/多进程、空表造数、Pydantic v2 依赖拆分——人盯报错与环境。
  8. 验收标准:每阶段有真实输入输出;后端测通后联调问题默认先查前端参数。

关键概念

  • Vibe Coding — 本篇为系列第 6 篇,把 vibe 落到后端交付纪律
  • 智能数据分析Agent — 项目对象:查库 + 出图 + 业务问答
  • NL2SQL — 人话→SQL;现成组件调研 + 自研编排(新建)
  • LangChainSQLDatabase / create_sql_agent 与 docs-langchain MCP
  • 通义千问 — DashScope / 百炼接入;文中 Qwen3.7
  • MCP 模型上下文协议 — docs-langchain:写代码前先查规范
  • 数据分析Agent安全围栏 — sqlglot AST 校验 = SQL 侧枷锁
  • 假测试通过 — 对照:本篇用「最小真实调用」提前堵假通过
  • Trae IDE — 宿主;文中出现多起后端实例等环境问题
  • Claude Code Plan 模式 — 系列后篇联调用 Plan 对齐字段;本篇产出「字段文档」是其输入
  • sqlglot — Python SQL 解析/改写库,做 AST 级安全审查(纯文本,未单建实体)
  • DashScope / 阿里云百炼 — 通义调用 SDK 与控制台(纯文本)
  • Pydantic v2 / pydantic-settings — 配置类拆包依赖坑(纯文本)
  • SSE — 后端流式响应通道(纯文本)

与其他素材的关联

原文精彩摘录

后端是整个项目最容易连环翻车的地方。不是AI写不出来,是模块一多,一个接口没对上,后面全跟着出错。我用的招就四个字:测试先行。

为什么要加一道sqlglot校验?因为SQL是AI生成的,万一它手一抖写个DROP TABLE删库,或者来个SELECT *把几百万行数据拉爆,后果不堪设想。加这层AST级的安全审查,等于给AI的SQL戴个枷锁,不安全的直接拦下。

这其实就是AI编程的范式:你维护的不是代码,是一份越来越准的文档。文档准了,AI照着写就八九不离十。

(评论·蔡延庆)通过最小测试拿真实字段再给AI参考,确实能大幅降低幻觉风险。而且把测试结果追加到文档里,相当于不断校准AI的上下文,比每次重新生成靠谱。

相关页面