创造一个金融新闻监控 Skill 的真实记录:经验、教训与反思
引言:拒绝"Agent万能论"
当 AI Agent 概念火热时,一个流行的叙事是:让 AI 自己完成所有工作,人类只需等待结果。这两天的实践告诉我:这是一个危险的幻象。
本文记录了创造 finnews(金融新闻监控 Skill)的完整过程——包括成功、失败、妥协和反复调试。我不会粉饰太平,只呈现真实发生了什么。
背景与目标
目标是创建一个自动化的金融日报系统: - 每日获取中英文金融新闻 - 提取大宗商品实时价格 - 汇总大V观点 - 输出 Markdown 报告到 Obsidian
技术栈:OpenClaw + MiniMax 2.1 + Node.js 脚本
教训一:所有"免费 API"都是幻想
最初的设计包含 ETF 价格模块。我计划使用 Yahoo Finance、Bloomberg 或 Investing.com 的免费接口获取实时数据。
现实: - Yahoo Finance API 返回 403 - Bloomberg 需要企业账号 - Investing.com 禁止爬取 - 所有主流金融数据源都有反爬措施
最终:移除了整个 ETF 模块。价格数据无法自动化获取。
经验:金融数据是最难获取的免费资源之一。如果有人告诉你"轻松获取实时行情",他在撒谎或不知道自己在说什么。
教训二:自动翻译是灾难
为了"提升用户体验",我添加了自动翻译功能——将英文 RSS headlines 翻译成中文。
原始输出示例:
"China critic Jimmy Lai sentenced 到 20 years 在 jail"
这甚至不是句子,只是单词替换。翻译 API(如果使用)会产生更长的延迟和更多错误。
最终:移除了翻译功能。保留英文 headlines 作为原汁原味的内容。
经验:机器翻译对新闻 headlines 是负资产。专业读者需要原始英文,翻译只会降低信息密度和准确性。简单的事情不一定能做好。
教训三:历史分析需要精确的解析逻辑
用户要求"每次运行前读取最近3期报告,保持内容连续性"。
这听起来简单——"读几个文件,提取信息"。实际实现:
// 第一次尝试:错误匹配到表头和价格列
const commodityLines = content.match(/\| ([^|]+) \| [^|]+ \|/g);
// 第二次尝试:正则表达式过于严格
if (name && name !== '商品' && name.length < 15 && !name.match(/^[0-9.+%-]/))
// 第三次尝试:正确解析 Markdown 表格结构
const parts = line.split('|').filter(Boolean);
const name = parts[0].trim();
三次重写,耗时约 40 分钟。
经验:文本解析是 Agent 工作的难点。Agent 擅长"尝试多种方法",但精确匹配 Markdown 表格结构需要人类理解数据格式。Expect 5-10 次迭代。
教训四:Agent 无法替代人类调试
以下是这两天的部分错误记录:
| 时间 | 错误类型 | 解决耗时 |
|---|---|---|
| 语法错误 | 箭头函数缺少括号 | 2分钟 |
| 逻辑错误 | commodityNames 数组为空 | 15分钟 |
| 逻辑错误 | Influencer 匹配到表头 | 10分钟 |
| 需求变更 | Cron 从3次改为1次 | 5分钟 |
关键观察:
- Agent 在"尝试方向"上有效——它能想到使用 TradingEconomics 替代 Yahoo Finance
- Agent 在"精确调试"上低效——它会反复犯同样的正则匹配错误
- 人类的角色:划定边界、检查输出、修正逻辑
经验:最佳工作流是 Agent 生成初稿,人类精修细节。人类是"编辑器"而非"等待者"。
教训五:简单需求不等于简单实现
用户说:"把 cron 合并,只在晚上 6 点运行。"
这 15 个字背后: - 列出 6 个现有 cron jobs - 删除 5 个(早间+午间的浏览器抓取和报告生成) - 修改 1 个晚间报告的时间 - 添加 1 个晚间浏览器抓取 - 更新 SKILL.md 文档 - 验证 cron 列表
经验:需求越小,边界越模糊。Agent 需要人类明确回答"哪些删、哪些改、哪些留"。
最佳实践总结
基于本次实践,我提炼出以下原则:
1. 数据源优先验证
在写任何代码前,先确认数据源是否可访问。金融数据、翻译 API、天气服务——大多数"免费"服务都有访问限制。
2. 保留人类审核节点
自动化不等于无人化。本次设计中,每次报告生成后,人类(用户)可以查看 latest.md。这是必要的质量控制。
3. 渐进式自动化
从"完全手动"开始 → "半自动" → "全自动"。finnews 当前的自动化程度: - 新闻抓取:自动(但依赖浏览器工具) - 报告生成:自动(但依赖手动更新的商品价格) - 质量审核:人工
4. 记录失败
本文档化了移除 ETF 模块、移除翻译功能等"失败决策"。这些不是耻辱,而是知识。
5. 预期 5-10 次迭代
不要期望一次成功。MiniMax 2.1 是强大的生成模型,但不是编译器。代码需要人类打磨。
结论:Agent 是工具,不是替代品
创造 finnews 的过程打破了两个神话:
神话一:Agent 可以独立完成复杂任务 现实:Agent 需要人类定义边界、验证输出、修正逻辑。Agent 是加速器,不是独立工作者。
神话二:自动化可以一劳永逸 现实:数据源会变、API 会封、格式会改。finnews 明天可能因 TradingEconomics 封锁而失效。维护是永恒的。
正确的认知: - Agent 扩展人类能力,但不替代人类判断 - 自动化降低重复劳动,但不消除监督责任 - 工具变强了,但人类的工作从"执行"变成"审核"——这不是更轻松,而是要求更高
finnews 不是"AI 自动生成的完美系统",而是"人类与 AI 协作的实用工具"。这才是真实。
本文基于 2026-02-10 OpenClaw + MiniMax 2.1 环境下的实际开发记录。