🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

插件市场 iasiv5/dsh-m

DeepSeek Harnessv0.11.7
iasiv54 天前有提交已提供中文文档扫描:含敏感能力

DSH 插件市场:Marketplace for DeepSeek Harness plugins · dsh-m

46/100
综合分
26
GitHub 星标
14,493
npm 周下载
—/5
用户评分

数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-m
npm 源 · dsh-m 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功(非静态推断);本次验证针对插件 v0.11.6,当前版本为 v0.11.7
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-m @ 0.11.7
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 00:45:41

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 125 处,展示前 105 条)
  • 发起网络请求
    lib/client.js:2658
    const res = await fetch(API, {
  • 写入剪贴板
    lib/client.js:4174
    await navigator.clipboard.writeText(installCmd);
  • 读取本地文件
    lib/cli.js:461
    if (!existsSync(targetDir)) {
  • 读取本地文件
    lib/core/market.js:36
    const raw = JSON.parse(await readFile(join(profileDir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/core/market.js:47
    return readProfileOverrides(await readFile(join(profileDir, 'cordis.patch.yml'), 'utf8'));
  • 读取本地文件
    lib/core/market-mutation.js:177
    manifestText = await readFile(join(profileDir, 'package.json'), 'utf8');
  • 读取本地文件
    lib/core/market-mutation.js:203
    lockText = await readFile(join(profileDir, 'pnpm-lock.yaml'), 'utf8');
  • 读取本地文件
    lib/core/market-mutation.js:216
    const ws = await readFile(join(profileDir, 'pnpm-workspace.yaml'), 'utf8');
  • 读取本地文件
    lib/core/market-mutation.js:596
    const lockText = await readFile(join(profileDir, 'pnpm-lock.yaml'), 'utf8');
  • 读取本地文件
    lib/core/market-mutation.js:765
    return candidates.filter((p) => existsSync(p));
  • 读取本地文件
    lib/core/doctor.js:35
    wsText = await readFile(join(root, 'pnpm-workspace.yaml'), 'utf8');
  • 读取本地文件
    lib/core/doctor.js:54
    entries = await readdir(join(root, 'node_modules', '.pnpm'));
  • 读取本地文件
    lib/core/doctor.js:71
    await stat(path);
  • 读取本地文件
    lib/core/doctor.js:81
    const raw = JSON.parse(await readFile(join(targetDir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/core/doctor.js:130
    names = await readdir(scopeDir);
  • 读取本地文件
    lib/core/doctor.js:141
    isSymlink = (await lstat(linkPath)).isSymbolicLink();
  • 读取本地文件
    lib/core/dsh-version.js:43
    const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
  • 执行外部命令固定命令
    lib/core/dsh-version.js:69
    child = spawn('dsh', ['--version'], { stdio: ['ignore', 'pipe', 'ignore'], shell: process.platform === 'win32' });
  • 读取本地文件
    lib/core/registry.js:396
    const real = await realpath(path);
  • 写入本地文件
    lib/core/registry.js:438
    mkdirSync(cacheRoot(profile), { recursive: true, mode: 0o700 });
  • 写入本地文件
    lib/core/registry.js:457
    await mkdir(dir, { recursive: true, mode: 0o700 });
  • 读取本地文件
    lib/core/registry.js:461
    existing = await lstat(target);
  • 写入本地文件
    lib/core/registry.js:480
    await rename(tmp, target);
  • 读取本地文件
    lib/core/registry.js:493
    const raw = JSON.parse(await readFile(cacheFilePath(namespace, cacheKey, profile), 'utf8'));
  • 读取本地文件
    lib/core/registry.js:519
    const entries = await readdir(dir).catch(() => []);
  • 删除本地文件
    lib/core/registry.js:526
    await rm(join(dir, name), { force: true }).catch(() => {
  • 写入本地文件
    lib/core/community.js:93
    await writeFile(tmp, text);
  • 写入本地文件
    lib/core/community.js:94
    await rename(tmp, path);
  • 读取本地文件
    lib/core/community.js:126
    const raw = JSON.parse(await readFile(metaPath, 'utf8'));
  • 删除本地文件
    lib/core/community.js:140
    await rm(metaPath, { force: true }).catch(() => undefined);
  • 删除本地文件
    lib/core/community.js:144
    await rm(metaPath, { force: true }).catch(() => undefined);
  • 读取本地文件
    lib/core/community.js:157
    data = JSON.parse(await readFile(bodyPath, 'utf8'));
  • 删除本地文件
    lib/core/community.js:160
    await rm(bodyPath, { force: true }).catch(() => undefined);
  • 删除本地文件
    lib/core/community.js:165
    await rm(bodyPath, { force: true }).catch(() => undefined);
  • 写入本地文件
    lib/core/community.js:172
    await mkdir(dir, { recursive: true });
  • 写入本地文件
    lib/core/community.js:326
    await mkdir(dir, { recursive: true });
  • 读取本地文件
    lib/core/restart.js:48
    export function readProcCgroup(readFile = (path, encoding) => readFileSync(path, encoding)) {
  • 执行外部命令来自配置/变量
    lib/core/restart.js:159
    const output = execFileSync(file, args, {
  • 读取本地文件
    lib/core/registry-controller.js:25
    const raw = JSON.parse(await readFile(join(cacheRoot(profile), 'host', ACCEPTED_SOURCE_FILE), 'utf8'));
  • 读取本地文件
    lib/core/installed.js:78
    raw = JSON.parse(await readFile(join(dir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/core/installed.js:108
    raw = JSON.parse(await readFile(join(profileDir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/core/installed-icon.js:90
    if (existsSync(manifest)) {
  • 读取本地文件
    lib/core/installed-icon.js:92
    const parsed = JSON.parse(readFileSync(manifest, 'utf8'));
  • 读取本地文件
    lib/core/installed-icon.js:120
    stat = statSync(file);
  • 读取本地文件
    lib/core/installed-icon.js:129
    bytes = readFileSync(file);
  • 发起网络请求
    lib/core/httpx.js:55
    directAgent ??= new Agent();
  • 发起网络请求
    lib/core/httpx.js:58
    proxyAgent ??= new EnvHttpProxyAgent({ httpProxy: http ?? undefined, httpsProxy: https ?? undefined });
  • 发起网络请求
    lib/core/httpx.js:62
    let wireFetch = (url, init) => undiciFetch(url, init);
  • 发起网络请求
    lib/core/httpx.js:70
    : (url, init) => undiciFetch(url, init);
  • 删除本地文件
    lib/core/latest-cache.js:81
    task = rm(join(cacheRoot(profile), 'latest', `${namespace}.json`), { force: true }).catch(() => undefined);
  • 读取本地文件
    lib/core/profile-transaction.js:194
    const parsed = JSON.parse(await readFile(join(profileDir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/core/profile-transaction.js:239
    lockText = await readFile(join(profileDir, 'pnpm-lock.yaml'), 'utf8');
  • 读取本地文件
    lib/core/profile-transaction.js:298
    raw = await readFile(join(d.profileDir, 'package.json'), 'utf8');
  • 读取本地文件
    lib/core/profile-transaction.js:533
    await readFile(join(profileDir, 'node_modules', pkg, 'cordis.patch.yml'));
  • 读取本地文件
    lib/core/profile-transaction.js:540
    const raw = JSON.parse(await readFile(join(profileDir, 'package.json'), 'utf8'));
  • 读取本地文件
    lib/core/profile-transaction.js:579
    lockText = await readFile(join(d.profileDir, 'pnpm-lock.yaml'), 'utf8');
  • 读取本地文件
    lib/core/install-guard.js:28
    text = await readFile(file, 'utf8');
  • 读取本地文件
    lib/core/install-guard.js:49
    await stat(join(pkgDir, 'cordis.patch.yml'));
  • 读取本地文件
    lib/core/install-guard.js:106
    st = await stat(entryAbs);
  • 读取本地文件
    lib/core/install-guard.js:120
    const [entryReal, pkgReal] = await Promise.all([realpath(entryAbs), realpath(pkgDir)]);
  • 读取本地文件
    lib/core/install-guard.js:134
    text = await readFile(join(pkgDir, 'cordis.patch.yml'), 'utf8');
  • 读取本地文件
    lib/core/install-guard.js:151
    text = await readFile(join(profileDir, 'cordis.patch.yml'), 'utf8');
  • 写入本地文件
    lib/core/external-journal.js:42
    await writeFile(tmp, text);
  • 写入本地文件
    lib/core/external-journal.js:43
    await rename(tmp, path);
  • 读取本地文件
    lib/core/external-journal.js:49
    text = await readFile(file, 'utf8');
  • 写入本地文件
    lib/core/external-journal.js:64
    await rename(file, quarantined);
  • 写入本地文件
    lib/core/external-journal.js:70
    await rename(file, fallback);
  • 写入本地文件
    lib/core/external-journal.js:88
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/core/external-journal.js:105
    await mkdir(dirname(file), { recursive: true });
  • 读取本地文件
    lib/core/generation-projection.js:21
    const st = lstatSync(path);
  • 读取本地文件
    lib/core/generation-projection.js:25
    readdirSync: (path, opts) => readdirSync(path, opts),
  • 读取本地文件
    lib/core/generation-projection.js:26
    readFileSync: (path, encoding) => readFileSync(path, encoding),
  • 写入本地文件
    lib/core/atomic-write.js:38
    await rename(temp, filename);
  • 写入本地文件
    lib/core/atomic-write.js:58
    await mkdir(dirname(filename), {
  • 写入本地文件
    lib/core/atomic-write.js:64
    await writeFile(temp, content, { mode: options?.mode, flag: 'wx' });
  • 删除本地文件
    lib/core/atomic-write.js:68
    await rm(temp, { force: true });
  • 读取本地文件
    lib/core/atomic-write.js:80
    await lstat(lockPath);
  • 读取本地文件
    lib/core/atomic-write.js:107
    return await readFile(lockPath, 'utf8');
  • 写入本地文件
    lib/core/atomic-write.js:124
    await writeFile(claim, `${process.pid}\n`, { mode: 0o600, flag: 'wx' });
  • 删除本地文件
    lib/core/atomic-write.js:136
    await rm(lockPath, { force: true });
  • 删除本地文件
    lib/core/atomic-write.js:144
    await rm(claim, { force: true }).catch(() => { });
  • 写入本地文件
    lib/core/atomic-write.js:161
    await writeFile(lockPath, `${process.pid}\n`, { mode: 0o600, flag: 'wx' });
  • 删除本地文件
    lib/core/atomic-write.js:183
    await rm(lockPath, { force: true });
  • 读取本地文件
    lib/core/dsh-cli.js:262
    if (argv0 !== undefined && argv0 !== '' && isAbsolute(argv0) && existsSync(argv0))
  • 读取本地文件
    lib/core/dsh-cli.js:286
    if (!existsSync(join(profileDirectory, 'pnpm-workspace.yaml')))
  • 读取本地文件
    lib/core/dsh-cli.js:316
    yaml = readFileSync(file, 'utf8');
  • 写入本地文件
    lib/core/dsh-cli.js:324
    mkdirSync(profileDirectory, { recursive: true });
  • 写入本地文件
    lib/core/dsh-cli.js:325
    writeFileSync(file, next);
  • 读取本地文件
    lib/core/dsh-cli.js:339
    yaml = readFileSync(file, 'utf8');
  • 写入本地文件
    lib/core/dsh-cli.js:346
    mkdirSync(profileDirectory, { recursive: true });
  • 写入本地文件
    lib/core/dsh-cli.js:347
    writeFileSync(file, applyPreciseBuilds(yaml, pending));
  • 执行外部命令来自配置/变量
    lib/core/dsh-cli.js:420
    const child = spawn(command, args, {
  • 写入本地文件
    lib/core/upgrade-intent.js:36
    await writeFile(tmp, text);
  • 写入本地文件
    lib/core/upgrade-intent.js:37
    await rename(tmp, path);
  • 写入本地文件
    lib/core/upgrade-intent.js:42
    await rename(file, `${file}.corrupt-${Date.now()}`);
  • 写入本地文件
    lib/core/upgrade-intent.js:47
    await rename(file, `${file}.corrupt-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`);
  • 读取本地文件
    lib/core/upgrade-intent.js:59
    text = await readFile(file, 'utf8');
  • 写入本地文件
    lib/core/upgrade-intent.js:83
    await mkdir(dirname(file), { recursive: true });
  • 写入本地文件
    lib/core/upgrade-intent.js:105
    await mkdir(dirname(file), { recursive: true });
  • 读取本地文件
    lib/core/npm-route.js:23
    const text = readFileSync(path, 'utf8');
  • 读取本地文件
    lib/core/npm-route.js:76
    const doc = JSON.parse(readFileSync(decisionPath(), 'utf8'));
  • 删除本地文件
    lib/core/npm-integrity.js:292
    await rm(snap.path, { force: true });
  • 读取本地文件
    lib/core/exclude-governance.js:189
    const doRead = deps.readFile ?? ((path) => readFileFs(path, 'utf8'));
  • 读取本地文件
    lib/core/exclude-governance.js:227
    const doRead = deps.readFile ?? ((path) => readFileFs(path, 'utf8'));
  • 读取本地文件
    lib/core/release-age.js:163
    return parseWorkspacePolicy(await readFile(join(profileDir, 'pnpm-workspace.yaml'), 'utf8'));
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 浏览搜索插件
  • 安装管理插件

README

由 DeepSeek 最新模型翻译生成
dsh-m — DeepSeek Harness 插件市场 English · 中文 dsh-m 把 DeepSeek Harness(DSH)插件的发现、安装、管理与更新放进同一个界面。社区目录与人工精选同时可搜;侧栏面板、8 个 Agent 工具和 dshm CLI 共用一套市场数据。无需额外的市场服务器或账号,插件操作仍由本机 DSH 宿主管理。 侧栏插件市场:精选分区、分类与插件卡片 30 秒上手 在 DSH 官方「插件管理 → 添加插件」中输入 dsh-m,选择可用的安装源并安装。Web 重启服务并刷新页面;Desktop 退出并重新打开应用。随后从侧栏底部进入「插件市场」。 在 DSH 官方插件管理界面安装 dsh-m 无图形界面的 Web 宿主也可执行 dsh plugin --profile web add dsh-m。Node.js 需 ≥ 22.19.0;支持的 DSH 代际见兼容表。npm install -g dsh-m 仅安装独立 dshm CLI,不会把市场插件注册到 DSH profile。 官方插件管理界面的就地更新能力以宿主版本和界面提示为准;如果明确提示不支持,请按提示卸载旧版后重新安装。卸载不会自动清除插件数据。
展开完整文档(README 剩余 1 节)
dsh-m — DeepSeek Harness 插件市场

English · 中文

dsh-m 把 DeepSeek Harness(DSH)插件的发现、安装、管理与更新放进同一个界面。社区目录与人工精选同时可搜;侧栏面板、8 个 Agent 工具和 dshm CLI 共用一套市场数据。无需额外的市场服务器或账号,插件操作仍由本机 DSH 宿主管理。

侧栏插件市场:精选分区、分类与插件卡片

30 秒上手

在 DSH 官方「插件管理 → 添加插件」中输入 dsh-m,选择可用的安装源并安装。Web 重启服务并刷新页面;Desktop 退出并重新打开应用。随后从侧栏底部进入「插件市场」。

在 DSH 官方插件管理界面安装 dsh-m

无图形界面的 Web 宿主也可执行 dsh plugin --profile web add dsh-m。Node.js 需 ≥ 22.19.0;支持的 DSH 代际见兼容表。npm install -g dsh-m 仅安装独立 dshm CLI,不会把市场插件注册到 DSH profile。

官方插件管理界面的就地更新能力以宿主版本和界面提示为准;如果明确提示不支持,请按提示卸载旧版后重新安装。卸载不会自动清除插件数据。

浏览、搜索与安装

- 社区 + 精选:社区目录默认开启,收录 6,000+ 个条目(随上游目录持续增长,实际以面板计数为准);精选清单按「装机必备 / 崔添翼精选 / iasi自研 / 腾讯轻量云专区 / 观察区」策展。重名条目以精选为准:跨区搜索只呈现精选版本,社区浏览则会保留这类条目并以「精选」徽章标注。
- 分区浏览、全局搜索:分类、排序(社区区可按下载量 / Stars / 收录日期)和分页在各区独立保留;输入中文或英文关键词时,同时搜索社区与精选,并分别展示命中数。收藏保存在浏览器本地(localStorage),不进 profile、不上服务端。
- 安装前先看详情:卡片显示来源、安装状态与版本,图标优先取目录或包内声明、缺失时回退 GitHub 头像;详情展示说明、兼容信息和可用的安装入口。「作者自用」「版本无关」等徽章是受众与适配提示,不代表安全或质量背书。npm 包锁定精确版本并校验 integrity,GitHub 来源锁定 commit SHA;peer 不兼容时先提示风险,未经确认不强行安装。

| 社区分类 | 精选策展 |
| 社区目录与开放分类筛选 | 精选清单的五类策展分区 |

跨区搜索「皮肤」:精选命中置顶,社区命中分组呈现

插件详情:分类、版本、来源、安装命令和安装入口

社区收录不是安全审查。 6,000+ 条目录来源广泛,安装前请核对作者、代码与所需能力;能力字段缺失表示「未扫描」,不表示「未发现风险」。

已装插件与设置

「已装」只反映当前宿主 profile 的实际插件:区分市场/非市场来源,显示运行相位与可用更新,并提供开关、升级、「全部更新」和确认后卸载——批量更新逐项串行执行、遇真实失败即停,dsh-m 自身固定最后升级。相关操作进度与结果会统一记录。开关可能即时生效或需要重启,应以操作结果为准。卸载只移除插件引用,不会默默删除用户数据,疑似残留路径会单独报告。

已装页:版本、来源、运行状态与开关;截图已隐藏本机 profile 路径

「设置」可查看社区目录的版本、获取线路和缓存状态,开关或锁定社区目录版本;也可下载默认精选清单、填入自定义地址并校验后整体替换精选区(社区区不变)。校验失败不改当前生效配置;恢复默认或成功应用均无需重启。

设置页:社区目录状态与精选清单配置自定义地址支持 HTTPS、本机绝对路径或 file://(HTTP 仅限 loopback 调试),清单大小 ≤ 2 MiB、条目 ≤ 1,000。自定义源是独立快照,不会自动同步默认精选;源失效时保留该源最近的成功缓存,不会暗中切回默认。添加精选条目或了解完整校验规则,请看清单文案指南与设计文档。

智能体工具与命令行

| 智能体工具 | 能做什么 |
| dshm_search | 同时搜索社区与精选,在对话内展示插件卡片 |
| dshm_list · dshm_outdated | 列当前配置档实装与可更新插件 |
| dshm_install · dshm_upgrade · dshm_uninstall | 安装、升级、确认后卸载;兼容风险先行提示 |
| dshm_toggle · dshm_restart | 切换运行状态;经用户同意后重启 Web |

dshm search --query 主题 --source all dshm list dshm outdated dshm registry dshm doctor # 只读体检;--profile desktop 检查 desktop profile dshm install --id dsh-web-search dshm upgrade --pkg dsh-web-search --yes dshm uninstall --pkg dsh-web-search --yes dshm toggle --pkg dsh-web-search --off --yes dshm restart --yes

GUI 与智能体工具始终跟随当前宿主配置档(Web / Desktop);独立命令行则操作 web 配置档,唯一例外是只读体检 dshm doctor --profile desktop,其余命令的 --profile desktop 会被拒绝——Desktop 插件管理走官方插件管理页。--force 可在用户已确认 peer 不兼容风险后用于安装或升级。registry、search、outdated 在清单不可用时明确失败,list 仍可列已装插件。完整参数与运行策略见设计文档。

兼容与常见问题

| DSH Web 代际 | 设置通路 | 核验情况 |
| 0.1.2-rc.1 | cordis 配置降级 | 契约核对 |
| 0.1.5-rc.1 / rc.2 | register() scope | 已核对;rc.1 另有页面实测 |
| 0.1.7-rc.1 / rc.2 | .volatile() + settings.update | 已核对 |
| 0.2.0-rc.1 / rc.2 | 同 0.1.7 通路 | rc.2 与重启链路实测 |
| 0.2.1-rc.2 | 同 0.2.0 通路 | 装机/升级与 D3 自升级 dogfood 实测(0.10.x 线) |
| 0.2.1-rc.3 | 同 0.2.0 通路 | 最后完整实测于 dsh-m 0.10.11(link 装机:测试 1719/1719 零失败 + 七项兼容清单);后续版本未复测 |
| 0.2.1-rc.4 | 同 0.2.0 通路 | 0.11.x 线 dogfood 宿主(本机 web 档 dsh-m 0.11.0 常驻运行);0.11.1 发版(全量测试 1841/1841 + 发版门禁全绿);官方契约核对取自 rc.3/rc.4 双版(ADR-0027) |

表中各代核验对应其时点的 dsh-m 版本:0.10.x 线的完整实测仅覆盖 DSH 0.2.1-rc.2 / rc.3,0.11.x 线覆盖 0.2.1-rc.4;更老代际未经当前版本复测,不代表当前 dsh-m 可在其上运行。

Desktop 与 Web 完全一样吗? 不是。Desktop 的浏览、安装新包和开关作用于 desktop 配置档;升级/卸载等操作需宿主官方 pluginManager 提供相应能力,缺失时返回结构化拒绝和指引。Desktop 不提供 Web 的一键重启;变更需按应用提示退出并重新打开。两边的收藏、操作记录和已装状态互不串联。

安装、更新后何时生效? Web 按操作返回的激活要求处理:仅客户端更新可刷新页面;需要重启时先征得同意,再由宿主完成重启与后台重连。重启优先交还服务管理器按其 Restart 策略自动拉起;systemd 部署建议配置 Restart=on-failure 或 Restart=always,其余部署按各自方式重启。

为什么 GitHub 插件的更新不跟踪 main? 中间提交可能不稳定,dsh-m 跟踪 release / tag,并锁定其 commit SHA。匿名 GitHub 配额有限,未完成的检查会如实显示,不冒充「全部最新」。

自定义清单不可用怎么办? 优先使用该源上次成功的缓存;没有缓存时会提示清单不可用,已装管理仍能工作。修正地址或在设置页恢复默认即可。

完整沿革见 CHANGELOG,设计与开发细节见 DESIGN、ADR;编码与测试纪律(评审必读)见 CODING-STANDARDS。截图取自 Web 实例;面板版本、条目数与安装状态会随时间和配置档变化。在源码仓库运行 npm install && npm run capture:readme 可复现截图(需 Web 实例已装 dsh-m;此开发脚本不随 npm 插件包分发)。

License

MIT
预览分享卡片长什么样 ↓iasiv5/dsh-m
分享 · DeepSeek Harness Hub
iasiv5/dsh-m

DSH 插件市场:Marketplace for DeepSeek Harness plugins · dsh-m

回到顶部