关于 plugin-upgrade
plugin-upgrade 是处理 DSH 插件检查更新、升级已安装插件及迁移插件源码的技能,面向插件使用者和维护者。它先区分只读检查与变更任务,并要求计划和明确确认后才执行写入或安装。
主要功能
- 01区分检查、插件升级与源码迁移
- 02记录插件来源、版本及兼容范围
- 03按版本路径整理迁移触点
- 04分层验证依赖、启用状态与运行行为
- 05限制变更范围并记录回滚基线
适用场景
- 01只读评估插件更新影响
- 02将已安装插件升级到指定版本
- 03适配插件源码以兼容新版 DSH
- 04验证迁移结果并规划回滚
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ oh-my-dsh/ dsh-plugin-upgrade-skill --skill plugin-upgrade安装后在 Claude Code 中输入/plugin-upgrade确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonexamples/01-simple-client-plugin.en.md01-simple-client-plugin.md02-host-side-plugin.en.md02-host-side-plugin.md03-client-remote-plugin.en.md03-client-remote-plugin.md04-dual-cohort-plugin.en.md04-dual-cohort-plugin.md06-real-world-batch-migration.en.md06-real-world-batch-migration.md07-multi-repo-batch-migration.en.md07-multi-repo-batch-migration.md08-real-web-client-alpha2-migration.en.md08-real-web-client-alpha2-migration.mdREADME.en.mdREADME.mdexamples/face-contracts/check.mjsclient-remote.mjshost-domain.mjsREADME.mdexamples/legacy-plugin/cordis.patch.ymlpackage.jsonpatch.ymlREADME.en.mdREADME.mdexamples/legacy-plugin/scripts/apply-patch.mjsexamples/legacy-plugin/src/index.tsreferences/api-migration-0.1.2-alpha.2.mdhost-plane-probes.md详细介绍
English | 简体中文
plugin-upgrade
安全处理三类任务:只读更新检查、已安装插件升级,以及 DSH 主机版本兼容性迁移。如果用户意图不明确,应先确认模式;绝不能把“帮我检查更新”演变成安装或修改代码。
注意:references/ 下的版本卡片和参考文档为英文;卡片 ID 和引用的命令与语言无关。
步骤 0:选择模式
| 模式 | 用户意图 | 默认允许的操作 |
|---|---|---|
| A · 检查 | 检查更新,或评估 DSH 发行版本的影响 | 只读调查并报告;然后停止 |
| B · 更新 | 将已安装的插件升级到明确指定的版本 | 更改插件组合或依赖前,先制定计划并确认 |
| C · 作者迁移 | 为较新版本的 DSH 主机升级插件作者的源代码仓库 | 建立基线、梳理版本区间和接触点清单,然后实施已批准的迁移 |
此技能不处理“仅升级 DSH 核心,不改动插件”的需求,也不得修改 DSH 核心来掩盖插件不兼容问题。
DSH 主机全局升级(Agent 操作规范)
升级 dsh 主机本身(npm install -g @deepseek-ai/dsh@…)不属于模式 B/C 的插件工作;如果请求的 Agent 在 dsh 会话内部运行,这在结构上会导致灾难性后果:该会话本身就是主机进程,npm 会移除或替换它正在执行的程序包目录树,导致主机在安装过程中途终止(工具调用永远不会返回),而中断的安装会留下程序包内容,却没有重新生成的 shim——在通过外部固定版本重新安装修复前,dsh 命令本身会消失。绝不要在该主机上的会话内部执行主机全局升级;应将以下外部操作步骤交给用户:
- 完全停止所有 dsh 进程(运行中的主机会占用原生模块文件锁 → EBUSY;刷新浏览器并不会停止主机);
- 在外部终端中运行固定版本的安装命令
npm install -g @deepseek-ai/dsh@<exact-version>(裸包名会解析到latestdist-tag,可能在无提示的情况下降级到较旧版本线); - 重启
dsh web,强制刷新浏览器,并验证版本标记和插件。
由于运行 npm 前会完全停止主机,因此不会发生安装中途崩溃——升级期间发生崩溃,表明操作方式有误,而不是可容忍的风险。如果安装已经中断:从外部 shell 重新运行固定版本的正式安装命令进行修复(切勿手动复制程序包目录或手写 shim)。
共享只读准备
- 阅读目标仓库的规则,例如
AGENTS.md/CLAUDE.md;检查分支、HEAD、工作树和子模块。遇到不熟悉的更改或未跟踪文件时停止并报告;绝不自动 stash、reset、clean 或 checkout。 - 分别记录源身份和安装身份:注册表包、Git 检出、工作区/联接,或复制安装;记录源仓库/URL、Git SHA、实际包名、插件自身版本、声明/解析出的 DSH 依赖版本范围,以及当前 DSH/Node 版本。插件发布版本(例如
0.6.4 → 0.7.0-alpha.0)不是 DSH 宿主版本范围(0.1.0-rc.6 → 0.1.2-alpha.4)。GitHub 所有者/仓库和注册表作用域/包是彼此独立的坐标——不要从一方推导或改写另一方。 - 保留文件所有权边界:
package.json/ lockfile:包和依赖;dsh-plugin.json:社区标准清单(如果采用);cordis.patch.yml/agent.cordis.yml/ legacycordis.yml:配置组合;- 解析后的配置:运行时组合结果,仅用于验证;绝不要将整个对象写回。
- 验证目标版本的源、标签/包名、兼容范围、发布说明、安装脚本和已知的重大变更。绝不读取、打印或提交令牌、
.npmrc内容、凭据或会话日志。 - 记录回滚基线:当前 HEAD/包版本、lockfile,以及可能更改的配置文件的哈希/路径。仅说明恢复本任务明确负责的路径;不要承诺回滚任意第三方脚本的副作用。
模式 A · 检查(只读)
报告:当前/可用版本、来源、兼容范围、重大变更、建议目标、风险和验证计划。不要编辑文件、安装依赖、运行生命周期脚本、执行 git pull 或切换版本。如果用户决定继续,则在另行确认后进入模式 B 或 C。
模式 B · 更新(升级已安装的插件)
- 选择与解析出的包身份和安装渠道相匹配的唯一更新机制;存在 lockfile 时,只使用其对应的包管理器——不要混用 npm/pnpm/bun,也不要为了匹配 GitHub 所有者而改写注册表包名。
- 制定更改计划:确切的目标版本、要运行的命令、将更改的文件、可能运行的生命周期脚本、配置迁移和回滚步骤。
- 任何写入或安装操作前都必须获得用户明确确认,即使已知没有重大变更也不例外。
- 在专用分支/工作树中进行最小更改;按路径修补配置并保留未知字段。对于 Git 源,先获取并比较明确的标签或提交;绝不要对有未提交更改的工作树执行
git pull。 - 成功安装依赖不代表 DSH 已启用插件;验证目标配置组合确实解析到目标包,移除由本次升级负责的旧来源行(如果存在),并确认运行时条目处于启用状态。
- 执行“验证与报告”;如果失败,仅恢复本任务负责的路径,并报告残留副作用。
模式 C · author-migrate(通过升级 DSH 迁移插件源代码仓库)
- 先运行基线检查:在仓库自身的依赖状态下(不指定目标版本,不设置目标环境)运行机械测试套件(构建 / 类型检查 / 测试;这些操作会运行 package 脚本,因此先根据安全边界列出要执行的命令并获得确认),并将已有故障记录为豁免清单(参见 references/rollup-0.1.2.md 中的 R-06;后续版本区间遵循相同模式)。迁移不得新增或加剧故障;基线中已有的故障按规定予以豁免。
- 确认准确的起始和目标标签;依据 references/README.md 中的
from → to元数据连接版本区间,绝不可按文件名的字典序判断。如果源版本早于最早的迁移卡片,请将该区段标记为不受支持的缺口,并根据准确标签对应的源代码、打包后的声明和可复现测试推导;不要假装后续卡片涵盖了该区段。 - 先完整阅读整个版本区间并计算最终净状态。如果某字段在中间版本被移除、又在目标版本恢复,不要先删除再重新添加。
- 按照 pre-flight.md 扫描七类接触点:源代码补丁、事件、服务/Remote、宿主文件系统、UI/命令/工具、自定义通道、子进程/输出。你可以先运行只读的 migration planner 来生成路径/行号和候选卡片,但其结果仍是启发式的;即使没有命中,也必须检查依赖项/导入,并运行构建和真实挂载。
- 只保留与命中的接触点和实际使用场景(Host / Web Client / 普通插件)相关的卡片。卡片是经过整理的清单,并非完整的 API 差异;如果版本区间边界或 API 坐标缺失,应标记为不受支持/待处理,而不是凭记忆更改。
- 按 Host/Web Client 接缝分组,制定源代码迁移计划,列出命中的文件、卡片、目标行为和测试;获得确认后,在专用分支/工作树中实施。确保
package.json和锁文件中的 DSH 版本组准确且一致;新旧 peer 依赖混用时,即使安装成功,也不算完成迁移。如果选择器或回调意外变成any,请运行一次skipLibCheck: false的诊断类型检查,并直接声明拥有所用声明的包。capability卡片仅供参考,绝不可自动采用。 - 兼容性更改通过后,单独选择并应用插件自身的 SemVer 版本号升级。确认打包文件名和打包清单都包含该插件版本;绝不要误将 DSH 宿主版本用作插件发行版本。对于已移除的
dsh-client-runtime、键控聊天快照、命令执行签名或 Workspace 导航(connectWorkspace/pickDirectory),请使用 the alpha.2 API ledger 和 DSH-0.1.2-A1-32。
安全边界
- 任何写入文件、安装、获取/切换版本或运行 package 脚本之前,都必须展示计划并获得确认;
- 绝不自动 stash/reset/clean/强制更新,也绝不覆盖用户或其他 Agent 的工作;
- 绝不泄露凭据;诊断只能报告是否已配置以及非敏感的版本/来源信息;
- 默认不要重试未知的
gateway/internal或其他故障;只有在错误可重试、操作幂等且策略允许时才重试; - 如果无法根据主要来源或可复现行为高置信度地确定迁移方案,请停止自动更改并标记为“待审核”;
- 如果本地观察结果与主要来源冲突,请同时记录两者、进行复现并报告,不要悄悄偏向任何一方。
验证与报告
至少验证适用的各个层面:
- 依赖解析:包管理器、锁文件和依赖关系图仅按预期变更;扫描完整锁文件,检查旧 DSH 群组和已移除的包,而不只是顶层依赖;
- 启用解析:目标配置的组成指向预期的包标识,不存在旧来源或重复条目;
- 静态检查:构建、类型检查和插件测试;对于 alpha.2 迁移范围,完成 references/precision-checklist.md 中的检查项;保持类型声明与运行时模块/服务激活相互独立,并在应用 Connection 身份验证门控时保留现有通道协议;
- 运行时:冷启动真实的 DSH 配置;验证入口已激活,且必需/提供的 Cordis 服务不会一直处于等待状态——verify-runtime.mjs 会在隔离配置中端到端运行此层,并报告失败归因(plugin-code / dependency-resolution / profile-config / dsh-runtime)。对于 Web Client 插件,使用打印出的令牌 URL 换取其 Cookie,读取主机启动清单,请求其中公布的客户端制品,并验证注册/挂载成功,而不能仅凭 HTTP 200 就判定通过;
- 行为:执行一条核心插件路径;主机迁移必须至少完成一条消息 → 工具 → 响应流程,或等效的专用流程;
- 包装器:验证退出代码、标准输出、标准错误、取消和清理。
报告结构如下:
- 预先存在的问题(模式 C 附带基线运行;其他模式注明“未收集”):基线中的失败项列表(保持原样,不归因于本次迁移);
- 已完成:版本、文件、卡片和验证结果;
- 已跳过:不匹配或不适用的项目及其依据;
- 待处理/剩余风险:缺失的来源、未经测试的平台、生命周期脚本副作用;
- 回滚:记录的基线和可恢复路径;
- 建议:可选能力,以及后续迁移到公开接口的工作。
参考资料
| 文件 | 用途 |
|---|---|
| references/README.md | 版本通道、卡片架构和维护规则 |
| references/pre-flight.md | 七类触点自检和摘要模板 |
| references/troubleshooting.md | 迁移后症状 → 根本原因 → 卡片查找 |
| references/v0.1.1-rc.1.md | rc.8→rc.1 草稿卡片:移除 repository-plugins 机制、合并 dshClient→dsh.client 清单、扫描 client-modules → 打包 dsh.client、严格注入 + 弱化的 ctx.get、会话事件契约、自行渲染的客户端会话聚合、移除 tasks.peek、0812 服务重命名(vlln 插件迁移;该通道与内部 0810–0812 快照窗口的已发布标签最接近) |
| references/v0.1.1-rc.2.md | rc.1→rc.2 已审阅卡片(3 张,DSH-0.1.1-R2) |
| references/v0.1.2-alpha.1.md | rc.2→alpha.1 精选卡片 |
| references/v0.1.2-alpha.2.md | alpha.1→alpha.2 精选卡片 |
| references/v0.1.2-alpha.3.md | alpha.2→alpha.3 精选卡片(2 张):移除可选的 SQLite 会话持久化提供程序(选择加入的数据库需要使用旧版本构建导出,DSH-0.1.2-A3-02);新增可加项 settings.plugin.item 键控槽位设置卡片能力(DSH-0.1.2-A3-01);附带验证记录 |
| references/v0.1.2-alpha.4.md | alpha.3→alpha.4 精选卡片(6 张):移除 report 工具包,改用 send_message;重命名 Python 代码运行时包;Session.events 替换为 seq/eventAt/snapshotEvents;加入带类型的 SessionSeq/SessionLogOffset + seedLength→isSeeded;PTC 预设移除 workflow;基础包启用 web_fetch;附带三主机验证记录 |
| references/v0.1.2-alpha.5.md | alpha.4→alpha.5 精选卡片(3 张):存储域新增可选的 compatibleVersions 读取容错和 invalidRecords: 'backup-and-skip' 数据抢救功能;修复 rc.2/alpha.3 时代无法启动或在 alpha.4 中丢失会话标题的主机;附带存储层复现记录 |
| references/v0.1.2-rc.1.md | alpha.5→rc.1,即 0.1.2 系列的首个候选版本(零张卡片:纯版本号更新,没有面向插件的变更;附带验证记录和发行说明覆盖矩阵,将 rc.1 摘要映射到通道卡片,并列出待补充候选项) |
| references/v0.1.3-alpha.1.md | 0.1.2-rc.1→0.1.3-alpha.1 卡片(8 张):A1-01/A1-02 会话日志通道基于发行 tarball 构建 0.1.3-alpha.1-9523542 测量(v0→v1 会话迁移器拒绝 0.1.2-alpha.x 写入的日志——顶层 replayState.kind/version: 1,所有 alpha.4 之前写入的历史记录均无法加载;失败时关闭,且源构件不变;跨版本 resume 报告 cursor behind the last applied entry,标签对齐待定);A1-03 Windows 安装在 fs-ext 原生构建时因缺少 MSVC 而失败;pnpm-patch 配方、单主机实地报告;A1-04…A1-06 以 git 标签为依据:出站 HTTP(S)/ALL_PROXY 引导安装(dsh-http-proxy、$DSH_HOME/.env 主目录层)、会话持久化 SessionHandle + 异步 agentLoop.create() + 每会话锁、会话日志格式 v2 + 已发布的迁移目录;A1-07/A1-08 未发布队列的源代码启动配方 + composer/read_image 运行时重新验证 |
| references/v0.1.3-alpha.2.md | 0.1.3-alpha.1→0.1.3-alpha.2 精选卡片(5 张):persona 拆分为前缀 + 后缀(移除 text/persona 键和 PERSONA_SECTION)、移除 SubprocessHandle.pid、基础包移除 tool-str-replace-editor 默认条目、启动器 runCli()/import.meta.main 门控、pi-ai ^0.84.2→^0.85.1;首个发布到 npm 的 0.1.3 构建(alpha.1 项目首次供 npm 升级使用) |
| references/v0.1.5-alpha.1.md | 0.1.3-alpha.2→0.1.5-alpha.1 精选卡片(20 张,跨版本跳跃边):会话日志格式 V3(session-format-v2-to-v3、移除 EpochHeader.system、不支持降级读取)、移除 ctx.agent + 显式 AgentSetup(agentCtx, agent)/parentAgent、agent.inbox 处的 Inbox 类型接口、更严格的会话事件负载验证、PTC 术语重命名、移除 token-meter 导出 + contextBreakdown stateVersion 4、消息历史中的系统提示词、转发的有作用域限制的 Remote 事件必须携带 Agent、CLI 拒绝 --profile desktop、--from-default-profile/loadProfileDirectory()、workspaceFiles/readByteRange//api/file 文件接口 + 文件寻址辅助函数、goal/activation-changed + 拒绝恢复已暂停的目标、fs-ext→node-addon-system 打包、Web 客户端 details→rightbar 改造、注入接口签名变更、右侧边栏/资源扩展点、从侧边栏打开文件、tool-subagent 要求有作用域限制的预设、主机 SSH/目录选择器/指令发现接缝;A1-20(真实主机验证):原地升级 npm 全局安装可能会为客户端提供缺少新增打包模块的组合——一个模块被丢弃就会导致每个客户端插件注册失败,重启主机可自动修复模块清单/组合不匹配 |
| references/v0.1.5-alpha.2.md | 0.1.5-alpha.1→0.1.5-alpha.2 精选卡片(24 张):workspaceFiles 移除 Agent 第一个参数,改用 Typert workspaceFileScope(客户端资源类型、reload/restat、absolute 作用域授权);文件读取可离开工作区根目录,并受 maxFileBytes 限制,新增 readAll/readRelated;conversation 槽位移至根作用域的 main 下,并采用 sidebar.panellist;精简配置文件变为仅持久化 shell;两个不可忽略的会话事件(deliverables/presented、subagent/catalog);dsh-llm-pi-ai 配置/类型变更;有作用域意识的工具指引;present/显示交付接口;文档预览 + ui-sidebar-textpreview→ui-sidebar-documentpreview;新增 chunked-list/tool-present 包;拒绝 MCP 分页游标;会话格式状态文档;客户端/打包卡片:rightbar 根作用域 + rightbar.session 以及布局服务/存储重写(selectPanel、beginNavigation、usePanelInfo)、client-resources 移除 reload、ui-primitives FileTypeIcon/classifyFileType、ui-dockkit 契约偏差、ui-message-feedback 注入接口、ui-workspace openSession/openWorkspace/forkSession、ChatFileMentions.forClosing(owner, sessionId) + 交付轮次尾部、仅浏览器端依赖 → devDependencies、ctx.documentPreviews 注册表、ActionSpec 命令、command-feedback 子路径 + sessionFeedback Host Remote、延迟加载的侧边栏默认页面/关闭规则;自 2026-09-09 起发布到 npm |
| references/v0.1.5-rc.1.md | 0.1.5-alpha.2→0.1.5-rc.1 精选卡片(5 张):基础包的默认 Agent 模型 ID 改为 deepseek-flash;deepseek-flash(V41 Flash)加入适配器目录,支持图像输入、systemPromptUpdate: 'in-history',且不进行网关探测;文档渲染器新增必需的 scrollportRef;侧边栏指南条目新增可选的 description;负面证据 + 17 个代码库的集群验证记录。此边包含 17 个提交 |
| references/v0.1.5-rc.2.md | 0.1.5-rc.1→0.1.5-rc.2 草稿卡片(6 张):反馈接口的注入契约移除 toggle/acknowledge,openDialog 新增必需的 rating,MessageFeedbackToggleResult 不再导出(取代仍处于开放拉取请求中的 alpha.2 反馈卡片注入部分);两种评分现在都会在对话框中确认,提交失败时会显示持续 6 秒的警告 toast;FileTypeIcon 的 48 个代码类别图标移至注入式设计导出图稿,并使用各实例独有的 dsh-code-icon-* ID;已完成轮次页脚和文件区块间距成为 20/16/20px 契约;service-stability 在两种语言中都重新标注;该边附带负面证据,表明 Host 平面没有包发生变化(其 334 个文件中有 272 个是版本字符串)。注意:npm latest 仍解析为 0.1.5-rc.1——rc.2 位于 next |
| references/v0.1.6-alpha.1.md | 0.1.5-rc.2→0.1.6-alpha.1 草稿卡片(38 张,此处收录卡片最多的边:800 个提交 / 4015 个文件)。Host:删除 agent/session-start,agent/created 改为串行并等待完成;auditStartupEntries 替换 assertEntries* 这对接口;会话事件读取弃用;新增 registerMessageProjection(),未注册纯解释器时会拒绝;session-log-deepseek 默认上传。运行时:codeRuntime→ptcRuntime,拆分为 resolve/run;异步 SandboxProvider.confine 和 ShellExecutor.start;子进程 terminalEnvironment() + 可选控制通道;workflow-ptc 替换 worker-thread 提供程序;MCP 2.0 SDK、新增 ctx.mcpResources 和 ctx.ssh 能力。LLM:适配器报告 IMAGE_OFFLOAD_REQUIRED,不再投影图像;deepseek-official 默认采用 Anthropic Messages 协议;图像改用 v41 token 网格;投影 stateVersion 5;AssistantProvenance→AssistantProviderMetadata。Web 客户端:生产者/提供程序重命名、必需的 CommandClaim.name、新增 conversation.input.permission 和键控指南条目槽位、移除 ConnectionIndicator.reconnectLabel、上下文感知差异、?fixture 模式由 assembly 层级替代。组合/打包:基础包用 ptc-runtime + workflow-ptc 替换 workflow-worker-thread,挂载 image-offload(读取时必需的 image/offload)和 mcp-resources,默认禁用 tool-ralph;Web 包移除 code-runtime 条目;+22/−7 包清单;无头模式 --session-id/--json;重建公共包清单;实验性发布改为拒绝列表;node-addon-require-builtin 下限从 ^0.1.4→^0.1.6;负面证据表明 SESSION_FORMAT_VERSION(3)、引擎下限和启动器 CLI 语法均未变化 |
| references/v0.1.6-alpha.2.md | 0.1.6-alpha.1→0.1.6-alpha.2 草稿卡片(4 张):移除 SessionListState.current,并引入多实例 Session 引用——通过 ctx.uiSession.adapter.current.getSnapshot()(两个标签均适用)或 retainedBy.mainView 标记解析主 Session;GlobalStandardProps 将 useSessionPendingInteraction 替换为 useSessionStatus + useSessionRetainInfo,保留 useSessions;新增的 plugin-manager 服务管理配置文件包(dsh.profile.bundles + pnpm),并将行开关写入配置文件的 cordis.patch.yml;一手证据表明,通过链接安装的插件不受其包管理功能管理;npm 发布落后于 GitHub 发行版(E404 窗口)。请先阅读 0.1.6-alpha.1 卡片 |
| references/v0.1.7-alpha.1.md | 0.1.6-alpha.2→0.1.7-alpha.1 草稿卡片(10 张):客户端基础组件图标集移除所有 *16 导出,改用 *Medium/*Regular 变体(缺失的导出会导致整个槽位条目消失,React #130);workspaceFiles 读取统一使用 readBytes;设置移入当前 Profile 的插件配置,并一次性导入 settings.yaml;由包声明的 Agent 预设;会话日志 V4 及批量迁移工具;官方 DeepSeek 适配器仅支持 Messages API;有序多补丁包和不重新加载的配置字段;容错加载 Profile;支持区域设置的插件元数据;自定义事件附件不再自动读取。前一条边 0.1.6-alpha.1→0.1.6-alpha.2 单独收录了卡片 |
| references/v0.1.7-alpha.2.md | 0.1.7-alpha.1→0.1.7-alpha.2 草稿卡片(4 张):spill-policy 的 maxInlineBytes 改为 maxInlineTokens,并采用共享的首尾 token 预算;供应的依赖自动更新固定为同一次要版本的补丁版本;首次安装插件时自动选择响应最快的 npm 注册表;客户端包在主机启动时缓存(安装目录中的客户端编辑需要重启主机),而 Web 页面会在服务重启后重新连接 |
| references/v0.1.7-rc.1.md | 0.1.7-alpha.2→0.1.7-rc.1 草稿卡片(5 张):安装和启动时会强制执行 DSH 对等依赖范围,并在 <profile>/compatibility.json 中支持精确版本例外——对于主机 semver ^7.8.5(自 7.8.3 起更改了 caret)和 includePrerelease,^0.1.7/~0.1.7/>=0.1.7 会拒绝 0.1.7-rc.1,且 --dump-config 仍会列出被拒绝的条目;tool.call.toolview 所有者改为 preparing/start/result 阶段联合类型,只有已启动的调用才包含 argsRaw;Conversation Definitions 接受临时启动;工作详情设置新增四种模式(默认 standard);Plugin Manager 限制静默 pnpm 运行时长,并预先检查 GitHub 可达性 |
| references/v0.2.0-rc.1.md | 0.1.7-rc.2→0.2.0-rc.1 草稿卡片(6 张):主机包升级到 0.2.0-rc.1,因此所有下限为 ^0.1.x 的 DSH 对等依赖都会被拒绝,^0.2.0 也不接受 0.2.0-rc.1(请使用 ^0.1.0 || ^0.2.0-rc.1 或 ^0.2.0-rc.1);Web 工作详情默认值为 detailed,并支持可选的 transcriptView;Schedule 行移至 @deepseek-ai/dsh-experimental-schedule-bundle;telemetry 行加入包组合;fork 新增 onCreated;Explorer 路径打开操作会启动可见进程。前一条 0.1.7-rc.1→0.1.7-rc.2 边尚未收录卡片(通道缺口) |
| references/v0.2.0-rc.2.md | 0.2.0-rc.1→0.2.0-rc.2 草稿卡片(3 张):桌面运行器接口,基于真实 Desktop 0.2.0-rc.2 安装的一手记录——Electron shell 删除 host/origin/cookie/sec-fetch-site 后通过 dsh-app://app 转发渲染器请求,并重写 WS origin,因此要求明确浏览器标记的插件边界会对所有路由返回 403(需按平台边界信任语义重新对齐);将两条先前的实地记录合并为卡片(Desktop ctx.sessions 注册表为空——附上游讨论链接;Windows 上的最小子进程 PATH);未注明来源的实地记录:readSession 种子会话重放验证 |
| references/jump-0.1.5-rc.2-to-0.1.7-rc.1.md | 0.1.5-rc.2→0.1.7-rc.1 跨版本跳跃精选卡片(34 张,DSH-0.1.7-J1):主机/运行时平面——安装和启动时强制执行 DSH 对等兼容性,并支持精确版本例外;PTC 运行时重命名(codeRuntime→ptcRuntime,Node 引擎移至独立进程);声明式 Agent 预设(拆分 dsh-agent-presets);设置移入配置文件插件 Config(移除 settings.register);会话日志 V4 + session-format-v3-to-v4 + 附件载体缩减;Remote 双工/二进制支持 + readBytes;异步 Agent 生命周期(移除 agent/session-start,agent/created 新增 source);Message 角色联合类型 + createSystemMessage(text);仅支持 Messages 的 DeepSeek 适配器(/anthropic);subagent Config/深度;移除 E2B + POSIX SSH 提供程序;关闭 Ralph;token 预算型 spill-policy;只读 tool-cordis;包采用有序补丁列表;包重命名清单;新增 CLI/无头模式接口;Agent Team 单一包;实验性语音/浏览器/计算机使用;捆绑 LibreOffice + 打包应用的 Node 要求;MCP 资源;会话日志隐私默认设置。Web 客户端平面——toolview preparing 阶段;chat-node/turnTail 重塑;呈现策略通道;图标从 *16→*Regular/*Medium 重命名;settingsScope→configForms;右侧边栏标签页契约;新增侧边栏包;组件工厂;插件管理器页面 + pluginManager Remote;ModelDirectory.select 结果;移除 ui-cordis @pluginId;会话行操作槽位;新增两个设置页面入口(settings.launcher、settings.models.sign-in)。逐边的 0.1.6/0.1.7 卡片文件涵盖相同的时间窗口;此文件是跨版本跳跃视图,不是通道边,plan-migration.mjs 不会读取此文件 |
| references/api-migration-0.1.2-alpha.2.md | 精确的 rc.2→alpha.2 接口清单;涉及 API、Remote、Settings、事件、Headless、打包或组合接口时阅读;包含已移除的客户端运行时和键控聊天快照(API-10) |
| references/rollup-0.1.2.md | 0.1.1 → 0.1.2 通道(汇总):跨队列共存、未发布队列安装、RemoteResult 错误流、迁移前基线归因、启动竞态的有界重试、仅基础预设的前提条件、类型接口导出偏差、主机自身安全边界、安装渠道陷阱(镜像延迟、pnpm 11 供应链规则、对等依赖下限的预发布语义)以及分层验证清单;基于 rc.1,须经最终发行版审核 |
| references/precision-checklist.md | Alpha.2 静态迁移精度检查清单:对等依赖下限、运行时模块组合与类型声明、区域设置配对、保留协议的通道身份验证、合并规范和引用;与 scripts/inject-lint.mjs 配合,检查残留/对等依赖并列出待人工审核的路由 |
| scripts/README.md | 可执行辅助脚本:plan-migration(只读迁移规划器)、verify-runtime(离线运行时契约检查器)和 ghost-host-check(预检步骤 1.5 的 ghost-host 分类器) |
| examples/legacy-plugin/ | 七类触点的静态样例(切勿执行) |
| examples/08-real-web-client-alpha2-migration.md | 从较旧且不受支持的通道片段迁移真实 Host + Web 客户端源代码 |
| 规范背景:dsh-community-standard 负责清单、契约坐标和协商约定;本技能负责现有插件的实际升级,并沿用该分类,不重新定义。官方贡献征集见 deepseek-harness 讨论 #5120。 |