dsh-plugin-om 0.0.28 → 0.0.30
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 +16 -14
- package/dist/client/definition.d.ts +2 -2
- package/dist/client/definition.d.ts.map +1 -1
- package/dist/client/locales.d.ts +1 -1
- package/dist/client.js +9 -9
- package/dist/client.js.map +1 -1
- package/dist/compaction-log.d.ts +27 -26
- package/dist/compaction-log.d.ts.map +1 -1
- package/dist/compress-loop.d.ts +85 -0
- package/dist/compress-loop.d.ts.map +1 -0
- package/dist/compress-tools.d.ts +79 -0
- package/dist/compress-tools.d.ts.map +1 -0
- package/dist/compress-view.d.ts +82 -0
- package/dist/compress-view.d.ts.map +1 -0
- package/dist/compress.d.ts +10 -9
- package/dist/compress.d.ts.map +1 -1
- package/dist/config.d.ts +1 -3
- package/dist/config.d.ts.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +1244 -954
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/summarize.d.ts +0 -125
- package/dist/summarize.d.ts.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 压缩工具状态机:getHistory / compressHistory / completeCompression 的参数解析、
|
|
3
|
+
* 校验与执行,以及最终 <history> 块构建。导出 CompressionState / ToolCallResult /
|
|
4
|
+
* COMPRESSION_TOOL_SCHEMAS / SKILL_TOOL_NAME。
|
|
5
|
+
*
|
|
6
|
+
* - getHistory:查看要求区间内的条目(压缩视图,无 <history> 包裹;区间切入已有
|
|
7
|
+
* 压缩块时返回整块全部条目;start/end 缺省为要求区间首尾)
|
|
8
|
+
* - compressHistory:把 index 单条或 start..end 连续区间的 assistant 条目替换为
|
|
9
|
+
* content 摘要(纯文本,构建最终块时转义嵌入)。参数非法 / 越界 / 覆盖用户或
|
|
10
|
+
* 系统消息 / 与条目或已有替换区间部分重叠 → 返回错误结果(模型可修正重试);
|
|
11
|
+
* 重复覆盖同一区间:新区间完全包含旧区间时覆盖,部分重叠时报错
|
|
12
|
+
* - skill 规则:区间覆盖工具名为 skill 的 toolcall 条目时,该 skill 块首次被覆盖
|
|
13
|
+
* 不执行、返回要求重新思考的提示;之后再次覆盖它的调用直接执行
|
|
14
|
+
* - completeCompression:标记完成(调用后压缩会话立即停止);空提交(0 次成功
|
|
15
|
+
* 压缩)允许
|
|
16
|
+
* - 最终 <history> 块由插件从视图与替换记录构建:user / sys 条目原样、被替换区间
|
|
17
|
+
* 生成新摘要条目、未替换 assistant 条目原样保留、reasoning 不进产物;产物天然
|
|
18
|
+
* 合法 XML,无需校验
|
|
19
|
+
*/
|
|
20
|
+
import type { ToolSchema } from '@deepseek-ai/dsh-llm';
|
|
21
|
+
import { type CompressionView } from './compress-view.ts';
|
|
22
|
+
/** skill 工具名:toolcall 条目的工具名为该值时视为 skill 加载,压缩前二次确认。 */
|
|
23
|
+
export declare const SKILL_TOOL_NAME = "skill";
|
|
24
|
+
/** 工具执行结果(isError=true 时模型应修正调用或改变策略)。 */
|
|
25
|
+
export type ToolCallResult = {
|
|
26
|
+
/** 返回给模型的文本。 */
|
|
27
|
+
text: string;
|
|
28
|
+
/** 是否为错误结果(未执行 / 参数非法)。 */
|
|
29
|
+
isError: boolean;
|
|
30
|
+
};
|
|
31
|
+
/** 压缩会话的工具状态:视图 + 替换记录 + skill 二次确认标记 + 完成标记。 */
|
|
32
|
+
export declare class CompressionState {
|
|
33
|
+
private readonly view;
|
|
34
|
+
private readonly replacements;
|
|
35
|
+
private readonly challengedSkills;
|
|
36
|
+
private _completed;
|
|
37
|
+
/**
|
|
38
|
+
* @param view 压缩视图(观察或反思),工具校验与最终块构建的数据源。
|
|
39
|
+
*/
|
|
40
|
+
constructor(view: CompressionView);
|
|
41
|
+
/** 已成功应用的替换次数(0 表示空提交)。 */
|
|
42
|
+
get replacementCount(): number;
|
|
43
|
+
/** 是否已调用 completeCompression。 */
|
|
44
|
+
get completed(): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* 执行一次压缩工具调用:解析 JSON 参数并按工具名分发。
|
|
47
|
+
* 未知工具名或参数非法 JSON 返回错误结果,不抛出。
|
|
48
|
+
*/
|
|
49
|
+
executeCall(name: string, rawArgs: string): ToolCallResult;
|
|
50
|
+
/** 解析可选数值参数(缺省 undefined;非有限数返回 NaN)。 */
|
|
51
|
+
private optionalNumber;
|
|
52
|
+
/**
|
|
53
|
+
* getHistory:返回 [start..end] 区间内的条目(压缩视图,无 <history> 包裹)。
|
|
54
|
+
* start/end 缺省为要求区间首尾;越界或 start > end 返回错误。区间切入已有压缩
|
|
55
|
+
* 块(反思视图)时返回该块全部条目。
|
|
56
|
+
*/
|
|
57
|
+
getHistory(args: Record<string, unknown>): ToolCallResult;
|
|
58
|
+
/** 区间的简短描述(单条 index / 区间 start..end)。 */
|
|
59
|
+
private static spanLabel;
|
|
60
|
+
/**
|
|
61
|
+
* compressHistory:把 index 单条或 start..end 连续区间的 assistant 条目替换为
|
|
62
|
+
* content 摘要。校验失败返回错误结果(不应用);skill 块首次被覆盖返回要求
|
|
63
|
+
* 重新思考的错误结果(不应用,标记已挑战);通过后记录替换并覆盖被完全包含
|
|
64
|
+
* 的旧替换。
|
|
65
|
+
*/
|
|
66
|
+
compressHistory(args: Record<string, unknown>): ToolCallResult;
|
|
67
|
+
/** completeCompression:标记压缩完成(调用后压缩会话立即停止)。 */
|
|
68
|
+
complete(): ToolCallResult;
|
|
69
|
+
/**
|
|
70
|
+
* 构建最终 <history> 块:按 index 顺序合并视图条目与替换记录——user / sys 条目
|
|
71
|
+
* 原样、被替换区间生成 <assistant index|start end> 摘要条目(content 转义嵌入)、
|
|
72
|
+
* 未替换 assistant 条目原样保留、reasoning 不进产物;块首为格式说明注释,开标签
|
|
73
|
+
* 携带 tip 属性。产物为合法 XML,无需校验。
|
|
74
|
+
*/
|
|
75
|
+
buildFinalBlock(): string;
|
|
76
|
+
}
|
|
77
|
+
/** 压缩会话工具的 wire 定义(GenerateOptions.tools)。 */
|
|
78
|
+
export declare const COMPRESSION_TOOL_SCHEMAS: ToolSchema[];
|
|
79
|
+
//# sourceMappingURL=compress-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress-tools.d.ts","sourceRoot":"","sources":["../src/compress-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EACL,KAAK,eAAe,EAIrB,MAAM,oBAAoB,CAAC;AAG5B,wDAAwD;AACxD,eAAO,MAAM,eAAe,UAAU,CAAC;AAEvC,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAYF,iDAAiD;AACjD,qBAAa,gBAAgB;IAQf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,OAAO,CAAC,UAAU,CAAS;IAE3B;;OAEG;gBAC0B,IAAI,EAAE,eAAe;IAElD,2BAA2B;IAC3B,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,iCAAiC;IACjC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc;IAuB1D,yCAAyC;IACzC,OAAO,CAAC,cAAc;IAMtB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IA8CzD,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAC,SAAS;IAIxB;;;;;OAKG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,cAAc;IAyH9D,+CAA+C;IAC/C,QAAQ,IAAI,cAAc;IAK1B;;;;;OAKG;IACH,eAAe,IAAI,MAAM;CAmD1B;AAED,8CAA8C;AAC9C,eAAO,MAAM,wBAAwB,EAAE,UAAU,EAkChD,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 压缩视图:把被压缩区间投影为统一的条目序列(ViewEntry)。
|
|
3
|
+
* 观察视图由完整消息原文构建(buildObserveView),反思视图由已有 <history> 块内条目构建
|
|
4
|
+
* (buildReflectView);getHistory 查看、compressHistory 区间校验与最终 <history> 块构建
|
|
5
|
+
* 共用同一套条目。导出 ViewEntry / CompressionView / BuildViewOptions / buildObserveView /
|
|
6
|
+
* buildReflectView / renderEntriesXml / entryToElement / historyInner / toolCallNameOf。
|
|
7
|
+
*/
|
|
8
|
+
import type { Document, Element } from '@xmldom/xmldom';
|
|
9
|
+
import type { CompleteMessage, Session } from './types.ts';
|
|
10
|
+
/**
|
|
11
|
+
* 视图条目:压缩区间内一条可定位的内容单位。
|
|
12
|
+
* - user / sys 条目不可压缩(compressHistory 覆盖时报错),构建最终块时原样保留
|
|
13
|
+
* - assistant 条目可压缩(观察视图为模型文本或工具调用原文,反思视图为块内摘要)
|
|
14
|
+
* - reasoning 条目仅作参考,不进最终产物
|
|
15
|
+
* - lo/hi 缺失的 assistant 条目为不可定位的历史遗留块(整块无法解析时降级保留)
|
|
16
|
+
*/
|
|
17
|
+
export type ViewEntry = {
|
|
18
|
+
/** 条目类别。 */
|
|
19
|
+
kind: 'user' | 'sys' | 'assistant' | 'reasoning';
|
|
20
|
+
/** 覆盖区间下界(完整消息 index;reasoning 与历史遗留条目无)。 */
|
|
21
|
+
lo?: number;
|
|
22
|
+
/** 覆盖区间上界(单条 = lo;reasoning 与历史遗留条目无)。 */
|
|
23
|
+
hi?: number;
|
|
24
|
+
/** 条目文本(sys 为空串;user 为文本块原文;assistant 为原文或摘要)。 */
|
|
25
|
+
text: string;
|
|
26
|
+
/** user 条目的非文本块注释(图片附件元信息等,渲染为 XML 注释)。 */
|
|
27
|
+
notes?: string[];
|
|
28
|
+
/** sys 条目的 source.kind。 */
|
|
29
|
+
sysKind?: string;
|
|
30
|
+
/** 观察视图 toolcall 条目的工具名(skill 判定用)。 */
|
|
31
|
+
toolName?: string;
|
|
32
|
+
/** 所属压缩块 seq(反思视图;块整体展开以此分组)。 */
|
|
33
|
+
blockSeq?: number;
|
|
34
|
+
};
|
|
35
|
+
/** 压缩视图:条目序列 + 要求区间(getHistory / compressHistory 的 index 合法范围)。 */
|
|
36
|
+
export type CompressionView = {
|
|
37
|
+
/** 条目序列(按 index 顺序;reasoning 位于其所属 assistant 条目之前)。 */
|
|
38
|
+
entries: ViewEntry[];
|
|
39
|
+
/** 要求区间首 index(无任何可定位条目时 undefined)。 */
|
|
40
|
+
minIndex?: number;
|
|
41
|
+
/** 要求区间尾 index(无任何可定位条目时 undefined)。 */
|
|
42
|
+
maxIndex?: number;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* 提取 toolcall 完整消息的工具名(按 callId 在所属 assistant 消息中定位 tool-call 块)。
|
|
46
|
+
* 找不到返回 undefined。
|
|
47
|
+
*/
|
|
48
|
+
export declare function toolCallNameOf(session: Session, cm: CompleteMessage): string | undefined;
|
|
49
|
+
/** 视图构建选项:skipReasoning=true 时不含 <reasoning> 参考条目。 */
|
|
50
|
+
export type BuildViewOptions = {
|
|
51
|
+
/** 是否在视图中省略 reasoning 参考条目。 */
|
|
52
|
+
skipReasoning?: boolean;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* 观察视图:被压缩区间(表层 seq 集合)内的完整消息投影为条目——
|
|
56
|
+
* user → 原文(图片等非文本块为注释)、sys → 空条目、assistant/toolcall → 原文渲染,
|
|
57
|
+
* reasoning 作为参考条目置于其所属 assistant 条目之前(每条 assistant 消息输出一次;
|
|
58
|
+
* skipReasoning 时省略)。
|
|
59
|
+
* 要求区间为区间内完整消息的首尾 index。
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildObserveView(session: Session, seqs: readonly number[], options?: BuildViewOptions): CompressionView;
|
|
62
|
+
/** 提取 <history> 块的内文(去开/闭标签;非块文本原样返回)。 */
|
|
63
|
+
export declare function historyInner(text: string): string;
|
|
64
|
+
/**
|
|
65
|
+
* 反思视图:全部 <history> 块(historySection 收集,按表层顺序)的内条目投影为条目。
|
|
66
|
+
* 要求区间为全部块内条目引用的最小 / 最大 index;块解析失败降级为不可定位遗留条目;
|
|
67
|
+
* skipReasoning 时不含 <reasoning> 参考条目。
|
|
68
|
+
*/
|
|
69
|
+
export declare function buildReflectView(blocks: Array<{
|
|
70
|
+
text: string;
|
|
71
|
+
seq: number;
|
|
72
|
+
}>, options?: BuildViewOptions): CompressionView;
|
|
73
|
+
/**
|
|
74
|
+
* 把一个视图条目构建为 XML 元素(文本经 DOM 文本节点自动转义;user 条目的注释
|
|
75
|
+
* 输出为 XML 注释节点)。getHistory 输出与最终 <history> 块共用。
|
|
76
|
+
*/
|
|
77
|
+
export declare function entryToElement(doc: Document, entry: ViewEntry): Element;
|
|
78
|
+
/**
|
|
79
|
+
* 渲染条目序列为 XML 文本(无 <history> 包裹,条目逐行拼接)——getHistory 的输出形式。
|
|
80
|
+
*/
|
|
81
|
+
export declare function renderEntriesXml(entries: ViewEntry[]): string;
|
|
82
|
+
//# sourceMappingURL=compress-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compress-view.d.ts","sourceRoot":"","sources":["../src/compress-view.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAIxD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE3D;;;;;;GAMG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY;IACZ,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;IACjD,6CAA6C;IAC7C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,uDAAuD;IACvD,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAyCF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,GAAG,MAAM,GAAG,SAAS,CAaxF;AAED,sDAAsD;AACtD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+BAA+B;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CA+DjB;AAiBD,0CAA0C;AAC1C,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASjD;AAsED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EAC5C,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAUjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CA6BvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAO7D"}
|
package/dist/compress.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Agent, Context, PluginConfig, Session } from './types.ts';
|
|
2
2
|
import { type RoutedTarget } from './utils.ts';
|
|
3
3
|
/**
|
|
4
|
-
* 压缩 pass 结果:failed=false
|
|
5
|
-
* failed=true
|
|
6
|
-
*
|
|
4
|
+
* 压缩 pass 结果:failed=false 表示无需中断(成功、跳过或非最终的局部失败);
|
|
5
|
+
* failed=true 携带最后一次错误、是否因 signal 中止与诊断子会话 id(压缩会话记录
|
|
6
|
+
* 子会话;落盘失败时缺失)。
|
|
7
7
|
*/
|
|
8
8
|
export type CompressPassResult = {
|
|
9
9
|
failed: false;
|
|
@@ -55,9 +55,10 @@ export declare function findObservePending(session: Session): {
|
|
|
55
55
|
triggerMessageIndex: number;
|
|
56
56
|
} | undefined;
|
|
57
57
|
/**
|
|
58
|
-
* 反思:全部 <history> 块 token 合计 ≥ reflectThresholdTokens
|
|
59
|
-
*
|
|
60
|
-
*
|
|
58
|
+
* 反思:全部 <history> 块 token 合计 ≥ reflectThresholdTokens 时,把全部块内条目作为
|
|
59
|
+
* 压缩视图送入工具压缩循环,整个块区段合并替换为一条更紧凑的摘要。视图无条目(全部
|
|
60
|
+
* 为不可解析的历史遗留块)时跳过。失败不产生部分替换;最终失败返回失败结果
|
|
61
|
+
* (error = 最后一次错误)。
|
|
61
62
|
*/
|
|
62
63
|
export declare function reflectPass(ctx: Context, agent: Agent, config: Readonly<PluginConfig>, target: RoutedTarget, signal?: AbortSignal): Promise<CompressPassResult>;
|
|
63
64
|
/**
|
|
@@ -66,9 +67,9 @@ export declare function reflectPass(ctx: Context, agent: Agent, config: Readonly
|
|
|
66
67
|
* observeThresholdTokens 时记录待定标记(触发点 = 当时的最后一条完整消息 index),本次
|
|
67
68
|
* 不压缩(tailMessageCount=0 当轮直接执行,不落待定标记);已有待定标记时按新增完整
|
|
68
69
|
* 消息数 ≥ tailMessageCount 决定执行,压缩区间截至触发点(新增消息成为新未压缩尾部,
|
|
69
|
-
*
|
|
70
|
-
* 失败保留待定,下个 pre-step
|
|
71
|
-
* (error =
|
|
70
|
+
* 延迟窗口内压力允许短暂超阈值)。执行成功(或无可行区间)后写待定失效标记;压缩
|
|
71
|
+
* 失败保留待定,下个 pre-step 直接重试执行。最终失败返回失败结果
|
|
72
|
+
* (error = 最后一次错误)。
|
|
72
73
|
*/
|
|
73
74
|
export declare function observePass(ctx: Context, agent: Agent, config: Readonly<PluginConfig>, waitCount: number, target: RoutedTarget, signal?: AbortSignal): Promise<CompressPassResult>;
|
|
74
75
|
/**
|
package/dist/compress.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compress.d.ts","sourceRoot":"","sources":["../src/compress.ts"],"names":[],"mappings":"AAkDA,OAAO,KAAK,EACV,KAAK,EAKL,OAAO,EACP,YAAY,EACZ,OAAO,EAIR,MAAM,YAAY,CAAC;AACpB,OAAO,EAAgB,KAAK,YAAY,EAAqC,MAAM,YAAY,CAAC;AAEhG;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,KAAK,CAAA;CAAE,GACjB;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AA6DD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAY1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,MAAM,GACtB;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,CAUA;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GACf;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAoB1D;AA0HD;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAuH7B;AAwED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,EAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,kBAAkB,CAAC,CAgO7B;AAED;;;;GAIG;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,kBAAkB,CAAC,CAwB7B"}
|
package/dist/config.d.ts
CHANGED
|
@@ -10,9 +10,7 @@ export type PluginConfig = {
|
|
|
10
10
|
rateLimitWaitMs: number;
|
|
11
11
|
/** 观察触发后延迟执行的等待完整消息条数(新增完整消息数达到该值才执行压缩;0 表示触发当轮立即执行)。 */
|
|
12
12
|
tailMessageCount: number;
|
|
13
|
-
/**
|
|
14
|
-
compressRetryCount: number;
|
|
15
|
-
/** 压缩输入是否携带被压缩消息的 reasoning 思考文本(true 时压缩请求不含 <reasoning> 参考条目,压缩提示词也省略其说明)。 */
|
|
13
|
+
/** 工具循环 getHistory 输出是否携带 reasoning 参考条目(true 时不携带,压缩指令也省略其说明行)。 */
|
|
16
14
|
compressSkipReasoning: boolean;
|
|
17
15
|
/** 是否启用自动压缩(观察/反思)。 */
|
|
18
16
|
omEnabled: boolean;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,kCAAkC;AAClC,MAAM,MAAM,YAAY,GAAG;IACzB,oCAAoC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAQA,kCAAkC;AAClC,MAAM,MAAM,YAAY,GAAG;IACzB,oCAAoC;IACpC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,sCAAsC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uBAAuB;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,iDAAiD;IACjD,KAAK,EAAE,OAAO,CAAC;IACf,sBAAsB;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,+CAA+C;IAC/C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,YAAY,CAYhD,CAAC;AAmCH,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,YAAY,CAAC,CAqBnE"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -14,6 +14,8 @@ export declare const HISTORY_TIP = "\u5F53\u524D\u5757\u662F\u5386\u53F2\u6D88\u
|
|
|
14
14
|
* 完整消息是摘要日志与 recall 共用的定位单位;首条 index 为 0,按会话顺序递增、全局稳定。
|
|
15
15
|
*/
|
|
16
16
|
export declare const COMPLETE_MESSAGE_DEFINITION = "`\u5B8C\u6574\u6D88\u606F`\u6307\u4E00\u6761`\u7528\u6237\u6D88\u606F`\u3001`\u7CFB\u7EDF\u6D88\u606F`\u3001`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u6216`\u5177\u6709result\u7684toolcall`\uFF1B\u9996\u6761 index \u4E3A 0\uFF0C\u6309\u4F1A\u8BDD\u987A\u5E8F\u9012\u589E\u3002";
|
|
17
|
+
/** 最终 <history> 块内文块首的格式说明注释(XML 注释,完整消息定义 + 条目标签语义)。 */
|
|
18
|
+
export declare const HISTORY_FORMAT_NOTE = "<!-- \u5B8C\u6574\u6D88\u606F\uFF1A`\u5B8C\u6574\u6D88\u606F`\u6307\u4E00\u6761`\u7528\u6237\u6D88\u606F`\u3001`\u7CFB\u7EDF\u6D88\u606F`\u3001`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u6216`\u5177\u6709result\u7684toolcall`\uFF1B\u9996\u6761 index \u4E3A 0\uFF0C\u6309\u4F1A\u8BDD\u987A\u5E8F\u9012\u589E\u3002 <TAG index=\"N\">\u8868\u793A\u5355\u6761\u5B8C\u6574\u6D88\u606F\uFF0C<TAG start=\"A\" end=\"B\"> \u8868\u793A\u8FDE\u7EED\u6A21\u5757\uFF0Cstart/end \u662F\u9996\u5C3E\u5B8C\u6574\u6D88\u606F\u7684 index\uFF1B<sys type=\"KIND\" index=\"N\"> \u8868\u793A\u88AB\u538B\u7F29\u7684\u7CFB\u7EDF\u6D88\u606F\uFF0C\u5757\u4E2D\u4E3A\u7A7A -->";
|
|
17
19
|
/** 旧日志压缩消息的宿主 checkpoint 标记 plugin 名(历史兼容识别用)。 */
|
|
18
20
|
export declare const COMPACT_CHECKPOINT_PLUGIN = "compact";
|
|
19
21
|
/**
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uCAAuC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,iDAAiD;AACjD,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,iDAAiD;AACjD,eAAO,MAAM,WAAW,iHAAuB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,sRACqC,CAAC;AAE9E,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,6DAA0B,CAAC;AAEhE,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACrD,OAAO,CAGT"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,uCAAuC;AACvC,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,iDAAiD;AACjD,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC,iDAAiD;AACjD,eAAO,MAAM,WAAW,iHAAuB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,sRACqC,CAAC;AAE9E,yDAAyD;AACzD,eAAO,MAAM,mBAAmB,2oBAA6K,CAAC;AAE9M,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,YAAY,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,6DAA0B,CAAC;AAEhE,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,GACrD,OAAO,CAGT"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,6BAA6B;AAC7B,eAAO,MAAM,IAAI,kBAAkB,CAAC;AAEpC,wDAAwD;AACxD,eAAO,MAAM,MAAM,UAA6C,CAAC;AAEjE,yCAAyC;AACzC,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAwD1D"}
|