dsh-pkg-atlas:本机 DSH 包依赖图谱

前言

DeepSeek Harness(DSH)把能力拆成大量 @deepseek-ai/* 官方包和第三方插件,profile 里还有 bundle 挂载与 cordis patch。包一多,很难一眼回答:某个工具在生态里属于哪一类、被谁依赖、挂了哪些 bundle,以及哪些 junction 断了链、哪些 semver 区间装不满。

查 package.json 和 patch 文件可以逐条核对,但跨包关系要靠人工拼。下面介绍社区插件 dsh-pkg-atlas(维护者 FlyingBamboo):在本机扫描 DSH_HOME 已安装内容,用独立 HTTP 页面把依赖与挂载关系画成可交互图谱,只读、零运行时依赖,断网也能用。

这是什么

dsh-pkg-atlas 是 DSH 的客户端类插件:安装并重启后,在宿主 Web 端口提供页面 http://127.0.0.1:3080/dsh-pkg-atlas/。数据全部来自本机磁盘(package.json、cordis.patch.yml、目录 junction),不调用宿主内部模块,不 import、不 hook DSH;Node 侧只用标准库,页面侧内置 vendored 的 cytoscape,无 npm install 运行时依赖。

它主要回答三类问题:

  • 某个工具/插件在 DSH 生态里的位置:大类、功能组、被谁依赖、挂了哪些 bundle。
  • 官方 bundle(如 dsh-base)通过 patch 的 name: 行挂载了哪些包(BFS 展开)。
  • 哪些目录是 broken junction(标红)、哪些依赖边版本 unsatisfied(红色边)。

插件当前版本 0.1.0,许可证 MIT(见 GitHub 仓库 LICENSE)。社区目录页:skillhub.cn/plugins/FlyingBamboo/dsh-pkg-atlas;源码:github.com/FlyingBamboo/dsh-pkg-atlas。目录站点为社区生态索引,与 DeepSeek / 幻方无官方从属关系。

核心功能

三层视图与扫描

图谱按 大类区 → 组 → 包 组织:大类覆盖内核·装配、会话·状态、界面、LLM·模型、编排、平台、工具、集成、基础设施,以及插件、profiles、断链、未归类等特殊区;组由 repository.directory 推导;包在组内网格展示。首屏扫描分「目录清单 → manifest 读取 → 组装」三阶段,进度条通过 /api/status 轮询;服务端启动会预热,多数情况下首屏即缓存就绪。

顶栏 组级 | 包级 两态(无「自动」档):组级默认展示区 → 组卡 → 组内包;包级同时展开所有组,并强制打开真实跨包边。滚轮只缩放画面,不改变层级。

聚焦、搜索与过滤

  • 依赖图(聚焦):对包节点双向高亮依赖路径与被依赖路径(琥珀下游、青色上游、洋红双向/成环);非路径元素淡出。入口包括右键「依赖图」、双击包、详情面板路径行、搜索定位、深链 #node=<id> 等。
  • 组聚焦:右键组卡「聚焦邻域(1 跳)」或 #node=g:<组名>,深度恒 1 跳。
  • 搜索:包名或中文描述,回车后在结果中点击可定位并自动展开祖先。
  • 筛选:大类 chips(单击隐藏/双击独显)、官方/第三方、边类型(mount/peer/dep/peer-optional)、profile 挂载面、真实跨包边、深浅主题、中英切换。

交互与详情

  • 冷态左键单击:选中与详情;组级下双击组卡展开/收拢、双击大类标题折叠整区。
  • 空白画布右键:复位视图、退出聚焦、自动排布;手动拖拽位置在切档、筛选、聚焦间保留,「自动排布」清空覆盖并 fit 视野。
  • 悬停 250ms 速览卡;右侧详情面板含依赖路径分层列表、挂载 ↓、外部依赖、README 原文(经只读 API)。

低耦合与安全(使用者相关)

  • 挂载点可选:仅在宿主 webServer 在场时注册路由;peer 标为 optional,拒绝时只记日志。
  • API 仅 GET/HEAD;图数据路径相对化为 $DSH_HOME/...;无写操作、无遥测。
  • 页面挂在宿主 Web 端口,自身无鉴权:若 DSH 配置了远程访问,图谱与 /api/graph 对可达客户端可见,需自行评估暴露面。

已知限制(README 摘要):缓存约 60s TTL + 手动「重扫」;patch name: 为启发式抽取;非 semver 安装描述不做版本判定;第三方插件 bundle 不递归展开;Desktop profile 未验证。

安装与启用

适用于 web profile。安装命令来自仓库 README:

dsh plugin --profile web add FlyingBamboo/dsh-pkg-atlas

也可在 DSH Web GUI「市场」搜索 dsh-pkg-atlas 安装。安装后重启 DSH,浏览器打开:

http://127.0.0.1:3080/dsh-pkg-atlas/

卸载:

dsh plugin --profile web remove dsh-pkg-atlas

重启后建议人工核对 profiles/web/package.json 里 dsh.profile.bundles 是否仍含 dsh-pkg-atlas 残留行。插件无运行时状态,无其它卸载面。

package.json 要求 Node >= 22.6;peer 含 @deepseek-ai/cordis 与可选的 @deepseek-ai/dsh-host-webserver(由宿主 web 环境提供)。

典型用法

  1. 安装并重启后打开上述 URL,等待首屏扫描进度走完。
  2. 默认 组级 浏览:从大类区找到目标组卡,展开查看组内包;需要看跨组真实边时切到 包级。
  3. 在顶栏搜索框输入包名或描述,回车后点击命中项,页面会展开祖先并居中。
  4. 对关心的包:右键 →「依赖图」,或在详情里点某条依赖/被依赖行,查看上下游路径;深度可选 1–3 或不限;Esc 或空白处退出。
  5. 排查异常:图例左下角对照节点形状与边类型;断链区、红色 unsatisfied 边与详情里的 ⚠ 标记对应 README 中的 broken junction / 版本不满足语义。
  6. 外部安装/卸载包后,若视图未更新,使用页面「重扫」或等待约 60s 缓存 TTL。

适用场景与注意

适合:在本机维护 DSH web profile、需要可视化理解官方包与第三方插件依赖/挂载关系;希望离线、只读地审计 profile 与 bundle 挂载,而不改宿主代码。

注意:

  • 插件以当前 DSH 进程权限读取 DSH_HOME;安装前请阅读源码与 MIT 许可证,确认符合你的安全策略。
  • 数据仅反映已安装内容,不含线上 registry 全量目录。
  • 若启用远程访问 DSH Web,请把本页面与图谱 API 视为与宿主同级的暴露面。

结尾

dsh-pkg-atlas 把本机已装包的依赖与挂载收成一张可聚焦、可筛选的图谱,扫描层与渲染层刻意与宿主解耦,便于跟随 DSH 高频迭代。需要安装说明与交互细节时,以 GitHub README 为准;社区条目见 目录页,源码见 FlyingBamboo/dsh-pkg-atlas。

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

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

小夜