# @astron-team/skillhub-dsh 中文文档

规范地址：https://npmcn.com/package/%40astron-team/skillhub-dsh/

版本：0\.6\.2
npm 元数据更新时间：2026-11-04T07:56:22.491Z
中文译文更新时间：2026-11-08T06:21:23.080Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40astron-team/skillhub-dsh
原文对照：https://npmcn.com/package/%40astron-team/skillhub-dsh/?lang=original
项目主页：https://github.com/iflytek/skillhub/tree/main/plugins/dsh#readme
源码仓库：https://github.com/iflytek/skillhub

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：4.2 MB，107 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.2\.0 \<25
- 运行依赖：13 个
- peer 依赖：@deepseek-ai/cordis 4\.0\.4 \|\| 4\.0\.5，@deepseek-ai/dsh-fs 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-tools 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-sandbox 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-session 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-home-paths 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-atomic-write 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-session-query 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-sandbox-policy 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-user-questions 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-typert-protocol 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5，@deepseek-ai/dsh-skill-filesystem 0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5
- 首次发布：2026-10-16T11:58:16.741Z
- 最新版本发布：2026-11-04T07:56:22.251Z
- 近 30 天下载量：1881（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 11 个）

## 中文简介

本地技能浏览和当地技能管理DeepSeek Harness

## 安装

```sh
npm install @astron-team/skillhub-dsh
```

也可以使用：`pnpm add @astron-team/skillhub-dsh`、`yarn add @astron-team/skillhub-dsh`、`bun add @astron-team/skillhub-dsh`

## README

# SkillHub for DeepSeek Harness

