# dsh-github-mirror [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) 给 [DeepSeek Harness](https://github.com/deepseek-ai) Web GUI 用的 GitHub 仓库面板:左侧栏多一个 GitHub 图标,点开就能浏览自己的仓库,并通过镜像站打开、克隆或下载。 [English](README.md) ## 功能 - **侧栏入口**:DSH 左侧栏出现 GitHub 图标,点击打开仓库面板。 - **仓库列表**:通过 GitHub API 读取最近更新的 100 个仓库,展示简介、语言、星标、更新时间,以及私有 / Fork / 归档标记。 - **镜像浏览**:仓库链接自动改写成所选镜像域名,默认 `bgithub.xyz`,也可切到 `gitclone.com`、GitHub 官方或自定义镜像。 - **镜像探测**:打开面板时探测一次浏览镜像;连不上会提示,并临时改用 GitHub 官方,避免点开空白页。 - **加速克隆 / 下载**:`git clone` 命令和 zip 下载地址走另外一条线路,默认 `ghfast.top`,也可选 `gh-proxy.com`、`gitclone.com` 或官方。 - **快速打开**:搜索框支持直接粘贴 `owner/repo`、`github.com/owner/repo`、`git@github.com:owner/repo.git` 或镜像站链接,回车即打开。 - **私有仓库(可选)**:填写只读 Personal access token 后可列出私有仓库和组织/协作仓库,并把 API 限额从 60 次/小时提高到 5000 次/小时。 - **本地缓存**:成功结果缓存 6 小时,刷新失败时仍可查看上次列表。 ## 环境要求 - 支持客户端插件的 DSH 版本(在 `0.2.1-rc.2` 上测试)。 - 能访问 `api.github.com`;如果被拦截,未登录请求会自动尝试 `gh-proxy.com` 的 API 镜像。 - 不需要构建:`client.js` 就是浏览器 bundle。 ## 安装 ### 通过 DSH 插件页 1. 打开 **Settings → Plugins**。 2. 选择 **Add plugin → Install a third-party plugin**。 3. 填 Git 地址: ```text https://github.com/Jianmo-R/dsh-github-mirror ``` 4. 启用插件;如果 DSH 提示需要重启,就重启一次。 插件会安装到当前 DSH profile,不依赖 npm 发布。 ### 手工安装 把仓库克隆到固定位置,然后在 profile 里加一个链接依赖: ```jsonc // /profiles//package.json { "dependencies": { "dsh-github-mirror": "link:C:/path/to/dsh-github-mirror" }, "dsh": { "profile": { "bundles": [ "...", "dsh-github-mirror" ] } } } ``` 在 profile 目录执行 `pnpm install`,重启 DSH。插件自带的 `cordis.patch.yml` 会插入 `github-mirror` Loader 入口。 ### 通过 CLI 如果 DSH 提供了 `dsh` 命令: ```bash dsh plugin add https://github.com/Jianmo-R/dsh-github-mirror ``` ## 使用 1. 点击左侧栏的 GitHub 图标。 2. 首次打开输入 GitHub 用户名。只需要用户名,不要填邮箱或完整链接。 3. 公开仓库不需要登录;需要私有仓库时,点右上角齿轮,填写有 `repo` 读取权限的 Token。 4. 顶部两个下拉框: - **浏览线路**:控制仓库链接和主页链接打开的域名。 - **下载 / 克隆**:控制 `git clone` 命令和 zip 下载地址。 5. 仓库行右侧三个按钮:复制克隆命令、下载默认分支 zip、在镜像站打开。 用户名、线路和缓存保存在浏览器里。Token 默认只保存在当前会话,勾选「记住 Token」后才持久化。 ## 线路说明 | 线路 | 用途 | 说明 | | --- | --- | --- | | `bgithub.xyz` | 网页浏览 | GitHub 风格网页镜像,可用性会变化 | | `gitclone.com` | 网页 / Git | 网页镜像 + clone 加速 | | `ghfast.top` | 下载 / 克隆 | 代理 `github.com` 和 `raw.githubusercontent.com` | | `gh-proxy.com` | 下载 / 克隆 / API | 同时作为未登录 GitHub API 的备用入口 | | GitHub 官方 | 备用 | 直连 | 镜像站是第三方服务,随时可能失效。插件把线路做成运行时可选,并在设置里支持自定义浏览镜像和加速前缀,镜像挂掉时不需要改代码。 ## 隐私与安全 - 用户名、线路、仓库缓存保存在 `localStorage`。 - Token 默认只存在 `sessionStorage`;勾选「记住 Token」后才写入 `localStorage`。 - Token 只发送给 `https://api.github.com`,不会转发给 `gh-proxy.com` 等第三方镜像。 - 缓存可能包含私有仓库的名称和简介;点「清除本地配置」可一并删除。 - 插件只负责打开链接,不代理 git 协议,也不在本地保存仓库。 ## 已知限制 - 只读取前 100 个仓库(按最近更新排序),暂不支持分页。 - 未配置 Token 时,`/users/:name/repos` 只返回该账号拥有的公开仓库;组织仓库和协作仓库需要 Token 的 `/user/repos`。 - 镜像页面与 GitHub 的同步程度由镜像站决定,可能落后。 - 面板是启动器,不是完整的 GitHub 客户端。 ## 开发 ```text client.js 浏览器 bundle(手写 CJS,注册到 window.__ModuleLoader__) index.js 空的主机半边,只为让 bundle 有 Loader 入口 cordis.patch.yml 插入 github-mirror 入口 package.json DSH 客户端声明和包元数据 ``` 没有打包器,也不需要构建步骤。修改 `client.js` 后,DSH 客户端模块系统会按文件修订号热加载;必要时刷新页面。 常用检查: ```bash node --check client.js node -e "JSON.parse(require('fs').readFileSync('package.json','utf8'))" ``` 手工测试清单见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE)