☰
OpenClaw养虾实验:搭建自动化内容创作系统,重启中断五年的写作
2026/10/17 7:48:46 网站建设 项目流程

隔了五年,我又开始写东西了。准确地说,是开始折腾一套叫 OpenClaw 的开源 Agent 框架,然后给它起了一个特别不技术的名字:“养虾”。这名字听着像水产养殖,其实它是一套完全跑在服务器上的自动化内容创作系统。五年前我断更的时候,给自己找的理由是“没有整块时间”、“找不到值得写的”,实际上真正的问题只有两个:不会拆解创作这件事,以及没有一套能倒逼自己持续输出的机制。而这次的“养虾”实验,恰好把这两个问题都解决了——我管 OpenClaw 叫“虾塘”,把每天抓取的素材叫“虾苗”,把整理素材的定时任务叫“投喂”,把最终生成的创作草稿叫“收成”。

这套系统每天都在跑,过程中踩了不少坑,也积累了很多可以复用的经验。如果你也停更了很久想重启表达,或者你手里有素材、有想法但就是缺一个稳定的创作流程,这篇文章值得你看完。我会把整套系统的设计思路、环境搭建、核心实现、翻车记录和排查办法都拆开讲清楚,所有配置都是我自己跑过的,你照着复制就行。

1. 为什么是“养虾”:一个创作者的中断与重启

1.1 五年前我为什么不写了

以前写东西靠状态,这是大多数内容创作者的通病。灵感来了,半夜能写三千字;状态没有,连续两周连个开头都憋不出来。当时我的创作流程是:找一个安静的时间段,打开文档,面对一个空白页面,然后开始“思考”。这个流程最大的问题,是把“输入素材”和“输出表达”两个动作强行塞进了同一个时间段。

等我重新打开后台准备写东西的时候,发现自己连素材积累的习惯都丢了。收藏夹里全是五年前的文章链接,笔记软件里堆着几百条半截想法,但没有任何一条被整理过。一眼望过去全是“虾苗”饿死的尸体,埋怨它们为什么没有自己长成肥美的虾,这当然不现实。

我没有立刻去补写那些烂尾文章,而是换了个思路:如果我搞一套自动化系统,能够每天替我抓取素材、整理信息、生成初稿,我是不是只需要做最后的筛选和改写?这个想法就是“养虾”的起点。

1.2 从“憋大招”到“小步投喂”:用系统对抗完美主义

停更五年的人,多多少少都有点完美主义。总想着下一篇一定要足够重磅,要对得起读者的等待,结果就是永远在准备、永远不发布。这就像养虾人天天研究一斤虾怎么卖高价,却连虾苗都没放进去。

“养虾”实验的设计原则恰恰相反:目标不是一次性产出一篇多惊艳的内容,而是建立一个每天都能稳定产出半成品的流水线。OpenClaw 系统负责“投喂”——把 RSS、收藏内容、热点清单、我的碎片想法全部整理成卡片;负责“水质调节”——对素材去重、打标、提炼核心观点;负责“收成”——按照预定的模板和风格,每天产出一篇大概几百字的创作初稿。

我只需要每天花十五分钟做一件事:挑一篇初稿,改到能看,然后发出去。压力被分解到了每天,完美主义就失去了立足点。你要接受一件事:发出去的永远不是完美的,但连续发的价值,远高于憋一个完美的。

1.3 “养虾”的命名逻辑:自动化系统就像虾塘

为什么叫“养虾”?因为这套系统本质上就是一个小型生态圈。虾塘需要水泵、增氧机、饲料投放器、水质监测仪,OpenClaw 也是同样的结构:消息源是进水口,定时任务是自动投喂器,知识库是塘底的淤泥和微生物——它决定了虾苗能从环境里吸收到什么营养,而最终生成的内容就是出塘的虾。

这样命名有一个额外的好处:它把“写文章”这件事变成了一个可以去观察、去调试、去记录的对象。你做的是系统运营,而不再是一昧“逼迫自己写作”。每当我对着一篇初稿不满意,我不会说“我写作能力真差”,我会说“今天的水质参数可能有问题,素材喂少了”或者“这套提示词该重新调了”。这种思维转换,对重启创作表达极其重要。

提示:如果你也想搭建类似系统,请先抛开“我要写一篇好文章”的包袱。先接受“我可以写一篇烂稿”,让系统先跑起来,再慢慢优化。烂稿是可以迭代的,空白页是无法迭代的。

2. 基础设施搭建:给“虾塘”接上电

2.1 OpenClaw 是什么:一个可以编排一切的 Agent 框架

