mslxdff 0.1.36 → 0.1.37
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/bin/mslxdff.js +32 -5
- package/package.json +1 -1
- package/src/routes.js +10 -5
package/bin/mslxdff.js
CHANGED
|
@@ -1179,17 +1179,42 @@ function fmtEvent(e) {
|
|
|
1179
1179
|
const t = e?.ts ? new Date(e.ts).toISOString().slice(11, 19) : "--:--:--";
|
|
1180
1180
|
const head = `[${t}]`;
|
|
1181
1181
|
const m = (x) => x || "-";
|
|
1182
|
+
const fallbackTag = e.fallback ? ` fallback=${e.fallback.requested_model || e.requested}->${e.fallback.actual_model || e.actual}(${e.fallback.reason || e.reason})` : "";
|
|
1182
1183
|
switch (e?.type) {
|
|
1183
1184
|
case "request":
|
|
1184
|
-
return `${head} request ${m(e.model)}${e.auto ? " (auto)" : ""} hops=${e.hops} from ${e.ip || "?"}${e.stream ? " stream" : ""}${e.prompt ? ` content="${e.prompt}"` : ""}`;
|
|
1185
|
+
return `${head} request client-> ${m(e.requested || e.model)}${e.auto ? " (auto)" : ""} raw=${m(e.rawModel)} lock=${m(e.lockModel)} hops=${e.hops} from ${e.ip || "?"}${e.stream ? " stream" : ""}${e.prompt ? ` content="${e.prompt}"` : ""} reqId=${e.reqId || ""}`;
|
|
1186
|
+
case "client-request":
|
|
1187
|
+
return `${head} client req 客户端请求 model=${m(e.requested)} raw=${m(e.rawModel)} lock=${m(e.lockModel)} ip=${e.ip || "?"}${e.stream ? " stream" : ""}`;
|
|
1188
|
+
case "ordered":
|
|
1189
|
+
return `${head} ordered 尝试顺序 [${(e.order||[]).join(" -> ")}] canFallback=${e.canFallback} useAuto=${e.useAuto}`;
|
|
1190
|
+
case "model-try":
|
|
1191
|
+
return `${head} model-try 尝试本地 model=${m(e.model)} idx=${e.idx} reqId=${e.reqId || ""}`;
|
|
1192
|
+
case "upstream-try":
|
|
1193
|
+
return `${head} upstream try 上游请求 model=${m(e.model)} attempt=${e.attempt || 1}`;
|
|
1194
|
+
case "upstream-done":
|
|
1195
|
+
return `${head} upstream ok ${m(e.model)} HTTP ${e.status}${e.timing ? ` total=${e.timing.totalMs}ms` : ""}`;
|
|
1185
1196
|
case "upstream-error":
|
|
1186
1197
|
return `${head} upstream err ${m(e.model)} ${e.status ? `HTTP ${e.status}` : "network"}: ${m(e.message)}`;
|
|
1198
|
+
case "peer-race-start":
|
|
1199
|
+
return `${head} peer race 开始并发给组员 model=${m(e.model)} peers=${e.peers}`;
|
|
1187
1200
|
case "peer-health":
|
|
1188
|
-
return `${head} peer check ${e.peer} -> ${e.count ? e.healthy.join(", ") : "no healthy models"}`;
|
|
1201
|
+
return `${head} peer check ${e.peer} -> ${e.count ? e.healthy.join(", ") : "no healthy models"}${e.strict ? " (strict)" : ""}`;
|
|
1189
1202
|
case "peer-forward":
|
|
1190
|
-
return `${head}
|
|
1203
|
+
return `${head} peer req 给组员请求 peer=${e.peer} model=${m(e.model)} hops=${e.hops}${e.retry ? " (retry)" : ""}`;
|
|
1191
1204
|
case "peer-error":
|
|
1192
|
-
return `${head} peer err ${e.peer} ${e.status ? `HTTP ${e.status}` : "network"}: ${m(e.message)}`;
|
|
1205
|
+
return `${head} peer err ${e.peer} ${e.status ? `HTTP ${e.status}` : "network"}: ${m(e.message)} model=${m(e.model)}`;
|
|
1206
|
+
case "peer-race-win":
|
|
1207
|
+
return `${head} peer win 选中 peer=${e.winPeer} model=${m(e.winTarget)} latency=${e.latencyMs}ms`;
|
|
1208
|
+
case "peer-race-lose":
|
|
1209
|
+
return `${head} peer lose 组员全部失败 model=${m(e.model)}`;
|
|
1210
|
+
case "fallback":
|
|
1211
|
+
return `${head} fallback ${m(e.from)} -> ${m(e.to)} reason=${m(e.reason)}`;
|
|
1212
|
+
case "fallback-notice":
|
|
1213
|
+
return `${head} fallback! 客户端请求 ${m(e.requested)} 实际返回 ${m(e.actual)} 原因=${m(e.reason)} via=${m(e.via)} notice=${m(e.notice)}`;
|
|
1214
|
+
case "relay-try":
|
|
1215
|
+
return `${head} relay try 给宽带中继请求 target=${e.target} model=${m(e.model)} via=${e.via}`;
|
|
1216
|
+
case "relay-fail":
|
|
1217
|
+
return `${head} relay fail ${e.target} ${e.status ? `HTTP ${e.status}` : ""} ${m(e.message)}`;
|
|
1193
1218
|
case "relay-ip-change":
|
|
1194
1219
|
return `${head} relay ip ${e.member || e.id || "?"} ${e.oldIp || "?"} -> ${e.newIp || e.publicIp || "?"} via leader`;
|
|
1195
1220
|
case "relay-forward":
|
|
@@ -1199,7 +1224,9 @@ function fmtEvent(e) {
|
|
|
1199
1224
|
case "client-abort":
|
|
1200
1225
|
return `${head} client abort ${m(e.model)} total=${fmtDur(e.totalMs)}`;
|
|
1201
1226
|
case "result":
|
|
1202
|
-
return `${head} result
|
|
1227
|
+
return `${head} result 返回客户端 status=${e.status} model=${m(e.model)} via=${e.via} 响应耗时 ${fmtDur(e.durationMs)}${fallbackTag}`;
|
|
1228
|
+
case "client-response":
|
|
1229
|
+
return `${head} client res 返回客户端 客户端请求 ${m(e.requested)} 实际返回 ${m(e.actual)} via=${m(e.via)}${e.fallback ? ` fallback=${e.fallback.requested_model}->${e.fallback.actual_model}(${e.fallback.reason})` : " 无fallback"} status=${e.status}`;
|
|
1203
1230
|
case "auto-update-enabled":
|
|
1204
1231
|
return `${head} auto-update enabled every ${Math.round((e.intervalMs||0)/60000)}m current=${e.current}`;
|
|
1205
1232
|
case "auto-update-disabled":
|
package/package.json
CHANGED
package/src/routes.js
CHANGED
|
@@ -815,7 +815,8 @@ const ROUTES = [
|
|
|
815
815
|
}
|
|
816
816
|
evt("slow-model", { model, elapsedMs: out.totalMs ?? (Date.now() - startedAt), threshold: STALL_TIMEOUT_MS, interrupted: true, detail: out.detail ?? null });
|
|
817
817
|
logCall(model, 200);
|
|
818
|
-
evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, interrupted: true, detail: out.detail ?? null });
|
|
818
|
+
evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, interrupted: true, detail: out.detail ?? null, fallback, requested, actual: model });
|
|
819
|
+
evt("client-response", { requested, actual: model, via: "local", fallback, status: out.status, interrupted: true, reqId });
|
|
819
820
|
return;
|
|
820
821
|
}
|
|
821
822
|
const elapsed = Date.now() - startedAt;
|
|
@@ -841,7 +842,8 @@ const ROUTES = [
|
|
|
841
842
|
} else if (scoredSlow && out.detail) {
|
|
842
843
|
// already recorded slow+latency above, still ensure latency EMA is updated for slow case (done)
|
|
843
844
|
}
|
|
844
|
-
evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
|
|
845
|
+
evt("result", { model, status: out.status, via: "local", timing: upRes._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback, requested, actual: model });
|
|
846
|
+
evt("client-response", { requested, actual: model, via: "local", fallback, status: out.status, reqId });
|
|
845
847
|
return;
|
|
846
848
|
}
|
|
847
849
|
|
|
@@ -877,7 +879,8 @@ const ROUTES = [
|
|
|
877
879
|
await auto.recordOk(win.target, { latencyMs });
|
|
878
880
|
}
|
|
879
881
|
}
|
|
880
|
-
evt("result", { model: win.target, status: out.status, via: "peer", timing: win.res._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
|
|
882
|
+
evt("result", { model: win.target, status: out.status, via: "peer", timing: win.res._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback: peerFallback, requested, actual: win.target });
|
|
883
|
+
evt("client-response", { requested, actual: win.target, via: "peer", fallback: peerFallback, status: out.status, reqId });
|
|
881
884
|
return;
|
|
882
885
|
}
|
|
883
886
|
evt("peer-race-lose", { reqId, model });
|
|
@@ -908,7 +911,8 @@ const ROUTES = [
|
|
|
908
911
|
await auto.recordOk(model, { latencyMs });
|
|
909
912
|
}
|
|
910
913
|
}
|
|
911
|
-
evt("result", { model, status: out.status, via: "broadband", timing: bb.result._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
|
|
914
|
+
evt("result", { model, status: out.status, via: "broadband", timing: bb.result._t ?? null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback: bbFallback, requested, actual: model });
|
|
915
|
+
evt("client-response", { requested, actual: model, via: "broadband", fallback: bbFallback, status: out.status, reqId });
|
|
912
916
|
return;
|
|
913
917
|
} else if (bb.result && typeof bb.result.status === "number") {
|
|
914
918
|
// buffered result from local leader enqueue
|
|
@@ -935,7 +939,8 @@ const ROUTES = [
|
|
|
935
939
|
onDownstreamAbort: () => evt("client-abort", { reqId, model, totalMs: Math.round(performance.now() - perf0), stages: [...stages] }),
|
|
936
940
|
});
|
|
937
941
|
evt("relay-done", { reqId, model, via: "broadband-local", status: out.status, ttfMs: out.ttfMs, totalMs: out.totalMs, aborted: out.aborted, interrupted: out.interrupted ?? false, detail: out.detail ?? null });
|
|
938
|
-
evt("result", { model, status: out.status, via: "broadband", timing: null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null });
|
|
942
|
+
evt("result", { model, status: out.status, via: "broadband", timing: null, ttfMs: out.ttfMs, totalMs: out.totalMs, detail: out.detail ?? null, fallback: bbLocalFallback, requested, actual: model });
|
|
943
|
+
evt("client-response", { requested, actual: model, via: "broadband", fallback: bbLocalFallback, status: out.status, reqId });
|
|
939
944
|
return;
|
|
940
945
|
}
|
|
941
946
|
}
|