@migor/agentia 0.3.0 → 0.4.1
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 +2 -2
- package/dist/AGENTS.md +59 -23
- package/dist/core/abort.d.ts +7 -0
- package/dist/core/abort.js +28 -2
- package/dist/core/abort.js.map +1 -1
- package/dist/core/schema.js +5 -3
- package/dist/core/schema.js.map +1 -1
- package/dist/core/tool.d.ts +18 -0
- package/dist/core/trace.d.ts +5 -1
- package/dist/engine/loop.d.ts +11 -0
- package/dist/engine/loop.js +122 -27
- package/dist/engine/loop.js.map +1 -1
- package/dist/engine/policy.js +5 -0
- package/dist/engine/policy.js.map +1 -1
- package/dist/engine/spec.d.ts +10 -0
- package/dist/engine/spec.js.map +1 -1
- package/dist/engine/tracer.js +13 -1
- package/dist/engine/tracer.js.map +1 -1
- package/dist/engine/trimming.d.ts +7 -2
- package/dist/engine/trimming.js +20 -6
- package/dist/engine/trimming.js.map +1 -1
- package/dist/engine/types.d.ts +33 -5
- package/dist/engine/usage.d.ts +3 -3
- package/dist/engine/usage.js +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/integrations/mcp.js +9 -1
- package/dist/integrations/mcp.js.map +1 -1
- package/dist/integrations/metrics.d.ts +8 -2
- package/dist/integrations/metrics.js +120 -46
- package/dist/integrations/metrics.js.map +1 -1
- package/dist/integrations/openai.js +14 -1
- package/dist/integrations/openai.js.map +1 -1
- package/dist/integrations/otlp.d.ts +7 -0
- package/dist/integrations/otlp.js +5 -2
- package/dist/integrations/otlp.js.map +1 -1
- package/dist/runtime/run.d.ts +7 -3
- package/dist/runtime/run.js +4 -0
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/session.d.ts +5 -0
- package/dist/runtime/session.js.map +1 -1
- package/dist/store/fsStore.d.ts +2 -1
- package/dist/store/fsStore.js +12 -5
- package/dist/store/fsStore.js.map +1 -1
- package/dist/store/redisStore.d.ts +23 -3
- package/dist/store/redisStore.js +14 -3
- package/dist/store/redisStore.js.map +1 -1
- package/dist/toolkit/asset.d.ts +5 -0
- package/dist/toolkit/asset.js +8 -0
- package/dist/toolkit/asset.js.map +1 -1
- package/dist/toolkit/collect.d.ts +6 -0
- package/dist/toolkit/collect.js +29 -4
- package/dist/toolkit/collect.js.map +1 -1
- package/dist/toolkit/discover.js +24 -7
- package/dist/toolkit/discover.js.map +1 -1
- package/dist/toolkit/env.js +5 -0
- package/dist/toolkit/env.js.map +1 -1
- package/dist/toolkit/module.d.ts +9 -1
- package/dist/toolkit/module.js +10 -1
- package/dist/toolkit/module.js.map +1 -1
- package/dist/toolkit/prompt.d.ts +1 -1
- package/dist/toolkit/prompt.js +19 -12
- package/dist/toolkit/prompt.js.map +1 -1
- package/dist/toolkit/skill.js +5 -0
- package/dist/toolkit/skill.js.map +1 -1
- package/dist/toolkit/subagent.js +5 -0
- package/dist/toolkit/subagent.js.map +1 -1
- package/dist/transport/async.d.ts +2 -1
- package/dist/transport/async.js +19 -9
- package/dist/transport/async.js.map +1 -1
- package/dist/transport/http.d.ts +4 -4
- package/dist/transport/http.js +15 -2
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/scheduler.js +13 -1
- package/dist/transport/scheduler.js.map +1 -1
- package/package.json +3 -2
package/dist/engine/types.d.ts
CHANGED
|
@@ -43,6 +43,10 @@ export type SystemParam = string | SystemTextBlock[];
|
|
|
43
43
|
* 上下文预算策略(spec §5/§6 —— compaction / context editing)。
|
|
44
44
|
* 引擎在每个 llm 回合发送前调用 beforeTurn;返回的 messages 即本回合发送内容。
|
|
45
45
|
* 实现见 engine/policy.ts 的 createBudgetPolicy,或自实现(如每次用 /count_tokens)。
|
|
46
|
+
*
|
|
47
|
+
* ⚠️ **per-run 状态**:策略可能被配置成应用级单例(`AppOptions.contextPolicy`)被所有
|
|
48
|
+
* run 复用。带状态的实现(滞回计数、token 缓存等)应实现 `forRun` 让每条 run 拿到
|
|
49
|
+
* 独立实例,否则状态跨 run 泄漏(见 forRun 说明)。
|
|
46
50
|
*/
|
|
47
51
|
export interface ContextPolicy {
|
|
48
52
|
/** 预算(估算 input tokens);超预算的回合触发降级。供观测/文档用 */
|
|
@@ -51,6 +55,12 @@ export interface ContextPolicy {
|
|
|
51
55
|
iteration: number;
|
|
52
56
|
model: string;
|
|
53
57
|
}): Promise<Anthropic.MessageParam[]>;
|
|
58
|
+
/**
|
|
59
|
+
* 每条 run 开始时由引擎调用一次,返回**本 run 专用**的策略实例(隔离滞回/缓存等
|
|
60
|
+
* per-run 状态)。缺省(不实现)= 复用自身 —— 只适合无状态策略;有状态又不实现
|
|
61
|
+
* forRun 时,状态会跨 run(含并发 run)共享,行为自己负责。
|
|
62
|
+
*/
|
|
63
|
+
forRun?(): ContextPolicy;
|
|
54
64
|
}
|
|
55
65
|
export interface RunAgentOptions<S extends JsonSchema = JsonSchema> {
|
|
56
66
|
/** 顶层 system(SystemPrompt 产物)。稳定内容应放在 tools 之后、第一个 breakpoint 前 */
|
|
@@ -64,7 +74,7 @@ export interface RunAgentOptions<S extends JsonSchema = JsonSchema> {
|
|
|
64
74
|
maxTokens?: number;
|
|
65
75
|
/** 循环安全上限,防止无限 tool 往返 */
|
|
66
76
|
maxIterations?: number;
|
|
67
|
-
/** 注入 client
|
|
77
|
+
/** 注入 client(缺省经 createAnthropicClient() 创建,读 ANTHROPIC_API_KEY / ANTHROPIC_BASE_URL env);多模型见 ModelClient */
|
|
68
78
|
client?: ModelClient;
|
|
69
79
|
/** 注入 recorder(run 层复用;不注入则内部新建,traceId 即 runId) */
|
|
70
80
|
recorder?: import('./tracer.js').TraceRecorder;
|
|
@@ -93,19 +103,21 @@ export interface RunAgentOptions<S extends JsonSchema = JsonSchema> {
|
|
|
93
103
|
*/
|
|
94
104
|
resultSchema?: S;
|
|
95
105
|
/**
|
|
96
|
-
* 成本硬管控(C1):整条 run(**含子 agent**)累计 token
|
|
97
|
-
*
|
|
106
|
+
* 成本硬管控(C1):整条 run(**含子 agent**)累计 token 上限。每回合记账后判断
|
|
107
|
+
* (主循环与各级子循环各自判断 —— 预算约束经 `ToolRunContext` 透传,各级共享同一
|
|
108
|
+
* recorder 的累计账单),超限即停,run 以 `stopReason='budget_exceeded'` 收尾(**算失败**)。
|
|
98
109
|
* 与 `contextPolicy`(发送前的上下文裁剪)分工不同 —— 见 `createBudgetGuard`。
|
|
99
110
|
*
|
|
100
111
|
* 口径:input + output + cacheRead + cacheCreation。**不是硬实时**:一回合跑完才判,
|
|
101
|
-
*
|
|
112
|
+
* 所以实际用量可能略超上限(最多超一次回合的量;子循环超限后主循环最多再带出一个
|
|
113
|
+
* 回合入口判断,不会发出新请求)。
|
|
102
114
|
*/
|
|
103
115
|
maxTotalTokens?: number;
|
|
104
116
|
/**
|
|
105
117
|
* 成本硬管控(C1):累计成本(美元)上限。**依赖模型在价格表内**
|
|
106
118
|
* (`engine/usage.ts` 的 DEFAULT_PRICING,或本 run 的 `priceOverrides`)——
|
|
107
119
|
* 不在表里时成本恒为 0,此护栏不触发;要无条件兜底用 maxTotalTokens。
|
|
108
|
-
*
|
|
120
|
+
* 未定价模型会在该回合的 llm.turn span 记 `usage.unpriced` 事件(见 `onUnpricedModel`),
|
|
109
121
|
* 所以"护栏到底有没有生效"是**看得见**的。
|
|
110
122
|
*/
|
|
111
123
|
maxCostUsd?: number;
|
|
@@ -143,6 +155,22 @@ export interface RunAgentOptions<S extends JsonSchema = JsonSchema> {
|
|
|
143
155
|
* 工具会打外部系统(DB/HTTP)时设个位数,避免一个回合把下游打爆。
|
|
144
156
|
*/
|
|
145
157
|
maxToolConcurrency?: number;
|
|
158
|
+
/**
|
|
159
|
+
* trace 事件正文(`tool.input` 的入参、`tool.output` 的 content)的最大字符数。
|
|
160
|
+
*
|
|
161
|
+
* 缺省按事件类型分别收敛:入参 2000、成功出参 2000、失败出参 1000 ——
|
|
162
|
+
* 调用树里一行看个大概即可,不必把整份工具结果搬进 trace(sink 落库 / OTLP
|
|
163
|
+
* 导出同样按这个体积走)。传**数字**则三类统一用该上限;传 **`false`** 表示
|
|
164
|
+
* **不截断**:完整正文进 trace,供 `agentia dev` 面板 / playground 展开查看
|
|
165
|
+
* (折叠态仍是一行摘要,展开是**客户端**行为,不影响 trace 体积口径)。
|
|
166
|
+
*
|
|
167
|
+
* 同样**透传给嵌套能力**(@SubAgent / @Skill 的子循环)—— 否则调试期开了全文,
|
|
168
|
+
* 子 agent 里的工具事件还是被截断的,「开没开」在同一棵树上会出现两种口径。
|
|
169
|
+
*
|
|
170
|
+
* ⚠️ `false` 不设上限:工具返回多大就记多大,trace 会随之膨胀。调试期开、生产期关。
|
|
171
|
+
* 截断只在**记账**时发生,不影响回给模型的 tool_result(那条永远完整)。
|
|
172
|
+
*/
|
|
173
|
+
maxEventChars?: number | false;
|
|
146
174
|
/**
|
|
147
175
|
* 提示词版本号(D4):写进 run 根 span 的 `system.version` attribute,
|
|
148
176
|
* trace 里据此可查「哪个版本的提示词产出的结果」。
|
package/dist/engine/usage.d.ts
CHANGED
|
@@ -8,9 +8,9 @@ import type { Usage } from '../core/trace.js';
|
|
|
8
8
|
* 1. 价格表是模块内常量 → 走 OpenAI 兼容端点(DeepSeek / 自建)的宿主**永远算不出成本**;
|
|
9
9
|
* 2. 未定价模型返回 `undefined` → 成本恒 0 → `maxCostUsd` 这条护栏**静默失效**、且无任何提示。
|
|
10
10
|
*
|
|
11
|
-
* 现在:价格表可经 `priceOverrides` 覆盖/追加(`buildPricing
|
|
12
|
-
* 记 `usage.unpriced` 事件并有 `agentia_model_unpriced_turns_total` 指标 ——
|
|
13
|
-
*
|
|
11
|
+
* 现在:价格表可经 `priceOverrides` 覆盖/追加(`buildPricing`),未定价模型会在该回合的
|
|
12
|
+
* llm.turn span 记 `usage.unpriced` 事件并有 `agentia_model_unpriced_turns_total` 指标 ——
|
|
13
|
+
* 护栏是否真的生效**看得见**。
|
|
14
14
|
*/
|
|
15
15
|
/** 内置价格表($/1M tokens)。宿主用 `priceOverrides` 覆盖同名项或追加新模型。 */
|
|
16
16
|
export declare const DEFAULT_PRICING: Readonly<Record<string, ModelPricing>>;
|
package/dist/engine/usage.js
CHANGED
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* 1. 价格表是模块内常量 → 走 OpenAI 兼容端点(DeepSeek / 自建)的宿主**永远算不出成本**;
|
|
6
6
|
* 2. 未定价模型返回 `undefined` → 成本恒 0 → `maxCostUsd` 这条护栏**静默失效**、且无任何提示。
|
|
7
7
|
*
|
|
8
|
-
* 现在:价格表可经 `priceOverrides` 覆盖/追加(`buildPricing
|
|
9
|
-
* 记 `usage.unpriced` 事件并有 `agentia_model_unpriced_turns_total` 指标 ——
|
|
10
|
-
*
|
|
8
|
+
* 现在:价格表可经 `priceOverrides` 覆盖/追加(`buildPricing`),未定价模型会在该回合的
|
|
9
|
+
* llm.turn span 记 `usage.unpriced` 事件并有 `agentia_model_unpriced_turns_total` 指标 ——
|
|
10
|
+
* 护栏是否真的生效**看得见**。
|
|
11
11
|
*/
|
|
12
12
|
/** 内置价格表($/1M tokens)。宿主用 `priceOverrides` 覆盖同名项或追加新模型。 */
|
|
13
13
|
export const DEFAULT_PRICING = Object.freeze({
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const AGENTIA_VERSION = "0.
|
|
1
|
+
export declare const AGENTIA_VERSION = "0.4.1";
|
|
2
2
|
export type { Trace, Span, SpanEvent, SpanError, SpanId, SpanKind, SpanStatus, TraceId, TraceSink, CapabilityType, Usage, } from './core/trace.js';
|
|
3
3
|
export type { AgentTool, JsonSchema, ModelClient, RecorderBackend, SchemaInput, SchemaType, ToolRunContext, TypedSchema, } from './core/tool.js';
|
|
4
4
|
export { validateJsonSchema } from './core/schema.js';
|
package/dist/index.js
CHANGED
package/dist/integrations/mcp.js
CHANGED
|
@@ -68,7 +68,15 @@ export async function mcpTools(client, opts = {}) {
|
|
|
68
68
|
if (typeof original !== 'string' || original.trim() === '') {
|
|
69
69
|
throw new Error(`MCP server 返回了空工具名:${JSON.stringify(info.name)}`);
|
|
70
70
|
}
|
|
71
|
-
const
|
|
71
|
+
const cleaned = normalizeToolName(original);
|
|
72
|
+
if (cleaned === '') {
|
|
73
|
+
// 原名不含任何 ASCII 字母/数字/下划线(如 "🔥🔥"、"获取时间")时归一化产物为空串 ——
|
|
74
|
+
// 不拦下的话最终名只剩前缀也能注册成功,与「空名直接抛错」的承诺相反。
|
|
75
|
+
// 必须在撞名检查之前抛出(裸前缀名还可能与下一个空名工具撞出误导性报错)。
|
|
76
|
+
throw new Error(`MCP 工具名 ${JSON.stringify(original)} 归一化后为空(原名不含任何 ASCII 字母/数字/下划线)—— ` +
|
|
77
|
+
'请在 server 侧改用可辨识的工具名,或检查其 tools/list 实现');
|
|
78
|
+
}
|
|
79
|
+
const name = `${prefix}${cleaned}`;
|
|
72
80
|
if (!/^[A-Za-z0-9_-]{1,64}$/.test(name)) {
|
|
73
81
|
throw new Error(`MCP 工具名 "${original}" 归一化后为 "${name}",不满足 ^[A-Za-z0-9_-]{1,64}$` +
|
|
74
82
|
`(前缀 "${prefix}" 过长或原名含过多非法字符)—— 请换个更短的 prefix`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/integrations/mcp.ts"],"names":[],"mappings":"AA6DA,qDAAqD;AACrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAE7C;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,OAAO,GAAG,GAAG;SAChB,IAAI,EAAE;SACN,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC;SAC/B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,4DAA4D;AAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,CAAa,EAAE,SAAiB,EAAE,KAAa;IACnF,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,KAAiC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAC/B,CAAC;YACD,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,EAAE;gBACxC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;gBACxD,kEAAkE;gBAClE,8CAA8C;YAChD,CAAC,CAAC;SACH,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa,SAAS,KAAK,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,IAAI,KAAK;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAqB,EACrB,IAAI,GAAoB,EAAE;IAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,sBAAsB,CAAC;IAC3D,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC,CAAC,sBAAsB;IAC9D,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/integrations/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,9 @@ import type { TraceSink } from '../core/trace.js';
|
|
|
13
13
|
* `@Prompt` 不建 span、无独立耗时,**不产出**能力指标(如实缺省,不硬凑);
|
|
14
14
|
* - **模型级**(E3):来自 `llm.turn` span(其 `name` 即模型 id)。
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* 时长同时给两种口径(histogram 与分位 gauge 必须用**不同指标名**,见 `render()` 注释):
|
|
17
17
|
* - **histogram**(`*_bucket` / `*_sum` / `*_count`,累积语义)—— 抓取端可跨实例任意聚合;
|
|
18
|
-
* - **窗口内精确分位**(`*{quantile=...}` gauge)—— 单实例排障时更好读。
|
|
18
|
+
* - **窗口内精确分位**(`*_last{quantile=...}` gauge)—— 单实例排障时更好读。
|
|
19
19
|
*
|
|
20
20
|
* 零依赖:Prometheus 文本与 OTLP/JSON 都手写(纯文本 / JSON,不值得为此引客户端库)。
|
|
21
21
|
*/
|
|
@@ -89,6 +89,12 @@ export interface MetricsSinkOptions {
|
|
|
89
89
|
resourceAttributes?: Record<string, string>;
|
|
90
90
|
/** `export:'otlp'` 的 service.name,缺省 'agentia' */
|
|
91
91
|
serviceName?: string;
|
|
92
|
+
/**
|
|
93
|
+
* 单次导出请求超时(毫秒),缺省 10000;非正数 = 不限。
|
|
94
|
+
* 裸 fetch 没有超时:collector 半开连接(accept 后永不回包)会让 `intervalMs:0` 模式
|
|
95
|
+
* 的 run 收尾永久挂起。超时按导出失败处理(交 onExportError)——观测失败不击穿业务。
|
|
96
|
+
*/
|
|
97
|
+
timeoutMs?: number;
|
|
92
98
|
/** 导出失败回调(缺省吞掉 —— 观测失败不得击穿业务) */
|
|
93
99
|
onExportError?: (err: unknown) => void;
|
|
94
100
|
/**
|
|
@@ -55,7 +55,7 @@ class DurationStat {
|
|
|
55
55
|
const rank = Math.ceil(q * sorted.length);
|
|
56
56
|
return sorted[Math.min(Math.max(rank, 1), sorted.length) - 1];
|
|
57
57
|
}
|
|
58
|
-
/** 累积 bucket 计数(长度 = bounds+1,末位为 +Inf = count
|
|
58
|
+
/** 累积 bucket 计数(长度 = bounds+1,末位为 +Inf = count)—— Prometheus 文本语义 */
|
|
59
59
|
cumulative() {
|
|
60
60
|
const out = [];
|
|
61
61
|
let running = 0;
|
|
@@ -65,6 +65,10 @@ class DurationStat {
|
|
|
65
65
|
}
|
|
66
66
|
return out;
|
|
67
67
|
}
|
|
68
|
+
/** 每桶**非累积**计数 —— OTLP histogram 的 bucketCounts 语义(与 cumulative() 千万别混用) */
|
|
69
|
+
perBucket() {
|
|
70
|
+
return [...this.counts];
|
|
71
|
+
}
|
|
68
72
|
get boundsList() {
|
|
69
73
|
return this.bounds;
|
|
70
74
|
}
|
|
@@ -120,6 +124,7 @@ export function metricsSink(opts = {}) {
|
|
|
120
124
|
}
|
|
121
125
|
const p = opts.prefix ?? 'agentia_';
|
|
122
126
|
const intervalMs = opts.intervalMs ?? 60_000;
|
|
127
|
+
const timeoutMs = opts.timeoutMs ?? 10_000;
|
|
123
128
|
const serviceName = opts.serviceName ?? 'agentia';
|
|
124
129
|
const startedAtMs = Date.now();
|
|
125
130
|
let runs = 0;
|
|
@@ -276,12 +281,20 @@ export function metricsSink(opts = {}) {
|
|
|
276
281
|
droppedCapabilities: dropped.size,
|
|
277
282
|
};
|
|
278
283
|
};
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
284
|
+
/**
|
|
285
|
+
* 一个指标家族的完整块:HELP/TYPE 各**恰好一行**,后接全部样本行。
|
|
286
|
+
* expfmt 对同名指标的第二条 HELP/TYPE 是**硬错误**(整次 scrape 失败),
|
|
287
|
+
* 所以家族头必须集中在这里发一次,绝不能让每条样本自带;同名指标也只能有一种 TYPE
|
|
288
|
+
* (histogram 与分位 gauge 因此拆成 `*_duration_ms` 与 `*_duration_ms_last` 两个名字)。
|
|
289
|
+
*/
|
|
290
|
+
const family = (name, type, help, samples) => `# HELP ${name} ${help}\n# TYPE ${name} ${type}\n${samples.join('\n')}\n`;
|
|
291
|
+
/** Prometheus label 值转义:\、"、换行必须转义,否则一个含引号的能力名/模型名就损坏整页 exposition */
|
|
292
|
+
const escLabel = (v) => v.replace(/\\/g, '\\\\').replace(/"/g, '\\"').replace(/\n/g, '\\n');
|
|
293
|
+
/** 一个 stat 的 histogram 样本(bucket 累积 + sum + count),labels 形如 `{k="v"}` */
|
|
294
|
+
const histogramSamples = (name, stat, labels = '') => {
|
|
282
295
|
const inner = labels ? labels.slice(1, -1) + ',' : ''; // 去掉外层 {} 再补逗号
|
|
283
296
|
const at = (extra) => `{${inner}${extra}}`;
|
|
284
|
-
const out = [
|
|
297
|
+
const out = [];
|
|
285
298
|
const cum = stat.cumulative();
|
|
286
299
|
for (let i = 0; i < stat.boundsList.length; i++) {
|
|
287
300
|
out.push(`${name}_bucket${at(`le="${stat.boundsList[i]}"`)} ${cum[i]}`);
|
|
@@ -289,55 +302,101 @@ export function metricsSink(opts = {}) {
|
|
|
289
302
|
out.push(`${name}_bucket${at(`le="+Inf"`)} ${stat.count}`);
|
|
290
303
|
out.push(`${name}_sum${labels} ${stat.sumMs}`);
|
|
291
304
|
out.push(`${name}_count${labels} ${stat.count}`);
|
|
292
|
-
return out
|
|
305
|
+
return out;
|
|
293
306
|
};
|
|
294
307
|
const render = () => {
|
|
295
308
|
const out = [];
|
|
296
|
-
out.push(
|
|
297
|
-
out.push(
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
out.push(
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
out.push(
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
309
|
+
out.push(family(`${p}runs_total`, 'counter', 'run 总数(成功 + 失败)', [`${p}runs_total ${runs}`]));
|
|
310
|
+
out.push(family(`${p}runs_failed_total`, 'counter', '失败的 run 数(trace.status=error)', [
|
|
311
|
+
`${p}runs_failed_total ${failed}`,
|
|
312
|
+
]));
|
|
313
|
+
out.push(family(`${p}tokens_total`, 'counter', 'token 累计(kind 分项:input / output / cache_read / cache_creation)', [
|
|
314
|
+
`${p}tokens_total{kind="input"} ${tokens.input}`,
|
|
315
|
+
`${p}tokens_total{kind="output"} ${tokens.output}`,
|
|
316
|
+
`${p}tokens_total{kind="cache_read"} ${tokens.cacheRead}`,
|
|
317
|
+
`${p}tokens_total{kind="cache_creation"} ${tokens.cacheCreation}`,
|
|
318
|
+
]));
|
|
319
|
+
out.push(family(`${p}cost_usd_total`, 'counter', '累计成本估算(美元)', [
|
|
320
|
+
`${p}cost_usd_total ${costUsd}`,
|
|
321
|
+
]));
|
|
322
|
+
// 时长:histogram(可跨实例聚合)+ 窗口内精确分位(单实例好读),两种口径并存。
|
|
323
|
+
// 分位 gauge 必须用另一个名字 `*_last` —— 同名指标只允许一种 TYPE,
|
|
324
|
+
// 先发 histogram 再发 gauge 会被 expfmt 判硬错误,整次 scrape 失败。
|
|
325
|
+
out.push(family(`${p}run_duration_ms`, 'histogram', 'run 时长(毫秒)', [
|
|
326
|
+
...histogramSamples(`${p}run_duration_ms`, runStat),
|
|
327
|
+
]));
|
|
328
|
+
out.push(family(`${p}run_duration_ms_last`, 'gauge', 'run 时长分位(毫秒,滑动窗口内精确值)', [
|
|
329
|
+
`${p}run_duration_ms_last{quantile="0.5"} ${runStat.percentile(0.5)}`,
|
|
330
|
+
`${p}run_duration_ms_last{quantile="0.95"} ${runStat.percentile(0.95)}`,
|
|
331
|
+
]));
|
|
332
|
+
// —— 能力维度(E2):同一家族的样本跨 label 聚合,家族头只发一次 ——
|
|
333
|
+
const capLabels = [...capabilities.keys()].sort();
|
|
334
|
+
if (capLabels.length > 0) {
|
|
335
|
+
const calls = [];
|
|
336
|
+
const errors = [];
|
|
337
|
+
const durations = [];
|
|
338
|
+
const durationQuantiles = [];
|
|
339
|
+
const capabilityTokens = [];
|
|
340
|
+
const capabilityCosts = [];
|
|
341
|
+
for (const label of capLabels) {
|
|
342
|
+
const acc = capabilities.get(label);
|
|
343
|
+
const lv = escLabel(label);
|
|
344
|
+
const l = `{capability="${lv}"}`;
|
|
345
|
+
calls.push(`${p}capability_calls_total${l} ${acc.calls}`);
|
|
346
|
+
errors.push(`${p}capability_errors_total${l} ${acc.errors}`);
|
|
347
|
+
durations.push(...histogramSamples(`${p}capability_duration_ms`, acc.stat, l));
|
|
348
|
+
durationQuantiles.push(`${p}capability_duration_ms_last{capability="${lv}",quantile="0.5"} ${acc.stat.percentile(0.5)}`, `${p}capability_duration_ms_last{capability="${lv}",quantile="0.95"} ${acc.stat.percentile(0.95)}`);
|
|
349
|
+
if (acc.tokens !== null)
|
|
350
|
+
capabilityTokens.push(`${p}capability_tokens_total${l} ${acc.tokens}`);
|
|
351
|
+
if (acc.costUsd !== null)
|
|
352
|
+
capabilityCosts.push(`${p}capability_cost_usd_total${l} ${acc.costUsd}`);
|
|
318
353
|
}
|
|
319
|
-
|
|
320
|
-
|
|
354
|
+
out.push(family(`${p}capability_calls_total`, 'counter', '能力调用次数', calls));
|
|
355
|
+
out.push(family(`${p}capability_errors_total`, 'counter', '能力失败次数', errors));
|
|
356
|
+
out.push(family(`${p}capability_duration_ms`, 'histogram', '能力调用耗时(毫秒)', durations));
|
|
357
|
+
out.push(family(`${p}capability_duration_ms_last`, 'gauge', '能力调用耗时分位(窗口内精确值)', durationQuantiles));
|
|
358
|
+
if (capabilityTokens.length > 0) {
|
|
359
|
+
out.push(family(`${p}capability_tokens_total`, 'counter', 'skill/subagent 的子孙 token 合计', capabilityTokens));
|
|
360
|
+
}
|
|
361
|
+
if (capabilityCosts.length > 0) {
|
|
362
|
+
out.push(family(`${p}capability_cost_usd_total`, 'counter', 'skill/subagent 的估算成本(美元)', capabilityCosts));
|
|
321
363
|
}
|
|
322
364
|
}
|
|
323
365
|
// —— 模型维度(E3)——
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
366
|
+
const modelNames = [...models.keys()].sort();
|
|
367
|
+
if (modelNames.length > 0) {
|
|
368
|
+
const turns = [];
|
|
369
|
+
const modelTokens = [];
|
|
370
|
+
const modelCosts = [];
|
|
371
|
+
const unpriced = [];
|
|
372
|
+
const durations = [];
|
|
373
|
+
const durationQuantiles = [];
|
|
374
|
+
for (const model of modelNames) {
|
|
375
|
+
const acc = models.get(model);
|
|
376
|
+
const mv = escLabel(model);
|
|
377
|
+
const l = `{model="${mv}"}`;
|
|
378
|
+
turns.push(`${p}model_turns_total${l} ${acc.turns}`);
|
|
379
|
+
modelTokens.push(`${p}model_tokens_total${l} ${acc.tokens}`);
|
|
380
|
+
modelCosts.push(`${p}model_cost_usd_total${l} ${acc.costUsd}`);
|
|
381
|
+
if (acc.unpricedTurns > 0)
|
|
382
|
+
unpriced.push(`${p}model_unpriced_turns_total${l} ${acc.unpricedTurns}`);
|
|
383
|
+
durations.push(...histogramSamples(`${p}model_duration_ms`, acc.stat, l));
|
|
384
|
+
durationQuantiles.push(`${p}model_duration_ms_last{model="${mv}",quantile="0.5"} ${acc.stat.percentile(0.5)}`, `${p}model_duration_ms_last{model="${mv}",quantile="0.95"} ${acc.stat.percentile(0.95)}`);
|
|
332
385
|
}
|
|
333
|
-
out.push(
|
|
334
|
-
out.push(
|
|
335
|
-
out.push(
|
|
386
|
+
out.push(family(`${p}model_turns_total`, 'counter', '模型往返次数', turns));
|
|
387
|
+
out.push(family(`${p}model_tokens_total`, 'counter', '模型 token 合计(四类之和)', modelTokens));
|
|
388
|
+
out.push(family(`${p}model_cost_usd_total`, 'counter', '模型估算成本(美元,仅已定价部分)', modelCosts));
|
|
389
|
+
if (unpriced.length > 0) {
|
|
390
|
+
out.push(family(`${p}model_unpriced_turns_total`, 'counter', '算不出成本的 turn 数(模型不在价格表内)', unpriced));
|
|
391
|
+
}
|
|
392
|
+
out.push(family(`${p}model_duration_ms`, 'histogram', '模型往返耗时(毫秒)', durations));
|
|
393
|
+
out.push(family(`${p}model_duration_ms_last`, 'gauge', '模型往返耗时分位(窗口内精确值)', durationQuantiles));
|
|
336
394
|
}
|
|
337
395
|
return out.join('');
|
|
338
396
|
};
|
|
339
397
|
// —— OTLP/JSON 导出(E5)——
|
|
340
|
-
|
|
398
|
+
// epoch 毫秒 ×1e6 ≈ 1.7e18 > 2^53,double 直接乘会丢精度 —— 必须先取整再转 BigInt
|
|
399
|
+
const nanos = (ms) => String(BigInt(Math.round(ms)) * 1000000n);
|
|
341
400
|
const strAttr = (key, v) => ({ key, value: { stringValue: v } });
|
|
342
401
|
const buildOtlpPayload = () => {
|
|
343
402
|
const now = nanos(Date.now());
|
|
@@ -354,6 +413,19 @@ export function metricsSink(opts = {}) {
|
|
|
354
413
|
],
|
|
355
414
|
},
|
|
356
415
|
});
|
|
416
|
+
// 浮点指标(成本)必须走 asDouble —— OTLP 的 asInt 是 string 编码 int64,
|
|
417
|
+
// 塞浮点(如 0.25)会让 collector 直接拒收整批数据
|
|
418
|
+
const sumDouble = (name, value, help, attrs) => ({
|
|
419
|
+
name,
|
|
420
|
+
description: help,
|
|
421
|
+
sum: {
|
|
422
|
+
aggregationTemporality: 2, // CUMULATIVE
|
|
423
|
+
isMonotonic: true,
|
|
424
|
+
dataPoints: [
|
|
425
|
+
{ attributes: attrs, startTimeUnixNano: start, timeUnixNano: now, asDouble: value },
|
|
426
|
+
],
|
|
427
|
+
},
|
|
428
|
+
});
|
|
357
429
|
const hist = (name, stat, help, attrs) => ({
|
|
358
430
|
name,
|
|
359
431
|
description: help,
|
|
@@ -366,7 +438,8 @@ export function metricsSink(opts = {}) {
|
|
|
366
438
|
timeUnixNano: now,
|
|
367
439
|
count: stat.count,
|
|
368
440
|
sum: stat.sumMs,
|
|
369
|
-
bucketCounts
|
|
441
|
+
// OTLP 的 bucketCounts 是每桶**非累积**计数(Prometheus 文本才是累积语义)
|
|
442
|
+
bucketCounts: stat.perBucket(),
|
|
370
443
|
explicitBounds: [...stat.boundsList],
|
|
371
444
|
},
|
|
372
445
|
],
|
|
@@ -383,7 +456,7 @@ export function metricsSink(opts = {}) {
|
|
|
383
456
|
sum(`${p}tokens_total`, tokens.cacheCreation, '缓存写 token 累计', [
|
|
384
457
|
strAttr('kind', 'cache_creation'),
|
|
385
458
|
]),
|
|
386
|
-
|
|
459
|
+
sumDouble(`${p}cost_usd_total`, s.costUsd, '累计成本估算(美元)', []),
|
|
387
460
|
hist(`${p}run_duration_ms`, runStat, 'run 时长(毫秒)', []),
|
|
388
461
|
];
|
|
389
462
|
for (const label of [...capabilities.keys()].sort()) {
|
|
@@ -395,14 +468,14 @@ export function metricsSink(opts = {}) {
|
|
|
395
468
|
if (acc.tokens !== null)
|
|
396
469
|
metrics.push(sum(`${p}capability_tokens_total`, acc.tokens, '子孙 token 合计', attrs));
|
|
397
470
|
if (acc.costUsd !== null)
|
|
398
|
-
metrics.push(
|
|
471
|
+
metrics.push(sumDouble(`${p}capability_cost_usd_total`, acc.costUsd, '估算成本(美元)', attrs));
|
|
399
472
|
}
|
|
400
473
|
for (const model of [...models.keys()].sort()) {
|
|
401
474
|
const acc = models.get(model);
|
|
402
475
|
const attrs = [strAttr('model', model)];
|
|
403
476
|
metrics.push(sum(`${p}model_turns_total`, acc.turns, '模型往返次数', attrs));
|
|
404
477
|
metrics.push(sum(`${p}model_tokens_total`, acc.tokens, '模型 token 合计', attrs));
|
|
405
|
-
metrics.push(
|
|
478
|
+
metrics.push(sumDouble(`${p}model_cost_usd_total`, acc.costUsd, '模型估算成本(美元)', attrs));
|
|
406
479
|
if (acc.unpricedTurns > 0) {
|
|
407
480
|
metrics.push(sum(`${p}model_unpriced_turns_total`, acc.unpricedTurns, '未定价 turn 数', attrs));
|
|
408
481
|
}
|
|
@@ -437,6 +510,7 @@ export function metricsSink(opts = {}) {
|
|
|
437
510
|
method: 'POST',
|
|
438
511
|
headers: { 'content-type': 'application/json' },
|
|
439
512
|
body: JSON.stringify(payload),
|
|
513
|
+
...(timeoutMs > 0 ? { signal: AbortSignal.timeout(timeoutMs) } : {}),
|
|
440
514
|
});
|
|
441
515
|
if (!res.ok) {
|
|
442
516
|
const text = (await res.text()).slice(0, 200);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/integrations/metrics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/integrations/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -181,7 +181,9 @@ function imageUrlOf(b) {
|
|
|
181
181
|
* **`arguments` 按分片拼接** —— 一次调用的 JSON 参数会被拆成多片;
|
|
182
182
|
* - 多个工具并行调用时**必须按 `index` 归并**,不能按到达顺序新建;
|
|
183
183
|
* - `usage` 在**最后一个 chunk**(choices 为空的那条)才出现;
|
|
184
|
-
* - `[DONE]`
|
|
184
|
+
* - `[DONE]` 是结束哨兵,之后不再有数据;
|
|
185
|
+
* - 流内 `error` 分片(上游把故障塞进 200 的流)与「流空了」都**抛错** ——
|
|
186
|
+
* 与非流式 `toAnthropicMessage` 的空 choices 守卫同款,不静默映射成成功空回复。
|
|
185
187
|
*/
|
|
186
188
|
async function readStream(body, fallbackModel, textCallbacks) {
|
|
187
189
|
const acc = { text: '', toolCalls: new Map() };
|
|
@@ -200,8 +202,19 @@ async function readStream(body, fallbackModel, textCallbacks) {
|
|
|
200
202
|
catch {
|
|
201
203
|
continue; // 半截/畸形分片不该毁掉整个流(后面还有正常数据)
|
|
202
204
|
}
|
|
205
|
+
if (chunk.error) {
|
|
206
|
+
// 上游故障以错误分片下发(HTTP 仍是 200)—— 不抛出就会被组装成
|
|
207
|
+
// 「stop_reason=end_turn、content=[]、usage 全 0」的假成功,run 结论与真实相反
|
|
208
|
+
throw new Error(`OpenAI 流式响应携带错误分片: ${chunk.error.message ?? JSON.stringify(chunk.error)}`);
|
|
209
|
+
}
|
|
203
210
|
applyChunk(acc, chunk, textCallbacks);
|
|
204
211
|
}
|
|
212
|
+
if (!acc.text && acc.toolCalls.size === 0) {
|
|
213
|
+
// 流「正常」结束却什么都没累积到:与非流式 toAnthropicMessage 的空 choices 守卫同款 ——
|
|
214
|
+
// 上游故障(网关截断、协议不兼容)不得静默映射成成功空回复,抛出交 engine 按 error 收尾
|
|
215
|
+
throw new Error(`OpenAI 流式响应为空(无 content、无 tool_calls,finish=${acc.finish ?? '缺失'});` +
|
|
216
|
+
'响应无可用补全,按上游故障处理');
|
|
217
|
+
}
|
|
205
218
|
return accumulatorToMessage(acc, fallbackModel);
|
|
206
219
|
}
|
|
207
220
|
/** 把一条流式分片并进累积器 */
|