@chaoset/adaptive-perf 0.9.0 → 0.10.1

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
@@ -1,228 +1,245 @@
1
1
  # Changelog
2
2
 
3
- ## [0.9.0](https://github.com/winliyou/dsh-plugins) (2026-08-25)
3
+ ## 0.10.1 (2026-08-29)
4
4
 
5
5
  ### Features
6
6
 
7
- * 设置卡片按语义分组折叠(首轮锚定 / 极简提示词层 / 高级 JSON 默认收起):20+ 字段不再一屏平铺,渐进披露;分组头带 `aria-expanded`
8
- * `bootstrap.maxTokens` 数字输入改草稿态:编辑期保留原始输入(清空/删改中间态不立即跳回 0),失焦才归一化显示,消除输入被强制改写的突兀感
7
+ * 设置卡片初次读取配置时在状态栏显示 spinner +「加载中…」(respect
8
+ `prefers-reduced-motion`):此前只显示禁用态的默认值表单,无法区分加载中与
9
+ 加载失败
9
10
 
10
- ### Bug Fixes
11
-
12
- * `session/event` 处理器对 `agents.get(session.id)` 的 `agent.id === session.id` 隐含契约加防御性兜底(按 `agent.session.id` 匹配)并注释说明:未来二者分离时晋升信号不再静默丢配导致 bootstrap restrict 不释放
13
- * 修复 `applyFamilies` 的 JSDoc 注释与函数签名挤在同一行的格式瑕疵
14
-
15
- ## [0.8.0](https://github.com/winliyou/dsh-plugins) (2026-08-22)
11
+ ## 0.10.0 (2026-08-28)
16
12
 
17
13
  ### Features
18
14
 
19
- * **`keywordMatchMode` config** (`smart`(default) | `substring` | `word`): escalation keywords containing CJK keep substring matching (CJK has no word boundaries — `\b` would never match a pure-CJK keyword), pure-ASCII words match on word boundaries via lookarounds (`(?<![a-z0-9_])kw(?![a-z0-9_])`, more predictable than `\b`). Statement text like "the goal is to refactor" or "goalish" no longer falsely escalates the goal family on the substring "goal"; `substring` restores pre-0.8.0 behavior; validated in `remote.set` and normalized with fallback
20
- * explicit empty arrays are now legal values for all string-list config fields (`presets`, `bootstrap.tools`, family tools/keywords…): previously an emptied list was silently reverted to the default on save, so "apply no preset" was impossible to express
15
+ * 适配 DSH 0.1.2 PTC preset 更名:0.1.2 PTC 模式的 preset id `code`
16
+ 改为 `ptc`,默认 presets 改为 `['standard', 'code', 'ptc', 'cordis']`——新旧
17
+ 宿主都覆盖,不存在的 id 无副作用;设置页默认值/提示文本同步
21
18
 
22
19
  ### Bug Fixes
23
20
 
24
- * pre-step injected-context stripping now requires bootstrap enabled: with `bootstrap.enabled=false` injections were stripped while no discovery tools were registered as compensation — unrecoverable context loss
25
- * hot-updating `bootstrap.promoteOn` now takes effect for already-tracked sessions: the phase cache is invalidated and rebuilt from the persistent journal (persistent promotion signals survive the rebuild)
26
- * per-message overhead reduced: composed preset resolved once per agent instead of once per message; suppressed-context-sources Set cached by content key instead of rebuilt per message; preset lookup failure warning capped at 20 occurrences
27
- * settings card: `promoteOn` is a select, `maxTokens` a number input (invalid input can no longer be saved); loading placeholder for `suppressInjectedContext` matches the real default; error notices render in the header badge so they are visible while collapsed; dirty detection compares field-by-field instead of order-sensitive JSON.stringify; error color referenced the non-existent `state-danger-primary` token so errors never rendered red (now `state-error-primary`)
28
- * removed `filterBootstrapMessages` (exact duplicate of `stripSuppressedMessages`); fixed malformed nested JSDoc on dev_tool_search; description truncation operator-precedence bug (`split('\n')[0].slice(...)` could throw under `noUncheckedIndexedAccess` semantics)
21
+ * 支持从源码运行的 DSH:真实 Minimal 工具对的官方包导入链首插安装闭包共享
22
+ fallback `$DSH_HOME/profiles/node_modules/<pkg>`,以 realpath 导入保证与
23
+ harness 同一模块实例;修复本地路径安装时裸 import 解析不到官方包、realPair
24
+ 静默降级的问题。已对照 dsh 源码 0.1.2-alpha.1 复核 systemPrompt / tools /
25
+ skills / agentPresets 契约无变化
29
26
 
