有关 Skill 的一些思考

Why Skill?

在某段实习期间,某位老师给我发送了一个使用 Claude Code 现搓的 Skill。这个 Skill 的功能非常简单,就是根据用户输入的日期,通过两个 MCP (Model Context Protocol) 接口的调用,获得数据,最后制作成日报返回给用户。

具体而言,分为以下的四个步骤:

  1. 解析日期
  2. 数据获取:
  • 调用A:iFind 查 5 个 A 股宽基指数(上证、沪深300、中证500/1000、创业板)
  • 调用B:iFind 查 31 个申万一级行业涨跌幅
  • 调用C:iFind EDB 查恒生指数、恒生科技
  • 调用D:Alpha 派召回当日宏观政策与市场事件
  1. 生成 HTML
  2. 导出 PDF

部分的效果大致如下:

申万一级行业(2026-04-14,↑19涨 ↓12跌)

综合↑+2.55%
电子↑+2.20%
房地产↑+2.00%
农林牧渔↑+1.63%
国防军工↑+1.62%
通信↑+1.22%
有色金属↑+1.15%
机械设备↑+1.00%
计算机↑+0.89%
电力设备↑+0.84%
传媒↑+0.75%
银行↑+0.73%
家用电器↑+0.55%
建筑材料↑+0.30%
环保↑+0.23%
轻工制造↑+0.22%
非银金融↑+0.20%
社会服务↑+0.18%
纺织服饰↑+0.12%
医药生物↓+0.03%
食品饮料↓-0.00%
商贸零售↓-0.01%
建筑装饰↓-0.06%
交通运输↓-0.09%
美容护理↓-0.13%
汽车↓-0.20%
公用事业↓-0.23%
基础化工↓-0.74%
钢铁↓-1.25%
煤炭↓-1.44%
石油石化↓-1.65%

上涨红色 / 下跌绿色

我拿到手的第一反应是,使用 iFind 和 Alpha 派的 MCP 还是太吃操作了[1],那么,有没有更加优雅的方式呢?。

有的,兄弟,有的。

我完全没有思考,直接开始微操。将 iFind MCP 替换成了 Akshare 的免费数据接口,将 Alpha 派的 MCP 替换成了「华尔街见闻」的爬虫,以替代数据获取部分[2]

但就在代码跑通的那一刻,我突然意识到了一丝不对劲。

回顾整个执行过程,Agent 实际上只干了三件事:把自然语言转化成日期参数、在终端里运行我写好的 Python 脚本、最后对爬回来的快讯做个文本总结。与其说这是 Agent 在主导整个工作流,不如说是用自然语言操控 Agent 点击运行按钮。

再优化一下,发起一个 API 请求,将爬取的文字和提示词传入,那真的全流程都没有 Agent 啥事了……[3]


重构后的文件结构如下:

1
2
3
4
5
6
7
8
daily-market-report-akshare/
├── SKILL.md
├── pyproject.toml
├── uv.lock
└── scripts/
├── fetch.py
├── render.py
└── requirements.txt

在这个结构下,我甚至提供了 uvpip 两种依赖安装方式。现在看来,能够自己检查并安装依赖、确保程序跑通,可能已经是这个 Agent 在整个项目中展现出的唯一「智能」了。

纵观这次重构,我的失败彻彻底底:项目依赖变得极其复杂,功能反而受限,而每次启动 Agent,它都在做「运行脚本」这种枯燥的确定性任务。

Why Agent?

很显然,我的替代方案和重构不行,原方案也不行。

何时应该使用 Skill 我们暂且不论,我们聚焦于这个几乎所有金融相关企业都需要的日报项目:

日报是一项确定性极高的任务。几点钟获取数据、获取哪些指数、按什么格式排版,都是确定的。而 Agent 的核心魅力在于其自主规划和随机性。在一个需要确定性的传统工作流中引入 Agent,不仅是大材小用,更是给自己埋雷。

这件事最优雅的解法是什么?是一个传统的 Python 脚本,中间在总结资讯的环节通过 API 调用一下 LLM,然后挂在服务器上用终端工具每天定时静默运行,自动保存 PDF。

换而言之,我们需要根据工作内容选择工具。不该 Agent 干的活,就不应该交给 Agent。为了写日报而去编写一个包含各种复杂逻辑的 Skill,完全是本末倒置。除了生成这份日报,这个 Skill 没有任何泛用性意义。


说到工作流,不得不提一下当前主流的 Agent/Workflow 平台(比如 coze/n8n/dify)。我非常跟风地在自己的服务器上部署了一套 n8n,但尴尬的是,至今上面暂时没跑任何实际项目。

原因很简单:每当我产生一个自动化需求,脑海里构思完逻辑后,我都会下意识地去写代码,远比在画布上连线更加可控和自然。更何况,现在的各种 Coding Agent 在纯代码领域能够极大提升开发效率,此时强制使用连线 GUI 节点,反而会拖慢整体工程进度。

对我而言,使用这样的平台似乎有些奇怪。拖拽节点看似降低了门槛,但是既没有减少需要编写核心程序的工程量,也没减少将其集成进自定义 GUI 的对接工程量,忙到最后好像只是限制了一下上限。

The Future

相比较于尚未完善的 Agent & Workflow,我们在金融领域落地 AI 时,面临着一个更现实的底层阻碍:数据获取。

在国内的金融环境下,高质量的结构化数据基本被 Wind、iFind 等几家头部数据服务商垄断。公开数据集严重缺失,像 Akshare 这样优秀的开源项目虽然能解燃眉之急,但在企业级应用要求的绝对稳定性面前,依然显得堪忧。而如果要自建个人数据库,其背后的算力、存储和清洗代价,根本不是个人或小团队能承担的。

这导致了一个有趣的现象:在这波轰轰烈烈的 AI 浪潮中,相比于将 LLM 深度融入公司核心业务系统,当前大多数机构只是把 LLM 当作一个零散的工具,鼓励员工个人使用,最终继续交付如 Word/Excel 等传统格式的结果[4]

但凡事都有两面性。一个意料之外的好消息是:AI 对于高质量数据的极度渴望,正在极其强烈地倒逼金融机构进行「数字化转型」,而非直接跳到「智能化转型」。

大家突然发现,要想用上 AI,现有的数据基建根本不合格:接口不统一、数据不干净、文档满天飞。为了能给未来的大模型喂数据,机构们不得不开始系统性地梳理底层数据资产。可以说,目前来看,AI 有望使得各个金融机构的数字化水平提升到相当的高度,它构成了当前金融机构补齐数字化短板的最强内在动力。

How to do

  • 95%的软件工程 + 5%的 LLM 调用
  • 不要造轮子,有开源用开源

  1. iFind 和 Alpha 派的账号都需要注册或购买,配置 Access Key,这一步无法靠 LLM Agent 配置。 ↩︎

  2. 由于这些平替方案并未提供完善的历史数据接口,这个版本的 Skill 功能被迫「阉割」,只能查询当日数据。 ↩︎

  3. 由于 Skill 从诞生之初目的就是给 LLM Agent 运行,在 Agent 能力足够情况下,发送 API 请求其他 LLM 略显多余。 ↩︎

  4. 其实 OpenXML 罪不至此,但是二进制文件确实在 IDE 中编辑费劲。 ↩︎