🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

工作树隔离 CSY656/dsh-worktree

DeepSeek Harness
CSY65679 天前有提交已提供中文文档扫描:含敏感能力

为每个子代理分配独立工作树,脏改动自动保留待审

26.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/1 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add CSY656/dsh-worktree
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · dev
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 79 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/8) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 32 处,展示前 28 条)
  • 执行外部命令固定命令
    lib/index.mjs:89
    execFile("git", args, {
  • 读取本地文件
    lib/index.mjs:126
    await access(path);
  • 读取本地文件
    lib/index.mjs:175
    await stat(path);
  • 读取本地文件
    lib/index.mjs:202
    entries = await readdir(src, { withFileTypes: true });
  • 写入本地文件
    lib/index.mjs:206
    await mkdir(join(wtPath, ".dsh"), { recursive: true });
  • 读取本地文件
    lib/index.mjs:259
    raw = await readFile(join(repoRoot, ".worktreeinclude"), "utf8");
  • 写入本地文件
    lib/index.mjs:283
    await mkdir(dirname(to), { recursive: true });
  • 写入本地文件
    lib/index.mjs:284
    await copyFile(from, to);
  • 读取本地文件
    lib/index.mjs:324
    await stat(path);
  • 读取本地文件
    lib/index.mjs:395
    names = await readdir(dir);
  • 写入本地文件
    lib/index.mjs:472
    await mkdir(join(repoRoot, ".dsh", "worktrees"), { recursive: true });
  • 删除本地文件
    lib/index.mjs:520
    await rm(entry.path, {
  • 执行外部命令固定命令
    src/git.ts:41
    execFile('git', args, {
  • 读取本地文件
    src/git.ts:80
    await access(path)
  • 读取本地文件
    src/index.ts:67
    await stat(path)
  • 读取本地文件
    src/index.ts:142
    names = await readdir(dir)
  • 读取本地文件
    src/index.ts:189
    names = await readdir(dir)
  • 读取本地文件
    src/index.ts:196
    const info = await stat(wtPath).catch(() => undefined)
  • 写入本地文件
    src/index.ts:236
    await mkdir(join(repoRoot, '.dsh', 'worktrees'), { recursive: true })
  • 读取本地文件
    src/index.ts:240
    const info = await stat(wtPath)
  • 读取本地文件
    src/index.ts:247
    const info = await stat(wtPath)
  • 删除本地文件递归
    src/index.ts:262
    await rm(entry.path, { recursive: true, force: true })
  • 读取本地文件
    src/setup.ts:25
    await stat(path)
  • 读取本地文件
    src/setup.ts:59
    entries = await readdir(src, { withFileTypes: true })
  • 写入本地文件
    src/setup.ts:63
    await mkdir(join(wtPath, '.dsh'), { recursive: true })
  • 读取本地文件
    src/setup.ts:115
    raw = await readFile(join(repoRoot, '.worktreeinclude'), 'utf8')
  • 写入本地文件
    src/setup.ts:135
    await mkdir(dirname(to), { recursive: true })
  • 写入本地文件
    src/setup.ts:136
    await copyFile(from, to)
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-commands@deepseek-ai/dsh-session
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 子代理独立工作树
  • 脏改动自动保留
  • 干净工作树自动删除

为 DeepSeek Harness 子代理提供 Git worktree 文件系统隔离——每个子代理在自己的 worktree 里干活,干净的自动删除,有改动的留着待审查。

README

由 DeepSeek 最新模型翻译生成
dsh-worktree 通过 git worktree 为 DeepSeek Harness 子代理提供文件系统隔离。子代理已经隔离了消息、权限策略和工具集——这个插件隔离的是文件系统:每个子进程都在自己的 worktree 里运行,位置在 <repoRoot>/.dsh/worktrees/ 下,共享仓库对象存储,同时保持工作树私有。 两个入口,一个包: - dsh-worktree —— ctx.worktree 服务:创建/恢复/列出/删除 git worktree,带严格的 slug 校验、变更保护、尽力而为的创建后设置,以及定期清扫过期的临时 worktree。 - dsh-worktree/commands —— 面向人的 /worktree create <slug> | list | remove <slug> [--discard] 斜杠命令。 安装 需要 DeepSeek Harness 的 next 线(dsh ≥ 0.1.0-rc.6)。
展开完整文档(README 剩余 1 节)
dsh-worktree

通过 git worktree 为 DeepSeek Harness 子代理提供文件系统隔离。子代理已经隔离了消息、权限策略和工具集——这个插件隔离的是文件系统:每个子进程都在自己的 worktree 里运行,位置在 <repoRoot>/.dsh/worktrees/ 下,共享仓库对象存储,同时保持工作树私有。

两个入口,一个包:

- dsh-worktree —— ctx.worktree 服务:创建/恢复/列出/删除 git worktree,带严格的 slug 校验、变更保护、尽力而为的创建后设置,以及定期清扫过期的临时 worktree。
- dsh-worktree/commands —— 面向人的 /worktree create <slug> | list | remove <slug> [--discard] 斜杠命令。

安装

需要 DeepSeek Harness 的 next 线(dsh ≥ 0.1.0-rc.6)。从 GitHub 安装:

dsh plugin --profile default add github:you/dsh-worktree

pnpm ≥ 10 会要求你允许构建——把打印出来的包名 key 加到配置档的 pnpm-workspace.yaml:

allowBuilds:
dsh-worktree: true

然后重新跑一遍 add。从 npm 安装(预构建):

dsh plugin --profile default add dsh-worktree

用法

/worktree create feature/demo → creates .dsh/worktrees/feature+demo, branch worktree-feature+demo
/worktree list → name/path/branch rows
/worktree remove feature/demo → refuses while dirty; --discard forces

服务 API(给插件作者用):

const lease = await ctx.worktree.acquire('agent-abc1234', cwd) // create/restore at HEAD
// ...run an isolated child with its session header.cwd = lease.entry.path...
const { kept, path, branch } = await lease.release() // clean → removed; dirty → kept + reported

- worktree 放在 <repoRoot>/.dsh/worktrees/<flatSlug>/;嵌套 slug 会把 / 压平成 +(team/alice → team+alice),分支为 worktree-team+alice。
- validateSlug 要求每段符合 [a-zA-Z0-9._-],长度 ≤ 64,拒绝 .、..、//,以及开头/结尾的分隔符。
- 创建后设置是尽力而为:复制项目的 .dsh 配置,继承 core.hooksPath,为 node_modules/.venv/vendor 建符号链接(Windows 上符号链接失败会降级为警告),复制 .worktreeinclude 里列出的被忽略文件。
- 变更检测是 fail-closed:任何 git 失败都算「有变更」,所以坏掉的 worktree 会保留而不是删掉。
- 同一仓库的改动串行执行;并发 acquire 同一个 slug 是幂等的(快速恢复,不起 git 子进程)。

配置

interface Config {
sweepIntervalMs?: number // default 3_600_000 (1h)
sweepMaxAgeMs?: number // default 86_400_000 (24h); only agent-* temp worktrees are swept
}

子代理自动隔离

一行式集成 —— subagent(..., worktree: true) 为每次子运行创建一个 worktree,并自动清理 —— 需要在 dsh-subagent/dsh-tool-subagent 里加一点上游能力(SubagentStartRequest 上一个可选的 cwd)。具体改动和树内实现见 UPSTREAM-PR.md;在上游接受之前,请在你自己的插件里用 ctx.worktree.acquire(),或者手动执行 /worktree 命令。

已知限制

- 仅限进程内隔离 —— 子会话的 cwd 覆盖由进程内后端打标;进程外后端(acp、claude-code、codex、dsh-sdk)会忽略它们。
- 无法跨进程共享 —— 一个 DSH 实例只拥有自己的 worktree。
- 没有合并策略 —— 合并保留下来的 worktree 是委派智能体的活(git merge worktree-<flatSlug>)。

为生态做贡献

- 打了 dsh-plugin 话题标签 —— 浏览其他插件。
- 跑测试用 pnpm install && pnpm test(真实临时 git 仓库,不联网)。
- 这里移植的行为来自 CsyCode 第 14 章的 worktree 隔离。

License

MIT
预览分享卡片长什么样 ↓CSY656/dsh-worktree
分享 · DeepSeek Harness Hub
CSY656/dsh-worktree

为每个子代理分配独立工作树,脏改动自动保留待审

回到顶部