30
- ## [0.7.3](https://github.com/winliyou/dsh-plugins) (2026-08-22)
27
+ ## 0.9.1 (2026-08-28)
31
28
 
32
29
  ### Bug Fixes
33
30
 
34
- * **P0 dev_tool_search used the post-restrict catalog**: tools hidden by restrict layers were undiscoverable/unlockable; it now searches a pre-restrict snapshot captured at agent setup
35
- * **P0 escalate() did not recompute the bootstrap deny set**: after an escalation signal, family tools stayed hidden behind the second restrict layer; escalate now resyncs the keep-set so the release takes effect on the next request
36
- * real Minimal tool pair remounts idempotently via a state key: unrelated hot-updates no longer destroy/recreate persistent PTY bashes (cwd/env/background jobs survive)
37
- * first-round maxTokens cap: listener always registered with in-callback branching (0→N hot-update works; N→0 strips the field instead of injecting 0); promotion strips any cap injected this session including stale values from before a hot-update change
38
- * custom tool families defined in settings survive normalizeConfig (previously silently dropped)
39
- * test mocks made host-faithful (schemas reflect active restrict layers); regression tests added for both P0s
31
+ * 适配 DSH 0.1.1-rc.2:6 `@deepseek-ai/*` optionalDependencies range
32
+ `^0.1.0-rc.8` 升到 `^0.1.1-rc.2`(npm semver prerelease 规则下旧 range
33
+ 无法匹配 `0.1.1-rc.2`,新版宿主下官方模块会解析到旧版本或缺失)
34
+ * 已对照 0.1.1-rc.2 全量 diff 官方包:各契约无变化,运行时逻辑无需调整
40
35
 
41
- ## [0.7.2](https://github.com/winliyou/dsh-plugins) (2026-08-22)
42
-
43
- * align with dsh 0.1.0-rc.8 dependency set
44
-
45
- ## [0.7.0](https://github.com/winliyou/dsh-plugins) (2026-08-18)
36
+ ## 0.9.0 (2026-08-25)
46
37
 
47
38
  ### Features
48
39
 
49
- * **first-round anchoring, resident catalog after promotion (anchored-standard semantics).** Only request #1 is composed under Minimal conditions (real Minimal tool pair + minimal persona + suppressed global guide sections + stripped `skill-catalog`/`agent-instructions` injections + suppressed runtime snapshot); after the first persistent promotion signal (first `tool/call` or `assistant/message`) the session enters the **resident phase**: the bootstrap tool pair stays resident together with the discovery tools (`dev_tool_search`/`skill_search`/`skill_load`), the full catalog is unlocked on demand via `dev_tool_search`, and normal context injection becomes visible again. Performance is raised without reducing functionality — dumping the full catalog at promotion pulls the trajectory back to standard-like (the reference implementation's post-promotion regression), so the full catalog is fetched on demand instead. The tool/skill/web-search/plan/goal/subagent/workflow abilities of each mode remain fully available
40
+ * 设置卡片按语义分组折叠(首轮锚定 / 极简提示词层 / 高级 JSON 默认收起):
41
+ 20+ 字段不再一屏平铺,渐进披露;分组头带 `aria-expanded`
42
+ * `bootstrap.maxTokens` 数字输入改草稿态:编辑期保留原始输入(清空/删改中间态
43
+ 不立即跳回 0),失焦才归一化显示
50
44
 
51
- * **promotion is now persistent.** `scanPhase`/`observePhase` no longer reset on `compaction/end` (epoch-aware boundary removed); promotion is remembered per session like the reference implementation, so resume/reload and post-compaction rounds keep the resident catalog
45
+ ### Bug Fixes
52
46
 
