news 2026/9/10 13:49:55

ruflo-goals dossier-collect 技能实战:基于种子实体的递归并行多源调查与图谱式档案构建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ruflo-goals dossier-collect 技能实战:基于种子实体的递归并行多源调查与图谱式档案构建

ruflo-goals dossier-collect 技能实战:基于种子实体的递归并行多源调查与图谱式档案构建

【免费下载链接】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-goals插件提供的dossier-collect技能(对应 ADR-099),它是一种"以实体为种子、向外递归扩张"的多源并行调查模式:给定用户名、文件路径、代码符号、ADR 编号、URL 或概念,技能会在同一轮内并行查询 Web、记忆、知识图谱、代码库、ADR 索引与 Git 情报,从命中结果中抽取新实体并递归扩展,最终产出带逐条溯源(provenance)的图谱式档案(dossier)。读完本文,你将掌握dossier-collect的完整调用方式、种子类型判定、源矩阵选择、去重与预算纪律,以及 JSON 输出结构与持久化约定,并能区分它与deep-research(问题驱动)之间的适用边界。

一、背景:为什么需要"档案调查"这种独立模式

ruflo-goals插件(安装于 plugins/ruflo-goals/README.md)最初只提供三个 Agent:

Agent模式输出
goal-plannerGOAP / A* 状态空间规划行动计划
deep-researcher线性多源综合 + 证据分级分级发现文档
horizon-tracker长周期目标跟踪 + 漂移检测里程碑状态

ADR-099 档案调查员:递归并行多源研究 指出,这三个 Agent 都没有实现一种在结构上完全不同的研究模式——受 maigret(并行用户名枚举 + 递归扩张 + 结构化档案报告)启发而来的:

  1. 大规模并行广度扇出——对同一种子实体并发查询 N 个源,而非串行;
  2. 递归扩张——第 k 轮发现的实体成为第 k+1 轮的种子,受深度/预算上限约束;
  3. 结构化档案输出——图 + Markdown + JSON,每条声明都带来源溯源,便于导出。

deep-researcher做的是证据分级综合,但它期望人工精选源列表且基本线性执行,没有递归再播种循环、也没有并行扇出原语。与此同时,ADR-099 的调研显示 ruflo 已自带组装该调查器所需的全部原语,无需新增任何外部依赖:混合稀疏+稠密语义搜索(memory_search_unified)、HNSW/RaBitQ 向量检索(embeddings_search)、模式召回(agentdb_pattern-searchagentdb_hierarchical-recall)、知识图谱遍历与抽取(kg-traversekg-extract)、Web 搜索抓取(WebSearch/WebFetch)、代码库查询(Grep/Glob/Read)、ADR 索引(ruflo-adr:adr-index)、Git 情报(ruflo-jujutsu:diff-analyze)、并行 Agent 扇出(ruflo-swarm:swarm-init)以及轨迹录制(hooks_intelligence_trajectory-*)。

因此决策是新增一个 Agentdossier-investigator与配套技能dossier-collect,两者共同构成 dossier-collect 技能定义 与 dossier-investigator Agent 提示词。ADR-099 同时记录了被否决的备选方案:扩展deep-researcher(会耦合两种结构不同的循环)、把 Python 版 maigret 打包成 MCP 包装器(引入 Python 运行时依赖与 3000+ 站点的网络出口与隐私/滥用姿态问题——我们要的是 maigret 的"模式"而非其"目标清单")、以及把该能力建进ruflo-knowledge-graph(KG 插件关注已抽取数据的图操作,而调查器关注的是"采集")。

二、安装与入口

在已安装 Claude Code 风格插件体系的 ruflo 环境中,通过 marketplace 安装:

/plugin marketplace add ruvnet/ruflo /plugin install ruflo-goals@ruflo

插件的唯一新增 CLI 入口就是斜杠技能/ruflo-goals:dossier-collect,无其他 CLI 面变更。插件清单 plugins/ruflo-goals/.claude-plugin/plugin.json 当前版本为 0.2.1,keywords 中包含dossierinvestigationosintmcpevidence-grading等,可用于检索与市场分类。

使用前可用仓库自带契约脚本做一次健康检查:

bash plugins/ruflo-goals/scripts/smoke.sh # Expected: "10 passed, 0 failed"

smoke.sh 的 10 项断言覆盖了插件清单版本与关键词、5 个技能 + 4 个 Agent + 1 个命令齐备、README 选择指南中的 4 种任务模式、ADR-099 交叉链接、CLI 版本钉住、命名空间约定、ADR-0001 状态以及"技能中不得出现通配符工具授权"等不变量。

