<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>AI on LeoChu Space</title>
    <link>https://leochu.work/blog/tags/ai/</link>
    <description>Recent content in AI on LeoChu Space</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://leochu.work/blog/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ChatSQL之我见</title>
      <link>https://leochu.work/blog/tech/ai/chatsql%E4%B9%8B%E6%88%91%E8%A7%81/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/ai/chatsql%E4%B9%8B%E6%88%91%E8%A7%81/</guid>
      <description>&lt;p&gt;这两年，AI技术越来越成熟，在很多场景上给不同的岗位提供了大量的生产力。
但是作为数据行业从业人员，其中有个场景我想泼一下冷水。
比如被讲得很热的ChatSQL。&lt;/p&gt;
&lt;p&gt;接个大模型，挂上数据库，做个对话框，让业务一句话取数，仿佛传统 BI 的门槛一下子就要被抹平。&lt;/p&gt;
&lt;p&gt;这种想象不是完全没有根据。只要场景足够干净，问题足够标准，今天的模型确实已经能生成一段相当像样的 SQL，甚至把结果也答得像模像样。&lt;/p&gt;
&lt;p&gt;但我对 ChatSQL 的判断一直比较克制。不是因为它没用，而是因为它在企业里真正要解决的，从来都不是&amp;quot;写出一条 SQL&amp;quot;这么简单。&lt;/p&gt;
&lt;h2 id=&#34;一chatsql-最难的不是生成而是语义&#34;&gt;一，ChatSQL 最难的不是生成，而是语义&lt;/h2&gt;
&lt;p&gt;很多人第一反应是：模型还不够强，等下一代就好了。&lt;/p&gt;
&lt;p&gt;这个判断的问题在于，它把 ChatSQL 的核心难点理解成了生成能力。&lt;/p&gt;
&lt;p&gt;可在企业环境里，模型最先撞墙的地方往往不是不会写 SQL，而是不知道你们公司到底在说什么。&lt;/p&gt;
&lt;p&gt;&amp;ldquo;活跃客户&amp;quot;怎么算？&lt;br&gt;
&amp;ldquo;新增付费用户&amp;quot;包不包含试用转正？&lt;br&gt;
&amp;ldquo;业绩下滑&amp;quot;看收入、利润，还是回款？&lt;/p&gt;
&lt;p&gt;这些问题本质上都不是自然语言理解问题，而是业务语义问题。模型可以把一句话翻成查询，但它翻不了一家企业内部本来就没有统一好的口径。&lt;/p&gt;
&lt;p&gt;所以 ChatSQL 如果一上来就做成&amp;quot;人话转 SQL&amp;rdquo;，最后大概率不是输在模型，而是输在语义基础太薄。&lt;/p&gt;
&lt;h2 id=&#34;二语义层很重要但它不是银弹&#34;&gt;二，语义层很重要，但它不是银弹&lt;/h2&gt;
&lt;p&gt;讲到这里，很多团队会自然转向另一个答案：那就建语义层。&lt;/p&gt;
&lt;p&gt;这个方向没错，但也很容易被误解。&lt;/p&gt;
&lt;p&gt;语义层的价值在于，把常见指标、维度、实体关系和口径规则结构化，让模型不必每次从数据库字段里重新猜业务世界。没有这层东西，系统几乎很难稳定。&lt;/p&gt;
&lt;p&gt;但语义层本身不是一个轻巧组件，它更像是一种治理成果的交付形式。&lt;/p&gt;
&lt;p&gt;换句话说，语义层不是补丁，而是地基的外化。&lt;/p&gt;
&lt;p&gt;如果企业本来就没有统一指标、没有稳定口径、没有明确的责任边界，那语义层也只是把混乱包了一层更漂亮的壳。它让问题显得更工程化，但并不会自动把问题解决。&lt;/p&gt;
&lt;p&gt;所以我更愿意把它理解成入场券，而不是终局方案。没有它，很难上线；只有它，也过不了关。&lt;/p&gt;
&lt;h2 id=&#34;三demo-证明不了产品成立&#34;&gt;三，Demo 证明不了产品成立&lt;/h2&gt;
&lt;p&gt;ChatSQL 最容易骗人的地方，就是 Demo 总是很好看。&lt;/p&gt;
&lt;p&gt;因为 Demo 里的问题通常都被精心挑过：定义清楚，范围有限，口径提前对齐，数据表也知道该怎么连。这样的条件下，模型表现出色并不奇怪。&lt;/p&gt;
&lt;p&gt;但产品成立的标准完全不是这个。&lt;/p&gt;
&lt;p&gt;真正的用户问题通常带着模糊、跳跃和上下文缺失。很多人问的不是一个可以直接翻译的问题，而是一个需要先被澄清的问题。&lt;/p&gt;
&lt;p&gt;比如：&amp;ldquo;最近业绩下滑的团队有哪些？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;一个靠谱的分析师听到这句话，第一反应不会是立刻写 SQL，而是先追问。最近是多久，业绩看什么，下滑按什么基线，异常值要不要去掉，外包团队算不算。&lt;/p&gt;
&lt;p&gt;也就是说，真实分析过程本来就不是一次翻译，而是一段澄清和收敛的过程。&lt;/p&gt;
&lt;p&gt;而大多数 ChatSQL 产品，目前只接住了&amp;quot;生成查询&amp;quot;这一步，却没有接住分析师原本承担的职责：澄清、解释、回退、修正、多轮一致性。&lt;/p&gt;
&lt;p&gt;所以 Demo 证明的是模型有翻译能力，不等于产品已经具备交付能力。&lt;/p&gt;
&lt;h2 id=&#34;四chatsql-最脆弱的地方是信任不是准确率均值&#34;&gt;四，ChatSQL 最脆弱的地方是信任，不是准确率均值&lt;/h2&gt;
&lt;p&gt;很多讨论喜欢问：&amp;ldquo;准确率做到 80% 多，能不能上线？&amp;rdquo;&lt;/p&gt;
&lt;p&gt;这个问题本身问得就有点偏。&lt;/p&gt;
&lt;p&gt;如果 ChatSQL 只是给分析师自己做探索，用来找方向、提假设、少写点重复 SQL，那么它不需要像财务系统一样严苛。因为分析师本身有判断力，答偏了也知道怎么纠回来。&lt;/p&gt;
&lt;p&gt;但如果它要直接进入经营分析、财务对账、审计追责这种高责任场景，标准就完全不同了。&lt;/p&gt;
&lt;p&gt;这些场景里，决定系统能不能活下来的，不是平均准确率，而是关键问题能不能稳定答对，答错了能不能被及时发现，发现之后能不能追溯。&lt;/p&gt;
&lt;p&gt;因为用户对这类系统的信任建立得很慢，崩塌得却很快。十次答对未必能让人真正依赖它，但一次关键错误，足以让整个部门彻底弃用。&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI编程的本质不是写代码，而是GSD</title>
      <link>https://leochu.work/blog/tech/ai/ai%E7%BC%96%E7%A8%8B%E7%9A%84%E6%9C%AC%E8%B4%A8%E4%B8%8D%E6%98%AF%E5%86%99%E4%BB%A3%E7%A0%81%E8%80%8C%E6%98%AFgsd/</link>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://leochu.work/blog/tech/ai/ai%E7%BC%96%E7%A8%8B%E7%9A%84%E6%9C%AC%E8%B4%A8%E4%B8%8D%E6%98%AF%E5%86%99%E4%BB%A3%E7%A0%81%E8%80%8C%E6%98%AFgsd/</guid>
      <description>&lt;p&gt;很多人谈 AI 编程，谈到最后都会滑向两个方向：要么研究 prompt 话术，要么研究工具排行榜。可真正把项目做下来之后会发现，决定结果的往往不是模型有多强，而是任务有没有被稳定推进。&lt;/p&gt;
