dsh-github-reuse:让 agent 先查 GitHub,再装包集成

前言

在 DSH 里让 agent 实现一项能力时,常见路径是直接写代码。结果是本地多一套自造实现:维护成本高,接口和边界也容易和真实生态不一致。更稳妥的做法是先问「同类能力在 GitHub 上是否已有成熟项目」,再读清单与源码确认 API,最后用 npm i、pip install 等方式集成,而不是整仓复制或本地 clone。

dsh-github-reuse 是维护者 fzuleo 发布的 DSH 联网工具类插件(社区目录 skillhub,源码 GitHub)。它把上述流程固化进 agent:检索、体检、读 manifest 与文件,全程走 HTTP(GitHub REST API 与 raw 通道),不 clone 仓库,几乎不占磁盘。下文介绍它的定位、工具、安装与配置。

这是什么

插件一句话定位(与 package.json 描述一致):让 agent 在线检索并复用 GitHub 开源项目,用成熟实现拼装功能(零克隆、不占磁盘)。

维护者 fzuleo;当前 package 版本 0.1.0,许可证 MIT,运行要求 Node.js >= 22,依赖 Cordis ^4.0.0 与 @deepseek-ai/dsh-tools。

它改写的不是「能不能写代码」,而是动手前的顺序:

  1. 先检索:这类能力是否已有开源实现。
  2. 再体检:star、许可证、最近更新、体积、依赖规模是否可接受。
  3. 确认 API:读真实类型定义与示例,而不是凭记忆猜函数名。
  4. 才动手:装包集成,而不是从零实现或整仓拷贝。

核心功能

四个 GitHub 工具

工具 作用
github_search 检索仓库;支持 star 下限、语言、许可证、最近推送天数、topic 过滤与排序
github_inspect 仓库体检:star/fork/issue、语言、最近推送、体积、归档、许可证、最新 release、依赖概况、README 摘要、复用建议
github_tree_and_manifest 在线读取根目录依赖清单(package.json、pyproject.toml、requirements.txt、Cargo.toml、go.mod、composer.json、pubspec.yaml、Gemfile 等),给出依赖数、明细与装包命令
github_read 通过 raw 通道读取仓库内任意文本文件,用于确认导出 API、示例、许可证;不消耗 GitHub API 配额

系统提示词与技能

除工具外,插件还会注入:

  • 系统提示词:动手前必须给出不少于 2 个开源候选,或说明检索无果;并附带选型规则。
  • 技能 oss-reuse:完整工作流(需求拆解 → 分区检索 → 体检对比 → 确认 API → 试集成 → 记录决策)。

安装与启用

DSH 插件以 profile 组合包 形式加载。官方 README 给出的步骤是:克隆或下载仓库后,把插件目录放进 profile,建立 node_modules 链接,并在 profile 的 package.json 里登记依赖与 bundle 名,最后重启 DSH。

下面以 Windows 上默认 profile 名 desktop 为例(其他 profile 将路径中的 desktop 换成目标名即可)。

1)把插件目录复制到 profile

$p = "$env:USERPROFILE\.dsh\profiles\desktop"
Copy-Item . "$p\.dsh-github-reuse" -Recurse

2)建立 node_modules 链接

cmd /c mklink /J "$p\node_modules\dsh-github-reuse" "$p\.dsh-github-reuse"

3)在 $p\package.json 中登记

  • dependencies 增加:"dsh-github-reuse": "link:.dsh-github-reuse"
  • dsh.profile.bundles 末尾增加:"dsh-github-reuse"

4)重启 DSH

经过上面的步骤,bundle 加载后 agent 即可使用上述工具与 oss-reuse 技能。

可选配置

在 profile 的 cordis.patch.yml 里为插件 id github-reuse 增加 config(字段均以 README 为准):

- id: github-reuse
  config:
    token: 'ghp_xxxxxxxx'   # 也可用环境变量 GITHUB_TOKEN / GH_TOKEN / GITHUB_API_TOKEN
    timeoutMs: 30000        # 单次 HTTP 超时(毫秒)
    retries: 3              # 网络失败重试次数
    concurrency: 4          # 清单文件并发探测数
    maxOutputChars: 16000   # 单个工具输出上限(字符)

配额、降级与已知限制

配额

  • 匿名调用:核心 API 60 次/小时,搜索 10 次/分钟;配置 token 后核心 API 为 5000 次/小时。
  • github_read、github_tree_and_manifest 走 raw 通道,不受上述 API 配额限制。

降级与重试

  • API 不可用时,github_inspect 会降级为 raw 通道体检(缺少 star、提交时间等信息时会在结果中注明)。
  • 网络失败默认重试 3 次,退避 400ms × 次数,并限制并发以降低超时。

已知限制(README 原文)

  • 只读公开仓库;私有仓库需 token 且具备对应权限。
  • 不做代码搜索(GitHub Code Search API 需认证);定位具体实现时用 github_read 读文件。
  • 输出有长度截断;超长文件用 startLine / maxLines 分段读取。

典型用法(工作流层面)

README 未给出单独的可复制 shell 示例,典型路径是启用插件后让 agent 走 oss-reuse 技能或按系统提示词约束操作:

  1. 用 github_search 按语言、star、许可证等筛候选仓库。
  2. 对 shortlisted 仓库调用 github_inspect 对比维护状态与复用建议。
  3. 用 github_tree_and_manifest 看根目录装包命令与依赖规模。
  4. 用 github_read 读入口文件、类型定义或 README 中的 API 说明。
  5. 在本地项目中执行 manifest 给出的 npm i / pnpm add / pip install 等,而不是复制整个仓库。

agent 在「动手写业务代码」之前应已列出至少两个候选或说明检索无果。

适用场景与注意

适合谁

  • 经常在 DSH 里让 agent 接第三方能力、又不想每次从零写封装的人。
  • 希望 agent 选型时能看到 star、许可证、依赖体积等客观信息,而不是只凭模型记忆猜库名的人。

安装与运行安全

  • 插件以当前 DSH 进程权限运行;会向 GitHub 发起 HTTP 请求,配置 token 时需注意权限范围与泄露风险。
  • 安装前应阅读 仓库源码 与 MIT 许可证,确认符合你的合规要求。
  • 社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是社区维护的联网工具之一。

结尾

dsh-github-reuse 把「先搜 GitHub、再体检、读 manifest、装包集成」嵌进 agent 默认流程,并用零 clone 的 HTTP 方式控制磁盘占用与 API 使用。需要细节、Issue 或更新时,以 GitHub 仓库为准:

  • 目录页:https://www.skillhub.cn/plugins/fzuleo/dsh-github-reuse
  • 源码与 README:https://github.com/fzuleo/dsh-github-reuse
羽毛球分组比赛记分
小程序二维码

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

小夜