Просмотр исходного кода

fix: rejoin system prompt if experimental plugin hook triggers to preserve caching (#5550)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
DS 2 месяцев назад
Родитель
Сommit
72ebaeb8f7
1 измененных файлов с 7 добавлено и 0 удалено
  1. 7 0
      packages/opencode/src/session/llm.ts

+ 7 - 0
packages/opencode/src/session/llm.ts

@@ -60,11 +60,18 @@ export namespace LLM {
         .join("\n"),
         .join("\n"),
     )
     )
 
 
+    const header = system[0]
     const original = clone(system)
     const original = clone(system)
     await Plugin.trigger("experimental.chat.system.transform", {}, { system })
     await Plugin.trigger("experimental.chat.system.transform", {}, { system })
     if (system.length === 0) {
     if (system.length === 0) {
       system.push(...original)
       system.push(...original)
     }
     }
+    // rejoin to maintain 2-part structure for caching if header unchanged
+    if (system.length > 2 && system[0] === header) {
+      const rest = system.slice(1)
+      system.length = 0
+      system.push(header, rest.join("\n"))
+    }
 
 
     const params = await Plugin.trigger(
     const params = await Plugin.trigger(
       "chat.params",
       "chat.params",