软件开发范式转移:面向 OpenClaw 开发

引子:一个伊朗局势追踪系统的故事

我们最近想做一个系统:实时追踪伊朗局势的新闻和社交媒体,监控 Polymarket 上相关预测市场的价格变动,用 AI 分析新闻对市场的影响,在发现套利机会时推送提醒。

按传统思路,这是一个标准的全栈项目:

iran/
├── backend/          # FastAPI + SQLAlchemy + APScheduler
│   ├── main.py       # WebSocket 服务器
│   ├── scheduler.py  # 定时任务调度
│   ├── database.py   # ORM 模型
│   ├── analyzer.py   # Claude API 调用
│   └── collectors/   # 三个数据采集器
├── frontend/         # React + Vite + TailwindCSS
│   ├── App.tsx
│   ├── components/   # 新闻流、市场面板、信号徽章
│   └── hooks/        # WebSocket 连接管理
├── .env
└── requirements.txt

后端 7 个 Python 文件,前端 6 个 TypeScript 文件,加上配置和测试——一个"最小可用版本"就要 20+ 个文件。开发需要 2-3 天,之后还要部署、维护进程、处理服务挂掉的问题。

然后我们停下来想了想:这些代码里,有多少是真正的业务逻辑,有多少是在造轮子?


重新审视:一个系统到底由什么构成

任何信息系统都可以拆成五层:

数据采集 → 处理/分析 → 存储 → 调度 → 展示/通知

传统开发中,每一层你都要自己写代码:

传统方案 你在做什么
采集 httpx + API client ✅ 真正的业务逻辑
分析 Claude API 调用 ✅ 真正的业务逻辑
存储 SQLAlchemy + SQLite 🔧 造轮子
调度 APScheduler 🔧 造轮子
展示 React + WebSocket 🔧 造轮子
部署 screen/systemd/Docker 🔧 造轮子
通知 自写 Telegram bot 🔧 造轮子

真正的业务逻辑——"怎么采集伊朗新闻"和"怎么分析新闻对市场的影响"——只占代码量的 20%。剩下 80% 是在解决"怎么让这些代码跑起来、持续运行、把结果给人看"的问题。

这 80% 的轮子,正是 OpenClaw 已经造好的。


面向 OpenClaw 的开发:只写那 20%

同样的伊朗追踪系统,面向 OpenClaw 开发的版本:

iran-tracker/
├── SOUL.md              # Agent 身份和规则
├── scripts/
│   ├── fetch_news.py    # 新闻采集(保留原有逻辑)
│   ├── fetch_markets.py # Polymarket 数据采集
│   └── analyze.py       # LLM 分析信号
└── memory/
    └── market-state.json # 状态持久化

3 个核心脚本 + 1 个配置文件。没有服务器,没有前端,没有数据库,没有部署。

调度?OpenClaw 的 cron job。通知?OpenClaw 的 message 工具,一行推送 Telegram/Discord。存储?memory 文件,简单够用。交互?自然语言——"把信号阈值调到 4 级以上"。

开发时间:半天


范式转移:从"构建应用"到"配置 Agent"

这不只是"换了个框架",而是开发范式的根本转变:

传统:你在写一个应用

需求 → 设计架构 → 写前端 → 写后端 → 写数据库 → 部署 → 维护

你的交付物是代码。用户通过 UI 与系统交互。

OpenClaw:你在配置一个 Agent

需求 → 写采集脚本 → 配 cron → 写 SOUL.md → 完了

你的交付物是能力。用户通过自然语言与系统交互。

具体对应关系

传统组件 OpenClaw 对应
Web Server (FastAPI) 不需要
定时调度 (APScheduler) cron jobs
数据库 (SQLite/Postgres) memory 文件 / 外挂 DB
前端 (React/Vue) 推送到 Telegram/Discord
REST API 自然语言指令
配置文件 (.env) SOUL.md / TOOLS.md
日志系统 (logging) memory/YYYY-MM-DD.md
进程管理 (systemd) Gateway 自动管理
多服务编排 (Docker Compose) 多 Agent 协作

不只是自然语言 Interface

有人会说:"这不就是给系统加了个聊天机器人吗?"

