dsh-plugin-om 0.0.21 → 0.0.22
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 +69 -159
- package/dist/client/OmCompactionCard.d.ts +5 -11
- package/dist/client/OmCompactionCard.d.ts.map +1 -1
- package/dist/client/definition.d.ts +17 -19
- package/dist/client/definition.d.ts.map +1 -1
- package/dist/client/format.d.ts +2 -2
- package/dist/client/format.d.ts.map +1 -1
- package/dist/client/index.d.ts +5 -11
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/locales.d.ts +2 -4
- package/dist/client/locales.d.ts.map +1 -1
- package/dist/client.js +17 -26
- package/dist/client.js.map +1 -1
- package/dist/compress.d.ts +15 -47
- package/dist/compress.d.ts.map +1 -1
- package/dist/config.d.ts +12 -21
- package/dist/config.d.ts.map +1 -1
- package/dist/constants.d.ts +10 -10
- package/dist/constants.d.ts.map +1 -1
- package/dist/embedding.d.ts +19 -36
- package/dist/embedding.d.ts.map +1 -1
- package/dist/index.d.ts +1 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +436 -722
- package/dist/json-schema.d.ts +4 -7
- package/dist/json-schema.d.ts.map +1 -1
- package/dist/log-index.d.ts +19 -12
- package/dist/log-index.d.ts.map +1 -1
- package/dist/logger.d.ts +3 -3
- package/dist/logger.d.ts.map +1 -1
- package/dist/model-download.d.ts +7 -11
- package/dist/model-download.d.ts.map +1 -1
- package/dist/rate-limit.d.ts +9 -14
- package/dist/rate-limit.d.ts.map +1 -1
- package/dist/recall-output.d.ts +37 -0
- package/dist/recall-output.d.ts.map +1 -0
- package/dist/recall.d.ts +7 -17
- package/dist/recall.d.ts.map +1 -1
- package/dist/semantic-recall.d.ts +10 -19
- package/dist/semantic-recall.d.ts.map +1 -1
- package/dist/summarize.d.ts +29 -46
- package/dist/summarize.d.ts.map +1 -1
- package/dist/types.d.ts +22 -35
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +9 -8
- package/dist/utils.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/json-schema.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* zod schema → 工具 wire 参数 JSON Schema
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* 为根级带 type:'object' 的标准 JSON Schema;工具的参数定义统一由 zod 的 toJSONSchema
|
|
6
|
-
* 生成,避免手写属性 map 与执行期解析 schema 双份定义漂移。剥除 $schema 元键与
|
|
7
|
-
* additionalProperties:未知键不在 wire 层拒绝,执行期仍由 zod 解析剥离。
|
|
2
|
+
* zod schema → 工具 wire 参数 JSON Schema 的转换工具。导出 parametersFromZod。
|
|
3
|
+
* 工具参数定义统一由 zod 的 toJSONSchema 生成(.describe() 描述透传),剥除
|
|
4
|
+
* $schema 元键与 additionalProperties(未知键在执行期由 zod 解析剥离)。
|
|
8
5
|
*/
|
|
9
6
|
import { type $ZodType } from 'zod/v4/core';
|
|
10
|
-
/** 由 zod schema 生成 wire 参数 JSON Schema(根 type:'object',含 properties/required
|
|
7
|
+
/** 由 zod schema 生成 wire 参数 JSON Schema(根 type:'object',含 properties/required)。 */
|
|
11
8
|
export declare function parametersFromZod<T extends $ZodType>(schema: T): Record<string, unknown>;
|
|
12
9
|
//# sourceMappingURL=json-schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,QAAQ,EAAgB,MAAM,aAAa,CAAC;AAE1D,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIxF"}
|
package/dist/log-index.d.ts
CHANGED
|
@@ -1,29 +1,36 @@
|
|
|
1
|
+
import type { ImageRefValue } from './recall-output.ts';
|
|
1
2
|
import type { CompleteMessage, MessageIndex, Session, SessionEvent } from './types.ts';
|
|
2
3
|
/** 工具结果裁剪器结构(tool-result-pruner;超大结果渲染前裁剪)。 */
|
|
3
4
|
export type PrunerLike = {
|
|
4
5
|
pruneContent?: (blocks: readonly unknown[]) => unknown[] | null;
|
|
5
6
|
};
|
|
6
|
-
/**
|
|
7
|
-
* 查找 seq 在表层节点序列中的下标(不在则返回 -1)。
|
|
8
|
-
* 表层节点按日志顺序排列,用于压缩边界定位与遮蔽范围计算。
|
|
9
|
-
*/
|
|
7
|
+
/** 查找 seq 在表层节点序列中的下标(不在则返回 -1)。 */
|
|
10
8
|
export declare function surfaceIndexOf(nodes: readonly number[], seq: number): number;
|
|
11
|
-
/** 提取一条消息事件的 message_id
|
|
9
|
+
/** 提取一条消息事件的 message_id(仅 user/assistant/tool-result 消息事件有)。 */
|
|
12
10
|
export declare function messageIdOfEvent(event: SessionEvent | undefined): string | undefined;
|
|
13
|
-
/** 消息索引:按日志顺序列出全部消息事件,并按 message_id
|
|
11
|
+
/** 消息索引:按日志顺序列出全部消息事件,并按 message_id 定位下标。 */
|
|
14
12
|
export declare function indexMessages(session: Session): MessageIndex;
|
|
15
13
|
/**
|
|
16
14
|
* 完整消息索引:按日志顺序把消息事件折叠为完整消息序列(四类,见文件头)。
|
|
17
15
|
* 工具调用结果按 source.callId 匹配其 tool-call 并入该条;未匹配的 result 独立成条(防御)。
|
|
18
|
-
*
|
|
19
|
-
* tool-call;索引对未闭合调用不设特殊处理。
|
|
16
|
+
* 本插件自产消息不占位;压缩在 agent/pre-step 触发(call-result 完备),不存在未闭合调用。
|
|
20
17
|
*/
|
|
21
18
|
export declare function indexCompleteMessages(session: Session): CompleteMessage[];
|
|
22
19
|
/**
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
* - assistant:仅文本块;
|
|
26
|
-
* - toolcall:调用块(工具名 + 参数)+ 结果文本(pruner 裁剪超大结果)。
|
|
20
|
+
* 递归收集内容块中的图片附件元数据(recall 输出保留图片用):
|
|
21
|
+
* image 块按附件元数据收集(字段不全则忽略);tool-result 块递归收集其 content。
|
|
27
22
|
*/
|
|
23
|
+
export declare function collectImageRefs(content: unknown, out: ImageRefValue[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* 渲染一条完整消息为「文本 + 图片」(recall / recall-semantic 输出用):
|
|
26
|
+
* user/sys 取消息原文,assistant 取文本块,toolcall 为调用块 + 结果文本
|
|
27
|
+
* (pruner 裁剪超大结果);同时收集该条完整消息携带的图片附件(含 tool-result 嵌套,
|
|
28
|
+
* pruner 裁剪掉的图片不收集)。
|
|
29
|
+
*/
|
|
30
|
+
export declare function renderCompleteMessageParts(session: Session, cm: CompleteMessage, pruner?: PrunerLike): {
|
|
31
|
+
text: string;
|
|
32
|
+
images: ImageRefValue[];
|
|
33
|
+
};
|
|
34
|
+
/** 渲染一条完整消息的文本(压缩输入与语义嵌入共用):renderCompleteMessageParts 的纯文本投影。 */
|
|
28
35
|
export declare function renderCompleteMessage(session: Session, cm: CompleteMessage, pruner?: PrunerLike): string;
|
|
29
36
|
//# sourceMappingURL=log-index.d.ts.map
|
package/dist/log-index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-index.d.ts","sourceRoot":"","sources":["../src/log-index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log-index.d.ts","sourceRoot":"","sources":["../src/log-index.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EACV,eAAe,EAEf,YAAY,EAEZ,OAAO,EACP,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB,+CAA+C;AAC/C,MAAM,MAAM,UAAU,GAAG;IAAE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,KAAK,OAAO,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAE7F,oCAAoC;AACpC,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMpF;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAoB5D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,EAAE,CA+DzE;AACD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,IAAI,CA+B7E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,eAAe,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CAuD3C;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,eAAe,EACnB,MAAM,CAAC,EAAE,UAAU,GAClB,MAAM,CAER"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { Context } from './types.ts';
|
|
2
|
-
/** 插件日志门面:step=步骤级(debug
|
|
2
|
+
/** 插件日志门面:step=步骤级(debug);info/warn 始终输出。 */
|
|
3
3
|
export type PluginLogger = {
|
|
4
|
-
/**
|
|
4
|
+
/** 步骤级日志(仅 debug 开启时输出)。 */
|
|
5
5
|
step(message: string): void;
|
|
6
6
|
/** 常规信息(始终输出)。 */
|
|
7
7
|
info(message: string): void;
|
|
8
|
-
/**
|
|
8
|
+
/** 警告/失败(始终输出)。 */
|
|
9
9
|
warn(message: string): void;
|
|
10
10
|
};
|
|
11
11
|
/** 构建插件日志门面:统一加 PLUGIN_LABEL 前缀,step 按 debug 开关过滤。 */
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,6CAA6C;AAC7C,MAAM,MAAM,YAAY,GAAG;IACzB,4BAA4B;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kBAAkB;IAClB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB;IACnB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,CAAC;AAEF,sDAAsD;AACtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,CAYrE"}
|
package/dist/model-download.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** 模型标识(models/ 下目录名 = 模型 id;transformers.js 加载时的模型名)。 */
|
|
2
2
|
export declare const EMBEDDING_MODEL_ID = "paraphrase-multilingual-MiniLM-L12-v2";
|
|
3
|
-
/**
|
|
3
|
+
/** 量化 ONNX 文件的相对路径(相对模型目录)。 */
|
|
4
4
|
export declare const ONNX_REL = "onnx/model_quantized.onnx";
|
|
5
|
-
/** 随 npm 包分发的小模型文件(相对模型目录;onnx
|
|
5
|
+
/** 随 npm 包分发的小模型文件(相对模型目录;onnx 二进制不随包分发)。 */
|
|
6
6
|
export declare const MODEL_SMALL_FILES: string[];
|
|
7
7
|
/** 下载返回结果。 */
|
|
8
8
|
export type DownloadResult = {
|
|
@@ -12,19 +12,16 @@ export type DownloadResult = {
|
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* HuggingFace 原始文件 URL(resolve 会 302 到 CDN,fetch 自动跟随重定向)。
|
|
15
|
-
* base
|
|
15
|
+
* base 可用环境变量 HF_ENDPOINT 覆盖(直连受限时改用镜像,如 https://hf-mirror.com)。
|
|
16
16
|
*/
|
|
17
17
|
export declare function modelSourceUrl(id?: string, rel?: string, base?: string): string;
|
|
18
|
-
/** 本地目标文件绝对路径(<modelDir>/<rel
|
|
18
|
+
/** 本地目标文件绝对路径(<modelDir>/<rel>)。 */
|
|
19
19
|
export declare function modelTargetPath(modelDir: string, rel?: string): string;
|
|
20
|
-
/**
|
|
21
|
-
* 是否需要下载(纯函数,供测试)。
|
|
22
|
-
* force 强制下载;否则目标已存在即跳过。
|
|
23
|
-
*/
|
|
20
|
+
/** 是否需要下载:force 强制;否则目标已存在即跳过。 */
|
|
24
21
|
export declare function needsDownload(target: string, { force }?: {
|
|
25
22
|
force?: boolean;
|
|
26
23
|
}): boolean;
|
|
27
|
-
/** fetch 最小可用接口(全局 fetch
|
|
24
|
+
/** fetch 最小可用接口(全局 fetch 满足;测试注入替身)。 */
|
|
28
25
|
export type ModelFetch = (url: string) => Promise<{
|
|
29
26
|
ok: boolean;
|
|
30
27
|
status: number;
|
|
@@ -33,8 +30,7 @@ export type ModelFetch = (url: string) => Promise<{
|
|
|
33
30
|
}>;
|
|
34
31
|
/**
|
|
35
32
|
* 下载模型到 <modelDir>/onnx/model_quantized.onnx。
|
|
36
|
-
* 开始/结束(含跳过)经 log
|
|
37
|
-
* 并在错误消息中附带镜像建议(直连受限时设置 HF_ENDPOINT=https://hf-mirror.com)。
|
|
33
|
+
* 开始/结束(含跳过)经 log 回调输出;失败时清理临时文件并在错误消息中附带镜像建议。
|
|
38
34
|
* 可注入 fetchImpl / log(供测试)。
|
|
39
35
|
*/
|
|
40
36
|
export declare function downloadModel(modelDir: string, { force, fetchImpl, log, }?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../src/model-download.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-download.d.ts","sourceRoot":"","sources":["../src/model-download.ts"],"names":[],"mappings":"AAYA,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,0CAA0C,CAAC;AAE1E,+BAA+B;AAC/B,eAAO,MAAM,QAAQ,8BAA8B,CAAC;AAEpD,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,UAK7B,CAAC;AAEF,cAAc;AACd,MAAM,MAAM,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,EAAE,GAAE,MAA2B,EAC/B,GAAG,GAAE,MAAiB,EACtB,IAAI,GAAE,MAA4D,GACjE,MAAM,CAER;AAED,oCAAoC;AACpC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,GAAE,MAAiB,GAAG,MAAM,CAEhF;AAED,kCAAkC;AAClC,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,OAAO,CAQT;AAED,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAChD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;CACrC,CAAC,CAAC;AAEH;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,EACE,KAAa,EACb,SAAiB,EACjB,GAAiB,GAClB,GAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,GACL,OAAO,CAAC,cAAc,CAAC,CA4BzB"}
|
package/dist/rate-limit.d.ts
CHANGED
|
@@ -1,24 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 全局限流门(插件进程级共享状态):任一摘要请求遇 429
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* 冷却期(循环等待直到通过或中止)。
|
|
2
|
+
* 全局限流门(插件进程级共享状态):任一摘要请求遇 429 后进入冷却期,
|
|
3
|
+
* 此后所有摘要请求发出前先等待到「最近一次 429 + rateLimitWaitMs」之后。
|
|
4
|
+
* 等待期间 signal 中止则立即放弃;等待期间的新 429 顺延冷却期。
|
|
5
|
+
* 导出 isRateLimitError / noteRateLimit / gateRateLimit / RATE_LIMIT_WAIT_MS_DEFAULT /
|
|
6
|
+
* resetRateLimitGate。
|
|
8
7
|
*/
|
|
9
|
-
/** 默认限流冷却时长(ms):调用方未传 rateLimitWaitMs
|
|
8
|
+
/** 默认限流冷却时长(ms):调用方未传 rateLimitWaitMs 时的兜底值。 */
|
|
10
9
|
export declare const RATE_LIMIT_WAIT_MS_DEFAULT = 60000;
|
|
11
|
-
/**
|
|
12
|
-
* 判定错误信息是否为 429 限流:匹配 429(独立数字)或 rate limit(空格/连字符/
|
|
13
|
-
* 下划线分隔与 camelCase 均可),大小写不敏感。
|
|
14
|
-
*/
|
|
10
|
+
/** 判定错误信息是否为 429 限流(匹配 429 或 rate limit,大小写不敏感)。 */
|
|
15
11
|
export declare function isRateLimitError(message: string): boolean;
|
|
16
12
|
/** 记录一次 429 限流:把冷却期起点更新为当前时间。 */
|
|
17
13
|
export declare function noteRateLimit(): void;
|
|
18
14
|
/**
|
|
19
|
-
* 限流等待门:处于 429
|
|
20
|
-
*
|
|
21
|
-
* 立即放行。waitMs ≤ 0 视为不限流。
|
|
15
|
+
* 限流等待门:处于 429 冷却期时等待到期限再放行(返回 true);
|
|
16
|
+
* 等待期间 signal 中止返回 false。未遇过限流或冷却期已过立即放行。waitMs ≤ 0 视为不限流。
|
|
22
17
|
*/
|
|
23
18
|
export declare function gateRateLimit(waitMs: number, signal?: AbortSignal): Promise<boolean>;
|
|
24
19
|
/** 重置限流门状态(仅测试使用:用例间隔离)。 */
|
package/dist/rate-limit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../src/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,gDAAgD;AAChD,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAEhD,oDAAoD;AACpD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,iCAAiC;AACjC,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAyBD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAS1F;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* recall / recall-semantic 共享输出契约:输出值为固定形态 { text, images }。
|
|
3
|
+
* text 为完整消息的文本内容(带图消息附图片标注行),images 为图片附件元数据
|
|
4
|
+
* (按 attachmentId 引用,不含字节)。导出 ImageRefValue / RecallOutputValue /
|
|
5
|
+
* RECALL_OUTPUT_SCHEMA / textOnly / imageNote / renderRecallOutput。
|
|
6
|
+
*/
|
|
7
|
+
import type { ContentBlock } from '@deepseek-ai/dsh-llm';
|
|
8
|
+
import type { JsonSchemaNode } from '@deepseek-ai/dsh-tools';
|
|
9
|
+
/** 一张图片的持久元数据(与宿主 ImageAttachmentRef 同构的无损 JSON 形态)。 */
|
|
10
|
+
export type ImageRefValue = {
|
|
11
|
+
/** attachment 服务的持久图片 id(宿主按此解析图片字节)。 */
|
|
12
|
+
attachmentId: string;
|
|
13
|
+
/** 图片媒体类型(image/png 等)。 */
|
|
14
|
+
mediaType: string;
|
|
15
|
+
/** 字节数。 */
|
|
16
|
+
bytes: number;
|
|
17
|
+
/** 固有显示宽度(px)。 */
|
|
18
|
+
width: number;
|
|
19
|
+
/** 固有显示高度(px)。 */
|
|
20
|
+
height: number;
|
|
21
|
+
/** 原始文件名(可选)。 */
|
|
22
|
+
name?: string;
|
|
23
|
+
};
|
|
24
|
+
/** recall / recall-semantic 的输出值:text 为文本部分,images 按出现顺序。 */
|
|
25
|
+
export type RecallOutputValue = {
|
|
26
|
+
text: string;
|
|
27
|
+
images: ImageRefValue[];
|
|
28
|
+
};
|
|
29
|
+
/** 纯文本结果(无图片)的便捷构造。 */
|
|
30
|
+
export declare function textOnly(text: string): RecallOutputValue;
|
|
31
|
+
/** 一张图片的文本标注行:[图片附件:name(mediaType W×H,N bytes)]。 */
|
|
32
|
+
export declare function imageNote(ref: ImageRefValue): string;
|
|
33
|
+
/** 输出值 wire schema:宿主按此校验 execute 返回值。 */
|
|
34
|
+
export declare const RECALL_OUTPUT_SCHEMA: JsonSchemaNode;
|
|
35
|
+
/** 把输出值投影为模型内容:text 块在前,images 逐个投影为 image 块。 */
|
|
36
|
+
export declare function renderRecallOutput(value: RecallOutputValue): ContentBlock[];
|
|
37
|
+
//# sourceMappingURL=recall-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall-output.d.ts","sourceRoot":"","sources":["../src/recall-output.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,wDAAwD;AACxD,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AAEF,uBAAuB;AACvB,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAExD;AAED,qDAAqD;AACrD,wBAAgB,SAAS,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAGpD;AAED,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,EAAE,cA4BlC,CAAC;AAEF,iDAAiD;AACjD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,EAAE,CAY3E"}
|
package/dist/recall.d.ts
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* recall
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* recall 自身不设输出上限:超大的工具结果由 tool-result-pruner 裁剪(pruneContent),
|
|
7
|
-
* 输出 token 由 pruner 配置控制。
|
|
8
|
-
*
|
|
9
|
-
* 参数由 zod schema(recallArgsSchema)统一描述:wire 参数 JSON Schema(根 type:'object',
|
|
10
|
-
* 各字段描述来自 .describe())直接发给模型,execute 入口再做运行时校验(start 必填;
|
|
11
|
-
* end/offset 至少提供一个;非法参数抛出可读错误)。
|
|
2
|
+
* recall 工具:按完整消息 index 区间回看原始会话(含被压缩内容)。
|
|
3
|
+
* 导出 recallArgsSchema / RecallArgs / parseRecallArgs / buildRecallTool。
|
|
4
|
+
* 输出值为 { text, images }(契约见 recall-output.ts);recall 自身不设输出上限,
|
|
5
|
+
* 超大工具结果由 tool-result-pruner 裁剪。
|
|
12
6
|
*/
|
|
13
7
|
import { z } from 'zod';
|
|
14
8
|
import type { ToolDefinition } from './types.ts';
|
|
15
9
|
/**
|
|
16
|
-
* recall 工具参数 schema:start
|
|
17
|
-
*
|
|
18
|
-
* 各字段描述经 .describe() 透传到 wire JSON Schema(生成见 json-schema.ts)。
|
|
10
|
+
* recall 工具参数 schema:start 必填;end 与 offset 至少提供一个(同时给出时 end 优先)。
|
|
11
|
+
* 各字段描述经 .describe() 透传到 wire JSON Schema。
|
|
19
12
|
*/
|
|
20
13
|
export declare const recallArgsSchema: z.ZodObject<{
|
|
21
14
|
start: z.ZodNumber;
|
|
@@ -24,10 +17,7 @@ export declare const recallArgsSchema: z.ZodObject<{
|
|
|
24
17
|
}, z.core.$strip>;
|
|
25
18
|
/** recall 工具调用参数(由 recallArgsSchema 推断)。 */
|
|
26
19
|
export type RecallArgs = z.infer<typeof recallArgsSchema>;
|
|
27
|
-
/**
|
|
28
|
-
* 解析并校验 recall 调用参数:校验失败时抛出首个校验问题的可读消息
|
|
29
|
-
* (普通 Error 而非 ZodError,兼容 SDK 展示)。
|
|
30
|
-
*/
|
|
20
|
+
/** 解析并校验 recall 调用参数:失败时抛出首个校验问题的可读消息(普通 Error,兼容 SDK 展示)。 */
|
|
31
21
|
export declare function parseRecallArgs(raw: unknown): RecallArgs;
|
|
32
22
|
/**
|
|
33
23
|
* 构建 recall 工具定义:按 start/end/offset 定位完整消息区间并渲染原始内容(标 index)。
|
package/dist/recall.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"recall.d.ts","sourceRoot":"","sources":["../src/recall.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,YAAY,CAAC;AAGjE;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;iBAYzB,CAAC;AAEL,4CAA4C;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,8DAA8D;AAC9D,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAUxD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,GAAG,cAAc,CAoEzE"}
|
|
@@ -1,19 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* recall-semantic 工具:按自然语言 query
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* wire 参数 JSON Schema 由本 schema 经 toJSONSchema 生成(各字段描述来自 .describe(),
|
|
10
|
-
* 见 json-schema.ts)。
|
|
11
|
-
* - 区间缺省(start 未提供)→ 检索全部消息;区间不合法(start/end 越界等)→
|
|
12
|
-
* 不报错,回退全量检索并在输出中明确告知(模型可见)。
|
|
13
|
-
* - 向量:本地 ONNX embedding(embedding.ts,懒加载 + 批量);相似度 = cosine。
|
|
14
|
-
* - 输出:命中消息的 index/类型(toolcall 附调用 id)+ 完整渲染文本 + 匹配说明(相似度、
|
|
15
|
-
* 命中的关键词);超大结果由 tool-result-pruner 裁剪(同 recall)。
|
|
16
|
-
* - 仅主会话可用(subagent 拒绝,与 recall 一致)。
|
|
2
|
+
* recall-semantic 工具:按自然语言 query 对会话全部完整消息(含被压缩/遮蔽的)做
|
|
3
|
+
* 语义检索,返回最匹配的完整消息与匹配说明。
|
|
4
|
+
* 导出 semanticRecallArgsSchema / SemanticRecallArgs / parseSemanticRecallArgs /
|
|
5
|
+
* resolveSemanticRange / tokenize / matchExplanation / buildSemanticRecallTool。
|
|
6
|
+
* 向量为本地 ONNX 嵌入(cosine 相似度);只匹配文本,纯图片消息不进候选池;
|
|
7
|
+
* 区间缺省检索全部、区间不合法回退全量并在输出中告知;输出契约同 recall
|
|
8
|
+
* ({ text, images },超大结果由 tool-result-pruner 裁剪);仅主会话可用。
|
|
17
9
|
*/
|
|
18
10
|
import { z } from 'zod';
|
|
19
11
|
import { type EmbedFn, type ModelStatus } from './embedding.ts';
|
|
@@ -38,16 +30,15 @@ export type RangeResult = {
|
|
|
38
30
|
};
|
|
39
31
|
/**
|
|
40
32
|
* 解析检索区间(完整消息 index,含端点)。
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* start/end 越界或区间为空 → fallback=true(全量 + 提示)。
|
|
33
|
+
* start 未提供 → 全量(fallback=false);start/end 越界或区间为空 → fallback=true
|
|
34
|
+
* (回退全量并在输出中告知)。
|
|
44
35
|
*/
|
|
45
36
|
export declare function resolveSemanticRange(total: number, args: Pick<SemanticRecallArgs, 'start' | 'end' | 'offset'>): RangeResult;
|
|
46
37
|
/** 简易分词:按非字母数字切分为小写词元(匹配要点用,非检索核心)。 */
|
|
47
38
|
export declare function tokenize(text: string): Set<string>;
|
|
48
39
|
/** 命中消息的匹配说明行:相似度 + 与 query 共有的关键词(最多 8 个)。 */
|
|
49
40
|
export declare function matchExplanation(query: string, text: string, score: number): string;
|
|
50
|
-
/**
|
|
41
|
+
/** 模型未就绪时返回给模型的文案(下载完成后直接再次调用即可)。 */
|
|
51
42
|
export declare const SEMANTIC_MODEL_NOT_READY_MESSAGE = "\u8BED\u4E49\u68C0\u7D22\u6682\u4E0D\u53EF\u7528\uFF0C\u672C\u5730\u5411\u91CF\u6A21\u578B\u5C1A\u672A\u5C31\u7EEA\u3002";
|
|
52
43
|
/** 构建 recall-semantic 工具定义(embedder/modelStatus 可注入,测试传替身;缺省用本地模型)。 */
|
|
53
44
|
export declare function buildSemanticRecallTool(options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semantic-recall.d.ts","sourceRoot":"","sources":["../src/semantic-recall.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"semantic-recall.d.ts","sourceRoot":"","sources":["../src/semantic-recall.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,KAAK,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAgB/F,OAAO,KAAK,EAAmB,cAAc,EAAkB,MAAM,YAAY,CAAC;AAGlF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB;;;;;;iBA6BjC,CAAC;AAEL,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,+CAA+C;AAC/C,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,CAUxE;AAED,6DAA6D;AAC7D,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAExE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,GACzD,WAAW,CAqBb;AAED,uCAAuC;AACvC,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAMlD;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUnF;AAED,qCAAqC;AACrC,eAAO,MAAM,gCAAgC,6HAAyB,CAAC;AAEvE,uEAAuE;AACvE,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACxD,GAAG,cAAc,CA+EjB"}
|
package/dist/summarize.d.ts
CHANGED
|
@@ -1,46 +1,36 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* <sys type="KIND" index="N"> 空块(内容不进入输入)、<reasoning> 参考条目
|
|
11
|
-
* (产物中没有)、assistant 文本与 toolcall&result 原样。
|
|
12
|
-
* 输出经 extractSummaryLog 校验:合法 <history> 块、不含 <reasoning>、index/start/end 连续
|
|
13
|
-
* (与预期覆盖区间一致),失败按 config.compressRetryCount 重试。
|
|
14
|
-
* token usage 从流式响应的 usage chunk 提取,归入主会话记录。仅主会话生效(index.ts 守卫)。
|
|
2
|
+
* 摘要调用:共享压缩提示词、<history> 块渲染与输出校验、LLM 摘要执行。
|
|
3
|
+
* 导出 buildHistoryPrompt / renderMessages / extractSummaryLog / parseHistoryEntries /
|
|
4
|
+
* historyContinuity / runSummarySubagent 及相关类型与常量。
|
|
5
|
+
* 摘要以新会话方式直连 ctx.llm.stream():指令(共享提示词)作为 system、被压缩消息
|
|
6
|
+
* (renderMessages 渲染为合法 <history> 块)作为 user 输入;输出经 extractSummaryLog
|
|
7
|
+
* 定位与校验(首个 <history> 开标签到最后一个 </history>;整块 XML 非法时按条目标签
|
|
8
|
+
* 模糊提取重建 / 无 reasoning / index 连续),失败按 maxAttempts 重试;每次请求前
|
|
9
|
+
* 过全局限流等待门;token usage 归入主会话记录。
|
|
15
10
|
*/
|
|
16
11
|
import type { Agent, Context, Session, TokenUsage } from './types.ts';
|
|
17
12
|
import { type RoutedTarget } from './utils.ts';
|
|
18
13
|
/**
|
|
19
14
|
* 共享压缩提示词(观察/反思同一套):定义 history 块(模型消息 + index 的表达形式)、
|
|
20
|
-
*
|
|
21
|
-
* index
|
|
22
|
-
* mode 控制【摘要粒度】:无参为通用提示词(反思调用);'summary' 要求简单摘要(较早分块);
|
|
23
|
-
* 'detailed' 要求越往后越细(最后一块保留细节)。观察分块时除最后一块外均用 'summary'。
|
|
15
|
+
* 完整消息定义、压缩要求(完整保留用户/系统消息、reasoning 仅参考、关联 assistant
|
|
16
|
+
* 合并为模块、index 连续)、输出格式与数据源说明。
|
|
24
17
|
*/
|
|
25
|
-
export declare function buildHistoryPrompt(
|
|
18
|
+
export declare function buildHistoryPrompt(): string;
|
|
26
19
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* - assistant / toolcall → <assistant index="N">(模型输出文本 / toolcall&result 原样)。
|
|
32
|
-
* 文本经 XML 序列化自动转义(用户输入 / 文本 / reasoning 中的特殊字符不破坏 XML 合法性)。
|
|
33
|
-
* 仅渲染 seqs 全部落在给定集合内的完整消息(本插件自产消息天然不占位)。
|
|
20
|
+
* 渲染完整消息记录(观察输入):输出一个合法的 <history> 块——
|
|
21
|
+
* user → <user_message>(文本原样、图片注释)、sys → <sys> 空块、assistant 的
|
|
22
|
+
* reasoning → <reasoning>(参考条目)、assistant/toolcall → <assistant>(原样文本)。
|
|
23
|
+
* 文本经 XML 序列化自动转义;仅渲染 seqs 全部落在给定集合内的完整消息。
|
|
34
24
|
*/
|
|
35
25
|
export declare function renderMessages(session: Session, seqs: readonly number[]): string;
|
|
36
|
-
/** 摘要调用结果:文本 + 可选 token usage
|
|
26
|
+
/** 摘要调用结果:文本 + 可选 token usage + 成功时的尝试次数。 */
|
|
37
27
|
export type SummarySubagentResult = {
|
|
38
28
|
text: string;
|
|
39
29
|
usage?: TokenUsage;
|
|
40
|
-
/** 成功时的尝试次数(1
|
|
30
|
+
/** 成功时的尝试次数(1 起;载荷层换算为重试次数 = 该值 - 1)。 */
|
|
41
31
|
attemptCount: number;
|
|
42
32
|
};
|
|
43
|
-
/** 日志最小有效长度:<history>
|
|
33
|
+
/** 日志最小有效长度:<history> 中间内容小于该长度视为不合法。 */
|
|
44
34
|
export declare const MIN_HISTORY_LENGTH = 10;
|
|
45
35
|
/** 产出日志后插入首个 <history> 后的格式说明(XML 注释,完整消息定义 + 条目标签语义)。 */
|
|
46
36
|
export declare const HISTORY_FORMAT_NOTE = "<!-- \u5B8C\u6574\u6D88\u606F\uFF1A`\u5B8C\u6574\u6D88\u606F`\u88AB\u5B9A\u4E49\u4E3A`\u7528\u6237\u6D88\u606F`\uFF0C`\u7CFB\u7EDF\u6D88\u606F`\uFF0C`\u6A21\u578B\u8F93\u51FA\u6587\u672C`\u548C`\u5177\u6709result\u7684toolcall`\u7684\u96C6\u5408\u3002\u9996\u6761`\u5B8C\u6574\u6D88\u606F`\u7684index\u662F0\uFF0C\u540E\u7EED\u7684index\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 -->";
|
|
@@ -53,13 +43,12 @@ export type HistoryEntryRange = {
|
|
|
53
43
|
};
|
|
54
44
|
/**
|
|
55
45
|
* 解析文本中全部 <history> 块内的条目(反思输入为多个块拼接:逐块解析提取)。
|
|
56
|
-
*
|
|
46
|
+
* 非法块跳过;仅提取不校验顺序(连续性由 historyContinuity 校验)。
|
|
57
47
|
*/
|
|
58
48
|
export declare function parseHistoryEntries(text: string): HistoryEntryRange[];
|
|
59
49
|
/**
|
|
60
|
-
* 校验条目 index/start/end
|
|
61
|
-
*
|
|
62
|
-
* 空条目 / 非法范围(start > end) / 跳号、重叠或乱序 → 返回 null。
|
|
50
|
+
* 校验条目 index/start/end 连续性:每条给出覆盖区间,按出现顺序相邻条目必须首尾相接,
|
|
51
|
+
* 返回整体覆盖区间;空条目 / 非法范围 / 跳号、重叠或乱序 → 返回 null。
|
|
63
52
|
*/
|
|
64
53
|
export declare function historyContinuity(entries: HistoryEntryRange[]): {
|
|
65
54
|
start: number;
|
|
@@ -72,26 +61,20 @@ export type SummaryValidationRange = {
|
|
|
72
61
|
};
|
|
73
62
|
/**
|
|
74
63
|
* 从 AI 摘要输出中提取合法日志(不信任 AI 的总结结果):
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
* - index/start/end 连续性校验(historyContinuity + 与 expected 覆盖区间一致);
|
|
81
|
-
* - 产出后把首个开标签改写为带 tip 属性的版本(对 AI 的提醒),并在其后插入
|
|
82
|
-
* 格式说明注释(HISTORY_FORMAT_NOTE,块顶)。
|
|
64
|
+
* 取首个 <history> 开标签(允许带属性)到最后一个 </history> 切为候选块,
|
|
65
|
+
* 找不到或内容过短返回 null;候选块经 XML 结构校验,整块非法时按条目模糊
|
|
66
|
+
* 提取重建为合法块(不要求模型输出整体合法 XML);随后统一校验:无 reasoning、
|
|
67
|
+
* index 连续且与 expected 覆盖区间一致;通过后统一改写为带 tip 属性的开标签
|
|
68
|
+
* 并在块顶插入格式说明注释。
|
|
83
69
|
*/
|
|
84
70
|
export declare function extractSummaryLog(raw: string, expected?: SummaryValidationRange): string | null;
|
|
85
71
|
/** 摘要调用总尝试次数兜底(无 options.maxAttempts 时;实际由 config.compressRetryCount + 1 传入)。 */
|
|
86
72
|
export declare const SUMMARY_DEFAULT_MAX_ATTEMPTS = 11;
|
|
87
73
|
/**
|
|
88
74
|
* 直连 LLM 执行一次摘要(观察或反思),返回文本与可选 token usage。
|
|
89
|
-
* 失败(抛异常 / 空输出 / 非 stop 结束 /
|
|
90
|
-
* options.maxAttempts
|
|
91
|
-
*
|
|
92
|
-
* 每次请求发出前先过全局限流等待门(gateRateLimit):任一请求遇 429 后,后续所有
|
|
93
|
-
* 摘要请求(含并行中的其他调用方)在「最近一次 429 + options.rateLimitWaitMs」之前
|
|
94
|
-
* 不会发出(缺省 RATE_LIMIT_WAIT_MS_DEFAULT)。
|
|
75
|
+
* 失败(抛异常 / 空输出 / 非 stop 结束 / 校验不通过)均记录日志并重试,最多尝试
|
|
76
|
+
* options.maxAttempts 次;全部失败返回 null(不产生任何日志变更)。每次请求发出前
|
|
77
|
+
* 先过全局限流等待门。
|
|
95
78
|
*/
|
|
96
79
|
export declare function runSummarySubagent(ctx: Context, agent: Agent, instruction: string, contextText: string | undefined, maxTokens: number, target: RoutedTarget, debug: boolean, signal?: AbortSignal, options?: {
|
|
97
80
|
maxAttempts?: number;
|
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":"AAAA;;;;;;;;;GASG;AAmBH,OAAO,KAAK,EAAE,KAAK,EAAmB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAe,MAAM,YAAY,CAAC;AACpG,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAuC3C;AAkCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAsDhF;AAED,6CAA6C;AAC7C,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AA2EF,yCAAyC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,yrBAA6K,CAAC;AAE9M,4CAA4C;AAC5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAoEF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CASrE;AACD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAAE,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBvC;AAED,sCAAsC;AACtC,MAAM,MAAM,sBAAsB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA+EtE;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI,CAsB/F;AAED,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAK/C;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9F,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAiFvC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,31 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* ctx.on / ctx.get 等 mixin 方法由 cordis 自身声明,无需本地补充。
|
|
2
|
+
* 共享类型:宿主类型再导出(type-only,编译期擦除)+ 插件领域类型。
|
|
3
|
+
* 导出官方包宿主类型(Context/Agent/Session 等)、PluginConfig、
|
|
4
|
+
* MessageNode/MessageIndex/CompleteMessage(完整消息索引)与 compaction 载荷扩展。
|
|
5
|
+
* 各 dsh-* 包通过 declare module 增强 Context/Events,使 ctx.tools 等获得宿主一致类型。
|
|
7
6
|
*/
|
|
8
7
|
import type { Context, EventOptions, Events } from '@deepseek-ai/cordis';
|
|
9
8
|
import type { Agent } from '@deepseek-ai/dsh-agent';
|
|
10
9
|
import type { CompactionId } from '@deepseek-ai/dsh-compaction';
|
|
11
10
|
import type { ToolResultPruner } from '@deepseek-ai/dsh-compaction-tool-result-pruner';
|
|
12
|
-
import type { Message, TokenUsage, UserMessage } from '@deepseek-ai/dsh-llm';
|
|
11
|
+
import type { ContentBlock, ImageBlock, Message, TokenUsage, UserMessage } from '@deepseek-ai/dsh-llm';
|
|
13
12
|
import type { Session, SessionEvent, SessionEventMap } from '@deepseek-ai/dsh-session';
|
|
14
13
|
import type { SubagentResult, SubagentRun, SubagentStartRequest } from '@deepseek-ai/dsh-subagent';
|
|
15
14
|
import type { SystemPrompt } from '@deepseek-ai/dsh-system-prompt';
|
|
16
15
|
import type { TokenMeter } from '@deepseek-ai/dsh-token-meter';
|
|
17
|
-
import type { ToolDefinition, ToolRunContext } from '@deepseek-ai/dsh-tools';
|
|
18
|
-
/** 插件配置类型(来自 config.ts
|
|
16
|
+
import type { JsonSchemaNode, ToolDefinition, ToolRunContext } from '@deepseek-ai/dsh-tools';
|
|
17
|
+
/** 插件配置类型(来自 config.ts)。 */
|
|
19
18
|
export type { PluginConfig } from './config.ts';
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*/
|
|
24
|
-
export type { Agent, CompactionId, Context, EventOptions, Events, Message, Session, SessionEvent, SessionEventMap, SubagentResult, SubagentRun, SubagentStartRequest, SystemPrompt, TokenMeter, TokenUsage, ToolDefinition, ToolResultPruner, ToolRunContext, UserMessage, };
|
|
25
|
-
/**
|
|
26
|
-
* 一条消息事件(user/assistant/tool-result),带稳定 message_id;
|
|
27
|
-
* 消息级索引(indexMessages)的节点,按 message_id 定位消息序列下标。
|
|
28
|
-
*/
|
|
19
|
+
/** 官方包宿主类型再导出:插件 API 与工具签名统一从这里取型。 */
|
|
20
|
+
export type { Agent, CompactionId, ContentBlock, Context, EventOptions, Events, ImageBlock, JsonSchemaNode, Message, Session, SessionEvent, SessionEventMap, SubagentResult, SubagentRun, SubagentStartRequest, SystemPrompt, TokenMeter, TokenUsage, ToolDefinition, ToolResultPruner, ToolRunContext, UserMessage, };
|
|
21
|
+
/** 一条消息事件(user/assistant/tool-result),带稳定 message_id;消息级索引的节点。 */
|
|
29
22
|
export type MessageNode = {
|
|
30
23
|
/** 事件在日志中的 seq。 */
|
|
31
24
|
seq: number;
|
|
@@ -43,43 +36,37 @@ export type MessageIndex = {
|
|
|
43
36
|
};
|
|
44
37
|
/**
|
|
45
38
|
* 一条完整消息:摘要日志与 recall 共用的定位单位,分四类——
|
|
46
|
-
* user
|
|
47
|
-
* sys(系统消息,user_message 中其余 source.kind 的部分,如宿主注入的上下文)、
|
|
39
|
+
* user(用户消息)、sys(系统消息,user_message 中非 user 来源的部分)、
|
|
48
40
|
* assistant(模型输出文本)、toolcall(单个工具调用及其结果)。
|
|
49
|
-
* index 从 0
|
|
50
|
-
*
|
|
41
|
+
* index 从 0 起、按日志顺序递增、只追加不重排(会话内全局稳定);
|
|
42
|
+
* 本插件自产的压缩日志消息不占位。
|
|
51
43
|
*/
|
|
52
44
|
export type CompleteMessage = {
|
|
53
45
|
/** 完整消息序号(0 起,全局稳定)。 */
|
|
54
46
|
index: number;
|
|
55
|
-
/**
|
|
56
|
-
* 类别:user=用户消息;sys=系统消息(压缩日志中以 <sys type="KIND" index="N"> 空块
|
|
57
|
-
* 表示);assistant=模型输出文本;toolcall=单个工具调用及其结果。
|
|
58
|
-
*/
|
|
47
|
+
/** 类别:user=用户消息;sys=系统消息;assistant=模型输出文本;toolcall=工具调用及其结果。 */
|
|
59
48
|
type: 'user' | 'sys' | 'assistant' | 'toolcall';
|
|
60
|
-
/** 系统消息的 source.kind(仅 sys
|
|
49
|
+
/** 系统消息的 source.kind(仅 sys 类)。 */
|
|
61
50
|
kind?: string;
|
|
62
51
|
/** 关联的消息事件 seq(user/sys/assistant=1 个;toolcall=assistant 消息 + 结果)。 */
|
|
63
52
|
seqs: number[];
|
|
64
|
-
/** 工具调用 id(仅 toolcall
|
|
53
|
+
/** 工具调用 id(仅 toolcall 类)。 */
|
|
65
54
|
callId?: string;
|
|
66
55
|
};
|
|
67
56
|
/**
|
|
68
|
-
* 插件扩展的 compaction/summary 载荷:宿主类型 + shadowedCharCount
|
|
69
|
-
* 宿主 append 不做 schema
|
|
70
|
-
* 客户端读取时按可选处理。宿主类型是 union
|
|
71
|
-
* 故用交叉类型 + 读取处收窄。
|
|
57
|
+
* 插件扩展的 compaction/summary 载荷:宿主类型 + shadowedCharCount/attemptCount。
|
|
58
|
+
* 宿主 append 不做 schema 剥离,扩展字段原样持久化;旧会话载荷可能缺失,
|
|
59
|
+
* 客户端读取时按可选处理。宿主类型是 union,无法声明合并,故用交叉类型 + 读取处收窄。
|
|
72
60
|
*/
|
|
73
61
|
export type CompactionSummaryPayload = SessionEventMap['compaction/summary'] & {
|
|
74
|
-
/** 被压缩内容的字符数(压缩前文本长度合计;UI
|
|
62
|
+
/** 被压缩内容的字符数(压缩前文本长度合计;UI 标题统计用)。 */
|
|
75
63
|
shadowedCharCount?: number;
|
|
76
|
-
/**
|
|
64
|
+
/** 摘要重试次数(观察分块为各块重试之和,反思为尝试次数 - 1)。 */
|
|
77
65
|
attemptCount?: number;
|
|
78
66
|
};
|
|
79
67
|
/**
|
|
80
68
|
* 插件扩展的 compaction/start 载荷:宿主类型 + phase(压缩 pass)。
|
|
81
|
-
*
|
|
82
|
-
* 缺失(旧版本会话)回落通用压缩中文案。
|
|
69
|
+
* 客户端读取时按可选处理,缺失回落通用压缩中文案。
|
|
83
70
|
*/
|
|
84
71
|
export type CompactionStartPayload = SessionEventMap['compaction/start'] & {
|
|
85
72
|
/** 压缩 pass(观察/反思;UI 压缩中提示行区分文案)。 */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,OAAO,EACP,UAAU,EACV,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7F,4BAA4B;AAC5B,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,sCAAsC;AACtC,YAAY,EACV,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,MAAM,EACN,UAAU,EACV,cAAc,EACd,OAAO,EACP,OAAO,EACP,YAAY,EACZ,eAAe,EACf,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,CAAC;AAEF,kEAAkE;AAClE,MAAM,MAAM,WAAW,GAAG;IACxB,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,2BAA2B;IAC3B,IAAI,EAAE,cAAc,GAAG,mBAAmB,GAAG,aAAa,CAAC;CAC5D,CAAC;AAEF,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG;IACzB,oBAAoB;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,kCAAkC;IAClC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC3B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,UAAU,CAAC;IAChD,kCAAkC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,eAAe,CAAC,oBAAoB,CAAC,GAAG;IAC7E,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,eAAe,CAAC,kBAAkB,CAAC,GAAG;IACzE,oCAAoC;IACpC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CAC9B,CAAC"}
|