为了炒股,我写了 16 个 Skill,并做了一个网站和 Agent

作者:青葱大叔

如果五六年前有人告诉我,将来我会做一个拥有一百多个页面和功能的 A 股数据网站,给它写 16 个 Skill,最后还会自己实现一个 Agent,我大概不会相信。

那时候我没有产品规划,也没想过用户系统、会员或者 AI。我只是开始收集一些股票数据,想做一个自己看的 A 股数据网站。

最开始,网站甚至连域名都没有。我只做出一些页面,发给身边几个朋友一起用。谁也没想到,这个自用的小工具后来会慢慢变成大虾皮,再从一个数据网站长出 Skill 和虾皮助理。

回头看,这几件事并不是我事先设计好的。它们更像是同一个问题在不同阶段长出的答案:如何更稳定、更有效地完成一次股票复盘。

五六年前,我只想做一个自己看的股票网站

大概在五六年前,我开始比较系统地收集 A 股数据。

当时看了《股票魔法师》和《笑傲股市》,也学习了 Wyckoff 理论,开始接触国外相对成熟的股票筛选和交易体系。

《股票魔法师》里提到的 SEPA 选股和 VCP 波动收缩形态,让我意识到,选股不该只是从几千只股票里凭感觉翻 K 线。可以先建立一套明确的筛选条件,再逐步缩小股票池。

Wyckoff 理论让我开始从供需关系、量价变化和市场阶段理解价格行为,不再只盯着某个指标的金叉和死叉。

我还接触到了国外常用的市场宽度,以及自上而下的选股方式。

市场宽度关注的不是指数本身涨了多少,而是有多少股票真正参与了上涨。有时指数看起来很强,背后可能只是少数权重股在支撑;另一些时候指数变化不大,市场内部却已经开始修复。

自上而下的方式,则是先判断整体市场环境,再看哪些行业和板块更强,最后进入个股筛选。市场、板块、个股,这是一个逐层缩小范围的过程。

这些方法对我影响很大,也在不知不觉中决定了后来大虾皮网站的结构。

我开始想,能不能把原本分散在书、表格、脚本和脑子里的东西,变成一个自己每天都能使用的网站。于是我一边学习,一边收集数据,一边搭页面。

最开始连域名都没有

最初的网站很简单。

没有域名,也没有用户系统,更谈不上正式产品。只是一些可以查看数据的页面,通过一个地址在朋友之间传来传去。

想看市场整体状态,我就增加市场相关的数据;想观察板块强弱,就做板块排名和热力图;想筛选强势股票,就把 SEPA、VCP、RPS、创新高等思路逐渐转化成可以运行的筛选条件。

当时做这些事情,主要还是为了解决自己的问题。

每天复盘时,我不想反复打开多个网站,再把不同地方的数据复制出来拼在一起。我希望打开一个页面,就能知道市场大致处在什么状态;再打开另一个页面,能看到哪些板块正在变强;最后进入股票池,研究那些符合条件的个股。

朋友们用得多了,也会提出新的需求。有些需求我自己同样会遇到,就继续往网站里加。页面越来越多,数据越来越完整,使用的人也慢慢多了起来。

到了这个阶段,没有域名就显得不太方便了。于是才有了 daxiapi.com。

“大虾皮”这个名字,其实是个意外

daxiapi.com 这个域名最开始和股票没有关系。

当时注册它,本意是想找一个和“虾皮”相关的域名。这里的虾皮指的是 Shopee,那家新加坡购物网站。

后来这个域名一直放着,我觉得留着也是浪费,不如直接拿来给自己的股票数据网站用。

于是,一个原本和购物网站有关的域名,最后变成了 A 股数据网站的名字。

现在回头看,“大虾皮”这个名字和股票、量化、投资都谈不上天然联系,但用久了以后,反而有了自己的辨识度。网站也从朋友间使用的小工具,逐渐变成一个正式对外提供服务的产品。

很多功能上了又下,市场宽度热力图却一直都在

大虾皮的发展并不是一条不断增加功能的直线。

这些年里,很多功能上了又下,下了以后又因为新的需求重新上线。有些想法做出来以后,发现没有想象中实用;有些页面因为数据和使用方式发生变化,需要重新设计;还有一些功能过了一段时间,我对它有了新的理解,又会重新做回来。

如果把网站今天的样子和最早期放在一起看,已经很难看出它们来自同一个项目。