不。面向 OpenClaw 开发比"加个 NLP 界面"多了四个本质差异:

1. 主动性

传统系统是被动的——你打开网页才看到数据。

OpenClaw Agent 是主动的——"伊朗市场 YES 价格 5 分钟内跳了 8%,可能跟刚才路透社的报道有关。当前价格 0.42,我的分析是还没完全 price in,要下注吗?"

它不等你来问,它来找你。

2. 上下文记忆

你说:"跟昨天那个类似的市场也关注下。"

传统系统:404 Not Found。OpenClaw Agent:翻 memory 文件,找到昨天你关注的市场,理解"类似"的含义,自动加入监控。

3. 跨系统串联

"把伊朗追踪的高强度信号同步到 Polymarket 交易系统,自动模拟下注。"

传统方案:写 API 对接,定义数据格式,处理错误,两个系统各改一遍。OpenClaw:两个 Agent 之间用 sessions_send 通信,一句话搞定。

4. 运行时自适应

"以后别推低于 3 级的信号了,太吵。"

传统方案:改代码 → 提交 → 部署 → 重启。OpenClaw:Agent 更新 memory 文件里的阈值,立刻生效。零代码变更。


通用改造方法论

几乎任何个人/小团队的信息系统都可以用同样的方法 OpenClaw 化:

Step 1:识别核心脚本

从现有系统中提取真正的业务逻辑——通常是数据采集和处理脚本。这些保持不变

Step 2:用 cron 替代调度器

原来 APScheduler 的代码,变成 OpenClaw cron 配置。

Step 3:用 message 替代前端

原来 WebSocket 推送到 React 前端,现在直接推 Telegram。

Step 4:用 memory 文件替代数据库

简单场景用 JSON 文件足够。需要复杂查询时,保留 SQLite 也行——两者不冲突。

Step 5:用 SOUL.md 替代配置

这比 .env + 代码里的硬编码常量灵活得多——而且用户可以用自然语言随时调整。


什么适合,什么不适合

⭐⭐⭐⭐⭐ 完美适合

⭐⭐⭐ 部分适合

⭐ 不太适合

混合方案

最务实的做法往往是混合

OpenClaw Agent(核心引擎)
  ├── cron 采集 + LLM 分析 + 推送通知  ← 日常使用
  └── 启动/管理独立 Dashboard           ← 需要深度分析时打开

日常靠推送就够了,Dashboard 只在需要看历史趋势和复杂图表时打开。


更大的图景:LLM-Native 操作系统

如果把视角拉远一点,OpenClaw 正在做的事情,本质上是在构建一个 LLM-Native 的操作系统

传统 OS OpenClaw
进程调度 (kernel) Gateway + Cron
文件系统 Memory 文件 + Workspace
标准 I/O Channels (Telegram/Discord/...)
应用商店 Skills
Shell 自然语言
配置文件 (.conf) .md 文件 (SOUL/TOOLS/AGENTS)
IPC (进程间通信) sessions_send / subagents

在这个范式下,开发一个"应用"就是配置一个 Agent + 写几个脚本。就像 Unix 哲学——每个程序做好一件事,用管道串联——OpenClaw 的哲学是每个 Agent 做好一件事,用自然语言串联。


结语

从"伊朗追踪系统要不要写前端"这个具体问题出发,我们发现了一个更普遍的模式:

传统开发的 80% 代码是在解决"让系统跑起来"的问题。面向 OpenClaw 开发,只需要写那 20% 的核心逻辑。

这不是偷懒,是重新分配注意力——把时间花在"追踪伊朗局势的策略是否有效"上,而不是花在"React 组件怎么布局"上。

对于个人开发者和小团队来说,这意味着:

  1. 验证想法的速度快了 5-10 倍——半天跑起来 vs 一周写完
  2. 维护成本趋近于零——没有服务器要管,没有前端要修
  3. 系统天然可进化——说一句话就能改行为,不用改代码

下次你准备 npx create-react-app 的时候,先停一秒想想:这个系统真的需要一个前端吗?还是一个 Agent + 几条推送就够了?


本文基于开发伊朗局势追踪系统过程中的真实讨论整理而成。