53
- * **catalog is zero-trimmed by default.** `leanByDefault` defaults to `false`: orchestration tool families (subagent/workflow/ralph/goal) are never hidden unless explicitly opted in. `suppressInjectedContext` defaults to `true` (injections stay stripped for the whole session; visibility is carried by the resident discovery tools — measured: restoring injections after promotion pulls the trajectory back to standard-like, "Let me…" narration returns). Setting it to `false` restores post-promotion injections as an opt-in
47
+ * `session/event` 处理器对 `agents.get(session.id)` 的隐含契约
48
+ (`agent.id === session.id`)加防御性兜底(按 `agent.session.id` 匹配):
49
+ 未来二者分离时晋升信号不再静默丢配导致 bootstrap restrict 不释放
54
50
 
55
- * **creator mode (cordis) is a target preset.** `presets` defaults to `["standard", "code", "cordis"]` in the bundle patch, the settings UI, and DEFAULT_CONFIG — the creator preset gets the same minimal-anchored first round
51
+ ## 0.8.0 (2026-08-22)
56
52
 
57
- ### ⚠ Breaking (config)
53
+ ### Features
58
54
 
59
- * **removed `skillDiscovery`, `instructionHint`, `bootstrap.compactionTools`; restored `bootstrap.discoveryTools`.** Under resident-catalog semantics the on-demand discovery is done by the resident `dev_tool_search`, so the one-shot instruction hint and the post-compaction work set are no longer needed; `bootstrap.discoveryTools` (default `dev_tool_search`/`skill_search`/`skill_load`) is restored as the resident post-promotion discovery set. The discovery tool factories (`createDevToolSearch`/`createSkillSearch`/`createSkillLoad`/`extractSkillBody`) and `loadUnlockedFromEvents` are back; saved configs ignore the removed fields; the settings UI renders the discovery-tools control again; `leanByDefault` keeps its new default (false) while `suppressInjectedContext` defaults to `true`
55
+ * 新增 `keywordMatchMode` 配置(`smart` 默认 / `substring` / `word`):含 CJK
56
+ 的触发词保持子串匹配(CJK 无词边界,`\b` 永远匹配不到纯 CJK 关键词),纯
57
+ ASCII 词按词边界匹配(`(?<![a-z0-9_])kw(?![a-z0-9_])`,比 `\b` 更可预测)。
58
+ "the goal is to refactor" 或 "goalish" 不再因子串 "goal" 误触发 goal 族放行;
59
+ `substring` 恢复此前的行为;`remote.set` 校验并归一化(非法回退默认)
60
+ * 所有字符串列表字段(`presets`、`bootstrap.tools`、工具族 tools/keywords 等)
61
+ 允许显式空数组:此前清空列表保存会被静默还原为默认值,无法表达「不应用任何
62
+ preset」
60
63
 
61
- ## [0.6.0](https://github.com/winliyou/dsh-plugins) (2026-08-17)
64
+ ### Bug Fixes
62
65
 
66
+ * pre-step 注入剥离要求 bootstrap 开启:`bootstrap.enabled=false` 时此前仍会
67
+ 剥离注入而没有发现工具补偿,造成不可恢复的上下文丢失
68
+ * 热更新 `bootstrap.promoteOn` 对已跟踪会话生效:阶段缓存失效并从持久事件流
69
+ 重建(持久晋升信号在重建中保留)
70
+ * 降低每条消息开销:composed preset 每个 agent 解析一次而非每条消息;抑制
71
+ source 集合按内容缓存;preset 查找失败告警限 20 次
72
+ * 设置卡片:`promoteOn` 改下拉、`maxTokens` 改数字输入(非法输入不可保存);
73
+ 错误提示在折叠态也经头部徽标可见;dirty 判定改为逐字段比较(不再依赖键序
74
+ 敏感的 JSON.stringify);错误色修正为真实存在的 `state-error-primary` token
75
+ (此前引用不存在的 token,错误永远不显示红色)
76
+ * 删除与 `stripSuppressedMessages` 完全重复的 `filterBootstrapMessages`;修复
77
+ dev_tool_search 描述截断的运算符优先级 bug
78
+
79
+ ## 0.7.3 (2026-08-22)
63
80
 
64
- ### Breaking (behavior)
81
+ ### Bug Fixes
65
82
 