但有一个功能,我从一开始就保留到了现在,而且一直在更新:市场宽度热力图。它几乎贯穿了大虾皮整个发展过程。

最开始,我只是想通过市场宽度观察各个行业内部到底有多少股票在走强,而不只看板块指数涨了多少。后来随着数据和使用场景增加,热力图也不断扩展。

目前,它已经同时支持东方财富和同花顺两套常用的行业、板块与概念分类,可以从不同分类体系交叉观察市场轮动;除了行业和概念,还扩展到了 ETF 和主流指数。

同一个市场,可以从东方财富行业、同花顺行业、题材概念、ETF 和指数等不同角度观察。

这些页面并非简单重复展示一组涨跌幅。不同分类体系的成分股并不完全相同,把它们放在一起对照,可以减少单一分类带来的偏差。

如果多个体系都指向同一个强势方向,结论通常更有参考价值;如果不同体系出现明显分歧,就意味着还需要继续观察,不必急着给市场贴标签。

对我来说,市场宽度热力图不只是网站里的一个功能。它更像大虾皮最早的产品原型:从大量股票中提取结构信息,再把复杂数据变成可以快速阅读的图。

很多功能会随着需求变化,但这个问题一直存在:指数涨跌的背后,市场内部究竟发生了什么?

网站慢慢长到了一百多个页面和功能

在市场宽度热力图之外,大虾皮也逐渐向更多研究方向扩展。

整个网站现在大概有一百多个页面和功能,覆盖市场宽度、市场情绪、价值投资、ETF 投资、个股筛选、基本面分析、估值研究等不同方面。

市场层面,可以观察市场宽度、温度、情绪、趋势结构和大小盘风格;板块层面,可以查看行业、概念和领涨方向的热力图;ETF 层面,可以跟踪宽基、行业和主题 ETF;个股层面,则有形态筛选、强度排名、基本面分析、财务数据和估值研究。

最近我又开始尝试红利类投资的打分方式。

红利投资看起来像是挑选高股息标的,但真正使用时,只看股息率很容易掉进陷阱。收益、波动、估值、防守属性和持续性,需要放在一起观察。

于是我把这些维度逐步整理成红利类指数的打分系统,希望把“这个红利指数现在值不值得关注”变成一个可以比较、可以追踪的问题。

这些功能有的来自书里的方法,有的来自自己长期复盘时遇到的问题,也有的是朋友和用户在实际使用中提出来的。它们并不属于某一种投资流派。

大虾皮更像是我的个人研究工作台:看到一种有价值的方法,就尝试把它数据化;用一段时间以后,再决定保留、修改还是下线。

这些工具提供的是复盘证据,不会直接替我做买卖决定。筛选、评分和热力图可以缩小范围、暴露结构,最终判断仍要回到具体的市场环境和风险边界。

2025 年,网站开始更像一个正式产品

大概到 2025 年,我给网站增加了用户系统和会员功能。

这意味着很多事情不能再按照“自己能用就行”的标准处理。

以前一个页面出错,我自己知道怎么绕过去;有了用户之后,就要考虑登录、权限、数据稳定性、不同用户的使用方式,以及功能到底应该开放到什么程度。

这期间我还做过小程序,希望用户可以更方便地在手机上查看数据。不过小程序最后因为资质问题没能成功上线。

这是一次不算成功的尝试,但也让我更清楚地认识到,做出功能只是产品的一部分。资质、平台规则、发布渠道和长期维护,同样决定了一项能力能不能真正到达用户。

没有上线的小程序没有消失,它只是变成了这段产品经历里的一个岔路。网站仍然继续往前走。

页面越来越多,方法却还留在脑子里

随着功能增加,另一个问题逐渐变得明显。

网站可以告诉我数据在哪里,却不能完整保存我是怎么理解这些数据的。

同一个市场温度,放在不同的趋势结构中,意义可能并不一样。温度低不代表马上就可以买入。如果市场结构还在恶化,低温可能只是下跌过程中的结果。

一个板块进入热力图前列,也不能立刻判断它就是市场主线。还要继续看板块内部有多少强势股票、领涨是否集中,以及热度处在刚启动、持续扩散还是高位拥挤的阶段。

VCP、SEPA、RPS 和创新高也不是简单的“是”或“否”。

筛选只是把范围缩小,后面仍然需要观察市场环境、行业强度、价格结构、成交量变化和风险收益比。

红利打分也是一样。分数只是把多个维度放到统一框架中,不能代替对指数构成、估值位置和市场环境的进一步理解。

