有一件事,大多数人用AI从来没想过——

让AI帮你想,然后让机器替你做剩下的。

通常的用法是:问AI一个问题,AI回一大段话,你再从里面找你要的信息,复制粘贴,整理归档。

这个"整理归档"的环节,就是浪费的那70%时间。


问题出在哪里

AI输出的是自然语言。自然语言是给人读的,不是给程序处理的。

比如让AI每天推荐3个选题:

今天有几个不错的方向可以考虑。第一个是关于AI工具链的整合,最近这个话题在Twitter上热度很高……第二个方向是关于……

然后你要把这段话拆成三条,分别记录标题、热度、理由。

如果是偶尔一次,没问题。

如果是每天自动跑,每次都要人工处理——自动化就是个笑话。


解决方案:Schema优先

做一件事:在给AI的指令里,提前定好输出格式。

不是说"帮我整理成列表",是说"按照这个JSON结构输出,不要输出其他任何内容"。

{}""]"mdi,tAaat{}oIrtepkem""""_d"stssrpoJ:"ioueiwS:tumlcnO"lrmekNY[ecav"Y"era:Y:"ynJY:"c"S-":eOM""NM":-D1D"","5,,","

AI的输出会是这样:

{
  "date": "2026-03-10",
  "items": [
    {
      "title": "Claude 3.7 推出混合推理模式",
      "source": "Twitter",
      "summary": "支持在同一对话中切换快思考和慢思考,成本降低40%",
      "relevance": 5
    },
    {
      "title": "DeepSeek V3 本地部署突破消费级显卡限制",
      "source": "GitHub",
      "summary": "4bit量化后可在16GB显存运行,社区反馈推理速度超预期",
      "relevance": 4
    }
  ],
  "top_pick": "Claude 3.7 推出混合推理模式"
}

这个输出,程序可以直接处理。


用jq一行提取你要的东西

jq 是处理JSON的命令行工具,装一次,用一辈子。

# 只要今日top_pick
echo "$result" | jq -r '.top_pick'

# 列出所有标题
echo "$result" | jq -r '.items[].title'

# 只要评分>=4的条目
echo "$result" | jq -r '.items[] | select(.relevance >= 4) | .title'

# 追加到本地文件
echo "$result" | jq -r '.items[]' >> idea_bank.jsonl

不需要写Python,不需要正则表达式,不需要手动解析。


真实场景:让OpenClaw的cron每天自动入库

以下是实际在用的配置。

OpenClaw的cron任务,message这样写:

{}""]"di,tAat{oIJte"pSemt_AO"sipgN:"tie:lcn"ekt[""::""""",,``J"`SsjOosNuornce":"","summary":"","score":1-10}

cron命令:

openclaw cron add \
  --name "daily-intel" \
  --cron "0 8 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --agent scout \
  --timeout-seconds 180 \
  --message '搜索今日AI热点,只输出JSON:{"date":"","items":[{"title":"","source":"","summary":"","score":0}],"top_pick":""}'

收到输出后,用脚本处理:

# 提取top_pick,追加到每日摘要
TOP=$(echo "$OUTPUT" | jq -r '.top_pick')
DATE=$(echo "$OUTPUT" | jq -r '.date')
echo "[$DATE] $TOP" >> ~/daily_summary.txt

# 高分条目入库
echo "$OUTPUT" | jq -r '.items[] | select(.score >= 8) | "\(.title) | \(.source)"' >> ~/idea_bank.txt

让多个Agent形成流水线

结构化输出真正的威力,在多Agent场景。

SAGcnhoaoulstytswJtSJrAMScSinaOoOtarNuNelktrydsoJtwSnOJNSON

每个Agent只做一件事,每个环节的输入输出格式固定。

不会因为某个Agent"发挥过度",导致下游处理出错。

这是工程化思维在AI工作流里的直接应用:接口比实现更重要。


一个细节:为什么要强调"不包含markdown代码块"

AI默认会把JSON包在 ```json ``` 里,因为它认为这样"更好看"。

但这样一来,jq 直接解析会报错:

$ echo '```json\n{"a":1}\n```' | jq '.a'
parse error (Invalid numeric literal at EOF at line 1, column 7)

所以指令里必须加一句:不包含markdown代码块,不包含任何说明文字,只输出一个合法的JSON对象。

加了这句,AI的遵从率从60%提升到95%以上。

剩下5%,加一个sed预处理兜底:

echo "$OUTPUT" | sed 's/```json//g' | sed 's/```//g' | jq '.'

说清楚:什么时候不该用这个方法

这是真实存在的限制,用之前想清楚。

① 遵从率不是100% 就算指令写得再严,仍有5%-15%的概率AI会格式出错——多一个字段、少一个括号、加了说明文字。自动化管道里一旦出现这种情况,整条链子就断了。高频自动任务需要加错误处理,否则某天早上醒来发现脚本静默失败了三天。

② Schema设计本身有成本 要提前想清楚需要哪些字段、类型是什么、边界条件怎么处理。对非开发者来说不是小事,而且需求一变,Schema也得跟着改。

③ 会过滤掉意外的价值 AI的自然语言输出有时候会给出你没想到但很有价值的角度——一个类比、一个关联、一个反常识的判断。Schema把AI锁定在固定格式里,这类发散性内容会被直接截断。如果你要的是AI"帮你想"而不只是"帮你整理",结构化输出反而是一种限制。


适合用的场景:

  • 固定、重复、需要自动化的任务(每日简报、选题入库、数据同步)
  • 输出内容类型已知,不需要发散
  • 后续有程序处理,不是人直接阅读

不适合用的场景:

  • 一次性的深度分析
  • 需要AI给出你没想到的角度
  • 没有脚本处理能力,输出最终还是人来读

小结

做法人工耗时
AI输出自然语言 → 人工整理5-15分钟/次
AI输出JSON → jq自动处理0分钟/次

每天10次这样的操作,一周省掉的时间是真实的。

但省时间的前提是用对场景。用错了,反而多了调试和容错的成本。

AI负责思考,程序负责处理,人负责判断用哪种方式。

这才是正确的分工。


这是「OpenClaw实战系列」的第一篇。后续会继续写多Agent流水线、Skill开发、以及让AI真正记住你的那些事。