三、参数与调用方式

技能 frontmatter 给出了参数提示:

argument-hint: "<seed> [--max-depth N] [--max-breadth N] [--sources s1,s2] [--budget-usd N] [--exact]"

各参数语义(结合 Agent 输入定义 dossier-investigator.md):

参数默认值含义
seed必填起始实体,会被类型探测
--max-depth/maxDepth2从种子出发的递归深度
--max-breadth/maxBreadth8每轮每个源最多继续追踪的新实体数
--sources全部适用源可用源的子集,如codebase,git,memory
--budget-usd/budget可选{ tokens?, usd? },触达后干净中止
--exactfalse关闭嵌入相似度去重,用于实体身份敏感的运行
// 输入形态(Agent 视角) { "seed": "ruvnet", "sources": ["web","memory","git"], "maxDepth": 2, "maxBreadth": 8, "budget": { "usd": 1 }, "exact": false }

frontmatter 中allowed-tools严格列出了该技能可用的工具面:记忆三件套(memory_store/memory_search/memory_search_unified)、AgentDB 模式检索与层次召回(agentdb_pattern-search/agentdb_pattern-store/agentdb_hierarchical-recall)、向量检索(embeddings_search)、智能体钩子(hooks_intelligence_pattern-search/pattern-store/trajectory-start/trajectory-step/trajectory-end)、任务创建(task_create)以及基础工具Bash/WebSearch/WebFetch/Read/Write/Grep/Glob。ADR-099 的验收标准之一是 Agent 提示词不超过 80 行(遵循 ADR-098 关于 token 成本的指引),当前 dossier-investigator.md 为 68 行,满足该约束。

四、核心执行流程(11 步)

技能正文定义了从种子到档案的完整流水线:

  1. 检测种子类型——分类为username(用户句柄)、file(路径)、symbol(代码标识符)、adr(ADR-NNN)、urlconcept(自由文本概念)。
  2. 挑选源——按源矩阵匹配种子类型;默认取全部适用源。
  3. 开启轨迹——调用mcp__plugin_ruflo-core_ruflo__hooks_intelligence_trajectory-start,任务名为dossier:<slug>
  4. 第 0 轮扇出——在同一条消息中发出全部源查询。示例:
    • usernameWebSearch、对github.com/<user>执行WebFetchmcp__plugin_ruflo-core_ruflo__memory_search_unified
    • adrReadADR 文件、Grep引用、mcp__plugin_ruflo-core_ruflo__memory_search(命名空间adr);
    • symbolGrepGlobmcp__plugin_ruflo-core_ruflo__embeddings_search
  5. 抽取实体——从每条命中中浮出实体(人、仓库、文件、ADR、URL、术语)。用轻量正则 + 启发式即可,仅在歧义时才动用 LLM 抽取(ADR-099 中对应选项是ruflo-knowledge-graph:kg-extract)。
  6. 去重——丢弃已在档案中的实体;若未设--exact,还丢弃与既有节点嵌入余弦相似度 ≥ 0.92 的实体。
  7. 第 k 轮递归——对每个新实体(每个源以--max-breadth为上限)回到第 4 步递归,直到深度 ≥--max-depth或预算耗尽。
  8. 聚合——构建{ nodes, edges }图。每个节点携带{ id, type, attrs, sources: [...] };每条边携带{ from, to, kind, source, confidence }
  9. 渲染产物——<slug>.md(执行摘要、实体表、mermaid 图、来源溯源脚注)与<slug>.json(机器可读图),默认位置为v3/docs/examples/dossiers/<slug>/
  10. 持久化——mcp__plugin_ruflo-core_ruflo__memory_store,命名空间dossier、键<slug>
  11. 结束轨迹——mcp__plugin_ruflo-core_ruflo__hooks_intelligence_trajectory-end,状态为成功。

Agent 视角的循环可以浓缩为:

seed → [round 0: 跨源并行扇出] → [从每条命中抽取实体] → [对照档案去重;嵌入相似度阈值 0.92,除非 --exact] → [round 1: 用新实体重新播种,再次扇出] → ... 直到 depth ≥ maxDepth 或预算耗尽 → [聚合为图 + 渲染 markdown + 输出 JSON]

技能与 Agent 都强调一个关键纪律:每一轮内把所有源查询批量放进同一条消息,绝不串行化本可并行的事情

五、源矩阵:按种子类型挑选数据源

