ruflo-market-data 插件技术解析:OHLCV 归一化、K 线形态向量化与 HNSW 索引模式匹配
2026/9/10 5:02:09 网站建设 项目流程

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-dataohlcvtime-seriespatternsmcpcandlestick-patternsnamespace-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入库,其步骤为:

  1. Load candles—— 通过mcp__plugin_ruflo-core_ruflo__memory_search(或memory_list)从market-data命名空间读取该 symbol 与周期的归一化 OHLCV 数据;
  2. 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;
  3. Classify—— 为每个检出结果标注:形态名、类型(reversal/continuation)、方向(bullish/bearish)、可靠性评分(0.0–1.0);
  4. Rank—— 按可靠性评分降序排序;
  5. Store—— 双路径写入(沿用 ruflo-cost-tracker ADR-0001 的双路径模式):
    • Pattern-store(类型化,推荐)mcp__plugin_ruflo-core_ruflo__agentdb_pattern-storetype: '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_*工具族按命名空间路由,该参数会被真实生效;
  6. 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-patterns

market 命令: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 步:

  1. 从配置的数据源获取<symbol>的 OHLCV 数据;
  2. 归一化:open/high/low/close 转为相对百分比,volume 转 Z-score;
  3. 将每根 K 线向量化为 64 维填充向量;
  4. 通过mcp__plugin_ruflo-core_ruflo__memory_store --namespace market-data存储(memory_*族按命名空间路由;agentdb_hierarchical-*按 tier 路由并忽略 namespace 字符串——这一点是 ADR-0001 修复的核心 bug,详见下文);
  5. 通过ruvllm_hnsw_add将向量加入 HNSW 索引;
  6. 汇报:摄取 K 线数、日期范围、min/max/avg 价格、成交量画像。

market patterns <symbol>—— 5 步:

  1. market-data命名空间召回最近的 OHLCV 数据;
  2. 扫描单 K 线(doji、hammer)与多 K 线(engulfing、morning star)形态;
  3. 对每个检出分类:形态名、类型(reversal/continuation)、可靠性评分;
  4. 按双路径模式存储:agentdb_pattern-store(类型化、ReasoningBank 路由——不要传namespace)加上memory_store --namespace market-patterns(命名空间路由);
  5. 展示:形态名、日期、方向(bullish/bearish)、可靠性、K 线范围。

market search <pattern-name>—— 4 步:

  1. 通过ruvllm_hnsw_route在 HNSW 索引中搜索匹配该形态的向量;
  2. market-patterns命名空间召回匹配条目;
  3. 按相似度分数与时间新近度排序;
  4. 展示:symbol、日期、形态匹配分、后续价格行为(若可得)。

market history <symbol>—— 4 步:

  1. 查询market-data命名空间中匹配<symbol>的全部条目;
  2. 计算:已存 K 线总数、日期范围、覆盖缺口(gaps);
  3. 展示数据新鲜度(最近一次摄取时间戳);
  4. 按类型列出已检出的形态数量。

market compare <sym1> <sym2>—— 4 步:

  1. market-patterns命名空间召回两个 symbol 的形态数据;
  2. 计算相关性:共享形态类型、时间重叠、方向一致性;
  3. 并排展示形态频率与可靠性差异;
  4. 高亮出可能指示交易机会的分歧点。

OHLCV 归一化:五种字段的统一缩放

原始行情在入库前必须归一化,这是跨 symbol、跨价格量级做形态比对的先决条件。五个字段的归一化公式:

字段归一化方式
Open相对前一收盘价:(open - prev_close) / prev_close
High相对开盘价:(high - open) / open
Low相对开盘价:(low - open) / open
Close相对开盘价:(close - open) / open
VolumeZ-score:(vol - mean_vol) / std_vol

从公式设计可以看出两条原则:价格类字段全部转为相对变化(无量纲百分比),使 50 美元的股票与 500 美元的股票落在同一比较尺度上;成交量因其分布与价格不同,改用滚动窗口 Z-score刻画"放量/缩量"的相对强度。market-pattern的形态判定(如 doji 的open ~= close、hammer 的长下影线)正是在这套归一化空间里进行的。

形态库与 64 维向量编码策略

插件内置的形态库(data-engineer.md 中列出的完整版本,比 README 摘要更细):

形态类型K 线数可靠性
DojiReversal1Medium
HammerReversal1Medium-High
Engulfing(看涨)Reversal2High
Engulfing(看跌)Reversal2High
Morning StarReversal3High
Evening StarReversal3High
Three White SoldiersContinuation3High
Three Black CrowsContinuation3High
Head & ShouldersReversal5–7Very High
Double TopReversal可变High
Double BottomReversal可变High
Cup & HandleContinuation可变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_*(按命名空间路由)访问。保留命名空间(patternclaude-memoriesdefault严禁被遮蔽

路由说明:早期版本的技能使用了agentdb_hierarchical-*agentdb_pattern-*并附带 namespace 参数——但这两类工具分别按 tier / ReasoningBank 路由,会静默忽略namespace 字符串。ADR-0001 将技能改为使用memory_*做命名空间化的读写。

ADR-0001(Accepted,2026-05-04 提出,2026-05-09 更新) 记录了三个真实存在于技能中的功能性 bug,全部由这次修订修复:

  1. 工具名漂移market-ingest/SKILL.md曾引用mcp__plugin_ruflo-core_ruflo__embeddings_embed——该工具名并不存在。真实工具名是embeddings_generate(与 ruflo-knowledge-graph ADR-0001 是同一类修复);
  2. hierarchical-store 的 namespace 被忽略market-ingest/SKILL.md曾用agentdb_hierarchical-store并传namespace: 'market-data'。但agentdb_hierarchical-*tierworking|episodic|semantic)路由,namespace 参数被静默丢弃——数据实际写错了位置;
  3. pattern-store 同类 bugmarket-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 项结构性检查,值得逐条看它如何把"文档承诺"变成"可执行断言":

  1. plugin.json声明版本0.2.1且含三个新关键词(mcpcandlestick-patternsnamespace-routing);
  2. 两个 Skill + Agent + Command 均存在且 frontmatter 有效(检查name:description:allowed-tools:三个键);
  3. 回归检查embeddings_embed(不存在的工具)不出现在任何工具调用点(ADR 与 README 中的说明性提及除外);
  4. market-ingest的 store 路径使用memory_*(含memory_store),且不再出现agentdb_hierarchical-storemarket-data的组合;
  5. market-pattern的命名空间读取使用memory_search/memory_list,不再出现agentdb_hierarchical-recallmarket-data的组合;
  6. market-pattern文档化了双路径 pattern-store(同时要求出现ReasoningBankmemory_store --namespace market-patterns);
  7. embeddings_generate(真实工具名)在 market-ingest 中被引用;
  8. README 将@claude-flow/cli钉在 v3.6;
  9. README 声明遵循 ruflo-agentdb 的 Namespace convention;
  10. market-datamarket-patterns两个命名空间在 README 中被声明占用;
  11. 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询