





















@@ -903,46 +903,8 @@ export function buildAgentSystemPrompt(params: {
903903"These user-editable files are loaded by OpenClaw and included below in Project Context.",
904904"",
905905 ...buildAssistantOutputDirectivesSection(isMinimal),
906- ...buildWebchatCanvasSection({
907- isMinimal,
908- runtimeChannel,
909-canvasRootDir: params.runtimeInfo?.canvasRootDir,
910-}),
911- ...buildMessagingSection({
912- isMinimal,
913- availableTools,
914- messageChannelOptions,
915- inlineButtonsEnabled,
916- runtimeChannel,
917-messageToolHints: params.messageToolHints,
918-sourceReplyDeliveryMode: params.sourceReplyDeliveryMode,
919-}),
920- ...buildVoiceSection({ isMinimal, ttsHint: params.ttsHint }),
921906];
922907923-if (params.reactionGuidance) {
924-const { level, channel } = params.reactionGuidance;
925-const guidanceText =
926-level === "minimal"
927- ? [
928-`Reactions are enabled for ${channel} in MINIMAL mode.`,
929-"React ONLY when truly relevant:",
930-"- Acknowledge important user requests or confirmations",
931-"- Express genuine sentiment (humor, appreciation) sparingly",
932-"- Avoid reacting to routine messages or your own replies",
933-"Guideline: at most 1 reaction per 5-10 exchanges.",
934-].join("\n")
935- : [
936-`Reactions are enabled for ${channel} in EXTENSIVE mode.`,
937-"Feel free to react liberally:",
938-"- Acknowledge messages with appropriate emojis",
939-"- Express sentiment and personality through reactions",
940-"- React to interesting content, humor, or notable events",
941-"- Use reactions to confirm understanding or agreement",
942-"Guideline: react whenever it feels natural.",
943-].join("\n");
944-lines.push("## Reactions", guidanceText, "");
945-}
946908if (reasoningHint) {
947909lines.push("## Reasoning Format", reasoningHint, "");
948910}
@@ -993,12 +955,55 @@ export function buildAgentSystemPrompt(params: {
993955}),
994956);
995957958+// Channel/session-specific guidance lives below the cache boundary so large
959+// stable workspace context can remain a byte-identical prefix across turns.
960+lines.push(
961+ ...buildWebchatCanvasSection({
962+ isMinimal,
963+ runtimeChannel,
964+canvasRootDir: params.runtimeInfo?.canvasRootDir,
965+}),
966+ ...buildMessagingSection({
967+ isMinimal,
968+ availableTools,
969+ messageChannelOptions,
970+ inlineButtonsEnabled,
971+ runtimeChannel,
972+messageToolHints: params.messageToolHints,
973+sourceReplyDeliveryMode: params.sourceReplyDeliveryMode,
974+}),
975+ ...buildVoiceSection({ isMinimal, ttsHint: params.ttsHint }),
976+);
977+996978if (extraSystemPrompt) {
997979// Use "Subagent Context" header for minimal mode (subagents), otherwise "Group Chat Context"
998980const contextHeader =
999981promptMode === "minimal" ? "## Subagent Context" : "## Group Chat Context";
1000982lines.push(contextHeader, extraSystemPrompt, "");
1001983}
984+if (params.reactionGuidance) {
985+const { level, channel } = params.reactionGuidance;
986+const guidanceText =
987+level === "minimal"
988+ ? [
989+`Reactions are enabled for ${channel} in MINIMAL mode.`,
990+"React ONLY when truly relevant:",
991+"- Acknowledge important user requests or confirmations",
992+"- Express genuine sentiment (humor, appreciation) sparingly",
993+"- Avoid reacting to routine messages or your own replies",
994+"Guideline: at most 1 reaction per 5-10 exchanges.",
995+].join("\n")
996+ : [
997+`Reactions are enabled for ${channel} in EXTENSIVE mode.`,
998+"Feel free to react liberally:",
999+"- Acknowledge messages with appropriate emojis",
1000+"- Express sentiment and personality through reactions",
1001+"- React to interesting content, humor, or notable events",
1002+"- Use reactions to confirm understanding or agreement",
1003+"Guideline: react whenever it feels natural.",
1004+].join("\n");
1005+lines.push("## Reactions", guidanceText, "");
1006+}
10021007if (providerDynamicSuffix) {
10031008lines.push(providerDynamicSuffix, "");
10041009}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。