DeepSeek Harness (DSH) 的会话元数据(cwd)在创建时即被冻结,这使得在运行时动态切换工作目录变得困难。通常的做法是手动 Fork 会话,但这需要用户在后台执行一系列命令。
dsh-worktree-jump 插件将这一流程封装到了 New-Conversation 界面中。它提供了一个触发器,允许你在选择工作区时直接创建一个 Git Worktree,并将新会话 Fork 到该目录下,从而实现无缝的上下文切换。
插件简介¶
dsh-worktree-jump 是一个 DeepSeek Harness (DSH) 插件。它通过一个触发器,从选定的文件夹创建 Git Worktree,并让对话直接在该 Worktree 中开始。
- 维护者:frederico-kluser
- 分类:工作流
- 许可证:MIT
核心功能¶
- New-Conversation 触发器:在 New-Conversation 界面左侧出现一个芯片(
🌿 New worktree),点击即可创建或选择 Worktree。 - 会话 Fork 机制:利用
meta.cwd覆盖机制,将 Fork 后的会话目录指向新创建的 Worktree,同时保留源会话的上下文。 - 现有 Worktree 支持:除了创建新 Worktree,也可以直接选择已存在的 Worktree 并在其中开始对话。
- 本地化:支持英语(默认)、简体中文和葡萄牙语。
- 零运行时依赖:插件为独立的 ESM 模块,无需额外的运行时库。
- 名称验证:支持 1-64 个字符的文件系统安全名称验证。
- 自动排除:通过
.git/info/exclude自动排除 Worktree 根目录。
安装与启用¶
插件使用 Bundle 安装方式。安装后需要重启 dsh web 才能看到效果。
dsh plugin --profile web add github:frederico-kluser/dsh-worktree-jump
注意:
* 此插件依赖 DSH cordis 版本 >=4.0.0 <5。
* 重要:如果使用 Bundle 安装,不要在配置文件中手动添加 - insert: 行。Bundle 安装和手动 Patch 插入使用的是同一个加载器条目 ID (worktree-jump),同时启用会导致冲突。
* 插件为纯 ESM,无构建依赖。
典型用法¶
在 New-Conversation 界面中,插件会在“选择工作区”选择器的左侧显示一个芯片。
- 点击
🌿 New worktree芯片。 - 在弹出的对话框中输入 Worktree 名称(例如
my-feature)。 - 确认后,会话将在
<repo>/.worktrees/<name>目录下开始。 - 如果你已有现有的 Worktree,对话框中会显示按钮列表,点击即可直接进入该目录,无需创建新目录。
注意事项¶
- 单一激活路径:请勿同时使用 Bundle 安装和手动 Patch 注入。两者都指向
worktree-jump条目,会导致启动时出现duplicate loader entry id错误。 - 会话行为:Fork 操作会保留源会话的完整历史记录(如果是已有会话),或者是作为一个全新的空白会话(如果是空白会话)。原始会话保持不变。
- 文件系统权限:插件以 DSH 进程的权限运行,请确保你有权限在目标仓库目录下执行 Git 命令。
总结¶
dsh-worktree-jump 解决了 DSH 环境下切换开发上下文繁琐的问题。通过将 Worktree 创建与会话 Fork 合并为一步操作,开发者可以在不离开 UI 界面的情况下,快速进入新分支进行开发或测试。