OpenClaw 是一个开源的个人 Agent 框架,核心能力是把大语言模型、外部工具、定时任务、消息通道和知识库编排成一条条自动化“技能”。你可以把它理解成一个中枢系统:它连接给谁喂数据(输入源)、怎么处理数据(Agent 逻辑)、把结果送到哪里(输出通道)。

这个系统本身不做“内容生成”以外的魔法,真正重要的是它的三个特性:

  • 定时触发机制:可以精确到分钟级别执行任务,这是内容流水线的节拍器。
  • 插件生态:RSS 解析、网页抓取、数据库读写、消息推送都有现成插件,不用从零造轮子。
  • 多 Agent 协作:每个 Agent 扮演不同角色,比如“素材采集者”“观点提炼者”“风格化写手”,它们之间有明确分工。

选 OpenClaw 而不是自己写一套脚本,原因也简单:脚本只能做固定流程,而 Agent 可以在流程中加入判断。比如“这篇文章是否值得收藏”这个动作,脚本只能按规则关键词判断,Agent 却可以真正理解内容质量。养虾这件事,光靠定时加水是养不活的,得有会看水质的“鱼脑子”。

2.2 部署与初始配置:Docker 还是源码跑

我推荐先用 Docker 跑起来,跑通再考虑源码部署。不管哪种方式,都需要先准备一台带 Docker 的 Linux 服务器,内存建议至少 2GB。我的部署环境是某云厂商的最低配云主机,2 核 4G,跑这套系统绰绰有余。

Docker 部署的关键步骤:

# 1. 拉取镜像并创建容器 docker pull openclaw/openclaw:latest # 2. 创建数据目录,配置文件挂载到宿主机 mkdir -p ~/openclaw-data cd ~/openclaw-data # 3. 启动容器,映射端口和控制目录 docker run -d \ --name openclaw \ -p 8080:8080 \ -v ~/openclaw-data:/data \ -e OPENCLAW_CONFIG=/data/config.yaml \ --restart=always \ openclaw/openclaw:latest

启动之后,系统会在数据目录生成一个默认的config.yaml。初期配置只需要关注四个模块:plugins(启用哪些插件)、triggers(定时任务)、agents(Agent 角色定义)、channels(消息进出通道)。

# config.yaml 初始核心配置(节选) plugins: - name: rss enabled: true - name: html_reader enabled: true - name: sqlite_kv enabled: true - name: telegram_bot enabled: true triggers: - id: daily_feed cron: "0 8 * * *" # 每天上午8点触发 action: collect_sources - id: digest_generate cron: "30 14 * * *" # 每天下午2点半整理素材 action: generate_draft agents: - name: collector model: gpt-4o-mini temperature: 0.2 - name: writer model: gpt-4o temperature: 0.7 channels: - type: telegram token_env: TELEGRAM_BOT_TOKEN chat_id_env: TELEGRAM_CHAT_ID

2.3 我的组件选型:知识库、定时任务、消息网关、统计面板

“虾塘”不需要太多花哨组件,我实际启用的核心部件只有四类,每一类都有明确的用途。

知识库(sqlite_kv + 向量检索):所有采集到的素材、生成的草稿、历史内容都存这里。我按内容类型分了几个 key 前缀:raw:存原始素材,card:存整理后的信息卡片,draft:存生成初稿,published:存最终发布版本。这个分层让整个数据流可追溯,出问题时能快速定位是哪个环节出了问题。

定时任务(triggers):我的系统每天跑三个任务,早 8 点抓取素材,下午 14:30 整理素材并生成信息卡片,晚上 20:00 根据卡片生成创作草稿。这三个节点刻意拉开间隔,是因为大模型处理长文本需要时间,而且分批处理能避免上下文混乱。

消息网关(Telegram Bot):这是我与“虾塘”交互的入口。我随手记的想法、刷到的链接、灵光一现的标题,都可以直接发给机器人,它会自动进知识库。每天生成的草稿也会推送到这个会话里,我早上起来看手机就能完成“收成”的初筛。

统计面板(Dashboard):OpenClaw 自带一个轻量 Web 面板,能看到每次任务运行日志、API 调用消耗、Agent 响应时间。重启创作表达这件事,最怕的是“感觉没产出”,面板上的实打实数据能帮你把感觉变成事实——看到“今日已生成 3 张卡片、1 篇草稿”,那种断更的焦虑感会小很多。

提示:初期不要尝试接入太多渠道。我见过有人一上来就接五六个平台的信息源,结果素材一个劲往里涌,Agent 处理不过来,系统天天报警。先接一个 RSS 源,把你的收藏夹清一遍,跑一周看效果,再决定要不要加量。

