今日数据组同学问我:"Claude Code、Skill、Agent、Clawdbot 到底是什么关系?
"我没有从模型能力讲起,而是换了一个角度:"你们用 调度平台吗?
"当我们把这些概念映射到 ETL 工具链后,问题反而变得简单了。
这篇文章,就是那次工程对齐的完整记录。

如果你是做过 ETL 的工程师——这些东西你全认识,只是换了个马甲

概念 ETL 工具链类比 工程定位
Claude 模型 SQL 语句 执行层
Skill 存储过程 / 自定义函数 能力封装层
Claude Code PL/SQL Developer / Toad 开发调试工具层
Agent MOIA 作业流 / DolphinScheduler 工作流 单任务编排层
Clawdbot MOIA 调度平台 / DolphinScheduler 控制台 生产调度运行层

一、Claude 模型 = 你发给 MySQL 的那条 SQL

它自己不干活,是执行引擎干活。

你把 SQL 发给 MySQL,MySQL 给你返回结果集。
你把 Prompt 发给 Claude,Claude 给你返回文本。

-- ETL 世界
SELECT * FROM houses WHERE region = '朝阳区' AND price < 500;
-- 返回:结果集

-- AI 世界
"推荐朝阳区 500 万以下的房子"
-- 返回:文本

它不会调度、不会管理流程、不会自动重试。
发一句,回一句。一次一结。

这就是执行层。


二、Skill = 存储过程 / 自定义函数

很多人问:Skill 和 Prompt 有区别吗?

从模型角度看:没有。Skill 本质还是 Prompt。
从工程角度看:区别巨大。

你把那条 SQL 存起来,起个名叫 PROC_GENERATE_DAILY_REPORT,定好输入参数、输出结构。
下次别人直接 CALL 它,不用知道里面怎么写。

Skill 就是干这个的:

---
name: cluster_news
input: news_items[]
output: { topics: [] }
---

你是一名北京房产主编。
根据以下新闻列表,聚类出 3-5 个热点话题。

输入:{{news_items}}

输出格式:
{
  "topics": [
    {"name": "海淀学区新政", "count": 12},
    {"name": "朝阳CBD房价", "count": 8}
  ]
}

📁 放在 .claude/skills/ 下。
🔁 可复用、可版本管理、可被系统调用。

这就是能力封装层。


三、Claude Code = PL/SQL Developer / Toad

这不是调度系统,这是开发工具。

ETL 工程师用 Toad 干什么?

  • 写 SQL
  • 测存储过程
  • 存常用脚本
  • 连数据库跑一把试试

Claude Code 就是干这个的:

# 测试 Skill
claude -s cluster_news --news ./raw.json

# 生成脚本
claude -s generate_script --topic "海淀学区新政"

# 调试输出
claude -s verify_answer --answer "朝阳区房价..." --data ./houses.json

📌 写 Skill
📌 测 Skill
📌 放在手边随时调用

调试用的,不上生产。
它是开发工具层,不是运行层。


四、Agent = MOIA 作业流 / DolphinScheduler 工作流

MOIA 里最核心的单元叫什么?作业流

一个作业流:

Step1 取数 → Step2 清洗 → Step3 加载 → Step4 发邮件

有状态、有分支、有循环、可能失败重试。

Agent 完全一样:

# 房产新闻生成 Agent
def daily_news_agent():
    # Step1: 取数
    raw_news = fetch_hotspots()
    
    # Step2: 聚类
    topics = cluster_news(raw_news)
    
    # Step3: 循环生成
    for topic in topics:
        # Step4: 生成脚本
        draft = generate_script(topic)
        
        # Step5: 验证
        if verify_answer(draft):
            save_to_db(draft)
        else:
            # 重试
            draft = generate_script(topic, retry=True)
            save_to_db(draft)
    
    # Step6: 发通知
    send_notification("今日新闻已生成")

这不是开发工具,是生产环境里真实跑的那一串任务。

一个作业流 = 一个 Agent。

这是单任务编排层。


五、Clawdbot = MOIA 调度平台 / DolphinScheduler 控制台

一个作业流叫 Agent。
一千个作业流同时跑,就得有人管。

MOIA 是干什么的?

  • 谁几点跑
  • 跑失败了怎么办
  • 并发几个
  • 资源够不够
  • 有没有人要通知

Clawdbot 就是干这个的:

dag_name: beijing_daily_news
schedule: "0 8 * * *"  # 每天早上 8 点
max_concurrency: 3
retry: 2
notify_on_failure: wecom

tasks:
  - name: fetch_news
    agent: fetch_hotspots_agent
  
  - name: generate_scripts
    agent: daily_news_agent
    depends_on: [fetch_news]
  
  - name: publish
    agent: publish_agent
    depends_on: [generate_scripts]

它不是 Agent,是管 Agent 的东西。
把作业流收上来,统一调度、监控、运维。

这是生产调度运行层。


六、所以,别再被营销话术骗了

营销说 工程现实
多智能体公司 多步骤 LLM 调用 + 状态管理
AI 自主决策 if/else + for 循环
智能协作 作业流依赖关系
AI 调度平台 企业级调度软件

没有玄学,只有抽象层级。


七、真正的工程含金量在哪

不是"AI 更聪明"。
是这套架构让你拥有:

