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 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.4';
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: 'queue', content: [{ type: 'text', text: body }] },
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-comfyui-rp",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "ComfyRP Bridge:装在 DSH 里的本地文生图自动化桥。捕获会话正文 → 提示词会话 → 本地 ComfyUI 出图 → 图片回到右侧栏 / 悬浮球 / 图库。不依赖外部桥进程,也不调用 LLM。",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",