dsh.fish
模型与 MCP 活跃维护

dsh.fish

stvlynn/dsh.fish

提供命令行下的扩展发现与安装,覆盖插件、技能、MCP服务器、预设、捆绑包及配置文件,内置搜索与筛选,自动处理依赖和版本冲突,一键完成环境搭建。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
2
Open Issues
TypeScript
主要语言
MIT
开源协议
7.6 MB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:stvlynn/dsh.fish
git clone https://github.com/stvlynn/dsh.fish.git
git clone git@github.com:stvlynn/dsh.fish.git
README.md main
dsh.fish logo

dsh.fish

The plugin registry for DeepSeek Harness.
Discover, trust, and install plugins — from the web, the terminal, or your agent.

dsh.fish hub CI npm @dsh-fish/cli MIT license Discord

English · 简体中文 · 日本語

dsh.fish catalog home page

DeepSeek Harness is built on "everything is a plugin" but ships no registry — its
README asks authors to tag repositories with the dsh-plugin topic and leaves
discovery there. dsh.fish turns that topic into a searchable, multilingual
catalog with a shared, machine-executable install plan.

Features

  • Typed catalog — bundles, profiles, skills, MCP servers, agent presets and hook bridges, classified by probing what the harness can actually load, not by self-declared tags.
  • Transparent trust signals — every artifact carries a public, reproducible quality score (S/A/B/C), a maintenance status, and 7d/30d star velocity. The formula is served at GET /api/v1/scoring, not buried in a blog post.
  • Rising, not just popular — per-sweep metrics snapshots power a rising sort that surfaces what is gaining stars this week.
  • One install plan, three surfaces — the same domain-owned plan renders as a copy-pasteable command on the web, executes in the CLI, and runs inside the harness via the hub plugin. They cannot drift apart.
  • Commit-pinned provenance — each artifact shows the exact commit it was indexed at, linked back to GitHub.
  • Community ratings from the harness — a 1–5 scale with comments, written only from the dsh CLI or hub plugin (dsh-fish rate, hub_rate) where the rater actually used the artifact. The web renders the average, the distribution and every comment read-only, and republishes the aggregate as aggregateRating structured data.
  • A real API — versioned REST endpoints plus a full-catalog snapshot with an ETag sync contract for mirrors and bots.
  • Six languages, first-class — per-locale SSR pages and Atom feeds, hreflang and structured data on every plugin page, machine-translated READMEs, per-plugin OG cards and shields-style README badges.

Screenshots

Browsing the catalog sorted by rising

Browse by kind, category, popularity — or what is rising right now.

A plugin detail page with score, install panel and README badge

Every plugin page: quality score, install panel, commit provenance, and a copyable README badge.

Quick start

Browse the catalog at dsh.fish — search, filter by kind
and category, read the install plan, copy the command.

Terminal — the CLI applies the plan for you:

npx @dsh-fish/cli add <artifact-id>

add / find / list / remove / update match the skills CLI
vocabulary and actually write skills, MCP rows, presets and hook bridges into
$DSH_HOME.

Inside the harness — add the hub plugin once:

dsh plugin --profile web add github:stvlynn/dsh.fish#main

It registers hub_search, hub_show, hub_install, hub_list, hub_remove,
hub_update and hub_account, so an agent can discover and install artifacts
without leaving the session. Signing in uses the OAuth device flow.

Publishing a plugin? Tag your repository with the dsh-plugin topic. The
hourly crawl inspects its package.json, SKILL.md or agent.cordis.yml and
classifies what the harness can actually load. MCP servers and hook bridges are
declared in package.json as dsh.hub.kind with a dsh.hub.mcp or
dsh.hub.hook block — see
docs/project/architecture.md
for the manifest shape.

What it indexes

Kind What it is How it installs
Bundle npm package declaring dsh.bundle.patch dsh plugin --profile <p> add <spec>
Profile ordered dsh.profile.bundles stack one add per bundle, in order
Skill SKILL.md bundle or flat Markdown files written under $DSH_HOME/skills
MCP server external server declared via dsh.hub.mcp a dsh-mcp-client row in the profile patch
Agent preset directory holding one agent.cordis.yml written to $DSH_HOME/.agent-presets/<id>
Hook bridge Claude Code / Codex bridge declared via dsh.hub.hook a bridge plugin row in the profile patch

Repository layout

backend/    Domain-Driven Design: domain, application, infrastructure, interfaces
frontend/   Feature-Sliced Design: app, pages, widgets, features, entities, shared
packages/
  dsh-plugin-hub/   the `dsh-hub` bundle users install into their harness
  dsh-cli/          `@dsh-fish/cli` — `npx @dsh-fish/cli add <id>`
docs/       architecture, layer conventions, operations, ADRs

Both halves deploy as one Cloudflare Worker: Hono at /api/*, React Router
SSR everywhere else, D1 for the catalog, KV for sessions, and a Cron Trigger
that re-crawls every hour.

Development

pnpm install
pnpm run dev    # http://localhost:5173

Quality gates: pnpm run typecheck && pnpm run test && pnpm run test:e2e && pnpm run build.

Deployment, bindings and secrets: docs/operations/deployment.md.
Conventions and architecture: AGENTS.md, docs/project/architecture.md, docs/decisions/.

Community

License

MIT