Back to home@zhengjy01

dsh-skill-recommender

Session-profile skill recommender for DeepSeek Harness

Stars
0
Language
TypeScript
Created
Sep 10, 2026
Updated
Sep 10, 2026
GitHub repo

Introduction

dsh-skill-recommender

A skill recommender for DeepSeek Harness. It browses your local session records across Codex, Claude and DSH, builds a compact user profile, ingests an open-source skill catalog, and ranks skills with a weighted score gated by a tunable match index — the higher the index, the higher-relevance the recommendations only.

What it does

  1. Reads sessions from three agent sources — DSH (~/.dsh/sessions/**/session.jsonl.zstd), Codex (~/.codex/*.jsonl), Claude (~/.claude/projects/**/*.jsonl) — no API keys, purely local file reads.
  2. Builds a profile: topic distribution, high-frequency tools, task types, common project directories, language/model source.
  3. Ingests a skill catalog: local skill dirs (~/.agents/skills, ~/.dsh/skills, your Obsidian 2️⃣ AI/Skill) + remote awesome lists (awesome-dsh-skills, awesome-dsh-plugin, awesome-deepseek-harness, Claude skills ecosystem), plus a small bundled seed so it always returns something.
  4. Scores & ranks with a weighted model: score = Σ(w_i × sim_i) / Σ(w_i), where dimensions are topic / tool / task / proximity-to-installed. A global match index (0–100, default 60) is the gate: only skills with score ≥ index are returned, then top-N.

Why it's different from dsh-skill-studio

dsh-skill-studio extracts reusable skills from your own sessions. This plugin recommends third-party open-source skills by extrapolating your profile. They complement each other.

Tools (model-facing)

ToolPurpose
recommender_scanScan sessions, build the profile, produce an initial recommendation run.
recommender_recommendRecommend open-source skills; optionally override index / topN / weights on the fly.
recommender_profileShow the current user profile (topics, tools, tasks, projects).
recommender_configConfigure sources, catalogs, window, match index, per-dimension weights, optional LLM enrichment.
recommender_statusShow plugin status without leaking secrets.

Web settings panel

A Skill 推荐器 card in the Web settings page: scan button, live 匹配指数 slider (0–100), four per-dimension weight sliders (topic / tool / task / proximity), catalog toggles, and recommendation cards with scores, per-dimension breakdowns and a GitHub link. The index + weights are saved to ~/.dsh/dsh-skill-recommender/config.json (mode 0600).

Compatibility

Requires DeepSeek Harness ≥ 0.1.5-rc.1 (declared as dsh.engines.dsh in the package manifest, so the DSH plugin marketplace can report it) and is verified against 0.1.5-rc.1. This build carries the DSH 0.1.5 adaptations: the strict tool-result contract (lossless-JSON snapshot, additionalProperties: false schema validation, and output.render returning ContentBlock[]) plus executable resolution that survives a launchd-started host whose PATH is only /usr/bin:/bin.

Install (development)

dsh plugin add --profile web link:/path/to/dsh-skill-recommender

Then restart the host (tools + routes) and hard-refresh the browser (client panel). Config key: skill-recommender in the bundle patch layer.

Build

pnpm install
pnpm bundle      # builds lib/index.js (ESM) + lib/client.js (browser bundle)
node tests/smoke.mjs

Notes

  • The default weight model is {topic: 50, tool: 50, task: 35, near: 40}; the index gate defaults to 60.
  • Whole-web discovery: the default github-discovery source queries the GitHub search API across the entire platform (agent/claude/codex skills, SKILL.md, awesome skills — 星标排序), so recommendations are not limited to one designated list. Results are cached (6h TTL); the unauthenticated search limit (10 req/min) is respected.
  • Skills vs plugins: each catalog is tagged skill or plugin. By default only skills are recommended (types: ['skill']); tick 含插件 in the panel to also include DSH plugins. Both markdown lists and tables are parsed (DSH skill catalogs use tables).
  • Remote catalogs are fetched with a 12s timeout and cached (6h TTL); offline runs fall back to the cache + bundled seed.
  • Background auto-scan: set autoScanMinutes (default 60, 0 = off) in the panel — the host refreshes the cached result in the background, and the panel shows the last result instantly on open. The cache is persisted to ~/.dsh/dsh-skill-recommender/last-result.json (0600).
  • No secrets are stored or echoed; LLM enrichment (optional) reuses OpenAI-compatible config, keys never returned.

License

MIT

安装 / Install

# from npm (published package)
dsh plugin --profile web add dsh-skill-recommender

# or local development
dsh plugin --profile web add link:/path/to/dsh-skill-recommender

# then restart dsh web to activate