dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在侧边栏以自定义分组组织工作目录 - 拖拽变更分组与顺序、组内会话浏览与内容搜索,可一键切回官方工作区列表。
DeepSeek Harness(DSH)Web 客户端插件:在侧边栏工作区位置以自定义分组展示工作目录(原地遮蔽官方浏览区,一键切回官方视图)。
sidebar.workspaces single 槽),原地展示自定义分组树;官方浏览器条目保持注册。视图模式在设置 → 工作区视图中切换(参考「MCP 服务」的设置 section),切换立即生效、无需刷新。sessions.search),结果显示所属工作区与内容片段,点击跳转;当前打开的会话与目录在树中高亮(selected/folderActive)。<DSH home>/workspace-groups.json(尊重 DSH_HOME;默认 ~/.dsh),跨会话、跨重启保留;分组方式/排序/筛选/展开状态持久化到浏览器 localStorage。前置:本机已安装 DSH ≥ 0.2.0-rc.1,插件目录已执行过 pnpm install && pnpm run build。
方式一(CLI,若 dsh 命令可用):
dsh plugin --profile web add link:D:/dsh_space/dsh_plugins/dsh-workspace-group-plugin
方式二(手工,等效):在 ~/.dsh/profiles/web/package.json 中:
dsh.profile.bundles 数组加入 "@local/workspace-group-manager"dependencies 加入 "@local/workspace-group-manager": "link:D:/dsh_space/dsh_plugins/dsh-workspace-group-plugin"然后 pnpm install --dir ~/.dsh/profiles/web,重启 DSH(bundle 名单变更需重启),刷新页面即生效。
pnpm install # esbuild 已加入 allowBuilds;autoInstallPeers=false(peer 仅作引擎声明)
pnpm run typecheck # tsc --noEmit(client TSX,strict)
pnpm test # node --test(store / routes / loopback / group-move)
pnpm run build # esbuild 打包 client → lib/client.js(write:false + Node 落盘)
src/host/*.js)是纯 ESM JS,免构建,改动后重启 DSH 生效;浏览器半边(src/client/*.tsx)改动后 pnpm run build + 刷新页面即生效(bundle 按mtime 换版本,HMR 自动切换)。link: 方式装入 web profile;只有 bundle 名单变更才需要重启 DSH。浏览器半边 src/client(TSX → esbuild → lib/client.js)
index.tsx 注册 locale 词典;按模式遮蔽 sidebar.workspaces / 注册切回哨兵
region.tsx 侧栏分组视图:分组 → 工作目录 → 会话(官方类名 + 官方图标/Menu/Tooltip,
指针拖拽 + dataTransfer 驱动放置,视图选项菜单)
group-move.ts 拖拽移动矩阵(纯函数,可单测)
primitives.ts loader require 访问 ui-primitives(图标/Menu/Tooltip)
face.ts 注入面类型(api / nav / ws 三组动词)
panel.tsx 共享样式与图标基元(history: 独立分组面板,现已并入侧栏视图)
api.ts /workspace-group-manager/* envelope fetch(文档相对路径)
locales.ts zh / en 词典(NS = workspace-group-manager,官方带点键名)
宿主半边 src/host(纯 ESM JS,免构建)
index.js cordis 插件入口(inject: ['webServer'])
routes.js /workspace-group-manager 前缀路由:list/create/rename/delete/
add-members/remove-member/reorder-members/reorder-groups
store.js JSON 存储层:容错加载、进程内队列串行写、temp+rename 原子落盘
loopback.js 回环信任栅栏(socket + Host + sec-fetch-site/Origin)
数据模型(workspace-groups.json):
{ "version": 1, "groups": [ { "id": "uuid", "title": "dsh 插件", "paths": ["D:\\..."], "createdAt": "...", "updatedAt": "..." } ] }
成员按工作区 canonical path 存储(工作区删除重注册后 id 会变,路径稳定);渲染时经全局 useWorkspaces 钩子把路径映射回工作区视图,映射不上的显示为置灰「未注册」行。
YDXeBa_* / bhn1Oq_*)与行结构按 0.1.7-rc.2 硬编码,升级 DSH 需复核。*.bak-<时间戳> 并以空数据启动,区头下方会显示提示。MIT