dsh-plugin-om 0.0.25 → 0.0.27
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 +63 -57
- package/dist/compaction-log.d.ts +43 -0
- package/dist/compaction-log.d.ts.map +1 -0
- package/dist/compress.d.ts +33 -13
- package/dist/compress.d.ts.map +1 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +348 -90
- package/dist/summarize.d.ts +29 -11
- package/dist/summarize.d.ts.map +1 -1
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/summarize.d.ts
CHANGED
|
@@ -7,7 +7,9 @@
|
|
|
7
7
|
* 定位与校验(首个 <history> 开标签到最后一个 </history>;整块 XML 非法时按条目标签
|
|
8
8
|
* 模糊提取重建 / 无 reasoning / index 连续),失败按 maxAttempts 重试;每次尝试的
|
|
9
9
|
* 结果或报错始终写入日志(成功 info / 失败 warn,失败原因说明具体问题而非解析器
|
|
10
|
-
*
|
|
10
|
+
* 原始报错);全部耗尽返回失败结果(携带最后一次尝试的实际报错)。最终失败
|
|
11
|
+
* (含 signal 中止)时把每次尝试的完整提示词与模型原始输出经 compaction-log.ts
|
|
12
|
+
* 原样落盘为诊断子会话,sessionId 随失败结果向上传播进主会话日志。每次请求前
|
|
11
13
|
* 过全局限流等待门;token usage 归入主会话记录。
|
|
12
14
|
*/
|
|
13
15
|
import type { Agent, Context, Session, TokenUsage } from './types.ts';
|
|
@@ -15,30 +17,37 @@ import { type RoutedTarget } from './utils.ts';
|
|
|
15
17
|
/**
|
|
16
18
|
* 共享压缩提示词(观察/反思同一套):定义 history 块(模型消息 + index 的表达形式)、
|
|
17
19
|
* 完整消息定义、压缩要求、输出格式与数据源说明。
|
|
20
|
+
* skipReasoning=true(默认,与 compressSkipReasoning 默认一致)时压缩输入不含
|
|
21
|
+
* <reasoning> 参考条目,提示词相应省略 <reasoning> 的说明两行。
|
|
18
22
|
*/
|
|
19
|
-
export declare function buildHistoryPrompt(): string;
|
|
23
|
+
export declare function buildHistoryPrompt(skipReasoning?: boolean): string;
|
|
20
24
|
/**
|
|
21
25
|
* 渲染完整消息记录(观察输入):输出一个合法的 <history> 块——
|
|
22
|
-
* user → <user_message>(文本原样、图片注释)、sys → <sys> 空块、
|
|
23
|
-
*
|
|
26
|
+
* user → <user_message>(文本原样、图片注释)、sys → <sys> 空块、
|
|
27
|
+
* assistant/toolcall → <assistant>(原样文本);skipReasoning=false 时另把
|
|
28
|
+
* assistant 的 reasoning → <reasoning>(参考条目)。
|
|
24
29
|
* 文本经 XML 序列化自动转义;仅渲染 seqs 全部落在给定集合内的完整消息。
|
|
25
30
|
*/
|
|
26
|
-
export declare function renderMessages(session: Session, seqs: readonly number[]): string;
|
|
27
|
-
/** 摘要调用成功结果:文本 + 可选 token usage +
|
|
31
|
+
export declare function renderMessages(session: Session, seqs: readonly number[], skipReasoning?: boolean): string;
|
|
32
|
+
/** 摘要调用成功结果:文本 + 可选 token usage + 尝试次数 + 诊断子会话 id。 */
|
|
28
33
|
export type SummarySuccess = {
|
|
29
34
|
ok: true;
|
|
30
35
|
text: string;
|
|
31
36
|
usage?: TokenUsage;
|
|
32
37
|
/** 成功时的尝试次数(1 起;载荷层换算为重试次数 = 该值 - 1)。 */
|
|
33
38
|
attemptCount: number;
|
|
39
|
+
/** 本次成功尝试落盘的诊断子会话 id(落盘失败时缺失)。 */
|
|
40
|
+
diagnosticSessionId?: string;
|
|
34
41
|
};
|
|
35
|
-
/** 摘要调用失败结果:最后一次尝试的实际报错/具体问题 + 是否因 signal
|
|
42
|
+
/** 摘要调用失败结果:最后一次尝试的实际报错/具体问题 + 是否因 signal 中止 + 诊断子会话 id。 */
|
|
36
43
|
export type SummaryFailure = {
|
|
37
44
|
ok: false;
|
|
38
45
|
/** 最后一次尝试的实际报错(异常消息)或未通过校验的具体问题说明。 */
|
|
39
46
|
error: string;
|
|
40
47
|
/** 因 signal 中止(含限流等待被中止)而放弃;此时 error 为 COMPACTION_ABORTED_ERROR。 */
|
|
41
48
|
aborted: boolean;
|
|
49
|
+
/** 最后一次尝试落盘的诊断子会话 id(每次尝试各自落盘;该次未发出请求或落盘失败时缺失)。 */
|
|
50
|
+
diagnosticSessionId?: string;
|
|
42
51
|
};
|
|
43
52
|
/** 摘要调用结果(成功/失败二选一)。 */
|
|
44
53
|
export type SummaryOutcome = SummarySuccess | SummaryFailure;
|
|
@@ -46,6 +55,11 @@ export type SummaryOutcome = SummarySuccess | SummaryFailure;
|
|
|
46
55
|
export declare const MIN_HISTORY_LENGTH = 10;
|
|
47
56
|
/** 产出日志后插入首个 <history> 后的格式说明(XML 注释,完整消息定义 + 条目标签语义)。 */
|
|
48
57
|
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 -->";
|
|
58
|
+
/**
|
|
59
|
+
* 剥离 <history> 块内文块首的格式说明注释(HISTORY_FORMAT_NOTE 整体精确匹配,仅块首
|
|
60
|
+
* 一处);正文条目内出现的同名注释串不动。非块首或不匹配时原样返回。
|
|
61
|
+
*/
|
|
62
|
+
export declare function stripLeadingFormatNote(inner: string): string;
|
|
49
63
|
/** history 块内条目(单条 index 或模块 start/end)。 */
|
|
50
64
|
export type HistoryEntryRange = {
|
|
51
65
|
kind: 'user' | 'assistant' | 'sys';
|
|
@@ -54,7 +68,7 @@ export type HistoryEntryRange = {
|
|
|
54
68
|
end?: number;
|
|
55
69
|
};
|
|
56
70
|
/**
|
|
57
|
-
* 解析文本中全部 <history>
|
|
71
|
+
* 解析文本中全部 <history> 块内的条目(逐块解析提取,兼容多块拼接文本)。
|
|
58
72
|
* 非法块跳过;仅提取不校验顺序(连续性由 historyContinuity 校验)。
|
|
59
73
|
*/
|
|
60
74
|
export declare function parseHistoryEntries(text: string): HistoryEntryRange[];
|
|
@@ -93,9 +107,11 @@ export declare function extractSummaryLog(raw: string, expected?: SummaryValidat
|
|
|
93
107
|
export declare const SUMMARY_DEFAULT_MAX_ATTEMPTS = 11;
|
|
94
108
|
/**
|
|
95
109
|
* 直连 LLM 执行一次摘要(观察或反思),返回文本与可选 token usage。
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
110
|
+
* 每次实际发出的 LLM 调用(无论成功、校验不通过、非 stop 结束还是异常)完成后,
|
|
111
|
+
* 立即把该次尝试的完整提示词与模型原始输出原样落盘为诊断子会话(phase 标注观察
|
|
112
|
+
* 或反思),子会话 id 写入该次尝试的主会话日志;请求发出前被中止的尝试(无实际
|
|
113
|
+
* 调用)不落盘。失败(抛异常 / 空输出 / 非 stop 结束 / 校验不通过)记录日志并重试;
|
|
114
|
+
* 全部尝试耗尽返回失败结果(携带最后一次尝试的实际报错/具体问题与其诊断子会话 id)。
|
|
99
115
|
* signal 中止(含限流等待被中止)立即放弃并标记 aborted。每次请求发出前先过全局
|
|
100
116
|
* 限流等待门。
|
|
101
117
|
*/
|
|
@@ -103,5 +119,7 @@ export declare function runSummarySubagent(ctx: Context, agent: Agent, instructi
|
|
|
103
119
|
maxAttempts?: number;
|
|
104
120
|
expected?: SummaryValidationRange;
|
|
105
121
|
rateLimitWaitMs?: number;
|
|
122
|
+
/** 压缩 pass(诊断子会话 label 标注观察/反思;未提供时 label 回落「压缩」)。 */
|
|
123
|
+
phase?: 'observe' | 'reflect';
|
|
106
124
|
}): Promise<SummaryOutcome>;
|
|
107
125
|
//# sourceMappingURL=summarize.d.ts.map
|
package/dist/summarize.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../src/summarize.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -29,6 +29,27 @@ declare module '@deepseek-ai/dsh-session/types' {
|
|
|
29
29
|
/** 面向用户的简短说明。 */
|
|
30
30
|
message: string;
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* 观察压缩待定标记(log-only,不进 surface):净压力首次达到观察阈值时追加,
|
|
34
|
+
* 记录触发点完整消息 index,本次不压缩;延迟等待 tailMessageCount 条新完整消息后
|
|
35
|
+
* 执行压缩(区间截至触发点)。同一会话同时至多一条活跃待定标记(key 固定 'observe')。
|
|
36
|
+
*/
|
|
37
|
+
'om/observe-pending': {
|
|
38
|
+
/** 标记键(固定 'observe',与 om/observe-invalidate 配对)。 */
|
|
39
|
+
key: 'observe';
|
|
40
|
+
/** 触发点:追加时的最后一条完整消息 index。 */
|
|
41
|
+
triggerMessageIndex: number;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* 观察压缩待定失效标记(log-only,不进 surface):待定标记对应的压缩执行完成
|
|
45
|
+
* (成功提交或无可行区间)后追加,声明指定 pending 已失效、可重新触发观察。
|
|
46
|
+
*/
|
|
47
|
+
'om/observe-invalidate': {
|
|
48
|
+
/** 标记键(固定 'observe')。 */
|
|
49
|
+
key: 'observe';
|
|
50
|
+
/** 被失效的 om/observe-pending 事件 seq。 */
|
|
51
|
+
pendingSeq: number;
|
|
52
|
+
};
|
|
32
53
|
}
|
|
33
54
|
}
|
|
34
55
|
/** 官方包宿主类型再导出:插件 API 与工具签名统一从这里取型。 */
|
|
@@ -79,6 +100,15 @@ export type CompactionSummaryPayload = SessionEventMap['compaction/summary'] & {
|
|
|
79
100
|
/** 摘要重试次数(观察分块为各块重试之和,反思为尝试次数 - 1)。 */
|
|
80
101
|
attemptCount?: number;
|
|
81
102
|
};
|
|
103
|
+
/**
|
|
104
|
+
* 插件扩展的 compaction/end 载荷:宿主类型 + diagnosticSessionId(最后一次摘要尝试
|
|
105
|
+
* 无论成功或失败时落盘的诊断子会话 id)。宿主 append 不做 schema 剥离,扩展字段原样持久化;
|
|
106
|
+
* 客户端读取时按可选处理(UI 渲染行为不变)。
|
|
107
|
+
*/
|
|
108
|
+
export type CompactionEndPayload = SessionEventMap['compaction/end'] & {
|
|
109
|
+
/** 最后一次摘要尝试(成功或失败)落盘的诊断子会话 id(未发出请求或落盘失败时缺失)。 */
|
|
110
|
+
diagnosticSessionId?: string;
|
|
111
|
+
};
|
|
82
112
|
/**
|
|
83
113
|
* 插件扩展的 compaction/start 载荷:宿主类型 + phase(压缩 pass)。
|
|
84
114
|
* 客户端读取时按可选处理,缺失回落通用压缩中文案。
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|