最近网上有个词很火,叫“龙虾”。有人说它代表未来,啥都能干;有人说它是妥妥的智商税。
有人说它代表着未来。有人499上门帮你安装,有人299上门帮你卸载。但是我想告诉你,所有这些说法都不准确。因为事情的重点根本就不在龙虾这只这个软件本身上
其实,所有的争论都不在点子上。今天,我直接带你从最底层的代码原理看清它的本质。即使你没写过代码,跟着我的思路,也绝对能看懂。 我会用最简单的方式让你看到本质
在看透了 Agent 的底层循环机制后,我还会分享一个我的私人实战干货:我是如何利用这套思路,配合Agent程序加速我工作的。
一、 Agent 是什么?
忘掉各种高大上的名词,让我们回到最初的起点:大语言模型。大模型本质上就是一个只会一问一答的单纯机器。在网页上你能和它聊天,在程序里,我们需要用 API。
第一步:最基础的单次对话
以目前极具性价比的 DeepSeek 为例,我们只需要把官方文档的实例粘贴过来,填一下 api 密钥,就能得到一个最简单的“提问-回答”程序:
flowchart TD
A([开始]) --> B[初始化 API 客户端
并将问题写死在代码中]
B --> C[调用 API
打印输出 AI 回复]
C --> D([结束])1 | # Please install OpenAI SDK first: `pip3 install openai` |
运行后,你能得到 Ai 回复的一句问候语。但这样调用AI,问题写死在代码里,我们无法自主输入。
第二步:加入“用户输入”
为了让程序活起来,我们引入 input() 函数。我们在发请求前,加入一行读取用户键盘输入的代码,替换掉刚才写死的问题。
flowchart TD
A([开始]) --> B[初始化 API 客户端]
B --> C[/等待并读取用户键盘输入/]
C --> D[将用户输入传入 API
打印输出 AI 回复]
D --> E([结束])1 | # Please install OpenAI SDK first: `pip3 install openai` |
现在程序运行后会停住,等待用户在黑框里敲字提问,敲回车后 AI 会给出对应的回答。
这样写依然是“一次性”的,回答完一个问题,程序还是会立刻结束。
第三步:加入“死循环”
为了让对话可以一直持续下去,我们在刚才“输入+调用API”的代码外面,套上一个 while True 的无限循环。
flowchart TD
A([开始]) --> B[初始化 API 客户端]
B --> C{While 循环}
C -- 循环体 --> D[读取用户键盘输入
调用 API 并打印输出回复]
D --> C1 | # Please install OpenAI SDK first: `pip3 install openai` |
现在你可以自由地一直提问了!比如你问“1+1等于几”,它回答2。
但当你紧接着追问“再加1等于几呢?”时,它通常会乱答。因为在上面的代码中,每次循环都只把“当前这句”传给了大模型,大模型本身没有记忆,不知道你之前给他说了什么。
第四步:加入“记忆系统”
怎么让它拥有记忆呢?非常简单:我们在循环外面建一个全局的消息列表(messages),把每次你的提问和 Ai 的回答,都塞进这个列表里。 每次请求时,把整个列表发过去。同时增加一个“退出”指令来结束程序。
flowchart TD
A([开始]) --> B[初始化客户端
初始化全局消息列表]
B --> C{While 循环}
C -- 等待交互 --> D[/读取输入/]
D -- 退出 --> F([结束])
D -- 正常输入 --> E[将提问追加到消息列表
调用 API 传入完整列表并打印回复
将 AI 回复追加到消息列表]
E --> C1 | # Please install OpenAI SDK first: `pip3 install openai` |
再次运行,问“1+1等于几”,答2;追问“再加1呢”,完美回答3。甚至问“刚才我们聊了什么”它也能总结。
恭喜你,这个几十行的程序,跟市面上各种网页版的 AI 聊天工具在底层逻辑上已经没有任何区别了! 但它此时还只是个陪聊工具。
第五步:见证奇迹的时刻——进化为 Agent
现在的 Ai 只会聊天。如果我想让它帮我下载视频或者创建文件,它只会给你一堆文字步骤。
如何让它自动化?我们在提示词里规定一个严格的“命令格式”,并加一层“内循环”:一旦检测到 AI 回复了特定命令,代码就去执行,并把执行结果丢回给 AI 看。
flowchart TD
A([开始]) --> B[初始化客户端与消息列表
设定提示词要求特定输出格式]
B --> C{外层循环:
与用户交互}
C -- 等待 --> D[/读取输入/]
D -- 退出 --> J([结束])
D -- 提问 --> E[追加提问到列表]
E --> F{内层循环:
自动执行任务}
F -- AI思考 --> G[调用 API 并追加回复到列表]
G -- 判断结果 --> H{回复以'完成:'开头?}
H -- 是-任务结束 --> C
H -- 否-发现命令 --> I[提取命令并在本地系统执行
将执行结果追加到消息列表反馈给AI]
I --> F1 | # Please install OpenAI SDK first: `pip3 install openai` |
当你输入:“创建一个txt文件”。
- 大模型输出:
命令:touch hello.txt - 程序检测到
命令:这几个字,内层循环拦截了回复,静默调用系统执行了创建,并告诉 Ai “文件已创建”。 - Ai 评估任务结束,输出
完成: hello.txt 已创建成功,跳出内循环。
这就是 Agent!
短短几十行代码,揭示了可以完成各种复杂操作的 Agent 的本质:大模型负责做决策并按格式输出文本,外部代码负责拦截文本并驱动真正的工具(如 shell、API)执行。
市面上很多智能体(例如Openclaw小龙虾),其实就是把这个干瘪的 os.popen 换成了各种精致的函数,并套了个漂亮的前端 UI 而已。
对于Agent程序来说,他根本不知道大模型输出的是什么内容,他只负责按照规则去拦截和执行。
通过上面的代码你能看出,如果不加安全拦截,大模型输出
命令: rm -rf /这种全局删除命令时程序也会毫不犹豫地执行。如果用户的提示词是教唆 AI 去删库,就会引发灾难,这就是目前 Agent 面临的极大安全隐患。
二、 什么是 Skill ?
既然大模型只是调度员,那如果它不知道该用什么命令怎么办?
比如我想让它找个新闻,它可能一本正经地胡说八道。
这就引出了 Skill(技能)。
所谓 Skill,其实就是给 Agent 程序看的“说明书”。
我们可以新建一个叫 skill.md 的纯文本文件,里面写上:
【搜索新闻技能】:如果你需要搜索新闻,请不要自己编,请输出命令:
python search_news.py [关键词]
然后,我们在上面的 Python 代码启动前,把这个 skill.md 文件的内容读取出来,全部塞进最开始的 system_prompt(系统提示词)里。
大模型看到说明书,瞬间就“学会”了这项技能!所谓给 Ai 拓展能力,根本不是重新训练大模型,而只是你在提示词里多塞了一张操作说明书。
或者换句话来说,就是提前把相关操作用skill这种方式提前给大模型说了而已
这就是为什么有些人的agent程序啥都不会,有些人给agent程序装了一堆skill之后就能干一大堆活的原因了。
和之前一样,不是ai很厉害,而是你厉害。是你把你的思路和想法以skill这种形式教会了ai。
所以为什么我文章开头我说网上各种关于小龙虾的讨论都不准确呢?因为大部分讨论都陷入了两种极端。
比如说agent能执行shell命令,有人就说龙虾是万能的,什么都能干。因为任何操作都能转化成shell命令,没什么毛病。
但是有人也说龙虾啥也干不了。比如说搜索新闻那个任务,我本地没有相关工具给他,他不知道这个命令怎么用,那也完成不了这个任务。
所以真正的答案往往是比较中庸的,无聊的
ai的相关能力都是软件工程师或者你自己赋予的
但是往往是极端的言论。容易获得更大的流量。
大部分Agent程序的这个架构范式肯定是没有问题的。但是关键的核心在于我们这个世界是否已经足够的命令化接口化。
这就需要一个漫长的演化过程,而且也涉及到各方利益的权衡,要不然的话豆包手机早就成了。
不过非要说一点的话,我认为龙虾的出现最重要的一点就是可以促进我们这个世界的操作命令化、接口化的速度。
假如我们这个电脑上的所有操作都能被做成一个个清晰的命令,整个物理世界的所有操作也都被开放成一个清晰的接口。
那么这个时候龙虾或者说agent才能大展拳脚。但同时风险和危险也随之到来了。
三、 实战:我如何用 Agent+Skill 来简化工作 ?
看懂了上面这段无聊但硬核的代码循环,你就会明白:一切皆可 Agent 化,一切皆可命令化。
接下来,分享我是如何把这个底层逻辑迁移到“写教材”这件事上的。
很多人让 Ai 写书,都是在对话框里发一句:“帮我写一本关于 Python 的教材”,结果 Ai 吐出来一堆极度空洞的大纲和废话。
我的做法完全不同,我写了一个“教材生成 Agent”,并给它配了详细的 Skill 说明书。
1. 编写“写书 Skill”说明书(核心心法)
不要试图让 Ai 一次性干完所有工作。我在我的 skill.md 里,为大模型规定了严格的工作流:
- 第一步:需求分析。 根据我给的资料,先输出这本教材的受众是谁,重点难点是什么。
- 第二步:任务拆解与排序。 不要直接写正文!先写出包含 50 个小节的详细树状大纲,并将每个小节定义为一个独立的“Task(任务)”。
- 第三步:按顺序执行 Task。 Agent 每次只读取一个 Task(例如:编写 1.1 章节),并结合我提前给到的参考资料生成内容。
2. 自动循环执行
就跟前面我们写的那个带 os.popen 的代码一模一样:
大模型拿到拆解的任务列表后,程序开始进入循环。
- 发送指令:“请根据参考资料,生成 1.1 章节”。
- 大模型返回文本。
- Python 脚本截获文本,自动在本地
C盘/教材/目录下生成1.1.md文件。 - 程序进入下一个循环,生成
1.2.md…
我就只需要喝杯茶,看着文件夹里的文件一个个自动冒出来,拼成一本十几万字的教材。
3. 为什么要拆解任务?
为什么要一步一步来,而不是让它一次写完?
因为 Ai 有“上下文限制”(Context Window)。
程序的一个变量都有存储范围限制,ai也不例外。
虽然现在的大模型动辄支持百万字上下文,但在实际干活时,如果你一次性塞给它太多要求,它的注意力就会被分散。
让它一次写 2 万字,后面 1 万字大概率是车轱辘话。
通过 Skill 把任务拆解开,把每一次生成的长度控制在一个“文字限度”内,写完一节清空一下无关的短期记忆,这是保证 Ai 长时间输出质量的唯一解。
4. 为什么我坚持全流程使用 Markdown (.md)?
在写教材时,我的工作流始终是:
资料转为 MD -> Ai 生成 MD -> 脚本转换 MD 为 PPT/Word。
为什么不让 Ai 用 Python 直接生成 Word 格式文档?
因为大语言模型它原生只支持“纯文本”! Markdown 就是一种带有排版标记的纯文本。
让 Ai 处理和输出 MD,没有任何工具转换的损耗,它的脑力 100% 都在内容创作上。
等所有 Markdown 完美生成后,再用 Pandoc 或者 python-docx 这样的脚本工具,瞬间把几十个 MD 文件批量转换成排版精美的 Word 或 PPT。
让 Ai 干文本的活,让脚本干转换的活,这才是王道。
四、 触类旁通:重塑你的生产力
讲到这里,你应该理解了。大语言模型的实力,绝不是只停留在那个一问一答的网页对话框里!
只要是支持文字输入的地方,只要能获取或输入纯文本,Ai 都可以大显身手。
- 各种开源项目的命令行本身:你不需要死记硬背 Git、Docker 或者 ffmpeg 的几百个参数,现阶段你只需要知道这些工具是大概怎么用地,把它们的说明书喂给 Ai,你的 Agent 程序就能替你组装出最复杂的指令。
- 浏览器里的 JS 脚本:把网页的 HTML 纯文本抓下来给 Ai,让它提取关键信息,再生成一段 JS 脚本帮你自动填表单。
- Word / Excel 的宏脚本(VBA):你只需要用文字描述你想怎么整理报表,让 Ai 吐出纯文本的 VBA 代码,贴进去运行,繁琐的表格瞬间处理完毕。
这个世界正在快速演化。现在很多程序正在被重写为专门给ai调用的形式(MCP,Skill),当物理世界和软件世界的所有操作,都抽象成一个个清晰的命令行或 API 接口(纯文本)的时候,挂载了各种 Skill 说明书的 Ai Agent,必将接管我们的大部分繁琐工作。
希望通过这篇文章和这些亲自手搓的代码,能让你真正理解 Agent,并把它用在你的工作流中!只要能想象得到的地方,Ai 都能来帮你。
帮你做一些长线执行的,繁琐的活