66
- * **function-first defaults every optimization is now opt-in.** The previous defaults broke standard/PTC functionality: tool families removed from the catalog (PTC program calls hit `UNKNOWN_TOOL` outright), skill-catalog/AGENTS.md injections stripped, official prompt sections shadowed, request #1 restricted to two tools. These mechanisms have no lossless form (their savings come from removing context/tools), so `leanByDefault`, `suppressRuntimeContext`, `suppressInjectedContext`, `minimalPrompt.enabled`, and `bootstrap.enabled` all default to **false**: a fresh install is a zero-intervention no-op and official presets keep full functionality. Enable any mechanism on demand from the settings page; compensation paths (keyword/failure-signal escalation, `skill_search` discovery, instruction-hint) activate together with them. Tests now cover both the zero-intervention defaults and each mechanism under explicit opt-in config
83
+ * **dev_tool_search 使用 restrict 后的目录(P0)**:被 restrict 隐藏的工具不可
84
+ 发现也不可解锁;改为搜索 agent 建立时捕获的 restrict 前快照
85
+ * **escalate() 未重算 bootstrap deny 集(P0)**:放行信号后该族工具仍被第二层
86
+ restrict 挡住;escalate 现在同步重算 keep-set,下一次请求生效
87
+ * 真实 Minimal 工具对经 state key 幂等重挂:无关热更新不再销毁/重建持久 PTY
88
+ bash(cwd/env/后台任务保留)
89
+ * 首轮 maxTokens 封顶改为 listener 内分支(0→N 热更新生效;N→0 剥离字段而非
90
+ 注入 0);晋升时剥离本次会话注入的任何封顶(含热更新前的过期值)
91
+ * 设置页定义的自定义工具族不再被 normalizeConfig 静默丢弃
92
+ * 测试 mock 对齐宿主行为(schema 反映生效 restrict 层),两个 P0 各补回归测试
67
93
 
68
- ## [0.5.3](https://github.com/winliyou/dsh-plugins) (2026-08-17)
94
+ ## 0.7.2 (2026-08-22)
69
95
 
96
+ ### Dependencies
70
97
 
71
- ### Bug Fixes
98
+ * 对齐 dsh 0.1.0-rc.8 依赖集
72
99
 
