news 2026/9/30 4:38:30

AI Skill实战:从概念到投研自动化流水线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Skill实战:从概念到投研自动化流水线

最近不少人问我,AI 编程工具里天天说的 skill、skill,到底是个什么玄乎东西,能不能拿来干点正经事。我的答案是:能,而且我最近就在用它做投研。所谓 skill,我的理解就是给 AI 配的一套“岗位说明书 + 操作手册 + 专用工具盒”,平时聊天式地问一句答一句,那是散兵游勇;把投研流程拆成可复用的 skill,就是建制化作战。整个流程走下来后,财报摘要、风险筛查、行业横向对比、舆情初筛这些事情,基本都能压在几分钟以内完成。

这篇文章写给几类人:一是想用 AI 提升研究效率的金融从业者,二是对 Agent/Skill 机制感兴趣、想知道“除了写代码还能干嘛”的开发者,三是虽然不懂编程但有耐心照着配置流程操作一遍的进阶用户。我会从思路拆解开始,然后给出一个可以直接落地的财务摘要 skill 骨架,再补上风险核查、问题排查、版本维护这些实操经验。你可以把它当作一份踩坑记录,也可以直接当作业来抄。

1. 先想清楚:AI 投研 skill 到底拆掉了什么

1.1 投研工作里的“可自动化环节”

做投研最耗时间的是什么?不是判断本身,而是判断之前的准备。你打开一家公司的年报,先要翻三大报表,再算同比环比,再看附注里有没有猫腻,再去翻历史公告和高管变动,顺手还要扫一眼舆情。这些动作高度模式化,模式化就意味着可以被流程化,流程化就会被 AI 接管。

我自己把研究人员的工作拆成四层:数据获取、信息整理、规律识别、结论输出。第一层包括下载年报、抓取公告、拉取历史行情;第二层包括把财务数据清洗成结构化表格,提取主营业务构成,识别管理层讨论里的语气变化;第三层是纵向看趋势、横向比同行,找到异常项;第四层是把前面所有信息浓缩成一份有观点、有依据、有风险提示的文档。前两层几乎 100% 可以交给 AI 和脚本,第三层能做到七八成,第四层里的“结论”部分仍然需要人来把关。

skill 在这里起的作用,不只是让 AI “知道”要做什么,而是让 AI 按照一套稳定的步骤去执行。同样是读一份财报,你临时输入“帮我看看这家公司怎么样”,十次会有十种风格的结果;但如果你把任务定义成“先提取财务摘要,再计算异常指标,最后按规定模板输出”,结果就稳定得多,也能被后续流程接着用。

1.2 为什么用 skill 而不是临时聊天

有人可能会说:我每次把提示词复制粘贴一遍不就行了吗?还真不太行。临时提示词的问题有四个:上下文不连续、输出格式不稳定、工具调用靠运气、积累的经验没法沉淀。

举个例子。你昨天调好了一个“商誉减值风险识别”的提示词,对着 A 公司效果不错,今天换 B 公司,可能就得重新调整阈值。而 skill 把这类经验写进了一套固定的指令包里,你再跑一次,它就会严格按你上次固化下来的流程执行。更重要的是,skill 能把“工具”也包进去。AI 不只是在那里空想,它可以顺带调用你已经写好的数据抓取函数、财务计算脚本、新闻分类工具,让 LLM 只负责它擅长的理解与判断部分,而不是让它硬算准确率不高的数字。

从团队协作角度看,skill 也是一个天然的知识共享单元。研究员把个人经验固化成 skill,投到公共仓库里,团队其他人拉下来就能用。新人进来不再需要缠着老员工问“你那套研究框架是怎么搭的”,直接跑一遍 skill 就能看到处理过程,比自己摸索快很多。

1.3 一个最小 skill 文件内部长什么样

不同平台的 skill 格式略有差异,但核心结构大同小异。基本上就是三样东西:元信息、指令、工具。