我逐渐发现,自己每天重复的不只是查询数据,还在重复同一套判断过程:

  • 先看什么,后看什么;
  • 哪些指标需要互相验证;
  • 什么情况下可以得出明确结论;
  • 什么情况下只能继续观察;
  • 数据不足时,怎样降低结论的强度。

真正值得保存的,不只有数据,还有方法。

2026 年初的“龙虾热”,让我开始整理 Skill

到了 2026 年初,随着“龙虾”类 Agent 工具越来越热,大家开始讨论如何给 Agent 安装能力,让它不只聊天,还可以真正完成任务。

我也开始思考,自己这些年积累的复盘和股票研究方法,能不能交给 Agent 执行。

如果只是给 AI 一句“帮我做市场复盘”,它当然也能生成一篇看起来像分析报告的文字。但看起来像,不等于真的完成了复盘。

一次完整的市场复盘,需要先确认当前时间和最近交易日,再获取指数、市场结构、温度、板块、涨跌停和风格数据。拿到数据之后,还要检查是否完整,判断不同指标之间能否互相支持,之后才能形成结论。

个股分析也是一样。

不能查到几个财务指标就开始讲公司价值,也不能看到一段上涨 K 线就直接给出买卖结论。基本面、技术面、行业环境、资金与消息面,需要按照相对稳定的顺序逐项检查。

于是我开始把自己常用的复盘和研究方式整理成 Skill。

16 个 Skill,不是 16 段万能提示词

我对 Skill 的理解,更接近一份交给 AI 的工作手册。

一句提示词可能只是告诉 AI:“帮我做一次市场复盘。”

Skill 则要进一步告诉它:

  • 什么时候应该使用这套方法;
  • 什么时候不适合使用;
  • 需要获取哪些数据;
  • 数据应该按照什么顺序分析;
  • 哪些指标必须交叉验证;
  • 遇到数据延迟或缺失怎么办;
  • 结论应该如何组织;
  • 输出前还需要检查什么。

我没有一开始就计划好要写 16 个。它们和大虾皮的页面一样,是从一个个真实问题中慢慢长出来的。

市场层面有市场复盘、市场罗盘、市场温度和盘前简报;板块与情绪层面有板块热力图、风格轮动、涨跌停分析和热门强势股;个股研究层面有个股综合分析、基本面报告、ROE 与杜邦分析、新闻与公告催化分析;选股层面则有红利指数分析、技术形态筛选和 SQL 条件选股。

再加上一个负责识别用户意图、把任务分发到不同专业 Skill 的统一入口,正好 16 个。

这些 Skill 里既有早年学习的 SEPA、VCP、市场宽度和自上而下选股,也有后来在长期使用中逐渐形成的市场温度、风格轮动、板块热力图、财务质量和个股综合分析方法。

换句话说,它们不是为了赶 Agent 热潮临时写出来的 16 份提示词,而是把过去五六年网站开发和复盘实践中积累的方法,重新整理成 AI 可以理解和执行的形式。

写完以后,我又在大虾皮做了一个 Skill 下载中心。用户可以一次下载完整的 Skill 包,也可以根据自己的需求单独安装某一项能力,再接入 OpenClaw、Hermes、Claude 等支持 Skill 的 Agent 工具。

原本只存在于我个人复盘流程里的方法,开始变成可以安装、分享和复用的东西。

为了理解 Agent,我决定自己实现一个

几乎在同一阶段,我在工作中也开始研究 Agent 架构。

团队使用的一些 Agent 框架功能很完整,但在我看来也比较复杂。各种抽象、组件和依赖叠在一起,虽然可以很快搭出功能,却不容易真正看清 Agent 到底是怎样工作的。

我想了解的不是如何调用一个现成框架,而是 Agent 最核心的执行过程:

  • 它怎样理解用户意图?
  • 怎样判断应该调用哪个工具?
  • 工具返回数据后,怎样决定继续还是停止?
  • 怎样加载一套 Skill,并按照其中的步骤执行?
  • 怎样在长任务中保存上下文?
  • 怎样处理失败、超时和不完整的数据?

本着学习和实践 Agent 架构的想法,我决定自己实现一个。于是有了虾皮助理

它最核心的循环其实并不神秘:模型理解问题,选择工具;工具返回数据,再交给模型;模型判断是否需要继续调用,最后组织成回答。

但真正把它做成一个可以使用的产品,并没有这段描述听起来那么简单。

