别再手搓 Prompt 了,那个叫"手动挡循环"

一条推文,七百万围观,就说了四个字

前阵子 X 上有个帖子爆了。七百万人围观,转发评论炸成一片。内容就一个意思:

"开源大佬们,别再给 AI 写提示词了,你应该去设计 Loop。"

没完。Claude Code 的作者转发了,附了一句:"我也不写 Prompt,我也写 Loop。"

两个 AI 圈最会写代码的人,异口同声地说同一件事。这事值得琢磨。


Loop 是计算机最古老的本能

Loop,循环。写代码的第一课就学它。计算机诞生那天就有了。三件事:

从哪开始。重复做什么。什么时候停。

一万行数据要逐行检查格式,改完再存回去。让人干,一下午。让程序跑个 for 循环,几秒钟。

就这么个朴素到土里的概念,被搬到了 AI 协作上,突然变成了最前沿的工作流。


大模型本身就是 Loop 喂出来的

DeepSeek、Claude、Qwen、GPT......不管你用哪一个,它来到你面前之前,都经历过同一个过程:

复制代码
拿一批数据 → 喂给模型 → 算一下错多少 → 调参数 → 再来一轮

万亿次。万亿次循环之后,一堆矩阵权重突然就学会了对话、推理、写代码。

训练的底层逻辑,从来没变过。就是一个巨大的 Loop。


你每天都在跑手动挡循环

停下来想三秒钟。你平时跟 AI 配合,是不是这个画风:

复制代码
写一段 Prompt → 发给 AI → 看输出 → 好像不太行
→ 改 Prompt → 再发 → 还是差点意思
→ 再改 → 再发 → OK 这次能用了

恭喜你,你也是 Loop 大师。只不过------你是 Loop 里的人肉齿轮。

你把工作交给了 AI,但你被绑在椅子上盯着它干。AI 每吐一次,你的人脑就要跑一次 check,然后手动调 gen。你确实省了写文案、写代码的力气,但你付出了注意力

Loop 要干的,就是把你从循环里面拽出来。让你从 "操作工" 变成 "设计师"


拆开看,Loop 就两个零件

Completion。Check。

让 AI 生成。然后让它自己(或者另一个规则引擎)检查。检查过了,结束。没过,把失败原因塞回去,让它再生成一次。

就这么来回倒。简单到你觉得"这也能叫方法论?"------但一旦你真的写进代码,你会发现你回不去了。


实战:让 AI 自己跟自己较劲写小红书文案

说一万遍道理不如跑一遍代码。场景不搞复杂,就一件事:写一篇小红书美妆文案,四条硬指标,不达标就重写。

第一步:刹车装好,别让 Loop 变脱缰野马

Loop 最怕的不是跑得慢,是停不下来。开始写代码之前,先把退路铺好:

javascript 复制代码
const limit = {
    maxRound: 5,      // 给你五次机会,多了没有
    maxToken: 2000,   // 钱不是大风刮来的,Token 烧到这里就认栽
    sameStop: 2       // 连续两次吐一样的东西,说明脑子卡了,别浪费电
};

这三个边界各自盯一种翻车场景。maxRound 防的是 "每次检查都说差一点,永远通不过"。maxToken 防的是你第二天收到一张天价账单。sameStop 最妙------如果模型连续两次生成一模一样的内容,说明它已经想不出新招了,再跑下去就是同一个输出死循环。

第二步:把目标和规则摆上台面

javascript 复制代码
const task = {
    desc: "小红书美妆文案",      // 为什么而写
    rules: [                     // 写出来得长这样
        "标题带数字",
        "正文小于300字",
        "大爆款风格",
        "结尾有行动号召"
    ]
};

这套 rules 是整个 Loop 的宪法。gen 照着它写,check 照着它审。 两边用同一把尺子量,不会出现 "生成的理解和检查的理解对不上" 的狗血剧情。

第三步:状态追踪

javascript 复制代码
let round = 0,          // 第几轮了
    totalToken = 0,     // 烧了多少钱
    lastText = "",      // 上一轮说了啥
    sameCount = 0;      // 卡了几次了

function needStop() {
    return round >= limit.maxRound
        || totalToken >= limit.maxToken
        || sameCount >= limit.sameStop;
}

第四步:gen------让 AI 扮演博主

