dsh-starter-kit
DSH 初级整合包 —— 一键基础环境。插件清单的唯一事实源是 scripts/manifest.json;install.ps1 / install.sh / README 都从它取,不再各写一份(旧版三处各写一份,结果三方都漂了,README 的安装 URL 甚至指向不存在的分支)。
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Oct 1, 2026
Introduction
dsh-starter-kit — DSH 初级整合包
给新用户 / 新机器的一键基础环境:自研插件 + 精选第三方插件 + 官方文档 MCP。 一条命令装好,装完自动验证并报告问题。
世代:DSH
0.2.0+。 不兼容 0.1.x —— 见「世代与兼容性」,那不是口号,是宿主会强制执行的。
一键安装
# Windows (PowerShell)
irm https://raw.githubusercontent.com/snow-The/dsh-starter-kit/master/install.ps1 | iex
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/snow-The/dsh-starter-kit/master/install.sh | sh
⚠️ 注意 URL 里是
master,不是main。本仓库的分支名是master;早先 README 写main, 那条命令直接 404(已实测)。scripts/check.mjs会核对 README、两个安装脚本与真实分支名是否一致, 所以这个错不会再悄悄回来。
可选参数:--profile <name> 指定 profile(默认 web)、--skip-verify 跳过装机后验证。
PowerShell 版对应 -Profile / -SkipVerify。
安装脚本做什么
- 清单自检 —— 先验证
scripts/manifest.json不含退役包、URL 分支名正确、脚本没有吞掉宿主输出 - clone 或更新
snow-The/dsh-own-plugins到~/.dsh-starter/plugins - 安装自研插件(
file:安装,dist 已提交,无需构建) - 安装第三方插件
- 写入
mslearnMCP 配置(幂等,已存在则跳过) - 验证 —— 用宿主自己的
dsh --profile <name> --dump-config取实际组合结果,核对每个包是否真的加载、是否被禁用 - 打印结果与下一步
第 6 步是这次重写的重点。 旧版装完只打印 Done,而且把 dsh plugin 的输出丢进了 Out-Null ——
于是宿主说「这个插件会被禁用」时,用户一个字都看不到。一个"成功"但装出坏 profile 的安装,比一个明确失败的安装更糟。
包含什么
清单的单一事实源是 scripts/manifest.json,安装脚本从它读取 ——
早先这份清单在 install.ps1、install.sh、README 里各写一份,结果三方都漂了。
自研插件(github.com/snow-The/dsh-own-plugins)
| 包 | 功能 |
|---|---|
@snow-the/dsh-gitkit | 结构化 git 工具(status/diff/log/commit/branch),无 shell 注入 |
@snow-the/dsh-snapshot | ~/.dsh 备份/恢复/轮换(sha256 + 路径穿越防护) |
@snow-the/dsh-plugin-doctor | 插件静态体检 —— 装任何第三方插件前先扫 |
@snow-the/dsh-skill-pack | 精选跨平台技能的载体 |
@snow-the/dsh-search | 通用检索(modsearch 退役后由它补位) |
入选条件(由 scripts/check.mjs 强制):dist/ 已提交(file: 安装不跑构建)、doctor 扫描 SAFE、通用而非专用。
第三方插件
| 包 | 功能 |
|---|---|
dshmarket | 插件市场界面(浏览/搜索/一键装社区插件) |
@deepseek-ai/dsh-experimental-agent-team-profile | 原生多 agent 团队 |
@linxin666/dsh-web-all | UI 全家桶(文件树/预览/SCM/任务板/git 图/SSH/皮肤) |
aegis | 软件工程方法包 |
官方文档 MCP(免费无 key)
mslearn —— Microsoft Learn 官方文档直达(streamable-http → learn.microsoft.com/api/mcp)。
安装脚本会自动写入 cordis.patch.yml。
已移除(不要再加回来)
scripts/check.mjs 会把它们判成失败,理由一并记在这里:
| 包 | 为什么移除 |
|---|---|
@liustack/modlens | 作者已声明弃用 —— DSH 0.2.0 已能原生读图 |
@liustack/modsearch | 作者已声明弃用(dsh-search 补位) |
@anionex/dsh-vision-toolkit | 作者已声明弃用 —— DSH 0.2.0 已能原生读图 |
@nanmicoder/dsh-agent-teams | 被原生 @deepseek-ai/dsh-experimental-agent-team-profile 取代 |
@openviking/dsh-memory-plugin | peer 是 >=0.1.0-rc.6 <0.2.0,在 0.2.0 宿主上必然 ERESOLVE |
dsh-web · @linxin666/dsh-web-ui-all · @linxin666/dsh-client-ui-skin-center | 均被 @linxin666/dsh-web-all 收拢 |
世代与兼容性
本整合包面向 DSH 0.2.0+,不兼容 0.1.x。
每个自研插件在自己的 package.json 里声明:
"peerDependencies": { "@deepseek-ai/dsh": ">=0.2.0-rc.1" }
宿主启动预检时用 semver.satisfies(runtime, range, { includePrerelease: true }) 比对,
不满足就把该插件禁用(只在 stderr 留一行)。所以在 0.1.x 上装本整合包,插件一个都不会加载。
为什么下界是
>=0.2.0-rc.1而不是字面的>=0.2.0:宿主比对带includePrerelease,而0.2.0-rc.2不满足>=0.2.0。写>=0.2.0会让每个插件在 0.2.0 正式版发布前就被禁用。两者划的是同一条世代界线, 前者今天可用。
手动安装(不用脚本)
git clone --depth 1 https://github.com/snow-The/dsh-own-plugins ~/.dsh-starter/plugins
# 自研(file: 安装,dist 已提交)
for p in dsh-gitkit dsh-snapshot dsh-plugin-doctor dsh-skill-pack dsh-search; do
dsh plugin --profile web add "file:$HOME/.dsh-starter/plugins/$p"
done
# 第三方
dsh plugin --profile web add dshmarket
dsh plugin --profile web add @deepseek-ai/dsh-experimental-agent-team-profile
dsh plugin --profile web add @linxin666/dsh-web-all
dsh plugin --profile web add github:GanyuanRan/Aegis
然后手动把这段加到 ~/.dsh/profiles/web/cordis.patch.yml:
- insert:
- id: mcp-mslearn
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: mslearn
transport: streamable-http
url: https://learn.microsoft.com/api/mcp
failOnStartupError: false
自检与验证
node scripts/check.mjs # 清单自检(安装前,脚本会自己调)
node scripts/verify.mjs --profile web # 装机后验证(安装后,脚本会自己调)
check.mjs 断言:清单不含退役包、自研插件 dist/ 已提交、README 与两个安装脚本的 URL 分支名和真实分支一致、
安装脚本没有吞掉 dsh plugin 的输出。
verify.mjs 用宿主自己的组合结果(--dump-config)核对:每个包是否真的进了配置、
是否被标记 disabled、可加载入口是否就位、自研插件是否带 0.2.0 世代声明。
合规说明
- 自研插件:doctor 静态扫描 SAFE(文档链接/示例 URL 类命中已人工核实)
- 第三方插件:安装前建议跑
doctor_scan再装(@snow-the/dsh-plugin-doctor提供) - 本整合包不包含任何未审计的第三方插件,也不含任何 API key
故障排查
| 现象 | 原因与处理 |
|---|---|
| 一键安装命令 404 | URL 里的分支名不对。本仓库是 master;若你改过分支名,同步改 README 与两个脚本(check.mjs 会核对)。 |
| 装完插件一个都没加载 | 宿主版本低于 0.2.0。Arch 启动时的 stderr,宿主会逐个打印被禁用的插件及原因。 |
某个包 [失败] | npm 包名已变更/下架,或 git 依赖需要能访问 GitHub,或 allowBuilds 缺条目(见上方 pnpm 提示)。 |
verify.mjs 报某包未出现在组合结果里 | 该包可能未安装,或是聚合包(如 dsh-web-all)在 dump 里以内部行出现 —— 后者只提示不判失败。 |
| 想装到别的 profile | --profile <name>(PowerShell:-Profile <name>)。 |
License
MIT