Back to home

yan4342

dsh-session-roots

让一个 DSH 会话同时可写多个项目文件夹。

Stars
0
Language
JavaScript
Created
Aug 15, 2026
Updated
Aug 15, 2026

Introduction

dsh-session-roots

让一个 DSH 会话同时可写多个项目文件夹。项目集由一个工作区文件声明——直接复用 VS Code 的多根工作区格式(*.code-workspace),支持现有 VS Code 工作区文件拿来即用。

特性

  • 多根可写:会话可写文件夹 = 会话目录 + 工作区文件声明的文件夹。fs 工具全平台支持;shell 工具(Windows 上 bash/pwsh)同样支持
  • 侧边栏新增两个入口
    • 从文件打开工作区添加工作区 按钮菜单里选择任意 .code-workspace,其所在目录注册为一个工作区(命名 = 目录名) alt text
    • 将文件夹添加到工作区:工作区行 菜单里把任意文件夹加进工作区 alt text
  • 权限自动跟随:工作区文件增删文件夹、会话结束、卸载插件,shell 写入权限自动同步增删,不留残留

安装

任选一种方式,装完重启 dsh web 并硬刷新浏览器(Ctrl+Shift+R)。安装即用,无需手改任何配置文件。

方式一:git clone + 本地安装(推荐,当前可用)

git clone <仓库地址> dsh-session-roots
dsh plugin --profile web add file:D:/你克隆到的路径/dsh-session-roots

file: 必须写绝对路径(相对路径会被拒绝)。

方式二:GitHub 直接安装(仓库发布后可用)

无需 clone,直接从 GitHub 拉取:

dsh plugin --profile web add https://github.com/yan4342/dsh-session-roots

仓库内即完整源码,无需本地构建(纯 JS,无编译步骤)。

使用

  1. 声明工作区文件:放在会话目录下(优先级从高到低):

    • dsh-workspace.json(也可写成 { "source": "<绝对路径>" } 指向任意位置的 .code-workspace
    • *.code-workspace(VS Code 格式,现有文件直接可用)
    {
      "folders": [
        { "path": "." },
        { "path": "../legado-with-MD3" }
      ]
    }
    

    相对路径按文件所在目录解析(与 VS Code 一致);缺失或非目录的条目自动跳过。改文件即改项目集,可随仓库提交。

  2. 从文件打开工作区:侧边栏"工作区"标题栏点 + → "从文件打开工作区" → 选 .code-workspace → 该文件所在目录注册为一个工作区,命名 = 目录名(如 legado

  3. 将文件夹添加到工作区:工作区行 菜单 → "将文件夹添加到工作区" → 选目录

  4. /workspace 随时查看

卸载

dsh plugin --profile web remove dsh-session-roots

重启 dsh web 生效。写入权限会自动清理;会话目录里的 dsh-workspace.json 不再生效,可自行保留或删除。

常见问题

  • 侧边栏插件列表里出现两个条目? 正常——一个是业务入口,一个是文件系统服务,装好即用,无需分别管理。
  • 从工作区文件删掉文件夹后,shell 还能写它吗? 不会,权限会立即撤销。
  • 进程被强杀(taskkill / 断电)后有权限残留? 极少数情况可能残留,用管理员执行 icacls <目录> /remove:g <SID> 清理(SID 见 icacls <目录> 输出里的 S-1-4-* 条目)。
  • 工作区文件放哪? 会话启动时的目录下。换目录就换项目集。

已知限制

  • shell 多根写入仅 Windows:Linux/macOS 的 shell 仍只认会话目录(fs 工具所有平台支持)
  • "从文件打开工作区"入口定位官方界面文案:官方改版后该入口可能回退为原生行为,不影响其他功能
  • 依赖 DSH 的接口:DSH 大版本升级后可能需要跟进

License

MIT