javascript 复制代码
async function gen() {
    const res = await client.chat.completions.create({
        model: 'deepseek-v4-flash',
        messages: [{
            role: "user",
            content: `假如你是一位资深小红书美妆博主,
写一篇${task.desc},严格遵守:
${task.rules.join("、")},只输出文案`
        }]
    });

    console.log(res.usage.total_tokens, res.choices[0].message.content);
    return {
        text: res.choices[0].message.content.trim(),
        token: res.usage.total_tokens
    };
}

这里有个小设计:规则直接写进 gen 的 Prompt 里。 这样模型在生成时脑子里就装着这套标准,而不是写成什么样子全靠运气。

第五步:check------让 AI 自己当裁判

javascript 复制代码
async function check(text) {
    const res = await client.chat.completions.create({
        model: 'deepseek-v4-flash',
        messages: [{
            role: "user",
            content: `
校验文案:${text}
规则:${task.rules.join("、")},
仅输出json格式:{pass:布尔值, fail:数组}`
        }]
    });
    return JSON.parse(res.choices[0].message.content.trim());
}

"仅输出 JSON" 这四个字是点睛之笔。你不用写正则去猜 "通过" 还是 "基本通过但有一个小问题"。代码直接 if (pass) 判断,干净利落。fail 数组告诉你具体哪几条没达标,回头还能喂给下一轮 gen 做定向修正。

第六步:组装

javascript 复制代码
async function runloop() {
    console.log("开始循环");

    while (!needStop()) {
        round++;
        console.log(`第 ${round} 轮`);

        const { text, token } = await gen();
        totalToken += token;
        sameCount = text === lastText ? sameCount + 1 : 0;
        lastText = text;

        const { pass, fail } = await check(text);

        if (pass) {
            console.log("全部规则通过,循环结束 🎉");
            console.log(`最终文案:${text}`);
            return;
        }

        console.log("不通过,吊起来重写:", fail.join("、"));
    }

    console.log(`刹车踩死,最后一版文案:${text}`);
}

runloop();

跑起来看看

text 复制代码
开始循环
第 1 轮
不通过,吊起来重写:标题不含数字、结尾缺少行动号召
第 2 轮
不通过,吊起来重写:正文超300字
第 3 轮
全部规则通过,循环结束 🎉
最终文案:【一篇合格的文案】

三轮,几十秒,人没动手。你自己手动调 Prompt,大概率也得改个两三次,而且得一直盯着屏幕等它吐完。


爽归爽,Loop 不是免费的午餐

手动调 Prompt,一轮几百 Token。Loop 每轮 gen + check,加起来也是几百。跑五轮就是上千。

这还没算上一些隐性代价:

  • check 本身也会误判。 模型当裁判不是万无一失的,可能把合格的毙了、把不合格的放了。两个 LLM 互相配合,误差会叠加。
  • 刹车设置太松,Token 直接飞走。 maxRound 设 20、maxToken 不设上限,跑一趟下来账单够你吃一顿海底捞。
  • 任务越模糊,收敛越慢。 "写一篇爆款文案" 这种目标,check 函数都很难量化,Loop 还不如手动改。

所以别啥活都往 Loop 里扔。规则清晰、检查好量化、人工迭代成本高的任务,才是 Loop 的甜区。文案生成是,代码审查是,合同校验也是。但"帮我起个好听的项目名"这种,算了,自己想吧。


从 Prompt 操作工到 Loop 设计师

写 Prompt 的人,关心的是 "这句话怎么措辞模型才听话"。

设计 Loop 的人,关心的是 "规则怎么定、检查怎么量化、刹车设在哪"。

两种思维。前者在跟模型对话,后者在给模型设定游戏规则

Claude Code 的作者说他不写 Prompt,写 Loop。本质上是在说------我不当 AI 的对话搭档,我当 AI 的流程设计师

下次你准备打开对话框开始一轮一轮手动调 Prompt 的时候,问自己一句:这个活,能不能写成一个 Loop?

相关推荐
用户69190268133919 小时前
Vibe Coding 开发项目的基本范式
人工智能·设计模式·代码规范
怕浪猫2 天前
领域特定语言(Domain-Specific Language, DSL)
设计模式·程序员·架构
Larcher4 天前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式
咖啡八杯5 天前
GoF设计模式——享元模式
java·spring·设计模式·享元模式
:mnong5 天前
学习创建结构行为设计模式
设计模式
w_t_y_y5 天前
Agent设计模式(四)多模态融合模式(Multi-Modal Fusion)
设计模式
zhouhui0015 天前
订单状态的 if-else 地狱上线就崩——状态模式的工业级落地
设计模式
geovindu5 天前
go: Reactor Pattern
开发语言·后端·设计模式·golang·反应器模式