73
- * pass the live config snapshot as `base` when registering the settings namespace: without `base`, a schema without defaults (adaptive-perf's `any()`) made `settings.describe()` return `value: undefined`, and the settings page's wire validation (`invalid_type: nonoptional` at `namespaces[n].value`) failed hard, breaking the whole settings UI. With `base` the resolved value is always the full config object
100
+ ## 0.7.0 (2026-08-18)
74
101
 
75
- ## [0.5.2](https://github.com/winliyou/dsh-plugins) (2026-08-17)
102
+ ### Features
76
103
 
104
+ * **首轮锚定 + 晋升后 resident 目录(anchored-standard 语义)**:只有请求 #1
105
+ 按极简条件组装(真实 Minimal 工具对 + 极简 persona + 屏蔽全局引导段 + 剥离
106
+ `skill-catalog`/`agent-instructions` 注入 + 抑制运行时快照);首个持久晋升
107
+ 信号后进入 resident 阶段——工具对与发现工具常驻,完整目录经 `dev_tool_search`
108
+ 按需解锁,常规注入恢复可见。只提高性能不减少功能:晋升时一次性倒出完整目录
109
+ 会把轨迹拉回 standard-like(参考实现的晋升后回退问题),故完整目录按需取用
110
+ * **晋升持久化**:阶段不再因 `compaction/end` 重置;晋升按会话记忆化,resume /
111
+ reload 与压缩后的轮次保持 resident 目录
112
+ * **工具目录默认零裁剪**:`leanByDefault` 默认 `false`,编排类工具族(子代理/
113
+ 工作流/ralph/goal)不再隐藏除非显式开启;`suppressInjectedContext` 默认
114
+ `true`(晋升后恢复注入会把轨迹拉回 standard-like,"Let me…" 叙述回归),
115
+ 设为 `false` 恢复晋升后注入
116
+ * **创造模式(cordis)纳入目标 preset**:`presets` 默认
117
+ `["standard", "code", "cordis"]`,创造模式获得同样的首轮极简锚定
118
+
119
+ ### Breaking
120
+
121
+ * 移除 `skillDiscovery` / `instructionHint` / `bootstrap.compactionTools`;
122
+ 恢复 `bootstrap.discoveryTools`(默认 `dev_tool_search` / `skill_search` /
123
+ `skill_load`)作为晋升后常驻发现集。resident 语义下按需发现由常驻
124
+ `dev_tool_search` 承担,指令提示与压缩回退集不再需要;已保存的旧配置自动
125
+ 忽略被移除字段
126
+
127
+ ## 0.6.0 (2026-08-17)
128
+
129
+ ### Breaking
130
+
131
+ * **功能优先——所有优化改为 opt-in**:此前默认值破坏 standard/PTC 功能(工具族
132
+ 从目录移除、注入剥离、引导段屏蔽、首轮只留两个工具)。这些机制的收益来自
133
+ 移除上下文/工具,没有无损形式,故 `leanByDefault`、`suppressRuntimeContext`、
134
+ `suppressInjectedContext`、`minimalPrompt.enabled`、`bootstrap.enabled` 全部
135
+ 默认 `false`:全新安装零干预无副作用,官方 preset 保持完整功能;按需在设置
136
+ 页开启,补偿路径(关键词/失败信号放行、发现工具、指令提示)随之激活
137
+
138
+ ## 0.5.3 (2026-08-17)
77
139
 
78
140
  ### Bug Fixes
79
141
 
80
- * register the config namespace into the host settings service (`ctx.settings.register`) so the settings page's configurable-plugins tab lists it: the tab dispatches cards from `settings.describe()`, and a namespace that was never registered renders nothing even with a correctly keyed card. Registration is visibility-only — the card still reads/writes through the plugin's own config gateway (config.json stays authoritative, hot-reload preserved). Fail-safe when schemastery or the settings service is unavailable; duplicate registrations (HMR) are ignored
81
-
82
- ## [0.5.1](https://github.com/winliyou/dsh-plugins) (2026-08-17)
142
+ * 注册设置命名空间时把实时配置快照作为 `base` 传入:无默认值的 schema 曾使
143
+ `settings.describe()` 返回 `value: undefined`,设置页 wire 校验失败、整个
144
+ 设置 UI 挂掉;传入 `base` 后返回值始终是完整配置对象
83
145
 
146
+ ## 0.5.2 (2026-08-17)
84
147
 
85
148
  ### Bug Fixes
86
149
 
87
- * settings card registration: pass `key` (the settings namespace, matching the host-side service key) when registering into `settings.plugin.item` — the host `dsh-client-ui-slots` 0.1.0-rc.7 declares it as a keyed slot, and a registration without `key` fails the whole client bundle apply ("Failed to load plugins: keyed slot requires options.key")
150
+ * 把配置命名空间注册进宿主 settings 服务(`ctx.settings.register`),设置页
151
+ 「插件配置」tab 才会列出卡片(tab 按 `settings.describe()` 分发,未注册的
152
+ 命名空间不渲染)。注册只管可见性,卡片读写仍走插件自己的配置网关(config.json
153
+ 权威、热更新保留);settings 服务缺失时 fail-safe,重复注册(HMR)静默忽略
88
154
 
89
- ## [0.5.0](https://github.com/winliyou/dsh-plugins) (2026-08-16)
155
+ ## 0.5.1 (2026-08-17)
90
156
 
157
+ ### Bug Fixes
91
158
 
92
- ### Features
93
-
94
- * real Minimal tool pair on request #1 (`bootstrap.realPair`)
95
-
96
- The bootstrap phase previously only *narrowed* the standard/PTC catalog, so
97
- request #1 still exposed the sandboxed standard `bash` schema (and no
98
- `str_replace_editor` at all — the standard preset does not mount it).
99
- Per dsh-anchored-standard issue #11 the first-request trajectory is decided
100
- by the *byte-identical* tool schema: the real Minimal pair anchors 5/5 while
101
- every standard-family schema (including sandboxed bash) falls standard-like
102
- 11/11. The plugin now mounts the official minimal-preset plugins — the
103
- persistent PTY bash (`@deepseek-ai/dsh-tool-bash-persistent` over
104
- `dsh-terminal` + `dsh-terminal-bash`, with the exact minimal description)
105
- and `str_replace_editor` over the bare local fs (`dsh-fs-local`) — into each
106
- target agent's scoped tool layer, where scoped registrations shadow the
107
- inherited sandboxed `bash` by name and own-layer registrations are exempt
108
- from restrictions. The `tool:bash` guidance section is shadowed to empty at
109
- the same time. The packages are optionalDependencies; when they cannot be
110
- resolved (or on Windows, where the PTY backend is unavailable) the plugin
111
- degrades to the previous catalog-only behavior with a warning.
112
-
113
- * permanent injected-context suppression (`suppressInjectedContext`)
114
-
115
- The skill-catalog reminder and the AGENTS.md digest were previously stripped
116
- only on request #1 and re-injected after promotion. The reference implementation
117
- removes both injections entirely: even post-promotion they perturb the
118
- trajectory and cost thousands of tokens per request. With
119
- `suppressInjectedContext: true` (default) the strip now applies to every
120
- request of the session; `skill_search` / `skill_load` (resident after
121
- promotion, gated by `skillDiscovery`) replace the ~9KB catalog dump, and the
122
- new one-shot `instruction-hint` (`instructionHint`, default on) tells the
123
- model once per session that instruction files exist and should be read when
124
- relevant, instead of embedding their content. User-initiated skill gestures
125
- (`skill-invocation`) are never filtered.
126
-
127
- * resident discovery set now includes skill_search / skill_load
128
-
129
- `bootstrap.discoveryTools` defaults to `[dev_tool_search, skill_search,
130
- skill_load]` so the promoted catalog keeps the on-demand discovery surface of
131
- the reference's resident set; skills stay reachable while the catalog
132
- injection stays off.
133
-
134
- ## [0.4.0](https://github.com/winliyou/dsh-plugins) (2026-08-16)
159
+ * 设置卡片注册补 `key`(settings 命名空间,与 host 侧 service key 一致):宿主
160
+ `dsh-client-ui-slots` 0.1.0-rc.7 声明为 keyed slot,缺 `key` 会让整个 client
161
+ bundle 激活失败("Failed to load plugins: keyed slot requires options.key")
135
162
 
