联合工作区:将多个目录合并到一个会话中,通过设置面板管理联合工作区,使用 uw_read/uw_write/uw_edit/uw_delete/uw_move 工具读写成员目录文件。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-union-workspace
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:lcgash/dsh-plugin-uw
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
联合工作区插件 — 将多个目录合并到一个会话中,让 AI 助手同时访问所有成员目录。
English | 中文
解决什么问题
做前后端联调的时候,代码通常散落在好几个仓库里——前端、后端、公共类型定义各在各的目录。AI 要完成一次跨端修改,得同时看到并修改所有这些目录的文件。
只挂一个目录,AI 看不到别的仓库,跨端任务根本做不了。挂一个大目录(比如整个主目录)呢,又得承受上下文爆炸的代价:工具扫描和文件检索扩散到无数无关文件里,既浪费 token、又降低回答质量,还给了远超实际需要的目录权限。
联合工作区让你把恰好需要的几个目录合并进一个会话。AI 同时访问所有成员目录,但范围始终精确可控——它只看到你选定的目录,看不到范围外的任何文件。
简介
dsh-plugin-uw(联合工作区插件)允许你在 DSH Web GUI 中将多个目录合并到一个会话中。一个主目录(primary)加一个或多个成员目录(members)组成一个联合工作区(union workspace),AI 助手可以同时访问所有成员目录的文件。
截图
| 会话文件浏览 | 设置页面 |
|---|---|
![]() |
![]() |
功能
联合工作区 — 将两个或更多目录组合到一个会话中,AI 助手可同时访问所有成员目录。
两种权限预设:
预设 说明 workspace-write(默认)主目录和成员目录均可读写删移(通过 uw_write/uw_edit/uw_delete/uw_move工具)danger-full-access所有目录可读写(无限制) 侧边栏集成 — 点击侧边栏底部的 ⛓ 图标打开管理面板。
管理面板 — 侧边栏右侧面板,两个标签页:
- 工作区:创建、删除、修改联合工作区,以及成员目录管理。
- 文件浏览:以树形结构浏览成员目录(懒加载,支持递归展开)。
快速升级 — 已有会话可通过
/uw命令升级为联合工作区,或从会话头部按钮打开创建面板。持久化存储 — 联合工作区定义保存在
~/.dsh/union-workspaces.json,重启后依然有效。自动匹配 — 在侧边栏打开的工作区如果标题匹配某个联合工作区,自动标记为该联合工作区。
成员目录工具 — 注册了
uw_read、uw_write、uw_edit、uw_delete、uw_move五个工具,AI 助手可直接通过成员目录路径读写、删除、移动文件,不受沙箱限制。所有成员目录均可读写、删除、移动。@ 提及 — 聊天框输入
@会自动搜索所有成员目录的文件,方便快速引用。
安装
通过 DSH 插件命令安装
# 从 GitHub 安装
dsh plugin add github:lcgash/dsh-plugin-uw
# 或指定 profile 安装(将 <name> 替换为你的 profile 名称)
dsh plugin --profile <name> add github:lcgash/dsh-plugin-uw
从 npm 安装
# 全局安装
npm install -g dsh-union-workspace
# 或安装到 DSH profile(将 <name> 替换为你的 profile 名称)
dsh plugin --profile <name> add dsh-union-workspace
从源码安装
# 克隆仓库
git clone https://github.com/lcgash/dsh-plugin-uw.git
cd dsh-plugin-uw
# 安装依赖
npm install
# 构建
npm run build
# 安装到 DSH profile(将 <name> 替换为你的 profile 名称)
dsh plugin --profile <name> add link:$(pwd)
安装后,在 cordis.patch.yml 中应包含以下插件行:
- insert:
- id: union-workspace
name: 'dsh-union-workspace'
使用
- 在侧边栏底部点击 ⛓ 图标,或输入
/uw命令。 - 选择创建模式:
- 快速模式:选择多个目录,自动生成名称。
- 自定义模式:设置名称、选择成员目录、选择权限预设。
- 创建成功后,在侧边栏会出现对应的工作区。
- 点击侧边栏的工作区,打开的新会话会自动应用联合工作区。
- 在会话头部右侧点击 ⛓ 按钮,展开成员目录文件列表面板。
- AI 助手可通过
uw_read/uw_write/uw_edit/uw_delete/uw_move工具直接读写、删除、移动成员目录中的文件(标准read/write/edit工具受沙箱限制只能访问主目录)。
开发
# 构建
npm run build
# 类型检查
npm run typecheck
架构
- Host 端(
src/index.ts)— 运行在 DSH Node.js 进程中,持有联合工作区存储(~/.dsh/union-workspaces.json),提供/api/dsh-union-workspace/*路由,并在会话启动时应用权限预设。 - Client 端(
src/client/index.ts)— 运行在 Web GUI 中,注册本地化字典、设置页面、会话头部按钮、/uw命令,并通过 DOM 注入挂载覆盖层和文件面板。 - 路由(
src/routes.ts)— REST API 端点,用于列出、同步、标记和浏览联合工作区。 - 工具(
src/tools.ts)— 注册uw_read、uw_write、uw_edit、uw_delete、uw_move五个模型工具,用于读写、删除、移动成员目录文件,绕过沙箱的单根限制。 - 存储(
src/store.ts)— 基于文件的持久化存储,支持数据清洗和迁移。
License
Apache-2.0
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 32045
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4145
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1131
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 501
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 489
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 446
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。


社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。