DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

QingJing5906 /

QingJing5906/dsh-push

Verified

DeepSeek Harness 的 GitHub 与 Git 管理插件:多账号登录切换、仓库浏览与管理、工作区版本树、一键推送、推送前 Agent 审查。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@54cdd4ae

DevDock

在 DeepSeek Harness 里管好研发账号与服务:装一次,GitHub、Cloudflare、npm 都在同一个面板里切换。

License: MIT DSH npm node


这是什么

DevDock 是面向 DeepSeek Harness 的研发账号与服务管理套件。它的目标很简单:让开发者不必在浏览器标签、终端和一堆控制台之间来回切换。

套件按平台拆成能力模块,但对外只有一个入口、一套操作习惯。每个界面都是固定的一行,平台在入口内部用下拉切换——平台越多,占用的空间不增加。

模块 状态 能力
GitHub / Git ✅ 已发布 多账号、仓库浏览与管理、工作区推送/撤回、版本树、推送前 Agent 审查
Cloudflare 🔜 规划中 仪表板、Workers、Pages
npm 🔜 规划中 账号、包与版本

当前仓库承载第一个模块。第二个模块落地时会改成 packages/ 单仓多包结构,仓库地址与 star 不变。


项目简介

dsh-harness-push 是 DevDock 套件的 GitHub / Git 模块。它把「看仓库、切账号、提交、推送、撤回」这些每天都要做的事收进 Harness 一个面板里,并把推送前审查交给模型——让即将离开本机的内容先被检查一遍。

它由两半组成:Host 侧提供一套完整的 GitHub REST 与 Git 命令封装(含令牌安全注入),Client 侧提供设置页、左侧仓库面板和工作区侧边栏。两侧共享同一套服务方法,所以你在界面上做的操作,和智能体通过工具做的操作,行为完全一致。

设计取向:界面克制、信息密度高、贴近原生宿主风格。没有渐变、没有大圆角卡片流、没有装饰性动效。


GitHub / Git 模块 · 亮点

亮点 说明
多账号 + 即时切换 账号卡片展示头像、昵称、权限范围,下拉即切;切换后所有面板立刻跟随,无需重启
令牌永不落地到 git 配置 推送时通过一次性 http.extraheader 注入,.git/config 里不含任何凭据
推送前 Agent 审查 规则扫描(免费、必跑)+ 模型审查(可选模型与思考强度);有阻断项时警告但不阻拦
推送记忆 每条分支记住上次推送到哪个仓库、哪个 ref;下次回到该分支自动带出
版本树可视化 提交图带 lane 连线与 ref 标签,任意节点可检出、反向提交、打标签
智能体同源 插件把能力同时暴露为模型工具 github_link,人和 AI 走同一套代码路径
仓库卡片视图 列表 / 卡片双视图,卡片带语言占比条形图、star / fork / issue 指标与简介滚动区

GitHub / Git 模块 · 功能

设置 › Push(独立一页,平台下拉的落点)

  • 账号卡片:头像、昵称、@login、权限范围;右侧箭头展开下拉,可切换、移除账号;下拉箭头左侧一键跳转该账号的 GitHub 主页
  • 两种录入方式:Personal Access Token(推荐,可细粒度授权)或 Device Flow 设备码登录
  • 账号概览:最近一年贡献热力图、未读通知列表(可单条标记已读并跳转)
  • 仓库管理(居中弹窗,对齐 GitHub 原站):概览指标、分支管理、仓库设置(简介/主页/可见性/归档/默认分支)、发布、协作者、Webhook、危险操作区(重命名 / 转移 / 删除)

左侧栏 Push(全局面板,图标随平台变化)

  • 当前账号下全部仓库:搜索、私有/公开分段、分页加载
  • 列表 / 卡片双视图,卡片分大、小两档,选择会记住
    • 卡片直接展示列表要展开才看到的内容:简介、默认分支、更新时间、跳转与管理按钮
    • 底部语言占比条形图(按 GitHub 真实字节占比;超过 6 种语言折叠为「其他」)
    • star / fork / issue 指标横排展示
  • 新建仓库、删除仓库(删除需 delete_repo,且需二次确认)

