packages/dsh-skill-explorer
zhu1090093659/dsh-web技能中心:按来源分级浏览已加载的全部 skill,启用/禁用模型调用、创建新技能、删除进可恢复回收站。
在 DeepSeek Harness 内浏览、搜索 SkillHub 技能,并管理本地技能的安装、更新和卸载。适配 DSH 0.2.0-rc.2 与 0.2.1-rc.2,暂不兼容 0.2.1-rc.3。
SkillHub 的 DSH 原生插件。在 DSH 侧栏打开 技能中心,匿名浏览、搜索、查看技能详情,并管理安装、升级和卸载;对话中也可搜索和明确请求安装技能。插件内置本地安装核心,无需另装 SkillHub CLI。
0.2.0 新增来源可核验的搜索安装状态:广场卡片和对话工具可识别当前来源的受管理安装版本、用户/项目范围及异常记录;对话保留查询时快照。未发现本来源记录不代表其他市场或手工安装不存在,文件存在也不代表 DSH 已启用该技能。按来源、命名空间和技能标识匹配;不按同名目录认领其他来源技能。
0.2.1 缺省连接 https://skill.xfyun.cn;显式空串或仅空白仍表示断开,已有自定义地址保留。插件不继承 CLI 的默认地址或凭证。
0.3.1 为 DSH 双 RC 兼容修复版本,使用独立发布标签 dsh-v0.3.1,保留 0.3.0 的市场交互与版本管理能力。npm 发布及公开包验收完成前,使用本版本构建的 tarball 验证。
在已安装卡片、已安装版本详情或安装成功结果点击“使用此技能”。技能中心入口在同一工作区新建对话,对话内入口保留当前会话。核验所选安装后,案例显示在原生输入框上方;确认案例或自定义任务后,带入可编辑的技能调用。原会话草稿不会被覆盖,对话内操作保留已有文字、引用和附件。补充任务和材料后自行发送;点击使用不会自动发送、调用模型或安装文件。
需要当前活动会话。被项目同名技能覆盖、本地文件变更、禁止用户调用或会话/来源变化时会提示原因;历史回执不能代替当前安装状态。此功能正在开发,尚不属于已发布的 0.3.1 包。
项目 · 要求或范围 DSH · 0.2.0-rc.2 或 0.2.1-rc.2;Host、app-boot 与注入 Client 模块必须属于同一精确发行版 Cordis · 0.2.0-rc.2 保留以下两组完整组合;0.2.1-rc.2 仅使用 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 深浅主题和窄屏 已验证环境 · Linux 两版 DSH Host 严格安装、原生探针及浏览器用户/项目安装、升级、卸载与取消;Windows 浏览器访问真实 Host 的界面和交互 待验证范围 · 新 RC 的 Windows/macOS 原生文件操作;真实桌面客户端;本次兼容修复的真实模型调用
Windows 浏览器验证不等于 Windows 原生 Host 的全部文件操作已经验证。CI 的平台矩阵也不替代真实桌面、模型及目标实例验收。完整支持边界见仓库内的 兼容设计 和 验收标准。
0.3.1 包含已合并的 Issue #981 兼容修复;已发布的 0.3.0 不包含此修复。其他 RC、未来发行版、混装模块和 Host/Client 版本不一致均拒绝新写入。可选 userQuestions 按宿主服务是否可用启用,缺失时仍回退插件确认框;其版本不属于必需写入门禁。两个已列 RC 的问答 API 一致,peer 声明允许二者,不据此承诺其他版本兼容。
在仓库根目录执行:
cd cli
bun install --frozen-lockfile
cd ../plugins/dsh
bun install --frozen-lockfile
bun run check
npm pack --dry-run --ignore-scriptsdsh-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 提供。
检查通过后,将候选包保存到仓库外的独立目录:
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 基线。插件仅从核验后的当前上下文读取历史回执对应的库存,不恢复旧安装引用或计划的写授权。
0.3.1 在 npm 发布完成后,使用以下命令安装。先确认 DSH、Node 和上表完整 Cordis 组合满足要求,停止目标 Web Profile 的 Host,然后安装精确版本。发布完成前使用下一节的本地候选包:
dsh plugin --profile skillhub-test add @astron-team/skillhub-dsh@0.3.1 --ignore-scripts
dsh --profile skillhub-test --host 127.0.0.1 --port 0 --no-openskillhub-test 替换为实际 Web Profile;首次创建方法见下一节。未配置 registryUrl 时默认使用 https://skill.xfyun.cn。如需自建实例,在插件设置中修改来源并测试、保存;显式保存空地址可断开。发布前请使用本地候选包验收,不要将未发布版本的 npm 安装失败当成插件加载失败。
以下命令针对上述 DSH Web 发行版。skillhub-test 是示例 Profile 名称,请始终使用同一 Profile 和 DSH home 安装、启动和维护。首次测试应使用独立测试账户或容器、工作区和测试技能;仅创建 Profile 或更改 DSH_HOME 不能隔离共享技能 inventory。
新建 Web Profile,仅首次执行:
dsh --profile skillhub-test --from-default-profile web --dump-config停止使用该 Profile 的 Host,再安装本地包并启动:
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 设置。
“已配置”只表示 Host 已保存非空来源,不代表连通测试成功。空地址表示断开来源;“重置修改”恢复当前 Host 配置快照,不发起网络重载或保存。只读连接不可编辑。若保存发生 revision 冲突,先重置修改,再基于当前值编辑。
字段 · 行为 registryUrl · Registry 基础地址;缺省为 https://skill.xfyun.cn;显式空串或仅空白断开,不回退;自定义值保留 detailTabs.versions · 版本历史显示策略 detailTabs.securityAudit · 安全审核显示策略 detailTabs.reviews · 只读评论显示策略
三项策略均支持 auto(自动检测)、show(显示)、hide(隐藏)。自动检测按实际匿名读取能力决定展示;显示不会放开服务端权限;隐藏不请求对应模块。当前审核接口不允许匿名读取,不能把不可访问显示为审核通过。未上线评论的 SaaS 可先隐藏评论。
astron_skillhub_search 只搜索,不安装或执行技能。结果提供明确详情动作;详情抽屉可确认安装。astron_skillhub_install 核验搜索时的精确版本和快照;接受 selectionRef 或完整坐标,二者互斥,范围为 user/project。过期或歧义引用拒绝执行,不改装当前 latest。本地操作需要活动会话,Host 据此解析可信用户目录和工作区。远程 Host 的文件安装在 Host 所在机器,不在浏览器机器。插件不提供登录、评论提交或权限管理。
安装受理、文件完成、DSH 发现及模型实际使用是不同状态。安装卡主区展示结果,展开“安装记录”可查看核验、当前库存和原操作信息。历史完成不代表当前仍安装该版本,也不代表模型已执行。Host 重启后的历史搜索需要主动“重新查看详情”重新核验,不能恢复旧引用的写权限。
从 plugins/dsh 执行仓库提供的隔离 Host 冒烟脚本:
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 或完整技能生命周期验收。浏览器和文件事务探针见源码中的 集成验证指南。
对公开测试 Registry 执行匿名契约检查:
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 已通过验证。
人工至少核验来源保存/重置、搜索和详情、用户/项目安装、更新及卸载、历史结果、深浅主题与窄屏、失败重试和来源变更保护。模型验收需单独确定模型配置和调用预算,不能以页面测试代替。
plugin ... add 命令安装目标 tarball,保持 Profile、来源、会话和模型配置不变。强制刷新只更新浏览器资源,不会重载 Host 的 Node 模块。依赖变化必须完整重启 Host;禁用/启用插件不能代替依赖重载。官方 RC.2 的 Host 同端口重启可能使原标签页空白,不能承诺无缝重连;保留原操作记录,用有效入口重新进入,不重复提交安装。
回退使用已保留、已验证兼容的 tarball,按相同步骤执行。开发候选替换验证不构成跨正式版本日志兼容承诺。未知日志格式、待恢复事务不能通过删除日志或重装包绕过。插件回退与技能版本降级不是同一功能。
临时停用可在 DSH 插件页关闭本包开关;启用后等待“技能中心”恢复。移除包使用:
dsh plugin --profile skillhub-test remove @astron-team/skillhub-dshremove 不接受 --ignore-scripts。禁用或移除插件不等于卸载技能,不删除技能目录、inventory 或操作日志。操作结果未知时查询原请求;需要恢复时使用界面的“核验并恢复”,不要发起新请求替代恢复。
插件 Host 调用匿名 Registry HTTP API;本地安装事务在 Host 内完成,不需要 SaaS 新增操作用户文件系统的安装接口。开源先定义和验证契约,再将缺失的路径、字段、匿名策略和测试同步到 SaaS。公开 npm 0.2.0 已对 https://skill.xfyun.cn 完成目录、搜索、文档、版本选择和固定版本项目安装及文件/指纹、库存、DSH 发现核验;本版候选和公开包须独立验收。日期格式等无法可靠排序的非 SemVer 版本继续阻断自动升级,不显示可执行升级入口;这不影响已验证的固定版本首次安装。SaaS 技能的真实模型执行尚未验收。详细要求见 Registry 契约。
插件独立使用 dsh-v tag,不复用 CLI 或服务镜像发布。check-dsh-plugin.yml 配置 Linux/macOS/Windows × Node 24.2.0/当前 Node 24 的普通干净安装检查,并额外保留旧 Cordis 组合的隔离 Host 回归;release-dsh-plugin.yml 手动触发,默认只产出候选包。发布需正式版本、可发布 manifest、候选验收及明确发布授权;配置了环境保护规则时还须完成相应审批。版本更新需显式提交,npm 发布需明确授权后运行专用工作流。
具体部署、发布后检查与回退清单见 发布指南,变化见 发布说明。上述 OpenSpec 与测试链接面向源码仓库,不包含在 npm tarball 中。
市场卡片支持点击进入详情及独立安装、卸载、检查更新/升级操作;多范围记录先选择管理目标。未指定范围的对话安装优先在 DSH 输入框旁显示原生范围选项,选择并提交才安装;可取消。无宿主问答能力时降级为待确认卡片,直接打开紧凑确认弹窗。市场卡片的安装按钮也直接打开确认弹窗;有效项目默认预选项目,但不自动提交。用户后续明确范围也可发起新调用。详情隐藏完整首部元数据,保留安全 Markdown;公开读取缓存 60 秒,写入仍重新核验。版本 Tab 请求 downloadableOnly=true,需要本次开源后端契约;SaaS 尚需单独同步和验收。
安装确认后弹窗保留并向右展开:左侧固定技能、版本和范围,右侧展示简洁的实际进度与结果;窄屏上下排列。处理中不模拟百分比,关闭窗口不取消已提交的安装。
安装管理以当前库存为准,历史安装成功不代表目前仍已安装。已有记录时默认选中对应范围,并提供卸载入口;“仅此项目”对应项目目录,“所有项目”对应当前 Host 的当前用户级目录。切换范围不会自动安装;卸载后可再次明确安装。
市场卡片、已安装列表和详情中的卸载可直接打开确认弹窗,不再为卸载跳转到另一详情页。确认框保留技能、版本、所选范围和影响说明;打开仅核验,确认才执行。取消与 Esc 不卸载,过期计划和异常安装仍由原事务校验阻断。
切换版本只查看内容,不会自动更新。已安装时选择可核验的较新版本,可“升级到该版本”;同版本不重复升级,旧版本不支持降级,不可排序版本阻断升级。确认框列出实际同步更新的全部安装范围。检查最新版仍可从市场或已安装列表使用;升级原地确认,保留本地修改保护与恢复。