元信息通常放在文件头部,写清楚这个 skill 叫什么、干什么用、什么时候该被调用。指令部分就是给模型的工作手册,包括角色设定、处理步骤、输出模板、禁止事项。工具部分则指向外部脚本或 API,例如抓取数据的函数、计算指标的脚本、写入数据库的接口等。在 Claude Code、Cursor 这类工具里,一个 skill 通常就是一个目录,目录里有 SKILL.md 描述文件和若干可执行脚本;自定义 Agent 框架里,也可能是配置文件加 Python 文件。

把这个结构讲给非程序员朋友听,我会说:skill 就像一个公司里给新员工看的“岗位 SOP”,外加给他配好的一台装了专用软件的电脑。你说一句“开始”,他就知道先打开哪个报表,先算哪个指标,最后用什么格式交报告。

2. 投研 skill 的工具选型与模型配置

2.1 能跑 skill 的载体有哪些

目前能承载 skill 的通道大致分三类:AI 编程工具、通用 Agent 框架、自己开发的私有 Agent。

AI 编程工具这类,典型如 Claude Code、Cursor、Codex,对 skill 的支持比较成熟,适合已经有代码环境的人。你可以把投研的 skill 放进项目的.cursor/skills或者类似目录,直接在对话里触发,AI 会自动读取 skill 说明并按步骤执行。通用 Agent 框架则更灵活,比如自己用 Python 接一个 Agent 开发框架,把 skill 定义成若干函数加约束,让主模型按计划调用。第三种是自己开发私有 Agent,适合对数据安全要求比较高的团队,所有数据都在内网流转,模型可以是私有化部署的,也可以是云 API,但请求链路完全由自己控制。

我自己的建议是:如果你是个人先用,别一上来就搞自研框架,先挑一个支持 skill 的现成工具跑通流程;等真觉得流程顺了、要上团队协作或者要加复杂数据源时,再考虑自研。投研场景最忌讳的是一开始就陷入“造轮子”的兴奋里,研究框架还没搭好,先花两周写框架代码,这不是本末倒置嘛。

2.2 模型选择:分析任务和聊天任务不一样

同一个 skill,放在不同模型上跑,效果差距比很多人想的要大。投研里的任务通常要长文本阅读、多步计算、结构化输出,对模型的推理稳定性和指令遵循度要求都很高。我测试下来,偏推理类型的模型在财报分析这类场景通常表现更好,因为它们会愿意把“为什么得出这个结论”一步步写出来,而不是跳步给结论。

另外有一个很重要的点:不要把模型当计算器。你让它直接“算一下这家公司近三年毛利率变化”,它偶尔能算对,偶尔会串数字。更稳的做法是先用脚本把数据算好,再把结构化结果丢给模型去分析。这就像你让一个分析师看表,你得先把表做干净,他才不会看错。

配置 skill 的时候,我还会注意三个参数:温度尽量调低,减少无谓的措辞变化;上下文长度要够,读财报时动不动就是上万字的输入;工具调用能力必须打开,否则 skill 里的脚本没法被触发。有些平台默认关闭代码执行权限,研究发现 AI 一直在“假装调用”但没真正执行,这种情况要优先去查权限配置。

2.3 数据源接入的合规姿势

做投研,数据是命根子,但接数据这件事最容易翻车。我的原则很简单:只用公开、合法、可追溯的数据源。财报和公告去交易所官网、巨潮资讯这类官方渠道拿;行业统计用公开统计年鉴和行业协会数据;行情数据能用开源库拉的就用开源库。千万别为了省事去抓别人付费接口的后门,或者绕过访问控制去采集不公开信息,这既给个人带来合规风险,也给研究结论埋雷。

还有一个细节:对数据源要留痕。每一条关键数据最好都能追溯到“来自哪份文件、哪个页面、下载时间是什么”。我把这个要求写进了 skill 的指令里,让 AI 在输出报告时自动附上数据来源表。这样一来,哪怕 AI 给出的观点有问题,至少数据层面的问题能被快速定位。

3. 分步实操:写一个“财务摘要”skill

3.1 目录和文件骨架

下面这个例子,我以通用 Markdown+Python 的 skill 结构为例,你完全可以搬到支持自定义 Agent 的工具里。先建一个目录:

