dsh-portable-workspace:把 DSH 会话与工程完整放在移动盘上

前言

在 DeepSeek Harness(DSH)里做智能体开发,会话、插件配置、工程与交付默认大多落在本机 profile 和磁盘路径上。换电脑、重装系统或只在 U 盘里带一份「可继续的对话与代码」,往往需要手工拷贝目录、重配环境,还容易和本机实例混在一起。

dsh-portable-workspace(移动工作区插件)针对的是:在移动硬盘或 U 盘上建立自包含的工作区,由本机已安装的 DSH 拉起独立便携 Web 实例,数据尽量落在盘上;拔盘显示脱机,换一台同样装了本插件的电脑插上即可继续。下面按定位、能力、安装与日常流程说明用法与注意点。

这是什么

  • 名称:dsh-portable-workspace(包名与 bundle 名一致)
  • 维护者:GitHub 用户 Alec6636(package.json 中 author 为 AlecWong)
  • 版本(资料中明确):0.1.5;许可证 MIT
  • 兼容:DeepSeek Harness >=0.2.1-rc.5(README 写明无上限,覆盖其后正式版与预发布版)
  • 一句话:插件装在本机 profile;移动盘上存放 Portable-DSH 根目录与各工作区数据;打开工作区时用本机 DSH CLI 启动带 --patch 的便携实例,使 DSH_HOME、会话、存储、工程目录指向盘上路径。

插件本体按电脑安装;盘上不必预装插件。社区目录页:skillhub 插件页;源码与说明:GitHub 仓库。

核心功能

以下均来自 README / package.json 描述,不写未核实能力。

  1. 盘上自包含:会话(.jsonl.zstd)、storages、工程与交付(Projects/<ws-id>)、便携 profile 与凭据副本(support/home)等按约定目录存放;便携实例以 CLI Web host 方式运行(ELECTRON_RUN_AS_NODE=1),避免 Electron 桌面 userData 落本地。
  2. 多工作区、多实例:每块盘可建多个工作区;每个工作区对应独立 patch 与随机端口 + token 的 Web 窗口,与本机桌面版互不污染。
  3. 盘符无关与脱机:根标记 .dsh-portable.json + 本机索引 ~/.dsh/portable-workspace/roots.json(仅记路径);拔盘后卷进入「脱机」状态。
  4. 安全与找回:工作区可选 scrypt 密码;一次性恢复密钥与密码提示(0.1.4+);有密码时迁移、删除、改密、恢复、添加插件、改名、会话迁移、备份等需验密或先验密再看列表。
  5. 插件清单:打开前可按 workspace.json 检查缺失插件,支持一键安装、短名解析(如 dsh-web-all → @linxin666/dsh-web-all)、engines.dsh 兼容预检(冲突提示但不阻断,由 Loader 裁决);插件装进盘上便携 profile,非从本机复制。
  6. 迁移与备份:工作区可跨盘/迁到本机路径;会话可在移动盘工作区与本机普通 DSH 会话间双向迁移;备份为 Portable-Backups 下 zip(0.1.4+)并保留旧版散目录兼容;支持工作区改名。
  7. 账号同步(可选、单向):「同步本机登录」将本机 .credentials.yaml、.anonymous-user-id 复制到盘上便携 home,不从盘回写本机。
  8. 依赖:插件自称零 DSH 包依赖,用本机 DSH 自带的 CLI、node、pnpm;仅安装 npm 插件时需能访问 npm 官方源。

盘上目录约定

主目录名 Portable-DSH(0.1.1 起);更早盘可为 Protable-DSH,插件两种拼写均识别。

<盘>:\Portable-DSH\
├─ .dsh-portable.json
├─ Portable-Workspaces\<ws-id>\
│  ├─ workspace.json
│  ├─ sessions\
│  ├─ storages\
│  ├─ logs\
│  └─ launch\
├─ Projects\<ws-id>\
└─ support\home\

面板中「初始化这块盘」创建根与子目录;「新建移动工作区」创建工作区,密码可留空。

安装与启用

在每台需要识别、打开移动工作区的电脑上,将插件目录安装进当前 DSH profile(使用仓库目录的绝对路径,且安装后不要移动或删除该目录,否则需重新安装;profile 中以 link: 记录路径)。

