@my-life-buddies/buddy-runtime 0.24.0-dev.7 → 0.24.0-dev.8

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.
@@ -44,7 +44,7 @@ export interface WidgetType {
44
44
  * package.json(测试机上的 fitness-buddy 就是这样,它那份没有 version 字段)。常量会被打包器原样搬走。
45
45
  * 发版时由 scripts/release.ts 连同 package.json 一起改,scripts/check-publish.ts 在 npm publish 前比对两处是否一致。
46
46
  */
47
- export declare const RUNTIME_VERSION = "0.24.0-dev.7";
47
+ export declare const RUNTIME_VERSION = "0.24.0-dev.8";
48
48
  export declare const MAX_DATASETS_PER_QUERY = 8;
49
49
  export declare const MAX_DATA_ACCESS_RESPONSE_BYTES: number;
50
50
  /** 不向模型暴露服务端原文、凭据或临时媒体地址。写入失败不自动重试。 */
package/dist/mlbClient.js CHANGED
@@ -11,7 +11,7 @@ import { errorText } from "./log.js";
11
11
  * package.json(测试机上的 fitness-buddy 就是这样,它那份没有 version 字段)。常量会被打包器原样搬走。
12
12
  * 发版时由 scripts/release.ts 连同 package.json 一起改,scripts/check-publish.ts 在 npm publish 前比对两处是否一致。
13
13
  */
14
- export const RUNTIME_VERSION = "0.24.0-dev.7";
14
+ export const RUNTIME_VERSION = "0.24.0-dev.8";
15
15
  /** 除事件流以外的请求都限时 30 秒:卡死的请求超时后按网络错误处理,调用方决定重不重发 */
16
16
  const REQUEST_TIMEOUT_MS = 30_000;
17
17
  export const MAX_DATASETS_PER_QUERY = 8;
package/dist/model.d.ts CHANGED
@@ -7,9 +7,21 @@ import type { Api, Model } from "@earendil-works/pi-ai";
7
7
  export declare const MODEL_IDS: readonly ["kimi-k2.6", "kimi-k3", "deepseek-v4-flash", "deepseek-v4-pro", "glm-5.3", "MiniMax-M3"];
8
8
  /** initialState.model 的取值 */
9
9
  export type ModelId = (typeof MODEL_IDS)[number];
10
+ /**
11
+ * 平台部署给每个模型的尺寸:contextWindow = 一次请求里 prompt 与输出共用的总 token 预算,maxTokens = 单次输出上限。
12
+ * pi-ai 目录条目上的这两个数是各家官方 API 的;平台网关背后是 MAAS 部署,尺寸以部署为准,createModel 用这张表覆盖目录值。
13
+ * 这两个数决定三处行为:pi 发请求把 maxTokens 顶格填进 max_tokens;pi 发请求前按 contextWindow 减去已用历史收缩输出空间
14
+ * (pi-ai simple-options 的 clampMaxTokensToContext);compaction 的触发线按 contextWindow 算(conversation/compaction.ts 的 triggerTokens)。
15
+ * maxTokens 一列 2026-09-23 在 SIT 网关逐个实测:glm-5.3 与 MiniMax-M3 是上游 400 报文自报的上限(131072;524288,取目录值 512000 留余量),
16
+ * 其余四个上游不校验这个字段、照抄目录值。contextWindow 一列暂照抄目录值,待平台给出各模型的部署窗口后改数。
17
+ */
18
+ export declare const MODEL_SIZES: Record<ModelId, {
19
+ contextWindow: number;
20
+ maxTokens: number;
21
+ }>;
10
22
  /**
11
23
  * 按模型 id 取目录条目(带 compat,openai-completions 靠它决定 max_tokens 字段名、reasoning_content 回填、思考参数怎么发等),
12
- * 只把 baseUrl 换成平台网关的 /internal/v1。返回的是新对象,目录里那份不动。
24
+ * 把 baseUrl 换成平台网关的 /internal/v1,尺寸换成 MODEL_SIZES 声明的。返回的是新对象,目录里那份不动。
13
25
  * 没给 id、或不在 MODEL_IDS 里(开发者直接跑 .ts、不过类型检查时可能写错)就 throw,这场会话起不来。
14
26
  */
15
27
  export declare function createModel(gatewayUrl: string, id: string): Model<Api>;
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAyBxD;;;GAGG;AACH,eAAO,MAAM,SAAS,oGAAqG,CAAC;AAE5H,6BAA6B;AAC7B,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAMtE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,QAC8C,CAAC;AAEtE,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAEjG"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAyBxD;;;GAGG;AACH,eAAO,MAAM,SAAS,oGAAqG,CAAC;AAE5H,6BAA6B;AAC7B,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAOrF,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAMtE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,QAC8C,CAAC;AAEtE,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAEjG"}
package/dist/model.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // 模型驱动:搭子用哪个模型、走哪条 HTTP 通道、怎么把流式响应喂给 pi 的 Agent。
2
- // 管的事:列出运行时支持的模型 id(MODEL_IDS);按开发者在 initialState.model 里给的 id,从 pi-ai 的模型目录里取出条目并把 baseUrl 改指向平台网关;
2
+ // 管的事:列出运行时支持的模型 id(MODEL_IDS);按开发者在 initialState.model 里给的 id,从 pi-ai 的模型目录里取出条目,
3
+ // 把 baseUrl 改指向平台网关、把窗口与输出上限换成平台部署的尺寸(MODEL_SIZES);
3
4
  // 提供 Agent 要的 streamFn;提供重建历史时给合成 assistant 消息抄的 api / provider / model 三元组。
