Awesome-finance-skills架构解析:SQLite本地数据库+混合搜索如何支撑金融技能链
【免费下载链接】Awesome-finance-skillsA collection of Awesome Finance Agent Skills for free and easy to start | 一系列开源免费的金融分析Agent Skills项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-finance-skills
Awesome-finance-skills 是一套开源免费的金融分析 Agent Skills技能集合,把大模型 Agent 变成"华尔街分析师":实时财经新闻、A股/港股行情、情感分析、逻辑链路可视化与 Kronos 行情预测开箱即用。它没有复杂的后端服务,核心架构只有两块基石——SQLite 本地数据库与混合搜索(BM25 + 向量语义 RAG)。本文带你读懂这两块基石如何串联起整条金融技能链。
1. 技能链全景:8 个技能如何分工协作
仓库的skills/目录下按职责拆分了 8 个独立技能,每个技能自带SKILL.md(能力说明书)与scripts/工具脚本,可单独安装、也可组合使用:
| 技能 | 职责 | 入口文档 |
|---|---|---|
| alphaear-news 📰 | 聚合财联社、华尔街见闻、微博等 10+ 信源热点 | SKILL.md |
| alphaear-stock 📊 | A股/港股代码搜索、OHLCV 历史行情 | SKILL.md |
| alphaear-sentiment ❤️ | FinBERT/LLM 情感打分(-1.0 ~ +1.0) | SKILL.md |
| alphaear-predictor 🔮 | Kronos 时序预测 + 新闻情绪修正 | SKILL.md |
| alphaear-search 🔍 | 全网搜索 + 本地 RAG 混合搜索 | SKILL.md |
| alphaear-logic-visualizer 🔗 | 自动生成市场传导链路图 | SKILL.md |
| alphaear-reporter 📝 | 规划→撰写→编辑→图表 的研报生成 | SKILL.md |
| alphaear-signal-tracker 🎯 | 投资信号演化追踪(强化/弱化/证伪) | SKILL.md |
数据流非常清晰:news/stock 负责"采",sentiment 负责"评",search 负责"查",predictor/logic-visualizer/reporter 负责"算"与"写"。下面拆解支撑这条流水线的两大基建。
2. SQLite 本地数据库:全链路的共享记忆
所有技能的数据底座都是同一个文件——data/signal_flux.db,由 Python 标准库sqlite3直接驱动,零部署、零服务、零成本。
各技能共享同一份DatabaseManager封装(如 skills/alphaear-search/scripts/database_manager.py),首次运行时自动建表:
daily_news— 新闻主表:source、rank、title、url、content、publish_time、sentiment_score等字段,并建了crawl_time与source两个索引,支撑"取最近 N 天某信源新闻"这类高频查询(见 skills/alphaear-news/scripts/database_manager.py 的get_daily_news)。search_cache/search_detail— 搜索缓存表:以query_hash(引擎+查询+条数的 MD5)为主键,记录每次搜索的结果快照与时间戳,避免重复发起网络请求。
这套设计的巧妙之处在于技能间解耦但数据互通:news 技能爬来的新闻落库后,sentiment 技能可以对同一批数据打分,predictor 读取新闻文本修正预测,search 技能则把整库当作私有知识库来检索。一个 1MB 级的 SQLite 文件,就承担了消息队列、缓存层与数据库三重回合一。
3. 混合搜索:BM25 关键词 + 向量语义的 RRF 融合
local引擎的检索核心在 skills/alphaear-search/scripts/hybrid_search.py 的HybridSearcher,实现了教科书级的混合 RAG 流程:
- 语料准备:用
jieba对新闻的title + content做中文分词,构建 BM25(BM25Okapi)倒排索引——擅长精确关键词命中(如"降准"、"600519")。 - 语义向量:可选加载
sentence-transformers多语言嵌入模型(默认paraphrase-multilingual-MiniLM-L12-v2,可用环境变量EMBEDDING_MODEL覆盖),对语料批量编码,擅长语义模糊匹配(如"央行放水"能匹配到"降准")。 - RRF 融合排序:两路各出一份排名,用倒数排名融合(Reciprocal Rank Fusion,k=60)合并:单路在榜首的文档不会因另一路缺席而掉队,兼顾精确与泛化。
- 延迟加载:向量模型默认不预载,首次搜索时才加载并训练向量索引,兼顾启动速度与内存。
在此之上派生两个变体:LocalNewsSearch负责持久态——从daily_news表拉取历史新闻建索引(默认 30 天窗口);InMemoryRAG负责内存态——供 reporter 在撰写研报时跨章节检索已有内容,保证长报告前后一致。
4. 多引擎搜索与智能缓存:SQLite 的另一重身份
skills/alphaear-search/scripts/search_tools.py 中的SearchTools把四个引擎注册成统一接口:
| 引擎 | 定位 | 缓存策略 |
|---|---|---|
jina | LLM 友好输出,需配置JINA_API_KEY | 命中缓存直接返回 |
ddg | DuckDuckGo,英文/国际资讯 | 同上 |
baidu | 百度,中文/国内资讯 | 同上 |
local | 本地历史新闻混合搜索(上文第 3 节) | 不缓存,本身就是查库 |
两个值得注意的工程细节:
- TTL 缓存:默认 1 小时(
SEARCH_CACHE_TTL),ttl=0可强制刷新——SQLite 在这里充当了轻量级 Redis 的角色。 - 降级链:jina 失败自动回退 ddg,ddg 失败回退 baidu,保证搜索能力永不掉线。
另外,缓存不只是"命中即返回":find_similar_queries支持模糊查找相似历史查询,Agent 可先读缓存、自行判断相关性再决定是否复用(提示词见 skills/alphaear-search/references/PROMPTS.md),这是一种"Agentic 缓存"思路。
5. 两条基石如何被各技能复用
| 技能 | 用 SQLite 做什么 | 用混合搜索做什么 |
|---|---|---|
| alphaear-news | 落库 10+ 信源热点(save_daily_news) | — |
| alphaear-search | 搜索缓存 + 相似查询 | LocalNewsSearch历史新闻 RAG |
| alphaear-predictor | 读取新闻文本修正预测 | 新闻感知调整预测区间 |
| alphaear-reporter | 共享新闻库写研报 | InMemoryRAG跨章节检索去重 |
| alphaear-signal-tracker | 追踪信号演化状态 | 检索历史信号佐证强化/证伪 |
可以看到,每个技能只需实现自己的业务逻辑,存储与检索全部委托给共享底座——这正是"技能链"能低成本横向扩展的原因。
6. 快速上手:3 分钟跑通
# 方式一:一键安装单个技能 npx skills add RKiding/Awesome-finance-skills@alphaear-search # 方式二:克隆后复制到你的 Agent 技能目录(以 OpenCode 为例) git clone https://gitcode.com/gh_mirrors/aw/Awesome-finance-skills cp -r Awesome-finance-skills/skills/* ~/.config/opencode/skills/安装完成后直接对 Agent 说:"分析贵金属跳水对A股的影响",它会自动调度 news → sentiment → search(local) → predictor 这条技能链,而幕后默默工作的,正是那个signal_flux.db与 BM25+向量混合索引。
总结:Awesome-finance-skills 证明了"小而美"的 Agent 架构同样能支撑严肃的金融分析场景——SQLite 解决"数据从哪来、存哪去、如何复用",混合搜索解决"海量历史中如何精准+语义地找到关键信息"。两者结合,让 8 个技能共享一套记忆、一套检索,无需任何服务器即可运转。想深入某个技能的提示词设计,可继续浏览各技能
references/PROMPTS.md。
【免费下载链接】Awesome-finance-skillsA collection of Awesome Finance Agent Skills for free and easy to start | 一系列开源免费的金融分析Agent Skills项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-finance-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考