3. 核心环节实现:投喂、水质与收成

3.1 投喂逻辑:素材自动进塘

素材是怎么进“虾塘”的?我建立了三个输入通道,对应三种不同类型的“虾苗”。

通道一:RSS 定时抓取。我维护了一个订阅源列表,包含行业资讯、技术博客、几个创作社区的精华区。系统每天按固定节奏去抓取,新内容进入raw:前缀缓存区。这个通道解决的是“找素材”的问题,以前我要主动去逛各个网站,现在系统替我做。

通道二:Telegram 随手记。这个通道解决的是“碎片想法”的收集。任何时间脑子冒出一个观点、看到一个值得聊的话题、读到一句有启发的话,直接发给机器人。机器人收到消息后自动打上source: telegram标签,并存入raw:quick_idea区域。

通道三:主动导入。遇到长文、PDF、完整报告这类不适合直接抓取的素材,我手动丢进数据目录的inbox文件夹,定时任务会扫描这个目录并解析入库。

进塘只是第一步,真正的核心逻辑在第二步:去重和初步打分。我写了一个采集后处理脚本,会对新素材计算文本指纹,和知识库里已有的内容对比,重复的丢弃;同时用一个小模型给素材打“价值分”,从信息增量、话题热度、与我设定创作方向的匹配度三个维度给 0-10 分的评估。分数低于 6 的直接进回收站,不进入后续流程。

这套逻辑的巧妙之处在于,它挡住了 80% 的“虾饲料”——看似是素材、其实只是噪音的信息。以前我收藏夹里堆满的东西,大部分就属于这种,看起来有用,实际上永远不会被用上。

3.2 水质管理:让 Agent 保持“状态健康”

虾塘的水质,对应的是 Agent 的工作质量和系统的信息健康度。运行一个月后我总结出三个关键指标,每个都是踩过坑才想明白的:

素材新鲜度:素材入库超过 14 天没用上,就会被自动标记为“过期”,过期三次的自动清除。为什么定 14 天?因为创作表达最怕的是“旧闻新写”。五年前我收藏的文章,今天再写已经没有传播价值了。信息是有时效性的,对大部分非学术类创作者来说,14 天的周期足够把素材消化成内容。

观点重复度:“虾苗”长得像,养出来的虾也没差别。Agent 生成内容的时候,如果检测到上下文里有超过三张内容相似的卡片,会主动进行合并提炼。这个功能对避免“换汤不换药”的重复表达很有效。我试过连续两周用同一个话题的素材生产内容,它会在第三周明确提示我:“这个话题已经覆盖过,建议换个切入点或寻找新素材。”

Agent 上下文清理:每次任务完成后,系统会清空 Agent 的短期记忆,只把总结性的卡片放回知识库。这就像给虾塘换水,如果长期不换,水质会恶化,生成的文本会越来越啰嗦、越来越偏离主题。清理上下文换来的是每篇草稿的独立性和一致性。

运行两个多月后,我注意到一个有趣的现象:知识库里的卡片数量并没有无限膨胀,而是稳定在一定规模——旧素材不断被合并、提炼、归档,新素材持续补充,形成了一个动态平衡。这个“水质稳定”的状态,恰恰是创作表达最理想的状态:有持续的输入,但不会被历史信息淹没。

3.3 收成:从素材到草稿再到定稿的流水线

“收成”是整个系统最核心的环节,它分三个阶段:

阶段一:素材汇编(collector Agent)。下午 14:30,collector Agent 会把当天所有新素材整合成信息卡片,每张卡片包含核心观点、关键论据、可能的角度和引用原文。这一步完成的是“消化”,相当于把“虾苗”身上的淤泥洗干净。这个 Agent 的温度设置为 0.2,尽可能精确和忠实,不要自由发挥。

阶段二:初稿生成(writer Agent)。晚上 20:00,writer Agent 会从当天的卡片池里挑选分值最高的 3-5 张,依照预设的创作方向生成一篇 800 字左右的初稿。这一步用的是温度 0.7,允许适度的联想和发挥。初稿是半成品,它包含了一个完整表达所必需的骨架,但没有深度的细节。

阶段三:人工定稿。这是唯一没有自动化的环节。我每天早上八点打开手机,看推送过来的草稿,花 10-20 分钟做三件事:纠正事实性错误、补充自己的观点和经历、润色语言风格。

这套流水线跑起来之后,我每天的创作动作从“面对空白文档发愁”变成了“面对半成品做编辑”。两个身份的切换,大大降低了启动阻力。以前启动写作就像烧一壶水,要从自来水烧到沸腾;现在只需要把 80 度温水加热到 100 度。

