dsh-tool-github:DeepSeek Harness 的 GitHub 工具与侧边栏面板

前言

DeepSeek Harness (DSH) 智能体在处理代码、提交 PR 或管理仓库时,通常需要与 GitHub 交互。本插件为 DSH 提供了原生的 GitHub REST API 工具,并配套浏览器侧边栏面板,解决了智能体直接调用 API 的繁琐问题,支持账号绑定、仓库搜索、Issue/PR 管理,以及将仓库克隆为本地工作区。

核心能力

该插件包含两类核心功能:面向模型(Agent)的命令行工具和面向用户的浏览器侧边栏面板。

账户绑定工具

用于在 DSH 中建立与 GitHub 的认证连接。
* github_bind:验证 GitHub 个人访问令牌,并将其持久化存储到凭证库。
* github_whoami:查询当前绑定的 GitHub 账号信息及 Token 来源。
* github_unbind:解除账号绑定,移除存储的 Token。

GitHub API 工具

注册了一系列 github_* 工具,供智能体直接调用。
* 查询类:github_repo(获取仓库元数据,如 stars、语言)、github_search(搜索仓库、代码或 Issue)、github_my_repos(列出当前账号仓库)、github_issues(列出 Issue)、github_prs(列出 Pull Request)。
* 操作类:github_create_issue、github_create_pr、github_content(读取文件或目录)、github_comment(对 Issue 或 PR 发表评论)。

工作区集成工具

将 GitHub 仓库转化为 DSH 的本地工作区。
* github_workspace_add:克隆仓库到本地并注册为工作区。
* github_workspace_list:列出已注册的 GitHub 工作区及其本地路径。

浏览器侧边栏面板

在 dsh web 界面的侧边栏添加 GitHub 图标。
* 状态显示:显示绑定的账号及注册的工作区列表。
* 仓库管理:点击列表中的仓库可将其克隆并注册为工作区。
* 操作入口:提供“绑定账号”、“添加工作区”和“刷新”按钮。

安装与启用

在插件目录下执行以下命令安装:

dsh plugin --profile web add .

安装或更新后,必须重启 Web GUI (dsh web) 以加载新的插件包。客户端插件发现机制仅在进程启动时运行,缓存了“非客户端包”的判定结果,因此运行中的 GUI 无法自动识别新安装的插件。

配置

插件支持通过配置文件或环境变量设置参数。配置项的 Token 解析优先级为:凭证库 (credential store) > 插件配置 (plugin config) > 环境变量。

在 ~/.dsh/cordis.patch.yml 或对应 Profile 目录下配置:

- id: tool-github
  config:
    token: ""  # 可选,推荐使用 github_bind 或 GITHUB_TOKEN 环境变量
    baseUrl: "https://api.github.com"
    timeoutMs: 30000
    maxResults: 10
    workspaceRoot: "~/.dsh/github-workspaces"

典型用法

在 DSH 的对话中直接调用上述工具:

# 绑定账号
github_bind <your_token>

# 查询当前账号
github_whoami

# 添加 DeepSeek-Harness 仓库为工作区
github_workspace_add deepseek-ai DeepSeek-Harness

# 查看可用的 GitHub 工作区
github_workspace_list

# 获取仓库的 star 数
github_repo deepseek-ai DeepSeek-Harness

# 搜索 stars 超过 3000 的 Python PDF 库
github_search python stars:>3000 pdf

工作原理

账户绑定机制

github_bind 首先通过调用 GET /user 验证 Token 的有效性。验证通过后,通过 DSH 的凭证接口 (ctx.credentials) 将 Token 存储在 GITHUB_TOKEN 键下,数据持久化在 $DSH_HOME/.credentials.yaml 中。后续工具调用时会自动读取该凭证,无需重复输入。

工作区集成机制

github_workspace_add 接收 owner/repo 参数。它首先尝试使用 git clone 克隆仓库到 workspaceRoot 目录,若遇到 git TLS 不可用的情况,则回退使用 GitHub CodeLoad tarball 下载。克隆完成后,调用 ctx.workspaceRegistry.create 将仓库注册到工作区注册表,使其出现在工作区选择器中,智能体即可在此目录下使用文件操作工具。

注意事项

  1. 环境要求:插件依赖 Node.js >= 20。
  2. 重启生效:修改配置或安装插件后,务必重启 dsh web 进程。
  3. TLS 回退:在特定网络环境下(如某些受限网络),插件会自动从 git clone 切换到 codeload 下载方式。
  4. 权限范围:Token 的权限范围决定了智能体能访问的仓库(包括私有仓库)和执行的操作(如读写文件、创建 PR)。

生态背景

DeepSeek Harness (DSH) 采用“一切皆插件”的架构。本插件为社区贡献的独立工具,旨在增强 DSH 与 GitHub 生态的集成能力。插件目录与 DeepSeek 官方无从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