stakeswky/awesome-dsh

DSH插件生态导航:GitHub topic dsh-plugin 全量目录,自动抓取 + Workers AI 中文翻译 + 按需检索技能|2600+ DeepSeek Harness 插件自动更新目录

项目介绍Project Overview

awesome-dsh 是一个可安装的 DSH 插件,注册 dsh-plugin-finder 技能:按需检索 dsh-plugin topic 下的全部插件目录,返回真实安装命令。目录由 Cloudflare Worker 定时抓取 GitHub、按 star 分区取全量,并用 Workers AI 将英文简介增量译为中文缓存。适合在 DSH 中按需求查找插件时使用。注意技能只调用公开搜索端点,全量数据依赖 6 小时 cron 更新。

awesome-dsh is an installable DSH plugin that registers the dsh-plugin-finder skill. It searches the full dsh-plugin GitHub topic directory on demand and returns real install commands. A Cloudflare Worker crawls GitHub via star-range partitioning, caches snapshots in KV, and incrementally translates English descriptions into Chinese with Workers AI. Use it when finding DSH plugins by need. The skill uses only public search endpoints; full data refreshes through a six-hour cron.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add github:stakeswky/awesome-dsh

stakeswky/awesome-dsh 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

awesome-dsh

按种类和功能浏览 GitHub topic dsh-plugin 下的全部插件,英文简介由 Workers AI 自动译成中文。

线上地址:https://dsh.jamintextiles.com

本仓库同时是一个可安装的 DSH 插件:dsh plugin --profile <profile> add github:stakeswky/awesome-dsh 会把按需查插件的技能注册进 DSH。

架构

单个 Cloudflare Worker 承载整站。两条 cron 分工,数据与页面分离,更新数据不需要重新部署。

  ┌─ cron 17 */6 * * *  抓取 ─────────────────────────┐
  │   GitHub Search API ──▶ 按 star 分区取全量        │
  │                          ▼                        │
  │                    KV plugins:latest ◀────────┐   │
  └───────────────────────────────────────────────┼───┘
  ┌─ cron */5 * * * *   翻译 ─────────────────────┼───┐
  │   Workers AI ──▶ 每轮译 60 条 ──▶ KV 翻译缓存 ─┘   │
  └───────────────────────────────────────────────────┘
                             │
         浏览器 ◀─ /api/plugins.json ◀─ fetch()
         浏览器 ◀─ index.html(静态资源直出)

取全量:按 star 分区

GitHub 搜索对单个查询最多只返回 1000 条,而该 topic 已有 2600+ 仓库。抓取时把 star 区间切成若干片分别查询,某片命中数超过 1000 就继续二分;单一 star 值(如 stars:0)仍超限时改按仓库创建时间二分。任何分布都能取全,且随生态增长自动适应。

抓取全程约 3.5 分钟:匿名调用 GitHub 搜索限额为每分钟 10 次,代码按 6.5 秒一次节流;配了 GITHUB_TOKEN 后限额升到 30 次/分钟,间隔自动降到 2.1 秒。

翻译:增量填充 + 永久缓存

  • 简介里中日韩字符达到 6 个即视为已是中文,跳过翻译。
  • 译文按 full_name + 原文指纹缓存在 KV,原文没变就永不重译;抓到新快照时自动回填。
  • 每 5 分钟译 60 条,首次填满 1400 余条约需 2 小时,之后只翻新增的。
  • 模型 @cf/meta/llama-3.3-70b-instruct-fp8-fast(对比过 m2m100、llama-3.2-3b:m2m100 把 “AI agent” 译成 “AI特工”,3b 会脑补原文没有的内容)。
  • 单条翻译失败只跳过该条,留待下一轮重试,不影响其余。

抓取失败的保护

抓取或校验失败时保留上一份快照,只把错误记到 KV,页面不会变空。新结果少于 100 条、或少于上一份的一半时同样拒绝发布。

端点

端点 说明
GET / 导航页面
GET /api/search 按相关度检索,只回少量精简结果;参数 qkind、可重复的 fnlimit(默认 8,上限 25)
GET /api/facets.json 可用的种类与功能标签及各自数量
GET /api/plugins.json 完整快照(约 1.1 MB,gzip 后约 290 KB);带 ETag,命中条件请求返回 304
GET /api/status.json 抓取与翻译进度,以及未恢复的错误
POST /api/refresh 手动触发抓取,需 Authorization: Bearer <REFRESH_KEY>
POST /api/translate 手动触发一批翻译,同样需要令牌

