@chaoset/adaptive-perf 0.5.0 → 0.6.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/README.md +8 -0
- package/client/client.cjs +3 -0
- package/lib/index.mjs +59 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @chaoset/adaptive-perf — DSH 极简性能自适应插件
|
|
2
2
|
|
|
3
|
+
> **默认策略(0.6.0,功能优先)**:本插件的性能收益本质是"砍上下文/砍工具换
|
|
4
|
+
> token",没有无损形态——旧版把下列机制默认开启,导致 standard/PTC 模式功能
|
|
5
|
+
> 缺失(编排类工具族从目录删除、PTC 程序调用直接 `UNKNOWN_TOOL`;技能目录与
|
|
6
|
+
> AGENTS.md 摘要被剥离;官方引导段被屏蔽;首轮只剩两个工具)。**0.6.0 起全部
|
|
7
|
+
> 机制默认关闭,安装后对会话零干预,官方 preset 功能完整**;需要省 token 时在
|
|
8
|
+
> 设置页按需开启下列任意机制(补偿机制——关键词/失败信号放行、`skill_search`
|
|
9
|
+
> 按需发现——随开启自动生效)。下文描述的是各机制**开启后**的行为。
|
|
10
|
+
|
|
3
11
|
让 **标准模式(standard)** 与 **PTC 模式(code)** 达到 **极简模式(minimal)**
|
|
4
12
|
级别的高性能,同时保留完整能力——不是静态裁剪,而是**动态自适应**:
|
|
5
13
|
|
package/client/client.cjs
CHANGED
|
@@ -501,6 +501,9 @@ window.__ModuleLoader__.load({
|
|
|
501
501
|
});
|
|
502
502
|
ctx.slots.inject("settings.plugin.item", () => ctx.slots.register({
|
|
503
503
|
name: "settings.plugin.item",
|
|
504
|
+
// keyed slot:key 为卡片编辑的设置 namespace(与 host 侧 serviceKey 一致),
|
|
505
|
+
// 设置页按 key 与宿主服务的 namespace 配对 dispatch。
|
|
506
|
+
key: "adaptivePerfConfig",
|
|
504
507
|
id: "adaptive-perf",
|
|
505
508
|
order: 40,
|
|
506
509
|
locale: NS,
|
package/lib/index.mjs
CHANGED
|
@@ -89,6 +89,14 @@ try {
|
|
|
89
89
|
console.warn('adaptive-perf: settings gateway unavailable: ' + (error && error.message || error));
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
// 宿主 settings 体系的 schema 库(dsh-settings 0.1.0-rc.7+ 用 schemastery)。
|
|
93
|
+
// DSH profile 的 hoisted node_modules 直接解析;仓库测试环境无此包时为
|
|
94
|
+
// null,settings namespace 注册段静默跳过(fail-safe)。
|
|
95
|
+
let Schema = null;
|
|
96
|
+
try {
|
|
97
|
+
({ default: Schema } = await import('@deepseek-ai/schemastery'));
|
|
98
|
+
} catch {}
|
|
99
|
+
|
|
92
100
|
export const name = 'adaptive-perf';
|
|
93
101
|
|
|
94
102
|
/**
|
|
@@ -109,10 +117,19 @@ export const DEFAULT_CONFIG = {
|
|
|
109
117
|
enabled: true,
|
|
110
118
|
/** 应用自适应的 agent preset 列表(composedPreset 返回值)。 */
|
|
111
119
|
presets: ['standard', 'code'],
|
|
120
|
+
/**
|
|
121
|
+
* 默认策略(0.6.0):功能优先,全部优化 opt-in。旧版把下列机制默认
|
|
122
|
+
* 开启,导致 standard/PTC 模式功能缺失(工具族从目录删除 → PTC 程序
|
|
123
|
+
* 调用直接 UNKNOWN_TOOL;技能目录/指令摘要被剥离;官方引导段被屏蔽;
|
|
124
|
+
* 首轮只剩两个工具)。这些机制的收益本质是"砍上下文换 token",没有
|
|
125
|
+
* 无损形态,因此默认全部关闭,保持官方 preset 的完整功能;需要省
|
|
126
|
+
* token 时按需开启(设置页或 config.json),开启即接受相应的功能
|
|
127
|
+
* 约束(关键词/失败信号放行、skill_search 按需发现等补偿机制仍在)。
|
|
128
|
+
*/
|
|
112
129
|
/** 抑制运行时上下文快照(等同极简模式的 includeRuntimeContext: false)。 */
|
|
113
|
-
suppressRuntimeContext:
|
|
130
|
+
suppressRuntimeContext: false,
|
|
114
131
|
/** 会话启动时默认隐藏编排类工具族(核心编码工具始终保留)。 */
|
|
115
|
-
leanByDefault:
|
|
132
|
+
leanByDefault: false,
|
|
116
133
|
/** 用户消息命中工具族触发词时自动放行该族(会话内单调)。 */
|
|
117
134
|
escalateOnKeyword: true,
|
|
118
135
|
/** 工具调用失败(UNKNOWN_TOOL 文本含隐藏工具名)时自动放行该族。 */
|
|
@@ -123,7 +140,7 @@ export const DEFAULT_CONFIG = {
|
|
|
123
140
|
* 不再像旧版那样在晋升后恢复——替代品是 skill_search/skill_load 按需发现
|
|
124
141
|
* 与 instruction-hint 一次性提示。false = 只在 bootstrap(请求 #1)剥离。
|
|
125
142
|
*/
|
|
126
|
-
suppressInjectedContext:
|
|
143
|
+
suppressInjectedContext: false,
|
|
127
144
|
/** 晋升后常驻 skill_search / skill_load 两个按需技能发现工具。 */
|
|
128
145
|
skillDiscovery: true,
|
|
129
146
|
/** 晋升后注入一次"指令文件存在,需要时自读"的短提示(替代全文注入)。 */
|
|
@@ -160,7 +177,7 @@ export const DEFAULT_CONFIG = {
|
|
|
160
177
|
/** 首轮锚定(参照 dsh-anchored-standard)。 */
|
|
161
178
|
bootstrap: {
|
|
162
179
|
/** 是否启用首轮锚定。 */
|
|
163
|
-
enabled:
|
|
180
|
+
enabled: false,
|
|
164
181
|
/**
|
|
165
182
|
* 是否挂载真实 Minimal 工具对(0.5.0):把官方 minimal preset 的持久
|
|
166
183
|
* PTY bash + str_replace_editor 挂进 agent 作用域(按名阴影 standard 的
|
|
@@ -196,7 +213,7 @@ export const DEFAULT_CONFIG = {
|
|
|
196
213
|
*/
|
|
197
214
|
minimalPrompt: {
|
|
198
215
|
/** 是否启用极简提示词层。 */
|
|
199
|
-
enabled:
|
|
216
|
+
enabled: false,
|
|
200
217
|
/** 替换后的 persona 文本;与极简模式相同可完全对齐语域。留空不替换。 */
|
|
201
218
|
persona: 'You are a helpful software engineer assistant.',
|
|
202
219
|
/** 屏蔽全局引导段(identity / source / web-surface)。 */
|
|
@@ -913,6 +930,34 @@ export function applyBootstrapBudget(config, promoted, maxTokens) {
|
|
|
913
930
|
|
|
914
931
|
// ── host 插件 ────────────────────────────────────────────────────────────
|
|
915
932
|
|
|
933
|
+
/** 把配置 namespace 注册进宿主 settings 体系(dsh-settings 0.1.0-rc.7+)。
|
|
934
|
+
* 设置页 describe() 只枚举 settings.register 注册过的 namespace;本插件
|
|
935
|
+
* 的卡片读写不经过宿主 settings 文档,注册只为让卡片出现在设置页。
|
|
936
|
+
* options.base 必传当前生效配置快照:宿主 resolve = schema(mergeLayers(base,
|
|
937
|
+
* section)),schema 无默认值时 base 缺失会让 describe() 的 value 为
|
|
938
|
+
* undefined,而设置页 wire 校验要求 value 非空(invalid_type: nonoptional),
|
|
939
|
+
* 一项失败会拖垮整个设置页。本插件的 any() schema 完全依赖 base。
|
|
940
|
+
* fail-safe(schema 库/服务缺失静默跳过)+ 幂等(重复注册忽略)。
|
|
941
|
+
* 导出以便测试注入 Schema stub。 */
|
|
942
|
+
export function registerSettingsNamespace(ctx, ns, schemaLib, buildSchema, options) {
|
|
943
|
+
if (schemaLib === null || schemaLib === undefined) return false;
|
|
944
|
+
if (ctx === null || typeof ctx !== 'object' || typeof ctx.inject !== 'function') return false;
|
|
945
|
+
try {
|
|
946
|
+
ctx.inject(['settings'], (settingsCtx) => {
|
|
947
|
+
try {
|
|
948
|
+
settingsCtx.settings.register(ns, buildSchema(schemaLib), options);
|
|
949
|
+
} catch (error) {
|
|
950
|
+
const message = String(error && error.message || error);
|
|
951
|
+
if (!message.includes('already registered')) throw error;
|
|
952
|
+
}
|
|
953
|
+
});
|
|
954
|
+
return true;
|
|
955
|
+
} catch (error) {
|
|
956
|
+
try { ctx.logger?.warn?.(`adaptive-perf: settings namespace registration skipped: ${error && error.message || error}`); } catch {}
|
|
957
|
+
return false;
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
|
|
916
961
|
export async function apply(ctx, config, options = {}) {
|
|
917
962
|
// fail-safe:初始化失败只记录,绝不让本插件拖垮 harness(host 层挂载时
|
|
918
963
|
// entry 异常会导致进程启动失败)。
|
|
@@ -1547,6 +1592,15 @@ export async function apply(ctx, config, options = {}) {
|
|
|
1547
1592
|
ctx.plugin(PluginConfigGateway, { store, serviceKey: 'adaptivePerfConfig' });
|
|
1548
1593
|
}
|
|
1549
1594
|
|
|
1595
|
+
// 注册进宿主 settings 体系(可见性):设置页用 settings.describe() 枚举
|
|
1596
|
+
// registrations,未注册的 namespace 即使卡片带正确的 key 也不渲染。
|
|
1597
|
+
// 卡片的实际读写仍走上面的 config gateway(config.json 权威、热更新)。
|
|
1598
|
+
// 配置为多层嵌套结构(families/bootstrap/minimalPrompt…),schema 用 any
|
|
1599
|
+
// 透传——describe 元数据只服务于可见性,卡片不读取它。any() 无默认值,
|
|
1600
|
+
// 必须传 base(当前生效配置快照),否则 describe() 的 value 为 undefined,
|
|
1601
|
+
// 设置页 wire 校验(nonoptional)会整体失败。
|
|
1602
|
+
registerSettingsNamespace(ctx, 'adaptivePerfConfig', Schema, (z) => z.any(), { base: cfg });
|
|
1603
|
+
|
|
1550
1604
|
// 卸载清理:释放全部会话副作用与监听。
|
|
1551
1605
|
ctx.effect(() => () => {
|
|
1552
1606
|
for (const agentId of [...agents.keys()]) releaseAgent(agentId);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chaoset/adaptive-perf",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "DSH host plugin: bring standard / PTC presets to minimal-mode-level performance — real Minimal tool pair, permanent injected-context suppression with on-demand discovery, runtime-context suppression, and adaptive tool-catalog trimming with demand-driven escalation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|