&lt;p&gt;所以我越来越确信，AI 编程的本质不是写代码，而是 &lt;strong&gt;GSD: Get Shit Done&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这不是一句鸡血口号，而是一种工作判断。AI 最擅长的是局部生成，人最不可替代的是定义目标、控制边界、校验结果、决定下一步。谁负责把事情做完，谁就掌握了 AI 编程的核心。&lt;/p&gt;
&lt;h2 id=&#34;什么是-gsd&#34;&gt;什么是 GSD&lt;/h2&gt;
&lt;p&gt;GSD 本来就不是 AI 圈专属概念，它说的是一种执行方法：少空转，少沉迷完美方案，尽快把任务拆开、落地、验证、收口。&lt;/p&gt;
&lt;p&gt;它在 AI 编程里尤其重要，因为 AI 把“产出代码”这件事变得太便宜了。过去写错一段代码，要付出几十分钟；现在模型可以在错误方向上连续输出三轮，还都看起来像那么回事。于是，真正稀缺的能力不再是“产出更多”，而是“识别什么值得继续推进”。&lt;/p&gt;
&lt;p&gt;从这个角度看，AI 时代没有削弱软件工程，反而把它最硬的那一面暴露出来了：任务拆分、上下文管理、验收标准、回滚意识、重构节奏，这些东西一个都没消失。&lt;/p&gt;
&lt;h2 id=&#34;ai-编程真正的问题&#34;&gt;AI 编程真正的问题&lt;/h2&gt;
&lt;p&gt;AI 编程当然快，但快不等于高效。它最常见的问题有三个。&lt;/p&gt;
&lt;h3 id=&#34;低效&#34;&gt;低效&lt;/h3&gt;
&lt;p&gt;表面上，模型替你写了很多代码；实际上，你只是把时间从“自己写”换成了“审它、修它、补上下文”。如果生成规模大于验证能力，效率往往是下降的。&lt;/p&gt;
&lt;h3 id=&#34;反复试错&#34;&gt;反复试错&lt;/h3&gt;
&lt;p&gt;很多人以为自己在迭代，实际上只是陷入了“生成一版、修一版、再修一版”的循环。每一轮都像在前进，但系统并没有更接近完成状态，只是在不断清理上一轮制造的噪音。&lt;/p&gt;
&lt;h3 id=&#34;上下文失真&#34;&gt;上下文失真&lt;/h3&gt;
&lt;p&gt;模型对项目的理解不是稳定存在的，它只是在当前上下文里做局部推断。上下文一长、一脏、一旧，就会开始忘约定、乱覆盖、重复犯错。很多所谓“模型不靠谱”，本质上是上下文早就失控了。&lt;/p&gt;
&lt;p&gt;所以 AI 编程的问题，从来不只是模型问题，更是工作流问题。&lt;/p&gt;
&lt;h2 id=&#34;gsd-的核心原则&#34;&gt;GSD 的核心原则&lt;/h2&gt;
&lt;h3 id=&#34;拆任务&#34;&gt;拆任务&lt;/h3&gt;
&lt;p&gt;不要让 AI 一次处理一个模糊的大目标。大任务一旦没有边界，生成结果几乎注定失真。AI 适合吃小而明确的问题，不适合替你发明完整项目。&lt;/p&gt;
&lt;h3 id=&#34;快速验证&#34;&gt;快速验证&lt;/h3&gt;
&lt;p&gt;每走一步，都要尽快确认这一步到底有没有真的往前。能不能运行，输出对不对，页面能不能打开，接口是不是污染了别的模块。这些检查越便宜，闭环越短，任务越稳。&lt;/p&gt;
&lt;h3 id=&#34;循环迭代&#34;&gt;循环迭代&lt;/h3&gt;
&lt;p&gt;AI 编程最好的节奏不是一次性生成大而全，而是持续压缩闭环：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;给清晰目标&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;生成最小结果&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;立刻验证&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;根据结果继续下一轮&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GSD 的价值，就在于它把“生成”放回“推进”之内，而不是把生成本身误当成进展。&lt;/p&gt;
&lt;h2 id=&#34;一个够用的标准流程&#34;&gt;一个够用的标准流程&lt;/h2&gt;
&lt;p&gt;如果要把 GSD 落到 AI 编程里，我觉得最实用的流程就是五步：&lt;/p&gt;
&lt;h3 id=&#34;需求&#34;&gt;需求&lt;/h3&gt;
&lt;p&gt;先把目标说清楚。不是“我想做个什么”，而是输入输出是什么、约束是什么、做到什么算完成。没有完成标准，后面的每一轮生成都会发飘。&lt;/p&gt;
&lt;h3 id=&#34;prompt&#34;&gt;Prompt&lt;/h3&gt;
&lt;p&gt;Prompt 的重点不是修辞，而是约束。你至少要说清背景、任务、涉及范围、禁止事项和输出形式。不给边界，模型就会自动脑补。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