4. 创作表达训练:把 Agent 从工具练成“陪练”

4.1 第一周的翻车现场

不吹不黑,刚搭好系统的最初一周产出非常辣眼睛。Agent 生成的初稿,有的像产品说明书,有的像学术摘要,还有一篇直接把素材原文拼接了一下就交差,连转折词都没写。我当时很受挫,差点把系统停了。

后来复盘才明白,问题出在预期管理上:我把“生成随机内容”当成了“创作表达”,就像把一把生锈的刀当成了一把好刀。你不能第一周就要求一个刚接手的小工做出一桌满汉全席——你给的菜谱、食材、火候指示都不够具体,他只能用自己的方式瞎炒。

那几天我也做了一些调整:把多篇翻车初稿和我的改写版本一起输入系统,做成对齐样本。这是后来整个系统能用的关键一步——不是换更贵的模型,而是让模型看清“从烂稿到定稿到底发生了什么变化”。

4.2 提示词的迭代:从“代写”到“催化”

第一版提示词是这样的:

请根据以下素材写一篇文章:...

这种“代写式”提示词,AI 能给你一篇结构正确的文章,但大概率没有观点、没有个人痕迹、没有任何值得读的东西。它只是把素材重排了一遍。我试了很久,发现真正管用的,是让 Agent 扮演“催化者”而不是“代写者”——它不替你完成表达,而是帮你想清楚、理清楚、刺激你说出原本想说的话。

这是我迭代后的 writer Agent 提示词:

## Role 你是一位善于引导创作的编辑,不是代笔作家。 ## Task 基于以下素材卡片,生成一篇创作催化稿。催化稿的目的不是直接可用,而是: 1. 提出3个可能的创作切入角度; 2. 对每个角度给出核心论点、支撑素材、潜在争议点; 3. 用口语化的方式模拟“如果当面和朋友聊这个话题,会怎么开口”; 4. 保持对你的性格(理性、直接、略带幽默)的模仿,但不要过头。 ## 输出格式 角度一:... 角度二:... 角度三:... 推荐角度:... 引导性问题:...

这样改完之后,初稿质量提升了一个档次。Agent 不再“替我说”,而是“让我想说”。每天早上我看到推送,第一反应从“这写的什么鬼”变成了“哦这个角度有点意思,但我会有不同的看法”——然后我就有表达的欲望了。

4.3 表达风格驯化的三个技巧

重启创作表达,最重要的一点是:你的文章必须看起来像你。AI 生成的文本再优美,如果没有个人痕迹,读者一眼就能看出来。我总结出三个风格驯化技巧,都是在实验中被验证有效的。

技巧一:准备一个“风格记忆库”。把你公众号早期最满意的十篇文章丢给系统,让它提取语言特征:句式长短偏好、观点展开节奏、常用转折方式、幽默的边界感。系统会生成一份“风格说明”,在生成初稿时自动参考。这个方法比在提示词里写“模仿某某的风格”可靠得多,因为它不是玄学地模仿语气,而是有具体特征的系统级约束。

技巧二:把“吐槽点”写进任务指令。我的风格里有个明显特征:对行业虚火和空话比较敏感,喜欢用反讽的方式拆解流行概念。我在 writer Agent 的指令里加了一条:“如果素材中存在行业黑话、过度包装的概念,请用直白的语言拆穿它。”这条指令几乎成了我的内容辨识度来源。

技巧三:设定“反向约束”。告诉 Agent 不要做什么,比告诉它要做什么更有效。我的反向约束有三条:不使用“总而言之”“众所周知”这类空泛衔接词;不用排比句堆砌情绪;不引用没有出处的数据。每一条都是我从自己过去的烂稿里挖出来的毛病。

5. 运行实录与踩坑排查

5.1 定时任务为什么不触发

系统跑了两周后,突然有一天早上没有任何新草稿推送。检查后台,发现日志停在昨晚 19:59,任务在触发阈值前一刻停止了。

排查过程如下:

  • 第一步怀疑是 cron 表达式写错,检查配置没有问题;
  • 第二步看日志,发现是数据库连接超时,SQLite 被某个长时间运行的查询锁住了;
  • 第三步定位到,是因为前一天手动导入了一份超大 PDF,解析任务占用了数据库连接数小时;
  • 第四步修复:给所有需要读写数据库的任务加了超时重试机制,并把 PDF 解析任务调到了凌晨低峰期。