163
+ ## 0.5.0 (2026-08-16)
136
164
 
137
165
  ### Features
138
166
 
139
- * minimal-prompt layer (register anchoring, per dsh-anchored-standard)
167
+ * **首轮真实 Minimal 工具对(`bootstrap.realPair`)**:此前 bootstrap 只是收窄
168
+ standard/PTC 目录,请求 #1 仍是 standard 系 schema(且 standard 不挂
169
+ `str_replace_editor`)。现把官方 minimal preset 同款插件(持久 PTY bash
170
+ `@deepseek-ai/dsh-tool-bash-persistent` + `str_replace_editor`)挂进每个目标
171
+ agent 的会话作用域,按名阴影继承的 sandboxed bash(scoped 注册豁免
172
+ restrict),同时把 `tool:bash` 引导段阴影为空。官方包为
173
+ optionalDependencies,解析不到(或 Windows 无 PTY 后端)时降级为仅收窄目录
174
+ 并告警
175
+ * **常驻注入剥离(`suppressInjectedContext`,默认开启)**:技能目录提醒与
176
+ AGENTS.md 摘要此前只在请求 #1 剥离、晋升后恢复;实测晋升后它们仍扰动轨迹
177
+ 且每请求多耗数千 token。开启后整个会话持续剥离,由常驻 `skill_search` /
178
+ `skill_load` 与一次性 `instruction-hint` 替代;用户主动的技能手势
179
+ (`skill-invocation`)永不过滤
180
+ * **常驻发现集纳入 `skill_search` / `skill_load`**:`bootstrap.discoveryTools`
181
+ 默认 `[dev_tool_search, skill_search, skill_load]`
182
+
183
+ ## 0.4.0 (2026-08-16)
140
184
 
