Day 3: 给 Clawdbot 瘦身:为什么单一职责原则在 AI 时代更重要?

Day 3: 给 Clawdbot 瘦身:为什么单一职责原则在 AI 时代更重要?

标题备选

  1. 给 Clawdbot 瘦身:为什么单一职责原则在 AI 时代更重要?
  2. 拒绝"巨石 Prompt":用微链架构 (Micro-Chain) 重构你的 AI 工作流
  3. 为什么你的 Agent 越聪明越容易出错?拆解它!

正文内容

在软件工程中,有一条黄金法则叫 SRP (Single Responsibility Principle),单一职责原则。 意思是:一个模块应该只做一件事,并把它做好。

然而,到了 AI Agent 时代,大家好像突然把这事儿忘了。

我看过很多人的 Clawdbot Prompt,一写就是几百行,试图用一个 Prompt 解决世界和平:

"你需要打开这个网页,如果有弹窗就关掉,然后找到价格,如果价格低于 100 就截图,然后把截图转成文字,最后整理成表格发到我的邮箱,哦对了,邮件标题要包含今天的日期..."

这就是典型的**"巨石 Prompt" (Monolithic Prompt)**。

"巨石 Prompt" 的三宗罪

  1. 调试地狱: 整个流程跑失败了,是因为网页没打开?还是价格识别错了?还是邮件服务器挂了?你很难通过一个总的报错信息定位问题。
  2. 注意力涣散: LLM 的上下文窗口虽然大了,但注意力机制(Attention)依然有限。当你要求它同时关注"关弹窗"、"比价格"和"发邮件"时,它在每一个子任务上的表现都会下降。这就像让你一边骑独轮车一边抛球一边背圆周率。
  3. 牵一发而动全身: 你想改一下邮件标题的格式,结果改完发现它突然不会关弹窗了。因为你的指令改动影响了模型对上下文的整体理解。

解决方案:微链架构 (Micro-Chain Architecture)

把那个巨大的任务,拆解成一串小任务。每个小任务是一个独立的 Agent 或步骤,通过定义好的接口(Interface)传递数据。

步骤 1:抓取器 (The Scraper)

  • 职责: 只管把网页内容弄下来,清洗成干净的 Markdown 或 JSON。不分析,不判断。
  • Prompt 示例:

    "访问此 URL,提取所有商品信息。忽略侧边栏和广告。只返回纯 JSON 数据。"

  • 输出: raw_data.json

步骤 2:分析器 (The Analyst)

  • 职责: 拿到数据,执行业务逻辑(筛选、计算)。
  • Prompt 示例:

    "读取 raw_data.json。筛选出价格低于 100 的条目。计算平均折扣率。返回筛选后的列表。"

  • 输出: filtered_data.json

步骤 3:执行器 (The Actor)

  • 职责: 发送通知、写数据库。
  • Prompt 示例:

    "读取 filtered_data.json。给 admin@company.com 发一封邮件。这是邮件模板..."

架构对比图

Before: 线性赌博 [ 抓取 + 分析 + 发送 ] -> 成功率 80% (任何一个环节出错 = 全部重来,Token 钱白花)

After: 模块化流水线 [抓取 Agent] --(JSON)--> [分析 Agent] --(JSON)--> [发送 Agent]

为什么这样做更稳定?

  1. 容错隔离: 如果邮件服务挂了,你的抓取数据还在。你只需要单独重试"发送"这一步,不需要重新去爬一遍网站。
  2. 专注度提升: 在"分析"阶段,LLM 不需要关心 HTML 标签的噪音,只专注于数据本身,幻觉率大幅降低。
  3. 可测试性: 你可以单独拿 10 条数据测试"分析器",调试 Prompt 直到满意,而不用每次都去真实访问网页(慢且费钱)。

实战建议

检查你现在手头的 Clawdbot 任务。 如果你的 Prompt 包含 "然后" (and then) 这个词超过两次,大概率你应该拆分它了。

拆分标准: 如果某一步可以单独重试而不影响其他步骤,它就应该是一个独立的模块。

明天,我们聊聊在这样的架构下,如何追踪每一个步骤的状态——因为当任务被拆散后,如果还没有日志,你就真的瞎了。


标签:#系统架构 #PromptEngineering #Clawdbot #AI开发 #单一职责

← 返回博客列表