为 DSH Web UI 增加按 Git Worktree 组织 Session 的视角,同时继续由 DSH 管理原始 Project 和 Session 数据。
安装
# npm 包(预构建)
dsh plugin --profile web add @cerbur/clutch-dsh-worktree
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Cerbur/clutch-dsh#path:/packages/clutch-dsh-worktree
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
@cerbur/clutch-dsh-worktree
@cerbur/clutch-dsh-worktree 为 DSH Web UI 增加 Git Worktree 视图,按 Workspace → Worktree
→ Session 组织会话,同时保留 DSH 对 Workspace 身份、Session 元数据、原生列表、消息和会话
历史的事实来源地位。
插件只在自己的 sidecar 中保存 Worktree 关系、获取事实、共享 Worktree 指令以及 Workspace 根目录的 Main 指令。受管理的 Worktree 提供可选择本地 branch 基线的只读 Git 与变更 Dashboard,Main 提供 Workspace 根目录 HEAD history; 不会复制 transcript 或改写 DSH Session。
预览: Worktree Dashboard 是仅 plugin 提供的早期 MVP 预览版。Worktree 导航、生命周期操作、 Session 操作、Worktree/Main 指令以及受管理 Worktree 或 Main 的 Git 与变更视图已经连接。派生 Worktree、设置和 其他未完成操作仍标记为即将推出。
安装
向运行中的 DSH 安装插件后,请重启 DSH Desktop,或重启 DSH Web 服务后刷新页面,以加载 插件 Host。如果 Client 已加载而 Host 尚未挂载,原生 toast 会在每次 Client 加载期间提醒 一次。网络故障和 Workspace 错误不会触发重启提示。
从 npm 安装
在已安装 DSH CLI 的环境中:
dsh plugin --profile web add @cerbur/clutch-dsh-worktree
dsh web
如果使用 DeepSeek Harness 源码 checkout 且没有独立的 dsh 命令,可使用等价的
pnpm dsh 形式。
从本地 checkout 安装
先构建本 package 和 DSH 源码 checkout,再用绝对路径添加 package:
cd /absolute/path/to/clutch-dsh
pnpm install
pnpm --filter @cerbur/clutch-dsh-worktree build
cd /absolute/path/to/deepseek-harness
pnpm install
pnpm run build
pnpm dsh plugin --profile web add /absolute/path/to/clutch-dsh/packages/clutch-dsh-worktree
pnpm dsh web
DSH Web profile 必须已经能够正常启动。修改 package.json 或 cordis.patch.yml 后,需要重新
执行绝对路径安装命令。
从 GitHub 源码安装(可选)
DSH plugin market 使用的源码依赖形式也可以直接安装:
dsh plugin --profile web add "github:Cerbur/clutch-dsh#path:/packages/clutch-dsh-worktree"
该方式会在安装时构建 package。pnpm 构建脚本授权和本地开发细节见 docs/DEVELOPMENT.md。
功能
| 功能 | 预览 | 作用 |
|---|---|---|
| Worktree 导航 | 在 DSH 原生 Sidebar 中增加 Worktree 模式。macOS desktop 下,面板共享 DSH 原生玻璃材质,避免叠加第二层底色或透出重复导航。其他平台保留主题底色;降低透明度时使用更强的底色。Workspace 展开与新 Session 行使用原生节奏的淡入和位移动画。每个 Workspace 下可以浏览 Local/Main 和 Git Worktree,再打开对应行绑定的 Session。 | |
| 创建和导入 Worktree | 从本地 branch 创建 Worktree,或原地登记已有的 branch-attached Worktree。导入不会移动、复制或编辑已有目录。 | |
| Worktree Dashboard | 预览版 Dashboard 显示 Worktree 身份、路径、Session、Worktree/Main 指令、已连接操作、由 Host 提供的在应用中打开入口,以及受管理 Worktree 或 Main 的只读 Git 与变更视图。派生 Worktree、设置和其他未完成卡片仍标记为即将推出。 |
使用
打开 Worktree 模式
- 启动 DSH Web,在 DSH Sidebar 底部选择 Worktree。
- 在 Worktree 树中搜索或展开 Workspace。
- 选择 Local/Main 或某个 Worktree 浏览其 Session。这个视角是附加的,DSH 原生的 Workspace 和 Session 导航仍然可用。每组初始显示五行,可使用展开更多和收起查看其余内容。
- 使用 header 中的 Collapse All 折叠其他无关的 Workspace 和 Worktree,当前 Session 所在的 Workspace 与 Worktree 保持展开。
收起原生 Sidebar 时,Web 和 desktop 的 Worktree 面板都会同步隐藏。macOS desktop 不保留 收起后的窄栏,请使用原生标题栏控件重新展开。行动画遵循减少动态效果偏好,并在搜索、 拖拽和首次加载时直接完成布局。 Web 的 Worktree 导航从原生 DSH 品牌栏下方开始,保留可见且可点击的 Sidebar 按钮; 新会话按钮显示快捷键时也不会遮挡顶部栏。
创建 Worktree
- 打开 Local/Main 或 active Worktree 的选项菜单,选择 Create Worktree。
- 选择本地 base branch,也可以填写新的 branch 名称。
- 确认弹窗。插件会创建 Git Worktree,记录获取事实;从该 Worktree 打开 Session 时继续执行 正常的 Session 和 binding 流程。
Git repository、本地 branch 和 initial commit 必须可用。如果仓库尚未准备好,DSH 会显示对应 的 readiness 提示和可复制的 setup 指引。
导入已有 Worktree
- 选择 Workspace,打开它的
+操作,然后切换到 Import。 - 从 branch 和 path 列表中选择候选项。
- 选择 Import Worktree。插件会原地登记已有目录,不移动、复制或修改其中的文件,随后 使用与新建 Worktree 相同的 Session 流程。
第一版只列出尚未被插件管理、状态 ready、绑定 branch 且不是 repository root 的 Git Worktree。 Detached、bare、prunable、缺失或无效条目会被省略。导入的 Worktree 仍可在选择本地基线 branch 后 使用 Git 与变更。
创建并打开 Session
- 在 Local/Main 上使用 +,创建运行目录为 Workspace root 的普通 DSH Session。
- 在 Worktree 上使用 +,创建运行目录为该 Worktree 的 Session。
- 如果存在完全匹配目标目录的未归档空白 Session,插件会尽量复用它。
- 可以使用 Session list、Worktree Session 菜单或 conversation 中的 DSH 原生 fork 操作。 Worktree-bound Session 的 child 会绑定到同一个 Worktree,并在该视角打开。
如果 DSH 已创建 Session 但 binding 失败,Session 会被保留。Worktree 视图会提供重试或直接打开 的恢复操作;插件不会删除或改写 DSH Session。
打开 Worktree Dashboard
可以从 Local/Main 或 Worktree 行菜单、悬浮操作,或 Session 标题行原生操作旁边的 Dashboard 图标打开。Sidebar 收起时,标题行图标也可单击打开 Dashboard,不需要展开 Sidebar。 如果目标仍在加载,请求会保持,并在主区域显示加载状态或可重试错误。 Dashboard 是与原生 Session 内容平级的页面,显示在 Sidebar 旁边的主区域;对于绑定 Session 的目标,会保留已经打开的右侧栏。初始 Session list 处于 pending 时,Dashboard 会等待它变为 ready;如果 当前 Session 已属于目标 Worktree,就保持当前 Session;否则切换到目标 Worktree 保留顺序中排在最前的 Session,让两侧视图保持一致。ready 的空 Session list 会打开不绑定当前 Session 的 page-level Dashboard;因为没有目标 Session, 它会收起当前打开的原生右侧栏,也不会自动创建 Session。只要当前 Session 可以承载右侧栏且右侧栏处于收起状态, Dashboard 右上角会保留原生的右侧栏按钮;右侧栏打开后,该按钮按原生行为自动隐藏。
顶部栏显示 {workspace}/{worktreeName},集中放置 Open in ...、Back to session (或 New Session)和右侧工具栏按钮,页面滚动时保持可见。 macOS desktop 下可拖动顶部栏空白区域移动窗口;左侧 Sidebar 收起时, 红绿灯旁显示 DSH 原生展开按钮。Windows 保留原生窗口标题栏。
使用 Back to session、Escape、Sidebar 中的 Session 或退出 Worktree 模式关闭它。没有 Session 的 Worktree 中,右上角操作会变为 New Session,直接在该 Worktree 中新建会话。当前 MVP 已连接的操作 包括查看 Overview 和 Sessions、新建 Session 或 Worktree、归档 Worktree、编辑指令、复制路径、在 VS Code 中打开记录的目录以及查看 Git 与变更。派生 Worktree、设置和其他标记的快捷操作仍是占位内容。VS Code 必须安装在浏览器所在机器上且能够访问记录的路径;链接不会验证应用是否成功启动。
在应用中打开记录的目录
Dashboard 的 Open in ... 分割按钮保留插件自己的按钮 UI,但只调用 DSH 官方 Host 路由:
GET /open-in-app/apps探测可用应用;GET /open-in-app/icon/<appId>获取应用图标;POST /open-in-app/open使用{ "app": string, "path": absoluteDirectoryPath }启动应用。
按钮使用指向当前 DSH Host 的相对 URL,并传入 Dashboard record 的 absolutePath;不会探测操作系统,
也不会持久化应用选择。应用选择只在当前页面内记忆,刷新后使用第一个可用应用。如果没有可用应用
或 Host 请求失败,按钮仍保留现有的 VS Code 协议链接 fallback。
使用 Git 与变更
从受管理 Worktree 或 Main Dashboard 打开 Git 与变更 Tab。Main 直接读取当前 Workspace 根目录 HEAD 的
commit history;当根目录存在 tracked、staged、unstaged 或 untracked 改动时,顶部会加入未提交的改动 entry。
默认最多展示 200 个已提交 commit,选中第一个可见目标,并对工作区目标和已提交 history 使用相同的变更文件与 Diff 面板。对于持久化 baseBranch 存在且不同于当前
branch,或带有作为隐式基线的获取 commit 的 managed Worktree,Overview 会通过现有 /api Connection
做一次轻量、按需的 Git 状态读取,分别展示 ahead/behind commit 数量、已提交(基线到 HEAD)和未提交
(当前工作区)的文件行数。这是临时 projection,不是 watcher,也不会写入 Worktree 记录。Main 没有 Worktree 基线
比较,因此 Overview 对 ahead/behind 事实仍显示 待接入,但 Git Tab 可以展示 Main history。不可用或未选择基线的
managed 视图会诚实显示 待接入。打开 Overview 不会加载 branch 列表;
第一次进入 Git Tab 时才加载本地 branch,并在基线解析后加载 commit history。要替换基线,可以点击
Base fact 旁的铅笔图标打开 branch 选择器:搜索框固定在选择器顶部,下方是有固定高度的 branch 列表
(默认展示约七条),超出部分在列表内滚动,因此过滤 branch 时整个弹窗尺寸保持不变。选择除当前
Worktree branch 之外的任一本地 branch,再保存。
保存会替换 plugin sidecar 中持久化的 baseBranch;下次打开 Git Tab 时,选择器会以保存后的值作为默认值。
Git Tab 打开后,直接修改其中的选择器仍只是临时查看选择,会重新加载 history、changed files 和 Diff,
不会再次写入 Worktree 记录。如果不存在可用的已保存基线(缺失或等于当前 Worktree branch),Git Tab
和 Overview 会改用 Worktree 不可变的获取 commit 读取,并将该解析出的 commit 显示为 Base fact;只有
既无可用已保存基线、也无获取 commit 的 Worktree 才会保持未选择状态并提示用户选择。当所选 branch
已分叉时,Git 会解析两个 branch head 的共同先祖;
Worktree 在共同先祖之后的 commit 计为 +N 领先,base branch 在共同先祖之后的 commit 计为 -N 落后,
history 和文件读取仍然可用。如果两个 head 没有共同先祖,则基线汇总退化为 base branch head 与
Worktree HEAD 之间的完整 tree diff,history 展示 Worktree 相对 base head 独有的 commit。
在有效的 managed Worktree 基线加载后,Git 与变更 Tab 初始会选择基线汇总,而不是第一个 commit;切换基线 branch
也会回到该汇总。需要更窄的查看范围时,再选择 commit 或未提交的改动。Main 跳过这个仅用于比较的汇总,但使用相同的已提交 history 与多选行为;Workspace 根目录有改动时也展示实时工作区目标。
选择未提交的改动会比较当前 Workspace 根目录与 HEAD,不会创建基线或写入 Git 状态。
所选 branch 每次读取都会重新解析。浏览器只能选择普通的本地 branch 名,不能直接选择 commit SHA 或
任意 Git ref:完整 ref 路径、tag 或 remote-tracking ref 会被直接拒绝,而已选 branch 不复存在时会显示
诚实的不可用状态,而不是泛化的 Git 失败。baseCommit 是不可变的获取元数据,永远不能由用户直接选择,
并在没有可用已保存 branch 基线时作为隐式基线;创建恢复也绝不会改写它。当 managed Worktree 或 Main Workspace 根目录存在 staged、unstaged 或 untracked 文件时,列表顶部会加入未提交的改动;
选择它会将对应的当前工作区与 HEAD 比较,并使用相同的变更文件和 Diff 视图。
基线汇总是一个独立的目标,默认展示从所选 branch 与 Worktree HEAD 的共同先祖到本次请求
捕获的 HEAD 的净已提交树差异(无共同先祖时改用两个 branch head);不包含工作区未提交改动。
打开 包含工作区改动 后,该目标会改为展示从同一比较边界到当前工作区的一次净差异,其中包含已提交、
staged、unstaged、untracked、删除和重命名改动。这是按需读取的新鲜 projection,而不是简单拼接两段
Diff。点击 commit 会展示该 commit 自己的 Diff;对于 managed Worktree 和 Main,打开提交栏标题中的多选提交开关后,可以同时选择
多个已提交行,查看这些 commit 各自 first-parent delta 的精确并集。Main 不提供基线汇总或工作区包含开关;该开关默认关闭,关闭时会把已选
集合收敛回当前聚焦的 commit。变更文件会记录贡献它的
commit;每个所选 commit 会作为独立 Diff segment 展示,不会隐式扩展成范围,也不会包含未选择的
commit。变更文件栏标题会展示当前目标(基线汇总、所选 commit 或未提交改动)对应的绿色 +N 和红色
-N 总行数;仅包含 binary 时显示未知。未提交改动 entry 与已提交的多选互斥。汇总 Diff 工具栏中的
在侧栏打开会使用当前 Session 在原生右侧栏中显示当前文件,但前提是该 Session 属于 Dashboard
对应的 Worktree。空 Worktree 或无关的当前 Session 不会通过此操作打开文件。
managed Worktree 和 Main history 都最多展示 200 个 commit,更多内容会标记为 truncated;超过 Git adapter 输出上限的变更文件列表
也会显式标记为 truncated,而不是报泛化错误。commit 详情使用 first-parent 比较,root
commit 与空 tree 比较,rename/copy 行保留两个路径;binary 或过大的 diff 会显示明确的安全状态。变更
文件行会用绿色 +N 表示新增、红色 -N 表示删除;binary 文件不显示这些数量。文件名会用绿色表示新增、红色表示删除、蓝色表示其他变更,每一行的标题与无障碍标签也会写出对应状态。文件夹 icon 会直接表示文件夹当前是展开还是折叠。
未提交的改动是按需读取的临时快照,不会持久化,也不会持续监视 Git;刷新后才能看到后续编辑。
Git 与变更使用受页面 viewport 限制的固定尺寸布局。宽度足够时是两列:提交与变更文件上下排列在较窄 的左列,中间是可拖动的分割线,Diff 占满右列高度。宽度不足时保持两行:第一行左右排布提交和变更 文件,第二行展示汇总 Diff。两种布局下两条分割线都可以拖动:左右分割线调整两列的宽度,或在第一行 内调整提交与变更文件的宽度;上下分割线调整提交与变更文件面板的高度,或调整第一行与 Diff 的高度。 拖动分割线,或聚焦后按方向键即可移动,双击恢复默认比例。较长的 commit list 和变更文件 list 会在 各自栏内滚动,不会继续撑大 Dashboard。变更文件栏在路径宽于栏位时也允许横向滚动,文件和文件夹 名称不会被省略。变更文件按文件夹分组,文件夹默认展开,并且可以独立展开或折叠。Diff 内容也会在 固定尺寸的 Diff 栏内滚动;只读选择和刷新行为保持不变。
视图是只读的,不提供 commit 或 staging 控件。managed Worktree 会依据所选 branch 到 HEAD 的 projection 验证
commit;Main 会依据有界的 HEAD history projection 验证 commit。插件随后依据最新状态重新读取和授权工作区 path,因此这些 endpoint 不是通用 Git object 或文件读取器。
刷新会在替换数据加载期间保留 ready 内容;旧 commit 或文件选择的迟到响应会被忽略。
添加 Worktree 或 Main 指令
在 Dashboard 的指令卡片上使用 Edit 为选中的 Worktree 或 Main Workspace 保存或清空共享指引,长度上限为 32,000 个
UTF-16 代码单元。下一次模型请求会通过 DSH pre-step hook 收到独立的 <system-reminder> 上下文条目,
包括在 Main 中运行的未绑定 Session。
指令保存在 plugin 自己的数据中,不会写入项目目录或 AGENTS.md。清空、解绑、清理或移出管理后,后续请求不再注入;
归档会保留 active binding,因此 Worktree 指令仍然生效。指令消息仍可见时,不变的指令不会重复追加。
归档或移除 Worktree
- Archive Worktree 是非破坏性操作,会保留目录、binding、指令和运行时 Worktree 上下文。 Git 登记仍完整时,可以取消归档。
- Clean Up Disk 是单独的操作,需要二次确认,并执行普通的非强制
git worktree remove。 插件不会检查 Session 或子代理是否仍在使用该目录;确认前请先停止这些任务。清理成功后 binding 会 detached,记录会保留到之后显式移出管理。 - Remove from Management 只删除 plugin 的 Worktree 和 binding 记录,会保留磁盘文件和原生 DSH Session,也不要求检查 Session 活动状态。
要求
| 组件 | 要求 |
|---|---|
| DSH Client | >=0.2.0-rc.1,需要 Session/Workspace Controller 和 Client Store |
| DSH Host | >=0.2.0-rc.1,需要 Typert Gateway /api connection 和 subprocess capability |
| Git | >=2.20.0,必须已安装且可在 PATH 中使用 |
| Node.js | 插件自身要求 >=20.0.0;DSH dsh-v0.2.0-rc.1 要求 `^22.19.0 |
| Host filesystem | 支持使用普通 Windows 和 macOS 本地路径保存 sidecar 与 Git Worktree 数据;网络、特殊或别名路径较多的文件系统可能不支持持久化同步或身份校验。 |
行为与限制
- DSH 拥有 Workspace 身份与根目录、Session 身份与元数据、原生列表、消息、prompt、transcript 和历史。插件不会复制或改写这些数据。
- 插件外部索引保存 Worktree 路径、branch、来源、生命周期状态、binding、排序、指令、获取事实
及相关元数据。对于受管理 Worktree,Dashboard Base fact 是持久化的
baseBranch;用户可以将其 替换为除当前 Worktree branch 之外的本地 branch,保存后的值会成为 Git Tab 选择器的默认值。 不可变的获取baseCommit与它分开保存,不会因该编辑被重写。索引位于 DSH host 的 plugin data directory,不写入项目目录或 DSH raw data,也不保存 Session 内容或 Workspace 根目录副本。 - runtime
cwd在每次执行时派生。无 binding、Main 或 detached binding 使用 Workspace root; active Worktree binding 使用 Worktree path。cwd 不会持久化写回 DSH Session metadata。 - 一个 Session 最多有一个 active Worktree binding,一个 Worktree 可以有多个 Session。移除或 清理 Worktree 不会删除 DSH Session。失效的 active binding 会显示 repair 状态,不会静默切换到 另一个 Worktree。
- Git 会在相关刷新、相关菜单打开和进入 Git Dashboard 时读取,插件不会持续监视 Git。外部切换 branch 会显示 branch drift;清理磁盘前必须显式执行 Adopt current branch。Detached HEAD 和 recovery-needed 状态会保持可见并支持重试。
- Worktree 健康状态通过 branch icon 的颜色显示:ready 使用 success(绿色)状态色,branch drift 使用警告色,repair/recovery-needed 使用错误色。即使 hover 时 icon 被 disclosure control 替换,本地化健康状态标签仍可供辅助技术读取。
- 新创建或新导入的 Worktree 会插入所属 Workspace 的 Worktree 列表队头;已有 Worktree 顺序保持不变,Main 固定在第一位。
- 将 Workspace、Main 和 Worktree 的展开选择保存到浏览器本地存储;Session 五行溢出展开保持临时状态,并在刷新或父级折叠后重置。Collapse All 会折叠其他无关节点并保留当前 Session 所在的 Workspace 与 Worktree 展开。
- 当前 Session 不在可见树中时,会高亮匹配行并临时展开定位;如果行已在可见区域内,不会移动导航滚动位置,否则只移动足够显示它的位置。且不改变已保存的展开选择。
- Git Dashboard 的读取由 Host 通过 DSH 现有
/apitransport 执行。浏览器不会执行 Git、读取 sidecar 文件或.git,也不会暴露修改 working tree 的控制项。文件 diff 会禁用外部 diff 与 文本转换,并限制显示范围以保障安全。 - Dashboard 的在应用中打开入口只通过 DSH 官方相对 Host 路由完成应用探测、图标加载和启动;应用选择只保存在当前页面内,刷新后使用第一个可用应用,Host 返回空结果或失败时回退到编码后的 VS Code 协议链接。
- Git Dashboard 只实现 commit history、只读的基线汇总(可选包含一次从基线到工作区的 新鲜 projection)、顶部的只读未提交的改动快照、changed files 和一次一个 unified diff。 按请求启用时,这些 projection 会合并 staged、unstaged 和 untracked 文件,但不会写回 Git。 Dashboard 不提供 commit、staging、reset、revert、cherry-pick、fetch、push、pull、pull request、 graph lanes、pagination 或 syntax highlighting。
- Session 行使用 DSH 原生的状态和相对时间展示。折叠的 Workspace、Main 和 Worktree 分组会
从完整且符合原生空白/归档可见性条件的成员中选择一个聚合
StateDot:等待审批(以及其他 pending interaction warning) 优先于运行中,运行中优先于已完成。Idle Session 不会贡献分组 dot;Worktree 健康状态仍 使用独立的前置指示器。视觉上的 Session 排序初始按最新的updatedAt值排列并只保存在浏览器本地;Main 固定为首行,Worktree 拖拽只 更新这个本地排序投影,Main 拖拽只有在 DSH 接受后才更新原生 Workspace 顺序。 - active Worktree Session 在明确确认后可以请求名为
worktree-full-access的 preset。它将 DSHdanger-full-access与ask组合,保留审批提示,不改变 network 或 process policy。 不可用时尽可能回退到workspace-write + ask,否则显示未验证且可重试的状态;它不能突破 DSH 宿主设置的 sandbox 上限。 - Session 与 Worktree 绑定及权限检查在 Host 端基于物理文件系统身份(
stat/realpath)进行比较,而非单纯依赖词法路径字符串。这确保了在 Windows 与 macOS 各种路径形态下的稳健兼容(包括盘符大小写、正反斜杠、UNC 路径以及\\?\\等长路径前缀)。在 Windows 平台上,sidecar 原子持久化采用可写文件句柄同步并对目录同步保持容错(best-effort),Git CLI 集成兼容NUL空设备路径与 CRLF 换行符。 - Git 必须已安装且可在 PATH 中使用。Git 可执行文件缺失时显示安装提示且不显示命令块;插件 不会执行 setup 或安装命令。
- Workspace 根目录缺失时,Worktree 视图仍会渲染索引中的 Worktree、Session 绑定和指令,并显示 本地化的目录缺失状态,而不会让整个视图读取失败。该 Workspace 的 Git 读取、Worktree 创建与 导入以及清理操作仍会被拒绝,直到目录恢复。
- 如果插件的外部索引不可用或损坏,原生 DSH Workspace 和 Session 视图保持完全可读,插件 进入降级只读状态,绝不会使用空索引覆盖原生数据。
界面语言
Worktree 模式跟随 DSH 当前界面语言。入口、树、菜单、弹窗、状态、Dashboard 标签和重试提示 提供英文和中文。Workspace 名称、Session 标题、branch、路径以及原始 DSH 或 Git 错误保留原值。
开发
架构、本地 DSH 联调、测试和贡献流程见:
常用的 package 检查命令:
pnpm --filter @cerbur/clutch-dsh-worktree typecheck
pnpm --filter @cerbur/clutch-dsh-worktree build
pnpm --filter @cerbur/clutch-dsh-worktree test
中英文 README 的结构通过以下测试校验:
node --test test/readme-parity.test.mjs
卸载
使用 DSH CLI:
dsh plugin --profile web remove @cerbur/clutch-dsh-worktree
如果使用 DeepSeek Harness checkout,可对同一个 package name 使用
pnpm dsh plugin --profile web remove。
友情链接
- LINUX DO — 新的理想型社区。
链接
同类插件
zhu1090093659/dsh-web#packages/dsh-git-graph★ 8488
输入框上方提供 Git 分支选择器,并把分支泳道与提交历史画成图谱,沿着时间线找到任意变更。
Akimiya-z/codex-guard#dsh★ 138
在 DeepSeek Harness 内做提交前的 Pull Request 卫生检查:扫描当前改动中的 TODO 残留、硬编码密钥与非规范提交信息。
lehhair/dsh-diff-viewer★ 26
PiUI 风格 diff 查看器,替换 write/edit 工具调用的默认 DiffBlock。
DamonKoy/dsh-web-ui#dsh-git-graph★ 23
dsh web GUI 会话头部栏的 Git 分支选择器与提交图。
PerryLink/dsh-github★ 23
官方级 GitHub CI 集成:composite action.yml、轮询 PR 评审机器人(幂等行内评论 + status-check 门禁)以及 PR/issue 工具,所有写入走人工审批门。
DietCokewithSugar/dsh-user-experience★ 21
帮你发现项目中可能存在的用户体验问题:自动走查 React/TypeScript 源码,定位问题并给出具体优化建议。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。