LZC007

我们把一个金融 AI 工具完全开源了:关于「金融平权」的一次笨拙尝试

  •  
  •   LZC007 · 6h 24m ago · 217 views

    推理在你机器上跑,仓位不出你硬盘:一个开源金融 AI Agent 的开发者手记 为什么散户用不上机构级的分析工具?我们试着用开源回答这个问题

    摘要:这是一篇开发者手记。我们花了半年时间做了一个面向个人投资者的 AI 研究助手,8 月把它整个开源了( Apache-2.0 ),9 月它入围了世界人工智能开源大赛( GOAI 2026 )总决赛。这篇文章想聊三件事:我们为什么认为「金融平权」首先是工具问题;一个自部署的金融 Agent 到底长什么样、有哪些取舍;以及它现在还有哪些没做好的地方。文中不涉及任何投资建议。

    一、先说结论:散户和机构的差距,一半是工具

    聊「金融平权」这个词之前,先说一个具体的场景。

    一个券商研究员拿到一份财报,接下来会做什么?拉过去八个季度的数据做同比环比,找同行做 PE / PB / EV-EBITDA 对标,用 DCF 算一个估值区间再做敏感性分析,翻公告看有没有减持和解禁,最后写成一份格式固定的报告——这套流程在卖方叫「方法论」,每个新人入行都要被训练几个月。

    一个普通投资者拿到同一份财报,大概率是看一眼营收和净利润,再去论坛翻别人的解读。

    这中间的差距,很多人归结为「专业知识」。但我们做了几年金融数据之后觉得,知识差距其实没那么大——DCF 的公式一页纸就能写完。真正的差距是四层:

    数据:机构用 Wind 、Bloomberg ,年费几万到几十万;散户用免费行情软件,很多字段根本看不到。 方法论:卖方那套流程是隐性知识,没写在任何一本教科书里。 工具:把数据和方法论串起来需要写代码,大多数人不会。 时间:就算前三样都有,一个人每天盯 20 只股票的公告也盯不过来。

    大模型出现以后,第 2 、3 、4 层的门槛突然变得可以逾越。模型可以按一份写好的方法论去执行分析,可以自己调工具拉数据,可以 24 小时跑。剩下的问题是:谁来做这个工具,以及这个工具属于谁。

    二、为什么一定要开源、一定要本地

    市面上其实已经有不少「 AI 炒股助手」了,但几乎都是同一个形态:云端 SaaS ,你把自选和持仓上传,它给你结论。

    我们最初也做的是这个形态,做了大半年,然后越做越不舒服。原因有三个:

    第一,仓位是最私密的数据之一。 它比聊天记录更能说明一个人的财务状况、风险偏好、甚至判断力。让用户把它交给一家创业公司的服务器,我们自己作为用户都不愿意。

    第二,云端 SaaS 的模型是锁死的。 服务商选了哪家大模型你就用哪家,换不了。而金融分析对模型的 tool calling 可靠性极其敏感——我们后来实测发现,同一套工具链下,不同模型的工具调用命中率从 5/7 到 7/7 不等,延迟差 4 倍。用户应该有权自己选。

    第三,「 AI 说这只股票能买」这件事,从产品伦理到监管都是雷区。 一个封闭的 SaaS 很难让用户理解结论是怎么来的;一个开源的、方法论写成明文的工具,用户至少能打开看看它「是按什么逻辑分析的」,不同意就自己改。

    所以 7 月我们做了决定:推翻云端版本,基于开源的 opencode (一个 AI 编程 Agent 框架)做一个金融垂直版,然后整个开源。三条原则写在项目首页上:

    代码开源 · 模型自选 · 私有部署

    用一句更直白的话说:我们不托管你的仓位,我们只运行在你的电脑上。

    项目叫 HunterCode ,开源仓库名是 hunter-community ,8 月上线,Apache-2.0 协议。

    三、它到底是什么

    一句话:一个跑在你自己机器上的金融 AI 研究团队。docker compose up 起来之后,你在浏览器里得到一个对话界面,可以:

    问「 601899 现在多少钱」——返回实时报价、52 周分位和一段 AI 短评(富卡片形式,不是一坨文字) 问「用 DCF 给某公司估个值」——它会调用 uzi_dcf 这个 SKILL ,拉财报数据、算 WACC 、出敏感性表 说「帮我看看这只票有没有杀猪盘特征」——调用 uzi_scan_trap ,检查异常拉升、减持时点、推票热度 输入一个代码点「深度分析」——60 到 300 秒后出一份 22 个维度的报告 说「预测茅台走势」——调用清华大学开源的 Kronos 金融时序模型,给出未来 10 天的 K 线预测

    覆盖 A 股、港股、美股三个市场,32 个数据源,内置 23 个分析 SKILL 。

    关键设计:SKILL 就是一段 Markdown

    这是整个项目最想讲的一个设计。

    上面提到的「卖方方法论」,我们把它拆成了 23 份 Markdown 文档,采用 Anthropic 的 Agent Skills 标准格式。每份文档就是一段人话:这类问题该分几步分析、先看什么后看什么、哪些信号要警惕。模型读了文档,按文档执行。

    比如 uzi_earnings (财报解读)的核心逻辑大概是:先做 beat / miss 检测,再拆 EPS 的驱动因素是量还是价,最后给管理层指引的可信度打分。这是从卖方研究员的工作流里抽出来的,写成了两三百行 Markdown 。

    这个设计带来几个我们很喜欢的结果:

    方法论是明文的。你不同意某个 SKILL 的分析逻辑,打开文件改一行就行,重启容器生效。 加新方法论不需要写代码。你有自己一套看 K 线突破的方法?新建一个文件夹,写一份 SKILL.md ,它就成了你的工具。 可以直接用别人的。侧栏有个「+」,粘一个 GitHub 地址就能装 SKILL ,装之前可以先看内容。网上按同一标准写的 skill 一个字不用改。

    这也是我们理解的「平权」最具体的形式:方法论不再是机构的隐性知识,而是一份可以 fork 的文档。

    另一个关键设计:模型你自己选

    .env 里改三行就能换模型。我们用 7 个 golden case 实测过各家的工具调用可靠性,数据全部公开在仓库的 docs/model-testing/ 目录下。简单说:

    国内直连首选 DeepSeek (便宜到单次不到一分钱,但要开一个 schema 清洗开关) 走网关的话 Claude Sonnet 和 Qwen Max 是两个 7/7 全命中的 一些 thinking 类模型会把内部推理泄漏到输出里,我们写了一层 shim 去剥离,11 个跨 chunk 边界的单元测试

    这些评测数据本身可能比工具更有价值——如果你在做任何 Agent 项目,选模型之前可以先看看。

    四、一个必须坦白的取舍:两把 key

    项目需要两把 key 。第一把是你自己的大模型 key ,这很好理解。第二把是我们签发的平台 key (免费申请),用来解锁数据源和 SKILL 背后的数据管道。

    有人会问:不是说完全本地吗?为什么还要你们的 key ?

    坦白说这是一个取舍。实时行情、财报、龙虎榜、北向资金这些数据的采集和清洗,需要一套持续维护的管道,这套管道跑在我们服务器上,不可能塞进每个人的 Docker 里。所以模型推理、对话、SKILL 执行、你的自选和持仓全部在本地;数据源那一层走我们的网关。

    我们做了两件事来减少这种「半本地」的不适感:

    不填 key 也能用。把数据源切到 AKShare ( A 股)或 yfinance (美股港股),完全免费不依赖我们,只是覆盖面和质量差一些,而且 AKShare 在容器里连境内数据源经常不稳定。 不藏功能。所有需要 key 的工具在界面上照常显示,点下去会告诉你怎么解锁,而不是假装功能不存在或者数据源坏了。

    我们也留了口子:接自己的 MCP 数据源不需要任何平台 key 。如果你有券商 API 或者自己的数据库,可以直接并进工具箱。

    五、部署实录

    写这篇文章的时候我在一台 M2 MacBook Air 上重新走了一遍流程。

    前置条件:Docker Desktop ,20 GB 磁盘( opencode 镜像约 7.5 GB ,这是目前最大的槽点),4 GB 内存,一个 DeepSeek key (注册送 500 万 tokens )。

    bash git clone https://github.com/agentpit-io/hunter-community cd hunter-community cp .env.example .env echo "JWT_SECRET=$(openssl rand -base64 48)" >> .env

    手改 .env:LLM_BASE_URL / LLM_DEFAULT_MODEL / LLM_API_KEY / LLM_SCHEMA_SANITIZE=1

    docker compose up -d open http://localhost:3100

    首次拉镜像约 10 分钟,之后启动 30 秒。6 个服务( web / api / opencode / llm-shim / Postgres / Redis )全部 healthy 后打开页面即可。

    第一次测试建议问「 601899 现在多少钱」,看到富卡片就说明链路通了。

    Windows 用户注意:早期版本有 CRLF 破坏 entrypoint 脚本的 bug ,v0.1.1 之后已修,README 里有 PowerShell 版命令。

    六、还没做好的地方

    Matrix 的读者大概不喜欢只听好话,所以这一节写得直接一点。 首次启动的 Web 向导在开发中。 AKShare 在容器内不稳定。这是上游问题,但受影响的是选择「完全不依赖我们」的用户,恰恰是最认同项目理念的那批人。 Kronos 预测的准确性。它是一个时序模型,预测的是「按历史模式接下来可能怎么走」,不是对未来的断言。我们在界面上标了置信度,但仍然担心有人把它当作信号直接用。 社区还很小。仓库 fork 数目前几乎为零,说明看的人多、真正跑起来的人少。这篇文章也是想找到愿意跑起来、然后告诉我们哪里不对的人。 七、关于总决赛

    9 月初收到通知,项目从 2,999 件参赛作品中入围了世界人工智能开源大赛( GOAI 2026 )无界应用赛道总决赛 TOP 15 ,9 月 22–23 日在杭州云谷答辩。

    我们准备的答辩主线就是三个词:开源、平权、生态。开源解决「工具属于谁」,平权解决「方法论属于谁」,生态解决「一个团队做不完,需要每个有自己方法的人把它写成 SKILL 」。

    结果如何不重要。对我们来说,能在一个开源比赛的决赛里讲「金融工具应该跑在用户自己机器上」这件事,本身就值了。

    八、如果你想参与 仓库:github.com/agentpit-io/hunter-community 在线演示(不想本地部署可以先看看):hunter-community.agentpit.io 文档:仓库 docs/ 目录 最简单的贡献:写一个 SKILL 。你有任何一套自己的分析方法,写成 Markdown 提个 PR ,全球用户下次 pull 就能用 遇到部署问题:开 issue ,我们承诺部署类问题 24 小时内回复

    最后重申一句:这是一个研究工具,不是投资建议,也不接任何交易执行。它做的事情只有一件——把机构用的那套分析流程,变成一份你可以打开、修改、运行在自己电脑上的文档。

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3124 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:02 · PVG 22:02 · LAX 07:02 · JFK 10:02
    ♥ Do have faith in what you're doing.