可复用 — Skill 写完到处调
可测试 — Mock Skill 返回值测 Agent 逻辑
可观测 — 每次调用花了多少钱、输出结构对不对
可运维 — 失败了自动重试、并发可控、有日志可查

这些都是 ETL 领域解决了二十年的老问题。
只是执行引擎从 SQL 换成了 LLM。


八、如果你现在要上手

阶段一 — 单点实验

  • 只写 Skill
  • 用 Claude Code 手动跑
# 写一个 Skill
vim .claude/skills/recommend_houses.md

# 测试
claude -s recommend_houses --region "朝阳区" --budget 500

阶段二 — 流程自动化

  • 写 Python 脚本调多个 Skill
  • 自己维护状态
# agent.py
def recommend_agent(user_query):
    # 1. 意图识别
    intent = detect_intent(user_query)
    
    # 2. 检索
    houses = search_houses(intent)
    
    # 3. 生成推荐
    recommendation = generate_recommendation(houses, intent)
    
    # 4. 验证
    if verify_answer(recommendation):
        return recommendation
    else:
        return fallback_answer()

阶段三 — 生产调度

  • 接 Clawdbot 或 DolphinScheduler
  • 加监控、重试、告警
# clawdbot.yaml
dag_name: house_recommendation
schedule: "*/5 * * * *"  # 每 5 分钟
max_concurrency: 10
retry: 3
timeout: 60s

tasks:
  - name: recommend
    agent: recommend_agent
    on_failure: send_alert

不需要一上来就造调度平台。
从存储过程开始,不丢人。


九、实战案例:北京房产新闻生成系统

我们公司做北京房产,每天要生成市场分析报告。

传统做法(纯人工)

1. 数据同学导出昨日成交数据(30 分钟)
2. 运营同学写分析报告(2 小时)
3. 主编审核修改(1 小时)
4. 发布到公众号(30 分钟)

总计:4 小时

用 Skill + Agent 后

# 1. 定义 Skill
# .claude/skills/analyze_market.md
"""
分析北京房产市场数据,生成市场分析报告。
输入:成交数据 JSON
输出:分析报告 Markdown
"""

# 2. 定义 Agent
def daily_report_agent():
    # Step1: 取数(数据同学的 ETL 已经跑好了)
    data = load_from_db("SELECT * FROM daily_transactions")
    
    # Step2: 分析(调用 Skill)
    report = claude_skill("analyze_market", data=data)
    
    # Step3: 验证(调用 Skill)
    if claude_skill("verify_report", report=report):
        # Step4: 发布
        publish_to_wechat(report)
    else:
        # 降级:发通知给运营
        send_alert("报告生成失败,请人工处理")

# 3. 调度(每天早上 8 点)
# clawdbot.yaml
schedule: "0 8 * * *"
agent: daily_report_agent

效果

  • 时间:4 小时 → 10 分钟
  • 成本:3 人 → 0.5 人(只需要审核)
  • 质量:稳定(Skill 可以不断优化)

十、常见误区

误区 1:Agent 会自己思考

错误:Agent 会自己决定做什么
正确:Agent 是你写的 if/else + for 循环

# 这不是 AI 自主决策,这是你写的代码
if intent == "投资":
    return investment_recommendation()
elif intent == "自住":
    return living_recommendation()
else:
    return fallback_answer()

误区 2:Skill 比 Prompt 高级

错误:Skill 是新技术
正确:Skill 就是存储过程,只是换了个名字

# Skill 本质
Skill = Prompt + 版本管理 + 参数化 + 可复用

误区 3:Clawdbot 是 AI 调度平台

错误:Clawdbot 用 AI 调度任务
正确:Clawdbot 就是 DolphinScheduler,只是调用的是 LLM 而不是 SQL

# 这和 DolphinScheduler 的配置有什么区别?
schedule: "0 8 * * *"
retry: 3
timeout: 60s

十一、给数据同学的建议

如果你是数据工程师,想学 AI 应用开发:

  1. 别学新概念:你已经会了,只是换了个名字
  2. 从 Skill 开始:就像写存储过程一样
  3. 用 Python 编排:就像写 ETL 脚本一样
  4. 接调度平台:就像接 MOIA 一样

你的优势

  • ✅ 懂数据流
  • ✅ 懂状态管理
  • ✅ 懂异常处理
  • ✅ 懂监控告警

你只需要学

  • 怎么调用 LLM API
  • 怎么写 Prompt
  • 怎么评估输出质量

十二、给算法同学的建议

如果你是算法工程师,想做 AI 应用:

  1. 别只盯着模型:工程化比模型重要
  2. 学 ETL 思维:数据流、状态管理、异常处理
  3. 写可测试的代码:Mock Skill 返回值,测 Agent 逻辑
  4. 关注可观测性:每次调用花了多少钱、输出结构对不对

你的优势

  • ✅ 懂模型原理
  • ✅ 懂 Prompt 工程
  • ✅ 懂评估指标

你需要学

  • 怎么写生产级代码
  • 怎么做监控告警
  • 怎么做异常处理

结语

AI 工程化没有新范式。
只是把数据库那套,在 LLM 上重演一遍。

  • Skill 是存储过程
  • Agent 是作业流
  • Clawdbot 是调度平台

你本来就会,只是换个名词不认识了。


关键词:Claude Code、Skill、Agent、Clawdbot、ETL、工程化、AI 应用开发

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