🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

GitHub 集成 contraliz/dsh-gh

DeepSeek Harness
contraliz6 天前有提交已提供中文文档扫描:含敏感能力

登录 GitHub 后让智能体处理 PR、提交与推送

31.6/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add contraliz/dsh-gh
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · market
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 16 处,展示前 16 条)
  • 发起网络请求
    lib/client.js:121
    response = await fetch(path, init)
  • 读取本地文件
    dist/auth.js:93
    const text = await readFile(path, 'utf8');
  • 写入本地文件
    dist/auth.js:133
    await mkdir(join(path, '..'), { recursive: true, mode: 0o700 });
  • 写入本地文件
    dist/auth.js:134
    await writeFile(path, `${JSON.stringify(payload, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
  • 写入本地文件
    dist/auth.js:135
    await chmod(path, 0o600).catch(() => { });
  • 删除本地文件
    dist/auth.js:150
    await rm(legacyAuthFilePath(), { force: true }).catch(() => { });
  • 删除本地文件
    dist/auth.js:166
    await rm(authFilePath(), { force: true }).catch(() => { });
  • 删除本地文件
    dist/auth.js:167
    await rm(legacyAuthFilePath(), { force: true }).catch(() => { });
  • 发起网络请求
    dist/auth.js:258
    const response = await fetch(`${apiBase(host)}/user`, {
  • 发起网络请求
    dist/auth.js:327
    response = await fetch(`${webBase(this.#host)}/login/oauth/access_token`, {
  • 发起网络请求
    dist/auth.js:375
    const response = await fetch(`${webBase(options.host)}/login/device/code`, {
  • 执行外部命令固定命令
    dist/gh.js:96
    child = spawn('gh', args, {
  • 执行外部命令固定命令
    dist/git.js:61
    child = spawn('git', args, {
  • 写入本地文件
    dist/git.js:126
    await writeFile(path, script, { encoding: 'utf8', mode: 0o700 });
  • 写入本地文件
    dist/git.js:127
    await chmod(path, 0o700).catch(() => { });
  • 删除本地文件
    dist/git.js:172
    await rm(askpass, { force: true }).catch(() => { });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 GitHub 插件:用 GitHub 登录后,就能处理拉取请求、提交、推送,以及该账号可见的任意仓库。

README

由 DeepSeek 最新模型翻译生成
dsh-gh 为 DeepSeek Harness 提供 GitHub 能力:登录一次,之后就能让智能体处理 pull request、commit、push,以及账号能看到的任何仓库——和 GitHub 插件在 Codex 里给你的工作流一样。 - 在插件内登录——GitHub CLI 登录、OAuth 设备流,或粘贴 personal access token。 - Pull request——列出 open/closed 的 PR,读取元数据、文件、diff、检查、评审和评审讨论串;创建、更新、在 diff 行上留行内评论做评审、评论、合并。 - Commit——历史、带补丁的单条 commit,以及 ref 之间的比较。 - 推送改动——gh_push_files 通过 Git Data API 把文件内容直接提交到远程分支(无需 clone),gh_git_push 推送工作区分支。 - 浏览任意仓库——仓库、tree、文件,以及跨 GitHub 的代码/issue/PR/commit 搜索。 - Issue 与 Actions——读取、创建、更新 issue;查看 run、日志,重跑 workflow。 - 写入需审批——每次变更都先询问用户,并可用 allowlist 限制;读取永不弹窗。 要求 - DeepSeek Harness 0.2.1 或更新版本。
展开完整文档(README 剩余 1 节)
dsh-gh

为 DeepSeek Harness 提供 GitHub 能力:登录一次,之后就能让智能体处理 pull request、commit、push,以及账号能看到的任何仓库——和 GitHub 插件在 Codex 里给你的工作流一样。

- 在插件内登录——GitHub CLI 登录、OAuth 设备流,或粘贴 personal access token。
- Pull request——列出 open/closed 的 PR,读取元数据、文件、diff、检查、评审和评审讨论串;创建、更新、在 diff 行上留行内评论做评审、评论、合并。
- Commit——历史、带补丁的单条 commit,以及 ref 之间的比较。
- 推送改动——gh_push_files 通过 Git Data API 把文件内容直接提交到远程分支(无需 clone),gh_git_push 推送工作区分支。
- 浏览任意仓库——仓库、tree、文件,以及跨 GitHub 的代码/issue/PR/commit 搜索。
- Issue 与 Actions——读取、创建、更新 issue;查看 run、日志,重跑 workflow。
- 写入需审批——每次变更都先询问用户,并可用 allowlist 限制;读取永不弹窗。

要求

- DeepSeek Harness 0.2.1 或更新版本。
- PATH 上有 GitHub CLI(gh)。插件把它当作执行层,因此继承 gh 的认证、分页和企业主机支持。
- Node.js 22.19 或更新版本(仅从源码构建时需要)。

安装

直接从仓库安装:

dsh plugin --profile desktop add github:contraliz/dsh-gh

或从本地 checkout 安装:

git clone https://github.com/contraliz/dsh-gh
dsh plugin --profile desktop add link:$PWD/dsh-gh

在 Plugins 页面:Settings → Plugins → Install plugin,粘贴 github:contraliz/dsh-gh。包还没上 npm;上架后 dsh plugin --profile desktop add dsh-gh 效果相同。

安装后重启 DSH。聊天输入框左侧会出现 GitHub 按钮。

连接账号

点击 GitHub 按钮,选一种方式:

| 方式 | 作用 |
| Use the GitHub CLI login | 采用本机 gh auth login 已保存的凭据。 |
| Sign in with a browser | 走 OAuth 设备流:面板显示一个 code,你在 GitHub 上批准。需要 oauthClientId。 |
| Paste a personal access token | 校验 token,存进 DSH 凭据存储。 |

主机提供 DSH 凭据接缝时,token 存在那里;否则存在 $DSH_HOME/.dsh-gh/auth.json,权限 0600。token 绝不返回浏览器、绝不写进工具结果、绝不进日志行。

浏览器流程需要注册 OAuth App(Settings → Developer settings → OAuth Apps),启用 Device flow,把 client id 写进配置档配置:

- id: dsh-gh
name: 'dsh-gh'
config:
oauthClientId: Iv23li...

配置

| 字段 | 默认值 | 含义 |
| host | github.com | GitHub 主机;为 GitHub Enterprise 设置主机名。 |
| authSources | ['stored', 'gh', 'env'] | 凭据查找顺序。 |
| tokenEnv | GITHUB_TOKEN | env 来源读取的环境变量。 |
| oauthClientId | '' | 设备流使用的 OAuth App client id。 |
| oauthScopes | repo, read:org, workflow, read:user | 设备流申请的权限范围。 |
| workspaceDir | 会话 cwd | git 调用的兜底工作目录。 |
| allowedActions | [''] | 审批门允许的写操作。 |
| readOnly | false | 只注册读工具:纯写工具不出现,gh_workflow 和 gh_api 保留,但拒绝自身的变更操作。 |
| maxReadChars | 40000 | 单次读取返回文本的上限。 |
| maxDiffChars | 60000 | diff/patch 文本的上限。 |
| commandTimeoutMs | 60000 | 单次 gh 调用的超时时间。 |
| showLoginUi | true | 注册输入框按钮、浮层和设置卡片。 |

写操作名称:pr.create、pr.update、pr.review、pr.comment、pr.merge、issue.create、issue.update、 push.files、push.git、workflow、api.write。

工具

| 工具 | 用途 |
| gh_account | 已连接的登录账号、主机、权限范围、凭据来源、配置档。 |
| gh_repo | 查看、列出或搜索仓库。 |
| gh_file | 读取文件,或列出任意 ref 下的目录。 |
| gh_tree | 某个 ref 下的仓库树。 |
| gh_search | 搜索代码、issue、PR、提交或仓库。 |
| gh_commit | 获取提交、列出历史或比较 ref。 |
| gh_pr | 列出 PR(action: "list")或读取单个 PR(action: "read"):元数据、文件、diff、检查、评审、讨论串、评论。 |
| gh_pr_create | 创建 PR。 |
| gh_pr_update | 编辑 PR、切换草稿状态、更换评审人或标签。 |
| gh_pr_review | 批准、评论或请求修改,可附带行内 comments;解决讨论串。 |
| gh_pr_comment | 在 PR 上发会话评论。 |
| gh_pr_merge | 以 merge/squash/rebase 方式合并。 |
| gh_issue / gh_issue_create / gh_issue_update | 读取、创建和更新 issue。 |
| gh_push_files | 不克隆仓库,直接把文件变更提交到分支。 |
| gh_git_push | 用已连接的凭据推送工作区分支。 |
| gh_checks | 查看 PR 或 ref 的 CI 检查。 |
| gh_workflow | 列出/查看运行、读取日志、重跑、触发。读操作从不弹审批。 |
| gh_api | 任意 REST 端点的逃生通道;非 GET 方法会请求审批。 |

安全模型

- token 通过 GH_TOKEN 注入子进程,绝不出现在命令行上。
- git push 使用一次性 GIT_ASKPASS 辅助程序,从子进程环境读取 token,因此 token 绝不会出现在 ps、.git/config 或捕获的输出里。
- 捕获的 gh/git 输出在进入工具结果之前会先脱敏。
- 写操作经过宿主的 tools/pre-execute 审批门,按操作分类:gh_workflow rerun/dispatch 和非 GET 的 gh_api 会弹出提示,而 logs、list-runs 和 GET 调用不会。readOnly 会完全移除纯写入类工具,混合类工具则保留,但拒绝执行自身的变更操作。
- gh_git_push 使用 --force-with-lease,而不是 --force,并且只在调用方明确要求时才使用。

开发

npm install
npm run build # tsc + client bundle validation
npm test # unit tests (no network)
DSH_GH_E2E=1 npm run test:e2e # real GitHub tests against DSH_GH_E2E_REPO

提交源码改动时,一并提交重新构建的 dist/ 和 lib/ 产物;仓库直接分发构建产物,因此安装配置档时无需再执行构建步骤。

宿主端用 TypeScript 编写,运行时不依赖 @deepseek-ai/ 包,因此即使官方包无法解析,也能从配置档安装中加载。浏览器端是手写的 window.__ModuleLoader__.load() bundle,位于 lib/client.js。

与 Codex GitHub 插件的关系

Codex 的 GitHub 插件是一个连接器:OAuth 授权由 ChatGPT 持有,连接器对外暴露 91 个工具。本插件是 DeepSeek Harness 的对应实现,能力相同,但凭据归插件所有,工具面精简到 20 个以保护上下文窗口,并且每次写入都需要审批。

许可证

MIT
预览分享卡片长什么样 ↓contraliz/dsh-gh
分享 · DeepSeek Harness Hub
contraliz/dsh-gh

登录 GitHub 后让智能体处理 PR、提交与推送

这是你的仓库?认领条目

回到顶部