ruflo-market-data 插件技术解析:OHLCV 归一化、K 线形态向量化与 HNSW 索引模式匹配
【免费下载链接】ruflo🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo
在 ruflo 生态中,ruflo-market-data插件负责把原始市场行情变成可检索的结构化数据:从 REST API 或 WebSocket 数据源摄取行情,将 K 线(Candlestick)归一化为 OHLCV 向量,再将其向量化后写入 HNSW(Hierarchical Navigable Small World)索引,用于历史形态相似性搜索。读完本文,你将掌握该插件的完整命令与技能面(5 个子命令 + 2 个 Skill + 1 个 Agent)、OHLCV 归一化公式、12 种形态库的可靠性分级、64 维向量编码策略,以及它如何通过 AgentDB 命名空间约定(market-data/market-patterns)与兄弟插件协调存储,并能用 11 项冒烟检查作为"合同"验证插件结构正确性。
插件概览与安装
插件的定位一句话概括:行情数据摄取——feed 归一化、OHLCV 向量化、基于 HNSW 索引的形态匹配(Market data ingestion -- feed normalization, OHLCV vectorization, and HNSW-indexed pattern matching)。
核心能力包括:
- 从 REST API 与 WebSocket feed 摄取行情数据;
- 归一化为具有一致缩放尺度的 OHLCV 向量;
- 将 K 线形态向量化,用于 HNSW 相似度搜索;
- 检测单 K 线形态(doji、hammer)与多 K 线形态(engulfing、morning star、head & shoulders),并给出可靠性评分。
安装方式为以插件目录加载:
claude --plugin-dir plugins/ruflo-market-data插件元信息声明于 plugin.json:版本0.2.1,keywords 包含market-data、ohlcv、time-series、patterns、mcp、candlestick-patterns、namespace-routing。其中后三个关键词是 ADR-0001 修订时补充的,对应本文后述的工具名修正、形态库与命名空间路由修复。
Agent 与 Skill 面:一个>npx @claude-flow/cli@latest memory store --namespace market-data --key "symbol-SYMBOL-DATE" --value "OHLCV_JSON"market-pattern:形态扫描与双路径存储
market-pattern/SKILL.md 的前置条件是数据已经通过market-ingest入库,其步骤为:
- Load candles—— 通过
mcp__plugin_ruflo-core_ruflo__memory_search(或memory_list)从market-data命名空间读取该 symbol 与周期的归一化 OHLCV 数据; - Scan for patterns—— 遍历 K 线序列,按形态长度分类扫描:
- 单 K 线:doji(open ≈ close)、hammer(长下影线)、inverted hammer;
- 双 K 线:看涨/看跌 engulfing;
- 三 K 线:morning star、evening star、three white soldiers、three black crows;
- 多 K 线:head & shoulders、double top/bottom、cup & handle;
- Classify—— 为每个检出结果标注:形态名、类型(reversal/continuation)、方向(bullish/bearish)、可靠性评分(0.0–1.0);
- Rank—— 按可靠性评分降序排序;
- Store—— 双路径写入(沿用 ruflo-cost-tracker ADR-0001 的双路径模式):
- Pattern-store(类型化,推荐):
mcp__plugin_ruflo-core_ruflo__agentdb_pattern-store带type: 'market-pattern'。不要传namespace参数——由 ReasoningBank 负责路由;当 bridge 不可用时,会回退写入保留命名空间pattern,并附controller: 'memory-store-fallback'(见 ruflo-agentdb ADR-0001); - Plain store(命名空间可路由):
mcp__plugin_ruflo-core_ruflo__memory_store --namespace market-patterns—— 因为memory_*工具族按命名空间路由,该参数会被真实生效;
- Pattern-store(类型化,推荐):
- Report—— 展示:形态名、日期范围、方向、可靠性、建议操作。
CLI 替代路径:
npx @claude-flow/cli@latest memory search --query "bullish reversal patterns" --namespace market-patterns npx @claude-flow/cli@latest memory store --key "pattern-AAPL-2026-05-04-doji" --value '{...}' --namespace market-patternsmarket 命令:5 个子命令的完整语义
market.md 定义了统一入口market下的 5 个子命令:
market ingest <symbol> [--period 1D] # 摄取并归一化 OHLCV 数据 market patterns <symbol> # 检测 K 线形态 market search <pattern-name> # 搜索历史形态出现记录 market history <symbol> # 展示摄取历史与数据覆盖度 market compare <sym1> <sym2> # 对比两个 symbol 的形态画像各子命令的内部流程:
market ingest <symbol> [--period 1D]—— 6 步:
- 从配置的数据源获取
<symbol>的 OHLCV 数据; - 归一化:open/high/low/close 转为相对百分比,volume 转 Z-score;
- 将每根 K 线向量化为 64 维填充向量;
- 通过
mcp__plugin_ruflo-core_ruflo__memory_store --namespace market-data存储(memory_*族按命名空间路由;agentdb_hierarchical-*按 tier 路由并忽略 namespace 字符串——这一点是 ADR-0001 修复的核心 bug,详见下文); - 通过
ruvllm_hnsw_add将向量加入 HNSW 索引; - 汇报:摄取 K 线数、日期范围、min/max/avg 价格、成交量画像。
market patterns <symbol>—— 5 步:
- 从
market-data命名空间召回最近的 OHLCV 数据; - 扫描单 K 线(doji、hammer)与多 K 线(engulfing、morning star)形态;
- 对每个检出分类:形态名、类型(reversal/continuation)、可靠性评分;
- 按双路径模式存储:
agentdb_pattern-store(类型化、ReasoningBank 路由——不要传namespace)加上memory_store --namespace market-patterns(命名空间路由); - 展示:形态名、日期、方向(bullish/bearish)、可靠性、K 线范围。
market search <pattern-name>—— 4 步:
- 通过
ruvllm_hnsw_route在 HNSW 索引中搜索匹配该形态的向量; - 从
market-patterns命名空间召回匹配条目; - 按相似度分数与时间新近度排序;
- 展示:symbol、日期、形态匹配分、后续价格行为(若可得)。
market history <symbol>—— 4 步:
- 查询
market-data命名空间中匹配<symbol>的全部条目; - 计算:已存 K 线总数、日期范围、覆盖缺口(gaps);
- 展示数据新鲜度(最近一次摄取时间戳);
- 按类型列出已检出的形态数量。
market compare <sym1> <sym2>—— 4 步:
- 从
market-patterns命名空间召回两个 symbol 的形态数据; - 计算相关性:共享形态类型、时间重叠、方向一致性;
- 并排展示形态频率与可靠性差异;
- 高亮出可能指示交易机会的分歧点。
OHLCV 归一化:五种字段的统一缩放
原始行情在入库前必须归一化,这是跨 symbol、跨价格量级做形态比对的先决条件。五个字段的归一化公式:
| 字段 | 归一化方式 |
|---|---|
| Open | 相对前一收盘价:(open - prev_close) / prev_close |
| High | 相对开盘价:(high - open) / open |
| Low | 相对开盘价:(low - open) / open |
| Close | 相对开盘价:(close - open) / open |
| Volume | Z-score:(vol - mean_vol) / std_vol |
从公式设计可以看出两条原则:价格类字段全部转为相对变化(无量纲百分比),使 50 美元的股票与 500 美元的股票落在同一比较尺度上;成交量因其分布与价格不同,改用滚动窗口 Z-score刻画"放量/缩量"的相对强度。market-pattern的形态判定(如 doji 的open ~= close、hammer 的长下影线)正是在这套归一化空间里进行的。
形态库与 64 维向量编码策略
插件内置的形态库(data-engineer.md 中列出的完整版本,比 README 摘要更细):
| 形态 | 类型 | K 线数 | 可靠性 |
|---|---|---|---|
| Doji | Reversal | 1 | Medium |
| Hammer | Reversal | 1 | Medium-High |
| Engulfing(看涨) | Reversal | 2 | High |
| Engulfing(看跌) | Reversal | 2 | High |
| Morning Star | Reversal | 3 | High |
| Evening Star | Reversal | 3 | High |
| Three White Soldiers | Continuation | 3 | High |
| Three Black Crows | Continuation | 3 | High |
| Head & Shoulders | Reversal | 5–7 | Very High |
| Double Top | Reversal | 可变 | High |
| Double Bottom | Reversal | 可变 | High |
| Cup & Handle | Continuation | 可变 | High |
每个形态被编码为固定长度向量,具体编码策略分四部分:
- 单 K 线形态:5 维(归一化 OHLCV);
- 多 K 线形态:5 × N 维(N 根 K 线的 OHLCV 拼接);
- 元数据向量:3 维(pattern_type_id、reliability_score、trend_direction);
- 总向量:填充至64 维以便 HNSW 索引。
这一设计的关键在于"固定维度":可变长度的形态(head & shoulders 5–7 根、double top/bottom 数量不定)必须归一到统一维度,HNSW 索引才能做高效的最近邻检索;元数据向量则让"形态类型 + 可靠性 + 趋势方向"也参与相似度计算,而非只比价格形状。
另外,Agent 定义中还给出训练与记忆学习的两条路径:
# 神经学习:摄取/检测成功后训练模式 npx @claude-flow/cli@latest hooks post-task --task-id "TASK_ID" --success true --train-neural true npx @claude-flow/cli@latest neural train --pattern-type market-data --epochs 15命名空间协调与路由 Bug 修复(ADR-0001 的核心价值)
这是本插件最值得深挖的部分。ruflo-market-data拥有两个 AgentDB 命名空间(kebab-case,遵循 ruflo-agentdb ADR-0001 的"Namespace convention"):
market-data—— 按 symbol+date 存储的归一化 OHLCV 向量;market-patterns—— 带可靠性评分的已检出 K 线形态。
两者均通过memory_*(按命名空间路由)访问。保留命名空间(pattern、claude-memories、default)严禁被遮蔽。
路由说明:早期版本的技能使用了
agentdb_hierarchical-*和agentdb_pattern-*并附带 namespace 参数——但这两类工具分别按 tier / ReasoningBank 路由,会静默忽略namespace 字符串。ADR-0001 将技能改为使用memory_*做命名空间化的读写。
ADR-0001(Accepted,2026-05-04 提出,2026-05-09 更新) 记录了三个真实存在于技能中的功能性 bug,全部由这次修订修复:
- 工具名漂移:
market-ingest/SKILL.md曾引用mcp__plugin_ruflo-core_ruflo__embeddings_embed——该工具名并不存在。真实工具名是embeddings_generate(与 ruflo-knowledge-graph ADR-0001 是同一类修复); - hierarchical-store 的 namespace 被忽略:
market-ingest/SKILL.md曾用agentdb_hierarchical-store并传namespace: 'market-data'。但agentdb_hierarchical-*按tier(working|episodic|semantic)路由,namespace 参数被静默丢弃——数据实际写错了位置; - pattern-store 同类 bug:
market-pattern/SKILL.md同时存在 hierarchical-recall + namespace 与agentdb_pattern-store+ namespace 两个问题(ReasoningBank 同样忽略 namespace)。
修复方案:load/store 路径全面切换为memory_*(namespace-routed);对优化型形态写入保留双写路径(typed via ReasoningBank 的agentdb_pattern-store+ namespace-routable 的memory_store),沿用 ruflo-cost-tracker 的先例。ADR 同时补齐了插件级 ADR、冒烟测试与 Compatibility 章节,并将版本从0.1.0 → 0.2.0(当前 plugin.json 已迭代到0.2.1)。
ADR 的 Consequences 部分也坦诚指出:任何针对旧(错误)工具调用的外部脚本在此之前就已经在静默失败了,因此修复本身对既有使用方影响为零。
兼容性、冒烟验证与结构合同
README 的 Compatibility 约定:
- CLI:固定到
@claude-flow/cliv3.6 major+minor; - 验证:
bash plugins/ruflo-market-data/scripts/smoke.sh即合同。
验证命令:
bash plugins/ruflo-market-data/scripts/smoke.sh # Expected: "11 passed, 0 failed"smoke.sh 实现了 11 项结构性检查,值得逐条看它如何把"文档承诺"变成"可执行断言":
plugin.json声明版本0.2.1且含三个新关键词(mcp、candlestick-patterns、namespace-routing);- 两个 Skill + Agent + Command 均存在且 frontmatter 有效(检查
name:、description:、allowed-tools:三个键); - 回归检查:
embeddings_embed(不存在的工具)不出现在任何工具调用点(ADR 与 README 中的说明性提及除外); market-ingest的 store 路径使用memory_*(含memory_store),且不再出现agentdb_hierarchical-store与market-data的组合;market-pattern的命名空间读取使用memory_search/memory_list,不再出现agentdb_hierarchical-recall与market-data的组合;market-pattern文档化了双路径 pattern-store(同时要求出现ReasoningBank与memory_store --namespace market-patterns);embeddings_generate(真实工具名)在 market-ingest 中被引用;- README 将
@claude-flow/cli钉在 v3.6; - README 声明遵循 ruflo-agentdb 的 Namespace convention;
market-data与market-patterns两个命名空间在 README 中被声明占用;- ADR-0001 存在且状态为
Accepted。
脚本以printf "\n%s passed, %s failed\n"汇总,任一失败即exit 1。这种"smoke 即合同"的模式是 ruflo 各插件 ADR-0001 的统一节奏:结构检查不需要真实行情数据或 MCP 服务器,纯靠 grep 断言即可守住文档-工具名-命名空间三者的一致性。
与兄弟插件的协作关系
README 的 Related Plugins 章节声明了四条协作边:
ruflo-agentdb—— 命名空间约定的 owner,定义 ADR-0001 所修复的路由规则(其 ADR-0001 明确了 namespace 命名、内容归属与 GC 约定);ruflo-neural-trader—— 消费 market patterns 作为策略信号;ruflo-ruvector—— HNSW 索引引擎,负责形态相似度搜索的底层;ruflo-observability—— 数据源健康度与摄取延迟看板。
从 contenteditable="false">【免费下载链接】ruflo🌊 The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考