ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

DeerFlow 的 generate_network_graph:用 nodes/edges 数据生成网络关系图的参数规范与完整调用链

DeerFlow 的 generate_network_graph:用 nodes/edges 数据生成网络关系图的参数规范与完整调用链 DeerFlow 的 generate_network_graph用 nodes/edges 数据生成网络关系图的参数规范与完整调用链【免费下载链接】deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.项目地址: https://gitcode.com/GitHub_Trending/de/deer-flow本文围绕 generate_network_graph.md 这份参考文档展开完整解析 DeerFlowchart-visualization技能中网络关系图的输入字段规范nodes/edges 结构、theme、style.texture 与画布尺寸、使用建议与返回结果并结合 generate.js 与 SKILL.md 的源码还原从 JSON spec 到图表 URL 的完整调用链读完后可直接在项目中复现一次可运行的网络图生成。网络关系图的功能定位与适用场景参考文档对generate_network_graph的定义是以节点与连线呈现实体之间的连接关系适合社交网络、系统依赖、知识图谱等场景。它面向的是关系这一类数据结构——当数据的核心不是趋势、占比或层级而是谁和谁之间、以什么关系相连时网络图就是最直接的可视化形式。这一点也与技能的主入口文档 SKILL.md 中的选型指南一致。SKILL.md把 26 种图表按数据特征分组其中Relationships Flow关系与流向一组包含generate_scatter_chart相关性、generate_sankey_chart流向、generate_venn_chart重叠Specialized专用型一组中明确列出generate_network_graph: Complex node-edge relationships复杂节点-边关系。也就是说在 DeerFlow 的图表选型决策树中网络图被定位为处理复杂节点-边关系的专用工具与桑基图强调流量、韦恩图强调集合重叠形成互补。前端文档 skills.mdx 的技能清单也将chart-visualization概括为从数据创建图表和可视化网络关系图是其中 26 种可选图表之一。输入字段规范必填与可选参数参考文档对generate_network_graph的args定义如下这是构造调用 payload 的完整依据。必填字段data.nodes 与 data.edges字段类型约束dataobject必填包含节点与连线data.nodesarrayobject必填至少 1 条每个节点需提供唯一namedata.edgesarrayobject必填至少 1 条包含source与targetstring可选name说明关系两个关键约束值得注意name的唯一性是节点身份的唯一标识。edges中的source/target通过字符串匹配nodes里的name来定位两端节点因此节点命名必须稳定且唯一。edges.name是可选的关系标注。文档在使用建议中进一步提示可在label中注明关系含义——两者指向同一件事给每条边一个可读的关系描述如依赖、汇报给、协作让图谱不只是拓扑结构还能表达关系语义。可选字段theme、style.texture 与画布尺寸字段类型默认值可选值style.texturestringdefaultdefault/roughthemestringdefaultdefault/academy/darkwidthnumber600—heightnumber400—theme控制整体配色主题dark适合深色页面背景academy为偏学术的浅色调不传时一律回落到default。style.texture控制笔触风格rough会呈现手绘/草图质感适合演示性输出。width/height以600 x 400为默认画布节点较多、期望更舒展的布局时可自行放大。使用建议节点规模与连线一致性参考文档给出的使用建议包含三条可操作的检查项可以视作生成前的自检清单节点数量保持在 10~50 之间以避免拥挤。少于 10 个节点时网络图往往退化成了简单的星型图或链状图用组织图或桑基图表达可能更清晰超过 50 个节点后默认力导向布局下标签会互相遮挡建议先在数据侧做聚合如按部门/类别归并再绘制。确保edges中的source/target对应已存在的节点。悬空的边指向不存在的节点名会破坏拓扑完整性构造 payload 前建议先做一次source/target ∈ nodes.name的集合校验。在边的name中注明关系含义提升图谱可读性。返回结果URL 与 _meta.spec参考文档说明调用成功后返回网络图 URL并提供_meta.spec以便后续增删节点。从 generate.js 的源码结构看非地图类工具网络图属于此类走generateChartUrl分支脚本把{ type, source: chart-visualization-creator, ...args }POST 到可视化服务校验响应data.success后将data.resultObj原样打印到 stdout见generateChartUrl函数及main()中的console.log(url)。也就是说stdout 输出的内容来自服务端返回的resultObj_meta.spec即其中携带的完整规格快照。结合 SKILL.md 第 4 步Result Return的要求——把图片 URL 和生成所用的完整argsspecification一并返回给用户——_meta.spec的实际用途是下一轮对话要增删节点、调整关系时可以直接基于这份 spec 做增量修改而无需从头重新描述整张图。调用链解析从 SKILL.md 工作流到 generate.jsgenerate_network_graph不是一个独立入口而是chart-visualization技能四步工作流中的一环。SKILL.md 定义的流程为智能选图Step 1→ 读取对应references/文档提取参数Step 2→ 调用脚本生成Step 3→ 返回 URL 与 argsStep 4。Step 3 的 payload 格式与执行命令payload 采用统一的{ tool, args }结构tool取值为generate_network_graph{ tool: generate_network_graph, args: { data: { nodes: [], edges: [] }, theme: default, style: { texture: default }, width: 600, height: 400 } }执行命令为node ./scripts/generate.js payload_json该技能在 frontmatter 中声明了nodejs: 18.0.0的兼容要求运行时需准备 Node.js 18 及以上版本脚本内部使用了原生fetch。generate.js 如何处理 generate_network_graph从 generate.js 源码可以看到几个与网络图直接相关的实现细节工具名映射CHART_TYPE_MAP将generate_network_graph映射为服务端类型network-graph见文件头部映射表。若tool不在映射表中脚本打印Unknown tool并跳过该条目。请求端点可配置getVisRequestServer()读取环境变量VIS_REQUEST_SERVER未设置时默认指向内置的可视化服务地址。需要替换渲染后端时只需设置该环境变量无需改代码。对比之下SERVICE_ID环境变量仅被地图类工具generate_district_map、generate_path_map、generate_pin_map的generateMap分支使用网络图不涉及。spec 参数既可以是 JSON 字符串也可以是文件路径main()中先用fs.existsSync判断参数——若参数是已存在的文件路径则读文件解析否则按内联 JSON 解析解析失败会以Error parsing spec:报错退出exit code 1。支持批量生成顶层 spec 若是数组Array.isArray(spec)会逐个处理并在 stdout 依次输出每张图的 URL适合一次性生成多张图表的批处理场景。测试友好文件末尾module.exports { generateChartUrl, generateMap, httpPost, CHART_TYPE_MAP }导出了核心函数便于单测 mock HTTP 层验证映射与响应处理逻辑。可复制的完整示例以研发团队依赖关系为例把参考文档的全部约束落地成一个可直接执行的 payload节点 5 个在建议的 10~50 区间内偏小仅作格式演示实际使用时按真实规模补足node ./scripts/generate.js { tool: generate_network_graph, args: { data: { nodes: [ { name: deer-flow }, { name: gateway }, { name: sandbox }, { name: memory }, { name: skills } ], edges: [ { source: gateway, target: deer-flow, name: 接入 }, { source: sandbox, target: deer-flow, name: 执行环境 }, { source: memory, target: deer-flow, name: 持久化 }, { source: skills, target: deer-flow, name: 能力扩展 } ] }, theme: default, style: { texture: default }, width: 600, height: 400 } }执行成功后stdout 输出生成的网络图 URL如需增删节点基于返回的_meta.spec修改data.nodes/data.edges后重新调用即可。相关代码与文档索引参考文档本文主体generate_network_graph.md技能工作流与 payload 规范SKILL.md生成脚本映射表、端点配置、批量处理generate.js技能选型分组Relationships Flow / SpecializedSKILL.md 的 Step 1 部分技能目录测试chart-visualization技能名匹配用例test_skill_catalog.py前端技能清单文档skills.mdx同目录下另有 25 份同构参考文档如 generate_sankey_chart.md、generate_mind_map.md字段组织方式与本文一致可按相同模式阅读。【免费下载链接】deer-flowAn open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.项目地址: https://gitcode.com/GitHub_Trending/de/deer-flow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进