DeepSeek Harness 插件

dsh-github-cli

Reuse your local GitHub CLI (gh) inside DeepSeek Harness. Read-first, audit-friendly tools for repos, PRs, issues, releases, workflows and more.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Nico0713520/dsh-github-cli
最近更新
2026年8月17日
分类
安全与权限
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Nico0713520/dsh-github-cli
插件名:dsh-github-cli
作者:Nico0713520

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

<div align="center">

dsh-github-cli

把你的 GitHub CLI (gh) 直接接进 DeepSeek Harness —— 零 token 配置,只读优先。

![CI](https://github.com/Nico0713520/dsh-github-cli/actions/workflows/ci.yml) ![License: MIT](./LICENSE) ![dsh-plugin](https://github.com/topics/dsh-plugin)

English · 中文

</div>

> 如果你已经用 gh 登录过这台机器,这个插件装完就能用。你的 Agent 可以直接查 PR、看 issue、搜代码、跑 gh api —— 用你已有的账号,不用再配任何 token。

为什么是 gh,而不是 GitHub MCP server?

DeepSeek Harness 支持 MCP,GitHub 也有官方 MCP server。但它们不是一回事:

dsh-github-cli(本插件)GitHub MCP server
登录复用你现有的 gh 登录(含企业版/SSO)需要单独 PAT 或 OAuth 流程
命令面每个 gh 子命令 + gh api只有精选的几个工具
写保护逐命令白名单(默认只读)工具级 scope
配置零配置、零 token装 server + 配 transport + 配 token

一句话:gh 是你已经信任、已经登录的那把钥匙,这里只是把它递给你的 Agent。

特性

  • 零配置 —— 复用 gh 本机登录态,不用生成、粘贴、管理任何新 token
  • 只读优先 —— 默认只放行安全命令(view/list/status/search/checks/diff),写操作需显式开启
  • 凭据永禁 —— auth tokensecretssh-key 等命令即使开了全访问也拒绝,杜绝密钥泄露进对话
  • 无注入 —— execFile + 参数数组(shell: false),不存在 shell 注入
  • 企业友好 —— 已登录的 enterprise / SSO 账号直接可用
  • 18 项单元测试 + 三版本 Node CI —— 每个命令边界都有测试兜底

30 秒上手

# 1. 安装(GitHub 源,立即可用)
dsh plugin --profile web add git+https://github.com/Nico0713520/dsh-github-cli.git

# 2. 重启 dsh web(让插件作为 bundle 层生效)
# 3. 在对话里直接问

安装后,在任意会话里:

你:这个仓库有哪些未关闭的 PR?
Agent:→ 执行 gh pr list --state open -R deepseek-ai/deepseek-harness

你:帮我看看 PR #123 改了什么
Agent:→ 执行 gh pr diff 123

你:gh 在这台机器上登录了没?
Agent:→ 执行 gh_auth_status

工具

工具作用
gh_cli_run以参数数组执行任意 gh 子命令
gh_auth_status检查 gh 是否已安装并登录

安全模型

这是本插件与其他 gh 封装最核心的区别 —— 每个命令都落在三个层级之一:

层级示例行为
🟢 只读白名单repo view/listpr view/list/status/diff/checksissue view/listsearch *gist view/listrelease view/listrun view/listworkflow view/listapi(仅 GET)、auth statusversionhelp默认放行
🟡 写操作pr create/mergeissue closerepo deleterelease createapi --method POST/DELETEapi -f/--field/--input需配置 fullAccess: true 才放行
🔴 永禁auth login/logout/token/refreshsecret *ssh-key *任何情况都拒绝

为什么要这样设计

  • 只读命令不会改动 GitHub 状态,按需执行是安全的。
  • 写命令会改变真实世界fullAccess 是一个明确、写在文档里的主动选择。
  • 凭据类命令无条件拒绝,因为它们的输出可能把密钥泄露进对话、或破坏你的登录。
  • 命令通过 execFile + 参数数组执行(shell: false),不存在参数注入
  • 顺带处理了两个容易踩的坑:gh api -f key=value隐式变成 POST(已识别为写);workflow run list(读)和 workflow run <file>(写)能精确区分。

配置

插件读取 GhCliConfig(在 profile 的插件配置里设置):

interface GhCliConfig {
  ghPath?: string        // gh 路径,默认 PATH 上的 `gh`
  fullAccess?: boolean   // 允许写命令,默认 false
  extraReadOnly?: string[]  // 额外放行的只读前缀,如 ['gist create']
  timeoutMs?: number     // 单次调用超时,默认 60_000
}

cordis patch 示例:

- insert:
    - id: gh-cli
      name: gh-cli
      config:
        fullAccess: false
        timeoutMs: 120000

FAQ

装了之后怎么没生效? —— 一个包只有声明了 dsh.bundle.patch 才会成为激活的 Harness 层(本插件自带 cordis.patch.yml)。装完必须重启 dsh web(或刷新页面)。

会泄露我的 token 吗? —— 不会。gh auth token 这类命令在最高安全层级,任何情况下都拒绝执行;只读命令的输出不含凭据。

为什么默认不是全功能? —— 把 gh 交给一个能读你工作区、跑 shell 的 Agent,最稳妥的做法是"默认只读、按需放开"。安全边界应该是显式的,而不是隐式的。

支持哪些 gh 版本? —— 只要 gh 已登录且版本较新即可;本插件用参数数组调用,不依赖特定版本语法。

开发

git clone https://github.com/Nico0713520/dsh-github-cli.git
cd dsh-github-cli
npm install
npm run typecheck
npm test
npm run build

# 在本地 Harness 检出里调试
dsh plugin --profile web add "link:$(pwd)"

要求

  • Node.js ≥ 20
  • GitHub CLI 已安装并登录(gh auth login
  • DeepSeek Harness(@deepseek-ai/dsh)—— 已在 0.1.0-rc.x 验证

相关链接

License

MIT — 见 [LICENSE](./LICENSE)。