在对话框工具行只读显示当前项目的 Git 分支
29.8/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add helloHupc/dsh-git-branch该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 24 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
- 执行外部命令固定命令index.js:90
execFile( - 发起网络请求client.js:164
fetch(url, { signal: controller.signal, headers: { accept: 'application/json' } })
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 只读显示当前分支
- 非仓库目录不显示
DSH 插件:在对话框工具行、权限选择框右侧只读显示当前项目的 git 分支;目录不是仓库时不显示。
README
由 DeepSeek 最新模型翻译生成dsh-git-branch
在 DeepSeek Harness(DSH)的*对话框(composer)工具行中,紧跟在权限选择框之后,显示当前项目的 git 分支。
刻意做成只读:只显示,不提供任何选择。目录不是 git 仓库时什么都不渲染——没有占位、没有空框、没有报错。
挂在哪里
对话框工具行的固定布局:
[+ 命令] [权限 ▾] [plan] ← 分支标记渲染在这里
插件注册到 conversation.input.left,即 shell 紧跟在常驻模式控件之后渲染的追加式槽位。
该槽位对宿主 UI 是追加式的(replaceRisk: none),因此既不会替换也不会遮挡任何自带控件。
样式刻意对齐相邻的权限选择框:同样 28px 高、13px/500 字号、--dsw-alias-label-secondary 文字色、无自带背景、14px 的 currentColor 图标——浅色与深色主题下都落在同一基线上。分支名过长时省略号截断,不会把右侧控件挤走。
展开完整文档(README 剩余 1 节)
dsh-git-branch
在 DeepSeek Harness(DSH)的*对话框(composer)工具行中,紧跟在权限选择框之后,显示当前项目的 git 分支。
刻意做成只读:只显示,不提供任何选择。目录不是 git 仓库时什么都不渲染——没有占位、没有空框、没有报错。
挂在哪里
对话框工具行的固定布局:
[+ 命令] [权限 ▾] [plan] ← 分支标记渲染在这里
插件注册到 conversation.input.left,即 shell 紧跟在常驻模式控件之后渲染的追加式槽位。
该槽位对宿主 UI 是追加式的(replaceRisk: none),因此既不会替换也不会遮挡任何自带控件。
样式刻意对齐相邻的权限选择框:同样 28px 高、13px/500 字号、--dsw-alias-label-secondary 文字色、无自带背景、14px 的 currentColor 图标——浅色与深色主题下都落在同一基线上。分支名过长时省略号截断,不会把右侧控件挤走。
行为
| 目录状态 | 渲染内容 | 悬浮提示 |
| 在某个分支上 | 分支图标 + main | Git 分支: main |
| 游离 HEAD | 分支图标 + a1b2c3d | 游离 HEAD: a1b2c3d |
| 仓库还没有第一次提交 | 分支图标 + 默认分支名 | Git 分支: main |
| 不在仓库里 | 什么都不渲染 | — |
重新读取的时机:会话工作目录变化、每轮对话结束、标签页重新可见。从不轮询。
环境要求
- DSH 0.2.0-rc.2 或更新。
- Host 进程的 PATH 上有 git。
- 别无其它:没有构建步骤、没有运行期依赖、没有配置项。
git 不存在或探测超过 5s 超时时,该目录会被判为“非仓库”,标记保持隐藏,不会向用户报错。
安装
本包是一个 DSH bundle:自带 cordis.patch.yml,所以安装它的同时就会加上它的插件行。
推荐——走插件管理器。 在 Web 界面 Settings → Plugins → 添加插件,目标填 https://github.com/helloHupc/dsh-git-branch 或本地 checkout 目录。Agent 侧等价的做法是用 plugin_manager 工具的 install_bundle,target 同样是该 URL 或目录。
本地 checkout 安装。 clone 之后,用上面任一方式安装该目录。
安装是持久改动:对该 profile 下的所有会话生效,重启后依然存在。
目前端到端验证过的是从本地目录安装;从仓库 URL 安装走的是插件管理器有文档的 git 支持。
卸载
在同一个 Plugins 页面移除该 bundle,或用 plugin_manager 工具的 remove_bundle。依赖与 bundle 选择会一起移除;插件的插件行和它的路由也随之消失。
实现方式
Host 一半(index.js) 在 Web 载体上注册一条只读路由:
GET /dsh-git-branch?sessionId=<id>&cwd=<绝对路径>
- 工作目录取 Host 会话存储里该 Session 的权威 cwd;只有当 Host 尚未物化该会话时,才使用客户端传来的绝对 cwd。绝不把 Host 进程自己的工作目录当作答案。
- 每次探测只用系统 git 跑一次(execFile;无 shell、无第三方库、无缓存),形式为 git -C <cwd> …,并设置 GIT_OPTIONAL_LOCKS=0、GIT_TERMINAL_PROMPT=0、5s 超时,同时删除 git 自己的仓库覆盖变量(GIT_DIR、GIT_WORK_TREE 等)——即便 Host 是在另一个 git 上下文里启动的,也始终由 -C 决定是哪个仓库。
- 仓库判据依次为 rev-parse --show-toplevel、symbolic-ref --short HEAD,游离 HEAD 时再用 rev-parse --short HEAD。symbolic-ref 在“还没有任何提交”的 unborn HEAD 上也能回答,而 rev-parse HEAD 此时已经失败。
- 围栏与 /api 网关完全一致:Host 必须是回环地址,或部署声明的 trustedHosts 之一;拒绝 Sec-Fetch-Site: cross-site;带 Origin 时主机名必须一致。这是 DNS rebinding 与跨站读取的防线,不是身份认证。
一切格式正确的请求都返回 200 + { ok: true, … },包括 { "isRepo": false } —— 隐藏标记是客户端的决定,不是错误分支。只有围栏(403)、非 GET 方法(405)和 URL 畸形(400)才返回其它状态。
浏览器一半(client.js) 是浏览器产物:一个 classic script,只注册一个惰性 factory——这正是 DSH 模块加载器要求的形态。它只用自己写的 React 与主题 token,不 import 任何 @deepseek-ai/dsh-client- 包:那些包说变就变,而一个抛异常的组件会把这个槽位条目整个变空。
样式、词典、槽位注册全部登记为 ctx.effect,所以插件卸载与 HMR 重新激活都能干净地移除并重装。
显示名称
插件列表里的标题与描述来自 locale/<语言>.json 的 meta.title / meta.description, 不是 package.json 的 name:
- locale/en.json 是必需的回退锚点;同目录下的其它文件(如 zh.json)会一起被读取。
- 标题与图标都经过包的 exports 解析,所以 "./locale/.json" 这条导出必须保留。
- package.json 的 name 是标识符:它决定 Loader 行 name 与浏览器模块 id。
开发
node test/host.test.mjs # Host 一半的检查:围栏、方法、工作目录、git 探测
test/host.test.mjs 会创建真实的临时仓库,并直接驱动注册的路由处理器——不需要 profile、不需要安装 DSH、不联网,只要求有 git。
改两半的生效范围不同:
| 文件 | 生效时机 |
| client.js、locale/.json | 下次页面加载 |
| index.js | DSH 重启之后——Host 代码不会在进程内热替换 |
安全说明
- 这条路由会通过本地 HTTP 载体暴露某个仓库的分支名。围栏阻止的是敌意页面的跨站读取;把服务绑到非回环地址时,请按对待任何本地服务的标准对待它。
- 客户端的 cwd 只接受绝对路径,且仅在会话存储没有答案时使用。路由从不回退到 Host 进程的工作目录,因此无法被引导去报告一个无关的仓库。
- 只读:每次调用都只是 rev-parse / symbolic-ref 探测。不写文件、不加锁、不用凭据、不弹提示。
已知边界
- 每个请求一次 git 子进程;git 缺失或探测超时都会被判为“非仓库”。
- 这条路由不做身份认证,这一点与本地 Web 载体的其余部分同一设计。
- 已针对 DSH 0.2.0-rc.2 验证。浏览器一半只使用该槽位有文档的标准 props,但未来的 DSH 版本仍有可能改动那个槽位。
许可
MIT © helloHupc预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
helloHupc/dsh-git-branch
在对话框工具行只读显示当前项目的 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