尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

deer-flow 图表技能实战:generate_sankey_chart 桑基图工具的数据契约、参数详解与生成链路

deer-flow 图表技能实战:generate_sankey_chart 桑基图工具的数据契约、参数详解与生成链路 deer-flow 图表技能实战:generate_sankey_chart 桑基图工具的数据契约、参数详解与生成链路【免费下载链接】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本篇技术指南围绕 deer-flow 仓库中chart-visualization技能下的桑基图规格文档 generate_sankey_chart.md 展开,完整讲解generate_sankey_chart工具的输入数据契约、可选参数取值与默认值、命令行调用方式,并结合 generate.js 源码剖析从 JSON 载荷到图像 URL 的完整生成链路。读完后,你可以直接为预算分配、流量路径、能耗分布等场景构造合法的桑基图请求,并理解参数如何被下游渲染服务消费。桑基图在可视化体系中的定位根据规格文档的定义,generate_sankey_chart用于展示资源、能量或用户流在不同节点之间的流向与数量,典型适用场景包括:预算分配:展示总资金如何逐级拆分到部门与科目;流量路径:展示用户从入口到转化各环节的流转与流失;能耗分布:展示能源从产地、电网到终端用处的分配链路。在 chart-visualization 技能的 SKILL.md 的选型指南中,桑基图被归类于Relationships Flow(关系与流向)一类:当数据表达的是流向而非趋势或占比时,应选择generate_sankey_chart(相关性用散点图,集合交叠用维恩图)。此外,consulting-analysis 技能 在描述产出物类型时也将 Sankey diagram(桑基图)列为标准可视化形式之一,说明该工具是仓库多技能协同下数据汇报链路的常用出口。从技能目录的组织方式看,该技能按选型 → 提取参数 → 调用脚本 → 返回结果四步工作流设计:第 2 步明确要求读取references/目录下对应图表类型的规格文件(本主题即 references/generate_sankey_chart.md),从中识别必填与可选字段,再把用户数据映射为脚本期望的args格式。这也解释了为什么references/目录下存在 26 个与图表工具一一对应的规格文件。该技能还通过名称即可被技能目录检索命中:backend/tests/test_skill_catalog.py 中的测试用例断言,用模糊查询词(如chart)即可匹配到chart-visualization,且 前端文档 的技能列表中将其描述为从数据创建图表和可视化。必填字段:data三元组规格文档规定generate_sankey_chart只有一个必填字段:字段类型说明dataarrayobject每条记录必须包含source(string)、target(string)与value(number)即桑基图的输入本质是一张有向加权边表:每个元素描述一条从source节点流向target节点、量为value的流量。节点无需单独声明,渲染端会根据边表自动推断出节点集合;因此构造数据时的核心职责是保证边的完整性与合法性。一个典型的预算分配示例载荷:{ tool: generate_sankey_chart, args: { title: 年度预算分配流向, data: [ { source: 总预算, target: 研发投入, value: 420 }, { source: 总预算, target: 市场投放, value: 230 }, { source: 总预算, target: 运营成本, value: 150 }, { source: 研发投入, target: 云服务, value: 200 }, { source: 研发投入, target: 人才招聘, value: 160 }, { source: 研发投入, target: 设备采购, value: 60 }, { source: 市场投放, target: 广告投放, value: 150 }, { source: 市场投放, target: 内容营销, value: 80 }, { source: 运营成本, target: 办公场地, value: 90 }, { source: 运营成本, target: 行政支持, value: 60 } ] } }title之外的字段均可选,下面逐项说明其取值范围与默认值。可选参数详解:对齐、配色、主题与画布规格文档列出的全部可选参数及默认值如下:参数类型默认值可选取值 / 说明nodeAlignstringcenter节点纵向对齐方式,可选left/right/justify/centerstyle.backgroundColorstring无设置图表背景色style.palettestring[]无定义节点配色,按节点顺序取色style.texturestringdefault纹理风格,可选default/rough(手绘粗糙质感)themestringdefault整体主题,可选default/academy/darkwidthnumber600画布宽度(像素)heightnumber400画布高度(像素)titlestring空字符串图表标题几点选型建议:nodeAlign控制各列节点在纵向的排布策略。center让每列居中、左右对称感强;justify会拉伸节点使整列占满画布高度,适合层数多、希望视觉均衡的预算树;left/right则把节点贴齐画布边缘,适合强调起点—终点叙事的漏斗式流向。theme与style.backgroundColor应搭配考虑:在深色页面中嵌入图表时选dark主题,通常无需再手动设置背景色;若需要与页面精确同色,可用style.backgroundColor覆盖。style.palette用于为节点指定颜色序列,长度应不小于节点数,超出的颜色会被忽略、不足则回落到默认配色(规格文档未细化回退规则,建议按节点数给足颜色)。width/height默认 600×400,层级较深的流向图建议适当加高(如height: 600),避免节点标签挤压。命令行调用方式与执行示例按 SKILL.md 规定的工作流,第 3 步是向scripts/generate.js传入 JSON 载荷,执行命令为:node ./scripts/generate.js payload_json其中payload_json即上一节的{ tool: ..., args: {...} }结构。技能 frontmatter 声明了运行环境要求nodejs: 18.0.0——这与源码中直接使用 Node 18 起内置的全局fetch发请求相吻合(generate.js 的httpPost函数)。脚本对输入的容错与批处理能力阅读 generate.js 的main函数(约 L97-L163)可以确认以下实现细节:参数解析双模式:第一个 CLI 参数如果是一个已存在的文件路径,脚本会读取文件内容再解析为 JSON;否则按内联 JSON 字符串解析(约 L106-L116)。因此复杂载荷可以先写成.json文件再传路径,规避 shell 引号转义问题。批处理:若解析结果是数组,脚本会逐条处理多个图表规格(约 L118),一次调用可生成多张图。工具名严格校验:tool字段必须精确命中内置映射表CHART_TYPE_MAP(约 L6-L32)。其中generate_sankey_chart被映射为远端图表类型sankey(L26);缺tool或工具名未知时,脚本打印错误并跳过该条,而不是抛异常中断整个批次(约 L124-L135)。请求与应答协议:generateChartUrl(约 L62-L77)将载荷组装为{ type, source: chart-visualization-creator, ...args }后 POST 到渲染服务;服务地址默认指向 AntV 的 gpt-vis 在线渲染端点,可通过环境变量VIS_REQUEST_SERVER覆盖(约 L34-L39)。响应体中success为假时抛出errorMessage,为真时取出resultObj作为图像 URL 输出到 stdout(约 L156-L157)。可测试性:脚本末尾以module.exports导出generateChartUrl、generateMap、httpPost、CHART_TYPE_MAP(L173),表明其内部函数被设计为可单测的单元。需要说明的是,地图类工具(generate_district_map/generate_path_map/generate_pin_map)走的是另一条generateMap分支并需要SERVICE_ID,而桑基图属于常规图表分支,不涉及SERVICE_ID。桑基图数据准备:四类实践建议规格文档使用建议一节给出了四条关键准则,逐条拆解其在数据层的落法:节点名称保持唯一。边表靠字符串匹配节点,若同一逻辑节点存在研发与研发投入两种写法,会被渲染成两个独立节点,流向随即断裂。建模前应先做节点名归一化。避免过多交叉。边的数量与交叉密度直接决定可读性;当节点两侧连接都很多时,优先考虑重新分层,把汇聚型中间节点(如总预算)放到首列。环路需先打平为阶段流向。桑基图是分层有向流,不支持回流边。若业务存在循环(例如市场投放 → 用户回流 → 再投放),应在取数阶段按时间阶段拆分(如一期投放 / 二期投放)打平成单向阶段流,而不是把环边直接塞入data。按阈值过滤小流量。长尾小流量会把带宽压成细线、增加视觉噪声,建议设定阈值(如总量 1% 或绝对值下限)过滤后再渲染,把细节留给表格或明细视图。返回结果契约:URL 与_meta.spec规格文档返回结果一节约定:generate_sankey_chart返回桑基图 URL,并在_meta.spec中存放节点与流量定义。这一契约在references/全部 26 份图表规格中是统一的表述模式(折线图写附_meta.spec供后续编辑,网络图写提供_meta.spec以便后续增删节点),即服务端在结果中随附一份与本次输入对应的结构化 spec。从 generate.js 源码看,脚本自身负责把服务返回的resultObj输出到 stdout;_meta.spec则是服务端返回契约的一部分。对 Agent 工作流而言,这份 spec 的价值在于可复现与可迭代:保存它后,下次只需微调data中的个别value或增删边,即可基于同一份规格重新生成,而不必从原始数据重新建模。SKILL.md 的第 4 步Result Return也明确要求把图像 URL 与完整args(即规格)一并交付给用户,与此契约一致。适用前提与小结使用本工具的前提是:运行环境满足 Node.js 18,且能够访问默认渲染服务(或已通过VIS_REQUEST_SERVER指向可用的替代端点)。该技能代码源自 AntV 的 chart-visualization-skills 项目并以 MIT 协议许可(见 SKILL.md 的 License 声明),仓库内以技能包形式随skills/public/发布。回到核心要点:generate_sankey_chart的输入是一张source/target/value三元组边表,配合nodeAlign、theme、style等可选参数控制呈现,经node ./scripts/generate.js payload_json单条或批处理调用,最终产出可复用_meta.spec二次迭代的桑基图 URL。对于预算分配、流量路径、能耗分布等流向即结论的汇报场景,这套数据契约与生成链路在 deer-flow 的技能体系内开箱即用。【免费下载链接】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),仅供参考
返回列表