[English](https://npmcn.com/package/%40astron-team/skillhub-dsh/README.en.md)

SkillHub 的 DSH 原生插件。在 DSH 侧栏打开 **技能中心**，匿名浏览、搜索、查看技能详情，并管理安装、升级和卸载；对话中也可搜索和明确请求安装技能。插件内置本地安装核心，无需另装 SkillHub CLI。

`0.2.0` 新增来源可核验的搜索安装状态：广场卡片和对话工具可识别当前来源的受管理安装版本、用户/项目范围及异常记录；对话保留查询时快照。未发现本来源记录不代表其他市场或手工安装不存在，文件存在也不代表 DSH 已启用该技能。按来源、命名空间和技能标识匹配；不按同名目录认领其他来源技能。

`0.2.1` 缺省连接 `https://skill.xfyun.cn`；显式空串或仅空白仍表示断开，已有自定义地址保留。插件不继承 CLI 的默认地址或凭证。

`0.4.0` 使用独立标签 `dsh-v0.4.0`，提供技能案例与原生输入框衔接、对话管理已安装技能及按安装位置独立维护版本。保留 `0.3.1` 的双 RC 兼容范围。公开可用状态以 npm 为准；本地构建的 tarball 可按下文独立验证。

`0.5.0` 新增技能卡片及对话中的只读可用性诊断，分别报告文件完整性、宿主发现和调用策略，保留 `0.4.0` 的兼容范围及库存格式。

`0.6.1` 包含受管理技能启停、统一只读检查更新，以及横向已安装卡片和更多菜单。共享库存继续使用 v2，不要求用户同步升级 CLI；已通过与 CLI 0.2.0 的真实旧包兼容验收。公开可用状态以 npm 为准。

`0.6.2` 为本轮补丁候选，汇总多来源与更新隔离、升级变化预览及本地文件修改处理、单技能 ZIP 导入导出、本机收藏，以及 DSH `0.2.1-rc.5` 兼容适配。共享库存保持 v2，不要求升级 CLI。候选与公开包分别验收，公开可用状态以 npm 为准。

## 使用已安装技能

市场、已安装列表和对话中的日常列表均按技能展示。点击“使用技能”，由 Host 核验当前会话实际可用的唯一安装；不会让用户猜安装位置。技能中心入口在同一工作区新建对话，对话内入口保留当前会话。案例显示在原生输入框上方，确认案例或自定义任务后填入可编辑草稿；不会自动发送、调用模型或覆盖原会话草稿。

已安装卡片的更多菜单中，“管理安装”进入技能详情，右侧直接展示每个位置的版本和状态，可明确使用此位置、检查更新、启停或卸载。全停用或状态无法确认时先进入管理安装。安装范围放在安装确认的高级选项中，未安装技能仍默认安装到当前用户。

需要当前活动会话。被项目同名技能覆盖、本地文件变更、禁止用户调用或会话/来源变化时会提示原因；历史回执不能代替当前安装状态。此功能自 `0.4.0` 起提供。

## 本地技能包导入与导出（0.6.2）

在“已安装”页面点击“导入技能包”，选择根目录含 `SKILL.md` 的 ZIP。预览后选择“仅此项目”或“所有项目”，确认才会安装；已有同名目录时拒绝覆盖。首期不支持套件、多技能包或自动识别嵌套目录，压缩包最多 8 MiB，展开仍受共享安装核心的文件数和大小限制。

导入项显示“本地导入”，可以使用、诊断、启停和卸载，不参与市场更新检查。导入无需登录或 Registry 连接，不会执行包内脚本。包内安装器元数据不能用于认领市场来源；本地导入记录位于 DSH 私有状态目录，不改写旧 CLI 共享库存。旧版本不会显示这些导入记录。

在技能详情右侧“安装管理”中，打开目标位置的“管理”菜单，选择“导出技能包”即可下载 ZIP。导出包含该位置的实际文件及本地修改，保留资源和 `.skillhub/examples.json`，排除 `.skillhub/metadata.json`。停用安装只在 ZIP 内恢复标准入口，不启用原安装。导出不会自动清理作者文件中的私密内容，分享前需自行核对。

## 环境与验证范围

| 项目 | 要求或范围 |
| --- | --- |
| DSH | `0.6.2` 候选支持 `0.2.0-rc.2`、`0.2.1-rc.2`、`0.2.1-rc.5`；Host、app-boot 与注入 Client 模块必须属于同一精确发行版 |
| Cordis | `0.2.0-rc.2` 保留以下两组完整组合；`0.2.1-rc.2` 与 `0.2.1-rc.5` 仅使用 `4.0.5 / 1.0.6 / 1.0.10 / 1.1.7` |
| Host Node | `>=24.2.0 <25`；不能使用 Node 24.0.0 |
| 开发包管理器 | Bun `1.3.13`，按锁文件安装 |
| 当前 UI | 中文；支持 DSH 深浅主题和窄屏 |
| 已验证环境 | 历史双RC2验收见既有记录。本轮Linux：RC5在Node 24.2.0/24.17.0原生探针通过，两个RC2在Node 24.2.0回归通过；浏览器及其他维度按第53节分别记录 |
| 验证边界 | 历史功能证据不自动覆盖RC5。本轮远程CI、原生Windows/macOS、真实模型和SaaS未执行；候选包与公开npm包分开验收 |

Windows 浏览器验证不等于 Windows 原生 Host 的全部文件操作已经验证。CI 的平台矩阵也不替代真实桌面、模型及目标实例验收。完整支持边界见仓库内的 [兼容设计](https://npmcn.com/package/openspec/changes/add-dsh-native-plugin/compatibility-design.md) 和 [验收标准](https://npmcn.com/package/openspec/changes/add-dsh-native-plugin/acceptance.md)。

`0.3.1` 包含已合并的 [Issue #981 兼容修复](https://github.com/iflytek/skillhub/pull/988)；已发布的 `0.3.0` 不包含此修复。其他 RC、未来发行版、混装模块和 Host/Client 版本不一致均拒绝新写入。可选 `userQuestions` 按宿主服务是否可用启用，缺失时仍回退插件确认框；其版本不属于必需写入门禁。三个已列 RC 的问答 API 一致，peer 声明允许这些精确版本，不据此承诺其他版本兼容。

`0.6.2` 候选新增 `0.2.1-rc.5` 的支持范围与验收按 [兼容设计](https://npmcn.com/package/openspec/changes/add-dsh-native-plugin/compatibility-design.md) 及任务第53节的验证记录维护；新增版本不表示公开 npm `0.6.1` 已具备同等支持。平台、Node边界、浏览器与模型验收分别记录，发布另行安排。

## 构建与打包

在仓库根目录执行：

```sh
cd cli
bun install --frozen-lockfile
cd ../plugins/dsh
bun install --frozen-lockfile
bun run check
npm pack --dry-run --ignore-scripts
```

`dsh-typert-generator` 固定在 `0.2.0-rc.2` 以生成已列宿主共用的 RPC 契约；其他 DSH 开发依赖按 `0.2.1-rc.2` 类型检查。生成器版本不是宿主版本绕过条件。

`check` 依次构建 Host、Client、Remote 绑定与类型声明，执行 typecheck、lint 和测试。插件 lint 使用 `cli/` 中锁定的工具。Bun 仅用于开发构建，包内 Host 在 Node 上运行；React/React DOM 由 DSH 提供。

检查通过后，将候选包保存到仓库外的独立目录：

```sh
npm pack --ignore-scripts --pack-destination /absolute/path/to/candidate-output
```

输出目录须先创建。`--dry-run` 不生成 tarball；实际安装使用生成的 `.tgz`。保留每次候选包及其校验值，不覆盖已经用于验收或回退的包。

本版沿用以下完整组合，不接受交叉混装或未列出的补丁版本。DSH 主包中的 `~` 依赖不会因主包版本固定而自动锁定；以实际宿主解析结果为准。

| 组合 | Cordis | Loader | Include | Timer |
| --- | --- | --- | --- | --- |
| 保留基线 | `4.0.4` | `1.0.5` | `1.0.9` | `1.1.6` |
| 新补丁组合 | `4.0.5` | `1.0.6` | `1.0.10` | `1.1.7` |

已发布的 `0.1.0` 尚不包含新补丁组合与历史回执修复；它仍要求原 Cordis `4.0.4` 基线。插件仅从核验后的当前上下文读取历史回执对应的库存，不恢复旧安装引用或计划的写授权。

## 从 npm 安装

先查询 npm 上的精确版本，确认可用后安装。核对 DSH、Node 和上表完整 Cordis 组合，停止目标 Web Profile 的 Host，再执行插件安装；也可按下一节安装已验证的本地 tarball：

```sh
npm view @astron-team/skillhub-dsh@0.6.2 version
dsh plugin --profile skillhub-test add @astron-team/skillhub-dsh@0.6.2 --ignore-scripts
dsh --profile skillhub-test --host 127.0.0.1 --port 0 --no-open
```

`skillhub-test` 替换为实际 Web Profile；首次创建方法见下一节。未配置 `registryUrl` 时默认使用 `https://skill.xfyun.cn`。如需自建实例，在插件设置中修改来源并测试、保存；显式保存空地址可断开。npm 查询或下载失败与插件加载失败应分别诊断。

## 从旧版本升级

共享库存保持严格 v2，不写入 `installationState`；启停状态从可信的 `SKILL.md` / `SKILL.md.disabled` 入口派生，不要求 CLI 用户同步升级。已发布 CLI `0.2.0` 的正常查询和普通目标管理必须继续兼容；默认更新、同步及 Suite 不得无意重新启用停用目标。旧 CLI 显式 force 重装、更新、同步仍按原覆盖语义执行，可能恢复标准入口；显式 remove 仍可删除，新版重新读取须反映真实变化。

读取 v1/v2 不迁移。未发布构建产生的 v3 必须在身份、入口与未完成事务校验后，同锁保存原字节备份并安全转换为 v2；不能恢复过时备份覆盖新记录。旧 DSH 普通管理日志保持兼容，启停日志隔离影响。已通过真实旧包交替操作的兼容验收；公开可用状态以 npm 为准。

案例由作者随技能包提供固定文件 `.skillhub/examples.json`，安装后保持相同位置，跟随技能版本和指纹，不创建另一个全局案例副本。无案例时使用自定义任务；无效声明按普通文件保留，不提供错误的案例入口。

## 安装本地候选包

以下命令针对上述 DSH Web 发行版。`skillhub-test` 是示例 Profile 名称，请始终使用同一 Profile 和 DSH home 安装、启动和维护。首次测试应使用独立测试账户或容器、工作区和测试技能；仅创建 Profile 或更改 `DSH_HOME` 不能隔离共享技能 inventory。

新建 Web Profile，仅首次执行：

```sh
dsh --profile skillhub-test --from-default-profile web --dump-config
```

停止使用该 Profile 的 Host，再安装本地包并启动：

```sh
dsh plugin --profile skillhub-test add /absolute/path/to/candidate.tgz --ignore-scripts
dsh --profile skillhub-test --host 127.0.0.1 --port 0 --no-open
```

打开 Host 输出的本机访问入口。入口可能含访问凭证，不要复制到报告、截图或提交中。示例绑定回环地址；远程访问需按环境既有访问控制部署，不直接公开 Host。

已有 Web Profile 不重复创建。`plugin add` 自动创建的基础 Profile 不等同于 Web Profile。若 `dsh` 不在 PATH，可用已安装发行版的 `node /absolute/path/to/@deepseek-ai/dsh/lib/bin.js` 替换命令中的 `dsh`。

Loader entry ID 为 `astron-skillhub`；`skillhub` 是 Host/Remote 服务名。手写配置 patch 必须定位正确包的 Loader ID，不能修改其他插件的同名入口。

## 配置技能来源

进入 DSH **Plugins/插件 → @astron-team/skillhub-dsh → SkillHub 设置**。

1.  在“技能来源”卡片中选择来源，或添加、编辑来源。地址使用实例的 HTTP(S) 基础地址，可包含部署子路径；不要填写 API 路由、凭证、查询参数或片段。
2.  点击“测试连接”，使用当前草稿地址测试，不保存配置。结果显示公开目录可读或仅支持基础搜索及耗时；最长等待 10 秒，失败或超时可重试。修改地址后清除旧测试结果，连接成功不代表技能下载或所有可选接口可用。
3.  切换到“页面显示”标签，设置版本、安全审核及评论的显示方式；切换标签保留草稿，不会自动保存。
4.  点击“保存配置”，看到“配置已保存”后进入侧栏“技能中心”搜索公开测试技能。

来源配置与切换统一放在 SkillHub 设置的“技能来源”标签中，选择保存的来源后保存生效；技能中心顶部不展示来源选择器。当前来源由同一 Profile／插件实例的所有页面和会话共享；并发编辑通过配置版本校验，冲突时不会覆盖其他页面。

切换来源不删除既有安装。“已安装”保留其他来源的受管技能，支持本地使用、诊断、启停与卸载；更新检查和升级仅适用于当前来源。不同来源同名技能分开处理。删除当前保存来源会断开连接，已安装技能保留；其他来源详情不借用当前市场内容。

来源选择与管理使用同一列表，新增或编辑时才展开行内字段；不会同时展示两份地址输入。两个标签共用“保存配置”和“重置修改”，一次处理所有未保存改动。断开连接也在保存后生效，不删除已安装技能。

“当前使用”表示已保存的来源，“待保存”表示当前草稿选择，都不代表连接测试成功。选择“不连接技能来源”并保存可断开；“重置修改”恢复当前 Host 配置快照，不发起网络重载或保存。只读连接不可编辑。若保存发生 revision 冲突，先重置修改，再基于当前值编辑。

| 字段 | 行为 |
| --- | --- |
| `registryUrl` | Registry 基础地址；缺省为 `https://skill.xfyun.cn`；显式空串或仅空白断开，不回退；自定义值保留 |
| `savedRegistries` | 可选具名来源列表 `[{ name, url }]`；缺省为空，`registryUrl` 仍是唯一当前来源 |
| `detailTabs.versions` | 版本历史显示策略 |
| `detailTabs.securityAudit` | 安全审核显示策略 |
| `detailTabs.reviews` | 只读评论显示策略 |

三项策略均支持 `auto`（自动检测）、`show`（显示）、`hide`（隐藏）。自动检测按实际匿名读取能力决定展示；显示不会放开服务端权限；隐藏不请求对应模块。当前审核接口不允许匿名读取，不能把不可访问显示为审核通过。未上线评论的 SaaS 可先隐藏评论。

## 使用流程

-   **浏览技能**：搜索、服务端排序、真实标签筛选、点击加载更多。新目录接口每批 12 项；旧来源首批 404/405 可回退受限搜索，明确提示不支持分页和排序。选中标签失败不会退回未过滤结果。
-   **技能详情**：查看文档、版本和可选模块；可“查看此版本”后确认安装指定的可下载版本。已有其他版本时保留覆盖保护，不执行降级。
-   **已安装**：按技能聚合并支持关键词过滤。紧凑横向卡片在桌面显示两列、窄屏一列，点击卡片进入详情。可用技能保留“使用技能”主按钮，更多菜单提供“管理安装”和只检查当前技能各安装位置的“检查更新”，不自动执行更新。展示本地技能文件中的名称、一行摘要与实际安装版本；不同位置版本不同时明确标注多个版本。右上角最多显示安装异常/停用与更新状态两个标签（可更新为浅蓝、停用为灰、异常为琥珀色），正常已安装不重复标记。详情右侧按位置显示版本、状态和操作，升级、启停与卸载均只影响确认的位置。目录缺失时仍可清理失效记录。
-   **对话搜索**：`astron_skillhub_search` 只搜索，不安装或执行技能。结果提供明确详情动作；详情抽屉可确认安装。
-   **对话安装**：用户明确要求安装唯一搜索结果时，不必先打开详情。`astron_skillhub_install` 核验搜索时的精确版本和快照；接受 `selectionRef` 或完整坐标，二者互斥，范围为 `user`/`project`。过期或歧义引用拒绝执行，不改装当前 latest。

本地操作需要活动会话，Host 据此解析可信用户目录和工作区。远程 Host 的文件安装在 Host 所在机器，不在浏览器机器。插件不提供登录、评论提交或权限管理。

安装受理、文件完成、DSH 发现及模型实际使用是不同状态。安装卡主区展示结果，展开“安装记录”可查看核验、当前库存和原操作信息。历史完成不代表当前仍安装该版本，也不代表模型已执行。Host 重启后的历史搜索需要主动“重新查看详情”重新核验，不能恢复旧引用的写权限。

## 验证候选包

从 `plugins/dsh` 执行仓库提供的隔离 Host 冒烟脚本：

```sh
node scripts/smoke-native-host.mjs --artifact /absolute/path/to/candidate.tgz --report /absolute/path/to/host-smoke-summary.json --dsh-version 0.2.1-rc.2
```

脚本使用隔离 Web Profile 验证候选安装与 Host 加载；不调用模型，不替代 UI 或完整技能生命周期验收。浏览器和文件事务探针见源码中的 [集成验证指南](https://npmcn.com/package/%40astron-team/skillhub-dsh/test/integration/README.md)。

对公开测试 Registry 执行匿名契约检查：

```sh
bun run probe:registry --registry 'https://registry.example' --namespace 'demo' --slug 'test-skill' --version '1.0.0' --output /absolute/path/to/registry-report.json
```

替换示例地址和精确版本，使用新的输出文件。脚本检查搜索、解析、元信息、说明、可选模块及归档指纹，归档仅在临时目录解包，不安装或执行技能。该探针不替代目录分页、标签、排序和真实 DSH 页面测试，后者须另外验收。必需项失败产生非零退出码；审核 HTTP 成功不等于公开审核 schema 已通过验证。

人工至少核验来源保存/重置、搜索和详情、用户/项目安装、更新及卸载、历史结果、深浅主题与窄屏、失败重试和来源变更保护。模型验收需单独确定模型配置和调用预算，不能以页面测试代替。

## 更新、回退与缓存

1.  停止提交新操作，等待已受理操作结束；待恢复事务先在原兼容环境处理。
2.  保存当前 tarball，停止使用该 Profile 的 Host。
3.  使用上面的 `plugin ... add` 命令安装目标 tarball，保持 Profile、来源、会话和模型配置不变。
4.  重新启动 Host，重新进入其有效访问入口；浏览器仍显示旧 UI 时进行强制刷新（Windows：Ctrl+Shift+R）。
5.  检查技能中心、配置、现有安装记录和历史查询，再执行测试技能操作。

强制刷新只更新浏览器资源，不会重载 Host 的 Node 模块。依赖变化必须完整重启 Host；禁用/启用插件不能代替依赖重载。官方 RC.2 的 Host 同端口重启可能使原标签页空白，不能承诺无缝重连；保留原操作记录，用有效入口重新进入，不重复提交安装。

回退使用已保留、已验证兼容的 tarball，按相同步骤执行。开发候选替换验证不构成跨正式版本日志兼容承诺。未知日志格式、待恢复事务不能通过删除日志或重装包绕过。插件回退与技能版本降级不是同一功能。

临时停用可在 DSH 插件页关闭本包开关；启用后等待“技能中心”恢复。移除包使用：

```sh
dsh plugin --profile skillhub-test remove @astron-team/skillhub-dsh
```

`remove` 不接受 `--ignore-scripts`。禁用或移除插件不等于卸载技能，不删除技能目录、inventory 或操作日志。操作结果未知时查询原请求；需要恢复时使用界面的“核验并恢复”，不要发起新请求替代恢复。

## 服务端同步与发布

插件 Host 调用匿名 Registry HTTP API；本地安装事务在 Host 内完成，不需要 SaaS 新增操作用户文件系统的安装接口。开源先定义和验证契约，再将缺失的路径、字段、匿名策略和测试同步到 SaaS。公开 npm `0.2.0` 已对 `https://skill.xfyun.cn` 完成目录、搜索、文档、版本选择和固定版本项目安装及文件/指纹、库存、DSH 发现核验；各版本的构建产物与公开包分别验收。日期格式等无法可靠排序的非 SemVer 版本继续阻断自动升级，不显示可执行升级入口；这不影响已验证的固定版本首次安装。SaaS 技能的真实模型执行尚未验收。详细要求见 [Registry 契约](https://npmcn.com/package/openspec/changes/add-dsh-native-plugin/registry-api-contract.md)。

插件独立使用 `dsh-v<version>` tag，不复用 CLI 或服务镜像发布。`check-dsh-plugin.yml` 配置 Linux/macOS/Windows × Node 24.2.0/当前 Node 24 的普通干净安装检查，并额外保留旧 Cordis 组合的隔离 Host 回归；`release-dsh-plugin.yml` 手动触发，默认只产出候选包。发布需正式版本、可发布 manifest、候选验收及明确发布授权；配置了环境保护规则时还须完成相应审批。版本更新需显式提交，npm 发布需明确授权后运行专用工作流。

具体部署、发布后检查与回退清单见 [发布指南](https://npmcn.com/package/openspec/changes/add-dsh-native-plugin/release-guide.md)，变化见 [发布说明](https://npmcn.com/package/openspec/changes/add-dsh-native-plugin/release-notes.md)。上述 OpenSpec 与测试链接面向源码仓库，不包含在 npm tarball 中。

### 市场交互与安装管理

市场卡片支持点击进入详情及独立安装、卸载、检查更新/升级操作；多范围记录先选择管理目标。用户明确要求安装后，未指定范围默认当前用户；明确指定当前项目时安装到项目。市场卡片的安装按钮也直接打开确认弹窗；默认预选当前用户，项目级位于高级选项，但不自动提交。用户后续明确范围也可发起新调用。详情隐藏完整首部元数据，保留安全 Markdown；公开读取缓存 60 秒，写入仍重新核验。版本 Tab 请求 `downloadableOnly=true`，需要本次开源后端契约；SaaS 尚需单独同步和验收。

安装确认后弹窗保留并向右展开：左侧固定技能、版本和范围，右侧展示简洁的实际进度与结果；窄屏上下排列。处理中不模拟百分比，关闭窗口不取消已提交的安装。

详情页每个安装位置的“更多操作”菜单提供使用此位置、检查可用性、检查更新、停用和卸载；停用位置保留“启用”按钮。菜单不撑高位置卡片，支持方向键选择和 Escape 关闭。检查更新和可用性的普通摘要以“范围/版本 + 一句结论”显示在右上角可关闭通知中；普通成功 5 秒后消失，冲突和失败保留到手动关闭。同一检查替换通知，离开技能详情清除通知。可升级版本和安全阻断仍保留在安装位置中。使用操作继续精确定位所选安装，关闭菜单不会取消正在核验的使用请求。

安装管理以当前库存为准，历史成功不代表仍已安装。“仅此项目”对应项目目录，“所有项目”对应当前 Host 的用户级目录。二级管理中的“安装其他位置”会重新打开安装确认；选择范围不会自动安装。

从“管理安装”的对应位置发起卸载，确认框保留技能、版本、范围和影响说明。打开仅核验，确认才执行；取消与 Esc 不卸载，过期计划和异常安装仍由原事务校验阻断。

切换版本只查看内容，不会自动更新。已安装时选择可核验的较新版本，可“升级到该版本”；同版本不重复升级，旧版本不支持降级，不可排序版本阻断升级。确认框只列出本次选定的安装位置。检查最新版仍可从市场或已安装列表使用；升级原地确认，保留本地修改保护与恢复。

### 对话管理已安装技能

-   `astron_skillhub_list_installed`：当前来源在当前用户/项目中的受管理记录，不代表全机技能；文件存在不是内容完整性证明。
-   `astron_skillhub_check_update`：以列表中的位置引用检查最新或指定较新版本；失败、无更新和不可升级分别展示。
-   `astron_skillhub_upgrade` / `astron_skillhub_uninstall`：必须使用列表中的精确引用，并由 Host 发起真实用户确认。模型不能传路径、确认标志或执行计划。原生问答不可用时返回确认卡；取消不修改文件。
-   `astron_skillhub_operation`：以原回执查询本会话操作结果，不重复提交操作；历史成功不代表当前仍安装。

多份安装先选择目标；更新不改变其他位置版本。本地修改、来源/会话变化和失效引用阻止操作。共享库存兼容已发布 CLI 0.2.0；旧版显式覆盖与删除仍遵循原语义。

### 技能可用性诊断（0.5.0）

在技能卡片中打开“管理安装”，选择对应位置的“检查可用性”。也可以在对话中询问“这个技能为什么不能用”，由 `astron_skillhub_check_availability` 返回只读结果。

诊断分别核验本地文件、当前会话加载结果，以及用户/模型调用策略。同名技能生效、本地修改和宿主无法核验会给出不同结论。按技能名查询只说明当前宿主观察到的事实，不证明安装来源或内容完整性。检查不会修改、卸载、启停技能或发送消息；历史结果不保证下一次调用仍然可用。

## 受管理技能启停（0.6.1）

在“管理安装”中，对明确位置选择“停用”或“启用”。用户级和项目级副本独立管理；停用用户副本不会关闭项目副本。页面与对话均需真实用户确认，取消不写文件。对话工具 `astron_skillhub_disable` / `astron_skillhub_enable` 使用新查询中的位置引用，不能提交自由路径。

停用保留技能目录、版本和资源，只将入口 `SKILL.md` 转换为 `SKILL.md.disabled`；启用恢复入口。目标文件被占用、内容修改、共享归属或安装记录不可信时拒绝操作。停用中仍可通过 DSH 检查更新、更新及卸载，更新后继续停用。

这不撤回会话已加载的正文，也不终止任务；同名的其他安装可能继续可用。宿主缓存未确认时明确显示未知，不把文件操作成功当作发现已刷新。旧 RC 的同名接替可能需新会话才能观察到。卸载插件不会自动启用这些技能。

协议与旧包交替操作验收仍是发布门禁，详见上文。

详情标题旁“在官网查看”仅使用详情API返回的可选`webUrl`。字段缺失、null、空白或不安全时隐藏按钮，详情与安装照常使用。插件不再提供网站地址配置、不拼路由、不从Registry回退；旧`websiteUrl`配置忽略。开源服务端复用可信`SKILLHUB_PUBLIC_BASE_URL`生成完整地址，未配置合法网站基址则返回null。SaaS需单独同步此可选字段。

安装确认直接展示安装范围，默认范围规则不变。确认、进行中与成功共用稳定的双栏布局，小屏自动纵排；右侧在提交前显示等待提示，完成后使用按钮与进度条分开显示。

已安装页可主动“检查更新”，以最多 3 个并发检查当前可见的安装位置，并渐进显示进度、可更新技能数与失败位置数；支持关键词叠加全部/可更新/检查失败筛选及失败重试。每项检查最多等待 30 秒，失败不会视为已最新。打开详情或离开列表会取消在途检查，详情返回保留仍有效的结果；来源、会话、工作区或安装引用变化后旧结果失效；进入详情后按位置展示已检查的目标版本，执行前仍重新核验。检查只读，更新仍需在详情按具体位置确认。

### 升级变化与本地文件修改

在已安装技能详情中可直接查看本地修改，不必先执行升级。比较以该安装来源、精确版本及发布指纹对应的原始内容为准；原文无法取得或校验失败时明确显示不可用，不以另一来源的同名技能替代。

升级先检查本地修改：可以确认撤销单个文件或全部修改，也可选择「备份修改并继续」。备份成功后进入独立版本变化预览，最后点击「确认升级」才更新技能。取消预览不改技能，也不会删除已创建的备份。文件差异按需读取，文本过大或二进制文件会显示预览限制；每个展开文件独立滚动。

撤销只恢复当前安装版本的文件：已修改文件还原原文、本地新增文件删除、本地删除文件恢复；已安装版本、归属及启停状态不变。不提供版本降级或升级后回滚。确认后文件再次变化时需重新检查。

持久备份保存在 DSH Home 的 `skillhub/backups` 目录，与技能目录分离；单份上限 100 MiB、总量 1 GiB、最多 20 份，达到上限拒绝新备份，首期不自动删除。备份失败不覆盖，备份后又有本地修改也需重新处理。本地文件仅在 Host 比较和备份，不上传 Registry。

对话卡片上的人工更新确认同样进入变化预览。模型工具仍保留原有无本地修改时的升级确认语义，不具备备份覆盖授权；发现本地修改时继续拒绝，需由用户进入页面处理。

## 本地收藏

市场卡片与详情中的书签按钮用于本机收藏；浏览页的“仅看收藏”读取当前来源的完整收藏列表，可直接搜索，不依赖已加载的市场分页。收藏不安装技能、不改变网站收藏数，也不需要登录。点击收藏项时重新解析当前可下载版本；离线或下架不删除收藏，也不自动安装旧版本。

收藏保存在 `$DSH_HOME/skillhub/favorites.json`（DSH\_HOME按宿主路径规则解析），同一DSH\_HOME下的Profile和项目共享，来源之间隔离。取消收藏不会卸载，切换或移除来源不会删除其收藏；不同DSH\_HOME不自动同步。文件异常或保存失败会提示重试，不静默清空；未知格式不覆盖。此功能纳入 `0.6.2` 候选，不属于公开 npm `0.6.1`；请先核对目标版本公开可用。

取消收藏成功后，右上角通知显示技能名称，并可撤销最近一次取消；撤销失败保留重试入口。通知可手动关闭，离开页面或切换来源后失效，手动重新收藏同项也会清除旧通知。收藏搜索无匹配时可直接清空条件；提交新搜索会取消尚未完成的打开请求，迟到结果不会打断新搜索。

收藏成功直接采用 Host 返回的完整列表，不立即重复读取；筛选与搜索不追加网络请求。进入页面、窗口重新聚焦或重连时可刷新以发现其他 Host 修改，没有定时轮询或实时多窗口推送。

## 常见问题

### @astron-team/skillhub-dsh 是什么？

本地技能浏览和当地技能管理DeepSeek Harness

### 如何安装 @astron-team/skillhub-dsh？

在项目目录运行 npm install @astron-team/skillhub-dsh，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@deepseek-ai/cordis（4\.0\.4 \|\| 4\.0\.5）、@deepseek-ai/dsh-fs（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-tools（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-sandbox（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-session（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-home-paths（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-atomic-write（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-session-query（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-sandbox-policy（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-typert-protocol（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）、@deepseek-ai/dsh-skill-filesystem（0\.2\.0-rc\.2 \|\| 0\.2\.1-rc\.2 \|\| 0\.2\.1-rc\.5）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @astron-team/skillhub-dsh 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @astron-team/skillhub-dsh 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @astron-team/skillhub-dsh 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.2\.0 \<25。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @astron-team/skillhub-dsh 可以商用吗？

@astron-team/skillhub-dsh 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @astron-team/skillhub-dsh 的下载量有多少？

根据 npm 官方下载统计，@astron-team/skillhub-dsh 在 2026/10/07 – 2026/11/05 这 30 天内被下载 1,881 次，日均约 63 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @astron-team/skillhub-dsh 还在维护吗？

最新版本 0\.6\.2 发布于 2026/11/04（4 天前）；至今共发布 11 个版本，其中过去 12 个月发布了 11 个；首次发布于 2026/10/16。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

