为 Git 工作树加装会话隔离与误操作防护
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/15 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/earneet/dsh-worktree-guard.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 20 处,展示前 19 条)
- 读取本地文件src/core/sidecar.js:16
const text = await readFile(join(key, ".dsh", "worktree-guard.json"), "utf8"); - 读取本地文件src/core/lifecycle.js:18
await access(p, fsConstants.F_OK); - 写入本地文件src/core/lifecycle.js:50
await mkdir(parentDir, { recursive: true }); - 写入本地文件src/core/lifecycle.js:58
await mkdir(dirname(dst), { recursive: true }); - 写入本地文件src/core/lifecycle.js:66
await mkdir(dirname(dst), { recursive: true }); - 写入本地文件src/core/lifecycle.js:78
await mkdir(briefDir, { recursive: true }); - 写入本地文件src/core/lifecycle.js:79
if (taskBrief) await writeFile(join(briefDir, "task-brief.md"), taskBrief, "utf8"); - 写入本地文件src/core/lifecycle.js:80
await mkdir(join(briefDir, "skills", "worktree-cleanup"), { recursive: true }); - 读取本地文件src/core/lifecycle.js:201
dirents = await readdir(parent, { withFileTypes: true }); - 读取本地文件src/core/lifecycle.js:211
isSymlink = (await stat(join(parent, d.name))).isSymbolicLink(); - 读取本地文件src/core/paths.js:72
const st = statSync(dotGit); - 读取本地文件src/core/paths.js:74
const text = readFileSync(dotGit, "utf8").trim(); - 写入本地文件src/core/store.js:20
await mkdir(dirname(file), { recursive: true }); - 写入本地文件src/core/store.js:21
await writeFile(tmp, text, "utf8"); - 写入本地文件src/core/store.js:22
await rename(tmp, file); - 读取本地文件src/core/store.js:27
return JSON.parse(await readFile(file, "utf8")); - 读取本地文件src/core/store.js:49
names = await readdir(dir); - 删除本地文件src/core/store.js:62
await rm(join(bindingsDir(commonDir), `${sessionId}.json`), { force: true }); - 写入本地文件src/core/store.js:149
await mkdir(dirname(file), { recursive: true });
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 的 Git worktree 守卫:会话级隔离、常开 Git 安全网、机械式人工闸门
README
由 DeepSeek 最新模型翻译生成dsh-worktree-guard
可选的 git worktree 守卫 DSH(DeepSeek Harness)插件。
宗旨:把 worktree 从「模型的自觉」变成「宿主的结构」——隔离靠会话根(结构),安全靠单调收窄的常开网(兜底),授权靠带 TTL 的机械人闸(治理)。
完整设计(含宿主契约证据、七条裁决性原则、决策表、Agent 沟通面)见 doc/design.md v1.1。
它做什么
- 会话根模式(产品本体):worktree_create 建副本后,以副本为会话根新开会话 → DSH 沙箱自动锚定,写隔离即结构。
- 常开安全网(是否绑定都生效):跨副本写入、写 .git/状态区、push 受保护分支(master/main)、删 worktree 分支、git -C 定向到主根 → deny + 单轮可执行的指令。
- 读域守卫:绑定态读主 checkout → 放行 + 溯源标记(默认 warn)或 deny(strict)——防止「写对地方、改错东西」。
- 机械人闸:worktree_authorize_main/worktree_allow 走 pre-execute ask 门,模型无法自授。
- 收尾零债:merge-base 证明式「已合并」判定、死绑定 prune、全树摘链接后再删副本(防 junction 穿透)。
展开完整文档(README 剩余 1 节)
dsh-worktree-guard 可选的 git worktree 守卫 DSH(DeepSeek Harness)插件。 宗旨:把 worktree 从「模型的自觉」变成「宿主的结构」——隔离靠会话根(结构),安全靠单调收窄的常开网(兜底),授权靠带 TTL 的机械人闸(治理)。 完整设计(含宿主契约证据、七条裁决性原则、决策表、Agent 沟通面)见 doc/design.md v1.1。 它做什么 - 会话根模式(产品本体):worktree_create 建副本后,以副本为会话根新开会话 → DSH 沙箱自动锚定,写隔离即结构。 - 常开安全网(是否绑定都生效):跨副本写入、写 .git/状态区、push 受保护分支(master/main)、删 worktree 分支、git -C 定向到主根 → deny + 单轮可执行的指令。 - 读域守卫:绑定态读主 checkout → 放行 + 溯源标记(默认 warn)或 deny(strict)——防止「写对地方、改错东西」。 - 机械人闸:worktree_authorize_main/worktree_allow 走 pre-execute ask 门,模型无法自授。 - 收尾零债:merge-base 证明式「已合并」判定、死绑定 prune、全树摘链接后再删副本(防 junction 穿透)。 守卫等级(诚实分级,P6) | 等级 | 覆盖 | | 结构拒绝 | 会话根沙箱写隔离;authorize ask 门 | | 词法启发 | pwsh 命令文本、路径归一化判域、读域守卫(8.3 短名/变量拼接可绕——raise the bar,非边界) | | 纯纪律 | danger-full-access 下的一切 | 已知边界详见 doc/design.md §14。 安装与使用 DSH 插件(package.json dsh.bundle.patch → cordis.patch.yml)。已发布到 npm 后: 安装到 profile(CLI) dsh plugin --profile web add dsh-worktree-guard 或 GUI 设置 → 插件 → 安装 bundle:dsh-worktree-guard 验证已挂载(应看到 worktree-guard 条目) dsh web --dump-config 安装后变化:未绑定会话零注入、行为不变;worktree_ 工具出现在会话中;git 误毁防护(push 主干/删 worktree 分支/写 .git 等)常开生效。 CLI(与原生工具同一 core) node wt.mjs create fix-login --brief "修复登录" node wt.mjs status 会话内(插件加载后)使用 worktree_create / worktree_enter / worktree_exit / worktree_status 等工具;被拦截时按 deny 消息的「下一步」行动,或调用 worktree_status。 配置 sidecar:主 checkout 根的 <repo>/.dsh/worktree-guard.json(protected_branches、read_policy、branch_prefix、main_write_whitelist、sync.、TTL 等,snake/camel 键均可;设计 §13)。注意 main_write_whitelist 为 glob 全匹配(如 "docs/"、"gen/*");目录前缀不带通配符(如 "docs/")不会命中。 开发 node --test # 决策表单测 + 真实临时仓库集成测 + 三轮对抗审查回归(见 test/) 零依赖纯 ESM(Node ≥20,Windows 优先适配)。 谱系 opencode-worktree-isolation(透明重写、Windows 归一化)× zcode-worktree-guard(默认开放、常开网、prune、204 用例方法论)× chuck-ma opencode-worktree-guard(merge-base、block-with-instruction)→ 按 DSH 实测契约(不可改写入参)重构为结构优先形态。详见 doc/design-review.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
earneet/dsh-worktree-guard
为 Git 工作树加装会话隔离与误操作防护
相关插件 · 开发 / 工程
隐私简历生成器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