🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

自动分区 SakuraCircuit/dsh-auto-workspace

DeepSeek Harness
SakuraCircuit5 天前有提交已提供中文文档扫描:含敏感能力

新建分区免选目录,自动命名并创建文件夹

35.9/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add SakuraCircuit/dsh-auto-workspace
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
静态安装检查有提示项,装前建议看一眼 README
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-auto-workspace(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 19:27:19

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 19 处,展示前 17 条)
  • 执行外部命令固定命令
    lib/index.mjs:133
    child = spawn('powershell.exe', [
  • 读取本地文件
    lib/index.mjs:215
    await access(candidate)
  • 写入本地文件
    lib/index.mjs:260
    await mkdir(container, { recursive: true })
  • 写入本地文件
    lib/index.mjs:262
    await mkdir(directory, { recursive: true })
  • 读取本地文件
    lib/index.mjs:263
    return await realpath(directory)
  • 读取本地文件
    lib/index.mjs:281
    const base = await realpath(container).catch(() => resolve(container))
  • 读取本地文件
    lib/index.mjs:282
    const dir = await realpath(directory).catch(() => null)
  • 删除本地文件递归
    lib/index.mjs:319
    await rm(directory, { recursive: true, force: true })
  • 读取本地文件
    lib/index.mjs:653
    const targetCanonical = await realpath(target.path).catch((error) => {
  • 读取本地文件
    lib/index.mjs:671
    bytes = await readFile(sourcePath)
  • 写入本地文件
    lib/index.mjs:712
    await mkdir(targetProjectDir, { recursive: true })
  • 写入本地文件
    lib/index.mjs:713
    await writeFile(tmpPath, output)
  • 写入本地文件
    lib/index.mjs:714
    await mkdir(targetDir, { recursive: true })
  • 写入本地文件
    lib/index.mjs:715
    await rename(tmpPath, finalPath)
  • 删除本地文件
    lib/index.mjs:717
    await unlink(tmpPath).catch(() => {})
  • 删除本地文件递归
    lib/index.mjs:725
    await rm(oldDir, { recursive: true, force: true })
  • 删除本地文件
    lib/index.mjs:727
    if (entries.length === 0) await rmdir(oldProjectDir).catch(() => {})
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-session-format@deepseek-ai/dsh-typert-protocol@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件:新建分区时跳过目录选择,自动创建新分区;分区名,分区默认目录均可在插件后台自定义,分区内对话可自由切换其他分区内。

README

由 DeepSeek 最新模型翻译生成
dsh-auto-workspace DSH(DeepSeek Harness)插件:新建工作区时跳过文件夹选择对话框,自动分配并创建新分区。 点「新建分区」(或 Ctrl+O / Cmd+O)后不再弹出任何选择器,直接在「文档」下依次创建: <文档>\deepseek-harness\default-workspace <文档>\deepseek-harness\default-workspace-2 <文档>\deepseek-harness\default-workspace-3 … 每次点击都会产生一个真正的新分区(命名探测到第一个不存在的编号即创建)。 官方「添加工作区」的固有流程会在创建分区后自动在其中新建一个会话,所以你会看到「新分区 + 其中一个新的对话」同时出现——这是官方行为,不是 bug。 分区名可自定义(插件后台) 打开 DSH 插件管理页(插件 → dsh-auto-workspace → 配置),在卡片里修改「目录名前缀」并点保存: - 默认 default-workspace:第一个分区 default-workspace,其后 -2、-3… - 改成 my-proj:第一个分区 my-proj,其后 my-proj-2、my-proj-3…
展开完整文档(README 剩余 1 节)
dsh-auto-workspace

DSH(DeepSeek Harness)插件:新建工作区时跳过文件夹选择对话框,自动分配并创建新分区。

点「新建分区」(或 Ctrl+O / Cmd+O)后不再弹出任何选择器,直接在「文档」下依次创建:

<文档>\deepseek-harness\default-workspace <文档>\deepseek-harness\default-workspace-2 <文档>\deepseek-harness\default-workspace-3 …

每次点击都会产生一个真正的新分区(命名探测到第一个不存在的编号即创建)。
官方「添加工作区」的固有流程会在创建分区后自动在其中新建一个会话,所以你会看到「新分区 + 其中一个新的对话」同时出现——这是官方行为,不是 bug。

分区名可自定义(插件后台)

打开 DSH 插件管理页(插件 → dsh-auto-workspace → 配置),在卡片里修改「目录名前缀」并点保存:

- 默认 default-workspace:第一个分区 default-workspace,其后 -2、-3…
- 改成 my-proj:第一个分区 my-proj,其后 my-proj-2、my-proj-3…
- 保存后立即生效(下一次新建分区用新名字),并持久化到 profile 的 cordis.patch.yml(entry id auto-workspace 的 workspaceName 键)。
- 改名只影响之后新建的分区;已有分区不受影响。删除「旧名字」分区时目录清理仍正常工作(同一进程内的历史名字都被记录);跨重启后残留的旧名字目录不会被自动清理(等价于官方行为,需要时可手动删除)。
- 与 dsh-unrestricted 的设置面板同一套官方机制(settings 命名空间 + loader/volatile-update 热更新),无需重启 Harness。

分区存放位置可自定义(插件后台)

同一张配置卡片里的「分区存放位置(容器目录)」输入框控制自动分配到哪里:

- 留空:默认在「文档」目录下的 deepseek-harness (C:\Users\<你>\Documents\deepseek-harness),与旧行为一致。
- 填绝对路径(如 D:\DSH-Workspaces):之后新建的分区都分配在这个文件夹之下(D:\DSH-Workspaces\default-workspace、-2…)。
- 保存后立即生效(下一次新建分区就用新位置),持久化到 cordis.patch.yml 的 workspaceDir 键;无需重启 Harness。
- 只影响之后新建的分区:已有的分区留在原处不受影响。删除分区时「连文件夹一起删」的安全网会跟随当前容器目录,旧位置的分区不会被误删。
- 优先级:面板配置 > 环境变量 DSH_AUTO_WORKSPACE_DIR > 文档目录默认值。
- 非绝对路径会被忽略(host 端日志会提示并回退默认链)。

删除分区 = 连磁盘文件夹一起删

官方「删除分区」只移除注册、保留磁盘文件夹和会话日志。本插件改变了这一点:

- 删除分区时,其磁盘文件夹(及里面全部文件、会话日志)会被一并永久删除。
- 删除确认弹窗已被替换为醒目警告文案(明确写明文件夹会被永久删除、无法恢复)。
- 安全网:只有容器目录(面板配置的位置、<文档>\deepseek-harness,或 DSH_AUTO_WORKSPACE_DIR)之下的 default-workspace / default-workspace-N 会被删除;你手动注册的其他任意目录(例如桌面上的项目文件夹)删除分区时 永远不会被触碰。
- 编号回收因此变得更直接:删除分区后目录也消失,下次新建必然拿回最小空闲编号。

移动旧会话到新分区

侧边栏里每个会话的「…」菜单多了一项 「移动到另一分区…」(排在「复制会话 ID」之后):

- 点击后弹出目标分区列表(自动排除会话当前所在的分区),选中目标点「移动」即可。
- 移动会:①重写该会话日志的 header cwd 指向目标分区;②把日志文件搬运到目标分区对应的存储目录;③同步更新分区记账(旧分区 detach、目标分区置顶)。
- 移动后该对话在侧边栏立即归属目标分区(分区列表实时刷新,无需重启)。
- 只能移动「冷」会话:当前打开、或还有运行中任务(turn / 子代理 / 后台任务 / 计划)的会话会被拒绝(弹窗提示错误码与原因)。
- 仅支持当前代 zstd 日志(session.v4.jsonl.zstd);旧格式会话不移动、原文件不动。移动成功后旧会话目录整体移除(若其中还有旧代文件会一并删除)。目标分区若已存在同名会话目录,移动会被拒绝。
- 只移动日志本身:分区目录里的工作文件(你放进去的项目内容)留在原处,不会被搬走或删除。

安装

一键安装

Windows(PowerShell / CMD):

irm https://raw.githubusercontent.com/Feiyuwan09/dsh-auto-workspace/main/install.ps1 | iex

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/Feiyuwan09/dsh-auto-workspace/main/install.sh | bash

或克隆仓库后本地运行:

.\install.ps1 # Windows(install.bat 是它的薄包装,双击即可)

./install.sh # macOS / Linux

脚本会完成全部步骤:定位 profile → 备份 package.json → 拷贝插件到 ~/.dsh/plugins/dsh-auto-workspace → 注册 dependencies 与 bundles → 运行包管理器链接依赖。只重启 Harness 即可使用。 修改前会生成 package.json.bak-auto-workspace-<时间戳> 备份,重复运行安全(覆盖更新、跳过重复注册)。

- 多个 profile 时显式指定:.\install.ps1 desktop / .\install.ps1 C:\path\to\profile
- 依赖需要 pnpm / corepack / npm 其中之一(按此顺序探测);macOS / Linux 修改 package.json 还依赖 jq。

手动安装

1. 把本目录放到你的插件目录(通常 ~/.dsh/plugins/dsh-auto-workspace)
2. 在 profile 的 package.json 的 dependencies 里加入: "dsh-auto-workspace": "file:../../plugins/dsh-auto-workspace"

3. 在 profile 的 dsh.profile.bundles 里加入 "dsh-auto-workspace"
4. 安装依赖(让 profile 的 node_modules 出现该包;DSH 启动时从那里解析插件)
5. 重启 Harness

插件同时带有 dsh.bundle.patch(cordis.patch.yml):它会禁用第一方的 directory-picker 行并插入本插件。如果 profile 的 package.json 未把本插件加入 bundles 列表,该 patch 不会生效。

工作原理

- Host 半边(lib/index.mjs):提供替代的 ctx.directoryPicker 服务,
capability() 返回 { kind: "native", pick };pick() 不弹任何系统对话框,
在容器目录下分配一个尚不存在的 <workspaceName>[-N] 目录名,创建后返回其规范化路径。分配过程串行化,并发点击也不会拿到同名目录。
同时包装 workspaceRegistry.delete:注册删除成功后,把该分区自己的容器目录物理删除(清理任务与分配链串行,避免竞态)。
分区名前缀来自 settings 命名空间 auto-workspace 的 workspaceName (Config schema + loader/volatile-update 热更新)。
另外注册 autoWorkspaceSessionMove Remote 服务(wire namespace autoWorkspace,方法 move / listWorkspaces):手写 typert Remote 方法描述符(与 @Remote 标记同构),用官方同款 zstd 帧扫描器解析 session.v4.jsonl.zstd、只重写 header 帧的 cwd 并把事件帧逐字节搬走,原子落盘后再同步分区记账(detach 旧分区 / attach 目标分区)。
- Client 半边(lib/client.js):向两个 directory-flow 槽位(conversation.hero.workspace.directoryFlow、sidebar.workspaces.directoryFlow)注册渲染为空的占位者;open 上升沿触发一次 pick() → onPicked(path),由第一方 WorkspacePicker 走 workspaces.create({path}) 完成注册,随后官方流程会在新分区里开一个新会话。另外直接改写官方 workspace 字典的 delete.* 词条,把删除确认弹窗换成「文件夹将被永久删除」的醒目警告。
还通过 plugins.bundle.config 槽位注册插件管理页的「分区名前缀」配置卡片(configForms 写入 settings,与 dsh-unrestricted 同款模式)。
会话「…」菜单里的「移动到另一分区…」(order 460)与 shell.overlay 目标选择对话框也由这半边提供,经 connection.rpc.call("/api", "autoWorkspace/move", …) 直连 host 服务。

第一方链路保持不变:uiWorkspace.pickDirectory() → Typert Remote
directoryPicker/pick → DirectoryPickerController → 本插件的 directoryPicker。

配置

| 配置项 | 说明 |
| 插件管理页 → 配置卡片 | 修改分区目录名前缀(workspaceName)与分区存放位置(workspaceDir),保存即热更新并持久化 |
| DSH_AUTO_WORKSPACE_DIR | 环境变量:指定分区容器目录(绝对路径);面板配置优先于它,两者都不设置时用「文档」目录下的 deepseek-harness |
| DSH_AUTO_WORKSPACE_DISABLED | 环境变量:设为 1 时禁用本插件(host 半边不注册替代服务) |

卸载

1. 从 profile package.json 的 dependencies 和 dsh.profile.bundles 中移除本包
2. 重新安装依赖
3. 删除插件目录
4. 重启 Harness(第一方 directory-picker 恢复弹窗行为)

许可

MIT
预览分享卡片长什么样 ↓SakuraCircuit/dsh-auto-workspace
分享 · DeepSeek Harness Hub
SakuraCircuit/dsh-auto-workspace

新建分区免选目录,自动命名并创建文件夹

这是你的仓库?认领条目

回到顶部