工作区侧边栏 Push(跟随当前会话目录,目前仅 GitHub)

  • 版本状态:当前分支、owner/repo、ahead/behind、已暂存 / 未暂存 / 未跟踪 / 冲突计数
  • 一键提交、推送、拉取、抓取
  • 推送目标选择:可搜索 GitHub 仓库或使用本地远端;每条分支独立记忆上次目标
  • 撤回:soft / mixed / hard 三种模式,hard 需输入确认
  • 分支:新建、切换、删除(未合并时二次确认)、合并
  • 标签:打标签并可同时推送
  • 暂存:stash / stash pop,可选包含未跟踪文件
  • 改动列表:按分组展示,可单文件暂存 / 还原,点开看 diff
  • 提交图:最近 60 条提交,带 lane 连线、ref 标签、作者与时间;任意节点可检出、反向提交、复制 sha、打标签、在此撤回
  • 目录还不是 Git 仓库时,显示醒目的「创建 Git 仓库」按钮,可同时创建 GitHub 远端

推送前审查(Agent 审查)

点「Agent 审查」后是一个两步弹窗:

  1. 配置——选择模型与思考强度(宿主提供几档就用几档,≥3 档渲染为滑条);审查项以卡片呈现,按敏感信息 / 隐私 / 完整性 / 质量 / 自定义分组,可多选,只有卡片区域滚动;底部自定义提示词可一键「存档为预设」,下次直接勾选
  2. 确认——列出将使用的模型、思考强度(可再改)、涉及文件(默认折叠)、将执行的审查项;可返回修改
  3. 结果——按严重度排序,标注文件与行号并给出修复建议

两道关卡:

  • 规则扫描(不花钱、必定执行):识别 ghp_ / github_pat_ / sk- / AKIA / xox / 私钥块 / Bearer 长串 / 硬编码密码。命中即报 blocker,且密钥原文永不出现在界面、日志或工具结果里;REPLACE_ME、<your-token> 这类占位符不会误报
  • 模型审查:把选中的审查项与自定义提示词合成一次请求;模型不可用或失败时自动降级为只跑规则扫描并在结果中注明,绝不阻塞推送

模型工具 github_link

同一套能力同时暴露给智能体:

status · log · push · pull · commit · repos · accounts
create_repo · release · review

push 和 release 都可用 owner + repo 指定目标,因此智能体可以直接「建仓库 → 推送 → 打标签发布」而无需人工配置远端。


安装

命名:品牌 / 模块 / 包名

三个名字各司其职,互不等同:

层级 名字 用在哪
品牌 DevDock 对外介绍、文档、GitHub 项目页、未来套件首页
模块 GitHub / Git 界面里的平台名(下拉里显示的那个)
npm 包 dsh-harness-push dsh plugin add 与 npm 上的真实标识

