全局数据包流动网图
默认交付一个控制页和多个能实际联动的动画 HTML,适合拖到不同窗口和屏幕自由布局。control.html 只放操作、表格、日志证据和辅助说明,不重复绘制动画或曲线。visual.html 可跟随控制页;visual-flow.html、visual-flags.html、visual-packets.html、visual-curves.html、visual-bandwidth.html 分别固定网图、到达位图、信包时序、完成度和带宽视图。允许重复打开同一种动画页。未筛选时展示全量发送和接收对象;筛选后按两侧各自的范围重排并放大,只呈现范围内对象。不要用若干演示 rank 替代真实数据。
先建立证据边界
- 获取最新原始附件,记录 URL、评论编号、文件哈希和源码提交。保留原始日志;复用已解析数据前核对输入哈希。逐 rank、逐核核对实际 launch 数,不把发送 group、warmup、重复参数当作 launch。
- 读发送分工、目标路由、接收分工、flag 映射和复制门槛。分别列出发送核、接收核、网络搬运引擎;发送核可能只提交 WQE,并非逐字节搬运数据。
- 定义最小可观察单元。一个 flag 对应 512B 块时,画该块而不是伪造网卡包。记录载荷、flag、token、slot 和原输入 tokenId 的区别;没有输入 tokenId 时只标接收 slot。
- 逐项标记实测、源码推导、未知。没有发送日志时,发送核只能由可验证公式推导,不能声称实测发送时间、在途时间或 SQ。缺失记录与值为零、零 token 任务分别处理。
- 按 数据契约 建模,先验证守恒与边界,再绘图。大整数 tick 先做整数差;原始 tick 以字符串保存。未校准时默认按接收 rank 入口对齐,并在主画面持续说明这不是全局物理时间。
设计交互
- 动画页左侧发送 rank×核,右侧接收 rank×核,用 Canvas 保留当前范围的全部对象;未筛选时就是全量。两侧布局分别计算,单来源不能仍占全卡网图的一个微小格。保留所选 rank 的所有核,无任务核空心显示;足够大时标明核编号。控制页集中放播放、速度、筛选、定位、任务选择、slot 翻页、逐块证据与完整说明。
- 遵循 多屏联动约定。同步 launch、时间锚点、播放状态、速度、筛选、接收核、任务、slot 页与块选择;窗口视图独立,不能因某页切图把其他固定动画页一起切走。提供“独立视图/跟随控制页”选择。动画页点选必须反向定位控制页;新开页面和刷新接续当前状态。页面互相提供带同一会话参数的入口和全屏按钮。
- 给角色独立标识,允许按 launch、group、来源 rank、目的 rank 筛选。发送 group 不替代 launch;未获得的 launch 显示缺失而不是复制已有数据。
- 发送核点击收窄来源,接收核点击收窄目的,始终保留另一端和 group 条件。任务下拉、详情、连线与统计必须同范围;切筛选后选择有效任务,不能暗中显示范围外的详情。无关联任务时明确显示空状态。
- 按 双端聚焦与原子时序 实现来源×目的组合图。组合数 ≤512 时自动在网图下呈现时序预览,并提供展开视图;横轴是证据支持的时间,纵轴是来源→目的组合,每个点对应一个稳定身份的原子包。游标经过其完成观测时改变状态;倒退必须恢复。提供发送优先/接收优先排序、组合分页、缩放和重合点的完整包清单。没有发送日志时标题必须使用“首次就绪观测时序”,不能把首次观察当作真实发送。
- 必须同时交付全局流动网图与 时间完成度曲线,动画窗口可以独立切换视图,控制页保留设置和表格。提供不同 group 对比、每个 group 的全部 rank 对比、任一 rank 内各 group 对比;区分接收 rank 与来源 rank 汇总口径。表格列出起点证据、P10/P50/P90/P100 与尾段,点击节点同步定位动画时间。不能只用连线动画替代趋势曲线。
- 同时交付 区间带宽与组成 视图。以相邻测量点的新增首次就绪包数除以 tick 差,保留原始包/tick;提供 B/包、μs/cycle 配置与 GB/s 换算。总量与 group/rank 两套堆叠必须逐区间守恒,支持固定 tick 窗口、精确区间定位、完整贡献表和 CSV。默认排除本机复制,首测之前与末测之后保持未知;没有校准时钟和链路计数器时只能称为观测吞吐。
- 以真实位图观察更新接收状态。区分未观察、观察为零、观察为一、已消费、无任务。首个一只证明该观察区间内已就绪;此前没有零记录时不能声称知道到达下界。
- 连线对应可追溯的来源、发送核和接收核。未获得真实发送时刻时,将运动说明为视觉提示,不让轨迹长度或速度暗示带宽、距离、延迟。暂停后保留当前窗口的连线与新增块。
- 全局概览可合并同一对端连线并限制绘制数量,必须显示合并规则、已绘数量和总量;统计和块状态不得因此采样。提供放大或筛选后查看全部细节的方法。
- 提供播放、暂停、拖动、前后观察、回到起点、跳到末尾、速度调整;切轮和筛选必须重算状态,倒放不能保留未来数据。
- 点选接收核后列出所有负责任务,包含零 token;可选任一任务查看 slot×block 位图及每块首次一的记录、此前零的范围、复制时刻与原始行号。网图底部必须始终保留此位图,不能因筛选后出现原子时序预览而隐藏。独立到达位图页显示放大的逐位置状态、行列编号、就绪/观察零/未观察/已复制计数、图例、slot 翻页和点击证据。倒退恢复此前状态;未观察不能涂成零。保留原始观察,不用动画插值改写事实。
- 使用清晰的白底、可读的 rank 标签和独立连线层。遵守减弱动态效果偏好,支持键盘选择;窄屏可滚动细节,不得裁掉核心控制项。
实现与验证
使用 scripts/render.py 模型.json --output 产物目录/index.html 生成 control.html、visual.html、五种 visual-*.html 与兼容入口 index.html。所有实际页面都内嵌同一压缩模型、样式和脚本,不请求第三方资源。具体日志适配器放在业务产物目录,通用规则留在本技能。若业务已有便携导出,同步更新分享包的全部动画文件;明确单文件离线合并模式与多屏控制模式的分工区别。
通过同一静态 HTTP 服务打开两页,例如 python3 -m http.server 18828 --bind 127.0.0.1 --directory 产物目录。两页使用相同 ?session=名称,在同一浏览器配置中共享状态;交付时启动服务并给出两个可点击 HTTP 链接及重启命令。直接打开 file:// 只能预览,必须明确提示未联动,不能假装连接成功。
该模板面向接收位图观测回放;若数据包含真实发送事件或校准时钟,先扩展契约与页面说明再使用,不能把现有推导连线升级命名为实测轨迹。
验证每个 rank 的轮次数、每核记录序号、位图掩码、prefix、复制计数、dropped、未知数量及跨轮隔离。证明每个块最多计入一次首次到达,最终总块数等于有效 token 数乘每 token 块数;不完整输入必须报出具体缺口。
运行 node scripts/test_progress.cjs 检查按块加权阈值、并列时间、阶梯查询、筛选、接收/来源口径和未达状态。用独立逐块首次到达排序复算真实模型的节点,核对每个 rank×group,不仅抽看几条曲线。完整曲线可用于复盘,但要说明它包含当前游标之后的观测;当前动画填充仍只使用游标之前的数据。
运行 node scripts/test_bandwidth.cjs 检查首测基线、零增量、同 tick 合并、复制去重、group/rank 守恒、窗口尾段、像素积分和换算。用独立逐块枚举验证真实模型各区间的时间、包数和两套组成。原始包率不随字节或时钟配置改变;两屏须同步这些配置。用实际键盘输入和失焦验证数值控件,清除测试时钟后交付,不能把假设频率留下成为默认事实。
运行 node scripts/test_packets.cjs,检查 512 门槛、笛卡尔组合、原子身份、同 tick 多包、重复观察与复制去重、未知时间、零任务及正反向查询。独立复算真实模型的所有原子包,核对 task/slot/block、首次时间和 record/line。浏览器检查 64×64、1×64、64×1、1×1 的实际节点与行数、自动出现/消失、两端核点选、重合清单跨页及范围内证据定位。
运行渲染器自检、模型验证和实际浏览器交互。至少同时打开控制页、网图、到达位图和另一种图表,确认固定视图互不切换但时间、筛选、任务、slot 和块同步;刷新固定页保留视图。“跟随控制页”只影响选择跟随的窗口。确认控制页所有场景均没有可见 Canvas,原子包清单和曲线/带宽表格仍正常。检查播放、暂停、变速、倒退、切轮、group 筛选、任意核与 slot 钻取、首尾状态;验证双向选择、新开页面、刷新、关闭重连、不同 session 隔离,以及两个控制页不会使播放加速。尤其检查 ≤512 组合时网图、时序预览、逐位置填充同时可见,slot 翻页后能查看所有位置。查看最拥挤截图及控制台。检查 1280×720、1440×900、1920×1080 下动画和控制布局,允许正常滚动,不能裁掉操作区。明确区分静态检查、浏览器实测和未运行的检查。
保存模型、输入清单、原始日志定位、生成命令和验证结果。交付两页链接及独立 HTML 文件,说明如何移到两块屏幕,简述数据缺口与时间语义。仅在用户要求发布时推送或公开托管。