别笑 vibecoder 了:一行代码看不懂的人,正在用 YAML 写核心代码

别笑 vibecoder 了:一行代码看不懂的人,正在用 YAML 写核心代码

一个新的概念:metacoding。不是一行代码不写,也不是一行代码都看不懂,而是只处理核心代码。 项目地址:github.com/BlendTreeD/...


一、被嘲讽的 vibecoder

社区里 vibecoding 的段子不少:抽卡、复制粘贴、AI 屎山、"跑起来就是胜利"。

嘲讽的人笑的是抽卡,但被嘲讽的人其实也很痛苦------不是不想写好,是根本无从下手。你对 AI 说"帮我写个客服对话流程:先问订单号,格式不对就重新问;然后查物流,签收了就说感谢,没签收就说在路上"。

AI 刷刷写完。你跑起来,漏了"格式不对重问"的分支;补充描述,再跑,"签收/未签收"的顺序又反了。改到第三版,翻出 diff 一看:不止逻辑变了,连函数名、命名风格都换了。每一版都"看起来不错",但你没法在上一版的基础上迭代------因为哪一版你都没真正看懂过。

这就是 vibecoder 的死循环:看不懂代码,所以只能靠描述需求让 AI 重写;而自然语言描述需求,每一轮都在走样。


二、问题从来不是"不懂代码"

先看一个公司里的老场景。

产品对开发说:"帮我做个物流查询,用户输入单号后查状态,没签收就回复在路上,签收了就感谢一下。"开发每个含糊处都得猜:"在路上"要不要带具体地点?"格式不对"具体是什么规则?猜错了返工。

同一个需求,vibecoder 对 AI 又讲一遍。猜的人从开发换成了 AI,噪声一点没少。

问题在哪?"先问......再查......如果......就......"这些是流程结构。结构性的东西用自然语言传递,每传一遍就重新解释一遍。这不是"懂不懂代码"的问题------再懂代码的人,用自然语言描述结构,也会偏。

所以嘲讽 vibecoder 的人可能骂错了对象:他们不是缺编程能力,是缺一门合适的语言。


三、metacoding:只处理核心代码

我管这门语言叫 YAML。给这个模式起了个名字:metacoding(核心编码)

它的主张只有一句话:不是一行代码不写,也不是一行代码都看不懂,而是只处理核心代码。

分工是这样的:

角色 负责 需要的能力
产品 / 运营 / 新人 写 YAML 剧本(流程怎么走) 10 分钟学会
开发 写 Action(真正的业务 API) 正常开发能力
LLM 意图识别、槽位提取、口语表达 交给模型

所谓"核心代码",就是流程本身------它恰好可以用 YAML 表达,而 YAML 恰好是那种10 分钟学会读、一下午学会写的语言。

更关键的是:YAML 也可以让 AI 生成,人来审核。 AI 生成的 Python 你不敢拍板,AI 生成的 YAML 你扫一眼就知道对不对------因为每一行你都看得懂。审核通过的那一刻,你不只是"提了个需求",你是交付了一段可执行的核心代码。


四、参与感是怎么回来的

vibecoder 最缺的不是技术,是参与感------改需求要重新抽卡,出了 bug 只能把报错贴回给 AI。

metacoding 把参与感还回来了,因为 YAML 是可校验、可 diff、可 review 的:

  • 改一句回复话术,就是改 YAML 里的一行 text,效果立竿见影;
  • 加一个"发票申请"流程,就是加一段 30 行的 YAML,不用找开发排期;
  • 条件分支、槽位校验,写错了加载时当场报错,不像自然语言那样"理解偏差";
  • 团队 review 时,你能指着 diff 说"这里的分支顺序反了"------这句话产品说得出来,而"这里的状态转移逻辑有竞态"就很难。

看一个真实的流程长什么样:

yaml 复制代码
flows:
  logistics_tracking:
    name: 物流查询
    steps:
      - id: start
        type: start
        next: ask_order

      - id: ask_order
        type: collect
        slot_name: order_number
        response:
          mode: static
          text: "请提供订单号(至少 5 位字符)。"
        validation:
          condition: "len(str(slots.get('order_number', ''))) >= 5"
          failure_response:
            mode: static
            text: "订单号格式好像不对,能再说一次吗?"
        next: query

      - id: query
        type: action
        action: action_query_logistics
        next:
          - if: "slots.get('logistics_status') == 'delivered'"
            then: reply_delivered
          - else: reply_in_transit

      - id: reply_delivered
        type: action
        action: action_response
        args:
          mode: static
          text: "订单{{ slots.order_number }}已签收,感谢使用!"
        next: end

      - id: end
        type: end
        next: []

这不是伪代码,这就是能跑的代码:collect 是追问,validation 是校验,next 是跳转,if/else 是分支。看懂它的成本,小于读懂一篇技术文档。

引擎负责保证它被确定性执行;LLM 只负责柔性部分------理解"帮我看看快递到哪了"、从"单号是 SF12345"里提取值、把"已到达北京转运中心"改写得像人话。


五、30 秒上手

零依赖、零 API Key,一条命令看引擎怎么把剧本演出来:

bash 复制代码
python examples/quickstart_mock.py

输出就是一段可读的执行轨迹:追问 → 校验拦截 → Action 查物流 → 条件分支选回复。接真实 LLM 也只需要环境变量配一个 Key。

仓库里还带了一份给编码 Agent 装的 SKILL:装完之后,AI 会按框架规范帮你生成 YAML------你负责审核,它负责产出。让 AI 写 YAML,比让 AI 写 Python 靠谱得多,因为它写的每一行你都看得懂。


六、给 vibecoder 的一句话

从 vibecoding 到 metacoding,变的不是工具,是位置:

  • 以前你描述需求,AI 生成代码,你在循环外面;
  • 现在你写剧本(或审核 AI 写的剧本),你写的就是核心代码,你在循环里面。

产品写剧本,开发写 Action,LLM 演即兴。不懂代码的人第一次有了自己的位置------不是被 AI 替代,也不是替代开发,是终于说得清自己要什么,而且说得算数。

项目地址:github.com/BlendTreeD/...

欢迎来聊:你觉得"只处理核心代码"这个定位,能立得住吗?

相关推荐
MoSTChillax1 天前
UI规范设计:从视觉到交互的全面指南
前端·ui·产品经理·设计规范·vibecoding
傲风大帝狗1 天前
一个 Vibe Coding 网站是怎么在上线几十分钟内被打爆的
vibecoding
Kapaseker3 天前
小白都看得懂的 Skill 教程 - 创建第一个 Skill
android·kotlin·vibecoding
ZacJi3 天前
我为 DeepSeek Harness 写了一个 dsh-apple-mode 插件
ios·deepseek·vibecoding
答案—answer4 天前
VibeCoding 能做到什么程度?我用它做了一座 3D 数字博物馆
3d·ai编程·threejs·vibecoding
火云牌神4 天前
前后端分离:约束 AI 分工,避免接口耦合与职责错乱
人工智能·系统架构·ai编程·前后端分离·vibecoding
文心快码BaiduComate4 天前
文心快码能力扩展、记忆、代码可视化上线
人工智能·ai编程·vibecoding
梦想的颜色4 天前
AI 时代小白 VibeCoding 做 APP:UniApp(含 Uni‑X)、Flutter 与 React Native+Expo全维度技术选型对比指南
flutter·react native·app·uniapp·vibecoding·unippx·app产品
飞扬的风信子4 天前
架构文档 — local-model-harness
agent·vibecoding