financial_summary_skill/ ├── SKILL.md ├── scripts/ │ ├── extract_financials.py │ ├── calc_ratios.py │ └── fetch_announcements.py ├── assets/ │ ├── templates/ │ │ └── report_template.md │ └── examples/ │ └── sample_output.md

SKILL.md 是主文件,负责告诉模型“你是谁、按什么顺序干活”;scripts 放真正执行的代码;assets 放输出模板和示例。把模板单独拎出来是有原因的:你后面想统一报告格式,只需要改模板文件,不用去动 SKILL.md 里的大段指令,维护成本低很多。

3.2 SKILL.md 的写法

文件头部的元信息怎么写,不同平台规范不太一样,但基本都包含名字和描述。我建议描述写详细些,要让模型能准确判断“什么情况下该使用这个 skill”,不然以后技能装多了,模型会选错工具。

--- name: financial_summary_skill description: 用于快速生成上市公司定期报告财务摘要。输入一份或多份财报文本,输出营收、净利润、毛利率、现金流、资产负债率等核心指标摘要,并自动标记显著变化项。适合在用户要求“分析财报”“整理财务数据”“出财务摘要”时使用。 ---

接下来是主提示词部分。我的建议是把它分成三块:分析步骤、输出规范、禁止事项。

分析步骤写清楚顺序:先提取基础财务数据,再计算复合指标,接着做同比环比比较,最后识别异常变动。输出规范给出结构化模板,让结果呈现为可读性强的 Markdown 文档。禁止事项则用来兜底,比如禁止凭空补全数据、禁止在没有对比数据时强行判断“显著变化”、禁止把行业平均值说成公司值。

3.3 主提示词怎么设计

下面是一段示范指令,你可以自己改:

你是一名财务分析助手。请严格按照以下流程处理输入财报文本,并将结果填写到规定的模板中。 流程: 1. 从财报文本中提取以下原始数据:营业收入、营业成本、归母净利润、扣非净利润、经营活动现金流净额、总资产、总负债、货币资金、有息负债、研发费用、销售费用、管理费用。 2. 调用 scripts/calc_ratios.py 计算毛利率、净利率、资产负债率、经营现金流与归母净利润比值,以及营收和净利润的同比、环比变化率。 3. 比较本期与上一期数据,找出变化幅度超过 15% 的项目,单独列表。 4. 根据变化项目给出简要解读,说明可能是由什么业务原因导致。找不到依据时,统一写“需进一步查阅报表附注”。 输出规范: - 按 assets/templates/report_template.md 输出。 - “关键数据表”必须保留原始数据,单位统一为“亿元”,保留两位小数。 - 来源说明字段必须填写对应财报文件名和页码。 禁止事项: - 不得编造任何财报中不存在的数字。 - 不得在被要求“推测”前给出定性结论。 - 如果某项数据在文本中找不到,明确写“未披露”,不得用平均值或行业值替代。

这段指令的重点是“让 AI 做判断而不是做计算”。计算交给脚本,AI 负责比较、归因、表述。很多 AI 分析翻车,就是因为让 AI 既当计算器又当分析员,结果两边都没干好。

3.4 接入数据抓取脚本

把财报文本喂给 skill,有两种方式:一是用现成的公告抓取脚本下载 PDF,再转成文本;二是从本地 CSV 或者数据库直接读取结构化数据。我个人更喜欢第一种起步,因为 PDF 原文保留了完整披露信息,后续要查证不容易漏。

下面是一个简单的公告抓取脚本示例,用 requests 和正则从公开公告页面抓 PDF 链接,再交给 pdfplumber 提取文本:

import requests import re import pdfplumber from pathlib import Path def fetch_pdf_text(url: str) -> str: """从公开发布的公告链接下载 PDF 并提取文本""" r = requests.get(url, timeout=30) r.raise_for_status() with open("temp.pdf", "wb") as f: f.write(r.content) with pdfplumber.open("temp.pdf") as pdf: text = "\n".join(page.extract_text() or "" for page in pdf.pages) return text def extract_announcement_links(page_html: str, keyword: str) -> list: """从公告列表页中按关键词滤出 PDF 链接""" links = re.findall(r'href=["\']([^"\']+\.pdf)["\']', page_html) return [link for link in links if keyword in link]