用户不应该先学习 16 个 Skill

开发者很容易沉浸在自己设计的分类里。

这个问题应该调用市场复盘,那个问题应该调用个股分析;技术形态用筛选 Skill,财报质量用 ROE Skill,复杂条件则用 SQL 选股。

这些分类对系统很重要,对用户却不应该成为门槛。

普通用户不会先研究 16 个 Skill 分别叫什么,再决定自己应该使用哪一个。他只会直接提出问题:

“今天市场怎么样?” “最近是大盘股强,还是小盘股强?” “帮我找一些 VCP 形态、同时走势强于大盘的股票。” “分析一下这只股票的财务质量和技术面。”

于是,我把这些 Skill 全部接入 Agent 的执行体系。

简单的数据问题,虾皮助理可以直接查询数据后回答;遇到市场复盘、个股研究或者复杂选股任务,它会先选择对应的 Skill,再按照其中的流程获取数据、分析并检查结果。

用户看到的是一个对话框,背后执行的却是过去需要在多个页面之间切换才能完成的研究流程。

目前,它已经不只是一个回答股票问题的聊天机器人,也开始能够调用大虾皮的数据,按照我整理的方法完成任务。当然,我仍然会检查它的结论,这件事并没有因为有了 Agent 就省掉。

真正困难的不是让 AI 说话

做 Agent 以后,我越来越觉得,接入模型只是最容易被看见的一部分。真正困难的是让它稳定执行。

市场数据有很强的时效性。用户问“今天”或“最新”,Agent 必须先确认当前时间和最近交易日,不能拿旧数据拼出一份看起来完整的报告。

回答里的具体数字也需要能够追溯到真实数据。找不到来源的数字,就不应该出现在结论里。

如果要说某个板块“最强”或者“领涨”,必须有足够完整的排序支持;如果只看到它上涨,就只能客观描述上涨,不能自动升级成市场主线。

因果关系同样需要克制。两个现象同时发生,并不代表其中一个必然导致了另一个。

除此之外,还要处理工具失败、长任务中断、流式输出、会话保存、技能选择和执行过程展示。

这些事情没有哪一项特别炫,但它们决定了用户面对的是一个偶尔成功的 Demo,还是一个可以反复使用的产品。

自己实现 Agent 的过程,也让我重新理解了那些复杂框架为什么会变得复杂。很多复杂性并不是凭空制造出来的,而是当一个 Agent 开始面对真实用户、真实数据和真实失败时,自然会出现的。

区别只是,我希望先从最核心、最适合大虾皮的部分开始,亲手理解每一层为什么存在。

网站、Skill 和 Agent,是同一件事的三个阶段

回头看这五六年,大虾皮网站、16 个 Skill 和虾皮助理,并不是三个互不相关的项目。它们是同一个复盘需求在不同阶段的延伸。

最开始,我缺的是集中、可计算的数据,所以做了网站。后来我发现,页面只能展示结果,不能完整保存分析方法,于是写了 Skill。

再往后,问题变成了另一种样子:用户不应该先学习一百多个页面、各种数据命令和 16 个 Skill 的名称。于是我又做了 Agent,让人可以直接用自然语言提出问题。

网站保存和展示数据,Skill 保存分析方法,Agent 负责理解用户,并在数据和方法之间完成调度。

这三样少了哪一层都不完整。网站没有方法,用户仍然需要自己打开多个页面、理解指标并组织结论;Skill 没有稳定、结构化的数据,AI 很容易变成空谈;聊天框没有清晰的方法、边界和验证规则,可能很会说话,却不一定值得信任。

这三者也不是谁替代谁。

我现在仍然会看市场宽度热力图,因为图表更适合快速扫描和横向比较;Skill 适合把方法带到不同的 Agent 工具中;虾皮助理则适合处理自然语言问题和跨越多个数据维度的任务。

回到最开始的问题

这条路并不是提前规划好的。它只是从“我想更方便地做一次复盘”开始,一步一步走到了今天。

我仍然会检查 Agent 的结论,仍然会打开大虾皮的页面,也仍然会根据新的问题继续修改 Skill。

复盘的意义从来不是得到一份永远正确的答案,而是建立一套可以持续执行、验证和修正的判断过程。

网站保存数据,Skill 保存方法,Agent 负责理解人。

这就是我为了复盘,花了五六年做出来的东西。

生命不息,折腾不止——致即将消失的程序员行业