用途
Dossier Collect 用于围绕一个种子实体(seed)进行递归并行调查,向外扩展并发现所有与之相连的实体,构建成图结构化的档案(dossier),并为每条结论保留来源出处(provenance)。它适合“从某个起点出发,尽可能完整地摸清关联网络”的场景,而不是回答某个具体问题。若需要回答具体问题,应使用 deep-research;若需要多步骤计划,应使用 goal-plan。
主要能力
- 种子类型识别:将种子分类为 username(用户名/句柄)、file(文件路径)、symbol(代码标识符)、adr(ADR-NNN)、url 或 concept(自由文本)之一。
- 来源匹配:根据种子类型匹配来源矩阵,默认使用所有适用来源。
- 并行扇出(fan-out):在第 0 轮一次性发出所有来源查询。例如用户名可查询 WebSearch、对 github.com/ 的 WebFetch、memory_search_unified;ADR 可读取 ADR 文件、Grep 引用、在 adr 命名空间做 memory_search;符号可做 Grep、Glob、embeddings_search。
- 实体抽取与去重:从每个命中结果中提取实体(人物、仓库、文件、ADR、URL、术语),使用轻量正则与启发式,仅在歧义时使用 LLM 抽取;丢弃已在档案中的实体,若未设置 --exact,还会丢弃与已有节点嵌入余弦相似度 ≥ 0.92 的实体。
- 递归扩展:对每个新实体(每个来源受 --max-breadth 限制)递归执行,直到深度达到 --max-depth 或预算耗尽。
- 图聚合:构建 { nodes, edges } 图。每个节点携带 { id, type, attrs, sources: [...] };每条边携带 { from, to, kind, source, confidence }。
- 产物渲染:生成 <slug>.md(执行摘要、实体表、mermaid 图、来源出处脚注)与 <slug>.json(机器可读图),默认位置为 v3/docs/examples/dossiers/<slug>/。
- 持久化与轨迹:通过 memory_store 以 dossier 命名空间、<slug> 为键持久化;通过 trajectory-start / trajectory-end 记录任务轨迹。
使用方式
以命令形式调用,例如:
- /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
执行流程依次为:识别种子类型 → 选择来源 → 启动轨迹(task dossier:<slug>)→ 第 0 轮并行扇出 → 抽取实体 → 去重 → 第 k 轮递归 → 聚合为图 → 渲染产物 → 持久化 → 结束轨迹。
输出结构
JSON 输出包含 seed、seedType、depth、truncated、generatedAt、nodes、edges 与 stats(nodesByType、sourcesUsed、tokensSpent)。节点示例包含 id、type、attrs、sources;边示例包含 from、to、kind、source、confidence。
预算与纪律
- 若设置 --budget-usd,会通过轨迹跟踪近似成本;预算耗尽时输出部分档案,标记 truncated: true,并列出仍在队列中的实体。
- 仅做 BFS 扩展:完成第 k 轮后才进入第 k+1 轮。
- 绝不静默截断,始终标记并记录被跳过的内容。
适用场景
适合从用户名、文件、符号、ADR、URL 或概念出发,跨 Web、记忆、知识图谱、代码库、ADR 索引与 git 等来源,系统性地梳理关联实体网络并保留出处。
限制
具体收费、价格、平台支持范围、效果指标等事实暂未提供。