@my-life-buddies/buddy-runtime 0.9.0 → 0.10.0
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 +200 -102
- package/dist/conversation/agent.d.ts +10 -4
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +93 -68
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/compaction.d.ts +2 -2
- package/dist/conversation/compaction.d.ts.map +1 -1
- package/dist/conversation/compaction.js +1 -1
- package/dist/conversation/compaction.js.map +1 -1
- package/dist/conversation/index.d.ts +12 -10
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +20 -20
- package/dist/conversation/index.js.map +1 -1
- package/dist/dataAccessCatalog.d.ts +56 -0
- package/dist/dataAccessCatalog.d.ts.map +1 -0
- package/dist/dataAccessCatalog.js +18 -0
- package/dist/dataAccessCatalog.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mlbClient.d.ts +5 -7
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +6 -18
- package/dist/mlbClient.js.map +1 -1
- package/dist/model.d.ts +8 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +12 -6
- package/dist/model.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +18 -24
- package/dist/server.js.map +1 -1
- package/dist/tools/dataAccess.d.ts +1 -1
- package/dist/tools/dataAccess.d.ts.map +1 -1
- package/dist/tools/dataAccess.js +4 -4
- package/dist/tools/dataAccess.js.map +1 -1
- package/dist/tools/dataAccessRequest.d.ts +7 -0
- package/dist/tools/dataAccessRequest.d.ts.map +1 -0
- package/dist/tools/{permissions.js → dataAccessRequest.js} +7 -7
- package/dist/tools/dataAccessRequest.js.map +1 -0
- package/dist/tools/registry.d.ts +1 -4
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +1 -15
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/resource.d.ts +4 -3
- package/dist/tools/resource.d.ts.map +1 -1
- package/dist/tools/resource.js +18 -13
- package/dist/tools/resource.js.map +1 -1
- package/dist/tools/{widgets.d.ts → widget.d.ts} +6 -4
- package/dist/tools/widget.d.ts.map +1 -0
- package/dist/tools/{widgets.js → widget.js} +13 -9
- package/dist/tools/widget.js.map +1 -0
- package/dist/types.d.ts +52 -33
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -3
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/dist/tools/permissions.d.ts +0 -7
- package/dist/tools/permissions.d.ts.map +0 -1
- package/dist/tools/permissions.js.map +0 -1
- package/dist/tools/widgets.d.ts.map +0 -1
- package/dist/tools/widgets.js.map +0 -1
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
// 一场会话的 Agent 怎么建:运行时先把该填的填好,开发者的配置叠上去。
|
|
2
|
-
//
|
|
3
|
-
// systemPrompt 按 平台的(GET /internal/v1/system-prompt,每场会话建 Agent 时拉一次)→ 开发者的
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// 钩子叠加——开发者的 beforeToolCall
|
|
2
|
+
// 管:造好这场会话的平台工具,拼好交给开发者工厂的 Conversation(会话键、日志、平台工具、进程启动时读好的资料、绑好会话键的记忆、授权数据查询、权限请求、主动服务与小挂件),跑工厂拿配置;
|
|
3
|
+
// systemPrompt 按 平台的(GET /internal/v1/system-prompt,每场会话建 Agent 时拉一次)→ 开发者的 拼,段间空一行;
|
|
4
|
+
// 工具清单全由开发者的 initialState.tools 决定(平台工具也是开发者从 conversation.tools 取来放进去的),查重名;
|
|
5
|
+
// 按 initialState.model 造网关的模型条目(id 运行时不支持就 throw,这场会话起不来);开发者显式设的 thinkingLevel 这个模型不支持时打一条 warn,写明支持哪几档、实际会怎么发;
|
|
6
|
+
// 钩子叠加——开发者的 beforeToolCall / afterToolCall 包一层授权数据记账,beforeToolCall 抛错时打 warn 再抛给 pi(工具不执行,模型看到错误);
|
|
7
|
+
// 发了等用户操作的卡(权限请求卡、题卡)的那一轮,shouldStopAfterTurn 在这一步收尾后停下;其余直通;
|
|
8
|
+
// 主动服务回合不按工具名拦:会发卡、写平台的平台工具执行时自己 assertWritable 抛错,开发者要限制自己的工具就在 beforeToolCall 里按 conversation.proactive.isRunning() 拦;
|
|
7
9
|
// transformContext 由运行时自己装、不开放给开发者:每次请求模型在历史末尾接一条写当前时间的 user 消息,不进会话历史;
|
|
8
|
-
//
|
|
10
|
+
// 每次请求模型的输入和请求体全量打日志,图片换成字节数;响应收完再打一条「模型响应」:内容、结束原因、usage(含缓存命中)、总耗时与首字耗时。主动回合也一样。
|
|
9
11
|
// 不管:Agent 建好之后的事(回合、事件分发在 index.ts)。
|
|
10
12
|
import { Agent } from "@earendil-works/pi-agent-core";
|
|
11
13
|
import { clampThinkingLevel, getSupportedThinkingLevels } from "@earendil-works/pi-ai";
|
|
12
14
|
import { agentMessagesToLLMMessages } from "./agentMessageLLMMessageConverter.js";
|
|
13
15
|
import { errorText } from "../log.js";
|
|
16
|
+
import { createModel } from "../model.js";
|
|
14
17
|
import { askQuestionTool } from "../tools/askQuestion.js";
|
|
15
18
|
import { dataAccessTool, DataAccessUsageTracker } from "../tools/dataAccess.js";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import { widgetTools } from "../tools/
|
|
19
|
-
import {
|
|
19
|
+
import { resourceListTool, resourceReadTool } from "../tools/resource.js";
|
|
20
|
+
import { assertUniqueToolNames } from "../tools/registry.js";
|
|
21
|
+
import { widgetTools } from "../tools/widget.js";
|
|
22
|
+
import { dataAccessRequestTools, validateDataAccessRequest } from "../tools/dataAccessRequest.js";
|
|
23
|
+
/** 跑开发者工厂拿配置,叠上运行时预置,建 Agent。模型 id 运行时不支持、工具清单重名、拉平台 system prompt 失败 → throw。 */
|
|
20
24
|
export async function createAgent(deps) {
|
|
21
25
|
const dataAccessUsage = new DataAccessUsageTracker();
|
|
22
26
|
/** 这一轮发了等用户操作的卡(权限请求卡、题卡):shouldStopAfterTurn 在这一步收尾后停下,不再请求模型 */
|
|
@@ -26,12 +30,30 @@ export async function createAgent(deps) {
|
|
|
26
30
|
deps.onWaitingForUser?.();
|
|
27
31
|
};
|
|
28
32
|
const { client } = deps;
|
|
33
|
+
// 平台工具:每场会话造一份、绑好会话键,挂在 conversation.tools 上由开发者挑。背后没数据时照样造:
|
|
34
|
+
// 没资料、没声明 Dataset、没有小挂件类型,工具照常注册,调用时回空结果或报错
|
|
35
|
+
const [dataAccessRequest, dataAccessReadResult] = dataAccessRequestTools(client, deps.key, deps.enqueueMessage, dataAccessUsage, deps.dataRequirements, waitForUser);
|
|
36
|
+
const [widgetCreate, widgetWrite, widgetRead, widgetDelete, widgetSend] = widgetTools(client, deps.key, deps.widgetTypes, deps.enqueueMessage, dataAccessUsage);
|
|
37
|
+
const platformTools = {
|
|
38
|
+
resource_list: resourceListTool(deps.resources),
|
|
39
|
+
resource_read: resourceReadTool(deps.resources),
|
|
40
|
+
ask_question: askQuestionTool(deps.enqueueMessage, dataAccessUsage, waitForUser),
|
|
41
|
+
data_access_query: dataAccessTool(client, deps.key, dataAccessUsage, deps.dataRequirements),
|
|
42
|
+
data_access_request: dataAccessRequest,
|
|
43
|
+
data_access_read_result: dataAccessReadResult,
|
|
44
|
+
widget_create: widgetCreate,
|
|
45
|
+
widget_write: widgetWrite,
|
|
46
|
+
widget_read: widgetRead,
|
|
47
|
+
widget_delete: widgetDelete,
|
|
48
|
+
widget_send: widgetSend,
|
|
49
|
+
};
|
|
29
50
|
// 写操作前先 assertWritable:主动服务回合里(开发者的钩子在这时被调)只许读,写记忆、提订阅建议、改小挂件、发小挂件直接 throw
|
|
30
51
|
const conversation = {
|
|
31
52
|
key: deps.key,
|
|
32
53
|
log: deps.log,
|
|
33
|
-
|
|
34
|
-
|
|
54
|
+
tools: platformTools,
|
|
55
|
+
// 进程启动时读好的那份资料,开发者代码读它不用把 resource_list / resource_read 放进工具
|
|
56
|
+
resource: {
|
|
35
57
|
list: () => deps.resources.map((resource) => resource.file),
|
|
36
58
|
read: (file) => {
|
|
37
59
|
const found = deps.resources.find((resource) => resource.file === file);
|
|
@@ -46,12 +68,12 @@ export async function createAgent(deps) {
|
|
|
46
68
|
delete: (name) => { dataAccessUsage.assertWritable(); return client.memoryDelete(deps.key, name); },
|
|
47
69
|
},
|
|
48
70
|
// 经 dataAccessUsage 查:开发者工具里查过的那一轮,写回平台和留在历史里的内容也会脱敏;主动服务回合里改走执行令牌
|
|
49
|
-
dataAccess: {
|
|
50
|
-
|
|
71
|
+
dataAccess: {
|
|
72
|
+
query: ({ datasets, memberId }) => dataAccessUsage.query(client, deps.key, datasets, deps.dataRequirements, memberId),
|
|
51
73
|
request: async (input) => {
|
|
52
74
|
dataAccessUsage.assertWritable();
|
|
53
|
-
const validated =
|
|
54
|
-
deps.enqueueMessage({ type: "permissionRequest", permissionRequest: validated, text: validated.reason, idempotencyKey: input.idempotencyKey });
|
|
75
|
+
const validated = validateDataAccessRequest(input, deps.key, deps.dataRequirements);
|
|
76
|
+
deps.enqueueMessage({ type: "permissionRequest", permissionRequest: validated, dataRequirements: deps.dataRequirements.map(({ id, purpose }) => ({ id, purpose })), text: validated.reason, idempotencyKey: input.idempotencyKey });
|
|
55
77
|
waitForUser();
|
|
56
78
|
},
|
|
57
79
|
readResult: async (requestId) => {
|
|
@@ -61,8 +83,12 @@ export async function createAgent(deps) {
|
|
|
61
83
|
return result;
|
|
62
84
|
},
|
|
63
85
|
},
|
|
64
|
-
proactive: {
|
|
65
|
-
|
|
86
|
+
proactive: {
|
|
87
|
+
propose: (request) => { dataAccessUsage.assertWritable(); return client.proposeProactiveSubscription(deps.key, request, deps.dataRequirements); },
|
|
88
|
+
// 主动服务回合里 dataAccessUsage 的查询换成了执行令牌(index.ts 的 executeProactive 用 withQuery 包着整轮),它就是「这一轮是主动回合」的记号
|
|
89
|
+
isRunning: () => dataAccessUsage.isProactive(),
|
|
90
|
+
},
|
|
91
|
+
widget: {
|
|
66
92
|
list: () => client.widgetList(deps.key),
|
|
67
93
|
create: (input) => { dataAccessUsage.assertWritable(); return client.widgetCreate(deps.key, input); },
|
|
68
94
|
read: (id) => client.widgetRead(deps.key, id),
|
|
@@ -77,61 +103,46 @@ export async function createAgent(deps) {
|
|
|
77
103
|
},
|
|
78
104
|
};
|
|
79
105
|
const options = await deps.factory(conversation);
|
|
80
|
-
const
|
|
106
|
+
const model = createModel(deps.gatewayUrl, options.initialState.model);
|
|
81
107
|
// 平台的 system prompt 拉失败就 throw:这场会话起不来,等下一条消息再重建
|
|
82
108
|
const platformPrompt = await deps.client.systemPrompt(deps.key);
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
...(requirements.length ? [dataAccessTool(client, deps.key, dataAccessUsage, requirements)] : []),
|
|
87
|
-
...(resources.length ? [resourceReadTool(resources)] : []),
|
|
88
|
-
];
|
|
89
|
-
const available = [
|
|
90
|
-
...readTools,
|
|
91
|
-
...permissionTools(client, deps.key, deps.enqueueMessage, dataAccessUsage, requirements, waitForUser),
|
|
92
|
-
...widgetTools(client, deps.key, deps.widgetTypes, deps.enqueueMessage),
|
|
93
|
-
askQuestionTool(deps.enqueueMessage, dataAccessUsage, waitForUser),
|
|
94
|
-
];
|
|
95
|
-
const tools = registerTools(selected, available, options.initialState.tools ?? []).map(tool => dataAccessUsage.track(tool));
|
|
109
|
+
const devTools = options.initialState.tools ?? [];
|
|
110
|
+
assertUniqueToolNames(devTools);
|
|
111
|
+
const tools = devTools.map((tool) => dataAccessUsage.track(tool));
|
|
96
112
|
const { log, key } = deps;
|
|
97
113
|
const thinkingLevel = options.initialState.thinkingLevel;
|
|
98
114
|
if (thinkingLevel !== undefined) {
|
|
99
|
-
const supported = getSupportedThinkingLevels(
|
|
115
|
+
const supported = getSupportedThinkingLevels(model);
|
|
100
116
|
if (!supported.includes(thinkingLevel)) {
|
|
101
|
-
log.warn(`模型 ${
|
|
117
|
+
log.warn(`模型 ${model.id} 不支持思考级别 ${thinkingLevel}`, {
|
|
102
118
|
convoKey: key,
|
|
103
119
|
supported,
|
|
104
120
|
// off:pi 不往请求体里放任何思考参数,上游按自己的缺省想(kimi-k3 缺省 max);
|
|
105
121
|
// 其它级别:pi-ai 发请求前用 clampThinkingLevel 就近换成这个模型支持的一档
|
|
106
|
-
sends: thinkingLevel === "off" ? "不发思考参数,上游按自己的缺省" : clampThinkingLevel(
|
|
122
|
+
sends: thinkingLevel === "off" ? "不发思考参数,上游按自己的缺省" : clampThinkingLevel(model, thinkingLevel),
|
|
107
123
|
});
|
|
108
124
|
}
|
|
109
125
|
}
|
|
110
|
-
const catalog = resourceCatalog(resources);
|
|
111
|
-
// 主动回合放行哪些工具:开发者在 proactiveTools 里点名,默认一个都不给。
|
|
112
|
-
// 名字必须是这场会话真注册上的(平台工具 + 开发者自己的),写错了当场 throw,不静默忽略
|
|
113
|
-
const registered = new Set(tools.map((tool) => tool.name));
|
|
114
|
-
const proactiveToolNames = new Set(options.proactiveTools ?? []);
|
|
115
|
-
for (const name of proactiveToolNames) {
|
|
116
|
-
if (!registered.has(name))
|
|
117
|
-
throw new Error(`proactiveTools 里的 ${name} 没有注册:只能点名这场会话已有的工具(${[...registered].join("、") || "无"})`);
|
|
118
|
-
}
|
|
119
126
|
const devBefore = options.beforeToolCall;
|
|
120
127
|
const devAfter = options.afterToolCall;
|
|
128
|
+
// 一次模型请求的计时(一场会话同一时刻只有一个请求在飞):onPayload 在 pi-ai 发 HTTP 请求前一刻被调,记开始;
|
|
129
|
+
// 流回来第一段内容(心声、正文、工具调用都算,pi 只在有内容到达时才发 message_update)记首字;这一步 assistant 的 message_end 打完日志清零
|
|
130
|
+
let requestStartedAt;
|
|
131
|
+
let firstTokenAt;
|
|
121
132
|
const agent = new Agent({
|
|
122
133
|
streamFn: deps.streamFn,
|
|
123
134
|
getApiKey: () => deps.token,
|
|
124
135
|
sessionId: `buddy:${deps.buddyId}:${key}`,
|
|
125
136
|
initialState: {
|
|
126
|
-
model
|
|
127
|
-
//
|
|
128
|
-
systemPrompt: [platformPrompt, options.initialState.systemPrompt
|
|
137
|
+
model,
|
|
138
|
+
// 平台的规矩在最前,开发者人设在后
|
|
139
|
+
systemPrompt: [platformPrompt, options.initialState.systemPrompt].join("\n\n"),
|
|
129
140
|
tools,
|
|
130
141
|
thinkingLevel: options.initialState.thinkingLevel ?? "off",
|
|
131
142
|
},
|
|
132
143
|
steeringMode: "all",
|
|
133
144
|
followUpMode: "all",
|
|
134
|
-
// 下面三个钩子按 pi 每次请求模型时的调用顺序排:transformContext → convertToLlm → onPayload
|
|
145
|
+
// 下面三个钩子按 pi 每次请求模型时的调用顺序排:transformContext → convertToLlm → onPayload;出参和请求体每次请求全量打日志,主动回合也一样。
|
|
135
146
|
// transformContext 的返回值只交给这一次请求,不写回会话历史;场合交代和图片本来就是历史里的记录,不在这里加
|
|
136
147
|
transformContext: async (messages) => withCurrentTime(messages, Date.now()),
|
|
137
148
|
convertToLlm: (messages) => {
|
|
@@ -139,30 +150,26 @@ export async function createAgent(deps) {
|
|
|
139
150
|
log.info("convertToLlm 出参", { convoKey: key, messages: withoutImageData(llmMessages) });
|
|
140
151
|
return llmMessages;
|
|
141
152
|
},
|
|
142
|
-
//
|
|
153
|
+
// 只打日志、记请求开始时刻,返回 undefined:返回别的值 pi-ai 会拿它顶替请求体发出去
|
|
143
154
|
onPayload: (payload) => {
|
|
144
155
|
log.info("模型请求体", { convoKey: key, payload: withoutImageData(payload) });
|
|
156
|
+
requestStartedAt = Date.now();
|
|
157
|
+
firstTokenAt = undefined;
|
|
145
158
|
return undefined;
|
|
146
159
|
},
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
return { block: true, reason: "这一轮是平台的主动判断,用户不在场,只有只读工具可用,这个工具这一轮用不了。" };
|
|
153
|
-
}
|
|
154
|
-
if (devBefore === undefined)
|
|
155
|
-
return undefined;
|
|
156
|
-
return dataAccessUsage.runForTool(context.toolCall.id, async () => {
|
|
160
|
+
// 开发者的两个工具钩子包一层 runForTool:钩子里调 conversation.dataAccess.query 查到的记在这次工具调用名下,这一轮照样脱敏。
|
|
161
|
+
// beforeToolCall 抛错时打一条 warn 再抛给 pi:pi 把错误当工具结果交给模型,工具不执行
|
|
162
|
+
beforeToolCall: devBefore === undefined
|
|
163
|
+
? undefined
|
|
164
|
+
: (context, signal) => dataAccessUsage.runForTool(context.toolCall.id, async () => {
|
|
157
165
|
try {
|
|
158
166
|
return await devBefore(context, signal);
|
|
159
167
|
}
|
|
160
168
|
catch (e) {
|
|
161
|
-
log.warn("开发者的 beforeToolCall
|
|
162
|
-
|
|
169
|
+
log.warn("开发者的 beforeToolCall 抛错,工具不执行", { convoKey: key, tool: context.toolCall.name, error: errorText(e) });
|
|
170
|
+
throw e;
|
|
163
171
|
}
|
|
164
|
-
})
|
|
165
|
-
},
|
|
172
|
+
}),
|
|
166
173
|
afterToolCall: devAfter === undefined
|
|
167
174
|
? undefined
|
|
168
175
|
: (context, signal) => dataAccessUsage.runForTool(context.toolCall.id, () => devAfter(context, signal)),
|
|
@@ -179,12 +186,30 @@ export async function createAgent(deps) {
|
|
|
179
186
|
deps.onPolicyStop?.();
|
|
180
187
|
return stop;
|
|
181
188
|
},
|
|
182
|
-
prepareNextTurnWithContext: options.prepareNextTurnWithContext,
|
|
183
|
-
thinkingBudgets: options.thinkingBudgets,
|
|
184
|
-
toolExecution: options.toolExecution,
|
|
185
189
|
});
|
|
186
|
-
agent.subscribe((event) =>
|
|
187
|
-
|
|
190
|
+
agent.subscribe((event) => {
|
|
191
|
+
if (event.type === "message_update")
|
|
192
|
+
firstTokenAt ??= Date.now();
|
|
193
|
+
if (event.type === "message_end") {
|
|
194
|
+
const m = event.message;
|
|
195
|
+
if (m.role === "assistant") {
|
|
196
|
+
// 没发出请求就失败的(pi-ai 组请求体时抛错、pi 的 handleRunFailure 合成的那条)没有开始时刻,耗时不打
|
|
197
|
+
log.info("模型响应", {
|
|
198
|
+
convoKey: key,
|
|
199
|
+
ms: requestStartedAt === undefined ? undefined : Date.now() - requestStartedAt,
|
|
200
|
+
firstTokenMs: requestStartedAt === undefined || firstTokenAt === undefined ? undefined : firstTokenAt - requestStartedAt,
|
|
201
|
+
stopReason: m.stopReason,
|
|
202
|
+
error: m.errorMessage,
|
|
203
|
+
usage: m.usage,
|
|
204
|
+
content: m.content,
|
|
205
|
+
});
|
|
206
|
+
requestStartedAt = undefined;
|
|
207
|
+
firstTokenAt = undefined;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
deps.onEvent(agent, event);
|
|
211
|
+
});
|
|
212
|
+
return { agent, model, dataAccessUsage, errorReply: options.errorReply };
|
|
188
213
|
}
|
|
189
214
|
/**
|
|
190
215
|
* 每次请求模型时接在历史末尾那条 user 消息的正文;现在的时间由 convertToLlm 按这条消息的 timestamp 拼在开头。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/conversation/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,9 @@ export declare const COMPACTION_HEADER = "\u66F4\u65E9\u7684\u5BF9\u8BDD\u5DF2\u
|
|
|
15
15
|
export declare const SITUATION_HEADER = "\u5E73\u53F0\u4EA4\u4EE3\u7684\u60C5\u51B5\uFF1A";
|
|
16
16
|
/** 接在切点之前那段历史末尾的指令。固定分节,逼模型每次都过一遍每个格子,多轮压缩才不会越压越丢 */
|
|
17
17
|
export declare const SUMMARY_INSTRUCTION: string;
|
|
18
|
-
/**
|
|
18
|
+
/** 会话被回收那一刻拍下的快照:摘要请求要跟平时的请求同一前缀、同一个模型,所以模型条目、system prompt 与工具清单一起带上 */
|
|
19
19
|
export interface CompactionSnapshot {
|
|
20
|
+
model: Model<Api>;
|
|
20
21
|
systemPrompt: string;
|
|
21
22
|
tools: AgentTool[];
|
|
22
23
|
messages: AgentMessage[];
|
|
@@ -56,7 +57,6 @@ export interface CompactionDeps {
|
|
|
56
57
|
client: MLBClient;
|
|
57
58
|
key: string;
|
|
58
59
|
buddyId: string;
|
|
59
|
-
model: Model<Api>;
|
|
60
60
|
streamFn: StreamFn;
|
|
61
61
|
/** 搭子令牌:摘要请求也经网关,同一把 */
|
|
62
62
|
token: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/conversation/compaction.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,wCAAwC;AACxC,eAAO,MAAM,WAAW,QAAS,CAAC;AAClC,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAIxC,yGAAyG;AACzG,eAAO,MAAM,iBAAiB,2JAA8B,CAAC;AAC7D,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,qDAAa,CAAC;AAE3C,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,QAepB,CAAC;AAEb
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/conversation/compaction.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEvF,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,2GAA2G;AAC3G,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAC1C,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC,wCAAwC;AACxC,eAAO,MAAM,WAAW,QAAS,CAAC;AAClC,gBAAgB;AAChB,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AAIxC,yGAAyG;AACzG,eAAO,MAAM,iBAAiB,2JAA8B,CAAC;AAC7D,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,qDAAa,CAAC;AAE3C,qDAAqD;AACrD,eAAO,MAAM,mBAAmB,QAepB,CAAC;AAEb,yEAAyE;AACzE,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC9B,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,eAAe;AACf,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG,MAAM,CAE9E;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,GAAG,OAAO,CAEvG;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,UAAU,SAAc,GAAG,cAAc,GAAG,SAAS,CAe7G;AAcD,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGrF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAEnF;AAED,iDAAiD;AACjD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,aAAa,GAAG,SAAS,CAGhF;AAED,MAAM,WAAW,cAAc;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,WAAW,CAAC;IACjB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAgD9G"}
|
|
@@ -131,7 +131,7 @@ export async function compactConversation(deps, snapshot) {
|
|
|
131
131
|
log.info("压缩:请求摘要", { convoKey: key, summarized: plan.toSummarize.length, kept: snapshot.messages.length - plan.toSummarize.length, coversUntil: plan.coversUntil });
|
|
132
132
|
let summary;
|
|
133
133
|
try {
|
|
134
|
-
const stream = await deps.streamFn(
|
|
134
|
+
const stream = await deps.streamFn(snapshot.model, { systemPrompt: snapshot.systemPrompt, messages, tools: snapshot.tools }, { apiKey: deps.token, maxTokens: SUMMARY_MAX_TOKENS, reasoning: lowestThinkingLevel(snapshot.model), signal: deps.signal });
|
|
135
135
|
const result = await stream.result();
|
|
136
136
|
if (result.stopReason !== "stop")
|
|
137
137
|
throw new Error(`模型以 ${result.stopReason} 收尾:${result.errorMessage ?? ""}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/conversation/compaction.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,oDAAoD;AACpD,qFAAqF;AACrF,2DAA2D;AAC3D,qEAAqE;AACrE,iHAAiH;AAEjH,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,2GAA2G;AAC3G,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,wCAAwC;AACxC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAClC,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACxC,kCAAkC;AAClC,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC;AAEjC,yGAAyG;AACzG,MAAM,CAAC,MAAM,iBAAiB,GAAG,2BAA2B,CAAC;AAC7D,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAClC,0DAA0D;IAC1D,kBAAkB,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,yBAAyB;IACzE,8BAA8B;IAC9B,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;IACb,QAAQ;IACR,OAAO;IACP,mFAAmF;QAClF,KAAK,gBAAgB,kEAAkE;CACxF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/conversation/compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
import type { AgentMessage, StreamFn } from "@earendil-works/pi-agent-core";
|
|
2
|
-
import type { Api, Model } from "@earendil-works/pi-ai";
|
|
3
2
|
import type { MLBClient, WidgetType } from "../mlbClient.ts";
|
|
4
3
|
import type { Resource } from "../tools/resource.ts";
|
|
5
4
|
import type { BuddyFactory, BuddyLogger, DataRequirement, ProactiveDecision, ProactiveRun } from "../types.ts";
|
|
6
5
|
import type { CompactionSnapshot } from "./compaction.ts";
|
|
7
6
|
export interface ConversationHandleDeps {
|
|
8
|
-
errorReply?: string;
|
|
9
7
|
/** 平台会话键:p_ 私聊、g_ 群 */
|
|
10
8
|
key: string;
|
|
11
9
|
buddyId: string;
|
|
12
10
|
client: MLBClient;
|
|
13
|
-
model
|
|
11
|
+
/** 平台网关地址:建 Agent 时按开发者的 initialState.model 造模型条目用 */
|
|
12
|
+
gatewayUrl: string;
|
|
14
13
|
streamFn: StreamFn;
|
|
15
14
|
/** 搭子令牌:每回合经 Agent 的 getApiKey 交给模型通道,变成 Authorization: Bearer 头 */
|
|
16
15
|
token: string;
|
|
17
|
-
/** 小挂件类型目录:server 启动时读 widgets/ 下各目录的 schema.json
|
|
16
|
+
/** 小挂件类型目录:server 启动时读 widgets/ 下各目录的 schema.json 并上传平台,进程内所有会话共用;空数组时 widget_* 照常注册,类型目录为空 */
|
|
18
17
|
widgetTypes: WidgetType[];
|
|
19
|
-
/** 搭子目录下 resources/ 里的资料,server
|
|
18
|
+
/** 搭子目录下 resources/ 里的资料,server 启动时读一次;空数组时 resource_list 回「没有资料」 */
|
|
20
19
|
resources: Resource[];
|
|
21
|
-
/**
|
|
20
|
+
/** BuddyServer.start 的 dataRequirements 按运行时的数据能力目录补全标题、来源与 Schema 版本后的完整声明,进程内所有会话共用 */
|
|
22
21
|
dataRequirements: readonly DataRequirement[];
|
|
23
22
|
factory: BuddyFactory;
|
|
24
23
|
log: BuddyLogger;
|
|
@@ -31,14 +30,17 @@ export declare class ConversationHandle {
|
|
|
31
30
|
private steered;
|
|
32
31
|
private policyStopped;
|
|
33
32
|
private readonly deps;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
/** 这场会话模型条目的身份三元组,重建历史时给合成的 assistant 消息抄;建 Agent 时按开发者选的模型定,之前用不到 */
|
|
34
|
+
private identity;
|
|
35
|
+
/** 模型收不收图片:换算平台记录时按它决定图片块还是固定文字;建 Agent 时按开发者选的模型定 */
|
|
36
|
+
private imageInput;
|
|
37
37
|
private readonly reader;
|
|
38
38
|
private readonly writer;
|
|
39
39
|
/** 懒建:第一次拉到消息时跑 factory 再 new */
|
|
40
40
|
private agent;
|
|
41
41
|
private dataAccessUsage;
|
|
42
|
+
/** 开发者在 BuddyOptions 里配的兜底话,建 Agent 时拿到;没配就不兜底 */
|
|
43
|
+
private errorReply;
|
|
42
44
|
/** 首次拉到的整批灌进历史(重建)做过没有 */
|
|
43
45
|
private rebuilt;
|
|
44
46
|
/** 忙时听见的、不用开口的旁听消息,回合收尾再进历史 */
|
|
@@ -68,7 +70,7 @@ export declare class ConversationHandle {
|
|
|
68
70
|
/** 测试探针:Agent 当前的历史;还没建 Agent 时是空数组 */
|
|
69
71
|
get transcript(): readonly AgentMessage[];
|
|
70
72
|
/**
|
|
71
|
-
*
|
|
73
|
+
* 会话被回收前问一句:历史超过这场会话模型的触发线了没(compaction.ts 的 overTrigger)。超过就交出一份快照——模型条目、system prompt、工具清单、整段历史的副本——
|
|
72
74
|
* 回收后拿它在后台压缩;没超、还没建会话、正忙都回 undefined。压缩从不碰这场会话的内存历史
|
|
73
75
|
*/
|
|
74
76
|
snapshotForCompaction(): CompactionSnapshot | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAqB,YAAY,EAAa,QAAQ,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,14 +22,17 @@ export class ConversationHandle {
|
|
|
22
22
|
steered = [];
|
|
23
23
|
policyStopped = false;
|
|
24
24
|
deps;
|
|
25
|
+
/** 这场会话模型条目的身份三元组,重建历史时给合成的 assistant 消息抄;建 Agent 时按开发者选的模型定,之前用不到 */
|
|
25
26
|
identity;
|
|
26
|
-
/**
|
|
27
|
-
imageInput;
|
|
27
|
+
/** 模型收不收图片:换算平台记录时按它决定图片块还是固定文字;建 Agent 时按开发者选的模型定 */
|
|
28
|
+
imageInput = false;
|
|
28
29
|
reader;
|
|
29
30
|
writer;
|
|
30
31
|
/** 懒建:第一次拉到消息时跑 factory 再 new */
|
|
31
32
|
agent;
|
|
32
33
|
dataAccessUsage;
|
|
34
|
+
/** 开发者在 BuddyOptions 里配的兜底话,建 Agent 时拿到;没配就不兜底 */
|
|
35
|
+
errorReply;
|
|
33
36
|
/** 首次拉到的整批灌进历史(重建)做过没有 */
|
|
34
37
|
rebuilt = false;
|
|
35
38
|
/** 忙时听见的、不用开口的旁听消息,回合收尾再进历史 */
|
|
@@ -51,8 +54,6 @@ export class ConversationHandle {
|
|
|
51
54
|
deferredDuringProactive = [];
|
|
52
55
|
constructor(deps) {
|
|
53
56
|
this.deps = deps;
|
|
54
|
-
this.identity = modelIdentity(deps.model);
|
|
55
|
-
this.imageInput = deps.model.input.includes("image");
|
|
56
57
|
this.reader = new ReadMLBMessages({
|
|
57
58
|
client: deps.client,
|
|
58
59
|
key: deps.key,
|
|
@@ -84,16 +85,16 @@ export class ConversationHandle {
|
|
|
84
85
|
return this.agent?.state.messages ?? [];
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
|
-
*
|
|
88
|
+
* 会话被回收前问一句:历史超过这场会话模型的触发线了没(compaction.ts 的 overTrigger)。超过就交出一份快照——模型条目、system prompt、工具清单、整段历史的副本——
|
|
88
89
|
* 回收后拿它在后台压缩;没超、还没建会话、正忙都回 undefined。压缩从不碰这场会话的内存历史
|
|
89
90
|
*/
|
|
90
91
|
snapshotForCompaction() {
|
|
91
92
|
const agent = this.agent;
|
|
92
93
|
if (agent === undefined || this._busy || this._closed)
|
|
93
94
|
return undefined;
|
|
94
|
-
if (!overTrigger(agent.state.messages,
|
|
95
|
+
if (!overTrigger(agent.state.messages, agent.state.model))
|
|
95
96
|
return undefined;
|
|
96
|
-
return { systemPrompt: agent.state.systemPrompt, tools: agent.state.tools, messages: [...agent.state.messages] };
|
|
97
|
+
return { model: agent.state.model, systemPrompt: agent.state.systemPrompt, tools: agent.state.tools, messages: [...agent.state.messages] };
|
|
97
98
|
}
|
|
98
99
|
/** SSE message / welcome 到了:让 reader 拉一次,welcome 另记下会话刚建好。已退役的直接忽略 */
|
|
99
100
|
notify(welcome = false) {
|
|
@@ -115,6 +116,9 @@ export class ConversationHandle {
|
|
|
115
116
|
async executeProactive(run) {
|
|
116
117
|
if (run.sessionId !== this.deps.key)
|
|
117
118
|
return { action: "skip", reasonCode: "not_appropriate" };
|
|
119
|
+
const declared = new Set(this.deps.dataRequirements.map((item) => item.id));
|
|
120
|
+
if (run.capabilityGrants.some((dataset) => !declared.has(dataset)))
|
|
121
|
+
return { action: "skip", reasonCode: "insufficient_data" };
|
|
118
122
|
if (!await this.reader.sync())
|
|
119
123
|
return { action: "skip", reasonCode: "insufficient_data" };
|
|
120
124
|
if (this._closed)
|
|
@@ -134,8 +138,8 @@ export class ConversationHandle {
|
|
|
134
138
|
if (tail?.role !== "user")
|
|
135
139
|
return { action: "skip", reasonCode: "user_recently_active" };
|
|
136
140
|
const before = agent.state.messages.length;
|
|
137
|
-
//
|
|
138
|
-
//
|
|
141
|
+
// 工具清单一个字都不动(换它会让整条前缀缓存失效),也不按工具名拦:会发卡、写平台的平台工具执行时自己 assertWritable 抛错,
|
|
142
|
+
// 开发者要限制自己的工具,在 beforeToolCall 里按 conversation.proactive.isRunning() 拦
|
|
139
143
|
this._busy = true;
|
|
140
144
|
this.proactiveRun = true;
|
|
141
145
|
this.spoke = false;
|
|
@@ -148,7 +152,7 @@ export class ConversationHandle {
|
|
|
148
152
|
await tracker.withQuery((datasets, memberId, signal) => {
|
|
149
153
|
if (memberId !== undefined)
|
|
150
154
|
throw new Error("Proactive V1 只支持私聊,不接受 memberId");
|
|
151
|
-
return this.deps.client.queryProactiveData(run.runId, run.capabilityToken, datasets, signal);
|
|
155
|
+
return this.deps.client.queryProactiveData(run.runId, run.capabilityToken, datasets, this.deps.dataRequirements, signal);
|
|
152
156
|
}, async () => {
|
|
153
157
|
if (this._closed || this.deferredDuringProactive.length > 0)
|
|
154
158
|
return;
|
|
@@ -253,6 +257,9 @@ export class ConversationHandle {
|
|
|
253
257
|
const agent = created.agent;
|
|
254
258
|
this.agent = agent;
|
|
255
259
|
this.dataAccessUsage = created.dataAccessUsage;
|
|
260
|
+
this.errorReply = created.errorReply;
|
|
261
|
+
this.identity = modelIdentity(created.model);
|
|
262
|
+
this.imageInput = created.model.input.includes("image");
|
|
256
263
|
const { history, pending } = splitForRebuild(records);
|
|
257
264
|
// 按时间排一遍:压缩记录换算出来的那条摘要时间是 coversUntil,排到开头,后面才是它盖住之后的原文
|
|
258
265
|
agent.state.messages = sortByTimestamp(mlbMessagesToAgentMessages(history, this.identity, this.imageInput));
|
|
@@ -357,12 +364,12 @@ export class ConversationHandle {
|
|
|
357
364
|
this.deps.log.warn("回合出错", { convoKey: this.deps.key, error: errorText(e) });
|
|
358
365
|
}
|
|
359
366
|
finally {
|
|
360
|
-
if (!this._closed && this.
|
|
367
|
+
if (!this._closed && this.errorReply && (this.failed || !this.spoke)) {
|
|
361
368
|
// 兜底话用户屏上看得见,模型也要知道自己说过:进历史的是只有这句正文的 assistant,跟重建时这条记录还原出来的一样;
|
|
362
369
|
// 写回时以它为 target,平台回的时间写到它身上,下面按时间排
|
|
363
|
-
const fallback = textAssistantMessage(this.
|
|
370
|
+
const fallback = textAssistantMessage(this.errorReply, Date.now(), this.identity);
|
|
364
371
|
agent.state.messages.push(fallback);
|
|
365
|
-
this.writer.enqueueMessage({ type: "message", text: this.
|
|
372
|
+
this.writer.enqueueMessage({ type: "message", text: this.errorReply, idempotencyKey: `fallback:${this.deps.key}:${this.replyTo}` }, fallback);
|
|
366
373
|
}
|
|
367
374
|
this.writer.replying({ on: false });
|
|
368
375
|
await this.writer.flush();
|
|
@@ -418,13 +425,6 @@ export class ConversationHandle {
|
|
|
418
425
|
const m = event.message;
|
|
419
426
|
this.steered = this.steered.filter(queued => queued !== m);
|
|
420
427
|
if (m.role === "assistant") {
|
|
421
|
-
this.deps.log.info("assistant 一段", {
|
|
422
|
-
convoKey: this.deps.key,
|
|
423
|
-
stopReason: m.stopReason,
|
|
424
|
-
chars: textOf(m).length,
|
|
425
|
-
toolCalls: m.content.filter((block) => block.type === "toolCall").length,
|
|
426
|
-
error: m.errorMessage,
|
|
427
|
-
});
|
|
428
428
|
const stopped = stoppedByErrorOrAbort(m);
|
|
429
429
|
if (stopped)
|
|
430
430
|
this.failed = true;
|