包名暂不与品牌对齐:它同时是 DSH 的模块身份(package.json name、cordis.patch.yml 行名、client.js 注册 id 三者必须相同),改它等于做一次安装迁移。等第二个模块落地、仓库改成单仓多包时,会一次性迁到 dsh-devdock-* 或 @devdock/*。

命名说明:npm 包名是 dsh-harness-push,GitHub 仓库名是 dsh-push。 两者不同是因为 npm 上的 dsh-push 已被另一个用途无关的插件占用。 插件的内部标识(工具名 github_link、路由 /api/push/*、设置页与侧边栏入口)不受影响。

从 npm 安装(推荐)

dsh plugin --profile desktop add dsh-harness-push

从本地目录安装

dsh plugin --profile desktop add "<插件目录>\dsh-push"

也可以在 DSH 的插件管理器里选择 local directory 指向该目录。

从源码构建

git clone https://github.com/QingJing5906/dsh-push.git
cd dsh-push
npm install          # 仅测试需要,插件本身零运行时依赖
npm test             # 11 组测试 + 可达性审计

安装完成后:

  • 设置面板新增 Push 一页
  • 左侧栏新增 Push 图标
  • 右侧栏 + 菜单新增 Push 标签页
  • 智能体获得 github_link 工具

快速开始(GitHub 模块)

  1. 打开 设置 › Push,点「+ 添加新账号」,粘贴一个 GitHub Personal Access Token
  2. 用 dsh 在任意 Git 仓库目录里开会话,右侧栏打开 Push
  3. 改几个文件 → 展开「改动」勾选要提交的内容 → 写提交信息 → 提交并推送
  4. 推送前想检查一遍,先点 Agent 审查,看完结果再推

权限(GitHub token scopes)

用途 需要的 scope
读取仓库、分支、发布,推送 / 拉取 repo(私有仓库必需)或 public_repo
创建仓库 repo
删除仓库 delete_repo
贡献热力图 read:user(缺失时该卡片显示提示,不影响其他功能)
未读通知 notifications(缺失时列表为空)
发布与附件 repo

推荐一键勾选:repo、delete_repo、read:user、notifications。


安全

  • Token 只保存在 %DSH_HOME%\push\state.json(Windows 下为 C:\Users\<你>\.dsh\push\state.json)
    • POSIX 系统以 0600 写入
    • Windows 忽略 POSIX 权限位,因此写入后额外用 icacls 去除继承并只授权当前用户;两者都是尽力而为,真正的边界仍是该目录自身的 ACL
  • Token 永不出现在 HTTP 响应、日志、git 命令回显或工具结果中
  • 推送通过一次性 http.extraheader 注入,不写入 .git/config;每此调用都是独立注入,不依赖全局凭据助手
  • 所有错误信息在返回前都会经过脱敏(任意认证方案、ghp_ / github_pat_ 形态、私钥块)
  • 破坏性操作(删除仓库、hard 撤回、清空工作区、删除发布)要求显式确认;删除仓库还需 delete_repo scope

架构

dsh-push/
├── index.js            # Loader 入口(字节稳定 + 内容哈希缓存破坏)
├── cordis.patch.yml    # 插件行声明
├── client.js           # 浏览器侧:设置页 / 仓库面板 / 工作区标签页
├── src/host/
│   ├── index.js        # 服务与路由表(~60 条)/ 模型工具
│   ├── git.js          # GitRunner:异步 git 封装 + 认证注入 + 脱敏
│   ├── github.js       # GitHub REST 客户端(node:https,零依赖)
│   ├── review.js       # 规则扫描 + 模型审查
│   └── store.js        # 单文档原子状态(账号、设置、推送记忆、审查预设)
├── locale/             # zh / en
├── tests/              # 11 组测试 + 可达性审计
└── CONTRACT.md         # Host↔Client 接口契约
  • Host ↔ Client 通过 webServer 注册的 /api/push/* 路由通信,统一 JSON 信封 {ok, data} / {ok: false, error}
  • 非 GET 请求要求 x-dsh-plugin: push 头,防跨站触发
  • 所有主题颜色走宿主 CSS 变量,自动跟随明暗主题

开发

npm test              # 11 组测试 + 可达性审计
npm run test:refspec  # 推送 refspec 行为(需要 git 可执行)

测试覆盖:客户端源断言、仓库卡片、工具契约、错误映射、推送记忆、删除语义、审查规则、审查预设持久化、路由可达性。

CONTRACT.md 是 Host↔Client 的接口契约,任何路由或字段变更都应同步更新。


已知限制

  • 只支持 HTTPS 远端推送;SSH 远端需要自行配置好 ssh-agent
  • 设备码登录需要填一个 GitHub OAuth App 的 Client ID(GitHub 不允许无 Client ID 的设备码流程)
  • 网络无法访问 api.github.com 或 github.com:443 时,插件会把原始错误如实显示(含脱敏),不会静默失败
  • 仓库卡片高度固定以保证网格整齐;简介超出部分在卡片内滚动查看

许可

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 54cdd4ae4011

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout