前言¶
用 DeepSeek Harness 做智能体开发时,议题、拉取请求、通知和仓库文件往往还要切到浏览器里的 github.com。令牌若只在网页里用,宿主进程里的 Agent 又无法直接调 GitHub API 或维护本地克隆与技能目录。下面介绍社区插件 dsh-github-panel(维护者 gpta76),它在 DSH 侧栏提供一块 GitHub 控制台:粘贴一次个人访问令牌,在应用内读写仓库相关数据,并支持克隆、自动同步与从 GitHub 安装技能项目。
这是什么¶
dsh-github-panel 是面向 DeepSeek Harness 的 web 侧栏插件,分类为「联网工具」。界面跑在 Web UI,但所有 GitHub 请求由宿主进程发出,不经过 CORS 代理,令牌也不会进入浏览器。数据每次刷新都从 GitHub REST API 读取;面板可见时后台约每 60 秒刷新一次,与 github.com 不易长期不一致。
插件当前版本为 1.2.0,许可证 MIT。社区目录页:skillhub.cn/plugins/gpta76/dsh-github-panel;源码与说明:github.com/gpta76/dsh-github-panel。DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
仓库与协作¶
| 能力 | 说明 |
|---|---|
| 仓库 | 列出可访问仓库,本地搜索,浏览目录树,预览文件(上限 300 KB) |
| Issues | 开/关筛选,创建、评论、关闭或重新打开 |
| Pull requests | 列表、查看、评论、合并(普通 merge commit,暂无 rebase/squash 选项) |
| Commits | 近期提交,含作者、说明与时间 |
| Notifications | 未读线程,单条或全部标已读,可跳到对应 issue/PR |
| Stars | 星标列表,支持搜索与即时取消星标 |
| Social | 关注的人、粉丝、所属组织 |
| Activity | 你的公开动态与所关注用户的公开动态 |
克隆与自动同步¶
从「我的仓库 / 星标 / 搜索」可将仓库克隆到磁盘,并在上游更新时尽量保持同步:
- 默认路径:
$DSH_HOME/github-clones/<owner>/<repo>(即~/.dsh/github-clones/...);可用环境变量DSH_GITHUB_CLONE_DIR覆盖。 - 同步策略:
fetch+merge --ff-only;工作区干净则跟随上游分支;有本地改动则标记为 dirty 且不覆盖;分叉则报告而不强制 reset。 - 默认每 15 分钟自动同步,可在面板关闭或调整间隔;克隆/拉取时显示整体进度与当前 git 阶段。
- 本机需安装 git 且在
PATH上;Windows 上插件会使用http.sslBackend=openssl以规避部分 Schannel 证书错误。
克隆与安装技能是两件独立的事:克隆只把仓库放到 github-clones;只有安装才会把含 SKILL.md 的内容写入 Agent 使用的 ~/.dsh/skills。
技能库¶
在「技能」视图或通过 Agent 工具,可将 GitHub 上的技能项目装进本地目录:
- 单技能:
owner/repo,可选子目录dir与ref。 - 整项目:把仓库内所有
SKILL.md作为一组「项目」安装,并写入中文一行简介、用途大类(漫剧 / 图像设计 / 视频音频 / 开发工具 / 文档办公 / 数据分析 / 自动化)及小类,以及写入whenToUse的 AI 检索关键词。 - 元数据落在
$DSH_HOME/plugin-data/github-panel-projects.json,技能目录旁有.dsh-project.json。 - 「检查更新」与 15 分钟自动同步会对比上游提交并重装已变动的项目;已安装技能的克隆行显示绿色「已安装」。
访客模式(邀请码)¶
连接卡片上的「邀请码」可进入只读访客视图:仅用公开 GitHub 数据展示资料、公开仓库、星标与动态,不保存令牌,宿主拒绝写操作。
提供给 Agent 的八项工具¶
宿主注册以下工具,便于对话中驱动 GitHub、克隆缓存与技能库:
| 工具 | 用途 |
|---|---|
github_api |
用已存令牌调用任意 GitHub REST(method、path、可选 body) |
github_skill_list |
列出本地目录中的技能及来源仓库 |
github_skill_install |
安装 owner/repo 到 ~/.dsh/skills |
github_skill_remove |
按名称移除已安装技能 |
github_skill_project |
对整技能项目 list / install / remove |
github_clone_list |
列出本地克隆及分支、upstream、ahead/behind、dirty 状态 |
github_clone |
克隆 owner/repo(可选 ref) |
github_clone_sync |
对单个克隆 fetch + 快进,或 all: true |
安装与启用¶
官方安装命令(须带 --profile web):
dsh plugin --profile web add github:gpta76/dsh-github-panel
若使用本地检出目录,也可:
dsh plugin --profile web add /absolute/path/to/dsh-github-panel
安装后重启 DeepSeek Harness,在侧栏打开 GitHub。
连接 GitHub¶
- 在 GitHub Settings → Tokens 创建个人访问令牌。
- Classic:勾选repo、read:user、notifications。
- Fine-grained:需仓库内容、issues 与 PR 读写,以及 profile 相关权限(见 README 说明)。 - 将令牌粘贴到面板,点击 连接 / Connect。宿主会先用
GET /user校验再保存。
令牌存储位置:
$DSH_HOME/plugin-data/github-panel.json
默认即 ~/.dsh/plugin-data/github-panel.json,文件权限 0600。旧版本若曾写入共享凭据存储,首次读取会迁移到该文件并删除旧记录。点击 断开 / Disconnect 会删除令牌;插件不把令牌共享给其他组件。
典型用法¶
在面板内处理通知与 PR:连接后打开通知页,标已读后点进对应 issue 或 PR,在面板内评论或合并(受令牌权限与仓库策略约束)。
克隆并跟踪上游:在仓库或星标列表点「克隆」,观察进度条;之后依赖 15 分钟自动同步或手动触发同步,本地有未提交改动时不会被快进覆盖。
为 Agent 安装技能项目:克隆某技能仓库后,点该行「安装」,或于技能视图填写 owner/repo;Agent 匹配任务时会依据 whenToUse 与分类检索 ~/.dsh/skills/<name>/SKILL.md。
在对话里让 Agent 调 API:在具备工具权限的会话中,Agent 可通过 github_api 访问 REST,或用 github_clone / github_clone_sync 管理本地克隆。
适用场景与注意¶
适合希望在 DSH 内闭环 GitHub 读写、本地克隆与技能安装、且愿意自行管理 PAT 的开发者。单次安装绑定一个 GitHub 账号;合并策略目前仅为普通 merge。
安全与运行环境方面请留意:
- 插件以当前 dsh 进程权限运行,安装前建议阅读 源码 与 MIT 许可证,确认路由校验、RPC 路径限制(仅接受以
/开头的路径、拒绝绝对 URL)及令牌仅用于api.github.com等说明是否符合你的策略。 - 无需 npm 发布;直接从 GitHub 仓库安装即可。
结尾¶
dsh-github-panel 把令牌校验、REST 访问、克隆同步和技能目录维护收进 DSH 侧栏与宿主工具,减少在浏览器与终端之间来回切换。需要详情时查阅社区目录 skillhub.cn/plugins/gpta76/dsh-github-panel 与仓库 README github.com/gpta76/dsh-github-panel。