141
- The reference's full anchoring condition is the *complete minimal system
142
- prompt*, not just the tool catalog: tool narrowing alone leaves the global
143
- orientation sections (harness:identity / harness:source / app:web-surface)
144
- and the standard persona in the prompt, and the model keeps narrating in the
145
- standard-like register ("Let me…" thinking chains). The new `minimalPrompt`
146
- layer shadows those sections to empty per target agent (same effect as
147
- minimal's `complete` persona; plan-mode and the PTC SDK sections are
148
- untouched) and shadows `deployment:persona` with the exact minimal-mode text
149
- ("You are a helpful software engineer assistant."), so the assembled system
150
- prompt for standard / PTC sessions drops to the minimal register from request
151
- #1 onward — including for resumed/already-promoted sessions, which the
152
- bootstrap phase never touches. All knobs are configurable and hot-applied
153
- (`minimalPrompt.enabled` / `.persona` / `.suppressSections`).
185
+ ### Features
154
186
 
155
- ## [0.3.2](https://github.com/winliyou/dsh-plugins) (2026-08-16)
187
+ * **极简提示词层(minimalPrompt,语域锚定)**:完整的锚定条件是极简的完整
188
+ system prompt——只收窄工具目录不够,全局引导段与标准 persona 会让思维链保持
189
+ standard-like 的 "Let me…" 叙述。本层把三个全局引导段阴影为空(等同极简
190
+ `complete` persona 的效果;plan-mode 与 PTC SDK 段不受影响),并把
191
+ `deployment:persona` 按名替换为与极简模式逐字相同的文本;对已恢复/已晋升的
192
+ 旧会话同样生效(bootstrap 阶段不触碰它们)。全部开关可配置、热生效
156
193
 
194
+ ## 0.3.2 (2026-08-16)
157
195
 
158
196
  ### Bug Fixes
159
197
 
160
- * bootstrap tool narrowing now uses tools.restrict instead of filtering assembly.tools
161
-
162
- In PTC/code mode the assembled tool catalog contains only run_code, so
163
- filtering it down to the Minimal pair always hit the fail-safe and the
164
- first request kept the full SDK (verified live: the model still saw 15
165
- tools). tools.restrict drives both the API catalog and the PTC SDK
166
- reference section (the same mechanism the family trimming uses), so the
167
- bootstrap phase now temporarily denies everything except
168
- run_code + the Minimal pair (plus the post-compaction work set) and
169
- lifts the restriction on the first durable promotion signal. Verified
170
- live: on request #1 the model reports run_code as the only direct tool
171
- and the SDK declarations contain only the Minimal pair.
172
-
173
- ## [0.3.1](https://github.com/winliyou/dsh-plugins) (2026-08-16)
198
+ * bootstrap 工具收窄改用 `tools.restrict` 而非过滤 `assembly.tools`:PTC/code
199
+ 模式组装目录只含 run_code,过滤收窄总是触发 fail-safe、首轮仍见完整 SDK
200
+ (实测模型看到 15 个工具)。`tools.restrict` 同时驱动 API 目录与 PTC SDK
201
+ 参考段(与工具族精简同一机制),bootstrap 改为临时 deny run_code
202
+ Minimal 对之外的全部工具,首个持久晋升信号解除
174
203
 
204
+ ## 0.3.1 (2026-08-16)
175
205
 
176
206
  ### Bug Fixes
177
207
 
178
- * raise engines.node to >=22.19.0 (node 20 is EOL; aligns with the reference preset baseline and the current LTS floor)
179
-
180
- ## [0.3.0](https://github.com/winliyou/dsh-plugins/compare/adaptive-perf-v0.2.2...adaptive-perf-v0.3.0) (2026-08-16)
208
+ * `engines.node` 提到 >=22.19.0node 20 EOL
181
209
 
210
+ ## 0.3.0 (2026-08-16)
182
211
 
183
212
  ### Features
184
213
 
