dsh-comfyui-rp 0.2.4 → 0.2.5
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/docs/CHANGELOG.md +6 -0
- package/lib/jobs.js +7 -0
- package/lib/meta.js +1 -1
- package/lib/session.js +15 -1
- package/package.json +1 -1
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# 更新记录
|
|
2
2
|
|
|
3
|
+
## 0.2.5
|
|
4
|
+
|
|
5
|
+
- **修「只收到时间戳、正文没跟着来」**:自动投递前先等目标会话空闲(最多 15 秒)。有些宿主(例如带自动续写的 Tavern)会让会话一直有事在跑,这时 `queue` 投递的正文会被排到下一轮,而当前这一轮模型只看到时间上下文注入的那三行。
|
|
6
|
+
- 等不到空闲就改用 `steer`,把正文塞进正在跑的这一轮,至少模型能看到内容;任务记录里新增 `deliveryMode` 字段,日志里也会写「目标会话忙,正文改用 steer 投递」。
|
|
7
|
+
- 顺带在任务 / 日志里带上等待时长,方便判断是不是宿主一直在忙。
|
|
8
|
+
|
|
3
9
|
## 0.2.4
|
|
4
10
|
|
|
5
11
|
- **纯黑图误判修复**:判定前先看体积——真·纯黑 PNG 只有 20 多 KB,超过 **120 KB** 的图直接不参与判定。之前有正常图(约 1 MB)在「原地替换后立刻复查」时被判成黑图,导致同一张图被连续替换 3 次。
|
package/lib/jobs.js
CHANGED
|
@@ -388,6 +388,12 @@ export function createJobsEngine({ ctx, sc, store, hub, getConfig, getActiveSess
|
|
|
388
388
|
job.replyText = r.text;
|
|
389
389
|
job.deliveryMs = r.ms;
|
|
390
390
|
job.sawOwnPrompt = r.sawOwnPrompt;
|
|
391
|
+
job.deliveryMode = r.deliveryMode || '';
|
|
392
|
+
if (r.deliveryMode === 'steer') {
|
|
393
|
+
// 目标会话当时不空闲(例如宿主在做自动续写),正文改成 steer 塞进当前这一轮;
|
|
394
|
+
// 不用 queue 的话正文会排到下一轮,这一轮模型只看到时间上下文。
|
|
395
|
+
log('warn', `目标会话忙,正文改用 steer 投递(等待空闲 ${r.idleWaited || 0}ms)`, { jobId: job.id });
|
|
396
|
+
}
|
|
391
397
|
job.interrupted = r.interrupted;
|
|
392
398
|
job.targetSessionId = r.sessionId || job.targetSessionId;
|
|
393
399
|
job.promptSource = r.mode;
|
|
@@ -1295,6 +1301,7 @@ export function createJobsEngine({ ctx, sc, store, hub, getConfig, getActiveSess
|
|
|
1295
1301
|
replyChars: String(job.replyText || '').length,
|
|
1296
1302
|
deliveryMs: job.deliveryMs,
|
|
1297
1303
|
sawOwnPrompt: job.sawOwnPrompt,
|
|
1304
|
+
deliveryMode: job.deliveryMode || '',
|
|
1298
1305
|
promptSource: job.promptSource || '',
|
|
1299
1306
|
interrupted: job.interrupted,
|
|
1300
1307
|
ruleId: job.ruleId,
|
package/lib/meta.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
export const PACKAGE_NAME = 'dsh-comfyui-rp';
|
|
8
8
|
export const PLUGIN_NAME = 'dsh-comfyui-rp';
|
|
9
|
-
export const VERSION = '0.2.
|
|
9
|
+
export const VERSION = '0.2.5';
|
|
10
10
|
|
|
11
11
|
/** 对外路由前缀。不能带尾斜杠(dsh-host-webserver 的 prefix 匹配规则)。 */
|
|
12
12
|
export const ROUTE_PATH = '/__airp_comfy';
|
package/lib/session.js
CHANGED
|
@@ -294,7 +294,19 @@ export async function askLocal(ctx, sc, { sessionId, text, timeoutMs, signal } =
|
|
|
294
294
|
`读不到会话的日志位置(session.seq = ${String(session?.seq)})。为避免把上一轮回复当成本次答案,这次不猜。`,
|
|
295
295
|
'bad-session-state');
|
|
296
296
|
}
|
|
297
|
+
// 先等目标会话空闲再投递。有些宿主(Tavern 这种带自动续写的)会让会话一直有事在跑,
|
|
298
|
+
// 这时 `queue` 的正文会排到下一轮,而当前这轮模型只看到时间上下文注入的那条
|
|
299
|
+
// ——表现就是「只收到时间戳,正文没跟着来」。
|
|
300
|
+
// 等不到空闲就用 `steer` 把正文塞进正在跑的这一轮,至少模型能看到内容。
|
|
301
|
+
const IDLE_WAIT_MS = 15000;
|
|
302
|
+
const waitBegan = Date.now();
|
|
303
|
+
while (agent.status !== 'idle' && Date.now() - waitBegan < IDLE_WAIT_MS) {
|
|
304
|
+
if (signal && signal.aborted) break;
|
|
305
|
+
await sleep(200);
|
|
306
|
+
}
|
|
307
|
+
const idleWaited = Date.now() - waitBegan;
|
|
297
308
|
const busyBefore = agent.status !== 'idle';
|
|
309
|
+
const deliveryMode = busyBefore ? 'steer' : 'queue';
|
|
298
310
|
const expectEnds = busyBefore ? 2 : 1;
|
|
299
311
|
const started = Date.now();
|
|
300
312
|
|
|
@@ -321,7 +333,7 @@ export async function askLocal(ctx, sc, { sessionId, text, timeoutMs, signal } =
|
|
|
321
333
|
inflightLocal.add(sid);
|
|
322
334
|
try {
|
|
323
335
|
await controller.prompt(
|
|
324
|
-
{ requestId, sessionId: sid, mode:
|
|
336
|
+
{ requestId, sessionId: sid, mode: deliveryMode, content: [{ type: 'text', text: body }] },
|
|
325
337
|
ac.signal,
|
|
326
338
|
);
|
|
327
339
|
|
|
@@ -378,6 +390,8 @@ export async function askLocal(ctx, sc, { sessionId, text, timeoutMs, signal } =
|
|
|
378
390
|
turn: got.turn,
|
|
379
391
|
ms: Date.now() - started,
|
|
380
392
|
busyBefore,
|
|
393
|
+
deliveryMode,
|
|
394
|
+
idleWaited,
|
|
381
395
|
sawOwnPrompt,
|
|
382
396
|
interrupted: got.interrupted,
|
|
383
397
|
};
|
package/package.json
CHANGED