dsh-plugin-tool-management 0.15.0 → 0.16.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,55 @@
10
10
 
11
11
  ---
12
12
 
13
+ ## [0.16.5] - 2026-09-30
14
+
15
+ issue #1 收尾与桌面版第二轮适配:兼容页身份比对改为逐包解析、逐包核对(桌面版不再误报「两份不同拷贝」),「全部可用」与「N 项不可用」不再同屏;桌面版注入会话的 4 个官方内置技能接入技能页管理。
16
+
17
+ ### 修复
18
+
19
+ - **桌面版兼容页误报 5 条「两份不同拷贝」**:宿主侧的身份比对把「realpath 机制整轮不变」错写成了连**解析结果**一起复用 —— 第一个包(cordis)的宿主侧入口路径被当成其余五个包的宿主侧路径,五条全部比成「与 cordis 不同」→ 5 条假阻塞项,banner「能力 18/18 · 全部可用」与红卡「5 项不可用」同屏(桌面版 0.2.0-rc.2 实测全中)。现在逐包解析、逐包取真实形态 —— 解析本就便宜,Node 自身还有缓存;同日新旧对比实测:旧代码 1 真 / 5 假 + 5 条阻塞,修复后 6 真 / 0 阻塞。
20
+ - **安装形态下的修复指引不再是跑不了的命令**(issue #1 次要问题 1):阻塞项原文让人去跑 `node scripts/host-deps.mjs --fix`,而 `package.json` 的 `files` 不含 `scripts/`(开发者脚本本就不该随发布走),npm 装出来的用户照做只会拿到 `MODULE_NOT_FOUND` —— 指引指了一条不存在的路。现在按**实际形态**给:源码检出(插件旁边就有 `scripts/host-deps.mjs`)保留原文,并点明要「在插件源码目录」跑;npm 安装形态改说「升级或重装本插件后仍然如此再报」。兼容页底部那句「可运行 node scripts/doctor.mjs 查看」同理分两键,安装形态下不再指命令。
21
+ - **路径取不到真实形态时不再编一个「两份拷贝」的结论**(issue #1 次要问题 2):`realPathOf()` 以前 `catch { return value }`,把「这条路径不可解析」静默降级成「拿输入去比较」—— 于是路径/权限问题看起来就是「插件与宿主加载的是两份不同拷贝」,用户照着它去修只会白费功夫。现在取不到真实形态就**如实记原因**(`error.code` 与消息原文),这类包给 `sameAsHost = null`(比不了)并单独出一条说明,带包名、哪一侧(`host` / `plugin`)、解析到的路径与失败原因;界面显示「无法比较(路径取不到真实形态)」并列出两侧。
22
+ - **兼容页不再一边「全部可用」一边挂着红卡**:能力注脚与红卡高亮此前把「身份待处理」(两份拷贝这类 —— 不影响能力可用性)混进了能力降级计数。现在两处只看能力降级数;汇总行三分:全可用 / 能力降级 / 身份待处理(新增词典键 `compat.summary.identity`),各说各的。
23
+
24
+ ### 新增
25
+
26
+ - **官方内置技能接入管理**:桌面版宿主向每个会话注入 4 个官方内置技能(office-docx / office-pptx / office-xlsx / diagnose-windows-sandbox-acl),此前技能页看不见、也关不掉。现在它们以单一「官方内置」来源出现在技能页,紧跟 DSH 技能之后:每次宿主启动从官方源头整目录**物化**成插件自有的一份真实目录(`$DSH_HOME/tool-management/official-skills/`;office 取自桌面运行时目录 `<resources>/runtime/office-skills`,沙盒诊断取自官方 asar 包内资源 —— 官方自己的副本一个在 asar 里、一个由官方 provider 复制进临时目录自管,直接指着读既不稳,也没法让 PowerShell / Python 子进程执行脚本),扫描、启停、脚本执行全部落在真实文件上;单个技能可启停(overlay 以 rank 599 压过官方 provider 的 600),来源层与默认来源同语义(不可移除、无来源开关、源文件只读)。web 宿主不注入任何官方内置技能,这个来源**不出现** —— 物化目录虽与各宿主共用,非桌面宿主绝不进来重建(web 宿主进程里的官方模块拦截器能把 `@deepseek-ai` 裸名解析到宿主副本,若也重建会把桌面物化好的整目录清成它解析到的那几个;2026-09-30 实测两份 UI 同时只剩沙盒 1 个)。预设参考技能(dsh-agent-preset/skills)不注入会话上下文,不列(用户裁定)。
27
+
28
+ ### 变更
29
+
30
+ - **源码检出与 npm 安装形态的行为差异,只在指引上一处**:`/dsh-plugin-tool-management` 里有没有 `scripts/host-deps.mjs` 决定给哪句指引(本插件不从 `scripts/` 加载任何东西),其余判定完全一致。
31
+
32
+ ### 说明
33
+
34
+ - **收尾范围**:issue #1 的主因(`import.meta.resolve` 的 URL 未解码,含空格路径必现;macOS 上开头斜杠被一起删掉)已在 0.16.0 随 `fileURLToPath` 修掉,本版带次要两条的收尾、身份比对的逐包核对与官方内置技能管理。
35
+ - **实测**:源码检出与安装形态两种位置的 `isSourceInstall()` 分别得 `true` / `false`;注入一个「能解析、realpath 必失败」的目标跑真实代码,产出 `kind:"realpath"`、`side:"plugin"`、原因的 `ENOENT` 原文,且**不再出现在阻塞项里**;悬空 junction 的语义实测为 `existsSync=false`、`import.meta.resolve` → `ERR_MODULE_NOT_FOUND`(因此走「宿主锚点里找不到它」的 `unverified`,同样不会误报成两份拷贝)。官方内置技能按双模式离线验证:web(无 `process.resourcesPath`)不出现该来源且不触碰共享物化目录,桌面物化 4 个技能、来源紧跟 DSH 技能、office 的共享 `scripts/` 相对结构保留。
36
+
37
+ ## [0.16.0] - 2026-09-29
38
+
39
+ ### 修复
40
+
41
+ - **桌面版被误判成「两份不同拷贝」**:桌面版 DSH 把整套官方包封在 `resources/app.asar` 里,插件在归档外的 profile 目录,两边物理上不可能是同一份文件 —— 兼容页却把它算成 6 条阻塞项,还让用户去跑 `node scripts/host-deps.mjs --fix`;那条命令在这台机器上只会把插件依赖 junction 到 npx 缓存里的另一个宿主(实测:0.2.0-rc.2 → 0.1.7-rc.2)。现在宿主发现先认归档(`process.resourcesPath` 下确实躺着 `app.asar/dsh` 才算),归档宿主与插件**按版本**核对:版本一致就记一条说明(「同版本、仅打包方式不同」)并从阻塞项里摘出去,版本真不一致才照旧报阻塞(2026-09-29 桌面版 0.2.0-rc.2 实测)。
42
+ - **宿主版本显示 `unknown`、带空格的安装路径上身份比对必然失败**:`import.meta.resolve` 给的是 URL,插件把 `%20` 当成普通字符留在路径里 —— 「D:\DeepSeek Harness\...」这种路径于是永远打不开,版本读不出来,比对也就必然不等。改用 `fileURLToPath` 解码(0.1.5 起这条路就有,只是此前没人在带空格的路径上装过)。
43
+ - **MCP 体检补上端点探测**:此前只查配置格式,一条编造的 streamable-http 地址也能拿绿点(2026-09-29 GUI 测试发现)。现在格式对了就对配置地址 GET 一次 —— 带配置的鉴权头、5 秒超时、不读响应体,与宿主连接该服务走的是同一地址同一头部;连不上点黄,说明里带原因(域名解析失败 / 连接被拒 / 超时 / 证书校验失败)。逐行检查同时改成并行,「全部检查」不再被挂掉的服务按行数排队拖慢。
44
+ - **删除 MCP 服务同步清掉引用**:只删补丁行的话,引用它的地方全成死键 —— 场景档案的勾选与备注、停用表、「已知工具」缓存、服务器备注现在一并摘掉;被**锁定**的场景档案是用户显式冻结的,跳过不动并在回执里说明。删除后等宿主 loader 摘条目(最多 5 秒),等不到就明说「列表可能短暂残留它的行,宿主收敛后自动消失」—— 此前那条 `include:*` 残留行无声出现、约一分钟后自己消失,用户只会以为没删干净(2026-09-29 GUI 测试发现)。
45
+ - **MCP 页轮询不再空转重渲染**:本页每 5 秒轮询一次,此前即使带回的数据一模一样也整页换一批新对象 —— 缓存计算、React 协调、开着的弹窗全部跟着空转,点击与输入都可能被这阵重渲染打断。现在内容没变就跳过整页更新(2026-09-29 GUI 测试发现)。
46
+
47
+ ### 变更
48
+
49
+ - **「插件适配版本」改标 0.2.0-rc.2**:桌面版首发版本已实测通过(宿主版本读得出来、18 项能力全通过、归档宿主的身份判定见下条),`VERIFIED_HOST_VERSION` 与 `EXPECTED_PEER_RANGE` 一起加上它 —— 宿主比自己验证过的版本新时,那条「实际宿主与验证过的版本不同」的提示就不再无谓地刷在桌面上(web 宿主 0.1.7-rc.2 会开始提示,这是事实,不是故障)。
50
+ - **兼容页的三张指标卡只在有事要说时带注脚**:「宿主版本」下面那行「最低要求 ≥ 0.1.5-rc.2」删掉(那是**安装期**的 peer 下界,摆在这里会被读成对当前宿主的断言)、「插件适配版本」下面那行「本插件按此版本验证」删掉(同一件事说两遍)、「可用能力」全通过时不再写「全部通过」(分子分母已经说了)—— 降级与「缺口由插件自补」两种仍照旧说清楚(2026-09-29 用户裁定)。该 peer 下界仍留在 `compat-status` 的载荷里(doctor 与外部脚本可读),只是不再显示;配套的界面词典键 `compat.peer`、`compat.verified.note`、`compat.caps.all` 一并删掉。
51
+ - **四个域的行状态统一成名字后面的描边胶囊**:MCP「已运行 / 未运行」改「已启用 / 未启用」、技能与子智能体「已停用」改「未启用」、记忆「本条已停用」改「未启用」(「场景未启用」措辞不动)。配色按语义分工:绿=生效中、灰=没生效但不是故障、橙=当前没可用工具 / 诊断异常、红=启动失败 —— 停用类不再是橙色。
52
+ - **MCP 的体检状态点挪到名字前面**:以前它在标签列里,读一行要先穿过名字才找得到那颗点。点占的 14px 单独成槽,名字、备注与表头一起对齐到槽的右侧(2026-09-29 用户反馈名字比下面的备注右移、没对齐)。
53
+ - **子智能体启用时也挂「已启用」胶囊**:以前只有停用的那颗,"没有标签"是不是等于启用得猜。
54
+ - **MCP / 技能 / 记忆三页取消「状态」列**:状态跟着名字走之后那一列空了,表头少一项,行网格从四列收到三列。
55
+ - **MCP 行固定两行预算**:标签(工具数 / 层级 / 重名)从独立的标签列并进备注那一行 —— 带不带备注的行高一致(此前带备注的要高出约一档),行网格再收到两列、表头只剩「服务名称与地址」。技能与记忆仍是三列。
56
+ - **窄档(面板 <780px)的 MCP 行高 81px → 69px**:58px 的行下限是三行时代留下的,动作组又仍跨着两个空行、白付两格行距;两处都按两行内容重算(上下各 11px 内边距不变)。
57
+ - **MCP 行去掉「重启」按钮**:重启就是那枚开关的关→开,用户自己拨即可。只有它用的「重启中… N 秒」横幅(连同那枚每秒重渲染的计时组件)一并删除,三处「点「重启」重试」的提示改说「把开关关掉再打开重试」。行右侧剩 开关 / 检查 / 详情 / 编辑 / 删除;模型侧的 `mcp_manager_switch(action=restart)` 与「最近改动」里的重启记录不受影响。
58
+ - **MCP 第二行改成标签在前、备注在后**:工具数那枚短事实先读到,长备注留在行尾自己截断。
59
+ - **「最近改动」的说明句拆成两条**:「记什么」与「会不会涨」各一条,用字段说明同款的条目样式,不再是一整段;「记什么」那条去掉括号里的补语。
60
+ - **「修改场景」的提示词预设说明改成一句**:原来两条(启用即以它为全局基线 / 启用期间应用别的预设 = 改绑)压成「为当前场景设置全局提示词」。条目符号留着,「场景名」的说明也一并挂上 —— 这张表单里字段说明同款(校验报错那句仍是红字,不进清单)。
61
+
13
62
  ## [0.15.0] - 2026-09-28
14
63
 
15
64
  适配 DSH 0.1.7-rc.2(升级后五处失效逐项修复),并带五件增量功能。
package/docs/update.md CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
  | 版本 | 发布 | 主题 |
6
6
  | ---------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
7
+ | [0.16.5](#0165---2026-09-30) | 2026-09-30 | 桌面版误报 5 条「两份拷贝」修掉(身份逐包核对)+ 「全部可用」与红卡不再同屏 + 官方内置技能接入管理(桌面版注入的 4 个可启停;web 不出现) |
8
+ | [0.16.0](#0160---2026-09-29) | 2026-09-29 | 桌面版宿主身份误判修好(归档宿主按版本核对,带空格路径的宿主版本不再显示 unknown)+ 兼容页三张指标卡各删一行、适配版本改标 0.2.0-rc.2 + 四个域的行状态统一成名字后面的胶囊(已启用 / 未启用,停用类改灰)+ MCP 体检点挪到名字前 + 体检补端点探测 + 删除同步清引用 + 轮询不空转 + 子智能体补上「已启用」 |
7
9
  | [0.15.0](#0150---2026-09-28) | 2026-09-28 | 适配 DSH 0.1.7-rc.2:修好 MCP 列表与注入 + 预设边界与极简兜底注入 + 会话标题 + 设置令牌 + host-deps / doctor;新增 MCP 导入导出、配置体检、最近改动流水、场景绑工具表方案、整机迁移快照;功能总览英文补齐、兼容页收弹窗与界面打磨 |
8
10
  | [0.14.0](#0140---2026-09-23) | 2026-09-23 | 场景与记忆分家(共 20 条工具)+ 模型能进入 / 退出场景 + 场景档案对模型可见、改档案会报出被挤掉的项 + 注入只写"现在是什么"(省 21.9%)+ 十五条工具出厂默认关(每轮实发 5 条 ≈1,090)+ 工具表可存方案一键换回 + 人设思考强度 + 改 MCP 配置不碰明文凭据 + 提示词「生效中」修好 |
9
11
  | [0.13.0](#0130---2026-09-23) | 2026-09-23 | 模型多五个管理工具 + 所有写操作都要用户点头 + 工具表可关(省 token)+ 进场景前先看一眼会改什么 + 悬空引用体检 + 注入实况改为只数当前这段对话 + 技能正文一步读到 + 记忆页显示体积 + 门禁清单合成登记表 + 自定义目录的技能修好
@@ -23,6 +25,33 @@
23
25
 
24
26
  ---
25
27
 
28
+ ## 0.16.5 - 2026-09-30
29
+
30
+ - **桌面版不再误报 5 条「两份不同拷贝」**:宿主侧身份比对把第一个包(cordis)的路径当成其余五个包的,五条全部比成「不同」。现在逐包解析、逐包核对。
31
+ - **「全部可用」与红卡不再同屏**:身份待处理(不影响能力可用性)不再混进能力降级计数,汇总行按 全可用 / 能力降级 / 身份待处理 分开说。
32
+ - **官方内置技能能管了**:桌面版注入每个会话的 4 个官方技能(Office 三件套 + Windows 沙盒诊断)以「官方内置」来源出现在技能页、紧跟 DSH 技能,单个可启停、脚本照常能跑;web 不注入,这个来源在 web 上不出现。
33
+ - **修复指引按装法给**(issue #1):那块「两份不同拷贝」以前一律让人去跑 `node scripts/host-deps.mjs --fix`,可 npm 装出来的插件里**没有** `scripts/` 这个目录(发布不带开发脚本),照着做只会 `MODULE_NOT_FOUND`。现在源码检出给原指引(并写明要在源码目录跑),npm 安装形态改说「升级或重装后仍然如此再报」;兼容页底部那句自查命令同样分两种形态。
34
+ - **路径问题不再冒充模块问题**(issue #1):以前路径取不到真实形态时会静默拿原字符串去比对,于是「读不到路径」被报成「插件与宿主加载的是两份不同拷贝」—— 结论是编的。现在如实说「无法比较(路径取不到真实形态)」,并列出是哪一侧、解析到哪条路径、失败原因原文。
35
+
36
+ ---
37
+
38
+ ## 0.16.0 - 2026-09-29
39
+
40
+ - **桌面版不再被误判成「两份不同拷贝」**:桌面版把官方包封在 `resources/app.asar` 里,插件在归档外,位置天生不同 —— 以前兼容页把这当成 6 条阻塞项,还指路一条会把依赖降级到旧宿主的命令。现在归档宿主按**版本**核对:版本一致就只记一句说明(同版本、仅打包方式不同),版本真不一致才报阻塞;顺带修好带空格安装路径下「宿主版本显示 unknown」的老毛病(`import.meta.resolve` 的 `%20` 没解码)。web 版行为不变。
41
+ - **兼容页少三行、适配版本改标 0.2.0-rc.2**:「宿主版本」下的「最低要求 ≥ 0.1.5-rc.2」、「插件适配版本」下的「本插件按此版本验证」、「可用能力」全通过时的「全部通过」都删了 —— 前两条一个值就说得清(peer 下界是安装期门槛,摆在当前宿主下面会被误读),第三条分子分母已经说了。「插件适配版本」跟着桌面版首发版本走(0.2.0-rc.2),桌面版因此不再刷「实际宿主与验证过的版本不同」的提示 —— web 宿主 0.1.7-rc.2 会开始提示,那是事实而不是故障。
42
+ - **状态一眼跟着名字走**:MCP、技能、子智能体、记忆四个页的行状态,以前分在两处(MCP / 技能 / 记忆在名字右边单独一列,子智能体只在停用时才挂个标签),现在统一成**名字后面的那一枚描边胶囊**,跟子智能体原本的样子对齐。
43
+ - **叫法统一成「已启用 / 未启用」**:MCP 的「已运行 / 未运行」、技能与子智能体的「已停用」、记忆的「本条已停用」都改过来(记忆的「场景未启用」原样不动)。配色也重排:**没启用是灰色**(它不是故障),绿色只给真的生效中,橙色留给"开着但当前没有可用工具 / 诊断异常",红色只给启动失败。
44
+ - **MCP 那行多两处**:体检状态点从标签列挪到**名字前面**(点占的那一槽单独算,名字、备注和表头仍对齐在一条竖线上);启用中的人设也补上「已启用」胶囊,不再靠"没有标签"反推。
45
+ - **表头少一列**:三页的「状态」列取消,行网格从四列收到三列。MCP 再收一档 —— 「9 个工具」这类标签并进备注那一行,**有没有备注行高都一样**(以前带备注的行要高出约一档),这一页的表头只剩「服务名称与地址」。
46
+
47
+ - **MCP 行再松一档**:窄档行高 81px → 69px(两行内容不该撑到三行的高度);行右侧去掉「重启」—— 那件事本来就是开关的关→开,用户自己拨,配套的「重启中… N 秒」横幅也一起删了,提示语改成说「把开关关掉再打开」;第二行换成工具数标签在前、备注在后。
48
+
49
+ - **两处说明文字收短**:「最近改动」弹窗那段拆成两条(记什么 / 会不会涨);「修改场景」里提示词预设下面的两条说明并成一句「为当前场景设置全局提示词」。
50
+
51
+ - **三处 GUI 测试发现的毛刺修掉**:MCP 体检不再只看格式 —— 格式对了还会对配置地址探测一次,编造的地址连不上就点黄并说清原因(2026-09-29 此前一条假地址也能拿绿点);删除 MCP 服务时同步清掉场景档案、停用表等处的引用(被锁场景跳过不动),宿主清单没跟上时也明说「残留的行会自动消失」,不再无声出现又无声消失;MCP 页轮询在数据没变时不再整页重渲染,弹窗里的点击与输入不再被周期性打断。
52
+
53
+ ---
54
+
26
55
  ## 0.15.0 - 2026-09-28
27
56
 
28
57
  - **适配 DSH 0.1.7-rc.2,升级咬人的几处全修好**:MCP 列表与注入失效(官方改了 `prepareDocument()` 返回语义,插件读错文件)、预设边界整片「无法判断」与极简下技能 / 提示词不注入(名册 `read` 改名 `readDocument`)、「设置令牌」失效(改写进 profile 补丁的覆盖条目)、host-deps / doctor 找不到宿主(发现序列加 npx 缓存扫描)、技能页误报已删目录。兼容探测表补上「设置文档路径」「预设名册读取面」两块契约面,健康行常显实际观测值;主目录推导加自检,异常才上报。