这次踩坑告诉我们两件事:第一,定时任务必须配置错误告警,否则一次静默失败会让你接连好几天没产出;第二,大文件导入任务必须做资源隔离。现在我的每类任务都设置了独立的超时时间,最长不超过 15 分钟,超时直接中断并推送告警。

5.2 素材质量失控:喂了太多“虾饲料”

运行到第三周,我发现系统生成的草稿内容越来越空泛。根本原因不在生成环节,而在素材环节——某个订阅源的内容质量突然暴跌,抓进来的全是 AI 生成的低质营销文,Agent 没法识别这种“高质量垃圾”,依然把它们放进了待处理池。

给采集环节加了两个过滤器之后问题才解决:

  • 长度过滤:正文少于 600 字的直接丢弃;
  • 信息密度过滤:用模型计算文本的“观点密度”,每千字包含 5 个以上实质观点的保留,低于阈值进入回收站。

这个调整有效到什么程度?回收率从原来的 20% 降到了 5% 左右。现在的素材池几乎都是真正有信息增量的内容,草稿质量肉眼可见地上来了。这件事对创作表达的启发是:不是所有输入都值得被表达,过滤能力本身就是创作能力的一部分。

5.3 成本控制:API 账单怎么压下来

很多人听到“每天跑三四个 Agent 任务”,第一反应是 API 账单会很吓人。我第一个月的账单确实是这样的——比预期翻了两倍,原因是多个 Agent 默认使用大模型,每天处理几万字素材,积少成多。

现在的成本控制策略:

  • 轻量任务用小模型:素材采集、去重、打标全部用 gpt-4o-mini 级别的小模型,性价比高,效果也够用;
  • 重任务用大模型:只有生成创作初稿时才用满血大模型,这是整个系统唯一需要“理解深度”的环节;
  • 落地缓存机制:相同素材的重复处理直接读缓存,不二次调用 API;
  • 设置硬性限额:在 OpenClaw 配置里设置单日 API 消耗上限,超过即暂停非核心任务。

优化之后,月度 API 成本下降了约 70%,大概相当于本地订阅服务的一个零头。想养虾,不需要顿顿喂龙虾饲料——好钢用在刀刃上,这个朴素的道理放在 AI 创作系统里同样适用。

5.4 常见问题速查表

问题现象可能原因解决办法
定时任务不触发cron 时区不对 / 数据库锁死检查服务器时区;增加超时重试机制
草稿内容空洞素材质量差 / 提示词缺少约束加信息密度过滤器;迭代提示词
素材大量重复订阅源内容重叠启用指纹去重;合并相似关键词
API 消耗异常高多个重任务同时运行切换小模型;设置硬性消耗上限
生成风格偏离自我风格记忆库未启用注入历史文章的提取特征
草稿有事实错误素材本身有误 / 温度过高降低 writer Agent 温度;增加事实核查步骤
知识库膨胀失控缺少归档与清理策略设置过期时间;定期自动清理

这张表是我每次遇到问题后随手更新的,现在已经成了我的“养虾手册”。我建议你也建一张这样的表,每记录一个问题,系统就多一分稳定性,你的表达习惯也多一层保障。

6. 写在最后:养虾养的不是虾,是持续表达的习惯

“养虾”实验到今天已经运行了将近四个月,系统没有一天停过机,我也几乎保持了一天一篇以上的产出频率。这个产出量的背后不是意志力,而是整套自动化流程在兜底。素材自动进来,草稿自动生成,我只需要做最重要的一步——加上我的判断和表达。

过去五年,我一直以为重启创作需要某个“契机”,比如换工作、有大块时间、想明白某个道理。这次实验告诉我,比契机更靠谱的是建立一套不依赖状态的系统。这套系统的核心机制有两个:一是把不可控的“灵感”变成可控的“流程”,二是把“完美主义”这家伙挡在系统之外——它每次试图插手时,流程已经在运转了。

如果你也想重启一项中断了很久的表达,不妨试试类似的思路,不必局限在 OpenClaw 这套具体的工具链上。任何一套能帮你自动收集素材、自动生成半成品、把创作动作拆解为可执行任务的小系统,都可能是一个好开始。你真正需要付出的,只是每天十几分钟的“人工精选”时间,以及愿意从粗糙的第一篇开始重来的勇气。

一个个人体会:养虾最忌讳盯着水面盼着虾跳、盼着立刻看见肥美的收成。创作表达也是这样,刚开始的日子里,可能很长一段时间看的是浑浊的水面,直到某一天你踩着稳定的节拍发完了第一篇,那种持续输出带来的踏实感才会真正出现。而这,远比任何一篇“一次性爆文”更值得追求。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询