dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
ComfyUI-style node graph of a DSH Agent preset — shows what the agent is made of and highlights live which node is executing.
把 Agent 预设画成一张 ComfyUI 风格的节点图,并实时高亮这个 Agent 此刻跑在哪一个节点上。
DeepSeek Harness 的「预设」本质上是一份插件清单 —— 它决定了这个 Agent 有哪些工具、装了什么技能、能不能派子 Agent。这份清单平时只能对着 YAML 看。这个插件把它画成图:左边是任务入口,中间是这份预设声明的每一类能力,右边是它们共同构成的 Agent 执行循环。
打开任意一个会话,对话页标签栏会多出第三个标签:对话 | 轨迹 | 节点图。
图从左到右是一条流水线:
任务/会话 → 预设 → [各类能力块] → 当前调用 → Agent 执行循环
顶部实时条给出四件事:正在执行什么 · 跑了多久 · 第几轮 · 当前会话用的是哪份预设。
图上同时有三层信息:
| 层 | 含义 |
|---|---|
| 强高亮 + 呼吸光晕 + 「运行中」徽章 | 此刻正在执行的节点 |
| 流动虚线 | 工作流经的路径(预设 → 所在能力块 → 当前调用 → Agent 循环) |
| 绿色淡高亮 | 本轮已经走过的节点,一条长回合读起来是一条路径 |
工具到节点的对应关系有两级:内置工具走内置映射表(pwsh → tool-pwsh、edit/read → tool-fs…),表外的第三方工具用工具名做模糊匹配(tabbit_browser → dsh-tabbit-xww)。都匹配不上时,高亮落到「当前调用」节点上,实时条照实写工具名 —— 任何工具跑起来,图上一定有东西在亮。
点任意节点,下方展开它的完整信息;点画布空白处收起,把空间还给画布。
详情里除了条目 id、模块、类别、启用条件、运行状态,还会给一行本轮统计:这个节点被调用了几次、累计耗时多少、还有几次在飞行中。
类别标题可以单独折叠,也可以在工具栏一键全部折叠 —— 45 个节点的图收成一张主干大纲:
工具栏:预设 · − · + · 适配 · 定位 · 全部折叠/展开 · 导出 · ☑自动 · 搜索 · 统计
设置 →「预设节点图」是同一个图的静态浏览器,可以逐份查看每个预设的组成,带折叠、搜索和导出。深色浅色都跟随主题。
dsh plugin --profile web add agent-preset-graph-xww
--profile 后面换成你自己的 profile 名(没有多个 profile 时就是 web)。这条命令会把插件写进该 profile 的依赖与 bundle 列表,重启 DSH 后生效。
还没发布到 npm 时,直接指向仓库或本地工作副本:
# 从 GitHub 仓库安装
dsh plugin --profile web add github:laojingwei/agent-preset-graph-xww
# 本地工作副本(改完 client.js 刷新页面即可,不需要重新安装)
dsh plugin --profile web add link:D:/path/to/agent-preset-graph-xww
编辑 profile 目录($DSH_HOME/profiles/<name>/)下的 package.json:
{
"dependencies": {
"agent-preset-graph-xww": "github:laojingwei/agent-preset-graph-xww"
},
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"agent-preset-graph-xww"
]
}
}
}
然后在 profile 目录执行 pnpm install,重启 DSH。
dsh plugin --profile web remove agent-preset-graph-xww
也可以直接从 dependencies 和 dsh.profile.bundles 里删掉这一项,再 pnpm install。
它读什么
| 数据 | 用途 |
|---|---|
remote.pluginInventory.list() | 预设的插件清单,以及这个部署装载的全部插件 |
ctx.sessions(快照 + 事件窗口) | 哪个会话在运行、它用的是哪份预设、正在执行哪个工具 |
ctx.locale | 界面文案与内置预设名 |
它不做什么
index.js)只导出 apply(ctx),本身没有任何行为兼容性
| DeepSeek Harness | ≥ 0.1.7-rc.2(开发与验证所用版本) |
| 平台 | Web(DSH Web GUI) |
| 依赖的客户端服务 | slots、locale、sessions、remote.pluginInventory;缺少任一服务时插件不激活,不会影响 DSH 启动 |
| 需要的配置 | 无 |
支持的安装方式见上一节:profile 为 web。
插件是纯客户端(browser half)的,不依赖任何构建步骤,也不 import 任何 Harness 客户端包。所有数据都来自 DSH 已经暴露的服务:
| 数据 | 来源 |
|---|---|
| 每份预设的插件清单 | ctx.remote.pluginInventory.list() → agentPresets[].rows[] |
| 部署里装载的全部插件 | 同一个调用的 entries[](用来算出「部署级插件」) |
| 当前会话用的是哪份预设 | ctx.sessions.list 快照里的 projectionValues.agentPreset |
| 正在执行什么工具 | ctx.sessions.retain() 拿到的事件窗口(tool/call / tool/result) |
| 文案与预设名 | ctx.locale |
几个实现上的取舍:
@deepseek-ai/ 命名空间下、已启用、且不在当前预设的清单里。DSH 自带的一百多个 entry 因此被排除在外。--dsw-alias-* 主题 token,没有硬编码颜色,因此跟随宿主主题与语言。没有构建步骤,改完 client.js 刷新页面即可(profile 用 link: 安装时)。
node --check client.js # 唯一的检查
client.js —— 全部实现:图构建、布局、实时状态、渲染、导出index.js —— Host 半边,按 DSH Plugin 规范导出 apply(ctx);本插件没有 Host 侧行为cordis.patch.yml —— 把这个 bundle 挂进 Loader