dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness 的 GitHub 与 Git 管理插件:多账号登录切换、仓库浏览与管理、工作区版本树、一键推送、推送前 Agent 审查。
在 DeepSeek Harness 里管好研发账号与服务:装一次,GitHub、Cloudflare、npm 都在同一个面板里切换。
▶ 宣传视频 · 54 秒 · 1080p · 无声(含真实界面截图,带投影与入场动画)
DevDock 是面向 DeepSeek Harness 的研发账号与服务管理套件。它的目标很简单:让开发者不必在浏览器标签、终端和一堆控制台之间来回切换。
套件按平台拆成能力模块,但对外只有一个入口、一套操作习惯。每个界面都是固定的一行,平台在入口内部用下拉切换——平台越多,占用的空间不增加。
| 模块 | 状态 | 能力 |
|---|---|---|
| GitHub / Git | ✅ 已发布 | 多账号、仓库浏览与管理、工作区推送/撤回、版本树、推送前 Agent 审查 |
| Cloudflare | 🔜 规划中 | 仪表板、Workers、Pages |
| npm | 🔜 规划中 | 账号、包与版本 |
当前仓库承载第一个模块。第二个模块落地时会改成
packages/单仓多包结构,仓库地址与 star 不变。
dsh-harness-push 是 DevDock 套件的 GitHub / Git 模块。它把「看仓库、切账号、提交、推送、撤回」这些每天都要做的事收进 Harness 一个面板里,并把推送前审查交给模型——让即将离开本机的内容先被检查一遍。
它由两半组成:Host 侧提供一套完整的 GitHub REST 与 Git 命令封装(含令牌安全注入),Client 侧提供设置页、左侧仓库面板和工作区侧边栏。两侧共享同一套服务方法,所以你在界面上做的操作,和智能体通过工具做的操作,行为完全一致。
设计取向:界面克制、信息密度高、贴近原生宿主风格。没有渐变、没有大圆角卡片流、没有装饰性动效。
| 亮点 | 说明 |
|---|---|
| 多账号 + 即时切换 | 账号卡片展示头像、昵称、权限范围,下拉即切;切换后所有面板立刻跟随,无需重启 |
| 令牌永不落地到 git 配置 | 推送时通过一次性 http.extraheader 注入,.git/config 里不含任何凭据 |
| 推送前 Agent 审查 | 规则扫描(免费、必跑)+ 模型审查(可选模型与思考强度);有阻断项时警告但不阻拦 |
| 推送记忆 | 每条分支记住上次推送到哪个仓库、哪个 ref;下次回到该分支自动带出 |
| 版本树可视化 | 提交图带 lane 连线与 ref 标签,任意节点可检出、反向提交、打标签 |
| 智能体同源 | 插件把能力同时暴露为模型工具 github_link,人和 AI 走同一套代码路径 |
| 仓库卡片视图 | 列表 / 卡片双视图,卡片带语言占比条形图、star / fork / issue 指标与简介滚动区 |
@login、权限范围;右侧箭头展开下拉,可切换、移除账号;下拉箭头左侧一键跳转该账号的 GitHub 主页delete_repo,且需二次确认)owner/repo、ahead/behind、已暂存 / 未暂存 / 未跟踪 / 冲突计数点「Agent 审查」后是一个两步弹窗:
两道关卡:
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.jsonname、cordis.patch.yml行名、client.js注册 id 三者必须相同),改它等于做一次安装迁移。等第二个模块落地、仓库改成单仓多包时,会一次性迁到dsh-devdock-*或@devdock/*。
命名说明:npm 包名是
dsh-harness-push,GitHub 仓库名是dsh-push。 两者不同是因为 npm 上的dsh-push已被另一个用途无关的插件占用。 插件的内部标识(工具名github_link、路由/api/push/*、设置页与侧边栏入口)不受影响。
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-DevDock.git
cd dsh-push
npm install # 仅测试需要,插件本身零运行时依赖
npm test # 11 组测试 + 可达性审计
安装完成后:
+ 菜单新增 Push 标签页github_link 工具dsh 在任意 Git 仓库目录里开会话,右侧栏打开 Push| 用途 | 需要的 scope |
|---|---|
| 读取仓库、分支、发布,推送 / 拉取 | repo(私有仓库必需)或 public_repo |
| 创建仓库 | repo |
| 删除仓库 | delete_repo |
| 贡献热力图 | read:user(缺失时该卡片显示提示,不影响其他功能) |
| 未读通知 | notifications(缺失时列表为空) |
| 发布与附件 | repo |
推荐一键勾选:repo、delete_repo、read:user、notifications。
%DSH_HOME%\push\state.json(Windows 下为 C:\Users\<你>\.dsh\push\state.json)
0600 写入icacls 去除继承并只授权当前用户;两者都是尽力而为,真正的边界仍是该目录自身的 ACLhttp.extraheader 注入,不写入 .git/config;每此调用都是独立注入,不依赖全局凭据助手ghp_ / github_pat_ 形态、私钥块)delete_repo scopedsh-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 接口契约
webServer 注册的 /api/push/* 路由通信,统一 JSON 信封 {ok, data} / {ok: false, error}x-dsh-plugin: push 头,防跨站触发npm test # 11 组测试 + 可达性审计
npm run test:refspec # 推送 refspec 行为(需要 git 可执行)
测试覆盖:客户端源断言、仓库卡片、工具契约、错误映射、推送记忆、删除语义、审查规则、审查预设持久化、路由可达性。
CONTRACT.md 是 Host↔Client 的接口契约,任何路由或字段变更都应同步更新。
ssh-agentapi.github.com 或 github.com:443 时,插件会把原始错误如实显示(含脱敏),不会静默失败