Agent 提示词 中的源矩阵是本技能的核心配置表,决定了对不同种子类型应该驱动哪些工具:

工具最适合
混合记忆mcp__plugin_ruflo-core_ruflo__memory_search_unified任意概念
模式库mcp__plugin_ruflo-core_ruflo__agentdb_pattern-search重复出现的模式
层次召回mcp__plugin_ruflo-core_ruflo__agentdb_hierarchical-recall分层上下文
向量(HNSW)mcp__plugin_ruflo-core_ruflo__embeddings_search语义近邻
知识图谱mcp__plugin_ruflo-core_ruflo__hooks_intelligence_pattern-search+kg-traverse实体边
Web 搜索WebSearch用户名、URL、当前状态
Web 抓取WebFetch主页、README
代码库GrepGlobRead符号、文件路径
ADR 索引mcp__plugin_ruflo-core_ruflo__memory_search(命名空间adrADR 编号、设计决策
Git 情报Bashgit loggit blame作者、文件历史

与源矩阵配套的是 README 选择指南,它明确了四种任务模式的归属,避免与兄弟 Agent 混用:

你手上有使用
一个问题deep-researcher/deep-research
一个待向外扩张的种子实体dossier-investigator/dossier-collect
一个多步骤目标goal-planner/goal-plan
一个长周期目标horizon-tracker/horizon-track

ADR-099 还明确记录了"与deep-researcher约有 40% 重叠"的取舍:两者共享"查询记忆 + KG + Web"的表层,但因为循环结构不同(线性证据分级 vs 并行递归扩张)、输出格式不同(综合文档 vs 实体图 + 档案),且选择规则无歧义(有问题是deep-researcher,有种子要扩张是dossier-investigator),因此接受这种冗余;若后续重叠过大,可抽出共享的multi-source-query技能级助手而不破坏任一 Agent 的接口。

六、输出结构与 JSON Schema

技能定义了机器可读档案的 JSON 骨架,字段全部可选可空但结构固定:

{ "seed": "ruvnet", "seedType": "username", "depth": 2, "truncated": false, "generatedAt": "ISO-8601", "nodes": [ { "id": "ruvnet", "type": "username", "attrs": { "...": "..." }, "sources": ["WebSearch", "github.com"] } ], "edges": [ { "from": "ruvnet", "to": "ruflo", "kind": "owns", "source": "github.com", "confidence": "high" } ], "stats": { "nodesByType": {}, "sourcesUsed": [], "tokensSpent": 0 } }

仓库里保存着三份真实运行示例(ADR-099 实施记录中注明由docs/examples/提交加入):ruvnetADR-088ruflo-goals。以 v3/docs/examples/dossiers/ruflo-goals/ruflo-goals.json 为例,一次对concept种子(解析为插件路径plugins/ruflo-goals)的深度 2 调查产出了 16 个节点(plugin 1 / agent 4 / skill 5 / command 1 / adr 1 / memory-namespace 4)、14 条边(ships-agent×4、ships-skill×2、drives×4、persists-to×2、introduces×2),sourcesUsed["Read", "Glob"]tokensSpent为 2400——每条边都带着sourceconfidence字段,正是"逐条溯源"的落地形态。

对应的 v3/docs/examples/dossiers/ruflo-goals/ruflo-goals.md 展示了人类可读产物结构:执行摘要 → 实体表 → mermaid 图 → 选择规则 → 文件清单。其中 mermaid 图清晰刻画了实体关系,例如:

七、预算纪律与去重策略

技能与 Agent 对"展开的失控"做了三层硬约束,这些约束构成 ADR-099 的核心不变量之一(Budget caps):

  • 预算追踪:若设置了--budget-usd,通过轨迹近似跟踪成本;触达上限时输出部分档案,标记truncated: true并列出仍排队的实体。budget.tokens同理——绝不允许静默超支。
  • BFS 优先:只做广度优先扩张——先完成第 k 轮,再调度第 k+1 轮,避免深度优先失控带来的成本爆炸。
  • 绝不静默截断:永远显式标记并记录跳过了什么。

去重纪律同样明确:去重,但不合并(de-dup, don't merge)——当两个源指向同一实体时,在一个节点上把两者都链为独立来源,而不是编造一条综合声明。默认采用嵌入相似度阈值 0.92 去重;ADR-099 承认该阈值存在误报风险,--exact模式(关闭相似度去重)被记录为低优先级跟进项,首轮发布时默认阈值已够用。

八、轨迹录制与持久化

从第 3 步到第 11 步,整个调查被包裹在智能体轨迹(trajectory)里:

  • trajectory-start(任务dossier:<slug>)→ 每轮trajectory-step→ 完成时trajectory-end(success)。

这不仅是可观测性手段:ADR-099 的正向后果之一指出,轨迹录制会喂给 SONA 模式库,使后续调查获得更快的路由。持久化方面,档案写入 AgentDB 记忆的dossier命名空间(键为<slug>),与goap-plansresearchhorizons等兄弟命名空间平级;README 命名空间协调表 说明dossier是文档化的基础名例外(类似federation),不涉及 legacy-vs-canonical 迁移,而researchhorizons等已有规范映射(goals-researchgoals-horizons),新写入应从本插件侧采用规范的 kebab-case 形式。同时,保留命名空间patternclaude-memoriesdefault不得被遮蔽。

九、实战示例

技能文档给出了四类可复制的调用:

/ruflo-goals:dossier-collect ruvnet /ruflo-goals:dossier-collect ADR-097 --max-depth 1 /ruflo-goals:dossier-collect "src/memory/hnsw.ts" --sources codebase,git,memory /ruflo-goals:dossier-collect "ruflo-goals" --max-breadth 5 --budget-usd 1

逐一拆解:

  • ruvnet——默认username类型,走 Web + 记忆 + Git 全套源,深度 2、广度 8;
  • ADR-097 --max-depth 1——adr类型,只做一轮扇出,适合快速摸清一个设计决策的引用面;ADR-099 的端到端验收测试正是以ADR-097为种子,期望命中实体包含federationcircuit-breakerbudget
  • "src/memory/hnsw.ts" --sources codebase,git,memory——file/symbol类型,显式收窄源集合,专注代码库引用、Git 历史和记忆中的相关讨论;
  • "ruflo-goals" --max-breadth 5 --budget-usd 1——concept类型,用广度上限 5 与 1 美元的预算约束控制成本。

十、与兄弟技能的边界

一句话总结选型边界:dossier-collect用于枚举与扩张(从种子出发,问"它还连着谁"),而 deep-research 技能 用于回答具体问题(线性多阶段、逐条证据分级、产出综合报告),goal-plan 技能 用于多步骤行动规划(GOAP/A*、前置条件分析、自适应重规划),horizon-track用于跨会话长目标跟踪。ADR-099 的实施记录确认:上线后两个调查类 Agent 并列使用未出现混淆,问题驱动与种子驱动的区分在实践中成立,重叠并未成为问题。

结语

dossier-collect是 ruflo 中"用自有工具面拼装成熟调查模式"的典型样本:不引入 Python 运行时、不新增 MCP 服务器、不依赖外部站点清单,仅靠记忆、AgentDB、向量检索、知识图谱、Web、代码库与 Git 这组既有原语,就实现了 maigret 式的并行扇出 + 递归扩张 + 结构化档案。它的图谱输出、逐条溯源与预算硬约束,使其特别适合"调查某个符号 / 模块 / 依赖 / ADR / 人物"这类需要向外扩张而非回答单一问题的任务。

相关资源

  • 技能定义:plugins/ruflo-goals/skills/dossier-collect/SKILL.md
  • Agent 提示词:plugins/ruflo-goals/agents/dossier-investigator.md
  • 架构决策:v3/docs/adr/ADR-099-dossier-investigator-recursive-parallel-research.md
  • 插件 README:plugins/ruflo-goals/README.md
  • 真实运行示例:Markdown v3/docs/examples/dossiers/ruflo-goals/ruflo-goals.md 与 JSON v3/docs/examples/dossiers/ruflo-goals/ruflo-goals.json,以及同目录下的ruvnetadr-088示例
  • 契约验证脚本:plugins/ruflo-goals/scripts/smoke.sh

【免费下载链接】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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 13:47:22

SSM框架实现计算机网络实验教学平台开发指南

1. 项目概述这个SSM框架实现的计算机网络实验课程教学网站&#xff0c;是我在指导计算机专业毕业设计时经常遇到的一个经典案例。它完美融合了教学管理系统和在线实验平台的双重功能&#xff0c;特别适合作为高校计算机相关专业的课程设计或毕业设计选题。从技术架构来看&#…

作者头像 李华
网站建设 2026/9/10 13:41:06

CANN/ge常量折叠特性分析

常量折叠&#xff08;Constant Folding&#xff09;特性分析 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模…

作者头像 李华