这里我不建议把抓取逻辑写得太复杂,核心目的是“拿到一份可分析的文本”。真正的难点在后续解析:同一家公司不同年份的财报格式不一定一致,AI 反而比固定规则脚本更擅长从杂乱文本里定位“营业收入”这一行在哪。所以抓取脚本保持简单,解析判断交给模型,这部分互补关系是我用下来效率最高的组合。

3.5 测试与结果验证

写完初步 skill 后,别急着铺开用,先拿一家你熟悉的公司做回归测试。所谓“熟悉”,意思是你对它的财务数据有基本概念,能判断 AI 有没有算错。我第一次测试时挑了一家业务简单的制造类公司,发现两个问题:一是模型经常把“营业收入”和“营业总收入”当成两个不同字段导致重复录入;二是扣非净利润在原文里写的是“归属于上市公司股东的扣除非经常性损益的净利润”,太长的字段名会把模型绕晕。

解决办法:在脚本层先做一轮字段名归一化,把所有可能的别名映射到统一字段。这个操作让我想到一个原则:凡是能用代码解决的问题,不要指望提示词解决。提示词写太多,模型记不住,代码一行替换就能搞定的事情,别让语言模型硬扛。

4. 从单点 skill 到完整投研流水线

4.1 加一层风险线索检查

财务摘要是研究的地基,但真正交付给决策者的报告,不能只有利润表,还得有风险扫描。我单独做了一个“risk_scan” skill,专门从财报和公告里抓风险信号。

主要检查这几类线索:商誉占总资产比例是否异常,应收账款增速是否远高于营收增速,存货周转天数是否连续抬升,控股股东质押比例是否接近红线,是否存在频繁的关联交易,是否存在大额其他应收款。这些线索很难单独被判死刑,但它们在报告里出现时,会提醒分析师去细看附注。

skill 的做法是给模型一个“风险触发条件清单”。例如:

当以下条件满足时,自动标记为风险线索并在报告中提示: - 商誉占净资产比例超过 30% - 应收账款增速超过营收增速 20 个百分点以上 - 存货周转天数连续两年抬升,且本期抬幅超过 20% - 控股股东累计质押股份占其持股比例超过 70% - 其他应收款超过归母净利润 50%

这层的价值在于“不遗漏”。人看财报时注意力有限,翻到第 100 页早就忘了开头看到什么,但模型不会。它会把一整份几百页的财报扫一遍,把可疑项挑到台面上来,由人去判断。

4.2 交叉验证:防止模型被单一数据带偏

投研分析里最怕什么?怕你拿着一个孤立数据下结论。营收增长 30% 看着很好,但如果经营现金流反而下跌,这个故事就要打问号了。所以我的流水线里还有一个交叉验证 skill,专门把多个维度拉到一起看。

交叉验证的核心逻辑很简单:利润与现金流是否匹配,应收与营收是否同步,资本开支与折旧政策是否协调,利息支出与有息负债规模是否合理。每发现一组背离,就让模型对照具体数字做解释。是商业模式决定的正常现象,还是财务操纵的典型预兆,模型才给出提示,绝不武断下结论。

这块的设计思路是“把人类的怀疑步骤显性化”。过去老分析师看财报是凭直觉扫一眼,现在我们可以把这种直觉代码化、规则化,让 AI 按清单检查,把隐含知识变成显式判断。它不会替代老分析师的直觉,但它能帮新人快速建立一套不容易漏事的检查习惯。

4.3 统一输出:从数据到报告

投研流水线的最后一步是出文档。我把输出模板定义得比较细,强制让 AI 按五段式输出:核心结论、一页速览、关键数据表、风险与关注点、待办事项。这样一份报告交到研究员手上,他一眼就能看到结论,再决定要不要往下细看。

一个容易踩的坑是:让 AI 在结论里写“推荐买入/卖出”。我坚决不建议这么做。AI 目前不具备完整判断能力,它输出的所谓投资建议容易看起来自信满满,实际上依据不足。我的 skill 模板里只允许写“值得关注的方向”和“需要验证的问题”,把最终判断留给人类。这个边界想不清楚,后面会吃大亏。

