@my-life-buddies/buddy-runtime 0.0.3 → 0.2.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 +209 -45
- package/dist/conversation/agent.d.ts +6 -1
- package/dist/conversation/agent.d.ts.map +1 -1
- package/dist/conversation/agent.js +60 -53
- package/dist/conversation/agent.js.map +1 -1
- package/dist/conversation/agentMessageLLMMessageConverter.d.ts +8 -0
- package/dist/conversation/agentMessageLLMMessageConverter.d.ts.map +1 -0
- package/dist/conversation/agentMessageLLMMessageConverter.js +24 -0
- package/dist/conversation/agentMessageLLMMessageConverter.js.map +1 -0
- package/dist/conversation/history.d.ts +0 -7
- package/dist/conversation/history.d.ts.map +1 -1
- package/dist/conversation/history.js +3 -16
- package/dist/conversation/history.js.map +1 -1
- package/dist/conversation/index.d.ts +25 -22
- package/dist/conversation/index.d.ts.map +1 -1
- package/dist/conversation/index.js +141 -116
- package/dist/conversation/index.js.map +1 -1
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts +39 -0
- package/dist/conversation/mlbMessageAgentMessageConverter.d.ts.map +1 -0
- package/dist/conversation/{convert.js → mlbMessageAgentMessageConverter.js} +95 -113
- package/dist/conversation/mlbMessageAgentMessageConverter.js.map +1 -0
- package/dist/conversation/readMLBMessages.d.ts +31 -0
- package/dist/conversation/readMLBMessages.d.ts.map +1 -0
- package/dist/conversation/readMLBMessages.js +90 -0
- package/dist/conversation/readMLBMessages.js.map +1 -0
- package/dist/conversation/writeMLBMessage.d.ts +64 -0
- package/dist/conversation/writeMLBMessage.d.ts.map +1 -0
- package/dist/conversation/writeMLBMessage.js +214 -0
- package/dist/conversation/writeMLBMessage.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mlbClient.d.ts +1 -126
- package/dist/mlbClient.d.ts.map +1 -1
- package/dist/mlbClient.js +2 -364
- package/dist/mlbClient.js.map +1 -1
- package/dist/platform/client.d.ts +29 -0
- package/dist/platform/client.d.ts.map +1 -0
- package/dist/platform/client.js +22 -0
- package/dist/platform/client.js.map +1 -0
- package/dist/platform/mlbClient.d.ts +133 -0
- package/dist/platform/mlbClient.d.ts.map +1 -0
- package/dist/platform/mlbClient.js +420 -0
- package/dist/platform/mlbClient.js.map +1 -0
- package/dist/platform/widgets.d.ts +74 -0
- package/dist/platform/widgets.d.ts.map +1 -0
- package/dist/platform/widgets.js +85 -0
- package/dist/platform/widgets.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -4
- package/dist/server.js.map +1 -1
- package/dist/tools/dataAccess.d.ts +8 -3
- package/dist/tools/dataAccess.d.ts.map +1 -1
- package/dist/tools/dataAccess.js +33 -5
- package/dist/tools/dataAccess.js.map +1 -1
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +23 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/widgets.d.ts +3 -2
- package/dist/tools/widgets.d.ts.map +1 -1
- package/dist/tools/widgets.js +22 -53
- package/dist/tools/widgets.js.map +1 -1
- package/dist/types.d.ts +41 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/package.json +4 -3
- package/dist/conversation/convert.d.ts +0 -46
- package/dist/conversation/convert.d.ts.map +0 -1
- package/dist/conversation/convert.js.map +0 -1
- package/dist/conversation/presence.d.ts +0 -24
- package/dist/conversation/presence.d.ts.map +0 -1
- package/dist/conversation/presence.js +0 -56
- package/dist/conversation/presence.js.map +0 -1
- package/dist/conversation/writeBack.d.ts +0 -36
- package/dist/conversation/writeBack.d.ts.map +0 -1
- package/dist/conversation/writeBack.js +0 -114
- package/dist/conversation/writeBack.js.map +0 -1
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
//
|
|
2
|
-
//
|
|
1
|
+
// 一场会话的纪律:拉到消息怎么办、什么时候起回合、Agent 事件往哪送、怎么退役。
|
|
2
|
+
// 管:首次拉到的整批灌进 Agent(重建),搭子最后一次说话之后有该答的就起回合;
|
|
3
3
|
// 之后每批按空闲 / 忙碌 × 要不要开口四路分发;
|
|
4
|
-
// 回合(prompt → 把回合中排进队列的消息消化完 →
|
|
5
|
-
// close(先标退役、再打断回合、等它收尾)。
|
|
6
|
-
//
|
|
7
|
-
//
|
|
4
|
+
// 回合(prompt → 把回合中排进队列的消息消化完 → 一句话没说就补一句提醒再跑一次 → 收尾把这一轮的历史按消息时间排好);
|
|
5
|
+
// Agent 事件交给发平台的队列;close(先标退役、再打断回合、等它收尾)。
|
|
6
|
+
// 不管:什么时候拉、游标、翻页与重试(readMLBMessages.ts)、Agent 怎么建(agent.ts)、拉回来的记录怎么分拣(history.ts)、
|
|
7
|
+
// replying / delta / 写回怎么发(writeMLBMessage.ts)、HTTP 请求本身(mlbClient.ts)、
|
|
8
|
+
// MLBMessage 与 AgentMessage 的换算(mlbMessageAgentMessageConverter.ts)、会话从哪来到哪去(server.ts 管 Map、空闲淘汰与 delete 事件)。
|
|
8
9
|
import { randomUUID } from "node:crypto";
|
|
9
|
-
import {
|
|
10
|
+
import { mlbMessagesToAgentMessages, textOf } from "./mlbMessageAgentMessageConverter.js";
|
|
10
11
|
import { errorText } from "../log.js";
|
|
11
12
|
import { modelIdentity } from "../model.js";
|
|
13
|
+
import { redactSensitiveRun } from "../tools/dataAccess.js";
|
|
12
14
|
import { createAgent } from "./agent.js";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
/** 每页拉多少条:平台钳在 1..200,翻页靠不满页 */
|
|
17
|
-
const PULL_LIMIT = 200;
|
|
18
|
-
const PULL_RETRY_MIN_MS = 1_000;
|
|
19
|
-
const PULL_RETRY_MAX_MS = 30_000;
|
|
15
|
+
import { splitForRebuild, theirsOf, wantsReply } from "./history.js";
|
|
16
|
+
import { ReadMLBMessages } from "./readMLBMessages.js";
|
|
17
|
+
import { WriteMLBMessage } from "./writeMLBMessage.js";
|
|
20
18
|
/** 回合跑完一句话都没说时,以 note 的身份补给模型的一句提醒 */
|
|
21
19
|
const NUDGE = "你上一条回复正文是空的。把要说的话直接说出来。";
|
|
22
20
|
export class ConversationHandle {
|
|
21
|
+
lifetime = new AbortController();
|
|
22
|
+
welcomeRequested = false;
|
|
23
|
+
steered = [];
|
|
24
|
+
policyStopped = false;
|
|
23
25
|
deps;
|
|
24
26
|
identity;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
/** 模型收不收图片:一个进程只用一个模型,换算平台记录时按它决定图片块还是固定文字 */
|
|
28
|
+
imageInput;
|
|
29
|
+
reader;
|
|
30
|
+
writer;
|
|
27
31
|
/** 懒建:第一次拉到消息时跑 factory 再 new */
|
|
28
32
|
agent;
|
|
29
33
|
dataAccessUsage;
|
|
30
|
-
/**
|
|
31
|
-
pullChain = Promise.resolve();
|
|
32
|
-
pullRetry;
|
|
33
|
-
pullRetryDelay = PULL_RETRY_MIN_MS;
|
|
34
|
-
/** 读方向游标:已经拉到并处理过的最大 seq(含自己写的) */
|
|
35
|
-
pulledSeq = 0;
|
|
36
|
-
/** 首次拉取(after=0 全量灌历史)做过没有 */
|
|
34
|
+
/** 首次拉到的整批灌进历史(重建)做过没有 */
|
|
37
35
|
rebuilt = false;
|
|
38
36
|
/** 忙时听见的、不用开口的旁听消息,回合收尾再进历史 */
|
|
39
37
|
heard = [];
|
|
38
|
+
/** 最近一条该答的对方消息的平台 id:兜底回复的幂等键用它,同一句话只兜一次底 */
|
|
39
|
+
replyTo = "";
|
|
40
40
|
/** 当前回合的 promise,close 要等它 */
|
|
41
41
|
turn;
|
|
42
42
|
/** 本回合有没有一条 assistant 消息带非空正文且正常收尾 */
|
|
@@ -49,17 +49,22 @@ export class ConversationHandle {
|
|
|
49
49
|
constructor(deps) {
|
|
50
50
|
this.deps = deps;
|
|
51
51
|
this.identity = modelIdentity(deps.model);
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
52
|
+
this.imageInput = deps.model.input.includes("image");
|
|
53
|
+
this.reader = new ReadMLBMessages({
|
|
54
|
+
client: deps.client,
|
|
55
|
+
key: deps.key,
|
|
56
|
+
log: deps.log,
|
|
57
|
+
onMessages: (messages) => this.onMessages(messages),
|
|
58
|
+
});
|
|
59
|
+
this.writer = new WriteMLBMessage({
|
|
54
60
|
client: deps.client,
|
|
55
61
|
key: deps.key,
|
|
56
62
|
buddyId: deps.buddyId,
|
|
57
63
|
runId: randomUUID().slice(0, 8),
|
|
58
64
|
log: deps.log,
|
|
59
|
-
beforeSend: () => this.presence.flushDelta(),
|
|
60
65
|
});
|
|
61
66
|
}
|
|
62
|
-
/**
|
|
67
|
+
/** 正在跑回合(含收尾:等发平台的队列清空) */
|
|
63
68
|
get busy() {
|
|
64
69
|
return this._busy;
|
|
65
70
|
}
|
|
@@ -75,15 +80,13 @@ export class ConversationHandle {
|
|
|
75
80
|
get transcript() {
|
|
76
81
|
return this.agent?.state.messages ?? [];
|
|
77
82
|
}
|
|
78
|
-
/** SSE message
|
|
79
|
-
notify() {
|
|
83
|
+
/** SSE message 到了:让 reader 拉一次。已退役的直接忽略 */
|
|
84
|
+
notify(welcome = false) {
|
|
80
85
|
if (this._closed)
|
|
81
86
|
return;
|
|
82
|
-
this.
|
|
87
|
+
this.welcomeRequested ||= welcome;
|
|
83
88
|
this._lastActivity = Date.now();
|
|
84
|
-
this.
|
|
85
|
-
.then(() => this.pull())
|
|
86
|
-
.catch((e) => this.deps.log.warn("处理拉取结果出错", { convoKey: this.deps.key, error: errorText(e) }));
|
|
89
|
+
this.reader.notify();
|
|
87
90
|
}
|
|
88
91
|
/**
|
|
89
92
|
* SSE delete 到了(或 server 空闲淘汰、stop、会话起不来):先标退役,再打断正在跑的回合,等回合收尾。可以重复调。
|
|
@@ -94,80 +97,59 @@ export class ConversationHandle {
|
|
|
94
97
|
this.agent?.abort();
|
|
95
98
|
await this.turn;
|
|
96
99
|
}
|
|
97
|
-
/**
|
|
100
|
+
/** 标退役:不再拉、取消拉取重试;发平台的队列丢掉没发的字与写回、打断重发等待(回合收尾才不会被它拖住) */
|
|
98
101
|
retire() {
|
|
99
102
|
this._closed = true;
|
|
100
|
-
this.
|
|
101
|
-
this.
|
|
102
|
-
this.
|
|
103
|
+
this.lifetime.abort();
|
|
104
|
+
this.reader.close();
|
|
105
|
+
this.writer.close();
|
|
103
106
|
}
|
|
104
|
-
// ——
|
|
107
|
+
// —— 拉到消息
|
|
105
108
|
/**
|
|
106
|
-
*
|
|
107
|
-
* 平台的场合交代(context)是流里的一条记录,跟别的记录一起拉到;会话没了只靠 SSE delete
|
|
109
|
+
* reader 交来一批:第一次走重建,之后走 ingest。
|
|
110
|
+
* 平台的场合交代(context)是流里的一条记录,跟别的记录一起拉到;会话没了只靠 SSE delete 事件收,这里不判。
|
|
108
111
|
*/
|
|
109
|
-
async
|
|
112
|
+
async onMessages(messages) {
|
|
110
113
|
if (this._closed)
|
|
111
114
|
return;
|
|
112
|
-
const batch = [];
|
|
113
|
-
let after = this.pulledSeq;
|
|
114
|
-
for (;;) {
|
|
115
|
-
let page;
|
|
116
|
-
try {
|
|
117
|
-
page = await this.deps.client.pullMessages(this.deps.key, after, PULL_LIMIT);
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
this.deps.log.warn("拉消息失败,稍后主动重试", { convoKey: this.deps.key, after, delayMs: this.pullRetryDelay, error: errorText(e) });
|
|
121
|
-
this.schedulePullRetry();
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
this.cancelPullRetry();
|
|
125
|
-
if (this._closed)
|
|
126
|
-
return;
|
|
127
|
-
batch.push(...page.messages);
|
|
128
|
-
if (page.messages.length < PULL_LIMIT)
|
|
129
|
-
break;
|
|
130
|
-
after = page.messages[page.messages.length - 1].seq;
|
|
131
|
-
}
|
|
132
|
-
this.pullRetryDelay = PULL_RETRY_MIN_MS;
|
|
133
115
|
if (this.rebuilt) {
|
|
134
|
-
this.ingest(
|
|
116
|
+
this.ingest(messages);
|
|
135
117
|
return;
|
|
136
118
|
}
|
|
119
|
+
// 首次拉到空的先不建会话,等下一次通知再拉:空数组的 every 为真,不拦会被当成只有场合记录的新会话误发问候
|
|
120
|
+
if (!messages.length)
|
|
121
|
+
return;
|
|
137
122
|
try {
|
|
138
|
-
|
|
123
|
+
if (this.welcomeRequested) {
|
|
124
|
+
this.welcomeRequested = false;
|
|
125
|
+
if (this.deps.welcome && messages.every(m => m.type === "context" && m.author === "platform")) {
|
|
126
|
+
this.writer.enqueueMessage({ type: "message", text: this.deps.welcome, idempotencyKey: `welcome:${this.deps.key}` });
|
|
127
|
+
await this.writer.flush();
|
|
128
|
+
if (!this._closed) {
|
|
129
|
+
this.reader.resetCursor();
|
|
130
|
+
this.reader.notify();
|
|
131
|
+
}
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
await this.rebuild(messages);
|
|
139
136
|
}
|
|
140
137
|
catch (e) {
|
|
141
|
-
// factory 抛错、工具重名之类:这场会话起不来。退役并让 server 删掉,下一条消息会重新起一场再试
|
|
142
138
|
this.deps.log.error("起会话失败", { convoKey: this.deps.key, error: errorText(e) });
|
|
143
139
|
this.retire();
|
|
144
140
|
this.deps.onStartFailed();
|
|
145
141
|
}
|
|
146
142
|
}
|
|
147
|
-
schedulePullRetry() {
|
|
148
|
-
if (this._closed || this.pullRetry !== undefined)
|
|
149
|
-
return;
|
|
150
|
-
const delay = this.pullRetryDelay;
|
|
151
|
-
this.pullRetryDelay = Math.min(delay * 2, PULL_RETRY_MAX_MS);
|
|
152
|
-
this.pullRetry = setTimeout(() => {
|
|
153
|
-
this.pullRetry = undefined;
|
|
154
|
-
this.notify();
|
|
155
|
-
}, delay);
|
|
156
|
-
this.pullRetry.unref();
|
|
157
|
-
}
|
|
158
|
-
cancelPullRetry() {
|
|
159
|
-
if (this.pullRetry === undefined)
|
|
160
|
-
return;
|
|
161
|
-
clearTimeout(this.pullRetry);
|
|
162
|
-
this.pullRetry = undefined;
|
|
163
|
-
}
|
|
164
143
|
/**
|
|
165
|
-
* 首次拉取:建 Agent
|
|
144
|
+
* 首次拉取:建 Agent,以搭子最后一次写的记录为界,之前的整段按消息时间的先后灌进 state.messages(不经事件,天然不会被写回平台);
|
|
166
145
|
* 之后的是搭子还没回应过的,交给 admit 按平时同一条规矩处理:有该答的就起回合,没有就只进历史。
|
|
167
146
|
*/
|
|
168
147
|
async rebuild(records) {
|
|
169
148
|
const created = await createAgent({
|
|
170
149
|
...this.deps,
|
|
150
|
+
signal: this.lifetime.signal,
|
|
151
|
+
enqueueMessage: message => this.writer.enqueueMessage(message),
|
|
152
|
+
onPolicyStop: () => { this.policyStopped = true; },
|
|
171
153
|
onEvent: (a, event) => this.onEvent(a, event),
|
|
172
154
|
});
|
|
173
155
|
if (this._closed)
|
|
@@ -176,22 +158,17 @@ export class ConversationHandle {
|
|
|
176
158
|
this.agent = agent;
|
|
177
159
|
this.dataAccessUsage = created.dataAccessUsage;
|
|
178
160
|
const { history, pending } = splitForRebuild(records);
|
|
179
|
-
agent.state.messages =
|
|
180
|
-
this.pulledSeq = maxSeq(records, this.pulledSeq);
|
|
161
|
+
agent.state.messages = mlbMessagesToAgentMessages(history, this.identity, this.imageInput);
|
|
181
162
|
this.rebuilt = true;
|
|
182
163
|
this.deps.log.info("历史已重建", { convoKey: this.deps.key, records: history.length, pending: pending.length, transcript: agent.state.messages.length });
|
|
183
164
|
this.admit(theirsOf(pending));
|
|
184
165
|
}
|
|
185
|
-
/**
|
|
166
|
+
/** 一批新记录(reader 只交比上一批晚的,自己写回的也在里面):对方的交给 admit */
|
|
186
167
|
ingest(batch) {
|
|
187
|
-
if (this.agent === undefined || this._closed)
|
|
188
|
-
return;
|
|
189
|
-
const { fresh, theirs } = incoming(batch, this.pulledSeq);
|
|
190
|
-
if (fresh.length === 0)
|
|
168
|
+
if (this.agent === undefined || this._closed || batch.length === 0)
|
|
191
169
|
return;
|
|
192
|
-
this.pulledSeq = maxSeq(fresh, this.pulledSeq);
|
|
193
170
|
this._lastActivity = Date.now();
|
|
194
|
-
this.admit(
|
|
171
|
+
this.admit(theirsOf(batch));
|
|
195
172
|
}
|
|
196
173
|
/**
|
|
197
174
|
* 搭子还没回应过的对方记录(重建时是搭子最后一次说话之后的那段,平时是这批新来的),换成 user 消息分发。
|
|
@@ -202,10 +179,12 @@ export class ConversationHandle {
|
|
|
202
179
|
const agent = this.agent;
|
|
203
180
|
if (agent === undefined || this._closed || theirs.length === 0)
|
|
204
181
|
return;
|
|
205
|
-
const messages =
|
|
182
|
+
const messages = mlbMessagesToAgentMessages(theirs, this.identity, this.imageInput);
|
|
206
183
|
if (messages.length === 0)
|
|
207
184
|
return;
|
|
208
185
|
const shouldReply = wantsReply(theirs);
|
|
186
|
+
if (shouldReply)
|
|
187
|
+
this.replyTo = theirs.filter((m) => m.author === "user").at(-1)?.id ?? this.replyTo;
|
|
209
188
|
if (!this._busy) {
|
|
210
189
|
if (shouldReply)
|
|
211
190
|
this.turn = this.runTurn(messages);
|
|
@@ -214,8 +193,10 @@ export class ConversationHandle {
|
|
|
214
193
|
return;
|
|
215
194
|
}
|
|
216
195
|
if (shouldReply)
|
|
217
|
-
for (const m of messages)
|
|
196
|
+
for (const m of messages) {
|
|
197
|
+
this.steered.push(m);
|
|
218
198
|
agent.steer(m);
|
|
199
|
+
}
|
|
219
200
|
else
|
|
220
201
|
this.heard.push(...messages);
|
|
221
202
|
}
|
|
@@ -223,7 +204,8 @@ export class ConversationHandle {
|
|
|
223
204
|
/**
|
|
224
205
|
* 跑一个回合。messages 有值就 prompt 它们;没值(收尾时发现队列里还有消息)就直接 continue。
|
|
225
206
|
* prompt 完把回合中 steer 进来的消化完;一句话没说就 followUp 一条 note 提醒再跑一次。
|
|
226
|
-
* 收尾:heard 进历史、
|
|
207
|
+
* 收尾:replying 关掉、等发平台的队列清空(每条写回的消息都拿到了平台定的时间)、heard 进历史、
|
|
208
|
+
* 这一轮进历史的消息按时间排好,才算不忙——排完的顺序跟手机上、跟重建出来的一样。
|
|
227
209
|
* 收尾期间又有人 steer(busy 还是 true,走不了 prompt),就接着再跑一个回合把它消化掉。
|
|
228
210
|
*/
|
|
229
211
|
async runTurn(messages) {
|
|
@@ -231,19 +213,35 @@ export class ConversationHandle {
|
|
|
231
213
|
if (agent === undefined || this._closed)
|
|
232
214
|
return;
|
|
233
215
|
this._busy = true;
|
|
216
|
+
this.policyStopped = false;
|
|
234
217
|
this.spoke = false;
|
|
235
218
|
this.failed = false;
|
|
236
|
-
|
|
219
|
+
const turnStart = agent.state.messages.length;
|
|
220
|
+
this.writer.replying({ on: true });
|
|
237
221
|
const startedAt = Date.now();
|
|
238
|
-
this.deps.log.info("回合开始", { convoKey: this.deps.key, prompt: messages?.length ?? 0, transcript:
|
|
222
|
+
this.deps.log.info("回合开始", { convoKey: this.deps.key, prompt: messages?.length ?? 0, transcript: turnStart });
|
|
239
223
|
try {
|
|
240
224
|
if (messages !== undefined)
|
|
241
225
|
await agent.prompt(messages);
|
|
242
226
|
this.deps.log.info("prompt 返回", { convoKey: this.deps.key, queued: agent.hasQueuedMessages(), spoke: this.spoke, failed: this.failed });
|
|
243
|
-
while (!this._closed && agent.hasQueuedMessages())
|
|
244
|
-
|
|
227
|
+
while (!this._closed && agent.hasQueuedMessages()) {
|
|
228
|
+
// pi 在 shouldStopAfterTurn 后不取 steering;若末尾为 toolResult,
|
|
229
|
+
// continue 只会重跑旧输入。新用户消息必须作为新的 prompt 消费。
|
|
230
|
+
const queued = this.steered.splice(0);
|
|
231
|
+
if (queued.length) {
|
|
232
|
+
agent.clearSteeringQueue();
|
|
233
|
+
this.policyStopped = false;
|
|
234
|
+
await agent.prompt(queued);
|
|
235
|
+
}
|
|
236
|
+
else if (this.policyStopped) {
|
|
237
|
+
agent.clearFollowUpQueue();
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
else
|
|
241
|
+
await agent.continue();
|
|
242
|
+
}
|
|
245
243
|
// 正常收尾却一句正文没有才补;出错 / 被掐断的不补
|
|
246
|
-
if (!this._closed && !this.spoke && !this.failed) {
|
|
244
|
+
if (!this._closed && !this.spoke && !this.failed && !this.policyStopped) {
|
|
247
245
|
this.deps.log.info("空回复,补一句", { convoKey: this.deps.key });
|
|
248
246
|
const nudge = { role: "note", text: NUDGE, timestamp: Date.now() };
|
|
249
247
|
agent.followUp(nudge);
|
|
@@ -251,16 +249,21 @@ export class ConversationHandle {
|
|
|
251
249
|
}
|
|
252
250
|
}
|
|
253
251
|
catch (e) {
|
|
252
|
+
this.failed = true;
|
|
254
253
|
this.deps.log.warn("回合出错", { convoKey: this.deps.key, error: errorText(e) });
|
|
255
254
|
}
|
|
256
255
|
finally {
|
|
256
|
+
if (!this._closed && this.deps.errorReply && (this.failed || !this.spoke)) {
|
|
257
|
+
this.writer.enqueueMessage({ type: "message", text: this.deps.errorReply, idempotencyKey: `fallback:${this.deps.key}:${this.replyTo}` });
|
|
258
|
+
}
|
|
259
|
+
this.writer.replying({ on: false });
|
|
260
|
+
await this.writer.flush();
|
|
257
261
|
if (this.heard.length > 0) {
|
|
258
262
|
agent.state.messages.push(...this.heard);
|
|
259
263
|
this.heard = [];
|
|
260
264
|
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
await this.writeBack.flush();
|
|
265
|
+
const history = agent.state.messages;
|
|
266
|
+
agent.state.messages = [...history.slice(0, turnStart), ...sortByTimestamp(history.slice(turnStart))];
|
|
264
267
|
this._busy = false;
|
|
265
268
|
this._lastActivity = Date.now();
|
|
266
269
|
this.deps.log.info("回合收尾", {
|
|
@@ -276,7 +279,7 @@ export class ConversationHandle {
|
|
|
276
279
|
}
|
|
277
280
|
// —— Agent 事件
|
|
278
281
|
/**
|
|
279
|
-
* Agent 事件 →
|
|
282
|
+
* Agent 事件 → 发平台的队列。pi 会等这个函数返回再往下走,所以只做同步入队,网络在队列自己的链上;
|
|
280
283
|
* 抛错会让 pi 把整个回合判失败,所以整体 try/catch。退役后的事件直接丢。
|
|
281
284
|
*/
|
|
282
285
|
onEvent(agent, event) {
|
|
@@ -289,13 +292,23 @@ export class ConversationHandle {
|
|
|
289
292
|
break;
|
|
290
293
|
case "agent_end":
|
|
291
294
|
if (this.dataAccessUsage?.hasUsage()) {
|
|
292
|
-
|
|
295
|
+
const before = agent.state.messages;
|
|
296
|
+
const after = redactSensitiveRun(before, event.messages, (toolCallId) => this.dataAccessUsage?.details(toolCallId));
|
|
297
|
+
agent.state.messages = after;
|
|
298
|
+
// 脱敏换成了副本:还没写完的那几条,平台回的时间要写到副本上
|
|
299
|
+
const replaced = new Map();
|
|
300
|
+
before.forEach((m, i) => {
|
|
301
|
+
if (after[i] !== m)
|
|
302
|
+
replaced.set(m, after[i]);
|
|
303
|
+
});
|
|
304
|
+
this.writer.retarget(replaced);
|
|
293
305
|
}
|
|
294
306
|
this.dataAccessUsage?.clear();
|
|
295
307
|
this.deps.log.info("run 结束", { convoKey: this.deps.key, newMessages: event.messages.length, queued: agent.hasQueuedMessages() });
|
|
296
308
|
break;
|
|
297
309
|
case "message_end": {
|
|
298
310
|
const m = event.message;
|
|
311
|
+
this.steered = this.steered.filter(queued => queued !== m);
|
|
299
312
|
if (m.role === "assistant") {
|
|
300
313
|
this.deps.log.info("assistant 一段", {
|
|
301
314
|
convoKey: this.deps.key,
|
|
@@ -309,34 +322,29 @@ export class ConversationHandle {
|
|
|
309
322
|
else if (textOf(m) !== "")
|
|
310
323
|
this.spoke = true;
|
|
311
324
|
// 带工具调用的等 turn_end 连结果一起写成 tool 记录
|
|
312
|
-
if (!m.content.some((block) => block.type === "toolCall"))
|
|
313
|
-
|
|
314
|
-
if (out !== null)
|
|
315
|
-
this.writeBack.enqueue(out);
|
|
316
|
-
}
|
|
325
|
+
if (!m.content.some((block) => block.type === "toolCall"))
|
|
326
|
+
this.writer.assistant(m, this.dataAccessUsage?.hasUsage());
|
|
317
327
|
}
|
|
318
328
|
else if (m.role === "note") {
|
|
319
|
-
this.
|
|
329
|
+
this.writer.note(m);
|
|
320
330
|
}
|
|
321
331
|
break;
|
|
322
332
|
}
|
|
323
333
|
case "turn_end": {
|
|
324
334
|
const m = event.message;
|
|
325
335
|
if (m.role === "assistant" && m.content.some((block) => block.type === "toolCall")) {
|
|
326
|
-
|
|
327
|
-
if (out !== null)
|
|
328
|
-
this.writeBack.enqueue(out);
|
|
336
|
+
this.writer.toolStep(m, event.toolResults, agent.state.tools, (toolCallId) => this.dataAccessUsage?.details(toolCallId), this.dataAccessUsage?.hasUsage());
|
|
329
337
|
}
|
|
330
338
|
break;
|
|
331
339
|
}
|
|
332
340
|
case "message_update":
|
|
333
341
|
if (event.assistantMessageEvent.type === "text_delta")
|
|
334
|
-
this.
|
|
342
|
+
this.writer.delta(event.assistantMessageEvent.delta);
|
|
335
343
|
break;
|
|
336
344
|
case "tool_execution_start": {
|
|
337
345
|
const label = agent.state.tools.find((t) => t.name === event.toolName)?.label;
|
|
338
346
|
if (label)
|
|
339
|
-
this.
|
|
347
|
+
this.writer.replying({ on: true, status: label });
|
|
340
348
|
break;
|
|
341
349
|
}
|
|
342
350
|
default:
|
|
@@ -348,4 +356,21 @@ export class ConversationHandle {
|
|
|
348
356
|
}
|
|
349
357
|
}
|
|
350
358
|
}
|
|
359
|
+
/**
|
|
360
|
+
* 回合收尾:这一轮进历史的消息按消息时间排(稳定排序,时间一样的保持原来的先后)。
|
|
361
|
+
* 工具结果跟着它那一步的 assistant 消息走、不单独排——模型那边一步的调用和结果必须挨着。
|
|
362
|
+
* 时间的来处:别人的消息是平台记录上的,搭子写回的是平台回的(writeMLBMessage.ts 写进来),没写回平台的保留本地时刻
|
|
363
|
+
*/
|
|
364
|
+
function sortByTimestamp(messages) {
|
|
365
|
+
const steps = [];
|
|
366
|
+
for (const m of messages) {
|
|
367
|
+
const step = steps[steps.length - 1];
|
|
368
|
+
if (m.role === "toolResult" && step !== undefined)
|
|
369
|
+
step.push(m);
|
|
370
|
+
else
|
|
371
|
+
steps.push([m]);
|
|
372
|
+
}
|
|
373
|
+
steps.sort((a, b) => a[0].timestamp - b[0].timestamp);
|
|
374
|
+
return steps.flat();
|
|
375
|
+
}
|
|
351
376
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { AgentMessage } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { AssistantMessage, ToolResultMessage } from "@earendil-works/pi-ai";
|
|
3
|
+
import type { MLBMessage, MLBMessageToWrite, NoteMessage } from "../types.ts";
|
|
4
|
+
/** 重建 assistant 消息时抄的模型身份(model.ts 的 modelIdentity 给) */
|
|
5
|
+
export interface ModelIdentity {
|
|
6
|
+
api: string;
|
|
7
|
+
provider: string;
|
|
8
|
+
model: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* 把一批平台记录换成 pi 的历史。跳过的:interrupted 的半截话、question / widget、空正文又没工具调用的搭子记录。
|
|
12
|
+
* 对方的 message 变 user(群里带成员前缀);image 变 user,正文前标「[图片 #消息 id]」,后面跟图片块;
|
|
13
|
+
* 带引用的,正文开头加一行「[引用 发言人:原话]」,引用的是图片写「[引用 发言人的图片 #被引消息 id]」;
|
|
14
|
+
* system 变 user(带「群里发生了一件事」)、messagesCard 按条目顺序展开成 user(卡里的图跟在那条正文后面)、
|
|
15
|
+
* 平台的场合交代 context 原样变 user(开头自带「平台交代给你的情况」那句用法,不套前缀);
|
|
16
|
+
* 搭子的 message / checkin 变 assistant,tool 变 assistant + 每个调用一条 toolResult,note 变 note。
|
|
17
|
+
* imageInput:模型收不收图片。不收时图片块换成固定文字;平台没给图片内容的也换成固定文字。
|
|
18
|
+
*/
|
|
19
|
+
export declare function mlbMessagesToAgentMessages(records: MLBMessage[], identity: ModelIdentity, imageInput: boolean): AgentMessage[];
|
|
20
|
+
/**
|
|
21
|
+
* 不带工具调用的 assistant 消息写成 message 记录。
|
|
22
|
+
* 正常收尾的照写(带 thinking);error / aborted 收尾但已经说了半截的写成 interrupted;其余不写。
|
|
23
|
+
*/
|
|
24
|
+
export declare function assistantMessageToMLBMessage(m: AssistantMessage, omitThinking?: boolean): MLBMessageToWrite | null;
|
|
25
|
+
/**
|
|
26
|
+
* 带工具调用的 assistant 消息连同它的结果写成一条 tool 记录;每个调用的 summary 取工具的 label,没有 label 用名字。
|
|
27
|
+
* 没有工具调用的返回 null(那种走 assistantMessageToMLBMessage)。
|
|
28
|
+
*/
|
|
29
|
+
export declare function toolStepToMLBMessage(m: AssistantMessage, toolResults: ToolResultMessage[], tools: {
|
|
30
|
+
name: string;
|
|
31
|
+
label: string;
|
|
32
|
+
}[], dataAccessDetailsOf?: (toolCallId: string) => unknown, sensitiveRun?: boolean): MLBMessageToWrite | null;
|
|
33
|
+
/** note 消息写成 note 记录 */
|
|
34
|
+
export declare function noteMessageToMLBMessage(n: NoteMessage): MLBMessageToWrite;
|
|
35
|
+
/** assistant 消息里所有 thinking 块的推理原文拼起来;一个字都没有返回 undefined */
|
|
36
|
+
export declare function thinkingOf(m: AssistantMessage): string | undefined;
|
|
37
|
+
/** assistant 消息里所有 text 块的正文拼起来 */
|
|
38
|
+
export declare function textOf(m: AssistantMessage): string;
|
|
39
|
+
//# sourceMappingURL=mlbMessageAgentMessageConverter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mlbMessageAgentMessageConverter.d.ts","sourceRoot":"","sources":["../../src/conversation/mlbMessageAgentMessageConverter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAwD,iBAAiB,EAAsB,MAAM,uBAAuB,CAAC;AAC3J,OAAO,KAAK,EAA0B,UAAU,EAAE,iBAAiB,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAGnH,yDAAyD;AACzD,MAAM,WAAW,aAAa;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AAoCD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,YAAY,EAAE,CAyC9H;AAqHD;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,EAAE,gBAAgB,EAAE,YAAY,UAAQ,GAAG,iBAAiB,GAAG,IAAI,CAQhH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CACnC,CAAC,EAAE,gBAAgB,EACnB,WAAW,EAAE,iBAAiB,EAAE,EAChC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EACxC,mBAAmB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,EACrD,YAAY,UAAQ,GAClB,iBAAiB,GAAG,IAAI,CAqB1B;AASD,wBAAwB;AACxB,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,WAAW,GAAG,iBAAiB,CAEzE;AAED,4DAA4D;AAC5D,wBAAgB,UAAU,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,GAAG,SAAS,CAMlE;AAED,mCAAmC;AACnC,wBAAgB,MAAM,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAKlD"}
|