软件开发范式转移:面向 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 + 代码里的硬编码常量灵活得多——而且用户可以用自然语言随时调整。
什么适合,什么不适合
⭐⭐⭐⭐⭐ 完美适合
- 监控/告警系统:天然适合主动推送
- 数据采集+分析:cron + LLM 是最佳组合
- 个人自动化:日报、提醒、信息聚合
- 交易信号系统:伊朗追踪就是这个场景
⭐⭐⭐ 部分适合
- 内容生成流水线:播客转录、文章生成
- 交易执行:信号推送适合,自动下单需要额外脚本
⭐ 不太适合
- 高频实时系统:毫秒级延迟做不到,cron 最快也是分钟级
- 多人协作工具:需要传统 UI 和权限系统
- 面向公众的产品:普通用户不会跟 Agent 聊天
混合方案
最务实的做法往往是混合:
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 组件怎么布局"上。
对于个人开发者和小团队来说,这意味着:
- 验证想法的速度快了 5-10 倍——半天跑起来 vs 一周写完
- 维护成本趋近于零——没有服务器要管,没有前端要修
- 系统天然可进化——说一句话就能改行为,不用改代码
下次你准备 npx create-react-app 的时候,先停一秒想想:这个系统真的需要一个前端吗?还是一个 Agent + 几条推送就够了?
本文基于开发伊朗局势追踪系统过程中的真实讨论整理而成。