5. 实操中的常见问题和排查实录

5.1 模型编造财务数字怎么办

这是被问得最多的问题。AI 在长文本处理时确实会出现幻觉,把上一年营收说成今年,或者把负债率算错。我的解决方案有三道防线,缺一不可。

第一道防线是在脚本层完成所有精确计算,不让模型做加减乘除。第二道防线是在指令里强制输出“数据来源”,每项数据都要跟着文件页码。第三道防线是在生成报告后跑一个校验脚本,把报告里的关键数字跟脚本算出来的标准值逐一比对,超过一定误差就自动报错。三道防线下来,模型能编造的空间已经很小了,因为它想编一个数字也得先绕过来源检查。

5.2 上下文太长导致分析后半段变形

一份完整年报转成文本可能有十几万字,远超出模型的上限。硬塞进去,最常见的结果是前面数据抓得不错,越到后面模型越糊涂,甚至开始胡言乱语。

我后来改成“分段处理、中间落盘”的方式:先用脚本按章节把年报切成小块,分别提取财务数据,再汇总成结构化 JSON,最后只让模型读汇总结果。这个思路跟人看财报是一样的,你不会从头到尾硬背,而是先定位关键章节,再摘数字做分析。分段处理之后,上下文占用降了一个数量级,输出稳定多了。

5.3 同样一份文本,两次跑结果不一样

不少人都遇到过这个玄学问题,明明输入没变,输出却变了。原因一般出在三个地方:模型温度没有固定、模型版本被自动升级、输入数据里带了时间戳或顺序变化这类隐藏变量。

解决方式也很直白:固定推理参数,记录模型版本,把输入文本 hash 存下来当缓存键。如果同一份文本用了同一个版本和同一组参数,输出仍然不一致,那才需要去怀疑更上游的工具链问题。投研场景里,结果可复现很重要,否则你没法对同事解释“昨天跑出来是 15%,今天怎么变 20% 了”。

5.4 问题排查速查表

下面是几个我实测里最高频的问题和对应处理方式。

现象可能原因处理方式
财务数字错误模型在硬算指标把计算移到脚本内,喂给模型预处理后的数据
输出格式混乱模板约束不够把模板升级为强制校验,跑完后自动检查段落
分析到一半跑题上下文过长、指令被淹没分段处理,关键指令前置,减少无关文本输入
不执行脚本工具权限未开检查执行环境配置,开启代码执行并将其接入测试日志
来源不明确没有强制来源制度在指令中添加“数据后必须跟来源”的硬性规则
结果无法复现参数或模型版本漂移固定版本、固定参数,并保留输入 hash 以作记录

这张表我贴在项目 README 里,每次踩坑就往里补一条,现在已经成了团队新人的入门手册。

6. 复盘:skill 的维护与迭代

6.1 把技能包当成代码项目来管

很多人把 skill 写出来用一次就扔一边了,过两周再回来,发现根本不敢用,因为忘了它内部是怎么跑通的。我现在的习惯是:任何 skill 都必须有版本记录、测试样例和变更日志。

版本记录用 git 就行,每个 skill 单独建目录,改了哪些指令、加了哪个脚本,commit message 写清楚。测试样例是几条带标准答案的输入,每次修改后先跑测试,不回归通过就不许发布。变更日志会让以后回看的人明白某条规则为什么存在。比如“不要用营业总收入替代营业收入”这种规则,背后是踩过坑的,如果不记录,下次改提示词的人很可能又把它删掉。

6.2 三个让我印象深刻的改进

第一个改进是把“结论力度”从“绝对判断”改成“证据强弱”。一开始让 AI 给出明确结论,它经常说得斩钉截铁,后来发现它经常错。改成要求它写“现有证据支持/尚需验证”之后,误导性表达直接少了大半。

第二个改进是把小规则集中起来,而不是散落在各处。一开始我在 SKILL.md 里零零碎碎写了很多“不要这样”“一定要那样”,模型在长上下文里容易忽略两端的约束。后来我把所有禁止事项收拢进一个“负面清单”小节,效果立竿见影。