自动化调用方(如 dsh-plugin-finder skill)应当只用 /api/search:全量快照有 1.1 MB,为挑几个插件把整份目录读进上下文是浪费。检索排序为「词条得分 × 流行度系数」——该 topic 下有成批靠仓库名塞关键词的克隆仓库,纯词条打分会让它们压过成熟项目。

两个 POST 端点立即返回 202,任务在后台跑,结果轮询 /api/status.json

注意:后台任务的存活时间短于一次全量抓取(约 3.5 分钟),所以 /api/refresh 在匿名抓取下大概率跑不完就被回收——全量抓取以 6 小时的 cron 为准(cron 有 15 分钟额度)。配上 GITHUB_TOKEN 后抓取缩短到约 70 秒,手动触发才稳定可用。/api/translate 一批只要十几秒,不受此限。

运维

部署:

cd /Volumes/data/dev/dsh-plugin-explorer/worker && npx wrangler deploy

查看抓取与翻译进度:

curl -s https://dsh.jamintextiles.com/api/status.json

手动催一批翻译(密钥存在 worker/.refresh-key,已 gitignore):

cd /Volumes/data/dev/dsh-plugin-explorer/worker && curl -X POST -H "Authorization: Bearer $(cat .refresh-key)" https://dsh.jamintextiles.com/api/translate

实时日志(含两条 cron 的执行结果):

cd /Volumes/data/dev/dsh-plugin-explorer/worker && npx wrangler tail

本地开发。Workers AI 只有远端实现,所以不要加 --local,否则 AI 绑定直接报错:

cd /Volumes/data/dev/dsh-plugin-explorer/worker && npx wrangler dev --port 8788
curl "http://localhost:8788/cdn-cgi/local/scheduled?cron=17+*/6+*+*+*"

配置

都在 worker/wrangler.jsonc,改完重新部署生效:

  • vars.GITHUB_TOPIC — 抓取的 topic,默认 dsh-plugin
  • vars.TRANSLATE_BATCH — 每轮翻译条数,默认 60
  • vars.CRON_FETCH / vars.CRON_TRANSLATE — 必须与 triggers.crons 里的表达式逐字一致,否则 scheduled() 会拒绝执行并报错
  • triggers.crons — 定时表达式

提高 GitHub 限额(可选,能让手动抓取也稳定跑完):

cd /Volumes/data/dev/dsh-plugin-explorer/worker && npx wrangler secret put GITHUB_TOKEN

分类规则

种类(单选)与功能标签(可叠加)都由名称、描述、topic 的关键词匹配得出,规则是 worker/src/index.ts 里的 KINDSFUNCTIONS 两个数组,发布快照时算好存进去。页面和 /api/search 共用这份结果,规则只有这一处;页面只保留 id 到显示名的映射。

分类只看原文:把译文一并计入会让 “vision → 视觉” 这类词重复命中,放大误判。搜索则同时匹配原文和译文,所以用中文也搜得到英文项目。

按需查插件的 skill

SKILL.md 把「用户说要什么 → 检索本站 → 给出真实安装命令」这套流程固化下来,含检索技巧(中英混合词、宽泛诉求改用标签筛选)和两个已知坑:git 源插件首次 add 会被 pnpm 的 allowBuilds 拦下,以及未声明 dsh.bundle 的包只会作为普通依赖装上、不激活插件层。

同一份 SKILL.md 有两种装法,都只读公开端点,不需要任何密钥。

装进 DSH(本仓库即 DSH 插件包):

dsh plugin --profile <profile> add github:stakeswky/awesome-dsh

插件把 SKILL.md 注册为 ctx.skills 上的 dsh-plugin-finder,DSH 智能体按需加载。

装进 Claude Code

mkdir -p ~/.claude/skills/dsh-plugin-finder && cp SKILL.md ~/.claude/skills/dsh-plugin-finder/

装好后说「给 DSH 装个能看图的插件」「DSH 有没有记忆类插件」即可触发。

自行部署一份

worker/wrangler.jsonc 里的 KV namespace id 和自定义域名属于本站账号,换成自己的:

cd worker && npm install
npx wrangler kv namespace create DSH_PLUGINS   # 把输出的 id 填进 wrangler.jsonc

再把 routes 换成自己的域名(或整段删掉,走 *.workers.dev),然后:

npx wrangler deploy
npx wrangler secret put REFRESH_KEY   # 自定一个随机串,用于手动触发抓取/翻译

首份数据等抓取 cron 触发即可(最长 6 小时),或临时把 CRON_FETCHtriggers.crons 改密一些跑一轮再改回来。Workers AI 与 KV 均需 Workers 付费计划:全量抓取要跑约 3.5 分钟,超出免费版的 CPU 与子请求额度。

上一个 Prev dsh_PromptRecall 下一个 Next dsh-free-web-search