dsh-plugin-tool-management 0.9.1 → 0.11.0
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 +119 -1
- package/README.md +227 -201
- package/README_EN.md +227 -199
- package/docs/images/1-EN.png +0 -0
- package/docs/images/1.png +0 -0
- package/docs/images/2-EN.png +0 -0
- package/docs/images/2.png +0 -0
- package/docs/images/3-EN.png +0 -0
- package/docs/images/3.png +0 -0
- package/docs/images/4-EN.png +0 -0
- package/docs/images/4.png +0 -0
- package/docs/images/5-EN.png +0 -0
- package/docs/images/5.png +0 -0
- package/docs/images/6-EN.png +0 -0
- package/docs/images/6.png +0 -0
- package/docs/images/7-EN.png +0 -0
- package/docs/images/7.png +0 -0
- package/docs/images/8-EN.png +0 -0
- package/docs/images/8.png +0 -0
- package/docs/update.md +144 -12
- package/lib/client.js +8437 -5929
- package/lib/compat/preset-reach.js +1 -10
- package/lib/compat/probe.js +158 -25
- package/lib/context-inject.js +396 -53
- package/lib/host-names.js +12 -0
- package/lib/http-fence.js +35 -15
- package/lib/hub.js +31 -3
- package/lib/imports/parsers.js +15 -9
- package/lib/imports/upload.js +43 -4
- package/lib/index.js +940 -3765
- package/lib/mcp/loader-token.js +238 -0
- package/lib/mcp/manager.js +1681 -0
- package/lib/mcp/override-blocks.js +20 -9
- package/lib/mcp/patch-yaml.js +351 -0
- package/lib/mcp/secret-guard.js +145 -0
- package/lib/mcp/state-section.js +64 -21
- package/lib/{rules → memories}/archive-engine.js +65 -10
- package/lib/{rules → memories}/archive.js +6 -7
- package/lib/memories/constants.js +128 -0
- package/lib/memories/index-io.js +330 -0
- package/lib/memories/projection.js +280 -0
- package/lib/memories/service.js +686 -0
- package/lib/memories/snapshot.js +672 -0
- package/lib/ops/candidates.js +64 -0
- package/lib/ops/compat.js +136 -0
- package/lib/ops/ctx.js +9 -0
- package/lib/ops/memory.js +678 -0
- package/lib/ops/prompts.js +107 -0
- package/lib/ops/scene-records.js +460 -0
- package/lib/ops/scene-sync.js +17 -0
- package/lib/ops/sessions.js +603 -0
- package/lib/ops/trash.js +140 -0
- package/lib/paths.js +103 -0
- package/lib/prompts/preset-id.js +49 -0
- package/lib/{agents-md → prompts}/service.js +1 -1
- package/lib/request-gate.js +320 -0
- package/lib/scene-prompt-sync.js +4 -4
- package/lib/scenes/candidates.js +344 -0
- package/lib/{history → sessions}/bridge.js +22 -5
- package/lib/sessions/history.js +323 -0
- package/lib/{history → sessions}/tombstone.js +1 -2
- package/lib/{history → sessions}/workspace.js +92 -24
- package/lib/skills/catalog.js +6 -9
- package/lib/skills/core.js +79 -43
- package/lib/skills/readonly-discovery.js +4 -1
- package/lib/skills/service.js +98 -13
- package/lib/subagents/catalog.js +31 -15
- package/lib/subagents/service.js +506 -89
- package/lib/subagents/tools.js +29 -4
- package/lib/tools/deps.js +8 -0
- package/lib/tools/mcp.js +110 -0
- package/lib/tools/memory.js +87 -0
- package/lib/tools/prompt.js +70 -0
- package/lib/tools/skills.js +139 -0
- package/lib/tools/subagent.js +40 -0
- package/package.json +105 -102
- package/lib/agents-md/preset-id.js +0 -49
- package/lib/history/projcache.js +0 -335
- package/lib/rules/service.js +0 -2971
package/CHANGELOG.md
CHANGED
|
@@ -10,13 +10,131 @@
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
+
## [0.11.0] - 2026-09-20
|
|
14
|
+
|
|
15
|
+
### 新增
|
|
16
|
+
|
|
17
|
+
- **访问令牌可以设置、关闭、修改、删除了**:以前只有「设置」一条路,关掉就等于把配置里的令牌删掉、想再开只能重新输一遍。现在关闭只是"暂时不生效"(令牌留着,随时开回来),新增「修改令牌」与「删除令牌」,状态收成一枚四态胶囊 + 一句实况。
|
|
18
|
+
- **批量启停可以撤销了**:MCP / 技能 / 记忆三处批量开关做完后出现一条不会自动消失的提示,点「撤销」按操作前的状态逐条写回。
|
|
19
|
+
- **兼容页可以清理旧备份了**(页头「刷新」旁边):每份备份都是整份配置的副本、凭据在里面是明文,而自动剪枝只保证每层最多 5 份。逐层级选删除份数,弹窗内二次确认,只删备份、不碰当前配置。
|
|
20
|
+
- **提示词页与子智能体页可以搜了**:按名称 / 描述过滤,无命中说「没有匹配的…」而不是「还没有…」。
|
|
21
|
+
- **兼容体检改为真调一次**:归档 / 解档 / 批量 / 永久删除四个原生入口与会话的 detach / announce,以前只查方法名在不在就判可用;现在各用一个不可能命中的哨兵 id 真调一次,能调通才算数。
|
|
22
|
+
- **令牌开启、本次启动还没解锁时,输入框会锁住**:对话走的是 DSH 自己的会话通路,不经过插件的 HTTP 门禁 —— 此前令牌配了没填照样能聊、五个域的注入照样进上下文。现在这种情况输入框直接锁住并说明去哪填,解锁后立刻恢复。
|
|
23
|
+
|
|
24
|
+
### 变更
|
|
25
|
+
|
|
26
|
+
- **关闭 / 修改 / 删除令牌都要当场重输一次当前令牌**:解锁过**不算** —— 请求头里那份已验过的凭证对这三个销毁方向一律不作数,否则"能打开界面就能关掉保护 / 换掉凭证"。
|
|
27
|
+
- **令牌面板拆成「访问令牌」与「令牌管理」两块,表单全部搬进弹窗**:前者只管本次启动 —— 一枚状态胶囊 + 解锁框,解锁错误直接顶替状态句显示;后者只管配置文件 —— 设置/修改、保护开关、删除、清除令牌四行静态清单,行名/说明/按钮同形同位。页面上不再有会展开收起的东西;成功 = 弹窗收起 + 状态行更新,失败 = 弹窗不关、错误显示在弹窗内;红色只出现在确认按钮上。
|
|
28
|
+
- **「保护开关」的方向改按"令牌在不在生效"判断**:用环境变量提供令牌的用户以前会把"开着"显示成"开启保护"、找不到关闭入口;配置文件里没有令牌值时「删除令牌」也不再显示(点了是空操作)。「loader 行读不到」的提示也贴到操作区旁 —— 这一态下写配置必被宿主拒绝。
|
|
29
|
+
- **同一类名字的判定口径统一了**:Windows 保留设备名与控制字符一律拒绝;场景名不再接受尾随空格或点(界面与宿主此前各有一套校验、已经分叉)。
|
|
30
|
+
- **目录链接不再被跟随**:链接进来的记忆以前列得出来、开关也能开,却永远注入不进去。
|
|
31
|
+
- **「打开源文件」限定在技能来源与人设目录内**:这个操作把路径交给系统编辑器,以前只校验后缀。
|
|
32
|
+
- **六页搜索改为停手约 200ms 才过滤,列表只在数据或搜索词真变了才重算**:此前每敲一个字就把整份列表过滤排序一遍,而页面上任何一次重渲染(勾一次选、开个弹窗、MCP 每 5 秒轮询)都会再算一遍。
|
|
33
|
+
- **会话批量删除不再逐条重扫全部会话**(原先 O(N × 全部会话),现在这批共用开头取的一次快照);注入通道与记忆列表也不再反复重读同一份索引(按文件 `mtime+size` 指纹缓存,外部改了下一轮照常生效)。
|
|
34
|
+
- **导出加了病态上限**:单文件 32 MB / 合计 256 MB,超了明确报错(不再把"全部正文 + 一份 zip"同时堆在内存里);注定超限的上传在开始读之前就拒掉。
|
|
35
|
+
- **没配访问令牌时,查看明文密钥不再要求令牌**:原先一律拒绝,而那时用户根本没有可填的令牌 —— 点「显示密钥」只有一句"缺少访问令牌",是条死路。有令牌(含"关掉保护")时照旧要带对的。
|
|
36
|
+
- **「注入」设置块不再因为没填令牌而整块消失**:`inject-settings` / `mcpm-settings` 这两个"读改写"op 的**读**不再按写操作门禁(写仍然要令牌)。
|
|
37
|
+
|
|
38
|
+
### 修复
|
|
39
|
+
|
|
40
|
+
- **打码的密钥不再被「保存」写坏**:编辑弹窗预填的是打码值,以前保存会把它当真值写回补丁文件,真密钥永久丢失。现在保存时用原值顶替、没有原值就跳过并提示。
|
|
41
|
+
- **宿主没配令牌但浏览器里残留旧令牌时,现在有「清除令牌」入口**:以前那一态整行不渲染,残留令牌没有任何出口。
|
|
42
|
+
- **别处触发"去填令牌"时,先收起弹窗再聚焦解锁框**:解锁框在弹窗展开期间是禁用的,直接聚焦会被浏览器吞掉。
|
|
43
|
+
- **「令牌未验证」横幅不再盖住宿主的设置窗口**:层级降到插件弹窗之下,并加了关闭键;关掉后本次锁态期间不再出现,解锁后再锁照常回来。
|
|
44
|
+
- **堵上「清除令牌后仍可对话」的漏洞**:解锁一次后「清除令牌 + 强刷新」,浏览器里已无令牌、对话却畅通 —— pre-step 门禁读的那颗"本次启动已验过"的闩只置位不清零。现在清除令牌会让宿主把闩重新挂上(`token-unaccept`,不进 handlers、模型碰不到;不要求凭证 —— 它只会收紧),必须重新验令牌才能对话;其它标签页内存里的旧令牌同步作废。
|
|
45
|
+
- **编辑 MCP 服务器不再把 URL 里的凭据写成占位串**:URL 查询串是另一种打码形态(`?<redacted>`),现在与 env / headers 同一条规则 —— 没有原值可顶替时拒绝整次保存并提示重填。
|
|
46
|
+
- **「设置宿主令牌」不再可能把 DSH 写坏到起不来**:`config:` 形状识别不了时会插入重复键,而官方解析器对重复键是抛错;现在识别不了就拒绝改写并说明。
|
|
47
|
+
- **记忆索引损坏不再静默清空配置**:以前解析失败被当成"没有索引",下一次写入就把空索引落盘,一次损坏丢掉全部启用集合与排序。现在坏文件留存、拒绝写入并说明怎么办。
|
|
48
|
+
- **开关状态不再莫名回弹或陈旧**:两个开关同时写同一份状态文件会互相抹掉;现在写操作串行执行,并跟随文件的实际改动。
|
|
49
|
+
- **锁定场景正在生效时,不再能通过清空启用集合绕开模型侧的写门禁**。
|
|
50
|
+
- **MCP「重启」中断后不再把服务器留在停用态**(恢复写在 `finally` 里)。
|
|
51
|
+
- **导入文件不再让设置面板变空白**:渲染期抛错把整棵组件树卸载了。
|
|
52
|
+
- **详情弹窗不再被"晚到的响应"搅乱**:连点两条时先发的响应后到会覆盖详情,关窗后晚到的响应还会把它重新打开。
|
|
53
|
+
- **「显示密钥」真的能显示明文了**:以前客户端又打了一次码,解锁后看到的仍是 `sk-1****`。
|
|
54
|
+
- **「令牌没过」的提示统一成一句话**,不再几秒后自己消失,且在任何弹窗里都看得见(此前弹窗里有的什么都不显示、有的没有跳转按钮)。
|
|
55
|
+
- **子代理工具注册失败不再静默**:子智能体页顶部会出黄条说清是哪几个工具、为什么。
|
|
56
|
+
- **读不到的记忆不再"人间蒸发"**:文件被删 / 权限不足 / 被锁时会连名字与原因出现在记忆页的告警条里。
|
|
57
|
+
- **导出会话不再静默覆盖同名文件**(文件名带短哈希区分,撞名如实报 skipped)。
|
|
58
|
+
- **命令行体检(`node scripts/doctor.mjs`)补齐 6 项能力**:删除 / 归档 / 列表路由真正依赖的那些以前不在体检范围,现在 15 项全列。
|
|
59
|
+
- **键盘可达**:导入拖拽区以前是 `div` + `onClick`(Tab 到不了、回车也打不开),现在是真的按钮;工具页签补上页签语义与 ←/→/Home/End 切换。
|
|
60
|
+
- **开了系统的「减少动态效果」后**,开关、拖拽区、注入预算条不再有过渡动画。
|
|
61
|
+
- **批量归档部分失败会在结果里说明**;**人设改名改为原子写入**;**新建 / 导入记忆改为先落索引、再落文件**。
|
|
62
|
+
- **技能 / 子智能体 / 记忆三页现在会显示场景与锁定横幅了**:服务端标了、界面读不到(技能页的字段被响应信封挡掉、子智能体页刷新时漏搬、记忆页压根没渲染)。记忆页的写控件在场景锁定时也因此**从未被禁用**过,一并修好。
|
|
63
|
+
- **场景锁定期间不再显示「改动会同步写进场景档案」那条长提示**:开关都是灰的,那句话没有落点,与锁定横幅并排还互相矛盾。
|
|
64
|
+
- **批量启停的撤销条改成琥珀色**(边框 + 提示句 + 淡底):它是这次批量操作唯一的补救通道,此前与旁边的普通回执长得一样,扫一眼不会注意到。
|
|
65
|
+
|
|
66
|
+
### 文档
|
|
67
|
+
|
|
68
|
+
- **README 补上此前缺失的边界告知**:场景锁定的具体冻结范围、会话永久删除不进回收站、导出是可读转录不是完整备份、白名单会并回全部 MCP 工具、密钥在磁盘上始终是明文。
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## [0.10.0] - 2026-09-18
|
|
73
|
+
|
|
74
|
+
### 新增
|
|
75
|
+
|
|
76
|
+
- **「注入实况」显示每个域的采纳统计**:「注入 N 次 · 调用 M 次 · 采纳 K 次」,勾了开关但模型从没伸手一眼可见;节头并标注本进程观测到的工具调用数,区分「模型没用」与「统计没接上」。
|
|
77
|
+
- **人设可配「目录注入」(`catalogDepth`)**:控制常驻人设目录注入到哪一层会话(默认只在顶层),不限制子代理继续嵌套。
|
|
78
|
+
- **人设子代理支持 `inherit`**:继承本次会话**已完成**的轮次(本轮内委派仍要写全任务);贴合人设的任务从此一律走 `subagent_manager_run`,官方 `subagent` / `subagent_fork` 只在没人设贴合或需要后台任务时用。
|
|
79
|
+
- **人设新增「输出要求」字段(`output:`)**:一行一条硬要求,单独成节写进子代理系统提示词,并约束父代理的 `task` 只给目标与上下文、不规定做法。
|
|
80
|
+
|
|
81
|
+
### 变更
|
|
82
|
+
|
|
83
|
+
- **注入框架重排为 markdown 四级结构**:`##` 标题 + 加粗动作句前置 + 补充动作行 + 取代声明,五域同一副骨架;场景记忆与子智能体引导语同步重写(给判据、给优先级、补触发条件),正文重复标题与「已清空」通知的插件前缀一并去掉。
|
|
84
|
+
- **提示词注入不再「裸送」**:与其余四域同款框架且整条包进 `<system-reminder>`(正文里的闭合标记会转义),界面显示来源文件与载入状态,模型侧正文带「来源:」行。
|
|
85
|
+
- **关掉「技能」或「提示词」的勾选,官方那条注入一起停**(此前只停本插件自己);其余三域勾选完全生效。
|
|
86
|
+
- **子代理会话不再注入场景记忆**(只在顶层注入),子代理上下文收敛为「角色 + 任务」,需要时用 `memory_manager_*` 自取。
|
|
87
|
+
- **人设进子代理系统提示词时带角色框**:`# 角色:名` 标题 + 授权/边界一行 + `## 角色定义` 围栏,不含 `description`,人设文件本身不用改。
|
|
88
|
+
- **MCP 列表改为全局在前、同级按名排序**,页面、场景档案勾选器与模型侧清单三处同序。
|
|
89
|
+
- **人设目录的注入判据定为「深度 < `catalogDepth`」**;「注入实况」两档状态改称「已注入 / 不在本会话注入」,无正文行不再画展开箭头。
|
|
90
|
+
- **五个管理工具的描述回指上下文里的注入块**,目录与工具互相指路。
|
|
91
|
+
- **全部服务端错误码补齐双语词条**(此前 15 码无词条,英文界面回退中文原文);目录选择器与技能详情 frontmatter 标签同样改走词典。
|
|
92
|
+
- **README 安全段补充**:栅栏降级面、`dir-list` 暴露面、HTTP 状态码以 `body.ok` 为准、裸 API 退出场景不清启用集。
|
|
93
|
+
- **文档更正**:人设「默认停用」(此前写成自动启用)、场景接管期间「应用 = 改绑该场景」(此前写会被拒绝)、「四域开关同步档案」更正为三域(并更正 0.9.1 条目同句)、密钥打码字形改为与实现一致。
|
|
94
|
+
- **六个管理页的启用项排到列表前面**:MCP / 技能 / 子智能体 / 提示词 / 记忆 / 场景,开着的浮在上面、停用后落回原位(两半内部保持原顺序,不是按名重排;提示词页没有开关,按「生效中」排)。拨开关引起的换位有 180ms 过渡,搜索 / 筛选 / 折叠与轮询刷新引起的位移不做动画,「减少动态效果」下直接落位。
|
|
95
|
+
|
|
96
|
+
### 修复
|
|
97
|
+
|
|
98
|
+
- **兼容页的「访问令牌」块重排**(用户裁定 2026-09-18):块挪到「注入」**上面**(令牌不过时写操作全被拒,是"先解决才能用别的"的一件事);状态胶囊只放**短状态**(未配置 / 未填写 / 已匹配 / 不匹配)——上一版把整句"与宿主配置的令牌不一致……"塞进胶囊,一行里两种字号交错,是这块"很杂乱很丑"的主因;次要操作改成一行 quiet 文本按钮(与 MCP 页那排「详情 / 编辑 / 重启」同款,三个带边框的按钮挤在一起边框互相打断是另一半原因);说明从一整段散文改成**三条短句**(用户原话:写简单简洁一点,用户大致了解就行),版式与「工具能用 ≠ 模型知道」那份清单一致。
|
|
99
|
+
- **「令牌没过」的提示统一成一套文案,并带跳转按钮**(用户裁定 2026-09-18):此前同一件事有四种说法(宿主写门禁、明文门禁两条分支、界面错误码词典各写一套,截图里能同时看到三种),用户无法判断是不是同一件事。现在宿主侧只有 `http-fence.ts` 里的 `TOKEN_MSG_NO_HOST` / `TOKEN_MSG_BAD` 两句(`TOKEN_PANEL_HINT` 拼进去,保证每个出口都指路),界面词典与它们逐字相同;识别按**文本相等**而不是猜关键词("缺少/未配置"这类词出现在别的提示里会误挂按钮)。按钮挂在共享的 `Notice` 组件里一处实现,于是**任意页面**的令牌提示右侧都会出现「填写令牌」——点了切到兼容页并把光标放进输入框(`ToolsSection` 注册切页签、兼容页消费聚焦请求,两条通路都覆盖:已在兼容页 / 刚切过去)。`apply` **之外**的 CompatPage 用不了 `Notice`,按本页写法手工拼同一套。另加一条契约测试钉住"宿主常量与界面词典逐字相同"——不同则按钮静默消失、同一件事又变两种说法。
|
|
100
|
+
- **MCP 详情弹窗里也能看到「显示密钥」被拒的提示**(用户指出):用户是在弹窗里点的按钮,而提示此前只长在弹窗背后 —— 弹窗盖着它,等于没有提示。现在同一份提示面板在页面与弹窗里各渲染一份(`tokenGatePanel()`),弹窗里就贴在「显示密钥」那一节下面。
|
|
101
|
+
- **作用域护栏补上"暂时性死区"这一类**(`test/client-scope.test.mjs`):`detailNode` 里调了写在它下方的 `const tokenGatePanel` —— 首屏不打开弹窗时那条引用不求值,测试全绿,一点「详情」就白屏(本次差点翻车)。判据扩成两条:跨 `apply` 作用域的**组件引用**、以及同函数内**先用后声明 const**(两种引用形态:组件首参与被调函数)。已用真实代码回退验证过判据抓得到(`L2408 用了 tokenGatePanel,但它的声明在 L2430`)。
|
|
102
|
+
- **访问令牌的控制面挪进面板,且只对本次运行有效**(用户裁定 2026-09-18 的三条):① 宿主没配令牌时,「设为宿主密钥」把 `config.token` 写进 profile 的 `cordis.patch.yml`(新增 `mcp/loader-token.ts` 做行级改写:只动 `config:` / `token:` 两行,注释与 `!!js` 守卫一个字不碰;改前照旧自动备份;空 `config:` 会连块一起删);② 已配令牌时,填入该令牌点「关闭令牌功能」即把配置里的令牌删掉,重启后不再需要令牌 —— 不需要「先保存再关闭」两步(宿主接受输入框里那个值作为凭证),填错一律拒绝,否则"能开 GUI 就能关掉保护";③ 填写的令牌与宿主**本次进程的标识**(`token-status` 回 `bootId` = pid + 进程启动时刻)绑定存储,DSH 退出后再启动必须重填,同一次运行内刷新页面不必重填(旧的无归属裸令牌键按过期处理并清除)。两个新 op(`token-status` / `token-configure`)都**不进 `handlers` 表**:前者只需请求头与进程状态,后者如此才能保证**没有任何模型工具能关掉访问令牌**。配置改动需要重启 DSH 才生效,界面用「本次填写 = 已匹配」与「待重启」两处状态如实说清,而不是让人以为点了没反应。
|
|
103
|
+
- **新增静态护栏:`apply` 外面的组件不许引用 `apply` 里面的组件**(`test/client-scope.test.mjs`):这类引用只在 state 有值时才求值 —— 首屏正常、一交互就白屏,且不留任何日志(客户端错误不进宿主日志)。本次「兼容页访问令牌」的第一版正是这么翻的(`CompatPage` 声明在 `apply` 之外,却用了 `apply` 内的 `Notice`,填完令牌点保存即白屏)。判据只查 `createElement(名)` / `h(名)` 的首参,所以不误报:一般化的跨作用域检查会被同名局部变量与参数遮蔽,实测在本文件上能报出 30+ 条假阳性。护栏附一条自检用例,拿一段必然违规的代码喂给同一个判据,避免"没报错"其实等于"没在跑"。
|
|
104
|
+
- **访问令牌有了与页面无关的固定入口**(兼容页「访问令牌」块,用户裁定):此前输入框只长在 MCP 页的服务详情弹窗里,而「缺少或错误的访问令牌」这条错误会出现在**任意**页面 —— 在场景页被拒的用户找不到任何地方能填(实测死路)。现在兼容页显示两枚状态(宿主配置有没有 / 本机浏览器这串对不对)、能填能清,错误文案也直接指向那里;宿主侧新增只读的 `token-status`(只回答"配没配 / 这次带的对不对",**不回令牌本身**),写操作被拒时回 `code: error.token.required`。
|
|
105
|
+
- **打码密钥不再被写回补丁文件**(真实事故):编辑弹窗的密钥框预填的是**打码值**(列表本来就把它打码了),而写入路径原样接受表单内容 —— 于是「打开编辑 → 改个别的字段 → 保存」就把真密钥覆盖成了 `••••••`,且无法找回(本机 `TAVILY_API_KEY` 即如此丢失)。现在保存前按 `src/mcp/secret-guard.ts` 收敛:有原值就用原值顶替(= 这一项没改),没有原值或原值本身已是打码值时**跳过该键**并回一条提示;新增与 JSON 导入走同一套。出口另加结构性断言(`buildInsertBlock`),任何漏过守卫的调用点直接拒绝写入,而不是写一个假值进去。
|
|
106
|
+
- **补丁文件里已存在的打码密钥会被主动报出来**:MCP 列表把它列进告警(`服务器名.键名`),说明真值已丢失、要重新填写 —— 此前这种状态完全隐形,用户只会在下次保存时再撞一次同一个结果。
|
|
107
|
+
- **「显示密钥」解锁后能看到明文了**:客户端此前在详情面板又打了一次码(保留前 4 个字符 + `****`),导致配好访问令牌、`mcpm-reveal` 返回真值之后,界面上显示的仍是 `sk-1****`;同时打码字形与宿主不一致,详情里会出现 `••••****` 这种双重打码。现在打码的**唯一出处是宿主**,客户端不再加工。
|
|
108
|
+
- **编辑弹窗会说明密钥框里是打码值**:明确「直接保存不会改动它们」「要看原文需要点『显示密钥』并填对访问令牌」,避免用户以为真密钥长这样、或者以为保存会改掉它。
|
|
109
|
+
- **场景锁定补齐模型侧**:`mcp_manager_add` / `skill_manager_create` / `memory_manager_write` / `prompt_manager_apply` 四个工具此前绕过守卫,锁定期间仍可调用。
|
|
110
|
+
- **记忆怎么删都进回收站**:形态转换与改名此前直接删旧文件(bundle 连附件一起),现在先入回收站再删。
|
|
111
|
+
- **`mcpm-tools-refresh` 要求令牌**:它会临时启停服务器并写两次补丁,此前漏在写操作门清单外。
|
|
112
|
+
- **子代理结果不再混入思考块**;「没有正文」按收尾原因分档说明,不再一律报「无输出」。
|
|
113
|
+
- **人设正文与名字里的 `{{…}}` 不再让子代理启动失败**。
|
|
114
|
+
- **子会话里调委派工具不再被本插件拦下**(不再向官方传 `maxDepth`,人设列表也不再按深度过滤)。
|
|
115
|
+
- **MCP 状态不再把「连不上」报成「可用」**:可用性只认当前真实注册的工具数;曾连上、当前不可用的如实标注。
|
|
116
|
+
- **场景里手动关掉的技能目录 / MCP 服务器,退出场景后正常还原**(快照全量记录进场景前状态)。
|
|
117
|
+
- **覆盖导入失败自动回滚**;编辑 MCP 服务器保留手写的 `toolCallTimeoutMs`;整台停用时「上次运行时」工具行不再标「已启用」。
|
|
118
|
+
- **场景进行中改 MCP serverName 或人设名,退出场景恢复正常还原**;重启等待窗口内的并发启用不再被快照覆盖。
|
|
119
|
+
- **记忆描述含独立 `---` 行不再截断**(此类多行描述改用引号标量序列化)。
|
|
120
|
+
- **提示词页「应用」失败现在会显示错误**;手工编辑 memories-index.json 的场景描述会触发注入重算。
|
|
121
|
+
- **兼容页「注入实况」的说明不再截断、节头不再错位**;技能页页头按钮窄栏自动收档,「全选」不再折行。
|
|
122
|
+
- **访问令牌比较改为常量时间**(双侧 sha256 + timingSafeEqual)。
|
|
123
|
+
- **测试与开发工具**:补 parseModeState 透传契约断言;client-render 夹具对齐现行响应形状;check-i18n 修复行首键漏对账;`preview-memory-note` / `preview-compat` 修到可跑。
|
|
124
|
+
|
|
125
|
+
### 移除
|
|
126
|
+
|
|
127
|
+
- `./projcache` 子路径导出与 `lib/history/projcache.js`(archive-manager 时代的投影缓存替换实现,与现行「不插入竞争 provider」的架构冲突,仓库与文档均无引用)。若某个 profile 曾用 `dsh-plugin-tool-management/projcache` 挂载过它,删掉那一行。
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
13
131
|
## [0.9.1] - 2026-09-17
|
|
14
132
|
|
|
15
133
|
### 新增
|
|
16
134
|
|
|
17
135
|
- **兼容页「注入实况」**:显示最近活跃会话里模型**实际看到**的五域文本,并如实分清「在上下文中 / 未投递 / 官方注入 / 已关闭」——勾了开关却没送到时一眼可见。
|
|
18
136
|
- **「全选」统一成「全选 ↔ 取消全选」二合一**(不再并列两个按钮),并给技能管理页、记忆管理页、记忆的每个场景卡片补上缺的批量开关。
|
|
19
|
-
- **场景未锁定时页面开关照常可用**,改动会同步写进当前场景的档案(MCP / 技能 / 子智能体 /
|
|
137
|
+
- **场景未锁定时页面开关照常可用**,改动会同步写进当前场景的档案(MCP / 技能 / 子智能体 / 提示词**三域**的开关同步进档案 —— 记忆域的开关是单一真相源,不经过档案;锁定才冻结)。
|
|
20
138
|
- **人设也严格「退出即还原」**:快照记下进场景时全部人设的开与关,退出逐个恢复。
|
|
21
139
|
- **技能管理页每个来源(目录)卡片也能批量开关**,点它或点来源开关会顺带把卡片展开。
|
|
22
140
|
- **bundle 记忆在列表里显示附件数量**:多一颗「N 个附件」标签(0 个也显示,灰色),悬停给出总量与文件名,点它打开编辑弹窗并跳到附件区。
|