@openviking/openclaw-plugin 2026.8.21 → 2026.8.28

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.
@@ -196,10 +196,14 @@ function isSessionNotFoundError(err) {
196
196
  return errorMessage.includes("[NOT_FOUND]") && errorMessage.includes("Session not found");
197
197
  }
198
198
  export async function assembleOpenVikingSession({ sessionId, sessionKey, messages, tokenBudget, runtimeContext, isMainAssemble, cfg, getClient, logger, resolveAgentId, rememberSessionAgentId, isBypassedSession, queryConfigStore, traceRecorder, diag, roughEstimate, messageDigest, extractAgentMessageText, hasAutoRecallBlock, prependRecallToLatestUserMessage, }) {
199
- const ovSessionId = openClawSessionToOvStorageId(sessionId, sessionKey);
200
- const sender = extractRuntimeSenderId(runtimeContext);
201
199
  const latestMessage = messages.at(-1);
202
200
  const isTransformContextAssemble = !isMainAssemble;
201
+ // Tool-loop calls do no recall work on non-user tails; avoid scanning the full history.
202
+ if (isTransformContextAssemble && latestMessage?.role !== "user") {
203
+ return { messages, estimatedTokens: 0 };
204
+ }
205
+ const ovSessionId = openClawSessionToOvStorageId(sessionId, sessionKey);
206
+ const sender = extractRuntimeSenderId(runtimeContext);
203
207
  const originalTokens = roughEstimate(messages);
204
208
  rememberSessionAgentId?.({
205
209
  sessionId,
@@ -220,16 +224,6 @@ export async function assembleOpenVikingSession({ sessionId, sessionKey, message
220
224
  return assemblePassthrough({ diag, ovSessionId, reason: "session_bypassed", liveMessages: messages, originalTokens });
221
225
  }
222
226
  if (isTransformContextAssemble) {
223
- if (latestMessage?.role !== "user") {
224
- return assemblePassthrough({
225
- diag,
226
- ovSessionId,
227
- reason: "transform_context_non_user_tail",
228
- liveMessages: messages,
229
- originalTokens,
230
- extra: { latestRole: latestMessage?.role ?? null },
231
- });
232
- }
233
227
  if (!cfg.autoRecall) {
234
228
  return assemblePassthrough({ diag, ovSessionId, reason: "transform_context_auto_recall_disabled", liveMessages: messages, originalTokens });
235
229
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openviking/openclaw-plugin",
3
- "version": "2026.8.21",
3
+ "version": "2026.8.28",
4
4
  "displayName": "OpenViking",
5
5
  "description": "OpenClaw context-engine plugin — OpenViking AI memory, long-term memory, knowledge base, semantic search, RAG, context engine. 长期记忆 · 知识库 · 语义检索 · 上下文引擎",
6
6
  "type": "module",
@@ -441,10 +441,16 @@ export async function assembleOpenVikingSession({
441
441
  hasAutoRecallBlock,
442
442
  prependRecallToLatestUserMessage,
443
443
  }: AssembleOpenVikingSessionParams): Promise<AssembleOpenVikingSessionResult> {
444
- const ovSessionId = openClawSessionToOvStorageId(sessionId, sessionKey);
445
- const sender = extractRuntimeSenderId(runtimeContext);
446
444
  const latestMessage = messages.at(-1);
447
445
  const isTransformContextAssemble = !isMainAssemble;
446
+
447
+ // Tool-loop calls do no recall work on non-user tails; avoid scanning the full history.
448
+ if (isTransformContextAssemble && latestMessage?.role !== "user") {
449
+ return { messages, estimatedTokens: 0 };
450
+ }
451
+
452
+ const ovSessionId = openClawSessionToOvStorageId(sessionId, sessionKey);
453
+ const sender = extractRuntimeSenderId(runtimeContext);
448
454
  const originalTokens = roughEstimate(messages);
449
455
 
450
456
  rememberSessionAgentId?.({
@@ -468,16 +474,6 @@ export async function assembleOpenVikingSession({
468
474
  }
469
475
 
470
476
  if (isTransformContextAssemble) {
471
- if (latestMessage?.role !== "user") {
472
- return assemblePassthrough({
473
- diag,
474
- ovSessionId,
475
- reason: "transform_context_non_user_tail",
476
- liveMessages: messages,
477
- originalTokens,
478
- extra: { latestRole: latestMessage?.role ?? null },
479
- });
480
- }
481
477
  if (!cfg.autoRecall) {
482
478
  return assemblePassthrough({ diag, ovSessionId, reason: "transform_context_auto_recall_disabled", liveMessages: messages, originalTokens });
483
479
  }