第三个改进是给每个输出字段都配上“来源要求”。过去只有结论对来源有要求,数据表数字经常没人追责。现在数据表每个单元格背后都要能说清来自哪份文件的哪一页,整体可信度上了一个台阶。

6.3 什么事情我依然不交给 AI

投研这件事,不是自动化程度越高越好。我到现在仍然坚持人工处理三块内容:第一,涉及重要投资决策的最终结论;第二,对“为什么不披露某些数据”这类非结构化问题的解读;第三,跨行业类比时需要的业务洞察。

AI 很擅长处理“已知的已知”,就是那些有标准答案的问题;它面对“已知的未知”也有一定表现,能指出哪里有缺口;但“未知的未知”,也就是你根本没意识到这里可能有问题的那种问题,目前还得靠人的经验和敏感度。我的投研 skill 所追求的目标,无非是把前两类问题尽量扛掉,让人类分析师把稀缺的注意力留给真正需要判断的事情。

就我个人而言,这套 skill 体系带来的最大变化不是省了多少时间,而是让研究过程变得可查、可复用、可讨论。以前我带新人,讲完一轮方法还要反复盯他会不会漏步骤;现在新人一进来就能跑一套标准的分析流水线,我再在他的结果上做修正和补充,带人的节奏完全不一样了。最后再给一个小技巧:如果你要开始做自己的投研 skill,不要一上来就想做一个大而全的“全自动研究员”。先挑一个最频繁、最痛的操作,比如财报摘要,写一个最小的可用版本,跑通之后再去加风险检查、舆情监控这些模块。一步一步来,体系自然会长出来。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 4:38:17

长任务如何省上下文成本:SoL-Pi 在线上下文压缩机制全解读

长任务如何省上下文成本:SoL-Pi 在线上下文压缩机制全解读 【免费下载链接】SoL-Pi SoL-Pi: Scaling Auto-Research Loops for Efficient Agent Harnesses 项目地址: https://gitcode.com/gh_mirrors/so/SoL-Pi 做长任务 AI 编码时,你是不是也遇到…

作者头像 李华
网站建设 2026/9/30 4:37:34

基于图像识别的汽车安全车距保持系统设计大数据深度学习|计算机毕设项目|计算机毕设答辩|

一、项目介绍 随着智能交通系统的快速发展,汽车安全车距保持系统成为提高行车安全的重要技术之一。本文设计了一种基于PyQt、OpenCV和YOLO算法的汽车安全车距保持系统。首先,利用PyQt框架构建了系统的图形用户界面,实现了实时视频流的显示、参…

作者头像 李华
网站建设 2026/9/30 4:34:51

从前序序列构建二叉树:原理、中序遍历与运行时错误排查

经常有人拿着报错截图来问我:明明就是建一棵二叉树再遍历一下,为什么代码一跑就报错?或者更气人的,程序不报错,但中序输出怎么看都不对。这类问题每周都能碰到,而且多半集中在“从前序序列构建二叉树并完成…

作者头像 李华
网站建设 2026/9/30 4:34:35

Windows下Python环境迁移与克隆修复:从venv到安装目录的完整指南

把同事电脑上的.venv整个拷过来,双击python.exe发现能启动,但pip一跑就报Fatal error in launcher;从网盘里救回来的 Python 安装目录,命令行怎么调都是闪退;虚拟机克隆完之后别的都正常,偏偏 Python 环境认…

作者头像 李华
网站建设 2026/9/30 4:33:40

Jev模型开放申请:Codex接入实测与避坑指南

这几天技术群和朋友圈被同一条消息刷屏:Jev 模型正式开放了。前几周大家还在排队蹲内测名额,在 Codex 里用各种方式曲线接入 Jev 的 API,讨论怎么配置密钥、怎么写调用脚本,转眼官方就放开了全量申请。我第一时间注册了账号、跑完…

作者头像 李华
网站建设 2026/9/30 4:33:38

大语言模型推理优化:从PT到TensorRT/vLLM的四层工程实践

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称“Model-Optimizer”这个标题乍看像某个开源项目或商业软件的代号,但结合NVIDIA、TensorRT-LLM、vLLM、PT文件转换、Docker镜像部署等高频热词,它实际指向的是大语…

作者头像 李华