plugin_manager  install_bundle  <本目录绝对路径>

安装后侧栏「全局面板」出现「移动工作区」入口。若改了插件 JS,需通过 set_bundle false → true 重载或重启 DSH。

卸载在本机进行,不删盘上数据。README 建议顺序:先「关闭全部便携实例」,再:

plugin_manager  set_bundle    dsh-portable-workspace  enabled=false
plugin_manager  remove_bundle  dsh-portable-workspace

可选删除 ~/.dsh/portable-workspace/roots.json 以清除本机记住的卷路径。

工作原理(打开一次工作区时)

插件生成工作区下的 launch/cordis.patch.yml,并启动独立便携实例,示意命令如下:

DeepSeek Harness.exe --expose-internals <cli.js> portable \
    --patch <工作区>/launch/cordis.patch.yml --port 0 --no-open

patch 将 DSH_HOME 指到 <root>/support/home,并重写会话/存储根、默认工作目录与文档目录到盘上;默认模型 patch 为 deepseek-account / deepseek-flash,可配合「同步本机登录」使用盘上 grant 副本。解锁态仅在 Host 进程内存,登出、重启、拔盘、改盘符后需重新验密。

典型用法

按 README 使用流程归纳可复现步骤:

  1. 初始化 / 扫描:插盘 →「移动工作区」→「重新扫描」;识别后列出工作区,拔盘则进入脱机区。
  2. 打开:输入密码(若已设)→ 处理「缺少插件」对话框(可一键装、含可选、或跳过)→ 浏览器打开便携实例。
  3. 跨电脑:新电脑安装 DSH 与本插件 → 插盘 → 扫描 → 验密 → 打开;缺插件安装到盘上 profile。
  4. 迁移工作区:行内「迁移」→ 选目标盘或本机路径;有密码须填对;插件清单写入新 workspace.json,目标盘 support/home 不随单工作区搬迁(体积变小属设计行为)。
  5. 会话迁移:选来源(当前工作区或本机会话)与目标,可勾选删除源;路径与 jsonl header 中的 cwd 会自动改写。
  6. 备份 / 恢复:设置保留份数与可选「打开时自动备份」;恢复须输入固定确认文案及目标工作区密码(若有);恢复前会自动留覆盖前快照。
  7. 忘记密码:凭创建/改密时一次性展示的恢复密钥重设;重设后旧密钥作废并再发新密钥。

更细的图文步骤见仓库内 docs/移动工作区-图文教程.html(单文件 HTML,双击本地打开)。

DSH 升级时的注意

README 说明:插件本体在本机目录,随 profile 保留,不会随 DSH 升级自动更新插件代码;便携实例每次启动使用本机当前 DSH 的 CLI 与 app.asar 内基础 bundles。升级前建议点「关闭全部便携实例」(会清 roots.json,升级后重新扫描即可);工作区与盘上插件数据不受 DSH 升级删除。

适用场景与注意

适合:需要在 U 盘/移动硬盘上携带完整 DSH 工作区;多机交替使用同一盘;希望与本机桌面 DSH 会话隔离又多开便携 Web 实例的开发者。

务必注意:

  • 插件在本机 DSH 进程权限下运行,安装前应阅读源码与 MIT 许可证,自行评估信任边界。
  • 安装命令是 plugin_manager install_bundle <路径>,不是凭仓库名拼接的其他 market 命令;若通过市场 Discover / 按包名安装,卸载流程仍以 set_bundle / remove_bundle 为准。
  • 本机仅残留 roots.json 等索引,工作区数据在盘上;销毁工作区须用面板「删除」(固定文案 + 密码)或手动删盘上目录,卸载插件不会删盘。
  • 社区目录(如 skillhub)为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-portable-workspace 把「会话 + 插件环境 + 工程交付」收拢到移动盘上的 Portable-DSH 结构,由本机 DSH 按需拉起便携实例,并补齐密码、迁移、备份与插件清单等运维向能力。若要查看分类信息与条目索引,可打开 SkillHub 目录页;开发与 issue 以 GitHub 仓库 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