ruflo market-ingest 实战:市场数据归一化、OHLCV 向量化与 HNSW 索引的完整接入流程 📅 发布时间:2026/9/10 1:53:05 👁 浏览次数: ruflo market-ingest 实战市场数据归一化、OHLCV 向量化与 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 仓库中plugins/ruflo-market-data插件的market-ingest技能展开讲解如何将原始行情数据价格与成交量抓取、归一化为 OHLCV 向量、编码为 64 维定长向量并写入 HNSW 索引从而为后续的 K 线形态检测与相似度检索做好准备。读完本文你将掌握该技能的完整六步接入流程、每维向量背后的归一化公式、memory_*与agentdb_hierarchical-*两套工具的路由差异这一关键陷阱以及插件如何以 smoke 脚本作为契约进行自验证。技能定位形态检测前的第一步数据管线market-ingest是 ruflo 市场数据插件的两项核心技能之一其定义文件为 skills/market-ingest/SKILL.md。该技能的前置元数据声明了它的参数提示与允许调用的工具集name: market-ingest description: Ingest and normalize market data into OHLCV vectors with HNSW indexing argument-hint: symbol [--source api] allowed-tools: Bash mcp__plugin_ruflo-core_ruflo__memory_store mcp__plugin_ruflo-core_ruflo__memory_search mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_create mcp__plugin_ruflo-core_ruflo__ruvllm_hnsw_add mcp__plugin_ruflo-core_ruflo__embeddings_generate从这份 frontmatter 可以看出两点设计意图调用形态为/market-ingest symbol [--source api]即以一个交易符号symbol为核心参数--source可选地指定数据来源REST API、CSV 文件或手工输入允许的工具被严格收敛为存储 索引 嵌入三类 MCP 工具加Bash符合插件最小权限的思路——Bash的存在正是为了支撑文末给出的 CLI 备用路径。该技能处于数据管线的最上游README 将其描述为 Ingest and normalize market data into OHLCV vectors with HNSW indexing是运行market-pattern形态检测或跨标的比较之前的必经步骤。插件整体由 1 个 agentdata-engineer 2 个 skills 1 个 command含 5 个子命令组成其中market ingest子命令在 commands/market.md 中给出了与技能一致的六步描述。六步接入流程从抓取到报告技能主体定义了六个步骤下面逐步拆解并结合仓库文档补充细节。第 1 步Fetch data抓取从配置好的数据源获取该 symbol 的 OHLCV 数据支持 REST API、CSV 文件或手工输入三种来源。这一步的产出是后续所有计算的原料每个 K 线周期candle包含 open/high/low/close 四个价格与 volume 一个量值。第 2 步Normalize归一化这是整个技能中最关键的一步。原始价格具有绝对量纲不同标的之间、同一标的不同时期之间不可直接比较因此必须先转换为无量纲的相对值。SKILL.md 与 agents/data-engineer.md 给出的归一化公式完全一致字段归一化方式公式Open相对前一收盘价(open - prev_close) / prev_closeHigh相对开盘价(high - open) / openLow相对开盘价(low - open) / openClose相对开盘价(close - open) / openVolume滚动 Z-score(vol - mean_vol) / std_vol这套设计值得注意价格类字段全部转换为日内/日际变化率因此一个 K 线的向量刻画的是形态本身跳空幅度、上影线、下影线、收盘强弱、量能异动而不是价格水平。这使同一形态在不同价位、不同标的上都能得到相近的向量表示正是后面 HNSW 相似度检索能够跨标的工作的基础。成交量则用滚动均值/标准差做 Z-score突出量能异常这一信息。第 3 步Vectorize向量化每个 K 线被编码为64 维定长向量5 个归一化后的 OHLCV 值加上填充padding至 64 维。data-engineer.md 进一步给出了多 K 线形态的编码策略单 K 线形态5 维归一化 OHLCV多 K 线形态5 × N 维N 根 K 线 OHLCV 拼接元数据向量3 维pattern_type_id、reliability_score、trend_direction最终统一 padding 到 64 维供 HNSW 索引。定长 padding 是 HNSW 这类固定维度索引引擎的硬性要求——所有向量必须同维才能构建距离图。技能文档在此还明确了一个工具名陷阱对形态描述做语义嵌入时必须调用mcp__plugin_ruflo-core_ruflo__embeddings_generateembeddings_embed这个工具名并不存在。这一点并非笔误式警告而是插件契约 ADR 修复过的真实缺陷下文会展开。第 4 步Store按命名空间存储调用mcp__plugin_ruflo-core_ruflo__memory_store --namespace market-data以 symboldate 为 key 持久化归一化后的 OHLCV 数据。技能文档在这里特别强调了路由规则memory_*工具族按namespace路由agentdb_hierarchical-*工具族按tierworking | episodic | semantic路由会忽略 namespace 字符串。因此本步骤必须用memory_*。这是 ruflo 插件体系中一个反复出现的坑如果在agentdb_hierarchical-store上传namespace: market-data参数会被静默丢弃数据落入错误的层级分区。ADR-0001 记录的三个真实 bug 中第 2 个正是本技能此前用agentdb_hierarchical-store配 namespace 参数导致的修复方式就是切换到 namespace 路由的memory_*。命名空间归属也有明确约定见 README Namespace coordination本插件独占两个 kebab-case 命名空间——market-data每 symboldate 的归一化 OHLCV 向量market-patterns带可靠度评分的已检测形态由market-pattern技能写入。同时约定保留命名空间pattern、claude-memories、default不得被占用。第 5 步IndexHNSW 建索引调用mcp__plugin_ruflo_core_ruflo__ruvllm_hnsw_add实际前缀为mcp__plugin_ruflo-core_ruflo__将向量加入 HNSW 索引使后续最近邻检索可用。索引创建走ruvllm_hnsw_create检索走ruvllm_hnsw_route——这三个 HNSW 工具由 CLI 的 MCP 工具层实现可在 v3/claude-flow/cli/src/mcp-tools/ruvllm-tools.ts 中找到对应注册与测试v3/claude-flow/cli/tests/ruvllm-tools.test.ts。语义嵌入侧的工具则定义在 v3/claude-flow/cli/src/mcp-tools/embeddings-tools.ts那里提供的是embeddings_generate——与技能文档中不要用embeddings_embed的告诫互相印证。第 6 步Report报告运行结束输出摘要摄入 K 线数量、日期范围、价格区间、平均成交量。commands/market.md 中的market ingest描述还补充了 min/max/avg 价格与成交量画像volume profile方便人工核对数据覆盖是否完整。CLI 备用路径与插件加载方式技能文档提供了不依赖 MCP 会话的 CLI 等价命令npx claude-flow/clilatest memory store --namespace market-data --key symbol-SYMBOL-DATE --value OHLCV_JSON其中--key遵循symbol-SYMBOL-DATE的命名约定symbol 大写、日期按天粒度--value为归一化后的 OHLCV JSON。检索侧的等价命令可在姊妹技能 market-pattern/SKILL.md 中看到npx claude-flow/clilatest memory search --query bullish reversal patterns --namespace market-patterns npx claude-flow/clilatest memory store --key pattern-AAPL-2026-05-04-doji --value {...} --namespace market-patterns整个插件通过指定插件目录加载claude --plugin-dir plugins/ruflo-market-data兼容性上README 将 CLI 固定在claude-flow/cliv3.6majorminor插件版本 0.2.1 并在.claude-plugin/plugin.json中声明了mcp、candlestick-patterns、namespace-routing三个关键词——这几项恰好都被 scripts/smoke.sh 的第一项检查所校验。上游教训两个真实 bug 与契约化验证理解market-ingest的两个反直觉细节需要看它的契约 ADR。ADR-0001 记录了该插件v0.1.0在技能文件中发现的三个真实缺陷embeddings_embed工具名不存在真实工具是embeddings_generate用agentdb_hierarchical-store配namespace: market-datanamespace 参数被静默忽略该工具族按 tier 路由market-pattern中的同类 hierarchical-recall / pattern-store namespace 问题。修复方案统一为namespaced 读写一律改走memory_*工具族语义嵌入统一使用embeddings_generate插件版本从 0.1.0 升到 0.2.x。ADR 的负面后果一节很坦率任何之前按错误工具名写脚本的人本来就在静默失败所以修复的净影响为零——这正是契约必须可机器验证的动机。为此插件将scripts/smoke.sh定义为契约smoke as contract共 11 项结构检查其中与本技能直接相关的回归项包括第 3 项全插件范围内embeddings_embed不得再出现在任何工具调用位点ADR 与 README 中的说明性引用除外第 4 项market-ingest/SKILL.md必须含memory_store且不允许再出现agentdb_hierarchical-store与market-data同句的违规组合第 7 项market-ingest必须引用真实存在的embeddings_generate。运行方式与预期输出bash plugins/ruflo-market-data/scripts/smoke.sh # Expected: 11 passed, 0 failed这 11 项检查覆盖版本与关键词、两个技能 agent command 的 frontmatter 完整性、v3.6 固定、命名空间声明、ADR 状态等使文档漂移文档写错工具名而无人发现成为可被 CI 拦截的失败。与下游的衔接形态检测与模式检索market-ingest的产出直接服务两条下游链路形态检测market-pattern技能先memory_search/memory_list从market-data命名空间召回归一化数据再扫描单 K 线doji、hammer、双 K 线engulfing、三 K 线morning star、three white soldiers到多 K 线head shoulders、double top/bottom形态检测出的形态按双路径写入——agentdb_pattern-storetyped、ReasoningBank 路由不传namespace与memory_store --namespace market-patternsnamespace 路由该双路径写法沿用 ruflo-cost-tracker ADR-0001 的先例历史检索market search子命令经ruvllm_hnsw_route在 HNSW 索引中做最近邻查询再从market-patterns命名空间召回匹配条目按相似度与时间新鲜度排序。插件的 README 也列出了模式库概览Doji1 K 线中等可靠度、Hammer1 根中高、Engulfing2 根高、Morning/Evening Star3 根高、Three White Soldiers3 根高、Head Shoulders5–7 根很高、Double Top/Bottom可变高每种形态同样编码为 64 维 padding 向量。生态上README 指明消费方为ruflo-neural-trader将市场形态作为策略信号、ruflo-ruvectorHNSW 索引引擎、ruflo-agentdb命名空间约定的拥有者。小结market-ingest技能虽然只有几十行 Markdown却浓缩了 ruflo 插件体系的三条工程纪律归一化公式保证跨标的可比性变化率 Z-score而非原始价格64 维定长 padding 保证 HNSW 可索引namespace 路由纪律保证数据落在正确的分区memory_*按 namespace 路由agentdb_hierarchical-*按 tier 路由二者不可混用。配合 smoke.sh 的 11 项契约检查与 ADR-0001 的缺陷记录这套技能文档 契约脚本 决策记录的三层结构使数据接入流程既可复制运行又能防止文档与工具名漂移——这也是研究 ruflo 插件机制时值得注意的实践样本。【免费下载链接】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),仅供参考