为每个子代理分配独立工作树,脏改动自动保留待审
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
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 79 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/8) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
CSY656/dsh-worktree
为每个子代理分配独立工作树,脏改动自动保留待审
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9