dsh-plugin-om 0.0.13 → 0.0.14
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 +23 -18
- package/dist/compress.d.ts +16 -12
- package/dist/compress.d.ts.map +1 -1
- package/dist/config.d.ts +6 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/constants.d.ts +7 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +7590 -284
- package/dist/log-index.d.ts +5 -3
- package/dist/log-index.d.ts.map +1 -1
- package/dist/recall.d.ts +2 -2
- package/dist/semantic-recall.d.ts +2 -1
- package/dist/semantic-recall.d.ts.map +1 -1
- package/dist/summarize.d.ts +64 -55
- package/dist/summarize.d.ts.map +1 -1
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +1 -15
- package/dist/utils.d.ts.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -75,13 +75,18 @@ dsh的"预设"分为两层,`dsh web`等同于`dsh --profile web`,调用的
|
|
|
75
75
|
|
|
76
76
|
1. 在未压缩的消息到达观察阈值后,进行摘要
|
|
77
77
|
2. 将新生成摘要追加到已有摘要后(每条压缩日志是独立的消息/块,旧块原地保留)
|
|
78
|
-
3. 如果摘要总长到达反思阈值,对其本身进行摘要(把全部 <
|
|
78
|
+
3. 如果摘要总长到达反思阈值,对其本身进行摘要(把全部 <history> 块拼接合并为一条)
|
|
79
79
|
4. 提供recall/recall-semantic两个tool进行检索
|
|
80
80
|
|
|
81
|
+
观察与反思共用同一套系统提示词(buildHistoryPrompt):输入与输出都是合法的 <history> 块(模型消息 + index 的表达形式),先定义块、要求压缩、再给出数据源(下方 <history> 消息记录)。
|
|
82
|
+
|
|
81
83
|
### 压缩日志块结构
|
|
82
84
|
|
|
83
|
-
- 观察压缩只精确替换被压缩的新消息区间:旧 <
|
|
84
|
-
-
|
|
85
|
+
- 观察压缩只精确替换被压缩的新消息区间:旧 <history> 块保留为独立消息,新观察日志作为新块追加在其后(多块并存按序排列),历史不会随压缩次数膨胀;反思合并时才把多个块合并为一条更紧凑的摘要
|
|
86
|
+
- 压缩边界:消息列表中最后一个合法的 <history> 块(source 为插件)之后的消息视为未压缩;其前(含自身)视为已压缩,不重复压缩、不计入观察阈值
|
|
87
|
+
- 观察输入经 `@xmldom/xmldom` 构建为合法 <history> 块(用户消息文本/assistant 文本/reasoning 特殊字符自动转义,图片/文件以注释补充;assistant 文本与 toolcall&result 原样)
|
|
88
|
+
- 输出经 `@xmldom/xmldom` 解析校验:结构合法(标签匹配/闭合/单块)、不含 <reasoning>、index/start/end 连续(与预期覆盖区间一致),失败按 `compressRetryCount` 重试
|
|
89
|
+
- 块开标签带 `tip` 属性(对 AI 的提醒:"当前块是历史消息的压缩产物,不要复述");块顶为构成逻辑注释(完整消息定义串 + 条目标签语义),消息正文不再附加前缀句
|
|
85
90
|
|
|
86
91
|
### 注意
|
|
87
92
|
|
|
@@ -91,6 +96,7 @@ dsh的"预设"分为两层,`dsh web`等同于`dsh --profile web`,调用的
|
|
|
91
96
|
### 依赖策略
|
|
92
97
|
|
|
93
98
|
- dsh宿主提供的依赖,直接复用即可,如 cordis / dsh-tools / zod 等
|
|
99
|
+
- `@xmldom/xmldom` 用于 <history> 块的 XML 构建(输入转义)与解析校验(输出结构合法性),经 tsdown `deps.alwaysBundle` 打包进 dist 产物
|
|
94
100
|
- 向量模型模型二进制:量化 ONNX 约 113MB,启用语义召回时下载,位置`$DSH_HOME/plugin-data/dsh-plugin-om/models/<id>/onnx/model_quantized.onnx`。下载失败可以设置`HF_ENDPOINT=https://hf-mirror.com`
|
|
95
101
|
|
|
96
102
|
## 插件配置项
|
|
@@ -98,24 +104,23 @@ dsh的"预设"分为两层,`dsh web`等同于`dsh --profile web`,调用的
|
|
|
98
104
|
| 键 | 默认 | 含义 |
|
|
99
105
|
| ----------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
100
106
|
| `thresholdRatio` | `0.1` | 观察阈值:未压缩消息 ≥ 窗口 × 该比例触发压缩 |
|
|
101
|
-
| `historyMergeRatio` | `0.2` | 反思阈值:全部 <
|
|
107
|
+
| `historyMergeRatio` | `0.2` | 反思阈值:全部 <history> 块总长 ≥ 窗口 × 该比例触发精简合并 |
|
|
102
108
|
| `compressMaxTokens` | `10000` | 单次摘要(观察/反思调用)生成上限 |
|
|
103
109
|
| `tailMessageCount` | `10` | 尾部保留的不压缩消息条数(不压缩、不被替换、不进摘要日志) |
|
|
110
|
+
| `compressRetryCount` | `10` | 摘要调用失败后的最大重试次数(不含首次;总尝试次数 = 该值 + 1) |
|
|
104
111
|
| `modelDir` | 共享目录 | recall-semantic 嵌入模型目录(默认 `$DSH_HOME/plugin-data/dsh-plugin-om/models/<id>`,跨插件版本共享;小文件随包分发并在缺失时自动补齐,onnx 缺失且启用语义召回时运行时自动下载到该目录;可指向自定义目录) |
|
|
105
|
-
| `
|
|
112
|
+
| `omEnabled` | `true` | 是否启用 OM 自动压缩(观察/反思);`false` 时关闭自动压缩,recall/recall-semantic 不受影响。`omEnabled` 替代原 `summaryMode`(见[摘要方式](#摘要方式)) |
|
|
106
113
|
| `debug` | dev | 压缩流程步骤级(debug)日志开关:`true` 强制开启、`false` 强制关闭;缺省按 `NODE_ENV !== 'production'` 判定(dev/test 输出,生产隐藏)。**失败日志不受此开关影响,始终输出** |
|
|
107
114
|
| `recallEnabled` | `true` | 是否注册 `recall` 工具(`false` 时禁用,不注册) |
|
|
108
115
|
| `semanticRecallEnabled` | `true` | 是否注册 `recall-semantic` 工具(`false` 时禁用,不注册、不触发模型下载) |
|
|
109
116
|
|
|
110
117
|
> 不建议将thresholdRatio设置的过高,越早OM收益越高,且当前的机制需要模型对消息计数,过多的消息会导致历史混乱
|
|
111
118
|
|
|
112
|
-
###
|
|
119
|
+
### 关于配置项变更的说明
|
|
113
120
|
|
|
114
|
-
|
|
121
|
+
配置键 `omEnabled` 替代了原 `summaryMode`:现在只能通过 `omEnabled` 开启或关闭 OM。
|
|
115
122
|
|
|
116
|
-
|
|
117
|
-
- `new`:开启一个新会话,输入需要压缩的会话,要求摘要
|
|
118
|
-
- `disable`:关闭OM。recall/recall-semantic 按「完整消息 index」检索(index 从 0 起、会话内全局稳定,模型可感知并可与摘要日志条目互相对应)
|
|
123
|
+
现在消息调用会固定新开会话,而取消了fork主会话的链路。fork 方式虽然能复用前缀缓存,但需要模型自行对消息计数,会导致严重的索引异常。
|
|
119
124
|
|
|
120
125
|
## npm 命令
|
|
121
126
|
|
|
@@ -137,7 +142,7 @@ cordis.patch.yml # bundle patch:dsh plugin add 后作为组合层
|
|
|
137
142
|
src/
|
|
138
143
|
├── index.ts # 打包入口(tsdown entry),导出 name / inject / apply
|
|
139
144
|
│ apply(ctx, config) 三条主线(标注对应实现文件):
|
|
140
|
-
│ ├─ ① resolveConfig(config) ──▶ config.ts # 配置默认值合并 +
|
|
145
|
+
│ ├─ ① resolveConfig(config) ──▶ config.ts # 配置默认值合并 + 宽松校验(未知键忽略、非法值回退默认,冻结返回)
|
|
141
146
|
│ ├─ ② recallEnabled 时 ctx.tools.register(buildRecallTool(() => ctx.get('toolResultPruner')))
|
|
142
147
|
│ │ └─▶ recall.ts # recall 工具:按完整消息 index 回看区间(超大结果由 pruner 裁剪)
|
|
143
148
|
│ ├─ ③ semanticRecallEnabled 时 ctx.tools.register(buildSemanticRecallTool({ getPruner, modelStatus, embedder }))
|
|
@@ -146,24 +151,24 @@ src/
|
|
|
146
151
|
│ │ └─▶ model-download.ts # 模型下载原语(URL/跳过判定/原子落盘;dev CLI 复用)
|
|
147
152
|
│ └─ ④ 事件接线(仅主会话生效)
|
|
148
153
|
│ └─ ctx.on('agent/pre-step') → compress.ts # maybeCompress:两级压缩阻塞串行(先反思后观察;turn 中间即可触发)
|
|
149
|
-
│ ├─ reflectPass → summarize.ts # 全部 <
|
|
150
|
-
│ ├─ observePass → summarize.ts # 未压缩消息 ≥ 窗口 × thresholdRatio
|
|
154
|
+
│ ├─ reflectPass → summarize.ts # 全部 <history> 块总长 ≥ 窗口 × historyMergeRatio:多块拼接 + 共享提示词合并整个块区段
|
|
155
|
+
│ ├─ observePass → summarize.ts # 未压缩消息 ≥ 窗口 × thresholdRatio:渲染 <history> 输入 → 观察日志 → 追加 + 替换
|
|
151
156
|
│ └─ 提交 → compress.ts # compaction/start → summary → 替换消息(checkpoint) → end;usage 归入主会话
|
|
152
|
-
├── constants.ts # 共享常量(PLUGIN_LABEL / HISTORY_TAG / COMPACT_CHECKPOINT_PLUGIN)
|
|
157
|
+
├── constants.ts # 共享常量(PLUGIN_LABEL / HISTORY_TAG / HISTORY_TIP / COMPLETE_MESSAGE_DEFINITION / COMPACT_CHECKPOINT_PLUGIN)
|
|
153
158
|
├── types.ts # type-only:宿主类型再导出 + 领域类型(MessageNode / MessageIndex)
|
|
154
|
-
├── config.ts # 配置默认值 /
|
|
159
|
+
├── config.ts # 配置默认值 / 宽松合并(缺省、null、空串回退默认值;未知键忽略、非法值回退默认;数值键/布尔键/omEnabled/modelDir)
|
|
155
160
|
├── utils.ts # 零依赖工具函数(配置校验 / 文本渲染 / 主会话判定 / 路由解析)
|
|
156
|
-
├── log-index.ts # 完整消息索引(index 定位 user/assistant
|
|
161
|
+
├── log-index.ts # 完整消息索引(index 定位 user/assistant/具有result的toolcall;未闭合 tool-call 不占位;recall 与摘要共用)
|
|
157
162
|
├── embedding.ts # 本地 ONNX 嵌入(@huggingface/transformers + 本地模型;共享目录解析 / 小文件补齐 / 运行时按需下载编排 / 懒加载 / 批量 / cosine)
|
|
158
163
|
├── model-download.ts # 模型下载原语(modelSourceUrl / needsDownload / 原子落盘 / 开始结束日志与失败镜像建议;运行时与 dev CLI 共用)
|
|
159
|
-
├── summarize.ts #
|
|
164
|
+
├── summarize.ts # 共享提示词 buildHistoryPrompt(观察/反思同一套)+ renderMessages(@xmldom/xmldom 构建 <history> 块输入,自动转义)+ 直连 ctx.llm.stream() 摘要(new 方式:指令作 system、输入为渲染消息;extractSummaryLog 提取校验:XML 结构合法 / 无 reasoning / index 连续 / 覆盖区间;重试与流式 usage 归入主会话)
|
|
160
165
|
├── recall.ts # recall 工具
|
|
161
166
|
├── semantic-recall.ts # recall-semantic 工具(query 语义检索 + 区间限定 + 回退全量 + 匹配说明)
|
|
162
167
|
└── compress.ts # 两级自动压缩(测量 / mid-turn 区间计算 / 配对平衡回退 / source 标记判定摘要消息 / compaction/* 生命周期事件 + checkpoint 替换)
|
|
163
168
|
models/
|
|
164
169
|
└── paraphrase-multilingual-MiniLM-L12-v2/ # 嵌入模型目录(小文件随包分发;onnx 二进制不随包分发、由运行时按需下载到跨版本共享目录,不进 git)
|
|
165
170
|
scripts/ # release-archive.mjs(CHANGELOG 归档)/ download-model.mjs(开发手动预下载 CLI)
|
|
166
|
-
tests/ # vitest 单元测试(
|
|
171
|
+
tests/ # vitest 单元测试(151 例)
|
|
167
172
|
.dsh/skills/ # 项目级 skill(feature-defect-workflow:需求/缺陷完成工作流)
|
|
168
173
|
```
|
|
169
174
|
|
package/dist/compress.d.ts
CHANGED
|
@@ -7,8 +7,8 @@ export type TokenEstimator = {
|
|
|
7
7
|
estimateMessage(message: unknown): number;
|
|
8
8
|
};
|
|
9
9
|
/**
|
|
10
|
-
* 未压缩消息 token
|
|
11
|
-
*
|
|
10
|
+
* 未压缩消息 token 估算:最后一个 <history> 块之后的表层节点合计
|
|
11
|
+
* (其前含自身视为已压缩,不计入观察阈值衡量对象;无压缩日志时计全部)。
|
|
12
12
|
*/
|
|
13
13
|
export declare function measureUncompressedTokens(session: Session, meter: TokenEstimator): number;
|
|
14
14
|
/**
|
|
@@ -29,18 +29,22 @@ export declare function computeCompressRange(session: Session, tailCount: number
|
|
|
29
29
|
shadowedSeqs: number[];
|
|
30
30
|
} | undefined;
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
32
|
+
* 压缩边界(historySection):扫描表层全部节点,收集所有合法 <history> 压缩日志块
|
|
33
|
+
* (内文 + seq,按表层顺序),并以最后一个块的 seq 作为压缩边界——
|
|
34
|
+
* 边界之后的消息视为未压缩;其前(含边界自身)视为已压缩(不重复压缩、不计入观察阈值)。
|
|
35
|
+
* 无压缩日志时 blocks 为空、boundarySeq 为 undefined(全部视为未压缩)。
|
|
36
36
|
*/
|
|
37
|
-
export declare function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
export declare function historySection(session: Session): {
|
|
38
|
+
blocks: Array<{
|
|
39
|
+
text: string;
|
|
40
|
+
seq: number;
|
|
41
|
+
}>;
|
|
42
|
+
boundarySeq: number | undefined;
|
|
43
|
+
};
|
|
41
44
|
/**
|
|
42
|
-
* 反思:全部 <
|
|
43
|
-
*
|
|
45
|
+
* 反思:全部 <history> 块 tokens 合计 ≥ 窗口 × historyMergeRatio 时,摘要调用
|
|
46
|
+
* 精简合并(多个块拼接为输入,与观察共用同一套提示词),把整个块区段替换为一条
|
|
47
|
+
* 更紧凑的摘要。失败不产生部分替换。
|
|
44
48
|
*/
|
|
45
49
|
export declare function reflectPass(ctx: Context, agent: Agent, config: Readonly<PluginConfig>, window: number, target: RoutedTarget, signal?: AbortSignal): Promise<void>;
|
|
46
50
|
/**
|
package/dist/compress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EACV,KAAK,EAEL,OAAO,EACP,YAAY,EACZ,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,KAAK,YAAY,EAAsB,MAAM,YAAY,CAAC;AAEjF,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EACV,KAAK,EAEL,OAAO,EACP,YAAY,EACZ,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,KAAK,YAAY,EAAsB,MAAM,YAAY,CAAC;AAEjF,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAyCD,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG;IAAE,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAA;CAAE,CAAC;AAE3E;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAkBzF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAc1E;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CA8BpE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG;IAChD,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC,CAaA;AA4FD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CA2Gf;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAkIf;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 摘要模式:
|
|
3
|
-
* - fork(缺省):fork 会话风格——复用主会话请求前缀(system/tools 与完整派生历史),
|
|
4
|
-
* 充分利用 provider 前缀缓存;
|
|
5
|
-
* - new:新开会话风格——只注入本次要压缩的消息(XML 包裹),指令作为 system;
|
|
6
|
-
* - disable:关闭自动压缩(观察/反思均不触发)。
|
|
7
|
-
*/
|
|
8
|
-
export type SummaryMode = 'fork' | 'new' | 'disable';
|
|
9
1
|
/** 插件配置项(全部可选覆盖,未给出或留空的键用默认值)。 */
|
|
10
2
|
export type PluginConfig = {
|
|
11
3
|
/** 压力阈值比例:压力 ≥ 窗口 × 该比例时触发自动压缩。 */
|
|
12
4
|
thresholdRatio: number;
|
|
13
|
-
/** 反思阈值比例:摘要(<
|
|
5
|
+
/** 反思阈值比例:摘要(<history> 内容)≥ 窗口 × 该比例时由反思摘要调用精简合并。 */
|
|
14
6
|
historyMergeRatio: number;
|
|
15
7
|
/** 单次摘要(合并调用)生成上限(LLM maxTokens)。 */
|
|
16
8
|
compressMaxTokens: number;
|
|
17
9
|
/** 压缩边界:其后不压缩消息数下限(正整数,尾部保留)。 */
|
|
18
10
|
tailMessageCount: number;
|
|
19
|
-
/**
|
|
20
|
-
|
|
11
|
+
/** 摘要调用失败后的最大重试次数(不含首次尝试;总尝试次数 = 该值 + 1,默认 11)。 */
|
|
12
|
+
compressRetryCount: number;
|
|
13
|
+
/** 是否启用 OM 自动压缩(观察/反思):false 时关闭自动压缩(recall 工具不受影响)。 */
|
|
14
|
+
omEnabled: boolean;
|
|
21
15
|
/** 步骤级(debug)日志开关:true 强制开启、false 强制关闭;缺省按 NODE_ENV !== 'production' 判定。 */
|
|
22
16
|
debug: boolean;
|
|
23
17
|
/** 是否注册 recall 工具(缺省 true;false 时不注册)。 */
|
|
@@ -30,12 +24,7 @@ export type PluginConfig = {
|
|
|
30
24
|
/** 默认配置(冻结对象,resolveConfig 合并的基底;debug 缺省值在解析时按 NODE_ENV 判定)。 */
|
|
31
25
|
export declare const DEFAULT_CONFIG: Readonly<PluginConfig>;
|
|
32
26
|
/**
|
|
33
|
-
*
|
|
34
|
-
* 其余值抛错(配置错误须立即可见)。
|
|
35
|
-
*/
|
|
36
|
-
export declare function resolveSummaryMode(raw: unknown): SummaryMode;
|
|
37
|
-
/**
|
|
38
|
-
* 解析合并配置:校验未知键与数值/字符串类型,返回冻结的完整配置。
|
|
27
|
+
* 解析合并配置:未知键忽略、不合法值回退默认值,返回冻结的完整配置。
|
|
39
28
|
* 允许所有配置留空——缺省 / null / 空串的键回退默认值,未给出的键亦取默认值。
|
|
40
29
|
*/
|
|
41
30
|
export declare function resolveConfig(raw?: unknown): Readonly<PluginConfig>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,kCAAkC;AAClC,MAAM,MAAM,YAAY,GAAG;IACzB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mDAAmD;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,SAAS,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,KAAK,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,aAAa,EAAE,OAAO,CAAC;IACvB,2DAA2D;IAC3D,qBAAqB,EAAE,OAAO,CAAC;IAC/B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,YAAY,CAWhD,CAAC;AAmCH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CA4BnE"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -3,10 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
/** 插件标识:压缩消息 source.plugin 取值与日志前缀。 */
|
|
5
5
|
export declare const PLUGIN_LABEL = "dsh-plugin-om";
|
|
6
|
-
/** 压缩日志标签名:<
|
|
7
|
-
export declare const HISTORY_TAG = "
|
|
6
|
+
/** 压缩日志标签名:<history>...</history> 包裹观察/反思日志块(输入与输出均为合法 history 块)。 */
|
|
7
|
+
export declare const HISTORY_TAG = "history";
|
|
8
8
|
/** 压缩日志块开标签上的 tip 属性(对 AI 的提醒:本块是历史压缩产物,不要复述)。 */
|
|
9
9
|
export declare const HISTORY_TIP = "\u5F53\u524D\u5757\u662F\u5386\u53F2\u6D88\u606F\u7684\u538B\u7F29\u4EA7\u7269\uFF0C\u4E0D\u8981\u590D\u8FF0";
|
|
10
|
+
/**
|
|
11
|
+
* 「完整消息」定义(提示词 / recall 工具描述 / 块顶注释共用同一字符串)。
|
|
12
|
+
* 完整消息是摘要日志与 recall 共用的定位单位;首条 index 为 0,按会话顺序递增、全局稳定。
|
|
13
|
+
*/
|
|
14
|
+
export declare const COMPLETE_MESSAGE_DEFINITION = "`\u7528\u6237\u6D88\u606F`\uFF0C`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u548C`\u5177\u6709result\u7684toolcall`\u88AB\u89C6\u4F5C`\u5B8C\u6574\u6D88\u606F`\u3002\u9996\u6761`\u5B8C\u6574\u6D88\u606F`\u7684index\u662F0\uFF0C\u540E\u7EED\u7684index\u9012\u589E\u3002";
|
|
10
15
|
/** 宿主压缩 checkpoint 标记的 plugin 名(dsh-compaction-basic 的 COMPACT_CHECKPOINT_MARKER.plugin)。 */
|
|
11
16
|
export declare const COMPACT_CHECKPOINT_PLUGIN = "compact";
|
|
12
17
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,uCAAuC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,uCAAuC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,sEAAsE;AACtE,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,kDAAkD;AAClD,eAAO,MAAM,WAAW,iHAAuB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,4QACqC,CAAC;AAE9E,6FAA6F;AAC7F,eAAO,MAAM,yBAAyB,YAAY,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* 按语义在全部完整消息(含被压缩/遮蔽)中检索,返回最匹配的完整消息与匹配说明
|
|
9
9
|
* (本地 ONNX embedding,模型随插件打包,懒加载)
|
|
10
10
|
* - compress.ts 自动压缩(OM 观察/反思两级阈值):pre-step 阻塞串行执行——
|
|
11
|
-
* 反思(摘要 ≥ 窗口 × historyMergeRatio 时摘要调用精简合并 <
|
|
11
|
+
* 反思(摘要 ≥ 窗口 × historyMergeRatio 时摘要调用精简合并 <history>)、
|
|
12
12
|
* 观察(未压缩消息 ≥ 窗口 × thresholdRatio 时摘要调用压缩为观察日志并追加)
|
|
13
13
|
*
|
|
14
14
|
* 约束:不引入自定义会话事件类型——压缩复用宿主已知的 compaction/* 生命周期事件
|