185
- * first-request bootstrap anchoring (inspired by dsh-anchored-standard)
186
-
187
- Request #1 for target presets now exposes only the real Minimal tool pair
188
- (bash + str_replace_editor) and strips auto-injected context
189
- (skill-catalog reminder, AGENTS.md digest), which anchors the first-request
190
- trajectory on minimal conditions (the community measurements: the Minimal
191
- pair anchors 5/5 at the adapter-default budget while every standard-family
192
- schema falls into standard-like behavior 11/11, and a present skill catalog
193
- breaks the anchor 0/9). The session promotes after its first durable
194
- tool/call or assistant/message (promoteOn: either, or tool-call /
195
- assistant-message) — phase derived from durable session events, resume-safe.
196
- A compaction resets the phase (epoch-aware): after compaction/end the
197
- session falls back to the bootstrap pair plus a configurable compactionTools
198
- work set until a new promotion signal. bootstrap.maxTokens optionally caps
199
- request #1's output budget and is stripped after promotion.
200
-
201
- Wiring uses the harness's public waterfalls: system-prompt/assemble (tool
202
- catalog narrowing), agent/pre-step (context stripping, prepend-registered so
203
- the strip is the final transform), agent/request (budget cap), and
204
- session/event (phase feed). Degrades to the full catalog on any filter
205
- failure so a plugin bug can never brick a session.
214
+ * **首轮 bootstrap 锚定**(受 dsh-anchored-standard 启发):请求 #1 只暴露真实
215
+ Minimal 工具对(bash + str_replace_editor)并剥离自动注入上下文(技能目录
216
+ 提醒、AGENTS.md 摘要),把首轮轨迹锚定在极简条件上。首个持久 tool/call
217
+ assistant/message 后晋升;阶段从持久会话事件推导,resume 安全;compaction
218
+ 重置阶段,压缩后回到 bootstrap 工具对 + 可配置压缩工作集直到新晋升信号。
219
+ `bootstrap.maxTokens` 可选封顶首轮输出预算、晋升后剥离。
206
220
 
207
- ## [0.2.2](https://github.com/winliyou/dsh-plugins/compare/adaptive-perf-v0.2.1...adaptive-perf-v0.2.2) (2026-08-16)
221
+ 接线全部走宿主公开 waterfall:system-prompt/assemble(目录收窄)、
222
+ agent/pre-step(上下文剥离,prepend 注册保证最后执行)、agent/request(预算
223
+ 封顶)、session/event(阶段供给)。任何过滤失败降级为完整目录,插件 bug 不会
224
+ 拖垮会话。
208
225
 
226
+ ## 0.2.2 (2026-08-16)
209
227
 
210
228
  ### Bug Fixes
211
229
 
212
- * register config-gateway endpoints via a typert-loader host artifact (lib/typert.host.js) so the api-gateway claims them regardless of module-instance identity ([dsh-plugins#registry-install](https://github.com/winliyou/dsh-plugins))
213
-
214
- When the package is installed from the npm registry, its typert-protocol copy differs from the harness's, so the Remote-decorator SRC markers are invisible to the gateway and settings-page calls fail with "transport failure ... HTTP 404". The typert artifact registers the same get/set endpoints into ctx.typert.local through the official loader mechanism.
215
-
216
- ## [0.2.1](https://github.com/winliyou/dsh-plugins/compare/adaptive-perf-v0.2.0...adaptive-perf-v0.2.1) (2026-08-16)
230
+ * typert-loader host artifactlib/typert.host.js)注册配置网关端点,
231
+ api-gateway 不再受模块实例身份影响:npm registry 安装时包内 typert-protocol
232
+ 副本与 harness 不同源,Remote 装饰器 SRC 标记对网关不可见,设置页调用报
233
+ "transport failure ... HTTP 404"
217
234
 
235
+ ## 0.2.1 (2026-08-16)
218
236
 
219
237
  ### Bug Fixes
220
238
 
221
- * mount remote config namespaces in client bundles ([a647484](https://github.com/winliyou/dsh-plugins/commit/a64748489ddf003cb29c0527016ea089748e0c7b))
222
-
223
- ## [0.2.0](https://github.com/winliyou/dsh-plugins/compare/adaptive-perf-v0.1.2...adaptive-perf-v0.2.0) (2026-08-15)
239
+ * client bundle 挂载远程配置命名空间(修复 web boot "did not activate")
224
240
 
241
+ ## 0.2.0 (2026-08-15)
225
242
 
226
243
  ### Features
227
244
 
228
- * convert plugins to DSH bundle installation ([caae797](https://github.com/winliyou/dsh-plugins/commit/caae797acd12c70af52b0868ec352d91a0a7ef12))
245
+ * 插件转为 DSH bundle 安装方式