前言¶
在 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。
它改写的不是「能不能写代码」,而是动手前的顺序:
- 先检索:这类能力是否已有开源实现。
- 再体检:star、许可证、最近更新、体积、依赖规模是否可接受。
- 确认 API:读真实类型定义与示例,而不是凭记忆猜函数名。
- 才动手:装包集成,而不是从零实现或整仓拷贝。
核心功能¶
四个 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 技能或按系统提示词约束操作:
- 用
github_search按语言、star、许可证等筛候选仓库。 - 对 shortlisted 仓库调用
github_inspect对比维护状态与复用建议。 - 用
github_tree_and_manifest看根目录装包命令与依赖规模。 - 用
github_read读入口文件、类型定义或 README 中的 API 说明。 - 在本地项目中执行 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