LoserFox/marisa-distro--plugins-dsh-session-isolate ↗★ 7
dsh-session-isolate
为 DeepSeek Harness 提供基于会话的独立 Git 工作区与分支隔离插件
AI 分析
核心用途是防止多会话并发修改代码时发生冲突。适合在同一个代码库上运行多个独立任务,需要每个会话拥有专属 Git 分支和提交记录的场景。
安裝
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:LoserFox/marisa-distro#4aa96256d0af09fa65e64679a1c7826342e9ded2&path:plugins/dsh-session-isolate說明文件
閱讀完整 README ↗DSH Session Isolate
每个 DSH session 拥有自己的 Git worktree 与独立分支(iso/),
多个 session 并发工作时 git 操作互不干扰:各自的提交落在各自的分支上,
共享工作区(主 checkout)的 index / HEAD / refs / 未提交改动不被任何
session 触碰;主工作区只在用户显式执行 iso_export 合并时被修改。
机制
iso_start:为当前 session 懒创建 worktree(~/.dsh/worktrees/-) 与分支,并把主 checkout 的node_modules等忽略目录 junction 链接过去。- 自动 turn 提交:每个
turn/end后把 worktree 的全部改动提交到本 session 的分支(turn N (session isolation)),形成该 session 独立的 git 记录。 iso_status/iso_commit:查看状态、手动打点。iso_export:把 session 分支--no-ff合并回主 checkout(唯一改动共享 工作区的操作,冲突时用iso_abort_merge回滚)。iso_fork:fork 出一个 cwd 指向该 worktree 的新 session(继承父会话的 对话与工具组合),后续工作完全在新 worktree 中进行。iso_cleanup:删除 worktree(默认保留分支)。
边界
- 仅支持普通 git worktree(submodule/sparse 由 git 自身约束)。
- 不改 session 的 cwd、不动会话日志位置;已有会话的默认文件操作仍在
原工作区,隔离通过工具指引生效;
iso_fork创建的新会话从创建起 完全隔离。 - 依赖目录(node_modules)junction 共享:安装依赖会互相可见,属预期。