call-map:在 DSH 会话里把技能、MCP 与子代理画成可缩放归因图

前言

在 DeepSeek Harness(DSH)里跑带技能、MCP 和子代理的长会话时,「轨迹」页能回答什么时候调了工具、各段花了多久,但很难一眼看出:某次 MCP 是哪个技能带出来的、配了多个 MCP 本会话实际用了哪几个、子代理内部又调了什么、提示词里哪句话把链路引到这一步。下面介绍的 call-map(维护者 NICEGSP,分类为客户端插件)在会话头部增加第三个视图「调用可视化」,从本地会话日志折叠出归因树,不埋点、不上传。

这是什么

call-map 是一个 DSH 插件:在会话里多看一页,把这一轮实际用到的技能、MCP 工具和子代理,以及提示词 / 思维链里与之同名的词面片段,画成一张可缩放的分支图。数据全部来自本机会话事件,插件自身不写会话、不新增网络请求。

  • 目录页:https://www.skillhub.cn/plugins/NICEGSP/call-map
  • 源码与说明:https://github.com/NICEGSP/call-map
  • 当前 package 版本:0.1.0,许可证 MIT

它与宿主自带的「对话」「轨迹」并列:轨迹侧重时序,call-map 侧重归因。

核心功能

一页聚合与可缩放画布

所有轮次按时间顺序连续排在同一张画布上,不必按轮次切标签页。

  • 滚轮缩放(30%–240%),按住左键拖拽平移;右下角显示当前比例
  • 进入页签时默认定位到最新一轮,并按画布宽度自适应
  • 右下角 最新 定位最后一轮,全览 把整棵树缩进一屏
  • 单击与拖拽区分:指针移动超过 4px 才进入平移,避免误触卡片

归因树与子代理聚合

树从 提示词 → 思维链 → 技能 / MCP / 派发 展开,并与右侧明细表同源:

节点类型 说明
技能(绿) skill 工具调用,技能名来自 arguments.name;展示加载与命中次数
MCP(琥珀) 工具名形如 mcp__<server>__<tool> 的调用及次数
派发(紫) spawn_teammate / subagent / subagent_fork / workflow / ralph;子代理卡片下可折叠子会话内的技能 / MCP,点击跳转子会话
提示词 / 思维链(蓝 / 紫蓝) 正文中与下层节点同名的词按目标着色,便于肉眼追触发线索

调用明细与未使用清单

右侧表格字段包括:类型、名称·工具、次数、轮次、触发线索、结果。可筛 全部 / 技能 / MCP / 未使用;点行打开宿主原生调用详情。

未使用 筛选列出本会话可用但未调用的技能与 MCP:可用集合来自系统提示词中的 <available_skills> 与会话已暴露的 MCP server,减去实际调用部分。

轨道图

插件另绘输入 / 模型 / 工具三泳道时间条,用于快速定位「哪一段在干什么」。实现与宿主「轨迹」页的原版图表不同,宿主轨迹页本身不受影响。

安装与启用

要求:DSH 已安装并可用。插件注册既有槽位 conversation.view,不改宿主编译产物。

方式一:DSH 内置插件管理器(推荐)

把仓库目录作为本地包安装:

plugin_manager install_bundle  target = <本目录的绝对路径>

安装后刷新页面,会话头部会出现第三个视图标签「调用可视化」(英文界面为 Call map)。

仓库已声明 dsh.bundle manifest,也可被 DSH 的 dsh plugin add 识别(纯 JS,无构建步骤);具体 add 参数以你当前 DSH 与插件管理器文档为准,勿在未核对 manifest 前自行拼接命令。

方式二:手动挂载

  1. 把本目录放到任意位置
  2. 在 profile 目录执行 pnpm add <本目录绝对路径>(或软链进 node_modules/call-map)
  3. 在 profile 的 package.json 的 dsh.profile.bundles 数组里加入 call-map
  4. 重启或刷新

卸载:

plugin_manager remove_bundle  target = call-map

典型用法

经过上面的安装步骤后,可按 README 中的顺序操作:

  1. 打开任意会话,点头部 调用可视化
  2. 画布里滚轮缩放、按住左键拖拽平移
  3. 右下角 最新 回到最新一轮,全览 缩到整张图
  4. 右侧表格点行 → 打开该次调用的宿主原生详情;点子代理卡片 → 跳到对应子会话

数据来源与口径

插件只读当前会话事件窗口,类型包括 user/message、assistant/message、tool/call、tool/result、request/header、turn/start 等,在前端本地完成折叠与渲染。

触发线索是提示词 / 思维链里与调用同名的词面匹配,不是因果证明;文中未出现同名词则不标。

适用场景与注意

适合谁:需要复盘「本会话到底用了哪些技能 / MCP / 子代理、哪些配置了却没用、子代理内部又做了什么」的 DSH 用户与插件作者。

已知限制(摘自 README):

  • 跨会话聚合依赖能拿到子会话 id;spawn_teammate 仅返回队友名时,插件用「工作区会话标题 == 队友名」反查,改名或快照未加载时会显示「会话未加载」
  • 极长会话若早期事件未加载,早期轮次的提示词可能显示为「不在已加载的事件窗口里」
  • 宿主「轨迹」页工具栏无对外插槽,本插件只能作为并列第三个页签,无法嵌入该行

安装前:插件以当前 DSH 进程权限在本地前端运行;安装前请自行查看源码与 MIT 许可证。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

call-map 补的是 DSH 会话观测里「归因」这一层:一页可缩放树、明细表、未使用清单与轨道图,全部来自本地日志。需要进一步了解时可访问 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye