创造一个金融新闻监控 Skill 的真实记录:经验、教训与反思

2026-02-14 21:37
分类: 投资研报
源文件: finews/finnews-lessons.md
返回新闻列表

创造一个金融新闻监控 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分钟

关键观察

  1. Agent 在"尝试方向"上有效——它能想到使用 TradingEconomics 替代 Yahoo Finance
  2. Agent 在"精确调试"上低效——它会反复犯同样的正则匹配错误
  3. 人类的角色:划定边界、检查输出、修正逻辑

经验:最佳工作流是 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 环境下的实际开发记录。