4
5
  // 不管的事:apiKey(由 Agent 的 getApiKey 每次请求模型时交 token,pi 的 agent-loop 会把它放进 options.apiKey)、
5
6
  // 会话与历史(conversation/ 目录)、平台读写口(mlbClient.ts)。
@@ -32,9 +33,25 @@ const CATALOGS = [MOONSHOTAI_CN_MODELS, DEEPSEEK_MODELS, ZAI_MODELS, { "MiniMax-
32
33
  * 平台新开放模型,在这里加一项、发新版本
33
34
  */
34
35
  export const MODEL_IDS = ["kimi-k2.6", "kimi-k3", "deepseek-v4-flash", "deepseek-v4-pro", "glm-5.3", "MiniMax-M3"];
36
+ /**
37
+ * 平台部署给每个模型的尺寸:contextWindow = 一次请求里 prompt 与输出共用的总 token 预算,maxTokens = 单次输出上限。
38
+ * pi-ai 目录条目上的这两个数是各家官方 API 的;平台网关背后是 MAAS 部署,尺寸以部署为准,createModel 用这张表覆盖目录值。
39
+ * 这两个数决定三处行为:pi 发请求把 maxTokens 顶格填进 max_tokens;pi 发请求前按 contextWindow 减去已用历史收缩输出空间
40
+ * (pi-ai simple-options 的 clampMaxTokensToContext);compaction 的触发线按 contextWindow 算(conversation/compaction.ts 的 triggerTokens)。
41
+ * maxTokens 一列 2026-09-23 在 SIT 网关逐个实测:glm-5.3 与 MiniMax-M3 是上游 400 报文自报的上限(131072;524288,取目录值 512000 留余量),
42
+ * 其余四个上游不校验这个字段、照抄目录值。contextWindow 一列暂照抄目录值,待平台给出各模型的部署窗口后改数。
43
+ */
44
+ export const MODEL_SIZES = {
45
+ "kimi-k2.6": { contextWindow: 262_144, maxTokens: 262_144 },
46
+ "kimi-k3": { contextWindow: 1_048_576, maxTokens: 131_072 },
47
+ "deepseek-v4-flash": { contextWindow: 1_000_000, maxTokens: 384_000 },
48
+ "deepseek-v4-pro": { contextWindow: 1_000_000, maxTokens: 384_000 },
49
+ "glm-5.3": { contextWindow: 1_000_000, maxTokens: 131_072 },
50
+ "MiniMax-M3": { contextWindow: 1_048_576, maxTokens: 512_000 },
51
+ };
35
52
  /**
36
53
  * 按模型 id 取目录条目(带 compat,openai-completions 靠它决定 max_tokens 字段名、reasoning_content 回填、思考参数怎么发等),
37
- * 只把 baseUrl 换成平台网关的 /internal/v1。返回的是新对象,目录里那份不动。
54
+ * 把 baseUrl 换成平台网关的 /internal/v1,尺寸换成 MODEL_SIZES 声明的。返回的是新对象,目录里那份不动。
38
55
  * 没给 id、或不在 MODEL_IDS 里(开发者直接跑 .ts、不过类型检查时可能写错)就 throw,这场会话起不来。
39
56
  */
40
57
  export function createModel(gatewayUrl, id) {
@@ -45,7 +62,7 @@ export function createModel(gatewayUrl, id) {
45
62
  const entry = CATALOGS.map((catalog) => catalog[id]).find((m) => m !== undefined);
46
63
  if (entry === undefined)
47
64
  throw new Error(`CATALOGS 的各份模型目录里都没有 ${id}`);
48
- return { ...entry, baseUrl: `${gatewayUrl.replace(/\/+$/, "")}/internal/v1` };
65
+ return { ...entry, baseUrl: `${gatewayUrl.replace(/\/+$/, "")}/internal/v1`, ...MODEL_SIZES[id] };
49
66
  }
50
67
  /**
51
68
  * Agent 的 streamFn:直接用 pi-ai openai-completions 的 streamSimple。
package/dist/model.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,qGAAqG;AACrG,6EAA6E;AAC7E,wFAAwF;AACxF,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AAIvE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,GAAgC;IAC/C,GAAG,iBAAiB,CAAC,YAAY,CAAE;IACnC,GAAG,EAAE,oBAAoB;IACzB,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE;CAC5H,CAAC;AAEF;;;;GAIG;AACH,MAAM,QAAQ,GAA6C,CAAC,oBAAoB,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7I;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AAK5H;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,EAAU;IACzD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,IAAI,CAAE,SAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,cAAc,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAClF,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC7D,YAAY,CAAC,KAAoC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEtE,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC9C,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,mFAAmF;AACnF,oDAAoD;AACpD,6EAA6E;AAC7E,wFAAwF;AACxF,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AAIvE,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,iDAAiD,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE;;;;GAIG;AACH,MAAM,UAAU,GAAgC;IAC/C,GAAG,iBAAiB,CAAC,YAAY,CAAE;IACnC,GAAG,EAAE,oBAAoB;IACzB,MAAM,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE;CAC5H,CAAC;AAEF;;;;GAIG;AACH,MAAM,QAAQ,GAA6C,CAAC,oBAAoB,EAAE,eAAe,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;AAE7I;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,YAAY,CAAU,CAAC;AAK5H;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAkE;IACzF,WAAW,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE;IAC3D,SAAS,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IAC3D,mBAAmB,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IACrE,iBAAiB,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IACnE,SAAS,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;IAC3D,YAAY,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;CAC9D,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB,EAAE,EAAU;IACzD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrF,IAAI,CAAE,SAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,EAAE,cAAc,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpI,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAClF,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,WAAW,CAAC,EAAa,CAAC,EAAE,CAAC;AAC9G,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAC7D,YAAY,CAAC,KAAoC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEtE,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC9C,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;AACtE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@my-life-buddies/buddy-runtime",
3
- "version": "0.24.0-dev.7",
3
+ "version": "0.24.0-dev.8",
4
4
  "type": "module",
5
5
  "description": "「搭搭」搭子服务的运行时基座",
6
6
  "exports": {